红外测温枪,超进化!--智能温度传感器!基于 arduino 的智能测温模块。
前言
之前用 arduino(arduino 开发制导) 做了一个傻了吧唧的 红外测温枪,后来又照着 Spirit 1 官方文档成功做出来一个能让设备和 Spirit 1 通讯的 调试用 demo,虽然 BUG 有亿点点多,但是!好歹能用了!
( ੭ ˙ᗜ˙ )੭牛逼!!!,通讯解决了,服务器有了,那不得开始 搞事情!!!٩(๑>◡<๑)۶ 开始利用 Spirit 1 做一个能通过手机控制和查看的智能红外测温模块。
硬件选择
硬件与之前的 红外测温枪 完全一致,安信可 ESP32S 开发板+ GY906 (MLX90614ESF ) 红外测温传感器。详细介绍和引脚图可以看之前红外测温枪的文档。
而 Spirit 1 的使用和介绍可以看我之前的 搭载着EdgerOS 的 Spirit 1 开箱 和 超便宜的个人智能设备服务器!-- 边缘计算机 Spirit 1 初体验,也是淘宝就能搜到。
代码讲解
我自己移植了一个他们的 sddc 库,在 Spirit 1 官方的 demo 的基础上对 arduino 做了适配,接入了红外测温枪流程。
通过 SDDC 协议接入 Spirit 1 部分
在 setup 函数中初始化 SDDC 协议,然后在 loop 函数运行 SDDC 协议主循环,
void setup() {
byte mac[6];
char *data;
int ret;
// 初始化打印串口
Serial.begin(115200);
Serial.setDebugOutput(true);
Serial.println();
// 启动红外模块
mlx.begin();
// 清除一下按键状态机的状态
button.reset();
// 创建按键扫描线程,长按 IO0 按键,松开后ESP32 将会进入 SmartConfig 模式
sddc_printf("长按按键进入 Smartconfig...\n");
button.attachLongPressStop(esp_io0_key_task);
xTaskCreate(esp_tick_task, "button_tick", ESP_KEY_TASK_STACK_SIZE, NULL, ESP_KEY_TASK_PRIO, NULL);
// 启动 WiFi 并且连接网络
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
// 获取并打印 IP 地址
Serial.println("");
Serial.println("WiFi connected");
Serial.print("'ip :");
Serial.print(WiFi.localIP());
Serial.println("' to connect");
// 创建 SDDC 协议对象
g_sddc = sddc_create(SDDC_CFG_PORT);
// 设置事件响应函数
sddc_set_on_message(g_sddc, iot_pi_on_message); // 设置接收消息请求时的回调函数
sddc_set_on_message_ack(g_sddc, iot_pi_on_message_ack); // 设置接收消息确认时的回调函数
sddc_set_on_message_lost(g_sddc, iot_pi_on_message_lost); // 设置丢失消息时的回调函数
sddc_set_on_invite(g_sddc, iot_pi_on_invite); // 设置接受邀请请求时的回调函数
sddc_set_on_invite_end(g_sddc, iot_pi_on_invite_end