设备端接入(ESP32)
一、MicroPython方式
1. MicroPython固件
在ESP32上写入MicroPython的固件,具体请参考站内文件。
2. 用Tonny连接ESP32开发板
3. Wifi连接程序
新建wifi.py文件,复制以下代码
import network
import time
def connect():
ssid = '***your_ssid***'
password = '***your_passwd***'
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(ssid, password)
while wlan.isconnected() == False:
print('Waiting for connection...')
time.sleep(1)
print('Connected on {ip}'.format(ip = wlan.ifconfig()[0]))
注意:请将ssid和password换成实际的wifi热点和密码。
4. MQTT连接程序
新建mqtt.py,复制以下代码
from umqtt.simple import MQTTClient
MQTT_SERVER = 'iot.xpstem.com'
MQTT_PORT = 1883
MQTT_USER = '******'
MQTT_PASSWD = '******'
MQTT_CLIENT_ID = 'ESP32-CLIENT-001'
def connect():
client = MQTTClient(MQTT_CLIENT_ID, MQTT_SERVER, MQTT_PORT, MQTT_USER, MQTT_PASSWD, 300)
client.connect()
print('Connected to MQTT Broker "{server}"'.format(server = MQTT_SERVER))
return client
其中MQTT用户名和密码,在设备详情页查看
5. 主程序
创建main.py,复制以下程序
###################################
# 小鹏AIoT 主程序
# author: billy_zh@126.com
###################################
import wifi
import mqtt
# wifi 连接
wifi.connect()
# mqtt 连接
mqtt_client = mqtt.connect()
####################
# 主循环
####################
while True:
time.sleep(1)
确定以上三个文件都保存至ESP32设备内。
在Thonny中点击运行main.py,
查看窗口输出内容。
二、Arduino C/C++方式
1.Arduino-ESP32开发环境配置
在ArduinoIDE中配置ESP32开发板支持。
2.安装PubSubClient库
在ArduinoIDE中通过库管理安装PubSubClient。
3.复制以下代码到ArduinoIDE
#include <Arduino.h>
#include <WiFi.h>
#include <PubSubClient.h> // 2.8 (Nick O'Leary)
char *ssid = "xxx";
char *password = "xxx";
char *mqtt_broker = "iot.xpstem.com";
char *mqtt_username = "xxx";
char *mqtt_password = "xxx";
String chipId = "";
WiFiClient espClient;
PubSubClient mqtt_client(espClient);
/***********************************************************
*** 连接到WiFi
**********************************************************/
void connectToWiFi() {
WiFi.begin(ssid, password);
Serial.print("正在连接 WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
Serial.print("\n连接到 WiFi, localIP: ");
Serial.println(WiFi.localIP());
}
/***********************************************************
*** 连接到MQTT
**********************************************************/
void connectToMQTT() {
int retryCount = 0;
while (!mqtt_client.connected()) {
String client_id = "esp32-client-" + chipId;
Serial.printf("正在连接小鹏AIoT平台: %s .....\n", mqtt_broker);
if (mqtt_client.connect(client_id.c_str(), mqtt_username, mqtt_password)) {
Serial.println("连接到小鹏AIoT平台.");
} else {
Serial.print("连接失败, rc=");
Serial.print(mqtt_client.state());
Serial.println(",5秒后重试。");
retryCount ++;
delay(5000);
}
}
}
/***********************************************************
*** 获取芯片ID
**********************************************************/
String getChipId() {
uint64_t number = ESP.getEfuseMac();
unsigned long long1 = (unsigned long)((number & 0xFFFF0000) >> 16);
unsigned long long2 = (unsigned long)((number & 0x0000FFFF));
return String(long1, HEX) + String(long2, HEX);
}
void setup() {
Serial.begin(115200);
Serial.println();
chipId = getChipId();
Serial.printf("ChipId:%s\n", chipId);
// wifi连接
connectToWiFi();
// 连接MQTT
connectToMQTT();
}
void loop() {
// do something.
delay(10);
}
4.点击“上传”
打开串口监视器查看输出内容。