幼儿编程Scratch第33讲:机械手-乐高入门机器人

忙碌的2019年七月份过去了,终于又有时间陪一起玩了。继续和四岁的小朋友一起搭WeDo乐高积木,毛毛虫,风车,月球漫步车,垃圾回收车,这次是机械手。这还算是比较复杂的,一段时间没玩,似乎有所生疏,花了近3个个小时才拼接好。

本课程的指南PDF在这里:https://le-www-live-s.legocdn.com/sc/media/files/building-instructions/wedo-2/45300_09a_robotic_arm-8eef80f6ffccdbb839042ad526d438fe.pdf

。这个作品的手册有84页。继续锻炼寻找、拼接,空间感知的能力。点击原文链接可以到这个作品的乐高手册上。

时间:约3小时。

难度:比较复杂、3-4岁小孩需要在家长指导下完成,程序部分主要由家长完成。7-8岁小孩估计在1.5个小时内能够完成,难度适中,程序也能自己完成。

一、乐高Wedo 45300

幼儿编程Scratch第33讲:机械手-乐高入门机器人-WeDo

乐高Wedo 2.0 45300, 入门型。280颗粒,一个电动马达,一个倾斜传感器,一个距离传感器,其他就是积木了。这次要用到积木块和主机。

二、制作过程

幼儿编程Scratch第33讲:机械手-乐高入门机器人-WeDo

底座,钳子嘴巴

 

幼儿编程Scratch第33讲:机械手-乐高入门机器人-WeDo

拼框架

 

幼儿编程Scratch第33讲:机械手-乐高入门机器人-WeDo

加主机

 

幼儿编程Scratch第33讲:机械手-乐高入门机器人-WeDo

 

幼儿编程Scratch第33讲:机械手-乐高入门机器人-WeDo

钳子的另外一边

 

最终结果

 

幼儿编程Scratch第33讲:机械手-乐高入门机器人-WeDo

还有一些其他配件,可以把花盆上的花夹起来。

幼儿编程Scratch第33讲:机械手-乐高入门机器人-WeDo

哥哥的改装版,加上了四条腿,变成恐龙了。

三、Scratch中连接WEDO 2.0,编写转动程序

    编号积木,让老大过来编写程序。这是老大自己写的程序,还算可以。就是控制电动机左转右转,所以还算比较简单。

幼儿编程Scratch第33讲:机械手-乐高入门机器人-WeDo

我其实是想用语音控制机械的的开合的,只可惜在machinelearningforkinds上的语音功能还无法使用,以前在那里做了一个AI人脸识别的应用。

WEDO | 滩涂鱼

WEDO | 滩涂鱼

WEDO | 滩涂鱼

与你分享好玩、有趣的乐高课程,服务更多机器人教育者,欢迎关注我们。

/无聊的下午,来一首音乐放松一下。/

今天与大家分享的是滩涂鱼,又名跳跳鱼、滩涂虎、泥牛。从名称上我们可以了解到这个鱼是可以跳动的,那么我们今天搭建的是一个类似于车类的并且可以跳动的,非常的有趣新颖。

 

搭建部分:搭建步骤略长,需要教师在上课的时候把控时间。搭建尾鳍时需注意锥齿轮与双面锥齿轮的固定方式。滩涂鱼的跳动主要的结构在于蜗轮箱的使用。

 

编程部分:程序主题结构为顺序结构,主要运用马达的三种模块,注意使用的顺序,方向→速度→时间。


课程总结:本课适合中后期wedo学员上课所学,搭建重点讲解蜗轮箱的结构以及分析蜗轮箱的两种特性。编程主要讲解顺序结构、学习马达模块的使用方法。中后期学员可以加入倾斜或是运动传感器来控制滩涂鱼的运动。


搭建部分:



WEDO | 滩涂鱼

WEDO | 滩涂鱼

WEDO | 滩涂鱼

WEDO | 滩涂鱼

WEDO | 滩涂鱼

WEDO | 滩涂鱼


编程示例:

WEDO | 滩涂鱼

– END –




欢迎观看这篇文章,喜欢就转发分享一下吧,让更多机器人教育者看到。


WEDO | 滩涂鱼


关注【LEGO课程】公众号,回复滩涂鱼获取完整图纸。

压路机

压路机

压路机

与你分享好玩、有趣的乐高课程,服务更多机器人教育者,欢迎关注我们。

/工作比较乏累听首音乐放松一下/

今天与大家分享的课程是压路机,课程比较简单,对刚学习EV3的小朋友很适合,既容易又好玩。

搭建部分:

主体部分分为三部分,车体、转轮、传感器。

主要难点在于转轮,需要轮胎的无缝连接和车体的稳固固定。

编程部分:

程序主体结构是并列结构,按压不同的触动传感器,以不同的速度运行。

课程总结:

本课适合初期EV3学员上课所学

课程知识点:

1)学习压路机自主搭建;

2)学习触动传感器的三种模式;

3)学习编程并列结构的作用及使用;

4)实现压路机按压不同传感器实现变速的功能;

外延知识点:

1)了解压路机的作用;

2)了接柏油路原材料的构成;

搭建示例:

 

压路机

压路机

压路机

压路机

压路机

压路机

压路机

程序示例:

压路机

– END –

树莓派+SIM模块自制简易手机

现在手机满街都是,对于技术宅来说,买一个多没意思呀。自己做一个才算是完美是不是

首先准备材料

SIM900A 通讯模块 一个

树莓派一台

屏幕一个

SIM900A的通信模块最小版,已经把必要的IO都引出了,并集成了SIM卡槽,东西还是挺不错的,就是有个对于树莓派小缺点。模块在启动的时候需要800mA以上的电流。树莓派的供电是在捉急,需要改一下供电电路才能正常使用。否则树莓派重启,特别是打电话的时候。

树莓派+SIM模块自制简易手机

这个SIM模块的供电电压范围是3.6-4.5V,所以是不能直接用5V的电源来供电的,否则会烧坏模块。而3.3V又供不起。可以串联一个二极管来降压,注意使用的二极管必须是硅管,电压降必须是0.7V以上。否则有些二极管的电压降仅仅是0.3V的,降压的电压对模块还是很危险

树莓派+SIM模块自制简易手机

树莓派+SIM模块自制简易手机

然后把模块通过GPIO和树莓派接好,也就是/dev/ttyAMA0设备。不过需要设置一下,把系统的调试什么的输出都关掉这样才能用这个串口。

首先是/boot/cmdline.txt

