Arduino--ESP8266物联网WIFI模块(贝壳物联)--数据上传服务器(单数据接口)
一、簡介
隨著移動物聯網的發展,各場景下對于物聯控制、數據上傳、遠程控制的訴求也越來越多,基于此樂鑫科技推出了便宜好用性價比極高的wifi物聯模塊——ESP8266,話不多少我們先來看看這個神奇的模塊長什么樣子!
下圖是ESP8266-01模塊,與之對應的還有ESP8266-01S,兩者基本一致,只是后者內部集成了上拉電阻,ESP8266-01使用的時候需要手動接上拉電阻。
除了上述簡單的wifi模塊外,還有如下圖所示的WIFI模組,該模組集成了MCU控制器,不用再外接控制器了。
ESP8266是智能家居等物聯網場景下常用的數傳模塊,具有強大的功能,通過串口轉WIFI的方式可實現遠距離無線數據傳輸、遠程控制、在線查詢等基本物聯網訴求!
本系列文章就基于ESP8266-01S+Arduino進行簡單的數傳/控制介紹,從而了解ESP8266的基本功能。內容比較多,我盡量每一步詳細說明,請耐心看完。
二、實現過程
(1)接線方式
ESP8266-01S引腳示意圖
ESP8266-01S和Arduino鏈接定義
| VCC | 3V3(注意負載多的時候供電需要外接) |
| GND | GND |
| RXD | TX |
| TXD | RX |
| CH_PD | 3V3(如果使用ESP8266-01需要接10K上拉) |
| (2)透傳設置 |
注意:新拿到的ESP8266模塊需要先進行透傳設置,所謂透傳就是要配置WIFI的路由信息,主要包括(1)WiFi名稱(2)WiFi密碼,只有透傳設置完的模塊才能正常聯網數傳/控制。
WIFI名稱和密碼不變的情況下僅需透傳一次即可,若WiFi信息更改需要重新透傳設置。
常用的透傳設置包括串口AT指令設置和代碼設置,為了不混淆本文只介紹使用代碼透傳設置,使用代碼設置時需要使用模擬串口進行透傳設置,模擬串口的接線方式如下:
| VCC | 3V3(注意負載多的時候供電需要外接) |
| GND | GND |
| RXD | 3 |
| TXD | 2 |
| CH_PD | 3V3(如果使用ESP8266-01需要接10K上拉) |
透傳設置代碼如下:(僅主函數,完整代碼及庫函數見文末鏈接)
void loop() {if(flag == 0){Serial.println("waiting start");//ESP8266通電啟動等待delay(10000);Serial.println("setting start");//如果是透傳模式,退出透傳Serial.println("exit pass-through mode");mySerial.print("+++");delay(1000);mySerial.print("AT\r\n");delay(1000);printmssage();//關閉回顯命令mySerial.print("ATE0\r\n");delay(1000);printmssage();//設置WiFi應用模式為兼容模式Serial.println("choose station mode");mySerial.print("AT+CWMODE=3\r\n"); delay(2000);printmssage();//連接到無線路由器Serial.println("connect wireless router");mySerial.print("AT+CWJAP=\"");mySerial.print(WiFiSSID);mySerial.print("\",\"");mySerial.print(WiFiPASSWORD);mySerial.print("\"\r\n");delay(20000);//此處需根據路由器連接速度設置delay的時間,可適當加長printmssage();//設置為單連接mySerial.print("AT+CIPMUX=0\r\n");delay(1000);printmssage();//設置模塊傳輸模式為透傳模式Serial.println("choose pass-through mode");mySerial.print("AT+CIPMODE=1\r\n");delay(1000);printmssage();//連接貝殼物聯服務器Serial.println("connect bigiot.net and save translink");mySerial.print("AT+SAVETRANSLINK=1,\"121.42.180.30\",8181,\"TCP\"\r\n");delay(20000);//此處需根據網路連接速度設置delay的時間,可適當加長printmssage();//重啟Serial.println("restarting...");mySerial.print("AT+RST\r\n");flag=1; }其中下面代碼中的WIFISSID和WIFIPASSWORD需要根據自己的WIFI信息來更改設置,只有設置正確后才能連接到WIFI進行數傳
//============= 此處必須修改=================== String WiFiSSID = "TEST";//填寫路由器名稱======= String WiFiPASSWORD = "20201234";//填寫WiFi密碼=== //==============================================代碼編譯下載完成后在串口可以看到如下信息:
(3)數據傳輸(單數據傳輸)
至此數據透傳設置完成,下面需要進行數據傳輸代碼加載(本文以單通道數據加載為例說明),數傳示意圖如下:
Arduino和ESP8266配置好還只是數傳的開始,只是硬件模塊搭建好了,若想實現數據上傳遠端,還需要有服務器鏈接,WIFI需將arduino采集到的數據通過移動網絡傳至服務器。
常用的物聯網服務器有很多,比如OneNET、貝殼物聯等,本文以貝殼物聯為例進行說明,網站鏈接如下:
https://www.bigiot.net/
進入網站首頁,點擊右上角“注冊”、“登錄”擁有自己的賬號
注冊成功后主頁面顯示如下,注意這里面的 “ID”和“APIKEY” 這兩個參數是和你的賬號綁定位移不變的,后續的數傳代碼中會一直存在。
由于我們是上傳數據到服務器(單個數據),所以這里面需要用到數據接口,如下所示:
添加配置完接口后顯示如下,可以任意配置接口,但是需要注意的每個接口都有唯一一個"ID",這個ID很重要,后續代碼中會體現出來
數傳代碼如下:(僅主函數,完整代碼及庫函數見文末鏈接)
其中“DEVICEID”和“APIKEY”就是你網站注冊后的個人數據,INPUTID是你對應創建的接口ID值
//============= 此處必須修改============ String DEVICEID = "9479"; // 你的設備ID======= String APIKEY = "ee435db3a"; // 設備密碼== String INPUTID = "8218"; //接口ID============== //======================================= //每隔一定時間上傳一次數據if (millis() - lastUpdateTime > updateInterval) {float val;//定義變量int dat;//定義變量dat = analogRead( LM35 ); // 讀取傳感器的模擬值并賦值給datval = dat * (4.76 / 1023.0 * 100); //數據轉換update1(DEVICEID, INPUTID, val); //將數據上傳到對應的單個窗口中lastUpdateTime = millis();}三、結果展示
以顯示溫度為例
完整代碼鏈接:
CSDN下載
https://download.csdn.net/download/u011816009/85086806
百度網盤下載
https://pan.baidu.com/s/1oBh_0-bChfWQkhFiM1U_VA
提取碼:0n8w
總結
以上是生活随笔為你收集整理的Arduino--ESP8266物联网WIFI模块(贝壳物联)--数据上传服务器(单数据接口)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Arduino--库函数头文件
- 下一篇: Arduino--二维码显示