使用Raspberry Pi Zero和Raspberry Pi Hat轻松进行电子制作!
大家好,我是吉田!
我们将使用小巧的Raspberry Pi Zero来制作便携式移动设备和可穿戴设备。Raspberry Pi家族里还有一款称为“Hat”的硬件,通过Hat可以进行功能扩展,而且其形状和Raspberry Pi完全匹配,因此我们将用它来制作一些简单方便的小作品。
在第1篇中,我将使用Seeed ReSpeaker 2-Mics Hat,通过这款Hat可以轻松地将麦克风、扬声器、按钮等部件安装在Raspberry Pi Zero上。
本项目所需部件
(注:请小心处理,使用风险自负。)
・Raspberry Pi Zero外壳(如果是Raspberry Pi入门套件,会附带外壳。)
目录
1. 准备好Raspberry Pi Zero
2. 开始使用Raspberry Pi Hat(ReSpeaker)
3. 组装成小型设备
4. 制作成Dash按钮
5. 总结
1.准备好Raspberry Pi Zero
Raspberry Pi Zero与普通的Raspberry Pi(Model 3B)相比,其大小只有后者的1/3左右,CPU、内存稍有逊色,但是GPIO等数字输入输出功能处于同等水平。当然,两者都可以使用Python进行编程等操作。
虽然Raspberry Pi Zero上运行的OS是Raspbian,但是此次的电子作品不会用到Desktop等,所以我们将使用更为简单的Raspbian Lite。
要安装Raspbian Lite,需要先从官网下载OS镜像,并将其刻录到SD卡上。详细的操作方法可以参照“第41篇 表里如一,小巧轻便!在CUI环境中运行Raspberry Pi Zero”。
通过SSH(Secure Shell)远程连接Raspberry Pi Zero。
Raspbian Lite的主目录(/home/pi/)中没有默认的文件/文件夹,我们需要事先创建一个用来存放这次要用到的程序的Programs文件夹。
2.开始使用Raspberry Pi Hat(ReSpeaker)
Raspberry Pi Zero体积小,且和常规的Raspberry Pi一样,GPIO引脚都是40个。但是,因为只有一个微型USB端口,没有音频接口,所以添加硬件需要费点心思。
此时,如果使用扩展板“Raspberry Pi Hat”,则可以轻轻松松的完成功能扩展,实现自己想要的效果。Raspberry Pi Hat扩展板尺寸方面和Raspberry Pi Zero完全匹配,且相关厂商均有推出该类产品。
在本篇中,我想使用Seeed公司的“ReSpeaker” Raspberry Pi Hat来制作电子作品。
ReSpeaker的麦克风和音频接口作为标配自带按钮和LED,可以对Raspberry Pi Zero的功能进行有效补充。另外还有两个不用焊接就可以直接安装传感器的Grove接口,具有一定的扩展性。
首先,在不通电的状态下,将准备好的ReSpeaker安装在Raspberry Pi Zero上。
对准40引脚,从上往下缓缓插入。它的尺寸与Raspberry Pi Zero完美契合!
接下来给Raspberry Pi通电,安装ReSpeaker的驱动程序。
Seeed的下述网页上有详细的安装方法,按照步骤进行安装即可。
http://wiki.seeedstudio.com/ReSpeaker_2_Mics_Pi_HAT/
先下载源代码。
运行源代码中的安装脚本。
$ sudo ./install.sh
$ reboot
安装完成后重启,先确认声音情况。
可以通过aplay对扬声器进行确认,通过arecord对麦克风进行确认。
$ arecord -l
因为ReSpeaker自带按钮和LED,所以我们需要提前激活其功能。它们也需要库文件,并需要下载源代码。
$ git clone https://github.com/respeaker/mic_hat.git
$ cd mic_hat/
让我们在其中运行示例脚本。
怎么样?中间的3颗LED按顺序亮起来了吧。
3.组装成小型设备
为了控制设备整体尺寸,我们使用小型的LiPo电池给Raspberry Pi Zero供电。照片中由跳线连接的部分是可以通过外部电源供电的,所以我们需要在这里焊上引脚,再装上滑动开关,这样就就能对Raspberry Pi进行ON/OFF控制了。
安装好之后,将其放入Raspberry Pi Zero外壳。外壳上原本开了一个用来装摄像头的孔,我们需要调整位置,确保通过该孔可以看到LED。同时,也需要确保图片上左侧的按钮位于可以按压的位置上。
这样,ReSpeaker上自带的按钮就能正常使用了。ReSpeaker上的按钮连接的是GPIO17引脚,所以我们需要编写一个相应的程序。
import RPi.GPIO as GPIO #ラズパイ上の40ピンGPIOを操作する為のライブラリ import time from pixels import pixels #ReSpeaker上のLED用のライブラリ BUTTON = 17 #ReSpeaker上のボタンはGPIO17 GPIO.setmode(GPIO.BCM) GPIO.setup(BUTTON, GPIO.IN) while True: state = GPIO.input(BUTTON) if state: pixels.off() #押していない時はLED、表示もoffにする print("off") else: pixels.wakeup() #押すとLED、表示をonにする print("on") time.sleep(1)
现在,按下按钮,LED就能发光了。
4.制作成Dash按钮
如果仅仅会发光,那还是不够有趣,所以我们接下来把它制作成Dash按钮吧(一种简单的IoT按钮,只需按一下,就能实现下单等功能)。
做好之后,贴在冰箱上,只要按一下按钮,就能拜托别人帮忙,这种按钮怎么样啊?比如,按一下按钮,将购物清单发给下班回家路上的另一半,并且发送LINE消息,“紧急求助!请买这些东西!”等等。
购物清单的制作方法如下:先在智能手机或者浏览器上,①进入Google购物清单,使用Google账号进行登录。② 在这里可以随时追加自己想要购买的商品。③ 点击右上角的图标,添加要分享此列表的人员(家庭成员等)。
然后,将该链接粘贴在后文提到的IFTTT上,就可以在发送LINE消息时,自动分享购物清单。
再搭配网络服务平台IFTTT,就能轻轻松松地实现Raspberry Pi和LINE的关联。
通过IFTTT网站创建新的小程序,并选择“Webhooks”作为触发器。
再为所执行的操作设一个特定的名字,也就是Event name。(此时需要设为zero_line)。
创建完成下图所示的IFTTT小程序之后,点击Webhook的图标。
这时,Webhooks settings界面就打开了,记录好里面的URL部分。其中,use/之后的部分就是用来调用该APP的Webhook key。
将其结果关联至LINE。创建例如“Raspberry Pi Zero消息”这样的接收人群组,将Line Notify用户以及发送对象(接收人)加入至该群组。
接下来,再简单的制作如下所示的调用IFTTT的程序。
在Event name处粘贴刚刚设定的事件名,即zero_line,在Webhooks key处粘贴刚刚记录下来的key。
[ifttt_line.py]
import requests IFTTT_URL = 'https://maker.ifttt.com/trigger//with/key/' IFTTT_KEY = '' requests.post(IFTTT_URL + IFTTT_KEY, json = {'value1':'aaa', 'value2':'bbb', 'value3':'https://shoppinglist.google.com'})
运行该程序,设定好的消息应该就能成功发送至LINE了。
最后实现了与按钮之间的关联、且可以发送LINE消息的程序就是这个样子,仅供大家参考!
[button_line.py]# _*_ coding: utf-8 _*_ import RPi.GPIO as GPIO #ラズパイ上の40ピンGPIOを操作する為のライブラリ import time from pixels import pixels #ReSpeaker上のLED用のライブラリ import requests IFTTT_URL = 'https://maker.ifttt.com/trigger//with/key/' IFTTT_KEY = '' BUTTON = 17 #ReSpeaker上のボタンはGPIO17 GPIO.setmode(GPIO.BCM) GPIO.setup(BUTTON, GPIO.IN) while True: state = GPIO.input(BUTTON) if state: pixels.off() #押していない時はLED、表示もoffにする print("off") else: requests.post(IFTTT_URL + IFTTT_KEY, json = {'value1':'ダッシュでお願い!', 'value2':'ちゃんと見てね↓'}) pixels.wakeup() #押すとLED、表示をonにする print("IFTTT LINE done!") time.sleep(1) time.sleep(1)
这样,我们就不用动程序,只要变更IFTTT的设置,就能实现LINE消息的内容和收件人同步反映。
在形状方面,做成钥匙扣形状,让小朋友随身携带也是一个不错的选择。想象一下,只要轻轻一按,就能完成像“培训班下课了!快来接我吧!”这样的消息发送,是不是很方便啊。当然,需要确保培训班等使用场所可以连入WIFI网络。
此外,如果在按钮上贴上相应的贴纸,还可以各个按钮的功能和效果将变得一目了然!请一定要在家里和户外尝试一下。
4.总结
从本篇开始,我们将陆陆续续使用小型的Raspberry Pi、Raspberry Pi Zero,制作一些小巧轻便的电子作品。
通过使用Raspberry Pi Hat,可以轻轻松松地完成硬件的增加和功能的扩展,这样就可以大幅扩大我们可制作的电子作品的范围。
此外,因为自带了按钮、LED、音响等部件,所以按了Dash按钮之后,能够立即以声音等形式进行提醒。
在下一篇中,我将使用无需焊接就能在Raspberry Pi Zero上添加传感器等部件的Grove,来进一步丰富电子作品的功能,敬请期待!
(吉田)
本系列连载的内容
第1篇:使用Raspberry Pi Zero和Raspberry Pi Hat轻松进行电子制作!(本篇)
第2篇:使用Grove传感器制作环境检测设备
第3篇:制作声控多功能遥控器!
第4篇:制作小屏智能手表!