tag:blogger.com,1999:blog-2573408397176312387.post7486721423825012574..comments2023-10-14T08:44:15.232+08:00Comments on ㄆㄜ ㄊㄧㄡ ㄙˋ: 初遇 IoT ( Internet of Thing, 物聯網 ) - 使用 Arduino 控制 ESP8266 無線模組上傳資料到 IoT Server ( ThingSpeak )Ruten.proteushttp://www.blogger.com/profile/01780188542231506811noreply@blogger.comBlogger119125tag:blogger.com,1999:blog-2573408397176312387.post-49027289849727978932020-08-11T18:18:26.622+08:002020-08-11T18:18:26.622+08:00我重新整理了一下上面的程式碼,發現這程式基本上的架構已經不對,應該連編譯都過不了!
如果是初學者,...我重新整理了一下上面的程式碼,發現這程式基本上的架構已經不對,應該連編譯都過不了!<br /><br />如果是初學者,建議直接使用部落格上的程式碼下去改,去了解整個流程後再試著自己去做內部修改才會比較不容易出錯!Ruten.proteushttps://www.blogger.com/profile/01780188542231506811noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-90057505391452105262020-08-11T05:32:19.649+08:002020-08-11T05:32:19.649+08:00您好,我本身不會寫程式...但看了您的文章學Arduino之後,我用ESP32抓取JSON資料和溫溼...您好,我本身不會寫程式...但看了您的文章學Arduino之後,我用ESP32抓取JSON資料和溫溼度上傳hingSpeak,目前想結合2個程式碼,抓取雨量資料的JSON然後上傳hingSpeak,但怎樣編譯都失敗請問可以教我該怎麼弄嗎? 以下是我改的<br />#include <br />#include <br />#include <br />#include <br />#include <br />LiquidCrystal_I2C lcd(0x27, 16, 2); // set the LCD address to 0x27 for a 16 chars and 2 line display<br />//請修改以下參數--------------------------------------------<br />char ssid[] = "a310";//<br />char password[] = "01919803";//<br />char url[] = "https://data.wra.gov.tw/Service/OpenData.aspx?format=json&id=F7C0788D-F513-472D-A80E-1C6372C2FBA5"; //讀取的網址<br />String url = "http://api.thingspeak.com/update?api_key=H8KG3DK1IT0ETUXA&field1=0";//請修改為自己的API Key,並將https改為http<br />//---------------------------------------------------------<br /><br />void setup()<br />{<br /> // wait for WiFi connection<br /> if ((WiFiMulti.run() == WL_CONNECTED))<br /> {<br /> Serial.println("Connected...");<br /> HTTPClient http;//啟動http client物件<br /> Serial.println("開始讀取資料");<br /> http.begin(url); //HTTP取得網頁內容<br /><br /> Serial.print("[HTTP] GET...\n");<br /> // start connection and send HTTP header<br /> int httpCode = http.GET();//了解連線狀態<br /><br /> // httpCode will be negative on error<br /> if (httpCode > 0)<br /> {<br /> Serial.println(httpCode);<br /> // file found at server<br /> if (httpCode == HTTP_CODE_OK)<br /> {<br /> String payload = http.getString();//讀取網頁內容到payload<br /> Serial.print("payload=");<br /> //payload=payload.substring(0,200);//只擷取前面兩百個字<br /> Serial.println(payload);<br /> }<br /> }<br /> else //讀取失敗<br /> {<br /> Serial.println("[HTTP] GET... failed");<br /> }<br /><br /> http.end();<br /> }<br /><br /> delay(20000);<br />}<br />{<br /> Serial.begin(115200);<br /> lcd.init(); // initialize the lcd<br /> lcd.backlight();//open light<br /> Serial.print("開始連線到無線網路SSID:");<br /> Serial.println(ssid);<br /> WiFi.mode(WIFI_STA);<br /> WiFi.begin(ssid, password);<br /> while (WiFi.status() != WL_CONNECTED) {<br /> Serial.print(".");<br /> delay(1000);<br /> }<br /> Serial.println("連線完成");<br />}<br /><br />void loop()<br />{<br /> Serial.print("使用核心編號:");<br /> Serial.println(xPortGetCoreID());<br /> //嘗試讀取雨量內容<br /> byte HourlyRain = 0;<br /> byte EffectiveWaterStorageCapacity = 0;<br /> int err = SimpleDHTErrSuccess;<br /> Serial.print("雨量讀取失敗,錯誤碼="); Serial.println(err); delay(1000);<br /> return;<br /> }<br /> //讀取成功,將溫濕度顯示在序列視窗<br /> Serial.print("雨量讀取成功: ");<br /> Serial.print((int)HourlyRain); Serial.print(" *C, ");<br /> Serial.print((int)EffectiveWaterStorageCapacity); Serial.println(" H");<br /> lcd.init();<br /> lcd.setCursor(0, 0);<br /> lcd.print("HourlyRain:");<br /> lcd.setCursor(12, 0);<br /> lcd.print((int)EffectiveWaterStorageCapacity);<br /> lcd.setCursor(14, 0);<br /> lcd.print("\xDF""C");<br /><br /><br /> lcd.setCursor(0, 1);<br /> lcd.print("HourlyRain:");<br /> lcd.setCursor(12, 1);<br /> lcd.print((int)EffectiveWaterStorageCapacity);<br /> lcd.setCursor(14, 1);<br /> lcd.print("%");<br /> //開始傳送到thingspeak<br /> Serial.println("啟動網頁連線");<br /> HTTPClient http;<br /> //將溫度及濕度以http get參數方式補入網址後方<br /> String url1 = url + "&field1=" + (int)HourlyRain + "&field2=" + (int)EffectiveWaterStorageCapacity;//請修改為你自己想上傳的參數<br /> //http client取得網頁內容<br /> http.begin(url1);<br /> int httpCode = http.GET();<br /> if (httpCode == HTTP_CODE_OK) {<br /> //讀取網頁內容到payload<br /> String payload = http.getString();<br /> //將內容顯示出來<br /> Serial.print("網頁內容=");<br /> Serial.println(payload);<br /> } else {<br /> //讀取失敗<br /> Serial.println("網路傳送失敗");<br /> }<br /> http.end();<br /> delay(20000);//休息20秒<br />}Anonymoushttps://www.blogger.com/profile/11813948159221449315noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-77043005056996349522019-12-11T09:29:50.192+08:002019-12-11T09:29:50.192+08:00這網頁裡面的程式碼式是上傳到 Arduino UNO 開發板的,ESP-01S 是被 AT 指令控制...這網頁裡面的程式碼式是上傳到 Arduino UNO 開發板的,ESP-01S 是被 AT 指令控制的受控端,不需要對它上傳任何程式。Ruten.proteushttps://www.blogger.com/profile/01780188542231506811noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-81163500156577826482019-12-10T22:47:02.404+08:002019-12-10T22:47:02.404+08:00老師你好 我想問一下
目前我先把WIFI 燒到ESP-01s裡面了
那我上傳THINGSPEAK的語...老師你好 我想問一下<br />目前我先把WIFI 燒到ESP-01s裡面了<br />那我上傳THINGSPEAK的語法是要打在UNO上嗎?<br />還是ESP裡面?? <br />謝老師Anonymoushttps://www.blogger.com/profile/00488863474998016627noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-27100463360706470882019-01-16T14:46:19.827+08:002019-01-16T14:46:19.827+08:00就是程式執行時候的輸出!
請先花時間看一下上面的問與答,或許就會有你要的答案。就是程式執行時候的輸出!<br />請先花時間看一下上面的問與答,或許就會有你要的答案。Ruten.proteushttps://www.blogger.com/profile/01780188542231506811noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-58593846578931464862019-01-16T14:08:00.276+08:002019-01-16T14:08:00.276+08:00抱歉 我不懂老師意思,什麼是LOG?抱歉 我不懂老師意思,什麼是LOG?Anonymoushttps://www.blogger.com/profile/00840186634867791424noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-44793759413434031862019-01-16T13:56:34.206+08:002019-01-16T13:56:34.206+08:00有輸出的 LOG 嗎?有輸出的 LOG 嗎?Ruten.proteushttps://www.blogger.com/profile/01780188542231506811noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-28599098392943121212019-01-16T13:48:18.798+08:002019-01-16T13:48:18.798+08:00老師您好~ 我想請教老師為什麼資料上傳一段時間之後會失敗會是回傳 error 的問題,硬體的部分,有...老師您好~ 我想請教老師為什麼資料上傳一段時間之後會失敗會是回傳 error 的問題,硬體的部分,有接電源模組以及電壓準位轉換器,所以排除電源不足的問題,還是說會是esp8266模組韌體的問題,我有用AT v1.2.0.0 SDK v1.5.4.1版本是過也一樣,會是程式上的問題嗎?我不太清楚什麼原因造成的,這問題我卡很久了,希望老師能幫我解答,該如何解決 謝謝~<br />SSID跟PASS就略過,上傳的資料是簡單的電阻分壓,再透過MCU去讀取它的AD值<br />----------------------------------------------------------------------------------------------------------------<br />#include <br />#include <br />#define _baudrate 9600<br />#define _rxpin 3<br />#define _txpin 2<br />SoftwareSerial debug( _rxpin, _txpin ); // RX, TX<br />//*-- IoT Information<br />#define SSID "帳" //WIFI的AP Name<br />#define PASS "密" //WIFI的AP pwsd<br />#define IP "184.106.153.149" // ThingSpeak IP Address: 184.106.153.149<br />// 使用 GET 傳送資料的格式<br />// GET /update?key=[THINGSPEAK_KEY]&field1=[data 1]&filed2=[data 2]...;<br />String GET = "GET /update?key=WZB4X9K5GDIOBLUH";<br />float deg=0;<br />float rad=deg*PI/180;<br />byte i=0;<br /><br />void setup() {<br /> Serial.begin( _baudrate );<br /> debug.begin( _baudrate );<br /> sendDebug("AT");<br /> Loding("sent AT");<br /> connectWiFi();<br />}<br />void loop() {<br /> delay(5000); // 60 second 5000 , 2500 =30sec<br /> SentOnCloud( String(analogRead(15)), String(analogRead(15)) ); //SEND DATA 5 AND 9<br /> //delay(2500); // 60 second 5000 ,, 2500 =30sec<br /> //SentOnCloud( String(-5), String(-9) ); //SEND DATA 5 AND 9<br /><br /> /*<br /> for (i=100;i<=200;i=i+5) {<br /> randomSeed(i);<br /> deg==random(180);<br /> rad=deg*PI/180;<br /> SentOnCloud( String(10*sin(rad)), String(-10*cos(rad))); //SEND DATA sin(rad) AND cos(rad)<br /> delay(2500); // 60 second 5000 ,, 2500 =30sec<br /> <br /> } */<br /> <br />}<br />boolean connectWiFi()<br />{<br /> debug.println("AT+CWMODE=1");<br /> Wifi_connect();<br />}<br /><br />void SentOnCloud( String T, String H )<br />{<br /> // 設定 ESP8266 作為 Client 端<br /> String cmd = "AT+CIPSTART=\"TCP\",\"";<br /> cmd += IP;<br /> cmd += "\",80";<br /> sendDebug(cmd);<br /> if( debug.find( "Error" ) )<br /> {<br /> Serial.print( "RECEIVED: Error\nExit1" );<br /> return;<br /> <br /> }<br /> cmd = GET + "&field1=" + T + "&field2=" + H +"\r\n";<br /> debug.print( "AT+CIPSEND=" );<br /> debug.println( cmd.length() );<br /> if(debug.find( ">" ) )<br /> {<br /> Serial.print(">");<br /> Serial.print(cmd);<br /> debug.print(cmd);<br /> }<br /> else<br /> {<br /> debug.print( "AT+CIPCLOSE" );<br /> }<br /> if( debug.find("OK") )<br /> {<br /> Serial.println( "RECEIVED: OK" );<br /> }<br /> else<br /> {<br /> Serial.println( "RECEIVED: Error\nExit2" );<br /> }<br />}<br />void Wifi_connect()<br />{<br /> String cmd="AT+CWJAP=\"";<br /> cmd+=SSID;<br /> cmd+="\",\"";<br /> cmd+=PASS;<br /> cmd+="\"";<br /> sendDebug(cmd);<br /> Loding("Wifi_connect");<br />}<br />void Loding(String state){<br /> for (int timeout=0 ; timeout<10 ; timeout++)<br /> {<br /> if(debug.find("OK"))<br /> {<br /> Serial.println("RECEIVED: OK");<br /> break;<br /> }<br /> else if(timeout==9){<br /> Serial.print( state );<br /> Serial.println(" fail...\nExit2");<br /> }<br /> else<br /> {<br /> Serial.print("Wifi Loading...");<br /> delay(500);<br /> }<br /> }<br />}<br />void sendDebug(String cmd)<br />{<br /> Serial.print("SEND: ");<br /> Serial.println(cmd);<br /> debug.println(cmd);<br />} Anonymoushttps://www.blogger.com/profile/00840186634867791424noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-27253688808496107312018-08-26T11:28:01.516+08:002018-08-26T11:28:01.516+08:00即使不能直接下載,但是在 "DATA import / export" 網頁頁面...即使不能直接下載,但是在 "DATA import / export" 網頁頁面下的右半部說明了可以使用 HTTP GET 的方式來取得 Channel 上面的部分或是全部的數據,例如使用下面網頁中所提及的方法<br />https://www.mathworks.com/help/thingspeak/readdata.html<br />假設 channel 號碼是 14725,要取得所有 Fields 的數據 (假設數據點共有 350 點),並以 CSV 的方式回傳,可在網址列輸入:<br />https://api.thingspeak.com/channels/14725/feeds.csv?results=350<br />可得到類似下面的 CSV 數據資料<br />-------------------------------------<br />created_at,entry_id,field1,field2<br />2017-01-04 09:10:31 UTC,1,23,60<br />2017-01-04 09:11:32 UTC,2,23,61<br />2017-01-04 09:12:32 UTC,3,23,61<br />...<br />2017-01-04 15:02:11 UTC,348,28,44<br />2017-01-04 15:03:10 UTC,349,28,44<br />2017-01-04 15:04:11 UTC,350,29,43<br />-------------------------------------<br />若要限定時間點(2018/08/20 10:01:02 ~ 2018/08/26 15:04:05,則輸入<br />https://api.thingspeak.com/channels/14725/feeds.csv?start=2018-08-20%2010:01:02&end=2018-08-26%2015:04:05<br />使用這樣的方式就可取得 Channel 裡面的資料,更詳細的資料請自行參考上述網頁裡面的說明。Ruten.proteushttps://www.blogger.com/profile/01780188542231506811noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-50312325295978246252018-08-17T04:00:07.853+08:002018-08-17T04:00:07.853+08:00您好 我最近收集了一批資料,之前可以從DATA import/export處進行下載
不過今日卻發現...您好 我最近收集了一批資料,之前可以從DATA import/export處進行下載<br />不過今日卻發現他無法直接下載,而且還需要寄信給到他們的信箱<br />我剛剛計過去後系統告訴我他們的信箱已經滿了<br />想請問一下您對這問題有解答嗎 感恩Anonymoushttps://www.blogger.com/profile/14094448990772706243noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-24191177839877297382017-07-06T13:12:21.437+08:002017-07-06T13:12:21.437+08:00若照著網頁中的步驟做,且確定手動輸入沒有問題,但輸出與網頁不一樣時,就是與 ESP8266 間的接線...若照著網頁中的步驟做,且確定手動輸入沒有問題,但輸出與網頁不一樣時,就是與 ESP8266 間的接線出現問題!<br />相關檢查的步驟請自行參閱問與答中的說明。<br />Ruten.proteushttps://www.blogger.com/profile/01780188542231506811noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-81373868384669920012017-07-06T09:48:35.224+08:002017-07-06T09:48:35.224+08:00版主,你好
我想請問,我手機可以連的wifi和密碼,套用到這裡的SSID、PASS 是可以的嗎?? ...版主,你好<br />我想請問,我手機可以連的wifi和密碼,套用到這裡的SSID、PASS 是可以的嗎?? <br />UART 我的畫面都沒有AT+CWJAP<br /><br />UART指令畫面如下:<br />SEND: AT<br /><br />OK<br />SEND: AT+CIPSTART="TCP","184.106.153.149",80<br /><br />OK<br />Linked<br />SEND: AT+CIPCLOSE<br /><br />OK<br />Unlink<br />RECEIVED: Error<br />Error<br />Exit2<br /><br />Error<br />Humidity: 48 % Temperature: 24 *C <br /><br /><br />追隨上帝的新鮮人https://www.blogger.com/profile/13053598439378328878noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-91440563616689019592017-05-02T16:12:59.463+08:002017-05-02T16:12:59.463+08:00沒有!
若是單純要用電腦架 web server 來接收 Arduino 的資料,主要就是要看怎麼去...沒有!<br />若是單純要用電腦架 web server 來接收 Arduino 的資料,主要就是要看怎麼去收 Arduino 傳過來的資料,可以是直接由 Serial 接收,也可以經由網路的方式。<br />前者應該就是寫 PC 端的 RS232 程式接收資料再反應到網站上;後者的處理就是使用 CGI 的方式去處理後台,也就是處理傳送過來 Get 或是 post 資料,可以用 PHP 或是 JavaScript 去處理或是其他可用的程式語言。<br />以上,提供作參考 !Ruten.proteushttps://www.blogger.com/profile/01780188542231506811noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-29305985403351142032017-05-02T15:43:53.055+08:002017-05-02T15:43:53.055+08:00版主你好
請問如果想要自己寫一個asp.net的網站,接收arduino的資料
有相關的資訊嗎? 謝...版主你好<br />請問如果想要自己寫一個asp.net的網站,接收arduino的資料<br />有相關的資訊嗎? 謝謝Anonymoushttps://www.blogger.com/profile/16094273119468068625noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-11022677701375820792017-04-10T20:47:41.032+08:002017-04-10T20:47:41.032+08:00http://api.thingspeak.com/update?api_key=ZKANMZVA3...http://api.thingspeak.com/update?api_key=ZKANMZVA3YINU7L9&field1=10&field2=15<br />這個的格式是對的,剩餘的就是指令下的問題,這參照上面的問與答,有相關的例子可以參考!Ruten.proteushttps://www.blogger.com/profile/01780188542231506811noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-64673134364308258142017-04-10T20:10:30.259+08:002017-04-10T20:10:30.259+08:00版主您好
以下是我用 Realterm 叫 esp8266 傳給 Thingspeak 的情況
但 ...版主您好<br />以下是我用 Realterm 叫 esp8266 傳給 Thingspeak 的情況<br />但 Thingspeak 卻回傳 400 Bad Request <br />之前試過一樣的步驟似乎沒問題 但是之後卻不行了<br />是不是有遺失字元或其他原因<br />麻煩版主指導 ((一個小新手看網頁做的實驗<br /><br />OK <br />> // GET /update?api_key=ZKANMZVA3YINU7L9&field1=5&field2=7 <br />Recv 56 bytes <br /> <br />SEND OK <br /> <br />+IPD,172: <br />400 Bad Request <br /> <br />400 Bad Request <br />nginx/1.7.5 <br /> <br /> <br />CLOSED <br />Anonymoushttps://www.blogger.com/profile/03270308993779547427noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-89821345600185457962017-03-27T22:51:13.488+08:002017-03-27T22:51:13.488+08:00恩....我發現了....
實在是演殘...恩....我發現了....<br />實在是演殘...黑風風兒https://www.blogger.com/profile/15841655700662166544noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-58832800124159153102017-03-27T22:50:08.566+08:002017-03-27T22:50:08.566+08:00cmd0 = GET + "&field1=0&field2=0&...cmd0 = GET + "&field1=0&field2=0&field3=0&field4=0" + "r/n";<br />仔細看一下上面這一行,對照一下,就不難發現哪邊寫錯了!Ruten.proteushttps://www.blogger.com/profile/01780188542231506811noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-6259512080614866882017-03-27T22:00:34.719+08:002017-03-27T22:00:34.719+08:00謝謝版主指導,已經解決了這個問題,但問題一波未平一波起
我現在做上傳的動作,在VOID SETUP的...謝謝版主指導,已經解決了這個問題,但問題一波未平一波起<br />我現在做上傳的動作,在VOID SETUP的區塊做以下指令:<br /> String cmd0 = "AT+CIPSTART=\"TCP\",\"";<br /> cmd0 += IP;<br /> cmd0 += "\",80";<br /> sendDebug(cmd0);<br /> delay(200);<br />if( Serial.find( "Error" ) )<br /> {<br /> debug.print( "RECEIVED: Error\nExit1" );<br /> return;<br /> }<br /> cmd0 = GET + "&field1=0&field2=0&field3=0&field4=0" + "r/n";<br /> Serial.print( "AT+CIPSEND=" ); <br /> Serial.println( cmd0.length() );<br /> delay(100);<br />if(Serial.find( ">" ) )<br /> {<br /> debug.print(">");<br /> debug.print(cmd0);<br /> Serial.print(cmd0);<br /> }<br />else<br /> {<br /> sendDebug( "AT+CIPCLOSE" );<br /> }<br />if( Serial.find("OK") )<br /> {<br /> debug.println( "RECEIVED: OK" );<br /> }<br />else<br /> {<br /> debug.println( "RECEIVED: Error\nExit2" );<br /> }<br />但是我從thingspeak中看field4的狀態卻出現field4:0r<br />這是怎麼回事?黑風風兒https://www.blogger.com/profile/15841655700662166544noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-46740853160876158742017-03-18T00:03:22.958+08:002017-03-18T00:03:22.958+08:00那跟我猜測的結果一樣!最大的可能是因為資料上傳間隔的問題造成,其實可以試一下拉長切換的時間試試,應該...那跟我猜測的結果一樣!最大的可能是因為資料上傳間隔的問題造成,其實可以試一下拉長切換的時間試試,應該就不會,但也有可能時好時壞 !<br /><br />那兩個 if 判斷式可以整合成一個副程式來用,應該就可以解決這個問題 ! 如果不行,就要看一下程式是不是在時間間隔未到之前就重復上傳資料到 thingspeak, 這會造成錯誤的!Ruten.proteushttps://www.blogger.com/profile/01780188542231506811noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-37737519003482145742017-03-17T22:57:56.443+08:002017-03-17T22:57:56.443+08:00一樣的情況一樣的情況黑風風兒https://www.blogger.com/profile/15841655700662166544noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-84790577394166594262017-03-17T00:40:30.524+08:002017-03-17T00:40:30.524+08:00可以反過來試一下先做第二個條件是再做第一個,看看是不是一樣的情況!可以反過來試一下先做第二個條件是再做第一個,看看是不是一樣的情況!Ruten.proteushttps://www.blogger.com/profile/01780188542231506811noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-13495814552118269112017-03-16T23:40:04.281+08:002017-03-16T23:40:04.281+08:00他們是 輸入角位
我是要讓他們達到我所設定的狀態才做上傳動作
所以簡單來說我做了一次的上傳,做第二次...他們是 輸入角位<br />我是要讓他們達到我所設定的狀態才做上傳動作<br />所以簡單來說我做了一次的上傳,做第二次時卻會失敗出現<br />AT+CIPSTART="TCP","184.106.153.149",80<br />AT+CIPSEND=43<br />AT+CIPCLOSE<br />黑風風兒https://www.blogger.com/profile/15841655700662166544noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-82883002558550919162017-03-16T23:15:49.333+08:002017-03-16T23:15:49.333+08:00測試成功!
我應用了版主的程式如下:
if(digitalRead(re1) == 0 &...測試成功!<br />我應用了版主的程式如下:<br /> if(digitalRead(re1) == 0 && digitalRead(HG_switch) == 1)<br /> {<br /> digitalWrite(LED_R1 ,LOW);<br /> digitalWrite(LED_G1 , HIGH);<br /> String cmd1 = "AT+CIPSTART=\"TCP\",\"";<br /> cmd1 += IP;<br /> cmd1 += "\",80";<br /> sendDebug(cmd1);<br /> delay(1000);<br /> if( Serial.find( "Error" ) )<br /> {<br /> debug.print( "RECEIVED: Error\nExit1" );<br /> return;<br /> }<br /> cmd1 = GET + "&field1=1" +"\r\n";<br /> Serial.print( "AT+CIPSEND=" );<br /> Serial.println( cmd1.length() );<br /> delay(100);<br /> if(Serial.find( ">" ) )<br /> {<br /> debug.print(">");<br /> debug.print(cmd1);<br /> Serial.print(cmd1);<br /> }<br /> else<br /> {<br /> sendDebug( "AT+CIPCLOSE" );<br /> }<br /> delay(100);<br /> if( Serial.find("OK") )<br /> {<br /> debug.println( "RECEIVED: OK" );<br /> }<br /> else<br /> {<br /> debug.println( "RECEIVED: Error\nExit2" );<br /> }<br /> }<br />if(digitalRead(re2) == 0 && digitalRead(HG_switch) == 1)<br /> {<br /> digitalWrite(LED_R2 ,LOW);<br /> digitalWrite(LED_G2 , HIGH);<br /> String cmd2 = "AT+CIPSTART=\"TCP\",\"";<br /> cmd2 += IP;<br /> cmd2 += "\",80";<br /> sendDebug(cmd2);<br /> delay(1000);<br />if( Serial.find( "Error" ) )<br /> {<br /> debug.print( "RECEIVED: Error\nExit1" );<br /> return;<br /> }<br /> cmd2 = GET + "&field2=1" +"\r\n";<br /> Serial.print( "AT+CIPSEND=" );<br /> Serial.println( cmd2.length() );<br /> delay(100);<br />if(Serial.find( ">" ) )<br /> {<br /> debug.print(">");<br /> debug.print(cmd2);<br /> Serial.print(cmd2);<br /> }<br />else<br /> {<br /> sendDebug( "AT+CIPCLOSE" );<br /> }<br /> delay(100);<br />if( Serial.find("OK") )<br /> {<br /> debug.println( "RECEIVED: OK" );<br /> }<br />else<br /> {<br /> debug.println( "RECEIVED: Error\nExit2" );<br /> }<br />}<br />我所遇到的問題如下:<br />我將 re1接地、hg_switch 接HIGH ,並且有成功上傳THINGSPEAK<br />然後我將 re1、hg_switch復位(re1 high、hg_switch low)<br />但是我將re2接地、hg_switch接high,但在監控序列卻傳回<br />AT+CIPSTART="TCP","184.106.153.149",80<br />AT+CIPSEND=43<br />AT+CIPCLOSE<br />這是怎麼回事?要如何解決?<br />黑風風兒https://www.blogger.com/profile/15841655700662166544noreply@blogger.comtag:blogger.com,1999:blog-2573408397176312387.post-90026457050980512752017-03-12T00:16:15.903+08:002017-03-12T00:16:15.903+08:00GET /update?key=DUKST8GWAURKK1R0&field2=1
^...GET /update?key=DUKST8GWAURKK1R0&field2=1<br /> ^ 空一格<br />最後面還要加上 \r\n 兩個字元,所以應該是 AT+CIPSEND=43<br /><br />網址手動輸入如果是正常,那麼最大的問題就是 AT 指令輸入有問題;其實值接使用程式碼測試應該就可以成功!Ruten.proteushttps://www.blogger.com/profile/01780188542231506811noreply@blogger.com