树莓派
人们从过去依靠互联网单纯获取数字化信息,发展到希望在所有可以接入互联网的地方依靠计算机和传感器远程控制任意设备,从而直接改善自己的生活,“物联网”技术就这样应运而生,而树莓派及其外围设备以及传感器在这中间扮演着重要的角色,树莓派好比人的大脑,传感器就像人的眼睛,而外围设备好比人的四肢,利用它们搭建好各种软硬件平台,才能使“物联网”真正落到实处。
树莓派(Raspberry Pi)是大家熟知的迷你计算机系统,看上去像一块电路板,但具有完整的硬件结构,价格非常便宜。通过树莓派,可以实现很多低成本的自动化应用形式,比如连接传感器昨晚门窗警报器、或是把一台传统音箱无线化,通过软件也可实现统一的方便管理,实现基本的智能家居体验。
Raspbian操作系统介绍
树莓派的操作系统 Raspbian 的开发者是麦克·汤姆森和彼得·格林。该系统为官方推荐的操作系统。它巧妙地将 Paspberry 和 Debian 的名字合并成了一个单词。Raspbian 是基于 Debian 的专为 Cotex-A 系列开发的能运行在树莓派上的操作系统。
Debian 是另一种发行版 Ubuntu 的基础,而 Ubuntu 是最为流行的 Linux 桌面系统,本系统拥有良好的社区支持。Raspbain 系统附带着35000多个软件包,并集成了轻量级的图形界面 LXDE。Raspbian 提供了完善的功能,并且组织的非常好,能够支持最新的硬件和软件。
随着树莓派在极客社区中的广泛使用,拥有上千万台的销量,树莓派已经成为世界第三大计算平台,树莓派是由树莓派基金会开发的一款微型电脑,基金会只是设计电路图,设计操作系统和维护社区,树莓派的生产现在有 RS 和 element14 两家工厂进行,所以树莓派基金为桌面电脑打造了一款操作系统:Raspbian Pixel。
树莓派3代b+系统安装与简单的搭建
树莓派3代b+,一套树莓派大约三百块,包括一些杂七杂八的零件,比如散热片、风扇、内存卡、读卡器、供电电源、亚力克板壳子等等。树莓派配备的接口很多,HDMI接口、网线接口、4个USB接口、耳机接口,还有一排针形引脚,可以引线控制一些附加设备。树莓派的具体配置如下:1.2GHZ CPU,1GB运存,可扩展的16GB存储,带蓝牙、Wi-Fi功能。树莓派虽然只有信用卡大小,但是内心却非常的强大,电脑能做的事情,基本上它都能做,可谓雀虽小五脏俱全。
树莓派兼容的系统有很多,官方原配的Raspberry系统,CentOS 7,Ubuntu,Win10等等。Raspberry系统Raspbian 有一个弊端,它具有图形桌面和一些不必要的服务,会占用一部分CPU和内存资源,毕竟树莓派只有1G的内存,为了尽可能为以后的应用程序余留足够的资源,开发者可以选择万年不崩溃超级稳定的CentOS系统,整个系统只占用了120M左右内存,0.3%的CPU。CentOS系统可以在centos官网搜索下载,最终下载的系统如下图:
下载完毕之后解压出.img系统,然后准备烧制系统。首先需要把TF内存卡插在读卡器上,然后连接电脑,电脑上下载Win32DiskImager这个软件,打开软件,选择解压好的系统,点击Write写入系统,直到写入完毕。
写好之后,直接将TF卡插进树莓派卡槽,然后一定要使用网线连接路由器,连接完毕后,在路由器管理页面找到树莓派的IP,用Xshell远程登录这个IP,账号默认root,密码centos。
如果不想使用网线,那么我们需要配置树莓派的Wi-Fi模块。
在Shell里面输入下面命令:
curl –location
https://github.com/RPi-Distro/firmware-nonfree/raw/master/brcm80211/brcm/brcmfmac43430-sdio.bin > /usr/lib/firmware/brcm/brcmfmac43430-sdio.bin
curl –location
https://github.com/RPi-Distro/firmware-nonfree/raw/master/brcm80211/brcm/brcmfmac43430-sdio.txt > /usr/lib/firmware/brcm/brcmfmac43430-sdio.txt
systemctl reboot
等待重启完毕后,重新用Xshell连接树莓派,执行下面命令:
nmcli d #执行这条命令,如果有wlan Wi-Fi这样的字眼出现,表示Wi-Fi驱动安装成功。
nmcli d wifi #查看周围的wifi,记下需要连接Wi-Fi的SSID。
nmcli d wifi connect yourSSID password ‘yourpassword’ #连接wifi,替换yourSSID和yourpassword。
nmcli d show wlan0 #查看wlan0的状态,记下WiFi下的IP。
如果WiFi状态正常,这个时候便可以拔掉网线,然后用Xshell重新连接树莓派WiFi的IP。
当然,如此这样还是不够的,比如在命令行输入date命令,你会看到时间是错的,因为centos默认的是UTC时区,下面需要更改时区,改为中国时区。
首先执行命令:
rm /etc/localtime #删除原来的时区文件
sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #把中国时区链接过去
无须重启,输入命令date发现直接生效。
到这里基本上系统算是安装完毕了,下一步的目标是做一个闹钟和空调遥控器,而且能够用手机随时远程控制室内设备。
闹钟设定
在ssh的命令行输入下面的命令:
yum install alsa* #安装关于音乐播放器的各种包
modprobe snd-bcm2835 #向内核加入声卡模块,使其识别声卡
aplay -l #列出当前的声卡,如下图
我们看到,树莓派只有card 0这一个声卡,当然如果有其他声卡,比如USB声卡,他会列出来card 1、card 2等等。
下面,我要让aplay播放一首歌,目前由于MP3的版权问题,暂不支持Mp3,但是可以支持常用的如wav格式的音乐。首先下载一个wav格式的音乐到/home文件夹下,我下载的是bjdldrz.wav这个音乐,之后的叙述统一用这个文件,大家可以随意更改,然后输入下面的命令:
aplay –D hw:0,0 /home/bjdldrz.wav #在这里,hw:0,0表示声卡为0号,device为0号。
但是这个一次只能播放一个音频,如果想播放一个之后再用命令行播放一个,输入下面的命令:
aplay -Dplug:dmix /home/bjdldrz.wav
这个播放是持续占用SSH的命令行的,播放时候不能执行其他命令了,除非新开一个窗口,如果不想持续占用命令行窗口,即后台播放,可以在命令后面添加&。
aplay –D hw:0,0 /home/bjdldrz.wav &
声音是播放了,但是音量特别低,怎么调高音量呢?有一个简单的方法,输入命令:
alsamixer –c 0 #这个时候会显示一个图形界面,如下图:
现在音量是79,按键盘的上和下就能调节音量。
当然,这里还有一个方法可以调节音量,具体执行命令如下:
amixer -c 0 controls #这个时候会列出一些声卡参数,如下图:
再执行命令:
amixer –c 0 cset numid=1,iface=MIXER,name=’PCM Playback Volume’ 300 #300这个可以根据自己情况调节,一般是不超过400。
到这里声音大小可以调节了,而且音乐也可以播放了,那就进一步做一个闹钟吧,设置每天早上7点半自动播放音乐,美滋滋。
设置闹钟首先需要了解一下sh脚本(关于脚本的开发,随后慢慢讲解),我们在home文件夹下直接vim新建一个play.sh,写入下面的内容:
#!/bin/bash
aplay –D hw:0,0 /home/bjdldrz.wav &
然后输入:wq保存退出,并赋予它执行权限:
chmod 777 play.sh
这样play.sh就可以运行了,然后我们把它加入到闹钟里面(上一节可是讲过一定要把时区设置成中国时区,不然你设置的闹钟的时间是UTC时间,可能会大半夜叫醒你哦)。执行下面的命令:
crontab –e
这个时候会显示出一个编辑页,在编辑页写入下面内容:
30 7 * * * nohup /home/play.sh > /dev/null 2>&1 &
编辑完毕后,保存退出,然后就开始美滋滋睡大觉等着音乐闹钟叫醒你吧!
家居智能机器人控制
随着树莓派越来越强大,通过树莓派开发心中的智能家居系统也越来越简单。树莓派3版本有1G内存,1.2GHZ频率,拥有操作系统的树莓派预留了40个可以驱动各种传感器和驱动器的 I/O 接口,所以使用树莓派作为机器人的控制器足以应对。树莓派和其他机器人的控制器有着本质的不同,因为树莓派有完善的操作系统,其他的只有控制系统,并且对 Python 语言支持的非常的好。所以使用 Python 语言可以快速地在树莓派上开发软件去控制机器人的传感器。树莓派还有能够运行人工智能相关算法的优势,比如可以在上面运行 SVM,能简单的对数据进行分类,将树莓派作为机器人的大脑是未来的一种趋势。
树莓派打造的机器人主要是利用GPIO接口去控制机器人的驱动和各种传感器,因为树莓派有操作系统,所以使用Python可以开发控制软件,现在有很多的库文件支持。树莓派的多个可编程的 GPIO(General Purpose Input/Output)接口,可以用来驱动各种外设,如传感器,步进电机等。目前在树莓派上流行的 GPIO 开发环境主要有两种,Python GPIO 和基于 C 语言的 wiringPi。目前比较推荐 Python GPIO,因为 Python 不仅上手简单,而且其解释语言的特性使得程序不用编译,对代码做了任何修改之后就能直接运行,极大方便了调试。
机器人分成四大部件:机器人控制系统,这部分有人称为是机器人大脑部分。机械部分,机器人都是要执行一定的任务的,这部分任务就是机械部分完成的。感知部分,机器人要不断的感知周围环境,并且通过感知进行信息或者数据的传输。驱动部分,机器人通过驱动部件链接机械和传感器,从而驱动机械部件执行一定的任务。
步进电机和超声波传感器都是协助树莓派实现功能的重要外设。编写的这些程序通过一定的工具烧进树莓派的TF卡中,通过 Python 编写相应程序后,可以驱动步进电机在不同时间正转和反转,从而带动相关连接部件的转动。
超声波传感器是利用超声波的特性研制而成的传感器。而安装了超声波传感器的智能机器人,在树莓派的控制下可以识别放在周围的障碍物,前后移动超声波测距仪,将收集的信号传输回到数据处理中心,数据处理中心会显示测得的距离,完全可以实现小车壁障的功能。
Shield系列连接扩展器
为解决某些树莓派产品并不具备全面的网络连接功能,Sixfab公司于是推出了基于树莓派的Shield系列连接扩展器,让人们可以更自由地打造智能家居环境。
Sixfab Shield系列共有五种型号,包括4G/LTE、3G、GSM/GPRS、GPS及Xbee标准,至于树莓派的兼容性,则包括RPi A、RPi 2、RPi 3及Zero,应用系统则支持Arduino、Linux、macOS、Windows及Android,能够充分满足不同用户的需求。
有了Sixfab Shield,树莓派爱好者可以更加方便地定制自己的系统和应用需求,不再仅仅局限于Wi-Fi和蓝牙连接,而是可以实现任何位置的无线控制,亦可以通过GPS数据实现IFTTT式的规则。所有Sixfab Shield都采用了micro USB接口与树莓派计算机连接,非常方便,另外也可实现一些其他应用形式,比如连接笔记本作为一个4G Modem,或是实现智能手机与电脑的点对点连接等等。Sixfab Shield每个模块的价格在19至99美元不等,约合人民币130至672元。