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

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

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

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

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

步骤 1:搭建树莓派

  • 尽管从头开始搭建树莓派超出了这个项目的范围,但是别担心,一些帮助还是会有的。你可以在网上找到一些教程,但是我建议你读一下Matt Richardson和Shawn Wallace合著的《Getting Started With Raspbery Pi》。这本书不仅仅在PiLarm这个项目上会对你有所帮助,更会帮助你去发掘树莓派的各种功能,这样你才可能会把树莓派的功能结合到自己全新的、有趣的创造上面。
  • 通过那些有关树莓派的指导,将你的树莓派连接到互联网。这样就可以从网上下载在接下来的几步中所需要的库文件和代码,树莓派也就能通过推特和电子邮件来发送检测到的入侵者的图片了。

步骤2:安装GPIO

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

1

2

3

sudo apt-get update

sudo apt-get install python-dev

sudo apt-get install python-rpi.gpio

步骤3:安装fswebcam

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

安装fswebcam

1

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(检测到物体移动,请输入密码)”等声音文件的命令行音频播放器。安装命令如下:

安装mpg123

1

sudo apt-get install mpg123

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

安装git

1

sudo apt-get install git-core

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

下载PiLarm代码

1

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

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

设置开机启动脚本

1

2

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

  • 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:安装外壳

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

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

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

转载于:https://my.oschina.net/u/4047409/blog/3060348

用树莓派DIY便携式警报器相关推荐

  1. esp32树莓派_用树莓派 DIY 宠物自动喂食机,再也不用担心家里的萌宠了

    由于公众号文章的推送规则已经改成了不按照发布时间排序,所以为了大家能够准时收到我们的文章推送,请记得猛戳右下角的「在看」,并点击公号主页右上角的" ... "将 程序员极客实验室  ...

  2. 20210728用树莓派 DIY 四轴飞行器(硬件、故障保护、遥控、飞行模式)

    https://mbb.eet-china.com/forum/topic/92385_1_1.html 20210728用树莓派 DIY 四轴飞行器(硬件.故障保护.遥控.飞行模式) 2021-7- ...

  3. 为了杀蚊子,这位博士用树莓派DIY了一把激光枪!网友:伤到人怎么办?

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源:学术头条 本文约1057字,建议阅读3分钟. 本文介绍了国外博 ...

  4. 树莓派4bwlan驱动_【DIY纯手工】用树莓派DIY的桌面电脑

    树莓派是每一个技术男都想拥有的一款开发板,他功能强大,他强大的40pin扩展接口可以连接任何硬件,是学习智能硬件.软件编程的最优选择. MAKER:Samuel_Alexander/译:转自趣无尽 C ...

  5. 树莓派环境处理_一种基于树莓派的便携式的环境监测系统的制作方法

    本发明涉及通讯技术领域,尤其涉及一种基于树莓派的便携式的环境监测系统. 背景技术: 树莓派是尺寸仅有信用卡大小的一个小型电脑,可以将树莓派连接电视.显示器.键盘鼠标等设备使用.树莓派能替代日常桌面计算 ...

  6. 用树莓派DIY波士顿机器狗,帮你省下50万:教程开源,人人皆可上手

    鱼羊 晓查 发自 凹非寺  量子位 报道 | 公众号 QbitAI 53万一只的波士顿动力机器狗,玩不起怎么办? 不如利用开源项目,拿树莓派DIY一个,成本不到4000元. 这么一站,是不是就有波士顿 ...

  7. 树莓派存储方案_还在用笨重的NAS存储服务器?你可以自己动手用树莓派DIY一个...

    原标题:还在用笨重的NAS存储服务器?你可以自己动手用树莓派DIY一个 树莓派就像一台微型的电脑,麻雀虽小五脏俱全.利用它可以开发出各种各样的功能,其中就包括搭建一台迷你号的NAS网络存储服务器! 传 ...

  8. python设计编程体验中心_树莓派DIY体验中心创业计划书

    树莓派 DIY 体验中心创业计划书 第一章 绪论 1.1 创业背景 之所以创立树莓派 diy 体验中心,有如下几个原因: ( 1 ) 创业团队成员均为电子产品爱好者, 平时有自己设计制作低音炮, 小机 ...

  9. 【AI简报20210820期】Apollo“汽车机器人” 具备L5级自动驾驶能力、树莓派DIY智能无臭猫便盆...

    导读:这期的干货有点大,诸位看官且忍受一下~ AI 简报 Github 地址: https://github.com/Lebhoryi/AI-News-weekly 本文一共 3600 字,通篇阅读结 ...

  10. 不会编程的外国小姐姐,3天、850块,徒手用树莓派DIY了个数码相机

    金磊 白交 发自 凹非寺  量子位 报道 | 公众号 QbitAI 不会编程,也能用树莓派DIY? 这个可以有. 最近,油管上一位完全「编程小白」的小姐姐,在发现树莓派推出了一款新的相机模块后,心血来 ...

最新文章

  1. python 获取文件列表
  2. oracle plan_table,Oracle 执行计划 提示 'PLAN_TABLE' is old version 解决方法
  3. Linux中close的用法,linux下 open() write() read() close函数
  4. hdu 5299——Circles Game
  5. 华农java实验7_国家实验教学示范中心
  6. [原创]利用Powerdesinger同步数据库的方法说明
  7. python的底层实现,Python封装底层实现原理详解(通俗易懂)
  8. java翻转字符串中的单词
  9. HDU1287+枚举
  10. css宋体代码_family【CSS 字体】(宋体 黑体 微软雅黑)CSS文字字体
  11. 百胜中国供应链管理中心正式开工落户上海嘉定;百度发布第六代量产无人车 | 美通企业日报...
  12. C++ STL 思维导图,脑图,树形图。
  13. 网记者采访时,一直称李某萍为“妻子”
  14. 华南农业大学C语言程序设计(实验六)
  15. 包裹侠查快递单号_包裹侠快递查询
  16. 基于51单片机的故障灯检测
  17. 程序员来聊一聊信用卡(一)——年轻人该不该办理一张信用卡
  18. Web前端开发实训 -- 弹球王小游戏
  19. json字符串转成 json对象 json对象转换成java对象
  20. Cocoapods打包SDK

热门文章

  1. 什么是支付账户、备付金、网络支付、银行卡清算、贷记卡、代扣、代付....
  2. 【系统分析师之路】第十一章 系统分析师之期中测试(章节重点)
  3. java 图像识别颜色块_Java opencv识别图片中指定颜色
  4. 文本挖掘基本流程概述 分词和TF-IDF值计算方法介绍
  5. 微信公众号报错40125
  6. 互联网信息安全与加密技术
  7. bzoj3332: 旧试题
  8. checkbox不全部选中,会跳出提示(这个是我记录的重点)
  9. ios 画带有箭头的线_iOS 箭头类型视图的几点心得
  10. 字节跳动的 8 轮视频面试流程