ESP32CAM + Android APP(基于kotlin)的MQTT远程数据(图像)收发demo
演示效果
所需环境
硬件
-
一块esp32cam核心板,一块esp32cam的下载底板
-
一根microUSB数据线
-
一部安卓手机
软件
- Arduino IDE
- Android Studio
使用说明
-
该demo中我使用的是免费的EMQX Cloud服务器,在创建了自己的服务器后可以看到其信息:
-
我们还需要添加认证,我的用户名为t,密码为2:
-
通过Arduino IDE打开ESP32CAM文件夹中的ESP32CAM.ino,注意修改mqtt.h中MqttManager类的私有变量ssid和password,他们分别为你的ESP32CAM将要连接的wifi(2.4GHz频段)名称和密码。此外还需要修改下面MQTT云服务器的一些参数再下载代码到esp32cam:
参数 说明 mqtt_broker 云服务器的连接地址 topic esp32cam订阅的话题(demo中并未使用到,可以按需添加其用途) mqtt_username 认证的用户名 mqtt_password 认证的密码 mqtt_port MQTT端口 ca_cert CA证书,需要下载后用记事本打开并黏贴到代码中 -
通过Android Studio打开testMqtt,我们也需要在MainActivity.kt修改其中MQTT云服务器的一些参数再部署到手机上。
注意事项
ESP32CAM
- mqtt通信协议是TCP协议的一层封装,我们在使用WiFiClientSecure库的同时也需要使用官方封装好的mqtt的库PubSubClient。不过该库的原代码中对一个数据包的大小做了限制,事实上,MQTT本身就不能传输过大的消息(我记得是256KB)。所以为了传输图像我们需要更改PubSubClient.h中的宏定义MQTT_MAX_PACKET_SIZE为50000(你可以尝试更大的值,不过esp32cam只有520KB的SRAM)。