PiLarm: 便携式树莓派警报器

标签: 树莓派 硬件 DIY 报警系统 | 发表时间:2013-12-21 08:00 | 作者:克拉克101
出处:http://www.geekfan.net

我一直在寻找一些能给自己孩子带来教益的瞬间。当我五岁的儿子来寻求我的帮助,别再让他的弟弟偷偷溜进他的房间的时候,我突然灵光一现,发现这是教他关于输入、输出和其他一些编程知识的绝佳时机。而且让他在解决自己实际问题中学习这些也会相对容易。

pinopticonblockdiagram

我本来可以用很多不同的方法来建立一个简单的警报系统,但是我想要让这个系统是一体化的并且在功能上不止能满足我儿子最初的原始需求。选择树莓派作为控制器是因为它很容易连接到网络、能播放MP3格式的文件、可以和像摄像机这样的USB外围设备进行交互,而且它具有GPIO(通用的输入输出),这样就可以把它和按钮、传感器、灯这样的简单电子元件连接起来。

这个警报系统的源代码非常简单,你可以在我的 GitHub上查看。为了利用Linux系统下多线程的优势,我把任务分解了到两个Python脚本中。一个Python脚本(keypadd.py)负责监视小键盘上的有效编码。系统启动时被设置为”disarmed”状态。一旦检测到arm/disarm代码,系统状态就会因为一个在”armed.txt”文件中设置的字节发生翻转而改变。

keypaddflowchart1

第二个Python脚本(alarmd.py)利用树莓派的GPIO来监视PIR(无源红外线传感器)。如果检测到动作发生,脚本接着检查”armed.txt”文件判断系统是否产生警报。如果检测到动作的时候产生了警报,警报就会响起。

alarmdflowchart2

我建立这个警报系统来满足我自己的需求。下面的内容会一步步地指导你建立一个类似这样的系统。当建立系统的时候,一定要根据自己的需求来定制,比如可以增加激光绊线或者蜂窝式无线电等。

步骤 1:搭建树莓派

  • 尽管从头开始搭建树莓派超出了这个项目的范围,但是别担心,一些帮助还是会有的。你可以在网上找到一些教程,但是我建议你读一下Matt Richardson和Shawn Wallace合著的 《Getting Started With Raspbery Pi》。这本书不仅仅在PiLarm这个项目上会对你有所帮助,更会帮助你去发掘树莓派的各种功能,这样你才可能会把树莓派的功能结合到自己全新的、有趣的创造上面。

pilarm-gettingstartedrpi

  • 通过那些有关树莓派的指导,将你的树莓派连接到互联网。这样就可以从网上下载在接下来的几步中所需要的库文件和代码,树莓派也就能通过推特和电子邮件来发送检测到的入侵者的图片了。

步骤2:安装GPIO

这个库文件允许你控制树莓派的GPIO来使用PIR和键盘作为输入,旋转灯作为输出。在终端中使用下面三条命令来安装:

sudo apt-get update
sudo apt-get install python-dev
sudo apt-get install python-rpi.gpio

 步骤3:安装fswebcam

  • 如果你在使用第三方摄像头,比如Playstation Eye,那么fswebcam可以让你用它拍摄静态图片。如果你使用的是树莓派自带的摄像头,请参考树莓派官方的 安装说明,不需要安装fswebcaam。可以用下面的命令来安装fswebcam:

sudo apt-get install fswebcam

  • 你可以用这个命令手动拍摄照片: fswebcam -r 640×480 -d /dev/video0 testpictire.jpg。然后使用 “ls” 命令查看拍摄的照片是否出现在当前工作目录中。

步骤4:安装mgp123

  • mgp123是脚本”alarmd.py”用来播放”System armed(系统警报)”、”Motion detected.Please enter passcode(检测到物体移动,请输入密码)”等声音文件的命令行音频播放器。安装命令如下:

sudo apt-get install mpg123

 步骤5:添加Pilarm代码

  • 现在开始添加我创建的实现PiLarm功能的代码。它位于: https://github.com/BabyWrassler/PiLarm
  • 为了把代码放到没有头部没有显示器,只能通过互联网使用SSH进入)的树莓派中,你可以使用git。树莓派并不自带git,但是你可以通过命令安装:

sudo apt-get install git-core

  • 然后使用”clone”命令将代码下载到你的树莓派:

git clone https://github.com/BabyWrassler/PiLarm.git

  • 现在,你有了一个叫作PiLarm的目录,它包含PiLarm项目的python文件和音频文件。在/etc/rc.local文件中含有”exit 0″的行之前添加下面两行设置alarmd.py和keypadd.py为开机启动。

python /home/pi/Alarm/keypadd.py &
python /home/pi/Alarm/alarmd.py &

  • 请自己熟悉代码,将代码和以上的流程图比较,弄清楚代码中的语句是怎样运行的。
  • keypadd.py文件的第96行包含了用于给系统警报和解除警报的密码(1912)。第97 行的是关机密码(5764),是用来正常关闭树莓派使它可以拔下电源。
  • 如果你使用的是树莓派的摄像头组件,请返回去参考树莓派的官方指导查看你需要用哪些命令来替换alarmd.py中与fswebcam相关的命令。

