背景

前阵子树莓派由于没外壳不小心短路烧掉了。最近得手nodeMCU的板子,不仅便宜还支持串口交互式调试,很是方便。寻思着实现个自动化控制玩玩。自从“穹顶之下”的信息被普及,不仅要出门带口罩,还要家里开空气净化器。于是照着知乎也DIY了一个。但作为一个程序员,不捣鼓一点硬件软件怎么可以,于是花了两三天捣鼓了lua,顺便配了个web端的语音播报,软硬件组合达到了期望的效果。(顺便吐槽一下tinyOS的组件式编程,文档也少得可怜)

实现思路

硬件:

  • MQ烟雾/可燃气体传感器
  • dth温湿度传感器
  • 空气颗粒物(pm1.0,pm2.5,pm10)传感器
  • 继电器*4(用来控制 取暖器,加湿器,净化器,烟雾报警装置)

软件:

  • 万能的web(html js jq)
  • php(负责爬天气预报和空气质量,以及和nodeMCU通讯)

  • 用socket拼接http去获取天气,结果写完发现它的socket接受发送最大1440字节,本来想直接写进MCU做个lua server。可惜了,于是控制规则干脆写到前端,php做大量的数据获取支持。
  • 用的空气颗粒物传感器接TX口,init.lua加载前会根据D3 D4 TX 来判断是否进入烧写模式,之前接继电器总是上电乱跳,最终把data out 的2口放到D3 D4,解决了这个问题。

效果图

nodeMCU代码(init.lua)

--家庭空气质量管家
--sensor为传感器data口
--power为继电器控制口
--D0    CH1             0
--D1    CH2             0
--D2    CH4             0
--D3    MQ-DATA  1
--D4    DHT-DATA 0
--D5    CH3             0
--D6    DHT-VCC    1
--RX    PM-TX
Air={pm010=0,pm025=0,pm100=0,temp=0,humi=0,smoke=1,gpio_pm=0,gpio_temp=0,gpio_humi=0,gpio_smoke=0,humi_power=0, pm_power=1,smoke_power=2,   mq_sensor=3,dht_sensor=4,    temp_power=5
}
--引脚初始化
for pi=0,6,1 dogpio.mode(pi, gpio.OUTPUT,(pi==6)and gpio.PULLUP or gpio.FLOAT)gpio.write(pi,(pi==3 or pi==6)and gpio.HIGH or gpio.LOW)
end
--网络
wifi.setmode(wifi.STATION)
wifi.sta.config("SSID","PASSWORD")
--串口监听
uart.setup( 0, 9600, 8, 0, 1, 0 )
uart.on("data",function(data)if(string.len(data)==32 and string.byte(data)==66) then--颗粒Air.pm010=tonumber(string.byte(data,11))*256+tonumber(string.byte(data,12))Air.pm025=tonumber(string.byte(data,13))*256+tonumber(string.byte(data,14))Air.pm100=tonumber(string.byte(data,15))*256+tonumber(string.byte(data,16))--温湿度_,Air.temp,Air.humi, _, _ =dht.read(Air.dht_sensor)--烟雾Air.smoke=gpio.read(Air.mq_sensor)--继电器Air.gpio_pm,Air.gpio_temp,Air.gpio_humi,Air.gpio_smoke=gpio.read(Air.pm_power),gpio.read(Air.temp_power),gpio.read(Air.humi_power),gpio.read(Air.smoke_power)end
end, 0)
--http
srv=net.createServer(net.TCP)
srv:listen(80,function(conn)  conn:on("receive", function(client,request)  local buf = "{"local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP")if(method == nil)then  _, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP")end  local _GET = {}  if (vars ~= nil)then  for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do  _GET[k] = v  end  end  if(_GET.action == "read")thenfor key,value in pairs(Air) dobuf=buf..key..":"..value..","endelseif(_GET.action == "write")thengpio.write(_GET.pin,_GET.level)elseif(_GET.action == "debug")thennode.input(_GET.data)end  client:send(buf.."error:0}")client:close()collectgarbage()end)
end)

源码

https://github.com/Seasonley/...