要把console=ttyAMA0,115200 kgdboc=ttyAMA0,115200这一段删掉以禁用串口调试。

然后是/etc/inittab里的T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100用#注释掉

然后进行串口调试

microcom -p /dev/ttyAMA0

现在我们要打电话给10086,键入下列指令就可以啦

echo -e ‘ATD10086;r’ > /dev/ttyAMA0

老是用指令打电话,太麻烦了,虽然指令什么的逼格高。建立一个简单的GUI界面方便使用

树莓派+SIM模块自制简易手机

生产gui之后在代码后面加上

  1. class App(wx.App):

  2. def OnInit(self):

  3. frame = MyFrame1(None) ##这里为我们生成GUI的Frame类名

  4. frame.Show()

  5. return True

  6. app = App()

  7. app.MainLoop()

拨号和挂断键的代码

  1. def CALLA( self, event ):

  2. OUTAD=’ATD%s;r’ % (self.number.GetValue()) ##把拨号的命令放到变量,后面的那些是输入框里的数字

  3. print OUTAD

  4. ser.write(OUTAD) #写串口操作码

  5. def keyinnumber0( self, event ):

  6. self.number.WriteText(“0”) ##在文本框添加个数字0,前面1-9也是一样,用来输入号码

  7. def CALLH( self, event ):

  8. print ‘ATHr’

  9. ser.write(“ATHr”) #写串口操作码,挂断电话

最终实现的效果

树莓派+SIM模块自制简易手机

树莓派自建 NAS 云盘之——树莓派搭建网络存储盘

树莓派自建 NAS 云盘之——树莓派搭建网络存储盘

编译自: https://opensource.com/article/18/7/network-attached-storage-Raspberry-Pi

作者: Manuel Dewald

译者: jrg

跟随这些逐步指导构建你自己的基于树莓派的 NAS 系统。

我将在接下来的这三篇文章中讲述如何搭建一个简便、实用的 NAS 云盘系统。我在这个中心化的存储系统中存储数据,并且让它每晚都会自动的备份增量数据。本系列文章将利用 NFS 文件系统将磁盘挂载到同一网络下的不同设备上,使用 Nextcloud 来离线访问数据、分享数据。

本文主要讲述将数据盘挂载到远程设备上的软硬件步骤。本系列第二篇文章将讨论数据备份策略、如何添加定时备份数据任务。最后一篇文章中我们将会安装 Nextcloud 软件,用户通过 Nextcloud 提供的 web 界面可以方便的离线或在线访问数据。本系列教程最终搭建的 NAS 云盘支持多用户操作、文件共享等功能,所以你可以通过它方便的分享数据,比如说你可以发送一个加密链接,跟朋友分享你的照片等等。

最终的系统架构如下图所示:

树莓派自建 NAS 云盘之——树莓派搭建网络存储盘

硬件

首先需要准备硬件。本文所列方案只是其中一种示例,你也可以按不同的硬件方案进行采购。

最主要的就是 树莓派 3 ,它带有四核 CPU、1G RAM,以及(比较)快速的网络接口。数据将存储在两个 USB 磁盘驱动器上(这里使用 1TB 磁盘);其中一个磁盘用于每天数据存储,另一个用于数据备份。请务必使用有源 USB 磁盘驱动器或者带附加电源的 USB 集线器,因为树莓派无法为两个 USB 磁盘驱动器供电。

软件

在该社区中最活跃的操作系统当属 Raspbian ,便于定制个性化项目。已经有很多 操作指南 讲述如何在树莓派中安装 Raspbian 系统,所以这里不再赘述。在撰写本文时,最新的官方支持版本是 Raspbian Stretch ,它对我来说很好使用。

到此,我将假设你已经配置好了基本的 Raspbian 系统并且可以通过 ssh 访问到你的树莓派。

准备 USB 磁盘驱动器

为了更好地读写数据,我建议使用 ext4 文件系统去格式化磁盘。首先,你必须先找到连接到树莓派的磁盘。你可以在 /dev/sd/<x> 中找到磁盘设备。使用命令 fdisk -l,你可以找到刚刚连接的两块 USB 磁盘驱动器。请注意,操作下面的步骤将会清除 USB 磁盘驱动器上的所有数据,请做好备份。

pi@raspberrypi:~ $ sudo fdisk -l

<…>

Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors

Units: sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disklabel type: dos

Disk identifier: 0xe8900690

Device Boot Start End Sectors Size Id Type

/dev/sda1 2048 1953525167 1953523120 931.5G 83 Linux

Disk /dev/sdb: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors

Units: sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disklabel type: dos

Disk identifier: 0x6aa4f598

Device Boot Start End Sectors Size Id Type

/dev/sdb1 * 2048 1953521663 1953519616 931.5G 83 Linux

由于这些设备是连接到树莓派的唯一的 1TB 的磁盘,所以我们可以很容易的辨别出 /dev/sda 和 /dev/sdb 就是那两个 USB 磁盘驱动器。每个磁盘末尾的分区表提示了在执行以下的步骤后如何查看,这些步骤将会格式化磁盘并创建分区表。为每个 USB 磁盘驱动器按以下步骤进行操作(假设你的磁盘也是 /dev/sda 和 /dev/sdb,第二次操作你只要替换命令中的 sda 为 sdb 即可)。

首先,删除磁盘分区表,创建一个新的并且只包含一个分区的新分区表。在 fdisk 中,你可以使用交互单字母命令来告诉程序你想要执行的操作。只需要在提示符 Command(m for help): 后输入相应的字母即可(可以使用 m 命令获得更多详细信息):

pi@raspberrypi:~ $ sudo fdisk /dev/sda

Welcome to fdisk (util-linux 2.29.2).

Changes will remain in memory only, until you decide to write them.

Be careful before using the write command.

Command (m for help): o

Created a new DOS disklabel with disk identifier 0x9c310964.

Command (m for help): n

Partition type

p primary (0 primary, 0 extended, 4 free)

e extended (container for logical partitions)

Select (default p): p

Partition number (1-4, default 1):

First sector (2048-1953525167, default 2048):

Last sector, +sectors or +size{K,M,G,T,P} (2048-1953525167, default 1953525167):

Created a new partition 1 of type ‘Linux’ and of size 931.5 GiB.

Command (m for help): p

Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors

Units: sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disklabel type: dos

Disk identifier: 0x9c310964

Device Boot Start End Sectors Size Id Type

/dev/sda1 2048 1953525167 1953523120 931.5G 83 Linux

