2
本文作者: 趙青暉 | 2015-10-27 20:08 |
親愛的觀眾朋友們,大家早上中午晚上午夜好,歡迎收看裝電視臺(tái)天氣預(yù)報(bào)節(jié)目,今天天氣預(yù)報(bào)的主要內(nèi)容有:教大家DIY一個(gè)天氣監(jiān)測(cè)儀……
一本正經(jīng)的胡說(shuō)八道之后,硬創(chuàng)邦的又一個(gè)DIY教程來(lái)啦,今天的教程確實(shí)是一個(gè)天氣監(jiān)測(cè)儀,這個(gè)自制的監(jiān)測(cè)儀可以監(jiān)測(cè)你所在地點(diǎn)目前的天氣狀況、碳排放量、噪音和污染水平等等數(shù)據(jù),還能把這些數(shù)據(jù)發(fā)布到Twitter上,與全世界分享你所在地的天氣狀況。
這款監(jiān)測(cè)儀名為TWIST(Tweeting Weather IoT Station aka TWIST),它算是一個(gè)DIY物聯(lián)網(wǎng)物件,處理器用了Intel Edison的開發(fā)板,可與多種傳感器兼容,所有的代碼和設(shè)計(jì)文件都是開源的,這就意味著,任何人都可以通過(guò)共享代碼和原理圖添加不同的傳感器來(lái)改造一個(gè)功能更強(qiáng)大的儀器。
好了,廢話不多說(shuō),開始教程。
帶有Arduino接口的Intel Edison開發(fā)板
MQ-2傳感器(用于感應(yīng)可燃?xì)怏w和煙霧)
YL-83傳感器(降雨量傳感器)
SL-HS-220傳感器(可監(jiān)測(cè)溫度和濕度等數(shù)據(jù))
32K和4.7K電阻
板材木料
3×1" 帶螺母的長(zhǎng)螺釘
在這里提供一個(gè)電路圖供大家參考
電力供應(yīng)
整個(gè)系統(tǒng)由一個(gè)5V 1A的電源供電,傳感器的電力大約為200毫安,Edison開發(fā)板需要500毫安,由于所需的總電流小于1A,所以1A的電源應(yīng)該能讓整個(gè)系統(tǒng)工作的很好,在Edison開發(fā)板上的綠色LED等能夠顯示電源的連接。
處理板
在TWIST上運(yùn)行的處理器是一個(gè)借了Arduino接口的Edison開發(fā)板,這使得它更容易讀取傳感器的數(shù)字和模擬信號(hào),Edison內(nèi)置有WiFi連接,可以直接連到Twitter服務(wù)器,不需要任何額外的硬件。
傳感器
這套系統(tǒng)的最基本設(shè)置有四個(gè)傳感器:溫度、濕度、煙霧、可燃?xì)怏w,這些傳感器直接連接到Edison上,另外也可額外添加風(fēng)力、噪音等傳感器,每個(gè)傳感器都由電源處直接供電。這些傳感器都是相對(duì)比較靈敏的傳感器。
具體的安裝電路圖參考可以下載這個(gè)電路圖。
TWIST的外殼是由兩塊木板制成的,我們這里使用的是1/4" 的膠合板,要保證兩塊板材的螺母連接部分十分吻合,此外觸感器的連線也需要在板上打孔,所以我們建議如果有條件的話,外殼板的制作使用激光切割,附上激光切割機(jī)的控制文件。
在木板上找到傳感器匹配的孔和切口,并用螺絲或膠水固定。
在另一面固定Edison,連接到雨水傳感器上,如果安裝了太陽(yáng)能輸入端口或蜂鳴器也可以安裝到這個(gè)板上。
先上圖:
按照模擬電路圖將兩板上的所有傳感器線路都連接到Edison上。
想要將天氣監(jiān)測(cè)儀和Twitter連接,需要獲得Twitter認(rèn)證令牌才行,你可以在Twitter的開發(fā)者網(wǎng)頁(yè)獲取,今天的教程使用的是NeoCat設(shè)置的,點(diǎn)擊連接,進(jìn)入網(wǎng)站,按照上面的教程獲取Twitter訪問認(rèn)證令牌就可以了。
不過(guò),需要注意的是,在NeoCat設(shè)置的Twitter不能發(fā)的太過(guò)頻繁,如果需要頻繁的發(fā)送天氣狀況,就需要自己建立一個(gè)服務(wù)器。
附:
接下來(lái)需要在開發(fā)板中輸入一些Arduino代碼。
設(shè)置發(fā)送Twitter間隔時(shí)間,每三個(gè)小時(shí)發(fā)送一次推文:
tweetMessage();
delay(10800000);
從傳感器中讀取的數(shù)據(jù)大多都是 'int' 和 'float' 類型,如果想要用Twitter發(fā)送,就需要把他們轉(zhuǎn)換成 '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認(rèn)證令牌設(shè)置,需要在NeoCat網(wǎng)站上創(chuàng)新Twitter認(rèn)證,就需要將令牌代碼輸入進(jìn)去:
void tweetMessage() {
Twitter twitter(" ENTER TWITTER TOKEN HERE ");
在推文上發(fā)傳感器監(jiān)測(cè)到的值:
humidity();
float humid;
//Twitter message
String stringMsg = "Humidity:";
char tmp[10];
dtostrf(humid, 1, 2, tmp);
stringMsg += tmp;
stringMsg += "%RH";
氣象站的位置和標(biāo)記,在Twitter上顯示當(dāng)?shù)氐攸c(diǎn)或標(biāo)簽,如#iotweatherstn:
stringMsg + =“#Mumbai #Bandra #iotweatherstn”;
推文的140字限制:
char msg[140];
stringMsg.toCharArray(msg, 140);
消息和連接的故障排查,這段代碼可以監(jiān)測(cè)文本的運(yùn)行,以幫助用戶檢查數(shù)據(jù)和推文的狀態(tài):
//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>
代碼中所有的數(shù)據(jù)都需要將傳感器的模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)才可以,這些代碼也可在資源庫(kù)中下載,點(diǎn)擊鏈接。
利用上述庫(kù)中的代碼監(jiān)測(cè)傳感器的運(yùn)行狀態(tài),就大功告成了。利用這個(gè)你就可以開一個(gè)專門告知天氣的無(wú)聊營(yíng)銷號(hào)了,不過(guò),Twitter怎么才能上,自己研究吧。
今天的教程結(jié)束了,BTW,敢不敢關(guān)注硬創(chuàng)邦??。?/p>
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。