思路同上一篇: 改为连接阿里云平台, 增加了平台对时功能和定位功能
思路同上一篇:
本例程实现了以下功能:
- 通过SIM800L连接网络
- 连接阿里IOT平台()
- 调用SHT20的库采集温湿度
- 将温湿度信息以及LBS定位信息上传至IOT
- 与阿里云IOT平台进行对时
- 每5分钟采集一次, 采集完成就休眠
#include <Arduino.h>
#include "PubSubClient.h"
#include "aliyun_mqtt.h"
#include "ArduinoJson.h"
#include "uFire_SHT20.h"
/*-------------------------------SIM800L 硬件定义----------------------------------*/
#define MODEM_RST 5 //SIM800L复位引脚接在GPIO5
#define MODEM_PWRKEY 4 //SIM800L开关机引脚接在GPIO4
#define MODEM_POWER_ON 23 //SIM800L电源引脚接在GPIO23
#define MODEM_TX 27 //SIM800L串口TX引脚接在GPIO27
#define MODEM_RX 26 //SIM800L串口RX引脚接在GPIO26
/*-------------------------------其他硬件定义-------------------------------------*/
uFire_SHT20 sht20;
#define SerialMon Serial //调试串口为UART0
#define SerialAT Serial1 //AT串口为UART1
/*-------------------------------公共变量,参数定义-------------------------------------*/
float currentTemp, currentHumi; //温湿度
bool tempAndHumi_Ready = false; //温湿度采集成功标志位
bool timeNTPdone = false;
//以下参数需要休眠记忆
RTC_DATA_ATTR time_t lastNTP_timestamp; //上次对时的时间戳
RTC_DATA_ATTR int postMsgId = 0; //记录已经post了多少条
RTC_DATA_ATTR float locationE, locationN; //地理位置,经度纬度
RTC_DATA_ATTR tm *timeNow; //当前时间
/*-------------------------------Modem相关定义-------------------------------------*/
#define TINY_GSM_MODEM_SIM800 // Modem is SIM800
//引入TinyGSM库. 在引入之前要定义好TINY_GSM_MODEM_SIM800,让它知道我们用的模块型号
#include <TinyGsmClient.h>
// 创建一个关联到SerialAT的SIM800L模型
TinyGsm modem(SerialAT);
// 创建一个GSM型的网络客户端
TinyGsmClient gsmclient(modem);
PubSubClient mqttClient(gsmclient);
// Your GPRS credentials (leave empty, if missing)
const char apn[] = "CMNET"; // Your APN
const char gprsUser[] = ""; // User
const char gprsPass[] = ""; // Password
const char simPIN[] = ""; // SIM card PIN code, if any
/*-------------------------------云平台相关定义-------------------------------------*/
#define PRODUCT_KEY "a1AYa96sZMJ" //产品ID
#define DEVICE_NAME "EspTempAndHumi_D001" //设备名
#define DEVICE_SECRET "a23249cb179feee41ca2f8f38525113d" //设备key
//鉴权信息
#define mqtt_password "version=2018-10-31&res=products%2F370098%2Fdevices%2Fesp_device001&et=4092512761&a