摘要:尋思著實現個自動化控制玩玩。自從穹頂之下的信息被普及,不僅要出門帶口罩,還要家里開空氣凈化器。效果圖代碼家庭空氣質量管家為傳感器口為繼電器控制口引腳初始化網絡串口監聽顆粒溫濕度煙霧繼電器源碼
背景
前陣子樹莓派由于沒外殼不小心短路燒掉了。最近得手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 do gpio.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")then for key,value in pairs(Air) do buf=buf..key..":"..value.."," end elseif(_GET.action == "write")then gpio.write(_GET.pin,_GET.level) elseif(_GET.action == "debug")then node.input(_GET.data) end client:send(buf.."error:0}") client:close() collectgarbage() end) end)源碼
https://github.com/Seasonley/...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/22364.html
摘要:尋思著實現個自動化控制玩玩。自從穹頂之下的信息被普及,不僅要出門帶口罩,還要家里開空氣凈化器。效果圖代碼家庭空氣質量管家為傳感器口為繼電器控制口引腳初始化網絡串口監聽顆粒溫濕度煙霧繼電器源碼 背景 前陣子樹莓派由于沒外殼不小心短路燒掉了。最近得手nodeMCU的板子,不僅便宜還支持串口交互式調試,很是方便。尋思著實現個自動化控制玩玩。自從穹頂之下的信息被普及,不僅要出門帶口罩,還要家里...
摘要:對比操作前后的來定位內存泄露的根因所在。手機管家內存泄露每日監控方案目前手機管家的內存泄露每日監控會自動運行并輸出是否存在疑似泄露的報告郵件,不論泄露對象的大小。 騰訊Bugly特約作者: 姚潮生 最原始的內存泄露測試 重復多次操作關鍵的可疑的路徑,從內存監控工具中觀察內存曲線,是否存在不斷上升的趨勢且不會在程序返回時明顯回落。這種方式可以發現最基本,也是最明顯的內存泄露問題,對用戶價...
摘要:對比操作前后的來定位內存泄露的根因所在。手機管家內存泄露每日監控方案目前手機管家的內存泄露每日監控會自動運行并輸出是否存在疑似泄露的報告郵件,不論泄露對象的大小。 騰訊Bugly特約作者: 姚潮生 最原始的內存泄露測試 重復多次操作關鍵的可疑的路徑,從內存監控工具中觀察內存曲線,是否存在不斷上升的趨勢且不會在程序返回時明顯回落。這種方式可以發現最基本,也是最明顯的內存泄露問題,對用戶價...
摘要:雖然說數據包是手機之間傳輸,但是我們仍然需要依靠基站傳輸信令,運營商的錢還是要給的與人工智能小西原來技術包含了這么多黑科技呀那這些黑科技有什么應用呢,它跟人工智能又有什么關系呢小迪這可就多了。 showImg(https://segmentfault.com/img/remote/1460000019373664); 又是一個周末,小西與小迪坐在沙發上看新聞。 小西:小迪小迪,新聞里總...
摘要:供需對接提供中小微企業供需發布平臺,降低中小微企業投入成本資源庫建設質量基礎設施相關的機構人才設備政策法規業務知識庫,為企業提供一站式查詢服務。 質量基礎設施NQI一站式線上公共服務平臺建設方案質量基礎設施NQI一站式線上公共服務平臺,本著基礎業務在線辦結,要素資源高效協同,特色服務培育品牌的平臺產品思維,確立...
閱讀 1383·2021-11-15 18:11
閱讀 2512·2021-08-19 10:56
閱讀 679·2021-08-09 13:42
閱讀 795·2019-08-30 15:53
閱讀 2087·2019-08-30 10:55
閱讀 3144·2019-08-29 17:18
閱讀 1435·2019-08-29 13:45
閱讀 546·2019-08-29 13:15