Command (m for help): w

The partition table has been altered.

Syncing disks.

现在,我们将用 ext4 文件系统格式化新创建的分区 /dev/sda1:

pi@raspberrypi:~ $ sudo mkfs.ext4 /dev/sda1

mke2fs 1.43.4 (31-Jan-2017)

Discarding device blocks: done

<…>

Allocating group tables: done

Writing inode tables: done

Creating journal (1024 blocks): done

Writing superblocks and filesystem accounting information: done

重复以上步骤后,让我们根据用途来对它们建立标签:

pi@raspberrypi:~ $ sudo e2label /dev/sda1 data

pi@raspberrypi:~ $ sudo e2label /dev/sdb1 backup

现在,让我们安装这些磁盘并存储一些数据。以我运营该系统超过一年的经验来看,当树莓派启动时(例如在断电后),USB 磁盘驱动器并不是总被挂载,因此我建议使用 autofs 在需要的时候进行挂载。

首先,安装 autofs 并创建挂载点:

pi@raspberrypi:~ $ sudo apt install autofs

pi@raspberrypi:~ $ sudo mkdir /nas

然后添加下面这行来挂载设备 /etc/auto.master:

/nas /etc/auto.usb

如果不存在以下内容,则创建 /etc/auto.usb,然后重新启动 autofs 服务:

data -fstype=ext4,rw :/dev/disk/by-label/data

backup -fstype=ext4,rw :/dev/disk/by-label/backup

pi@raspberrypi3:~ $ sudo service autofs restart

现在你应该可以分别访问 /nas/data 以及 /nas/backup 磁盘了。显然,到此还不会令人太兴奋,因为你只是擦除了磁盘中的数据。不过,你可以执行以下命令来确认设备是否已经挂载成功:

pi@raspberrypi3:~ $ cd /nas/data

pi@raspberrypi3:/nas/data $ cd /nas/backup

pi@raspberrypi3:/nas/backup $ mount

<…>

/etc/auto.usb on /nas type autofs (rw,relatime,fd=6,pgrp=463,timeout=300,minproto=5,maxproto=5,indirect)

<…>

/dev/sda1 on /nas/data type ext4 (rw,relatime,data=ordered)

/dev/sdb1 on /nas/backup type ext4 (rw,relatime,data=ordered)

首先进入对应目录以确保 autofs 能够挂载设备。autofs 会跟踪文件系统的访问记录,并随时挂载所需要的设备。然后 mount 命令会显示这两个 USB 磁盘驱动器已经挂载到我们想要的位置了。

设置 autofs 的过程容易出错,如果第一次尝试失败,请不要沮丧。你可以上网搜索有关教程。

挂载网络存储

现在你已经设置了基本的网络存储,我们希望将它安装到远程 Linux 机器上。这里使用 NFS 文件系统,首先在树莓派上安装 NFS 服务器:

pi@raspberrypi:~ $ sudo apt install nfs-kernel-server

然后,需要告诉 NFS 服务器公开 /nas/data 目录,这是从树莓派外部可以访问的唯一设备(另一个用于备份)。编辑 /etc/exports 添加如下内容以允许所有可以访问 NAS 云盘的设备挂载存储:

/nas/data *(rw,sync,no_subtree_check)

更多有关限制挂载到单个设备的详细信息,请参阅 man exports。经过上面的配置,任何人都可以访问数据,只要他们可以访问 NFS 所需的端口:111 和 2049。我通过上面的配置,只允许通过路由器防火墙访问到我的家庭网络的 22 和 443 端口。这样,只有在家庭网络中的设备才能访问 NFS 服务器。

如果要在 Linux 计算机挂载存储,运行以下命令:

you@desktop:~ $ sudo mkdir /nas/data

you@desktop:~ $ sudo mount -t nfs <raspberry-pi-hostname-or-ip>:/nas/data /nas/data

同样,我建议使用 autofs 来挂载该网络设备。如果需要其他帮助,请参看 如何使用 Autofs 来挂载 NFS 共享 。

现在你可以在远程设备上通过 NFS 系统访问位于你树莓派 NAS 云盘上的数据了。在后面一篇文章中,我将介绍如何使用 rsync 自动将数据备份到第二个 USB 磁盘驱动器。你将会学到如何使用 rsync 创建增量备份,在进行日常备份的同时还能节省设备空间。

如何将树莓派变成电子书服务器

如何将树莓派变成电子书服务器

Calibre 电子书管理软件可以轻松地在树莓派 3 上设置电子书服务器,即使在连接较慢区域也是如此。 — Don Watkins

编译自: https://opensource.com/article/17/6/raspberrypi-ebook-server

作者: Don Watkins

译者: geekpi

Calibre 电子书管理软件可以轻松地在树莓派 3 上设置电子书服务器,即使在连接较慢区域也是如此。

最近 Calibre 3.0 发布了[1],它让用户能够在浏览器中阅读电子书!注意 Raspbian 的仓库还没有更新它(截至写作时)。

电子书是教师、图书馆员和其他人与学生共享书籍、课堂资料或其他文件的好方法,只需要你有可靠的带宽接入即可。但是,即使你的连接速度较慢或无法连接,还有一个简单的解决方案:使用在树莓派 3 上运行的开源 Calibre 电子书管理软件创建电子书服务器。这是我所做的,你也可以。

首先我下载了最新的 Raspbian Pixel 镜像[2],并安装在一个新的 8GB microSD 卡上。然后我插入 microSD,连接了键盘、鼠标并用一根 HDMI 线连接到一台旧的 LCD 电视,然后启动了 Pi。在我的显示器上调整了 Pixel 环境分辨率[3]并连接到本地网络之后,我准备开始了。我打开一个终端,并输入 sudo apt-get update 以获取操作系统的最新更新。

如何将树莓派变成电子书服务器

Updating Raspbian Pixel

接下来,我在终端中输入 sudo apt-get install calibre 来安装 Calibre[4]。

如何将树莓派变成电子书服务器

Installing Calibre

我从命令行启动了 Calibre(注意它也可以从 GUI 启动)。Calibre 的界面非常直观。第一次启动时,你会看到 Welcome to Calibre 的向导。我将默认 “Calibre Library” 更改为 “CalibreLibrary”(一个词),因为这启动内容服务器时更容易。

在选择完我的 Calibre 内容位置后,我准备好开始下载书了。

如何将树莓派变成电子书服务器

Calibre’s interface

