书名:来吧,一起创客
ISBN:978-7-115-52746-2
本书由人民邮电出版社发行数字版。版权所有,侵权必究。
您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。
我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。
如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。
著 刘金鹏 陈众贤 裘炯涛
责任编辑 吴晋瑜
人民邮电出版社出版发行 北京市丰台区成寿寺路11号
邮编 100164 电子邮件 315@ptpress.com.cn
网址 http://www.ptpress.com.cn
读者服务热线:(010)81055410
反盗版热线:(010)81055315
本书基于3位作者多年的中小学创客教育经验编写,收录了12个生动有趣的学生创客获奖作品,如戒烟笔筒、智能骑行安全帽、减肥沙发等项目,以中小学生的视角去分析现实生活中存在的痛点和需求,通过设计外形、搭建电路、编写程序等几个步骤,由浅入深地教学生使用智能硬件完成创客项目制作。本书所有项目均提供了Mind+和Mixly两个软件版本的程序代码,因此学生既可以挑选适合自己的软件进行学习,也可以同时对照两种程序进行学习,进而可以轻松地理解智能项目设计的过程与步骤,充分体验创造的乐趣。
本书操作步骤详细简明、图片清晰、项目可操作性强,可以作为中小学生学习创客项目制作的进阶教程,也可以作为有意开展STEAM课程的学校和机构的教学用书。
早些时候,我收到了一张明信片,上面写着“The more you learn,the more you know. The more you know,the more you forget. The more you forget,the less you know. So why bother to learn.”。对啊,人不可能在读完书之后记住里面的每一个知识点,那么,反正读了书也是要忘记的,是不是就不要读书?我一直在思考阅读的意义,在我看来,阅读不应该是急功近利的,更应该是一个潜移默化的过程,不断积累,不断消化,最终真正内化的知识和思考才是读书带来的最宝贵的东西。
创造这件事情也是如此。很多时候,你的作品最终会因为时间久了、零部件故障而失效,或者因为放在书架上层而被遗忘,还有可能因为制作新作品时缺少零件而直接被“旧物活用”。它们从这个世界“消失”了,但能说它们没有存在的价值吗?当然不能,将创造灵感在脑内具象化的能力、遇到问题尝试各种解决方案不屈不挠的毅力……这些都已经在不知不觉中变成了你自己的“功夫”。
近年来,创客教育在我国作为一门新生课程,大有逐渐推广开来的势头。大创客们精益求精、更上层楼,小创客们也不甘落后、一路前行。国内许多从业的创客教师们为此付出了很多努力,他们勤于开拓,迅速积攒教学经验,不断挑战项目制作和创意创新,本书的3位作者就是这一行人中非常优秀的几位。他们整理了众多丰富精彩的创造实例,从“实战”的角度出发,分享了不同视角下创客作品的创意来源及制作方法,并辅以对各个具体案例的细致说明和制作方法的指导,让读者可以更好地学习并实践在自己的创意实践中。这种剖析式的辅导,可以让更多的人了解创客作品的“从无到有”,是非常宝贵的分享。
遇到问题不慌张的淡定,面对障碍不畏惧的自信,跳出思维的围墙、创意地解决问题的能力,可能才是创客教育为孩子提供的最宝贵的教育。
在创客活动中,我们经常强调“开源”和“分享”,因为人们在创造的过程中,必然用到很多不同工具产品的图形和模型,如果每个人都从零开始去设计这些工具,会带来很多的重复劳动,既没有必要,又浪费精力。
开源社区的存在,为跳过“重复‘造轮子’”的阶段提供了可能。在开源社区中,创客们会把自己设计的图形或模型以通用文件的形式发布出来;需要使用这些文件的人,只要遵循一定的开源协议,就可以使用这些文件,直接在此基础上进行改造和创新,迅速进入“造车”阶段,这对于创新的飞速发展有着非同一般的意义。
创客们以分享技术、交流思想为乐,而以创客为主体的社区则成了创客文化的载体。创客社区让原本一件独立完成的创造活动得以分享、交流。创客们在这里公开、分享各自的创意和想法,让大家有机会看到更多超乎想象的东西。
我们作为主力运营的DF创客社区从2013年至今,在6年多的时间里,累计了4万多的注册用户,得到了很多创客的大力支持。他们倾情参与到社区的内容贡献中,还有不少从事创客教育的老师也参与到DF创客社区的管理维护工作中。本书的作者们也是这其中的先锋和代表,他们不吝分享,在DF创客社区不断贡献着很多质量非常高且极具启发性的课程和项目。期待在未来,不论是线上开源的分享,还是集结精华出版成书,他们能带来更多令人直呼精彩的分享。
在开源硬件领域,有一句很文艺的说法:“Arduino能让你领略用代码操控现实的魔力”,我想这本书也许就是你的“魔法书”。
DF创客社区 龚晨
2019年12月
近年来,随着我国对科技强国战略的逐渐重视,创客教育和STEAM教育得到了蓬勃发展。创客教育通过教授开源软、硬件等知识,鼓励学生综合运用各学科知识,把他们自己的奇思妙想变成现实,是一种着眼于未来的教育; STEAM教育则鼓励学生在科学、技术、工程和数学等领域的发展和提高,让学生以学科整合的方式认识世界,运用跨学科思维解决现实问题,提升他们的逻辑思维能力和解决问题的能力。可见,它们的核心都是综合运用各学科知识发现和解决现实问题,而这一个个问题的解决最终又全都聚焦到了一点上:学生作品。
作为一名普通的中小学信息技术教师,我大概从2014年开始接触创客教育,2016年辅导两位学生获得全国首届校园创客大赛一等奖。近年来,我辅导中小学生参加各级各类创客大赛获奖五十余项,大多用Arduino作为辅导学生参加各级各类创客大赛的工具。这期间,北京师范大学教育学部创客教育实验室推出的图形化编程软件米思齐(Mixly)大大降低了基于Arduino的创客作品编程难度,使得广大的中小学生用Arduino制作创客作品不再是一件困难的事情。随着越来越多的中小学生开始接触以Scratch为代表的图形化编程语言,教师在教学中迫切需要一种延续这种编程语言风格的软件,来对Arduino等开源硬件进行编程。Mind+就是这样一款基于Scratch 3.0开发的青少年编程软件,它支持Arduino、micro:bit、掌控板等各种开源硬件,可以使学生仅拖动图形化程序块便能完成编程,从而轻松体验到创造的乐趣。
基于Mixly和Mind+这两款优秀的编程软件,我和学生一起创作出了许多富有创意和想法的作品。经常有老师或家长咨询我如何引导孩子制作创客作品,于是我就想把这些作品的创作过程分享出去,以期让更多的学校和孩子了解创客作品的创意来源及制作方法。偶然的时机,我和来自杭州捣鼓车间的陈众贤以及杭州听涛小学的裘炯涛老师说了自己的想法,他们也是常年辅导学生参加创客竞赛的教师,大家一拍即合,决定把这件有意义的事情做下去。这就是我们编写这本书的初衷和想法。希望拿到这本书的读者能在模仿的基础上不断创新,做出创意十足的作品。
本书可供开展STEAM教育和创客教育的学校或机构作为教学用书(每节课基本上需要两个课时),也可以作为对科技感兴趣的孩子的课外读物。希望这本书能让家长或老师在指导孩子时多一些参考,同时也能让学校里涌现出更有能力实现自己奇思妙想的小创客。
浙江省杭州市余杭区安吉路良诸实验学校
刘金鹏
2019年11月
首先感谢北师大傅骞教授带领的Mixly团队和DFRobot公司的Mind+团队,为了这本书的编写,他们不厌其烦地为我们升级软件,满足我们各种“不合理”的需求。他们为青少年创客教育设计了如此优秀的工具,让更多的孩子能够接触开源硬件,学习编程并设计有趣的创意作品,为创客教育和STEAM教育的普及提供了可能。
感谢DFRobot创客社区的伙伴们:Jane(余静)为本书提供了高品质硬件支持,并就本书的框架和内容设计给出了宝贵的意见;Joanna(李玲雪)为我们设计了很多漂亮的电路图素材;Ashley(龚晨)为本书及配套案例的社区推广提供了大力支持。虽然大家各自工作繁忙,但当我们有困难时,他们总能第一时间响应,并提供了超出我们预期的帮助。
感谢DFRobot的工程师,他们为Arduino、micro:bit、掌控板的周边生态建设做了很多工作,设计了大量的电子模块。
感谢梁立昊、李奕成、南赫、陈润声、江牧莼、沈宗杰、孙优力、沈一心、张逸然、叶康辰等几位小朋友,他们不仅见证了这本书从无到有的过程,还参与了部分案例的创意与设计。正是因为孩子们对创客教育的热情与专注,我们才有动力去写这本书。
感谢人民邮电出版社吴晋瑜老师的帮助,在我们撰写本书的过程中,她仔细审读了每一章的内容,并提供了很多宝贵的意见。
要感谢的人太多,由于篇幅关系,不能一一列举。最后感谢创客教育,让我们在这条路上遇到越来越多志同道合的伙伴!
本书由异步社区出品,社区(https://www.epubit.com/)为你提供相关资源和后续服务。
本书提供配套视频资源,请在异步社区本书页面中单击 ,跳转到下载界面,按提示进行操作即可。注意:为保证购书读者的权益,该操作会给出相关提示,要求输入提取码进行验证。
作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎你将发现的问题反馈给我们,帮助我们提升图书的质量。
当你发现错误时,请登录异步社区,按书名搜索,进入本书页面,单击“提交勘误”,输入勘误信息,单击“提交”按钮即可,如下图所示。本书的作者和编辑会对您提交的勘误进行审核,确认并接受后,你将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。
我们的联系邮箱是contact@epubit.com.cn。
如果你对本书有任何疑问或建议,请你发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。
如果你有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们;有意出版图书的作者也可以到异步社区在线提交投稿(直接访问www.epubit.com/selfpublish/submission即可)。
如果你所在的学校、培训机构或企业,想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。
如果你在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接发邮件给我们。你的这一举动是对作者权益的保护,也是我们持续为你提供有价值的内容的动力之源。
“异步社区”是人民邮电出版社旗下IT专业图书社区,致力于出版精品IT技术图书和相关学习产品,为作译者提供优质出版服务。异步社区创办于2015年8月,提供大量精品IT技术图书和电子书,以及高品质技术文章和视频课程。更多详情请访问异步社区官网https://www.epubit.com。
“异步图书”是由异步社区编辑团队策划出版的精品IT专业图书的品牌,依托于人民邮电出版社近30年的计算机图书出版积累和专业编辑团队,相关图书在封面上印有异步图书的LOGO。异步图书的出版领域包括软件开发、大数据、AI、测试、前端、网络技术等。
异步社区
微信服务号
近几年,创客圈出现了不少适合中小学生使用的图形化编程软件。在本书编写过程中,我们会用两款比较有代表性的软件Mixly和Mind+进行程序编写。这两款软件各有特色,在国内有着庞大的用户群,普及度较高。
Mixly软件是在北京师范大学教育学部创客教育实验室负责人傅骞老师的带领下,由其团队自主开发的一款免费开源的图形化编程工具。从软件支持(编程语言)上看,该软件支持C、JavaScript、Python等编程语言;从硬件支持上看,该软件支持Arduino、ESP8266、ESP32、micro:bit、掌控板等常见的开源硬件,有着良好的兼容性和扩展性。Mixly软件界面如图1-1所示。
图1-1 Mixly软件界面
Mind+是一款基于Scratch 3.0开发的青少年编程软件,支持Arduino、micro:bit、掌控板等各种开源硬件,支持图形化程序块编程,还支持用Python、C、C++等高级编程语言进行程序实现,不仅可以让低年龄段初学者轻松入门编程,也可以满足有一定基础的学生进阶的需求。Mind+软件界面如图1-2所示。
图1-2 Mind+软件界面
Mixly软件是基于Java开发的,有着跨平台运行的良好特性。Mixly软件支持在Windows系统和macOS系统上运行,但尚不支持在平板计算机、智能手机等设备上运行。
Mixly支持Windows 7及以上系统。下载安装包之后,将其解压到非中文路径下,如“D:\Mixly”。双击打开Mixly.exe即可启动软件,如图1-3所示。为了方便日后使用,读者也可以将该文件的快捷方式发送到计算机桌面上,这样下次就可以直接在桌面上打开Mixly了。
图1-3 Mixly软件目录
如果读者是第一次使用Arduino开发板,还需要安装开源硬件驱动。目前,开源硬件的驱动主要有CH341和CP2102,驱动程序在Mixly/arduino/drivers目录中,如图1-4所示。读者可以根据实际使用的开发板的串口芯片选择相应的驱动,也可以安装两种驱动。
图1-4 Windows系统安装驱动程序
下载Mixly macOS版本之后,将软件解压到任意目录。Mixly macOS版本的目录如图1-5所示。双击Mixly.jar即可启动软件,软件界面如图1-6所示。
图1-5 Mixly macOS版本软件目录
图1-6 Mixly macOS版本的软件界面
如果读者是第一次使用Arduino开发板,还需要安装开源硬件驱动,目前开源硬件的驱动主要有CH341和CP2102,驱动程序在mixly/drivers目录中。图1-7所示的是macOS系统安装驱动程序。读者可以根据实际使用的开发板的串口芯片选择相应的驱动,也可以将两个驱动都安装上。
图1-7 macOS系统安装驱动程序
在Mixly软件中编写程序,首先需要在界面右下角选择要使用的开源硬件板卡,如图1-8所示。在本书中,我们会用到Arduino Uno、Arduino Leonardo、Arduino Handbit(掌控板)等硬件。
图1-8 选择板卡
用数据线将Arduino Uno连接到计算机上,如图1-9所示,选择对应的端口,如图1-10所示。
图1-9 将Arduino Uno连接到计算机上
图1-10 选择端口
试着在Mixly中编写13号管脚闪灯程序,并且同步查看图形块对应的C语言代码,如图1-11所示。尤其需要注意的是,不需要在Mixly中添加主循环模块,右侧视图中的图形块默认就是在主循环之中。
图1-11 Mixly编写闪灯程序
编写好程序后,单击工具栏上的“上传”按钮,稍等片刻,下面的编译信息区就会输出“上传成功!”的消息,如图1-12所示。
图1-12 Mixly上传程序
程序上传完成后,我们就可以看到Arduino Uno上连接到D13号管脚的LED灯开始闪烁,如图1-13所示。
图1-13 Arduino Uno板载13号LED灯开始闪烁
编写程序,从D5管脚读取DHT11温湿度传感器的温度值。程序上传完成后,单击软件界面右下角的“串口监视器”,如图1-14所示。
图1-14 串口监视器在界面右下角
打开“串口监视器”窗口后,可以看到温湿度传感器测到的温度值,如图1-15所示。串口调试是编程中非常实用的工具,可以帮助我们通过串口调试查看传感器的读数、变量的值等,以快速找出程序中的问题。
图1-15 Mixly通过串口监视器查看传感器读数
Mind+软件支持在Windows系统和macOS系统上运行,也支持直接在浏览器中在线运行。在本节中,我们将介绍如何在Windows系统和macOS系统下安装Mind+。
Mind+支持Windows 7及以上系统。从Mind+官方网站下载安装包之后,双击进行安装即可,如图1-16所示。
图1-16 Windows系统Mind+安装过程
Mind+支持在macOS系统上进行安装。从Mind+官方网站下载好安装包之后,双击打开,然后根据提示将Mind+软件拖动到Applications目录中即可完成安装,如图1-17所示。
图1-17 macOS系统Mind+安装过程
Mind+软件有两种模式:一种是实时模式,另一种是上传模式。实时模式是基于Scratch 3.0的,并且支持部分功能与硬件交互。但是,在这种模式下,硬件必须连接计算机才能运行,不能脱机运行,界面如图1-18所示。
图1-18 Mind+实时模式
上传模式支持的硬件较多,程序上传后就存储在开发板中,可以脱机运行,界面如图1-19所示。本书所有项目的程序实现均默认使用上传模式,后续章节不再赘述。
图1-19 Mind+上传模式
在Mind+中编程,首先选择要用到的主控板和传感器,单击Mind+界面左下角的进行选择:在主控板上选择常用的“Arduino Uno”,如图1-20所示。
图1-20 在Mind+中选择主控板
在Mind+软件的菜单栏选择 “连接设备”→“COM×-CH340”,以连接Arduino Uno开发板,如图1-21所示。注意,COM后面的数字×可能会因计算机不同而有所不同,此处是COM5。后文用到的CH340可能会因为硬件驱动芯片不同而有所不同,如CP210x。如果找不到相应的设备,可以选择“一键安装串口驱动”,安装设备的驱动。
图1-21 在Mind+中连接开发板
拖动左侧模块编写闪灯程序,将设置数字管脚[1]13和等待语句放到循环之中,程序如图1-22所示。
图1-22 Mind+编写闪灯程序
编写完成后,单击界面右上角的“上传到设备”,将程序上传到开发板中。这个程序上传完成之后,我们就可以看到Arduino Uno上的D13号LED灯开始闪烁。
串口调试是我们进行创客编程时经常需要用到的工具。通过串口调试,我们可以方便地看到传感器的数据、变量等。
编写程序从D5管脚读取DHT11温湿度传感器的温度值,完成程序上传后,单击界面右下角的打开串口,如图1-23所示。
图1-23 编写读取温湿度值的程序
在Mind+界面右下角的串口监视区,可以打开串口监视器也可以关闭输出,如图1-24所示。
图1-24 Mind+通过串口监视器查看传感器读数
[1] 关于“管脚”和“引脚”的说明:Mind+软件中称为“引脚”,而Mixly软件中称为“管脚”,实际上两者代表的是同一个意思,本书中如无特殊说明,统一称为“管脚”。
我们背着背包走在路上时,难免会碰上小偷。小偷会趁人不注意,偷偷拉开背包拉链,窃取财物。为了防止此类事件的发生,我们打算设计一款防盗背包。当我们背着它走在路上时,如果有小偷从后面偷偷拉开拉链,就会触发警报。但如果是我们自己想要打开背包,就不会触发警报。
在本节中,我们通过多种传感器来设法解决这一问题。作品成品如图2-1所示。
图2-1 防盗背包成品
要实现防盗背包的功能,我们需要解决以下几个问题:检测背包拉链是否被拉开、判断拉开背包的是自己还是别人,以及检测到有小偷拉开背包时触发警报。
要检测背包拉链被拉开,只需在拉链上安装一个小磁铁,在背包内部拉链合上的位置安装一个磁感应传感器。当拉链合上时,磁感应传感器检测到磁力,说明拉链处于正常合上状态;当拉链被拉开时,磁感应传感器检测不到磁力,说明拉链被拉开了,就让蜂鸣器发出警报声!
那如何判断拉开背包的是自己,还是别人呢?我们可以在背包的背面安装环境光线传感器。由于背包被我们的后背遮挡,环境光线传感器检测到的光线就会比较暗;如果拿下背包,环境光线传感器检测到的光线就会比较强。根据这个原理,我们可以检测打开背包的人是自己还是小偷。但是这样又会面临一个新的问题:如果是在晚上,不管是背着背包,还是取下背包,环境光线传感器检测到的光线都会比较暗。我们可以在背包后面加一个安全模式按钮,当按下按钮时,进入安全模式,背包后面的照明灯打开,这时环境光线传感器检测到的光线又会比较亮了,所以这时打开背包不会触发警报,同时照明灯光还能方便我们取东西。
防盗背包的设计草图如图2-2所示。
图2-2 防盗背包的设计草图
我们根据设计思路准备好制作防盗背包所需的元件,如表2-1所示。
表2-1 制作防盗背包所需的元件
元件图片 | ![]() |
![]() |
![]() |
---|---|---|---|
名称 | Arduino Uno主控板 | Arduino Uno传感器扩展板 | 磁感应传感器 |
数量 | 1块 | 1块 | 1个 |
说明 | 主控板,用来烧写程序 | 扩展板,方便连接传感器 | 连接到Arduino Uno控制器的D8管脚 |
元件图片 | ![]() |
![]() |
![]() |
名称 | 按键模块 | 环境光线传感器 | 蜂鸣器 |
数量 | 1个 | 1个 | 1个 |
说明 | 连接到Arduino Uno控制器的D2管脚 | 连接到Arduino Uno控制器的A0管脚 | 连接到Arduino Uno控制器的D12管脚 |
元件图片 | ![]() |
![]() |
|
名称 | WS2812 RGB LED灯带 | 电池盒 | |
数量 | 1条 | 1个 | |
说明 | 连接到Arduino Uno控制器的D13管脚 | 给主控板供电 |
为了方便编写程序,我们先设计防盗背包的电路连接关系。将磁感应传感器连接到Arduino Uno主控板的D8管脚,将光线传感器连接到A0管脚,将按键模块连接到D2管脚,将蜂鸣器模块连接到D12管脚,将WS2812 RGB LED灯带连接到D13管脚。线路连接如图2-3所示。
图2-3 线路连接
在编写程序之前,我们先梳理思路,设计出程序流程图,如图2-4所示。
图2-4 防盗背包的程序流程图
先要初始化一些变量,以便在后面的程序中使用,如环境光线传感器的值、RGB LED灯带的设置与开关灯状态变量等。
接着,读取环境光线传感器的值,去判断是否需要进入警戒模式。在警戒模式中,一旦背包拉链被拉开,就会触发警报。除了根据环境光线传感器去判断是否进入警报模式,我们还设置了一个按键,当按键被按下时,会退出警报模式,方便我们自己从背包里取东西。按键模块通过改变RGB LED灯带的状态去控制灯的亮灭,当RGB LED灯带打开,照到环境光线传感器上时,环境光线传感器检测到光线变亮,自然就退出了警报模式。
根据流程图,我们先初始化相关变量:“开灯状态”变量用来控制RGB LED灯带的亮灭,“光线强度”变量用来存储环境光线传感器检测到的值。另外,还需要设置RGB灯带连接的“管脚”“灯数”和“亮度”等参数,初始化程序如图2-5所示。
图2-5 防盗背包的初始化程序
接着创建一个“警戒模式”函数,方便在主程序中调用。在警戒模式中,当检测到拉链被拉开,即磁感应传感器检测到的值为“低”时,触发蜂鸣器警报,如图2-6所示。
图2-6 “警戒模式”函数
除了“警戒模式”函数,我们还需要再创建两个函数,即“开灯”函数和“关灯”函数,用来控制RGB LED灯带的亮灭,如图2-7所示。
图2-7 开关灯控制函数
设置好这些辅助函数之后,我们就可以根据流程图编写主程序了。防盗背包的主程序如图2-8所示。其中的串口打印环境光线传感器的数值,是为了做测试并设置进入警报模式合适的阈值。
图2-8 防盗背包的主程序
防盗背包完整的Mixly程序如图2-9所示。
图2-9 防盗背包完整的Mixly程序
我们首先需要根据作品选择好对应的主控板及传感器。单击Mind+软件界面左下角的“扩展”图标,在“主控板”类别中选择所用的“Arduino Uno”,如图2-10所示。
图2-10 选择主控板
在“传感器”类别中选择“数字大按钮模块”“模拟环境光线传感器”和“数字贴片磁感应传感器”,如图2-11所示。
图2-11 选择传感器
在“显示器”类别中选择“WS2812 RGB灯”,如图2-12所示。
图2-12 选择显示器
根据流程图,先初始化相关变量:“开灯状态”变量用来控制RGB LED灯带的亮灭,“光线强度”变量用来存储环境光线传感器检测到的值。另外,还需要设置初始化RGB灯的“管脚”“灯总数”和“亮度”等参数。防盗背包的初始化程序如图2-13所示。
图2-13 防盗背包的初始化程序
接着定义一个“警戒模式”函数,方便在主程序中调用。在警戒模式中,当检测到拉链被拉开,即磁感应传感器检测到的值为“低电平”时,触发蜂鸣器警报,如图2-14所示。
图2-14 “警戒模式”函数
由于Mind+中已经有直接控制灯带亮灭的语句块了,因此不需要再设置“开灯”函数和“关灯”函数了。在设置好“警戒模式”函数之后,我们就可以根据流程图编写主程序了。主程序如图2-15所示。其中的串口打印光线传感器的数值,是为了做测试并设置进入警报模式合适的阈值。另外,Mind+中不能设置布尔类型的变量,所以设置一个数字类型的变量“开灯状态”,通过判断“开灯状态”的值等于0或1来决定是否需要开关灯。
图2-15 防盗背包的主程序
防盗背包完整的Mind+程序如图2-16所示。
图2-16 防盗背包完整的Mind+程序
准备好制作防盗背包的其他材料,如表2-2所示。
表2-2 制作防盗背包的材料
图片 | ![]() |
![]() |
---|---|---|
名称 | 背包 | 强磁铁 |
数量 | 1个 | 若干个 |
由于需要在背包背面安装环境光线传感器、WS2812 RGB LED灯带以及按钮模块,为了方便连接元器件,因此先在背包背面用剪刀挖一个小孔。这样既方便连接传感器导线,也可以把按钮模块隐藏到孔里。背包背面的挖孔位置如图2-17所示。
图2-17 背包背面的挖孔位置
背包背部挖完孔后的样子如图2-18所示。
图2-18 背包挖孔后的样子
将WS2812 RGB LED灯带焊接上导线,如图2-19所示。
图2-19 将WS2812 RGB LED灯带焊接上导线
将WS2812 RGB LED灯带、环境光线传感器用热熔胶固定到背包背面圆孔边上,同时将按键模块从背包内部固定,将按钮嵌入到刚挖出的圆孔中,如图2-20所示。
图2-20 将元器件固定到背包背面
接下来,改装拉链部分。为了方便改装操作,我们先将拉链拉开,拉到背包打开的最大位置,在拉链背面用热熔胶固定一个小磁铁,如图2-21所示。
图2-21 在拉链背面固定一个小磁铁
接着在背包开口的另一端,用热熔胶固定磁感应传感器与蜂鸣器。注意,固定磁感应传感器时,在不影响拉链移动的情况下,尽量使其靠近拉链走线,提高检测的灵敏度,如图2-22所示。
图2-22 在背包开口另一端固定磁感应传感器与蜂鸣器
最后,将所有元器件和电池按照电路图连接方式连接到Arduino主控板对应的位置,如图2-23所示。可以用扎带对线材稍作整理,并将Arduino主控板与电池放到合适的位置。
图2-23 连接电路
至此,整个防盗背包就制作完成了,赶紧测试使用一下吧!希望这个背包的防盗功能永远都不会派上用场。
请扫描右侧的二维码,观看完整的演示效果。
扩展与提高
用电池供电比较耗电,需要经常更换。如果忘记更换电池,还会导致整个系统无法起效,能不能采用太阳能供电呢?另外,当发生偷盗行为时,能不能让防盗背包自动报警呢?赶紧试试吧!