RaspberryPi和Arduino温室恒温改进

前一篇文章使用RaspberryPi和Arduino控制温室的温度,发现树莓派读取温度是总会出错,原因在于DHT11的控制协议是微秒级别的,但是树莓派达不到,因此改成传感器都有Arduino控制,树莓派和Arduino之间使用串口通信。

Arduino上运行的程序如下:Arduino Commander,这个程序用到了SimpleSerial和SimpleDHT这两个库。

树莓派上运行的程序是:RaspberryPi Greenhouse,用到了Python的串口通信库SimpleSerial。

主要的改进是:

  1. Arduino控制温度传感器,读取数据最高频率为1秒,数据几乎不出错,比树莓派上读取温度湿度信息好非常多了。
  2. 树莓派和Arduino通过SImpleSerial串口命令协议通信,该协议使用了容错,也意味着程序需要考虑命令可能没有成功执行的情况。
  3. 树莓派发送升温命令给Arduino,同时有目标温度和有效时间,Arduino开启继电器加热时,会检测目标温度以及有效时间,如果温度达到或者有效时间超时都会停止加热。也就是部分控制逻辑也在Arduino上,Arduino不仅仅是个执行器。

最后,上图:

RaspberryPi和Arduino温室恒温改进_第1张图片

你可能感兴趣的:(RaspberryPi和Arduino温室恒温改进)