nodeMCU自动化控制实现空气质量管家相关推荐

  1. 爬空气质量MySQL,nodeMCU自动化控制实现空气质量管家

    背景 前阵子树莓派由于没外壳不小心短路烧掉了.最近得手nodeMCU的板子,不仅便宜还支持串口交互式调试,很是方便.寻思着实现个自动化控制玩玩.自从"穹顶之下"的信息被普及,不仅要 ...

  2. 小米服务组件是什么东西_如何用小米智能家庭打造环境控制(温度、湿度、空气质量)...

    当然今天的主角是小米的智能家庭组件. 因为我在用的整套系统是基于Broadlink的,所以为了测试小米,我把其中的一部分功能拿出来让小米智能来完成,恰好又有小米空气净化器,所以就把环境控制部分让小米智 ...

  3. arduino读取水位传感器的数据显示在基于i2c的1602a上_构建Arduino的LoRa远程智能空气质量监测系统...

    背景知识视频教程 Arduino分步指南:完整指南 - 国外课栈​viadean.com Arduino微控制器:学习Arduino制作项目 - 国外课栈​viadean.com 通过构建实际应用程序 ...

  4. 室内空气质量类毕业论文文献包含哪些?

    本文是为大家整理的室内空气质量主题相关的10篇毕业论文文献,包括5篇期刊论文和5篇学位论文,为室内空气质量选题相关人员撰写毕业论文提供参考. 1.[期刊论文]室内装饰空气质量的改良与室内空气质量提升的 ...

  5. camx模型_【推荐】基于CAMx的空气质量模拟及污染来源解析技术

    关注并转发本文章至朋友圈或科研群3小时以上,截图联系文末客服即可免费参加海报免费课程,快动动您的小手转发起来! 各企事业单位: 随着我国经济快速发展,我国面临着日益严重的大气污染问题.大气污染是工农业 ...

  6. 快速实现一个室内空气质量检测仪

      冬天我们大多会关闭门窗,而依靠暖通空调设备来维持室内温度.而在保证居室温度的同时,我们也希望保持居室内大气环境的健康度.鉴于此,我们设计了一个简单的室内空气质量检测器. 1.系统概述   我们依靠 ...

  7. 一个简单的空气质量数据监测站项目

    大气质量数据监测站用于测试空气质量监测及数据采集,实现野外或者室内空气质量的检测.并通过网络将数据上传到OneNet​显示.​ 1.项目概述 本项目是一个定制项目,要求采集大气的压力.温度.湿度.PM ...

  8. diy 多路监控_如何通过此DIY设置监控空气质量

    diy 多路监控 借助Raspberry Pi,低成本气体传感器和遥控开关,您可以控制房屋的空气质量. (With a Raspberry Pi, low-cost gas sensors, and ...

  9. 可靠性测试设备技术含量_电气自动化控制设备的可靠性测试(1)

    龙源期刊网 http://www.qikan.com.cn 电气自动化控制设备的可靠性测试 作者:彭波 来源:<消费电子 · 理论版> 2013 年第 10 期 摘 要:近年来电气自动化控 ...

最新文章

  1. 跟我一起考PMP--项目质量管理
  2. CentOS6.4安装gvim
  3. js实现简单的图片轮播
  4. Solr所有的查询解析器Query Parsers(转:http://blog.csdn.net/jiangchao858/article/details/53859731)
  5. 2021中国新锐品牌发展研究:食品饮料行业报告
  6. 【Day09】JavaScript 为什么要区分微任务和宏任务
  7. tapestry autocomplete 更改样式及定位
  8. 等了一年终于要来了 电影《八佰》定档8月21日全国上映
  9. 屏蔽关闭百度搜索风云热点的方法
  10. 免费python自学攻略-给初学者推荐的10个Python免费学习网站!赶紧收藏吧!
  11. Pytorch 学习笔记:
  12. 常量表达式(constexpr)
  13. 电脑开机3秒就重启循环_手机怎么才能投屏到电脑上?3个方法,小屏1秒变大屏,涨知识了...
  14. 微信蓝牙协议一:协议文档查阅方法和空中数据解析示例
  15. Javascript:面向对象举例——矩形类及其实例化
  16. 凤凰网php,凤凰网房产频道招聘 web 前端工程师、PHP 工程师 15-25k,欢迎简历来砸~...
  17. qq飞车手游服务器维护中,QQ飞车手游3月28日停机维护到几点_QQ飞车手游3.28停机维护时间_玩游戏网...
  18. Go语言环境安装及配置
  19. 机器学习项目中不可忽视的一个密辛 - 大数定理
  20. MacOS自带ssh+XQuartz连接OpenBSD6.5

热门文章

  1. 川教版计算机三年级下册教案,川教版小学三年级下册信息技术教案(全册)
  2. java面试 mysql分库分表_MySQL性能管理及架构设计(三):SQL查询优化、分库分表 - 完结篇...
  3. 手机zip模拟器_【教程】萌新手机krkr2模拟器运行教程
  4. python函数式编程中南大学_中南大学C++实践报告
  5. 多视图几何总结——摄像机模型
  6. 中国楼宇自控系统发展规划现状及未来前景预测报告2022-2028年版
  7. 外国人居留证办理手续
  8. 写在创业的路上:如何从无到有的打造一个产品
  9. linux面试题中的简答题,Linux面试题(简答题部分)
  10. 使用 vue + thinkjs 开发博客程序记录