|
試驗(yàn)名稱:2560+W5100試驗(yàn)實(shí)時(shí)室溫對Pachubbe.com推送
試驗(yàn)時(shí)間:2014-02-18
控制板:arduino 2560
元器件:LM-35 DZ模擬傳感器一只,正對標(biāo)示,從左往右,+5V,模擬輸出,GND
連接方法:接好+5V,GND,將LM35的模擬輸出接2560的模擬PIN4
W5100連接至你的路由器,路由器連接互聯(lián)網(wǎng),PC連接2560便于觀察網(wǎng)絡(luò)連接以及數(shù)據(jù)采集情況
結(jié)果運(yùn)用 : Tep= ** C;將實(shí)時(shí)室溫傳感器數(shù)據(jù)推送至www.pachube.com,每10秒刷新一次
代碼原型:(1)官方例程pachubeout(-使用 ERxPachube 庫的實(shí)例. )
(2)弘毅教程--學(xué)習(xí)筆記11,
(3)其它結(jié)合網(wǎng)絡(luò)資源整理
* 本實(shí)例創(chuàng)建于2011.04.22,作者是Jeffrey Sun
* 開源項(xiàng)目詳見http://code.google.com/p/pachubelibrary/
所需要的庫在此處下載http://code.google.com/p/pachube ... ip&can=2&q=,釋放至此處:
225845vlzsc6le5vs0yc96.png (14.34 KB, 下載次數(shù): 144)
下載附件
2016-4-10 01:50 上傳
第一步:
如果你還沒有一個(gè) Pachube 賬戶, 先去注冊一個(gè) (http://www.pachube.com/).注意,有一個(gè)開發(fā)賬號和一個(gè)通訊組討論賬號,我們需要前者。注冊成功后,我們將獲得一個(gè)API key
pahube.com是一個(gè)免費(fèi)的提供給開發(fā)者的實(shí)時(shí)數(shù)據(jù)上送、展示的網(wǎng)站。內(nèi)置API,使用者只需要調(diào)用API(給出feed的ID),就可以將傳感器數(shù)據(jù)推送至你自己獨(dú)享的feed數(shù)據(jù)庫。然后以圖形方式進(jìn)行豐富展示。
2249362gvcssljc9mr4mes.png (11.66 KB, 下載次數(shù): 159)
下載附件
2016-4-10 01:50 上傳
第二步:創(chuàng)建一個(gè)類似http://www.pachube.com/feeds/23408這樣的素材庫(feed)
為了測試,我們只需要創(chuàng)建一個(gè)ID為0的數(shù)據(jù)流
以下就是我建立的一個(gè)ID號碼為49030的feed,需要設(shè)置項(xiàng)目名稱、簡介、關(guān)鍵詞(便于檢索)、項(xiàng)目的位置(經(jīng)緯度、海拔、室內(nèi)還是室外、移動還是固定等等)、數(shù)據(jù)表ID編號、表述、單位等。支持多數(shù)據(jù)ID。你可以在一個(gè)素材中推送多個(gè)傳感器數(shù)據(jù),數(shù)據(jù)格式有長型、字符型等。
2320377ck4c2kz77s3s721.png (5.37 KB, 下載次數(shù): 155)
下載附件
2016-4-10 01:50 上傳
第三步:
將以太網(wǎng)擴(kuò)展板(W5100)堆疊至2560板上。LM35接2560的模擬輸入(PIN 4)
231839vvh8zvqrym3hhoyy.png (395.45 KB, 下載次數(shù): 151)
下載附件
2016-4-10 01:50 上傳
第四步:輸入、編譯代碼
代碼一共分為個(gè)部分:
1、設(shè)置MAC地址、IP地址,API KEY以及FEED ID
2、連接互聯(lián)網(wǎng),將溫度傳感器數(shù)據(jù)轉(zhuǎn)換為攝氏度,然后推送至pachube.com
3、在串口助手中,監(jiān)視網(wǎng)絡(luò)連接情況,以及傳感器數(shù)據(jù),狀態(tài)值為200則連接成功,否則不成功
234057tfiviyzzf7mtuwsr.png (52.06 KB, 下載次數(shù): 146)
下載附件
2016-4-10 01:50 上傳
第五步:在www.pachube.com中觀察你的數(shù)據(jù)
為了引起溫度波動,圖中的兩處波動是我用手指貼近FM35后造成的波動。
230226gq7ir1744kgpiq54.png (40.4 KB, 下載次數(shù): 149)
下載附件
2016-4-10 01:50 上傳
后記:
本實(shí)例學(xué)習(xí)過程中,先后遇到了W5100不能穩(wěn)定工作、無線路由器損壞、找不到一個(gè)實(shí)時(shí)推送數(shù)據(jù)的網(wǎng)站等問題,感謝弘毅、HEAVEN、小強(qiáng)、張丹、風(fēng)的孩子等高手支持。我是以arduino為興趣的一個(gè)軟硬件基礎(chǔ)都很薄弱的初學(xué)者,但是興趣是最大的推動力。這個(gè)實(shí)例的學(xué)習(xí)僅僅是將一個(gè)開源項(xiàng)目與弘毅筆記簡單的組合,即便是一個(gè)簡單的嘗試也感到很多困難,里面如有理解錯(cuò)誤的地方敬請指正。
附代碼:
- /*項(xiàng)目名稱:LM35溫度傳感器連接2560向www.pachube,cin推送數(shù)據(jù)試驗(yàn)
- 試驗(yàn)時(shí)間:2012-02-18
- * 本實(shí)例創(chuàng)建于2011.04.22,作者是Jeffrey Sun
- * 開源項(xiàng)目詳見[url]http://code.google.com/p/pachubelibrary/[/url]
- */
- #include
- #include
- #include //調(diào)用ERxPachube庫
- #include
- #include
- byte mac[] = { 0xCC, 0xAC, 0xBE, 0xEF, 0xFE, 0x91 }; // 確認(rèn)這是你網(wǎng)絡(luò)中唯一的MAC地址,用小強(qiáng)的話說,你就是網(wǎng)卡廠商,自己定一個(gè)
- byte ip[] = { 192, 168, 1, 177 }; // 設(shè)置以太網(wǎng)擴(kuò)展板的IP地址
- #define PACHUBE_API_KEY "Your API_KEY" // 填寫你自己的 API key
- #define PACHUBE_FEED_ID Your Feed Id // 填寫你自己的素材ID( feed id)
- //定義三個(gè)FM35用的變量
- int potPin = 4; //設(shè)置模擬口4為LM35的信號輸入端口
- float temperature = 0; //設(shè)置temperature為浮點(diǎn)變量
- long val = 0; //設(shè)置val為長整數(shù)變量
-
-
- ERxPachubeDataOut dataout(PACHUBE_API_KEY, PACHUBE_FEED_ID);
- void PrintDataStream(const ERxPachube& pachube); //在COM口監(jiān)測本地溫度傳感器推送情況
- void setup() {
- Serial.begin(9600);
- Ethernet.begin(mac, ip); //訪問以太網(wǎng)擴(kuò)展板
- dataout.addData(0); //向[url]www.pachube.com[/url]推送數(shù)據(jù)序列0(轉(zhuǎn)換后的溫度)
- }
- void loop() {
- Serial.println("+++++++++++++++++++++++++++++++++++++++++++++++++");
- val = analogRead(potPin);//溫度傳感器LM35接到模擬PIN4上;val變量為從LM35信號口讀取到的數(shù)值
- temperature = (val*0.0048828125*100);
- //把讀取到的val轉(zhuǎn)換為溫度數(shù)值,系數(shù)一:0.00488125=5/1024,0~5V對應(yīng)模擬口讀數(shù)
- //1~1024,系數(shù)二:100=1000/10,1000是毫伏與伏的轉(zhuǎn)換;10是每10毫伏對應(yīng)一度溫升。
- dataout.updateData(0, temperature);
- int status = dataout.updatePachube();
- Serial.print("sync status code => ");
- Serial.println(status); //如果狀態(tài)碼是200,則互聯(lián)網(wǎng)連接成功
- PrintDataStream(dataout);
- delay(10000);
- }
- void PrintDataStream(const ERxPachube& pachube)
- {
- unsigned int count = pachube.countDatastreams();
- Serial.print("data count=> ");
- Serial.println(count);
- Serial.println(",");
- Serial.print(pachube.getIdByIndex(0));
- Serial.print(",");
- Serial.print(pachube.getValueByIndex(0));
- Serial.println();
- }
復(fù)制代碼
|
|