2753| 2
|
[2019参赛作品] 【脑洞大赛】手机虚拟硬件 |
本帖最后由 LYon 于 2019-8-20 23:54 编辑 你有没有过在做Arduino创客项目的时候,经常会发现自己缺个按钮模块或显示屏模块什么的,甚至有时少根杜邦线都可能会让你的项目制作进程暂停下来。就算你什么模块元件都不缺,也可能会在程序功能逻辑稍复杂点的时候调试时会感觉无从下手,目前无论是Arduino IDE还是Mind+、Mixly等这些编程软件都没有提供程序断点运行和变量调试的功能。 所以我就想能否利用现在智能手机的强大性能、超大屏幕和众多传感器,来虚拟Arduino开发板的外围硬件,甚至是虚拟Arduino开发板本身(当然这就绝非我能力所及范围了)。用手机虚拟硬件的意义主要在于可以在不连接外围模块的情况下快速调试程序,同时实现了Arduino IDE未提供的变量调试功能。 初步的想法是把Arduino开发板的IO引脚状态数据,通过串口无线模块发送到手机,在手机上虚拟显示出各IO引脚状态,并把对手机APP界面的上按钮、手机内部传感器等数据发送回开发板进行仿真控制。 在实际系统软件设计中,借用孙子兵法中“偷龙转凤”的手法,通过#define语句替换系统硬件操作函数,替换为自己重新定义的函数,进行相应数据转发处理后再调用系统函数执行原来的硬件操作,尽量避免直接修改程序执行主体,实现兼容Arduino开发板外围实际硬件程序代码。后期将通过自定义库的方式来实现,通过对各种模块库函数的承继与重载、重写、重定义,保证了在不修改原库文件的情况下实现硬件在手机端的虚拟。 串口无线模块可以使用乐鑫ESP8266芯片的系列模块,可选用安信可的ESP01S模块,体积小连接方便,性价比超高,最便宜的甚至不到5元,真是比一些按钮模块还要便宜,只是无法直接支持阿里云联物网平台。 实现数据发送功能的包含文件部分代码 跑马灯测试代码,可见除插入了断点程序变量调试语句外,几乎未对程序作其他的修改。 刚准备做的时候我想既然要使用智能手机来虚拟硬件,肯定是要通过手机APP来实现,那编写APP程序就是必需要做的的工作了。以我那点水写写简单的Arduino程序还行,编写手机APP程序对我来说可真的是非常艰巨难题。最近在做阿里云物联网项目的时候发现阿里云平台居然可以直接生成手机APP,心想这算个很好的捷径了,正好还可以用阿里云物联网平台进行远程数据转发、存储。 所以开始我用了DFRobot的FireBeetle 萤火虫 ESP32开发板,无需外接无线模块可以直接运行测试程序及连接阿里云物联网平台上传开发板IO引脚状态数据。 但没想到用阿里云物联网平台来做简单的智能家居和环境监测等应用还行,做这种复杂数据处理就有点力不从心的感觉了,无论数据处理的灵性性还是实时性都达不到要求。当然,它本来也不是为做这种应用设计的。 但我还是不得不吐槽一下,阿里云的APP界面编辑太难用了,界面分栏不能任意定位,只能选单行横向和竖向的,每个分栏最多只能分成6格,横向的只能平均分格!而且一格只能放一个元素!另外阿里云有一点比较讨厌的地方是如果某项自定义功能没接收过数据,你就根本无法在APP编辑界面配置这个功能的数据源。所以如果你在APP数据配置里显示不出来相应属性,可能是这个功能还没有收到过数据,或者收过到的数据类型和你设置的功能数据属性不一致。 阿里云移动应用平台APP编辑界面,未上传数据的功能无法配置数据源 还有它的登录超时居然是从你登录的时候开始计时,也就是如果你登录了很长时候,即使不停的在页面编辑操作,也可能会出现超时需重登录的情况。还好数据会自动保存(还是有丢修改的可能性,我就遇到过),要不编辑了几个小时没保存突然让你重新登录会让人崩溃的。 用阿里云生成的第一版手机APP界面 第二版APP界面 多个不同版本APP测试程序 采用APP Inventor 2开发的新版APP界面,可以直观的查看各IO引脚电平状态,可以通过打开断点调试使程序运行时暂停点调试点,并显示出需调试的变量当前值。引脚控制部分可模拟外接按键控制引脚电平,可选择高电平或低电平控制,引脚可方便的切换选择,以实现更多按键的虚拟功能。同时支持模拟量控制,来仿真电位器、模拟量传感模块。 还将支持1602 LCD显示屏和12864 OLED显示屏、LED数码管、喇叭等模块。 更多功能请下载安卓版测试安装包体验。 采用APP Inventor 2开发的新版手机APP测试客户端下载 LYon手机虚拟硬件.zip |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed