AppInventor+掌控板:为硬件编程(1)
一直以来都有读者询问是否有硬件控制类的案例,这也是我一直期待涉及的话题,但由于种种原因始终未能付诸行动。就在上个月,张路老师(roadlabs)收到了谢作如老师寄来的一块掌控板,并共同讨论了关于掌控板与手机协同工作的解决方案。张路老师建议以App Inventor的网络数据库(tinyWebDB)组件为媒介,为掌控板开发一个专用的服务模块——tinyWebIO,使得熟悉App Inventor开发的用户可以很容易地开发出自己的安卓应用,实现手机与掌控板之间的通信及控制。现在这个模块已经预置在掌控板的最新版固件中,不久用户就可以在市场上购得这款产品,详见谢老师的文章《让App inventor和掌控板远程互动起来》。
本文的主要目的是介绍如何在App Inventor中开发与掌控板通信的应用,即,如何调用tinyWebIO服务程序,以实现手机和掌控板之间的协同工作。文本分两期发布,本期介绍与开发有关的准备工作。
掌控板是一款适用于物联网应用的单片机控制板,同样也适用于编程教学。掌控板有两种网络连接方式:WIFI及蓝牙,本文采用wifi连接;掌控板以MicroPython作为开发语言,而tinyWebIO的作用就是利用App Inventor已有的TinyWebDB组件实现与掌控板系统的直接交互,也就是用块语言开发的手机应用实现其控制功能。关于掌控板的详细介绍,请参见其官方网站(https://mpython.readthedocs.io)。
在正式开始编写程序之前,有两项准备工作必须完成:
(1)在开发电脑上安装掌控板的原生开发工具及驱动程序;
(2)将掌控板连接到局域网的wifi网络(需要wifi的登录名和密码)。
对于一块掌控板,只需在第一次使用时,做以上操作,下面将给出具体操作步骤。
(1)下载原生开发工具及驱动程序,网址为:https://mpython.readthedocs.io/zh/latest/board/software.html,用户可根据自己的操作系统版本选择下载不同的文件。
(2)下载tinyWebIO服务及启动文件,网址为
https://pan.baidu.com/s/168XgQwF8rV0HR63mEpB9dg,下载后解压缩,得到两个文件:main.py及tinywebio.py。
(3)安装并启动原生开发工具:在开发工具安装完成后,安装程序会自动提示安装驱动程序。注意安装路径中不能有中文字符或空格,最好直接安装在硬盘根目录,如D:\mpython下。安装完成后,启动开发工具,界面如图1所示。
图1 掌控板的原生开发工具
注意:开发工具安装过程中,在Windows的Users\computer文件夹下自动创建了mu_code文件夹,在开发工具中编写的程序将默认保存在该文件夹下。稍后我们会再次提及这个文件夹。
(4)测试硬件连接:用USB线将掌控板连接到开发电脑上,在开发环境中点击“文件”按钮(也许需要点击两次),如果硬件连接正常,则会显示图2中的内容,图中下部左侧窗口中显示的是掌控板中的文件,右侧为电脑Users\computer\mu_code文件夹中的文件。如果提示连接失败,则手动按下掌控板上的复位键重新启动硬件,稍等片刻后再查看文件。(稍等片刻是必要的。)
图2 测试硬件连接是否正常
(5)加载并刷入tinywebio.py及main.py:考虑到这篇文章发表时,掌控板的tinyWebIO固件版可能还未上市,因此,需要读者手动将两个文件刷入掌控板。
首先在开发工具中载入tinywebio.py,点击“刷入”按钮,即可将其刷入掌控板,刷入成功后,会弹出提示框,询问是否立即运行,此时选择“OK”。如图3所示。
图3 程序刷入成功后,立即运行程序
用同样的方法载入文件main.py,如图4所示,这次需要对文件稍加修改,填写即将登录的wifi网络的名称及密码,然后点击“刷入"按钮,并选择立即执行程序。
图4 在main.py文件中设置登录WIFI网络的名称及密码
如果程序执行成功,则掌控板的液晶屏上将显示登录后硬件的ip地址。如图5所示。如果执行出现问题,可以按“Ctrl+D”重新启动硬件,此时,main.py会自动执行。
图5 硬件联网成功后,屏幕上会显示ip地址
至此为掌控板编程的准备工作已经就绪,此时,你可以在另一台电脑或手机(与掌控板在同一个wifi网络中)的浏览器中输入ip地址+端口号8888,即可访问掌控板上的tinyWebIO服务程序。如图6所示。
图6 在手机的浏览器中访问掌控板上的tinyWebIO服务程序
(6)服务测试
点击图6中的第一项——写入数据,如图7所示,在标签一栏中输入“buzz”,在数值一栏中输入“on”,然后点击“写入”按钮,这时掌控板会发出令人发指的鸣叫,此时,在数值栏中输入“off”,并点击“写入”按钮,鸣叫声停止。这说明掌控板上的tinyWebIO服务程序运行正常。
图7 测试tinyWebIO服务程序
以上我们讲述了掌控板的驱动、联网,以及tinyWebIO服务程序的刷入、启动与简单测试,在下一期中,将在App Inventor中开发一个简单的应用,介绍tinyWebIO的具体调用方法。