我从菜单中选择了 Get Books 选项,在这很容易输入我的搜索字词,并选择我感兴趣的电子书提供者。我正在寻找非 DRM[5] 的材料,所以我选择 Project Gutenberg[6] 作为我的源。(Caliber 的免责声明指出,电子书交易是在你和个人内容提供商之间。)我在作者字段中输入 “Mark Twain”,并得到10个结果。

如何将树莓派变成电子书服务器

Searching for e-books

我选择了 Adventures of Huckleberry Finn 这本书。在下一页面上,我可以选择 MOBI 和 EPUB 这两种电子书格式。我选择了 EPUB,这本书下载得很快。

如何将树莓派变成电子书服务器

Choosing the e-book format

你也可以从其他内容提供商向库中添加图书,而不是在 Calibre 的列表中添加图书。例如,老师可以通过该内容服务器与学生分享电子书格式的开放教育资源。要加载内容,请使用界面最左侧的 “Add Books” 选项。

根据你图书库的大小,你也许需要增加 microSD 卡的大小。

如何将树莓派变成电子书服务器

start_the_server.png

将内容添加到电子书服务器后,即可与网络中的其他人共享内容。通过在终端中输入 ifconfig 获取你的树莓派 IP 地址。我正在使用无线网络,所以我在下面的例子中使用了 wlan0 中的结果。点击界面的最右侧并展开菜单。然后点击 “Connect and Share” 并启动服务器。

如何将树莓派变成电子书服务器

Identifying the IP address with ipconfig

我下一步是通过我的电脑客户端连接到树莓派访问我添加的电子书。我在客户端上打开一个浏览器并输入树莓的地址,后面加上 :8080 端口。在我这里是 http://192.168.1.10:8080 (根据你 Pi 的地址来适配)。

你会在浏览器中看到主页:

如何将树莓派变成电子书服务器

Calibre’s client homepage

我已经测试,并能用 iPhone、Linux、MacOS 计算机轻易连接到服务器。

你可以在这个主页总探索选项,或者点击 All Books 显示服务器上的所有内容。

如何将树莓派变成电子书服务器

Browsing e-books

从这里,你可以下载书到你的设备并离线阅读了。

你还没有设置一台电子书服务器么?或者你考虑自己设置一台么?在评论中分享你的建议或者问题。


作者简介:

Don Watkins – 教育家、教育技术专家、企业家、开源倡导者。教育心理学硕士、教育领导硕士、Linux 系统管理员、CCNA、使用 Virtual Box 虚拟化。关注我 @Don_Watkins。


via: https://opensource.com/article/17/6/raspberrypi-ebook-server

作者:Don Watkins[7] 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

  • [1]: Calibre 3.0 发布了 – https://the-digital-reader.com/2017/06/19/calibre-3-0-released/

  • [2]: Raspbian Pixel 镜像 – https://www.raspberrypi.org/downloads/raspbian/

  • [3]: 调整了 Pixel 环境分辨率 – https://www.raspberrypi.org/forums/viewtopic.php?t=5851

  • [4]: Calibre – https://calibre-ebook.com/

  • [5]: 非 DRM – https://en.wikipedia.org/wiki/Digital_rights_management

  • [6]: Project Gutenberg – https://www.gutenberg.org/

  • [7]: Don Watkins – https://opensource.com/users/don-watkins

使用树莓派构建一个婴儿监视器

使用树莓派构建一个婴儿监视器

编译自: https://opensource.com/article/18/3/build-baby-monitor-raspberry-pi

作者: Jonathan Ervine

译者: qhwdw

比一般的视频监控还要好,这种 DIY 型号还有婴儿房间的自动室温控制功能。

香港很湿热,即便是晚上,许多人为了更舒适,在家里也使用空调。当我的大儿子还是一个小婴儿的时候,他卧室的空调还是需要手动控制的,没有温度自动调节的功能。它的控制器只有开或者关,让空调整个晚上持续运行会导致房间过冷,并且也浪费能源和钱。

我决定使用一个基于 树莓派 的 物联网 解决方案去修复这个问题。后来我进一步为它添加了一个 婴儿监视器 插件。在这篇文章中,我将解释我是如何做的,它的代码在 我的 GitHub 页面上。

设计空调控制器

解决我的问题的第一个部分是使用了一个 Orvibo S20 可通过 WiFi 连接的智能插头 和智能手机应用程序。虽然这样可以让我通过远程来控制空调,但是它还是手动处理的,而我希望尝试让它自动化。我在 Instructables 上找到了一个满足我的需求的项目:他使用树莓派从一个 AM2302 传感器 上测量附近的温度和湿度,并将它们记录到一个 MySQL 数据库中。

使用压接头将温度/湿度传感器连接到树莓派的相应 GPIO 针脚上。幸运的是,AM2302 传感器有一个用于读取的 开源软件 ,并且同时提供了 Python 示例。

与我的项目放在一起的用于 AM2302 传感器 接口的软件已经更新了,并且我使用的原始代码现在应该已经过时了,停止维护了。这个代码是由一个小的二进制组成,用于连接到传感器以及解释读取并返回正确值的 Python 脚本。

使用树莓派构建一个婴儿监视器

树莓派、传感器、以及用于构建温度/湿度监视器的 Python 代码。

将传感器连接到树莓派,这些 Python 代码能够正确地返回温度和湿度读数。将 Python 连接到 MySQL 数据库很简单,并且也有大量的使用 python-mysql 绑定的代码示例。因为我需要持续地监视温度和湿度,所以我写软件来实现这些。

事实上,最终我用了两个解决方案,一是作为一个持续运行的进程,周期性(一般是间隔一分钟)地获取传感器数据,另一种是让 Python 脚本运行一次然后退出。我决定使用第二种方法,并使用 cron 去每分钟调用一次这个脚本。之所以选择这种方法的主要原因是,(通过循环实现的)持续的脚本偶尔会不返回读数,这将导致尝试读取传感器的进程出现堆积,最终可能会导致系统挂起而缺乏可用资源。

我也找到了可以用程序来控制我的智能插头的一个 Perl 脚本 。它是解决这种问题所需的一部分,因此当某些温度/湿度达到触发条件,将触发这个 Perl 脚本。在做了一些测试之后,我决定去设计一个独立的 checking 脚本,从 MySQL 去拉取最新的数据,然后根据返回的值去设置智能开关为开或关。将插头控制逻辑与传感器读取脚本分开,意味着它们是各自独立运行的,就算是传感器读取脚本写的有问题也没事。

