安裝好客廳的新風系統(進氣過濾風機)後,一直想要讓它可以自動運作,自動監控pm2.5和自動開關,於是就開始繼續研究ARDUINO,首先是LCD部分,我用的是NOKIA5110,LCD網路上有教學http://yfrobot.com/thread-2412-1-1 .html,然後我想用遙控來做輸入和設定用,所以也加上紅外線接收頭,而且為了不要每次燒錄要拔IC,所以把RX和TX腳拉出來,並買了個USB轉串列的CP2102來作上傳動作,為了供電方便,也加了個MICRO USB 孔,下圖是初步完成的一些東西
上圖是功能測試頁面(舊版)
如上圖左下是RTC和PM2.5偵測器和DHT22溫溼度感應器 ,右下是18650和鋰電充放電保護板和升壓模組
這是電路板背面
為了能將時間和測量到的PM2.5發送出去,故加了RF模組,由於第一片板子的328容量不夠,故加了一片NANO板負責RF發送任務
把它們用螺絲和我自己印的骨架組合在一起,用跳冒做連接
RF發射模式
這是組合起來的樣子,盡量充分運用洞洞板的空間,減少跳線的結果,這台負責監控溫溼度和PM2.5 和現在時間,並把數據透過RF發送出去
上圖是最新改版的設定頁面(因為發現溫溼度感應器的DHT.h庫和IRremote.h庫會有相衝問題),當執行irrecv.enableIRIn()時,溫溼度就讀不到數據,解決方式就是將紅外線停用,執行下面3行
cli(); // 禁止中斷
dht.begin();//溫溼度致能
TIMER_DISABLE_INTR; //取消irrecv.enableIRIn()的影響
sei(); // 允許中斷
就可以恢復到irrecv.enableIRIn()執行前的狀態
但我設定和測試一定要遙控器,所以就取消了溫溼度選項
按下遙控器的1時,進入遙控碼測試功能
這時候可以把遙控碼顯示出來
第二個功能是時間顯示和設定,按遙控器2進入
設定時間按ok,進入設定模式,用遙控器上下鍵設定年
設定好年按ok設定月
設定月ok後是日
然後是設定星期
然後是設定時
然後設定分鐘,設定好後按ok就0秒開始算
設定好會跳回現在時間
然後這是pm2.5測試功能,剛開所以是0
上圖是pm2.5感測器PMS3003的數據表,串列傳輸一次8位,從00000000到11111111,傳輸24次,第5到16次為我們要的數據
另外介紹一下,這是我的示波器普源DS1054Z (有破解解碼功能,接好串列於CH1後,按下MATH鍵,就可以對波型解碼),這台1萬5有中文介面和4通道,算很有CP值的示波器
將訊號調整下,可以看到PMS3003的串列數據和波型,串列開頭一定有42和4D
所以我程式碼是這樣寫的
while (Serial1.available()) //如果接收到資料,就不斷迴圈,直到Serial1.available()=0才跳出
{
if(Serial1.available()>=16)
{
tm[0] =
Serial1.read();
if(tm[0]==0x42)
{
tm[1] =
Serial1.read();
if(tm[1]==0x4d)
{
tm[2] =
Serial1.read();
if(tm[2]==0x00)
{
tm[3] = Serial1.read();
if(tm[3]==0x14)
{
tm[4] =
Serial1.read();
tm[5] =
Serial1.read();
tm[6] =
Serial1.read();
tm[7] =
Serial1.read();
tm[8] =
Serial1.read();
tm[9] =
Serial1.read();
tm[10] = Serial1.read();
tm[11] =
Serial1.read();
tm[12] =
Serial1.read();
tm[13] =
Serial1.read();
tm[14] =
Serial1.read();
tm[15] =
Serial1.read();
pmcf10 = tm[4]*256+tm[5];
pmcf25 =
tm[6]*256+tm[7];
pmcf100 = tm[8]*256+tm[9];
pmat10 =
tm[10]*256+tm[11];
pmat25 =
tm[12]*256+tm[13];
pmat100 =
tm[14]*256+tm[15];
while(Serial1.available()) //多的資料清除
{
Serial1.read();
}
}
}
}
}
}
}
如上,利用判斷式判斷開頭,利用陣列tm來儲存資料,就可以得到串列的資料來做計算處理
然後這是控制功能(用遙控器上下改變狀態)
這是藍芽hc-05控制功能
要裝藍芽模組才能用(如上圖)
這是rf發射功能
這是實際運作樣子
沒有留言:
張貼留言