Arduino案例实战(卷Ⅳ)
上QQ阅读APP看书,第一时间看更新

4.5 故障及问题分析

问题1:起初试图通过观察音乐播放软件中的频率波动图,得到歌曲敲击时间间隔,但这种方法设置的敲击频率并不准确。

解决方案:先用这个设备打拍子从串口输出时间作为测试,再对同段音乐多次尝试取平均值,得到完整时间间隔,如表4-5所示。

表4-5 振动间隔统计表

问题2:振动传感器非常灵敏,从串口观察,对其敲击一下,输出不只一个时间间隔,难于设置敲击次数固定的节奏对比程序。

解决方案:拆开一个振动传感器SW-18010P,发现其原理很简单,就是塑料管中有一个软弹簧围绕着中心的金属杆,平时两者不接触,而当受到一定外界振动时就会令弹簧摇晃碰到金属杆,输出一个接通信号。多次尝试后发现,给time_ms设定较大输出阈值后可有效改善振动传感器输出数据不稳定的情况,如表4-6所示。

表4-6 错误间隔统计截图——敲击次数与输出间隔不一致

问题3:缺少与最新版Arduino IDE使用的12864库,代码编译错误。

解决方案:最初计划卸掉重装IDE,后来在网上查到了资料教程,修改现有12864库文件后便可成功编译。

问题4:12864显示容易乱码。

解决方案:根据网上的教程,出现乱码一般是因为液晶屏反应速度慢,需要在代码方面添加延时。在敲门过程中,由于振动传感器的干扰,也会出现字符乱码,但此时的乱码对开门正常功能及信息提示基本没有影响。

问题5:对ESP8266模块进行透传设置时,发送指令,接收端未响应。

解决方案:检查接线没有问题,经分析,可能是USB-TTL型号与ESP8266不对应,之后,换用(USB-TTL)PL2303模块测试后,发现接收端,显示正常。

问题6:编译ESP8266模块代码时出错,找不到代码中的AJSON头文件。

解决方案:首先检查Arduino的库中是否引入了AJSON库,若没有,则需将AJSON库文件加入Arduino的libraries文件夹中,之后重新编译代码,则显示成功。

问题7:用LED灯进行ESP8266 WiFi模块检测时,代码一直显示不成功。

解决方案:检查代码和电路接线无误后,不成功,最后查询ESP8266的相关资料发现,在上传代码时,应断开Arduino开发板TX、RX连接线,否则代码无法上传成功;代码上传完成,断电连接上TX、RX连接线,再通电启动。

问题8:贝壳物联网的设备状态一直不稳定,不在线的状态完全无规律。

解决方案:若模块测试成功,则当WiFi模块通电后设备应自动显示在线状态;当它不在线时,利用网络调试助手中的TCP端口进行直接连接,这样可以强行使设备在线,但设备的状态也难以控制;经过多次刷新,发现WiFi模块与物联网的连接反应比较迟缓,给WiFi模块通电后,多刷新几次设备便显示在线,可以对继电器进行控制。