配置一个打开/关闭空调的温度值是很有意义的,因此,我将这些值转移到控制脚本读取的配置文件中。我也发现,虽然传感器的值一般都很准确,但是,偶尔也会出现返回不正确读数的情况。这个传感器脚本被修改为不向 MySQL 数据库中写入与前值差异非常大的值。同样也在配置文件中写入了连续读取的温度/湿度之间允许的最大差异值,如果读取的值处于这些限制值以外,这些值写不会提交到数据库中。

虽然,做这个自动调节器似乎花费了很多努力,但是,这意味着,记录到 MySQL 数据库的数据是有效的、可用于进一步去分析识别用户使用模式的有用数据。可以用多种图形方式去展示来自 MySQL 数据库中的数据,而我决定使用 Google Chart 在一个 Web 页面上显示数据。

使用树莓派构建一个婴儿监视器

过去六小时内测量到的温度和湿度

添加一个婴儿监视摄像头

树莓派开放的性能意味着我可以不断地为它增加功能 —— 并且我有大量的未使用的可用 GPIO 针脚。我的下一个创意是去添加一个摄像头模块,将它放在孩子的卧室中,配置它去监视婴儿。

我需要一个能够在黑暗环境中工作的摄像头,而 Pi Noir 摄像头模块是非常适合这种条件的。Pi Noir 除了没有红外过滤之外,同样也是树莓派常用的摄像头模块。这意味着它在白天时的图像可能有点偏紫色,但是它可以在黑暗中借助红外灯来显示图像。

现在我需要一个红外光源。由于树莓派非常流行,并且进入门槛很低,因此它有大量的外围配件和插件。也有适合它的各种红外光源,我注意到的其中一个是 Bright Pi 。它可以从树莓派上供电,并且它很适合为树莓派的摄像头模块提供红外光和普通光。它唯一的缺点是太考验我的焊接技能了。

我的焊接技能还是不错的,但是可能花费的时间比其他人更长。我成功地连接了外壳上所有的红外 LEDs,并将它们连接到树莓派的 GPIO 针脚上。这意味着树莓派能够编程控制红外 LED 是否点亮,以及它的亮度。

通过一个 Web 流去公开捕获的视频也很有意义,因为这样我就可以从 Web 页面上查看温度和湿度的读数图表。进一步研究之后,我选择了一个使用 M-JPEG 捕获器的 流软件 。通过 Web 页面公开 JPG 源,我可以在我的智能手机上去连接摄像头查看程序,去查看摄像头的输出。

做最后的修饰

没有哪个树莓派项目都已经完成了还没有为它选择一个合适的外壳,并且它有各种零件。在大量搜索和比较之后,有了一个显然的 赢家 :SmartPi 的乐高积木式外壳。乐高的兼容性可以让我去安装温度/湿度传感器和摄像头。下面是最终的成果图:

使用树莓派构建一个婴儿监视器

在这以后,我对我的这个作品作了一些改变和更新:

  • 我将它从树莓派 2 Model B 升级到了 树莓派 3 ,这意味着我可以使用 USB WiFi 模块。
  • 我用一个 TP-Link HS110 智能插头替换了 Orvibo S20。
  • 我也将树莓派插到了一个智能插头上,这样我就可以远程重启/重置它了。
  • 我从树莓派上将 MySQL 数据库移走了,它现在运行在一个 NAS 设备上的容器中。
  • 我增加了一个非常 灵活的三角夹 ,这样我就可以调整到最佳角度。
  • 我重新编译了 USB WiFi 模块,禁用了板载 LED 指示灯,这就是升级到树莓派 3 的其中一个好处。
  • 我因此为我的第二个孩子设计了另外一个监视器。
  • 因为没有时间去折腾,我为我的第三个孩子购买了夜用摄像头。

想学习更多的东西吗?所有的代码都在 我的 GitHub 页面上。

用树莓派搭建自己的私有云盘

市面上的私有云网盘软件可能大家也看到很多了,比如Seafile、ownCloud等,功能很实用,但是对于某些没有公网IP环境,或者是对于那些不懂内网穿透或者是端口映射的小白们来说,可能即使搭建好了,也没法从外网连上。这里介绍的Syncthing这款软件,就不需要公网IP,利用P2P网络来进行设备间互相的通讯,从而实现类似OneDrive一样的文件备份功能。

先列一下我所使用的设备:

  • 树莓派3B
  • 希捷1t硬盘

首先,需要让树莓派挂载上这个硬盘,这里我用硬盘为NTFS格式来举例:

安装ntfs-3g:

sudo apt-get install ntfs-3g

创建挂载点:

sudo mkdir /mnt/pidrive

连上硬盘,查看其标识:

sudo fdisk –l

编辑文件etc/fstab:

sudo nano etc/fstab

在最后一行加上(注意“/dev/sdc1”换成刚刚查看到的硬盘标识):

/dev/sdc1 /mnt/pidrive ntfs-3g defaults 0 0

按Ctrl+O保存,按Ctrl+X退出

挂载硬盘:

sudo mount –a

设置自动挂载USB驱动器:

sudo apt-get install autofs

将配置写入文件:

sudo nano /etc/auto.master

在行”+auto.master”之后添加如下内容,并保存退出:

/media/ /etc/auto.ext-usb --timeout=10,defaults,user,exec,uid=1000

硬盘自动关闭设置(withhdparm),注意修改为自己的硬盘标识:

sudo aptitude install hdparm
sudo hdparm -S120 /dev/sdc1

为了使被唤醒的硬盘重新连接,编辑文件(/etc/hdparm.conf):

sudo nano /etc/hdparm.conf

在文件最后一行加入如下内容,并保存退出,注意修改为自己的硬盘标识:

/dev/sdc1 {
spindown_time = 120
}

如果上面没做错的话,那么进入/mnt/pidrive文件夹,就应该是外接的硬盘了。(挂载NTFC硬盘部分教程取自这里)。

接着我们要在树莓派上部署Syncthing

打开Syncthing的官网,

我们复制一下arm版文件的下载链接:

用树莓派搭建自己的私有云盘

接着在树莓派中执行:

wget 那个下载的链接
tar -vzxf 那个下载了的文件

用树莓派搭建自己的私有云盘

接着执行:

cd 你刚刚解压的文件夹名
./syncthing

这时程序已经跑起来了,但是后台现在是连不上的,因为没有开启外网访问权限,我们在它开启后按Ctrl+C强制结束该进程。

通过查阅官方手册网站,笔者得知需要修改配置文件。

运行命令:

nano /home/pi/.config/syncthing/config.xml

把:

127.0.0.1:8384

改为:

0.0.0.0:8384

用树莓派搭建自己的私有云盘

这时我们再启动Syncthing服务:

./syncthing

如果我们打开浏览器,可以成功访问其后台的话,就说明我们成功了。

网址为:http://你树莓派的内网IP地址:8384

打开后都是中文,我就不过多解释了,唯一需要注意的是,远程打开最好设置一下登陆的账号密码。

用树莓派搭建自己的私有云盘

另外值得一说的是,树莓派的进程最好使用screen在后台运行:

sudo apt-get install screen
screen ./syncthing

按Ctrl+A,Ctrl+D扔到后台运行。

具体设置请自行查看官方的技术文档。

再接着我们来配置电脑端的软件(因为电脑端都是千篇一律的,所以我只说一台电脑的添加方法,多台电脑方法一样,不再赘述)。

去官网下载Windows系统专用版本:

用树莓派搭建自己的私有云盘

下载到电脑上,解压到一个你不会去删掉的位置。

这里推荐下载一个GUI工具,我们再从官网下载一个GUI管理器,这里推荐那个GTK写的工具:

用树莓派搭建自己的私有云盘

下载,安装,打开。你会发现它弹了个窗,勾上始终启动,点Start:

用树莓派搭建自己的私有云盘

再选上你刚刚下载解压好的Syncthing软件,点保存:

用树莓派搭建自己的私有云盘

启动成功后,我们先打开树莓派的网页后台,查看ID:

用树莓派搭建自己的私有云盘

复制那一串设备标识:

用树莓派搭建自己的私有云盘

我们在本机电脑软件里把树莓派添加进来:

用树莓派搭建自己的私有云盘

稍等片刻,树莓派网页后台会弹出一个消息,问是否连接电脑,点是就可以了。

连接过后,和之前差不多,添加要共享的文件夹就可以了:

用树莓派搭建自己的私有云盘用树莓派搭建自己的私有云盘

树莓会显示提示:

用树莓派搭建自己的私有云盘

注意设置路径时,要选你刚刚挂载的硬盘下面的路径:

用树莓派搭建自己的私有云盘

这样,一个文件夹就共享完成了,当文件被修改时,会自动同步到树莓派所连接的硬盘中。

连接外网的电脑,步骤和上面没有太大区别,唯一要注意的就是建立连接和添加文件夹时需要双方点击同意,所以还是在添加新设备之前开个TeamView远控家里的电脑吧,不然加不上。

具体连接见下图(大概就这意思吧):

用树莓派搭建自己的私有云盘

这样,一个不需要外网IP的云盘就做完了,如果你愿意,搭建到服务器上面也是可以的。

如何在树莓派上搭建私有云存储

本篇的旨在最全面地介绍搭建网盘的整个过程,让没有Linux基础的小白们少走弯路,因此细节上多有赘述,老司机们请无视。最近国内的网盘们一个接一个地倒下,相信很多人不想忍受某网盘的限速,大家对私有云的需求越来越高。最简单和稳妥的解决办法当然还是购买群晖这样高性能、多功能的NAS,但动辄几千元的售价还是让许多人望而却步,市面上的私有云盘软件有诸如可道云、Nextcloud/ownCloud、Seafile等,这里IT之家来介绍如何用一块树莓派3B开发板搭建私有云存储。

先介绍一下本篇的主角——可道云

KodExplorer可道云,原名芒果云,是基于Web技术的私有云和在线文档管理解决方案,具有以下特点:

  • 轻量易部署
  • 适用性强,应用场景多
  • 高颜值、可定制

在体验了各家网盘后笔者选择了可道云,主要是第一眼就被他近似于Windows的操作界面吸引了,可道云不需要数据库,足够轻量,搭建简单,毕竟小小的树莓派机能实在是有限。对比ownCloud,可道云在树莓派上的性能表现要好太多。但也有像无移动客户端支持、同步不便、移动端网页版存在一些问题等不足。

如何在树莓派上搭建私有云存储

aria2

aria2被众多网友视为下载神器,相信不少朋友都接触过,它是一款开源免费跨Win、Mac、Linux平台且不限速的多线程下载软件,具有速度快、体积小、性能强劲等特点。aria2支持HTTP / FTP / BT / Magnet磁力链接等类型的文件下载。

准备

  • 树莓派3B
  • 内存卡
  • 硬盘
  • 公网IP
  • 域名

为树莓派安装系统并启动登录

先去树莓派官网下载系统镜像

如何在树莓派上搭建私有云存储

Download Zip下载压缩包,下载完成后解压,得到img镜像文件。

下载镜像烧录工具Win32DiskImager v0.9.zip并安装。

使用读卡器将内存卡连接电脑,运行Win32diskimager。

如何在树莓派上搭建私有云存储

映像文件选择刚下载的img文件,设备选择内存卡盘符,然后选择写入,就开始安装系统了,安装完成后会弹出完成对话框。安装完成后在Windows系统看到内存卡只有74MB这是正常的,Windows看不到Linux下的分区。

然后在内存卡根目录下新建文件名为ssh的空白文件(没有后缀名),这样就能开启SSH服务登陆树莓派了。

将内存卡插入树莓派,用网线连接树莓派网口和路由器lan口,然后接上电源线。树莓派就开机了!

登陆路由器后台查看树莓派的内网IP

如何在树莓派上搭建私有云存储

可以看到这里树莓派获取到的IP地址为192.168.2.6,记住这个地址

下载并安装PuTTY,安装完成后运行PuTTY。

如何在树莓派上搭建私有云存储

将电脑和树莓派置于同一局域网,在主机名称中输入192.168.2.6,端口默认的22就可以,然后点击打开。这时会弹出安全警告,点是即可;之后输入用户名:pi;密码:raspberry(输入时密码不可见)就成功登陆树莓派了。

如何在树莓派上搭建私有云存储

域名

大家可以在阿里云注册一个喜欢的域名,部分域名一年也就几块钱。至此准备工作就完成了。

搭建可道云

PuTTY登陆后为root用户设置密码,输入(PuTTY中单击鼠标右键粘贴):

sudo passwd root

会提示输入密码,然后确认输入密码(输入时密码不可见)。

如何在树莓派上搭建私有云存储

输入如下命令就可切换到root用户:

su

我们先解除树莓派对root用户直接登陆的限制,编辑sshd_config文件:

sudo nano /etc/ssh/sshd_config

