風機自動控制後,現在空氣清淨機也來自動一下(原本只有我改造的定時功能),現在加了RF接收能力
使用NANO板搭配RF接收器來控制,用2SC1815來控制開關做動,因為空氣清淨機內的的機板的5V是用積納二極體做的,輸出電流不夠驅動NANO,做動時會跳掉關機,所以只好用USB線直接插NANO板供應5V,把GND和機板的GND接一起,但5V用USB的,這樣就可正常作動
這大概是全台灣唯一一台可接收RF信號來控制的honeywell 17000 吧XD
這大概是全台灣唯一一台可接收RF信號來控制的honeywell 17000 吧XD
這是我使用的RF程式庫網站,裡面有載點
http://www.airspayce.com/mikem/arduino/RadioHead/index.html
這是程式碼:
#include <RH_ASK.h> //rf程式庫
#include <SPI.h>
RH_ASK driver;
uint8_t buf[RH_ASK_MAX_MESSAGE_LEN]; //接收資料用
uint8_t buflen = sizeof(buf);
int off=0;//累積>3關機
int mi=0; //紀錄上次切換分鐘,利用這變數來限制空氣清淨機每分鐘只能切換轉速檔位1次,避免太頻繁開關
int pm=0;//pm數值
void setup(void)
{
driver.init();
pinMode(13, OUTPUT);
pinMode(6, OUTPUT);//高速
pinMode(5, OUTPUT);//低速
pinMode(4, OUTPUT);//中速
pinMode(9, OUTPUT);//off鈕
digitalWrite(6, LOW);
digitalWrite(5, LOW);
digitalWrite(4, LOW);
digitalWrite(9,
LOW);
Serial.begin(9600);
}
void loop(void)
{
if(driver.recv(buf, &buflen)) //當RF收到訊號時
{
if(buflen>6)//如果信號長度大於6
{
Serial.println(buf[0]); //開頭
Serial.println(buf[1]);//發射器輸出的PM1.0數值
Serial.println(buf[2]);//發射器輸出的PM2.5數值
Serial.println(buf[3]);//發射器輸出的PM10數值
Serial.println(buf[4]);//發射器輸出的時
Serial.println(buf[5]);//發射器輸出的分
Serial.println(buf[6]);//發射器輸出的秒
pm=buf[2];
if(buf[5]!=mi)//
{
digitalWrite(13, LOW);
delay(500);
if (pm>25) //當PM2.5 > 25ug/m3時
{
mi=buf[5];
digitalWrite(6, HIGH); //高速檔開啟
delay(1000);
digitalWrite(6, LOW);
delay(1000);
off=0;
}
if (pm>15 && pm<=25) //當PM2.5 介於15到25之間時
{
mi=buf[5];
digitalWrite(4, HIGH); //中速檔開啟
delay(1000);
digitalWrite(4, LOW);
delay(1000);
off=0;
}
if (pm>10 && pm<=15) //當PM2.5 介於10到15之間時
{
mi=buf[5];
digitalWrite(5, HIGH);//低速檔開啟
delay(1000);
digitalWrite(5, LOW);
delay(1000);
off=0;
}
if
(pm<7) //當PM2.5 小於7時
{
off=off+1; //累計一次
}
}
else
{
digitalWrite(13, HIGH);
delay(2000);
}
if
(off>3) //當累積大於3次時
{
off=0;
digitalWrite(9, HIGH); //關閉空氣清淨機
delay(1000);
digitalWrite(9, LOW);
delay(1000);
}
}
}
}
1 則留言:
17200 最討厭就是電子開關~
您這樣改真厲害
張貼留言