根據(jù)原理圖, 我們可以得到以下結(jié)論 二. 實驗1: PC端通過串口調(diào)試助手調(diào)試SIM800L 思路: 串口0收到PC的信息就轉(zhuǎn)發(fā)給串口1, 串口0 收到串口1的信息就轉(zhuǎn)發(fā)給PC #include pinMode(MODEM_POWER_ON, OUTPUT); //電源引腳 pinMode(MODEM_PWRKEY, OUTPUT); //開關(guān)機(jī)鍵引腳 // 先打開SIM800L的電源 digitalWrite(MODEM_POWER_ON, HIGH); //根據(jù)手冊要求拉下PWRKEY 1秒鐘以上 可以開機(jī) 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()); }} 三. 更進(jìn)一步 用tinyGSM庫操作SIM800L 這里我們使用了庫 tinyGSM tinyGSM和我們之前的wifi庫差不多 不過多了一個modem(貓)的概念, 就是我們要把SIM800L實例化為一個modem, 像這樣:TinyGsm modem(SerialAT); 下面這個程序主要就是我們創(chuàng)建一個modem并操作他的過程, 順便測試了一下2G網(wǎng)絡(luò)連接需要多久(實測10秒左右) 關(guān)于client的內(nèi)容并沒有在這個例程里, 下節(jié)再探討. #include pinMode(MODEM_POWER_ON, OUTPUT); //電源引腳 pinMode(MODEM_PWRKEY, OUTPUT); //開關(guān)機(jī)鍵引腳 // 先打開SIM800L的電源 digitalWrite(MODEM_POWER_ON, HIGH); //根據(jù)手冊要求拉下PWRKEY 1秒鐘以上 可以開機(jī) 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物理開機(jī) SerialMon.println('Initializing modem...'); modem.init(); //開機(jī)后modem初始化一下 String modemInfo = modem.getModemInfo(); SerialMon.print('Modem: '); SerialMon.println(modemInfo); //測試連接網(wǎng)絡(luò) SerialMon.print('Waiting for network...'); while (!modem.waitForNetwork(240000L)) { SerialMon.print('.'); delay(500); } SerialMon.println(' OK'); //測試關(guān)閉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)絡(luò)并將數(shù)據(jù)上傳至OneNet平臺 本例程實現(xiàn)了以下功能: 通過SIM800L連接網(wǎng)絡(luò) 連接OneNet平臺(通過舊版MQTT協(xié)議) 調(diào)用SHT20的庫采集溫濕度 將溫濕度信息上傳至OneNet 每5分鐘采集一次, 采集完成就休眠 #include pinMode(MODEM_POWER_ON, OUTPUT); //電源引腳 pinMode(MODEM_PWRKEY, OUTPUT); //開關(guān)機(jī)鍵引腳 // 先打開SIM800L的電源 digitalWrite(MODEM_POWER_ON, HIGH); //根據(jù)手冊要求拉下PWRKEY 1秒鐘以上 可以開機(jī) digitalWrite(MODEM_PWRKEY, HIGH); delay(100); digitalWrite(MODEM_PWRKEY, LOW); delay(1000); digitalWrite(MODEM_PWRKEY, HIGH); SerialMon.println('Initializing modem...'); modem.init(); //開機(jī)后modem初始化一下}/*-------------------------------SIM800L連接GPRS-------------------------------------*/void modemToGPRS(){ //連接網(wǎng)絡(luò) 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準(zhǔn)備好了 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)絡(luò)斷了,不可能連上了, 把數(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開關(guān)機(jī)引腳接在ESP32的GPIO4引腳
3.SIM800L復(fù)位引腳接在ESP32的GPIO5引腳
4. SIM800L的串口接在了ESP32的26, 27引腳
上一篇:玩轉(zhuǎn) ESP32 + Arduino (二十) SIM800L上傳數(shù)據(jù)到OneNet(新版Mqtts)
下一篇:玩轉(zhuǎn) ESP32 + Arduino (十八) 采用SIM800L發(fā)送短信和定位(基礎(chǔ)知識)
推薦閱讀最新更新時間:2025-06-03 18:03

設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- 意法半導(dǎo)體推出用于匹配遠(yuǎn)距離無線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進(jìn)行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲html,css,js文件,以及網(wǎng)頁和arduino的通訊
- ESP32 freeRTOS使用測試
- API調(diào)用小記(Touchdesigner和ESP32)
- 關(guān)于ESP32/8266使用async-mqtt-client庫的一些基本介紹
- #第七屆立創(chuàng)電賽#USB電壓電流表
- LT3663EDCB 5V 降壓轉(zhuǎn)換器的典型應(yīng)用
- LTC691 的典型應(yīng)用 - 微處理器監(jiān)控電路
- Type-C 加密狗參考設(shè)計
- LT2940IMS 30W線性熱源典型應(yīng)用電路
- 具有輸出錯誤檢測功能的 STP24DP05BTR 24 位恒流 LED 灌電流驅(qū)動器的典型應(yīng)用
- 具有寬范圍 VDD 輸入的 LTC2945HMS-1 寬范圍電源監(jiān)視器的典型應(yīng)用
- AKD4452、AK4452 用于 AK4452 32 位、2Ch DAC 的音質(zhì)評估板
- A000068,不帶 PoE 的 Arduino 以太網(wǎng) Rev3 - 基于 ATmega328 8 位 ATmega AVR MCU 的開發(fā)套件
- SC632A 1MHz 固定 5.0V 輸出電荷泵穩(wěn)壓器的典型應(yīng)用
- 芯原超低能耗NPU可為移動端大語言模型推理提供超40 TOPS算力
- 芯原AI-ISP芯片定制方案助力客戶智能手機(jī)量產(chǎn)出貨
- AI加持,安森美一站式服務(wù)推動助聽器市場持續(xù)進(jìn)步
- 意法半導(dǎo)體推出用于匹配遠(yuǎn)距離無線微控制器STM32WL33的集成的匹配濾波芯片
- 如何為您的應(yīng)用選擇光傳感器
- Samtec新型農(nóng)業(yè)漫談系列二 | 垂直農(nóng)業(yè)案列分享
- Samtec應(yīng)用科普 | C-V2X技術(shù)在汽車領(lǐng)域的應(yīng)用
- 尼得科運(yùn)動&能源事業(yè)本部在印度卡納塔克邦胡布利舉行新工廠竣工儀式
- 貿(mào)澤開售Qorvo適用于5G和mMIMO應(yīng)用的新型QPA9822線性5G高增益/高驅(qū)動放大器
- 邊緣計算網(wǎng)關(guān)工業(yè)物聯(lián)網(wǎng)應(yīng)用:空壓機(jī)遠(yuǎn)程運(yùn)維監(jiān)控管理
- 丹麥希望從盟友國家里挑選5G供應(yīng)商
- 華為在英發(fā)起廣告宣傳戰(zhàn),反擊5G安全風(fēng)險的無端擔(dān)憂
- 分析師預(yù)測PS5將提振半導(dǎo)體行業(yè)業(yè)績,NAND需求將提高5%
- 愛立信本季度在華毛利率或為負(fù)
- 大族激光:口罩機(jī)發(fā)貨超過千臺,未發(fā)機(jī)客戶存撤單的可能
- 紫光展銳與西安交大攜手共建人工智能聯(lián)合實驗室
- 優(yōu)傲機(jī)器人憑借UR5幫助吉凱恩傳動解決勞動力短缺問題
- 智能照明雙輸出調(diào)光方案介紹
- 資深投資者:硬科技將成為未來投資熱點
- RAdam與LookAhead雙劍合璧,是否能打造出更強(qiáng)化器?