按Ctrl+W搜索PermitRootLogin,删除前面的#并把without-password改为yes:

PermitRootLogin yes

按Ctrl+O保存文件,Ctrl + X退出编辑然后重启树莓派:

reboot

安装Apache+PHP

使用root用户登录,先更新一下安装源:

sudo apt-get update

安装apache2和PHP:

sudo apt-get install apache2 php7.0 php7.0-curl php7.0-mbstring php7.0-gd

这时访问树莓派的IP就可以看到apache2的默认页了。

挂载硬盘

树莓派挂载NTFS硬盘默认是只读文件系统,我们可以通过其它工具实现,安装ntfs-3g:

sudo apt-get install ntfs-3g
modprobe fuse

接下来我们创建挂载点,我选择的挂载点在/media/pi/mo文件夹:

sudo mkdir /media/pi/mo

查看系统当前挂载的硬盘:

fdisk -l

我们会看到最下面有如下信息:

Device         Boot Start      End  Sectors  Size Id Type
/dev/mmcblk0p1       8192    93236    85045 41.5M  c W95 FAT32 (LBA)
/dev/mmcblk0p2      94208 62521343 62427136 29.8G 83 Linux

Disk /dev/sda: 464.8 GiB, 3899024998 bytes, 937766584 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xa7cf32d1

Device     Boot Start       End   Sectors   Size  Id  Type
/dev/sda1        2048 334438655 937766584 464.8G  7 HPFS/NTFS/exFAT

其中/dev/sda1为这块硬盘的分区信息。下面我们就以Apache的默认用户www-data来挂载硬盘,输入如下命令来查看用户身份:

sudo -u www-data id

显示信息如下:

uid=33(www-data) gid=33(www-data) groups=33(www-data)

然后让硬盘能够自动挂载,编辑/etc/fstab:

sudo nano /etc/fstab

将如下内容添加到文件最后一行:

/dev/sda1 /media/pi/mo ntfs uid=33,gid=33,noexec,umask=007 0 0

这里uid和gid为用户和组,也就是上面我们查看到的信息;umask表示拒绝的权限,其中第一个数字为0。表示不拒绝任何权限,即可读、写、执行,第二、三个数字分别代表用户组和其他用户。按Ctrl+O保存文件,然后Ctrl + X退出编辑,重启后生效:

reboot

配置可道云

下载并解压可道云