步骤6:设置Twitter

  • https://dev.twitter.com/apps/new页面中新建一个”App”来获得Twitter的API接口密钥。
  • 在”Access Level”中,选择访问权限的等级设置为”Read and Write”。这样之后你会获得”Consumer Key”, “Consumer Secret”, “Access Token”, “Access Secret”的值,而这些都是需要在创建TweetPony API对象的函数中插入的(插入位置在alarmd.py文件的第10行,默认内容为 “api = tweetpony.API(consumer_key = “abcd”, consumer_secret = “efgh”, access_token = “ijkl”, access_token_secret = “mnop”)。

步骤7:焊封面板套件Perma-Proto

pilarm-schematic2

  • Adafruit公司的面板套件Perma-Proto非常棒,因为它自带有适合树莓派上通用输入输出(GPIO)的连接器。树莓派上的引脚通过连接器固定在板子上,这让连接其余的部件变得非常简单。
  • 将树莓派的3.3V电源接到Perma-Proto的正极上,树莓派的地线接到Perma-Proto的接地端。接下来的问题就是熟练、小心的布线,来把所有部件连接起来。我使用公引脚和母引脚作为连接器连接无源红外线传感器之类的器件,但你也可以把它们直接焊接起来。
  • 注意音频放大器是在Perma-Proto板上的,从Perma-Proto的电源端获得电源,它并没有通过GPIO接头连接到树莓派上。音频线单独连接到放大器上,扬声器连接到放大器的螺丝接线端上。
  • 键盘的连接线很短,因此在焊封前请一定设计好你的布局。

步骤8:完整的系统测试

  • 现在你一定很想把这些都放进一个盒子里完成这个项目了,但是在你首先还得测试各个组件是否工作正常,因为一旦把它们放到一个狭小的空间中封装起来,出错的时候再解决故障就变得麻烦多了。
  • 如果你的旋转灯出问题了,可能的一个原因是极性连接错误(polarity issue)。我在面包板上测试了自己的系统,手动把TIP120三极管接到电源或地端看看是否能解决问题。
  • 如果是代码有问题,可能是一些组件连接到了错误的引脚,也可能是你忘记了设置一些常量的值,比如在第六步中要设置Twitter的一些键值。解决代码的错误,你可以使用Python的”print”命令来打印一些变量的内容到控制台,或者在代码中将一些事件标记为已执行。为了查看alarmd.py或者keypadd.py的控制台输出,你需要通过SSH进入到树莓派中通过命令”sudo python keypadd.py”或者”sudo python alarmd.py”自己运行这些脚本。

步骤9:安装外壳

pilarmmostlyempty

  • 大多数警报系统都被安装成永久固定不变的,但是我设计的这套系统是便携式的,这样可以很容易地扩展功能和重新作为其他用途。最后我选择了能把所有多西都装进去的最小的盒子。
  • 我建立第一个PiLarm系统的时候树莓派的摄像头组件还不能使用,但是这些功能马上就要来了。如果你使用这个组件,弄清楚你要怎样加载它。如果你只是直接在外壳上钻一个孔把镜头露出来,你可能会使摄像头的视角范围变小。最好要么把摄像头安装在一个转轴上,要么把整个装置放置在一个三角架上来确保摄像头的视角。
  • 如果你使用的是USB摄像头,直接用双面胶把它粘到外壳外面就行了,最好把露在外面的线孔都盖住。
  • 外壳倒过来用效果更好,所以盖子的位置其实是底部。
  • 在放置组件之前,要在外壳上为树莓派的螺母柱、Perma-Proto板的螺母柱、为扬声器预留的网格孔、LED灯、PIR、USB插孔、摄像头和旋转灯的连接线钻孔。可以不这样,但你肯定不想在某个连接器上掉下了钻孔留下的碎屑或者不小心钻透了某个很昂贵的器件。
  • 键盘的连接线需要钻一排相互挨着的1/8″(10.3mm)的孔,用美工刀切掉相互之间的材料,做成一个槽。
  • 双面胶会把摄像头和旋转灯固定到合适的位置。键盘可以用粘合剂。扬声器被螺栓固定到外壳上,Perma-Proto板和树莓派使用电路板的螺母固定到外壳上。
  • 选择放置电路板的位置时,确保会为连线留下足够的空间。不要把连接线扭在一起或者在连接器上拉得过紧。连接线应该有适当的弯曲,连接器不应该承受任何拉力。PS3摄像头上的连接线很长,你可以把它整齐地盘绕成圈以免带来麻烦。

步骤10:和他人分享,激发他人的兴趣

恭喜你终于完成了!给我们发来你已经完成的系统的照片或者视频,让我们知道你是怎么个性化设计方案来满足自己的不同需求的。把你的杰作展示给那些你认为会因此产生灵感而成为创作者的人!

PiLarm: 便携式树莓派警报器,首发于 极客范 - GeekFan.net

相关 [pilarm 便携 树莓派] 推荐:

PiLarm: 便携式树莓派警报器

- - 极客范 - GeekFan.net
我一直在寻找一些能给自己孩子带来教益的瞬间. 当我五岁的儿子来寻求我的帮助,别再让他的弟弟偷偷溜进他的房间的时候,我突然灵光一现,发现这是教他关于输入、输出和其他一些编程知识的绝佳时机. 而且让他在解决自己实际问题中学习这些也会相对容易. 我本来可以用很多不同的方法来建立一个简单的警报系统,但是我想要让这个系统是一体化的并且在功能上不止能满足我儿子最初的原始需求.

树莓派初级折腾

- - 极客范 - GeekFan.net
前些天在网上买了一个二手的树莓派 裸板子190包邮 (新品套装280 360什么的太贵了啊岂可修). 到手目测没有问题 主IC还有一个铜质散热片 不错. 电源就用买移动电源送的充电器(标称5v 1000mA输出 )和数据线. SD卡么… 把很久没玩的PSP掏出来 把马甲卡中的东西倒到记忆棒里 记忆棒插回PSP TF卡装到转接卡上 (话说还是个class10的呢).

安装树莓派 Raspberry PI

- - CSDN博客综合推荐文章
树莓派终于到货了,是这个样子的. 上面有一行日期是 Raspberry PI (c) 2011.12. 选择这个镜像: RASPBIAN Debian 2014-01-07. 780M的压缩包,很大的样子. 似乎还有个NOOBS的安装方式,完全无感. 顺便展示一下SD卡,通过查阅可用SD卡列表,似乎是支持个别的64G Class10的卡的,就像这个,编号是 Transcend SDXC 64G Class10 TS64GSDXC10.

树莓派 1602A显示屏

- - 编程语言 - ITeye博客
树莓派 1602A显示屏. 下面代码本人测试过没有问题,开始运行完屏幕上什么也没有显示出来,后来调整了下电位器可以了,所以大家如果按着下面的做出来之后运行什么也没有显示的话,记得调整下电位器. VO,液晶对比度调节,接电位器中间的引脚,电位器两边的引脚分别接5V和接地. RS,寄存器选择,接GPIO14.

在树莓派上用python控制LED

- - 极客范 - GeekFan.net
初步学习RPi.GPIO模块的过程中写了一个控制8个LED的模块,基本上只是一个对RPi.GPIO的一个封装. 一个已经安装配置好了的树莓派. 连接控制树莓派所用的其他必须设备. 按照电路图所示,在面包板上进行连接. 首先得确定RPi.GPIO已安装. 最新的系统已经自带了,如果没有的可以使用命令.

树莓派的10个最佳资源

- - 极客范 - GeekFan.net
如果还没有找到答案,你是时候要从线上或者线下的资源寻找一些想法和项目,来帮助你将树莓派的潜能完全发掘出来. 树莓派没有内置的操作系统,也经常甚至连存储设备都没有. 但树莓派已经被证明了是一个非常成功的小型计算设备. 而很多学校(树莓派的目标用户),狂热爱好者,和那些想要打造一个小型家庭影音中心(包括其他设备)的用户都将树莓派作为他们的一个选择.

树莓派2 折腾记录

- - 操作系统 - ITeye博客
淘宝买来的 树莓派2代 B型. 这玩意还分国产和UK产,价格差距在10-20左右 不过不超过200. 另外就是要单独配个 5V2A 的电源,可选外壳和散热片,必备的是 TF 卡,可以用8G,我直接用的 32G TF 卡. 这玩意安装比较麻烦,简单的说第一次进系统你需要显示器,他只有HDMI接口,可以考虑用 HDMI转VGA连显示器,要么就直接HDMI连液晶电视(我就用的电视装的).

树莓派快速入门指南

- - C++博客-牵着老婆满街逛
转载自:http://segmentfault.com/a/1190000002587653. 接触树莓派已经有一年多的时间了,主要用于Linux服务器. 前一段时间树莓派2发售了,树莓派又小火了一把. 现在我介绍一下我的经验,希望对于各位读者有多帮助吧. 不过还是建议用吧,能省下不少工作. 这里下载喜欢的镜像,我选择的是RASPBIAN,Debian大法好.

树莓派搭建 HomeKit 服务

- - Harttle Land
最近总有朋友问我 Apple Home 是怎么搭建的,这篇文章提供给从零开始搭建 Apple Home 的朋友. 可以自选传感器、空气净化器、以及智能开关等设备,通过树莓派接入到苹果内置的 Home 应用中. 从 iOS 8(2014年9月)开始,苹果内置了 名为 Home 的应用,让 iPhone/iPad 可以控制智能设备.

树莓派驱动LCD12864显示屏

- - 开源软件 - ITeye博客
适用于ST7920控制器的LCD12864显示屏,使用wiringPi GPIO库,C语言编写. 采用LCD12864的8位并行驱动方式,与树莓派GPIO连接已在程序开头处定义. 使用wiringPi控制GPIO,按通讯协议向LCD发送指令以及要显示的数据即可显示. 主要由进制转换、字符编码转换、发送数据构成.