根據(jù)原理圖, 我們可以得到以下結論 二. 實驗1: PC端通過串口調(diào)試助手調(diào)試SIM800L 思路: 串口0收到PC的信息就轉發(fā)給串口1, 串口0 收到串口1的信息就轉發(fā)給PC #include pinMode(MODEM_POWER_ON, OUTPUT); //電源引腳 pinMode(MODEM_PWRKEY, OUTPUT); //開關機鍵引腳 // 先打開SIM800L的電源 digitalWrite(MODEM_POWER_ON, HIGH); //根據(jù)手冊要求拉下PWRKEY 1秒鐘以上 可以開機 digitalWrite(MODEM_PWRKEY, HIGH); delay(100); digitalWrite(MODEM_PWRKEY, LOW); delay(1000); digitalWrite(MODEM_PWRKEY, HIGH); //開啟串口 SerialMon.begin(115200); SerialAT.begin(115200, SERIAL_8N1, MODEM_RX, MODEM_TX);}void loop(){ while (SerialAT.available()) { SerialMon.write(SerialAT.read()); } while (SerialMon.available()) { SerialAT.write(SerialMon.read()); }} 三. 更進一步 用tinyGSM庫操作SIM800L 這里我們使用了庫 tinyGSM tinyGSM和我們之前的wifi庫差不多 不過多了一個modem(貓)的概念, 就是我們要把SIM800L實例化為一個modem, 像這樣:TinyGsm modem(SerialAT); 下面這個程序主要就是我們創(chuàng)建一個modem并操作他的過程, 順便測試了一下2G網(wǎng)絡連接需要多久(實測10秒左右) 關于client的內(nèi)容并沒有在這個例程里, 下節(jié)再探討. #include pinMode(MODEM_POWER_ON, OUTPUT); //電源引腳 pinMode(MODEM_PWRKEY, OUTPUT); //開關機鍵引腳 // 先打開SIM800L的電源 digitalWrite(MODEM_POWER_ON, HIGH); //根據(jù)手冊要求拉下PWRKEY 1秒鐘以上 可以開機 digitalWrite(MODEM_PWRKEY, HIGH); delay(100); digitalWrite(MODEM_PWRKEY, LOW); delay(1000); digitalWrite(MODEM_PWRKEY, HIGH);}void setup(){ esp_sleep_enable_timer_wakeup(20000000); //創(chuàng)建一個esp睡眠鬧鐘 SerialMon.begin(115200);//初始化調(diào)試串口 SerialAT.begin(115200, SERIAL_8N1, MODEM_RX, MODEM_TX);//初始化AT串口 setupModem(); //SIM800L物理開機 SerialMon.println('Initializing modem...'); modem.init(); //開機后modem初始化一下 String modemInfo = modem.getModemInfo(); SerialMon.print('Modem: '); SerialMon.println(modemInfo); //測試連接網(wǎng)絡 SerialMon.print('Waiting for network...'); while (!modem.waitForNetwork(240000L)) { SerialMon.print('.'); delay(500); } SerialMon.println(' OK'); //測試關閉SIM800L信號燈 SerialMon.println('Turning off SIM800 Red LED...'); modem.sendAT('+CNETLIGHT=0'); delay(10000); //測試打開SIM800L信號燈 SerialMon.println('Turning on SIM800 Red LED...'); modem.sendAT('+CNETLIGHT=1'); delay(10000); //去休眠吧 SerialMon.println('now I wanna ESP32sleep and disable SIM800L for a while!(20sec)'); delay(100); esp_deep_sleep_start();}void loop(){} 四. 使用SIM800L連接2G網(wǎng)絡并將數(shù)據(jù)上傳至OneNet平臺 本例程實現(xiàn)了以下功能: 通過SIM800L連接網(wǎng)絡 連接OneNet平臺(通過舊版MQTT協(xié)議) 調(diào)用SHT20的庫采集溫濕度 將溫濕度信息上傳至OneNet 每5分鐘采集一次, 采集完成就休眠 #include pinMode(MODEM_POWER_ON, OUTPUT); //電源引腳 pinMode(MODEM_PWRKEY, OUTPUT); //開關機鍵引腳 // 先打開SIM800L的電源 digitalWrite(MODEM_POWER_ON, HIGH); //根據(jù)手冊要求拉下PWRKEY 1秒鐘以上 可以開機 digitalWrite(MODEM_PWRKEY, HIGH); delay(100); digitalWrite(MODEM_PWRKEY, LOW); delay(1000); digitalWrite(MODEM_PWRKEY, HIGH); SerialMon.println('Initializing modem...'); modem.init(); //開機后modem初始化一下}/*-------------------------------SIM800L連接GPRS-------------------------------------*/void modemToGPRS(){ //連接網(wǎng)絡 SerialMon.print('Waiting for network...'); while (!modem.waitForNetwork(240000L)) { SerialMon.print('.'); delay(500); } SerialMon.println(' OK'); //連接GPRS接入點 SerialMon.print(F('Connecting to APN: ')); SerialMon.print(apn); while (!modem.gprsConnect(apn, gprsUser, gprsPass)) { SerialMon.print('.'); delay(10000); } SerialMon.println(' OK');}/*-------------------------------向云平臺發(fā)送溫濕度數(shù)據(jù)-------------------------------*/void sendTempAndHumi(){ if (client.connected()) { snprintf(msgJson, 40, dataTemplate, sht20.temperature(), sht20.humidity()); //將模擬溫濕度數(shù)據(jù)套入dataTemplate模板中, 生成的字符串傳給msgJson json_len = strlen(msgJson); //msgJson的長度 msg_buf[0] = char(0x03); //要發(fā)送的數(shù)據(jù)必須按照ONENET的要求發(fā)送, 根據(jù)要求,數(shù)據(jù)第一位是3 msg_buf[1] = char(json_len >> 8); //數(shù)據(jù)第二位是要發(fā)送的數(shù)據(jù)長度的高八位 msg_buf[2] = char(json_len & 0xff); //數(shù)據(jù)第三位是要發(fā)送數(shù)據(jù)的長度的低八位 memcpy(msg_buf + 3, msgJson, strlen(msgJson)); //從msg_buf的第四位開始,放入要傳的數(shù)據(jù)msgJson msg_buf[3 + strlen(msgJson)] = 0; //添加一個0作為最后一位, 這樣要發(fā)送的msg_buf準備好了 Serial.print('public message:'); Serial.println(msgJson); client.publish('$dp', (uint8_t *)msg_buf, 3 + strlen(msgJson)); //發(fā)送數(shù)據(jù)到主題$dp }}/*-------------------------------向云平臺斷線重連-------------------------------------*/void clientReconnect(){ if (modem.isNetworkConnected()) { while (!client.connected()) //再重連客戶端 { Serial.println('reconnect MQTT...'); if (client.connect(mqtt_devid, mqtt_pubid, mqtt_password)) { Serial.println('connected'); } else { Serial.println('failed'); Serial.println(client.state()); Serial.println('try again in 5 sec'); delay(5000); } } } else { Serial.println('網(wǎng)絡斷了,不可能連上了, 把數(shù)據(jù)存在本地等待下一次聯(lián)網(wǎng)吧'); }}void setup(){ pinMode(LED_G, OUTPUT); Wire.begin(); sht20.begin(); SerialMon.begin(115200); //初始化調(diào)試串口 SerialAT.begin(115200, SERIAL_8N1, MODEM_RX, MODEM_TX); //初始化AT串口 一. 初識LiLyGO T-CALL
1.SIM800L電源使能引腳接在ESP32的GPIO23引腳
2.SIM800L開關機引腳接在ESP32的GPIO4引腳
3.SIM800L復位引腳接在ESP32的GPIO5引腳
4. SIM800L的串口接在了ESP32的26, 27引腳
上一篇:玩轉 ESP32 + Arduino (二十) SIM800L上傳數(shù)據(jù)到OneNet(新版Mqtts)
下一篇:玩轉 ESP32 + Arduino (十八) 采用SIM800L發(fā)送短信和定位(基礎知識)
推薦閱讀最新更新時間:2025-06-30 17:26
設計資源 培訓 開發(fā)板 精華推薦
- Microchip 升級數(shù)字信號控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領先的新器件
- 意法半導體STM32MP23x:突破成本限制的工業(yè)AI應用核心
- 意法半導體推出用于匹配遠距離無線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設置字重-ESP32篇
- 使用樹莓派進行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲html,css,js文件,以及網(wǎng)頁和arduino的通訊
- ESP32 freeRTOS使用測試
- LTC1871、4.5V 至 15V 輸入、12.0V/2A 輸出 SEPIC 轉換器
- AMSRL-7815-NZ 15V 高達 7.5 瓦 DC-DC 開關穩(wěn)壓器的典型應用
- CY8C5888AXI-LP096 CY8C58LP PSoC 5LP 可編程片上系統(tǒng)的典型應用
- AM1D-0512S-RZ 12V 1 瓦 DC/DC 轉換器的典型應用
- DER-526 - 18W非調(diào)光非隔離降壓-升壓LED驅動器
- 使用 Richtek Technology Corporation 的 RT8011APQW 的參考設計
- 使用 Analog Devices 的 LT1317IS8 的參考設計
- AM1D-1505SH30-RZ 5V 1W DC-DC 轉換器的典型應用
- LTC4089 的典型應用,全功能鋰離子電池充電器
- 使用 ON Semiconductor 的 NUD4022 的參考設計
- 南芯科技推出高集成度多口移動電源解決方案,助力充電寶市場穩(wěn)健發(fā)展
- 英飛凌推出具有超低導通電阻的CoolSiC? MOSFET 750 V G2,適用于汽車和工業(yè)功率電子應用
- DigiKey 慶祝 B 站賬號粉絲突破 10 萬,贈送驚喜禮包
- 碳化硅企業(yè) Wolfspeed 啟動破產(chǎn)重組,預計 2025 年三季度末完成司法重整
- 蘋果被曝考慮放棄自研模型 轉而與Anthropic或OpenAI合作
- ?百度文心4.5來襲!英特爾Day0即支持端側部署
- 【廣瀨電機】關于中國發(fā)明專利侵權訴訟達成和解的公告
- 英飛凌BMS解決方案推動電動汽車創(chuàng)新
- 地平線的L3判斷與實踐路徑
- 汽車網(wǎng)絡升級攻略:CAN-CAN FD-車載以太網(wǎng)
- 國科微與大基金等成立湖南芯盛投資公司
- 中興選出新一屆董事:李自學任董事長,否決13.84億元分紅預案
- 紅帽全球副總裁曹衡康:“CP”策略精耕中國市場
- 大V點贊vivo NEX:打動人心不僅靠零界全面屏
- 中興通訊“換血”十四名董事辭職,董事長殷一民正式離任
- ARM處理器沖上80核心 7nm工藝,32個核心+八通道DDR4內(nèi)存
- SABIC“化學成就你我”的理念將繼續(xù)深入中國
- Semtech、Wilhelmsen和TTI強強聯(lián)手,LoRa技術打造海運物聯(lián)網(wǎng)
- 技術文章—Sub-1 Ghz技術在樓宇安保系統(tǒng)中的設計優(yōu)勢
- 中國信通院發(fā)布2020年信息通信領域十大趨勢