cd /media/pi/mo/kod
wget http://static.kodcloud.com/update/download/kodexplorer4.25.zip
unzip kodexplorer4.25.zip
chmod -Rf 777 ./*

配置apache:

nano /etc/apache2/sites-available/kod.conf

粘贴如下内容:

注:这里将kod.wumo.com替换成你自己的用来访问云盘的域名。重启apache2:

sudo service apache2 restart

解析域名

我们先在路由器上配置端口转发,进入路由器管理后台,找到端口转发/端口映射这项,以我手里这台刷了老毛子的斐讯为例:服务名称随意;端口范围我这里填58080(图上是80,别管它),这个端口是可以任意的,它是我们通过域名访问树莓派上的web服务时使用的端口,你可以用其他端口但尽量避开80、443、8080这些端口,因为运营商会封禁这些web服务默认端口;内网IP:树莓派的内网IP;本地端口:80;这样我们就把对路由器58080端口的访问转移到树莓派的80端口了。这里我们也为aria2配置一条转发规则:将路由器的6800端口转发到树莓派的6800端口。

如何在树莓派上搭建私有云存储

家庭宽带IP会经常改变,这里就需要动态域名解析。动态域名的功能大多数路由器都有,如果你不会的话可以参考这篇文章用WinScp将softether(提取码:uqgx)上传到树莓派根目录并解压:

tar -zxvf softether-vpnserver-v4.25-9656-rtm-2018.01.15-linux-arm_eabi-32bit.tar.gz
cd /vpnserver
./.install.sh
./vpnserver start–Simplified Chinese

然后设置密码:

./vpncmd

输入1,后按三次回车,然后输入:

ServerPasswordSet

按照提示设置密码,然后下载并安装Windows端管理工具(在上面的网盘链接里),点击“新设置”添加连接文件。主机名填树莓派内网IP,端口:443,密码:你刚才设置的密码。

如何在树莓派上搭建私有云存储

确定后选择“远程访问vpnserver”,然后一路确定,你就能看到分配到的动态解析的域名了,

如何在树莓派上搭建私有云存储

记下这个域名,我的域名是阿里云注册的,进入阿里云控制台>我的资源>云解析DNS>你的域名,选择添加解析,

如何在树莓派上搭建私有云存储

记录类型:CNAME;主机记录:配置apache时填写的域名(上文中我填的是kod);记录值:动态DNS分配的域名。

至此我们的私有云就搭建完成了!用浏览器访问http://你的域名:转发到树莓派的端口号就可以看到我们搭建的云盘了。效果如下:

如何在树莓派上搭建私有云存储如何在树莓派上搭建私有云存储如何在树莓派上搭建私有云存储

本文就是用可道云内置的MD编辑器写的。

配置Aria2

这里aria2的配置参考这篇文章。

安装Aria2

sudo apt-get install aria2

配置Aria2在/etc目录下创建aria2目录用来存放配置文件:

sudo mkdir /etc/aria2

创建空白的aria2.session文件:

sudo touch /etc/aria2/aria2.session

创建配置文件:

sudo nano /etc/aria2/aria2.conf

在该文件中输入以下内容:

# 文件的保存路径(可使用绝对路径或相对路径), 默认: 当前启动位置
dir=/media/pi/mo/kod/data/User/admin/home/download
# 启用磁盘缓存, 0为禁用缓存, 需1.16以上版本, 默认:16M
disk-cache=32M
# 文件预分配方式, 能有效降低磁盘碎片, 默认:prealloc
# falloc和trunc则需要文件系统和内核支持
# NTFS建议使用falloc, EXT3/4建议trunc, MAC 下需要注释此项
file-allocation=none
# 断点续传
continue=true
## 下载连接相关 ##
# 最大同时下载任务数, 运行时可修改, 默认:5
max-concurrent-downloads=10
# 同一服务器连接数, 添加时可指定, 默认:1
max-connection-per-server=5
# 最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M
# 假定size=10M, 文件为20MiB 则使用两个来源下载; 文件为15MiB 则使用一个来源下载
min-split-size=10M
# 单个任务最大线程数, 添加时可指定, 默认:5
split=10
# 整体下载速度限制, 运行时可修改, 默认:0
#max-overall-download-limit=0
# 单个任务下载速度限制, 默认:0
#max-download-limit=0
# 整体上传速度限制, 运行时可修改, 默认:0
#max-overall-upload-limit=0
# 单个任务上传速度限制, 默认:0
#max-upload-limit=0
# 禁用IPv6, 默认:false
disable-ipv6=true
## 进度保存相关 ##
# 定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0
#save-session-interval=60
## RPC相关设置 ##
# 启用RPC, 默认:false
enable-rpc=true
# 允许所有来源, 默认:false
rpc-allow-origin-all=true
# 允许非外部访问, 默认:false
rpc-listen-all=true
# 事件轮询方式, 取值:[epoll, kqueue, port, poll, select], 不同系统默认值不同
#event-poll=select
# RPC监听端口, 端口被占用时可以修改, 默认:6800
#rpc-listen-port=6800
# 设置的RPC授权令牌, v1.18.4新增功能, 取代 --rpc-user 和 --rpc-passwd 选项
rpc-secret=123456789
# 设置的RPC访问用户名, 此选项新版已废弃, 建议改用 --rpc-secret 选项
#rpc-user=

注1:rpc-secret=123456789,改为你自己的密码;

注2:aria2默认下载目录笔者放在了可道云管理员文件目录下的download文件夹,下载完成后打开可道云即可看到。

启动aria2

这里我们用www-data用户来运行aria2,先赋予配置目录可执行权限:

sudo chown -R www-data:www-data /etc/aria2

以www-data用户运行aria2:

sudo -u www-data aria2c --conf-path=/etc/aria2/aria2.conf

如果没有提示任何错误信息,那就按Ctrl+C停止上面的语句,以Daemon的形式,转为后台运行:

sudo -u www-data aria2c --conf-path=/etc/aria2/aria2.conf -D

做成系统服务:

sudo nano /etc/init.d/aria2c

粘贴以下内容:

#!/bin/sh
### BEGIN INIT INFO
# Provides:          aria2
# Required-Start:    $remote_fs $network
# Required-Stop:     $remote_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Aria2 Downloader
### END INIT INFO  
case "$1" in
start)
    echo  "Starting aria2c ..."
    sudo -u www-data aria2c --conf-path=/etc/aria2/aria2.conf -D
;;
stop)
    echo  "Shutting down aria2c ..."
    killall aria2c
;;
restart)
     killall aria2c
    sleep 3
    sudo -u www-data aria2c --conf-path=/etc/aria2/aria2.conf -D
;;
esac
exit

然后设置这个文件的权限:

sudo chmod 755 /etc/init.d/aria2c

测试服务是否可以启动:

sudo service aria2c start

添加aria2c服务自动运行:

sudo update-rc.d aria2c defaults

安装aria的web管理界面这里我们选择aria2-NG作为web管理界面创建目录:

mkdir /var/www/html/aria2

下载并解压aria2-NG:

cd /var/www/html/aria2 && wget https://github.com/mayswind/AriaNg/releases/download/0.3.0/aria-ng-0.3.0.zip
unzip aria-ng-0.3.0.zip

配置apache:

nano /etc/apache2/sites-available/aria2.conf

输入以下内容:

注:和上文一样把aria2.wumo.com替换成你用来访问aria2管理界面的域名。

ln -s /etc/apache2/sites-available/aria2.conf /etc/apache2/sites-enabled/aria2.conf

重启apache2:

sudo service apache2 restart

然后去阿里云把你用来访问aria2管理界面的域名的CNAME记录解析到动态域名上。用浏览器输入http://用来访问aria2管理界面的域名:外网端口(上文中我用的是58080)访问你的aria2。这里会显示认证错误:

如何在树莓派上搭建私有云存储

到AriaNG设置>RPC>Aria2RPC密钥输入上文你设置的密码,然后重新加载页面:

如何在树莓派上搭建私有云存储

这里就会显示已连接了。

如何在树莓派上搭建私有云存储

这样我们就大功告成了~

树莓派无线网络打印机

家里面有老式USB有线打印机的朋友有了树莓派Zero W可以将自己的打印机秒变无线网络打印机,瞬间高大上,对于那些囊中羞涩还没升级无线打印机的朋友瞬间装B成功,高大上好了进入正题,首先将树莓派Zero W联网输入如下命令更新库缓存

  1. sudo apt-get update

接着打开终端输入如下命令安装所需组件

  1. sudo apt-get install cups printer-driver-gutenprint

其中printer-driver-gutenprint是多合一驱动库,CUPS是网络打印服务端

接着输入如下命令将用户pi加入到打印组

  1. sudo usermod -a -G lpadmin pi

然后停止CUPS服务

  1. sudo service cups stop

备份原配置文件

  1. sudo mv /etc/cups/cupsd.conf /etc/cups/cupsd.conf.bak

创建新配置文件

  1. sudo vi /etc/cups/cupsd.conf

复制粘贴进入如下内容然后保存

  1. # Only listen for connections from the local machine.

  2. #Listen localhost:631

  3. #CHANGED TO LISTEN TO LOCAL LAN

  4. Port 631

  5. # Restrict access to the server…

  6. <Location />

  7. Order allow,deny

  8. Allow @Local

  9. </Location>

  10. # Restrict access to the admin pages…

  11. <Location /admin>

  12. Order allow,deny

  13. Allow @Local

  14. </Location>

  15. # Restrict access to configuration files…

  16. <Location /admin/conf>

  17. AuthType Default

  18. Require user @SYSTEM

  19. Order allow,deny

  20. Allow @Local

  21. </Location>

重启CUPS服务

  1. sudo service cups start

使用ifconfig命令或者到路由器管理界面查找开发板的局域网IP,然后再将USB打印机开机后连接开发板,在电脑或者手机上输入如下网址进行配置打印机

  1. https://树莓派开发板局域网IP:631/admin

接着将打印机用数据线和OTG连接到树莓派Zero W开发板后,按下图操作,添加自己的打印机

树莓派无线网络打印机

树莓派无线网络打印机

记住勾选Share This Printer

树莓派无线网络打印机

选择打印机厂商型号

树莓派无线网络打印机

输入账号密码

树莓派无线网络打印机

配置打印选项

树莓派无线网络打印机

完成配置后打印测试页

树莓派无线网络打印机

树莓派无线网络打印机

到此就安装完成,在局域网内任意电脑上、手机上、平板上就都可以无线连接到这台打印机打印了