親愛的觀眾朋友們,大家早上中午晚上午夜好,歡迎收看裝電視臺天氣預報節目,今天天氣預報的主要內容有:教大家DIY一個天氣監測儀……
一本正經的胡說八道之后,硬創邦的又一個DIY教程來啦,今天的教程確實是一個天氣監測儀,這個自制的監測儀可以監測你所在地點目前的天氣狀況、碳排放量、噪音和污染水平等等數據,還能把這些數據發布到Twitter上,與全世界分享你所在地的天氣狀況。
這款監測儀名為TWIST(Tweeting Weather IoT Station aka TWIST),它算是一個DIY物聯網物件,處理器用了Intel Edison的開發板,可與多種傳感器兼容,所有的代碼和設計文件都是開源的,這就意味著,任何人都可以通過共享代碼和原理圖添加不同的傳感器來改造一個功能更強大的儀器。
好了,廢話不多說,開始教程。
第1步:準備零部件
帶有Arduino接口的Intel Edison開發板
MQ-2傳感器(用于感應可燃氣體和煙霧)
YL-83傳感器(降雨量傳感器)
SL-HS-220傳感器(可監測溫度和濕度等數據)
32K和4.7K電阻
板材木料
3×1" 帶螺母的長螺釘
第2步:電路設計
在這里提供一個電路圖供大家參考
電力供應
整個系統由一個5V 1A的電源供電,傳感器的電力大約為200毫安,Edison開發板需要500毫安,由于所需的總電流小于1A,所以1A的電源應該能讓整個系統工作的很好,在Edison開發板上的綠色LED等能夠顯示電源的連接。
處理板
在TWIST上運行的處理器是一個借了Arduino接口的Edison開發板,這使得它更容易讀取傳感器的數字和模擬信號,Edison內置有WiFi連接,可以直接連到Twitter服務器,不需要任何額外的硬件。
傳感器
這套系統的最基本設置有四個傳感器:溫度、濕度、煙霧、可燃氣體,這些傳感器直接連接到Edison上,另外也可額外添加風力、噪音等傳感器,每個傳感器都由電源處直接供電。這些傳感器都是相對比較靈敏的傳感器。
具體的安裝電路圖參考可以下載這個電路圖。
第3步:外觀設計
TWIST的外殼是由兩塊木板制成的,我們這里使用的是1/4" 的膠合板,要保證兩塊板材的螺母連接部分十分吻合,此外觸感器的連線也需要在板上打孔,所以我們建議如果有條件的話,外殼板的制作使用激光切割,附上激光切割機的控制文件。
第4步:安裝總成
在木板上找到傳感器匹配的孔和切口,并用螺絲或膠水固定。
在另一面固定Edison,連接到雨水傳感器上,如果安裝了太陽能輸入端口或蜂鳴器也可以安裝到這個板上。
第5步:傳感器和控制板的連接
先上圖:
按照模擬電路圖將兩板上的所有傳感器線路都連接到Edison上。
第6步:Twitter的配置
想要將天氣監測儀和Twitter連接,需要獲得Twitter認證令牌才行,你可以在Twitter的開發者網頁獲取,今天的教程使用的是NeoCat設置的,點擊連接,進入網站,按照上面的教程獲取Twitter訪問認證令牌就可以了。
不過,需要注意的是,在NeoCat設置的Twitter不能發的太過頻繁,如果需要頻繁的發送天氣狀況,就需要自己建立一個服務器。
附:
第7步:軟件與配置
接下來需要在開發板中輸入一些Arduino代碼。
設置發送Twitter間隔時間,每三個小時發送一次推文:
tweetMessage();
delay(10800000);
從傳感器中讀取的數據大多都是 'int' 和 'float' 類型,如果想要用Twitter發送,就需要把他們轉換成 'String' ,代碼如下:
char *dtostrf (double val, signed char width, unsigned char prec, char *sout) {
char fmt[100];
sprintf(fmt, "%%%d.%df", width, prec);
sprintf(sout, fmt, val);
return sout;
}
Twitter認證令牌設置,需要在NeoCat網站上創新Twitter認證,就需要將令牌代碼輸入進去:
void tweetMessage() {
Twitter twitter(" ENTER TWITTER TOKEN HERE ");
在推文上發傳感器監測到的值:
humidity();
float humid;
//Twitter message
String stringMsg = "Humidity:";
char tmp[10];
dtostrf(humid, 1, 2, tmp);
stringMsg += tmp;
stringMsg += "%RH";
氣象站的位置和標記,在Twitter上顯示當地地點或標簽,如#iotweatherstn:
stringMsg + =“#Mumbai #Bandra #iotweatherstn”;
推文的140字限制:
char msg[140];
stringMsg.toCharArray(msg, 140);
消息和連接的故障排查,這段代碼可以監測文本的運行,以幫助用戶檢查數據和推文的狀態:
//Tweet that sucker!<br> if (twitter.post(msg))
{
int status = twitter.wait();
if (status == 200)
{
Serial.println("OK.");
Serial.println("Message Tweeted");
}
else
{ //Connection Test
Serial.print("failed : code ");
Serial.println("Message not Tweeted");
Serial.println(status);
}
}
else
{ Serial.println("connection failed.");
Serial.println("Message not Tweeted");
}
<br>
代碼中所有的數據都需要將傳感器的模擬信號轉換為數字信號才可以,這些代碼也可在資源庫中下載,點擊鏈接。
第8步:檢查傳感器
利用上述庫中的代碼監測傳感器的運行狀態,就大功告成了。利用這個你就可以開一個專門告知天氣的無聊營銷號了,不過,Twitter怎么才能上,自己研究吧。