牟晓东
炎炎夏日,一直“猫”在空调房中取凉对身体是极为不利的,还是用风扇吹自然风比较健康。对于我们热衷于“鼓捣”的创客一族而言,吹吹风也一定要吹出不一样的境界,比如使用App Inventor编程开发个手机应用程序,远程操控树莓派的智能风扇——既能任意变速,又能定时关机。一、实验器材与连接
所需的实验器材包括:树莓派3B+(带电源线)一块,古德微扩展板一块,风扇模块一个,智能手机一部,公对母异色杜邦线四根(如图1)。
风扇模块(L9110)直流电动机的马达控制板提供有四个引脚:电源正极VCC、接地GND和IA、IB两个输入控制端,引脚次序与古德微扩展板24号一一对应,但“直插”的话会导致扇叶在放置时与扩展板亲密接触,因此应该借助杜邦线进行“延长”。注意:控制板的IA引脚接扩展板24号的D端,控制板的IB引脚接扩展板的A0端(如果这两个输入控制端交叉连接就会出现扇叶“反转”——变成“排气扇”)。二、在App Inventor中进行组件与逻辑设计
1.组件设计
浏览器访问App Inventor网站(https://app.wxbit.com/login/),QQ账号登录。新建“智能风扇”项目,分别建立三个“水平布局”,进行“居中”,宽度“充满”,高度“自动”设置;在第一个水平布局中建立“风力调节”标签和“风力调节滑杆”水平滑动条,注意滑杆的最大值设为3000,最小值设为0,滑杆位置设为0;在第二个水平布局建立两个标签,分别为“风力”和“风力值”(文本设为0);在第三个水平布局中建立一个“时间选择框”(重命名为“定时关机”),再建立“关机时间”标签(文本设置为“00:00”)。
然后建立一个“图像框”,上传风扇图片(“自动缩放有效”,宽度和高度均为“自动充满”);再从“通信连接”中建立一个“MQTT客户端”,注意将“服务器URL”修改为古德微机器人网站的URL:“tcp://www.gdwrobot.top:1883”;最后从“传感器”中建立一个“计时器”,完成组件设计(如图2)。
2.逻辑设计部分
切换至“逻辑设计”界面进行相关项目的初始化和连接等设置。比如“当屏幕Screen初始化”时,调用MQTT客户端连接;“当MQTT客户端已连接”时,设置风力值文本显示为“MQTT已经连接成功!”;“当定时关机被点击”时,调用定时关机弹出选择框;当“定时关机完成时间设定”时,设置显示关机时间等相关信息(如图3)。
當“风力调节滑杆的滑块位置发生改变”时,设置风力值为滑块位置的四舍五入数值,然后调用MQTT客户端发布相关的信息(注意“luke008/Fan”主题必须与树莓派账号一一对应)(如图4)。
当“计时器到计时间隔点”,根据用户设定的定时关机时间再次进行发布(如图5)。
三、古德微机器人平台编程浏览器访问古德微机器人平台(http://www.gdwrobot.cn/),输入账号密码登录。首先从“物联网”处设置物联网服务器积木模块,再监听主题Fan并设置初始值为0;然后建立“循环当真”结构,判断是否收到主题Fan的新数据:如果收到,先在调试区输出该数据,然后控制24号(风扇)GPIO输出;如果主题Fan的数据为0,控制24号关停风扇;最后添加等待时间,保存程序为“编程智能风扇”(如图6)。
四、检测“智能风扇”确保风扇与扩展板正确连接之后,通电启动树莓派;在古德微机器人平台上点击“连接设备”后打开LOG调试区,点击“运行”按钮;到App Inventor网站智能风扇项目中点击“连接”-“AI伴侣”,出现二维码;在智能手机上运行AI伴侣,扫描二维码,连接成功后会显示出与在App Inventor组件设计中相同的界面。
此时就可以向右拨动“风力调节”后面的风力调节滑杆,下方的“风力”处即时显示出数值(比如1620),同时在古德微机器人平台的程序LOG调试区也会对应显示该数值。当然,最重要的是风扇此时已经转动起来了,拨动调节该数值越大,风扇叶片的旋转速度就越快——拨动到0,风扇停转(如图7)。
再来试一下“定时关机”功能,比如现在是14:29,可以点击弹出的时间钟表盘设置关机时间——比如14:31。此时风扇仍然是按照拨动的转速值在旋转,到预定的关机时间后,风扇立刻停转了,非常“听话”,大家不妨一试。
(本实例效果演示可在B站搜索“二娃学编程”观看)



