2回答

1收藏

爱玩板卡+基于orangepi zero的室内空气质量(PM2.5,甲醛)监测系统

#线上活动 #线上活动 2942 人阅读 | 2 人回复 | 2017-06-30

前面想用opi zero做航模的图传和遥控接收,但是太重了(26g),另外电流也很大idle时都有150ma,试了下wifi的响应时间太慢,控制不好怕出事,年末将至也没有那么多时间去折腾了。但是一直以来了想能实时监测室内空气质量。感谢elecfans提供给我这么一个机会,zerowifi,这样可以在室内移动串口和gpio数量也比较合适。
用的PM2.5传感器是很早以前买的夏普的灰尘传感器GP2Y1010AU0F?自己用stm8f103处理数据然后用串口发送,甲醛和voc传感器用的是淘宝上的10多元的传感器,也是串口发送数据。因为没有查到opi zero的ADC怎么用,好像GPIO也没有标出有ADC,但是zero除了调试uart外还有两个uart,所以决定直接用uart来读取数据,然后发送到家用的nas上去。还有一块USART的显示屏,因为甲醛和PM2.5的传感器只是用串口的发送数据,不接收数据,串口的显示屏只需接收显示数据,所以尽管3个串口设备,串口还是够用的。连好线。甲醛传感器接在串口2上,Pm2.5传感器串口的显示屏接在串口1(分别用刀串口1RX,TX)。还是用python,因为代码量少,实时性要求不高。
考虑到传感器的寿命,不一直测量,而是30分钟测量一次,但是为了有时可以手动实时测量,需要有个按键,一旦按下,立刻测量,所以在主程序里面,一直读取PA10的电位,一旦PA10是高电位,就立刻读取数据(用gpio控制mos管立刻给传感器通电因为放假没发作板子),测量时zero的status led发光,测量完了后status led熄灭。
主程序
def control():
        button=port.PA10
        status_led=port.STATUS_LED
        start_status=False
        gpio.init()
        gpio.setcfg(status_led, gpio.OUTPUT)
        gpio.setcfg(button, gpio.INPUT)          #配置button gpio为输入
        gpio.pullup(button, gpio.PULLDOWN)  #配置下拉电阻,如果想一直测量配置上拉电阻PULLUP。
        gpio.output(status_led,0)                                #初始化status led熄灭
        max_sleep_time=1800  #max halt time 30min 测量30min一次
        sleep_time=0
        while True:
                state = gpio.input(button)
                print "start_status:",start_status
                print "button status:",state
                if state:  #如果手动按下按钮 那么应该要立刻的量
                        if not start_status:  #如果没有测量,那么立刻测量,如果在测量,那不操作
                                start_status=True  
                                gpio.output(status_led,1)
                                Run()   #运行测量函数,每个传感器测量时读取10组数据。取平均值
                                start_status=False
                                gpio.output(status_led,0)
                sleep(2)
                sleep_time+=2
                if sleep_time>max_sleep_time:#30分钟测量一次。数据发送到NAS
                        state=1
                        sleep_time=0
Run()函数里面开了两个线程读取传感器数据,读取的数据通过全局变量传递回来。测量的时候读取10组有效数据,取平均值,然后用通过网络发送家用NAS上面去,并且同时在串口屏幕上显示。在NAS上的UDP 服务端程序接收到数据后判断数据类型,把接收数据时间和数据存入相应文件。查看NAS上接受的数据采用BS模式,网页每两秒自动刷新一次。


两个传感器特写
下面是连接图片,连线比较乱。图片里面zero比较拗小,在屏幕和传感器之间。
测量的结果,今天本地天气比较好气象局的是在50,自己测的室外是在71。
nas记录的数据。甲醛的数据有误差,因为传感器对有机物也敏感,这个数据还算是正常的。PM2.5数据和甲醛数据比较小的数据是在家里新风口测得的。

转载自网络,版权归原作所有。
分享到:
回复

使用道具 举报

回答|共 2 个

倒序浏览

沙发

BTF

发表于 2017-12-29 11:19:47 | 只看该作者

这个传感器靠谱么
板凳

feixiang20

发表于 2017-12-29 15:12:04 | 只看该作者

从图片上看怎么接
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条