Funpack2-3 ESP32-E 任务五 物联网信息显示控制项目
通过ESP32-E控制器,采集目标物体的晃动情况,以及周围环境的温湿度信息,通过WiFi上传至阿里云服务器,使用户能够远程实时监测其状态。
标签
Funpack活动
物联网
阿里云
ESP32-E
gram
更新2023-01-04
480
fullscreen="">

 

1.项目描述

       本项目采用FireBeetle ESP32-E开发板,与dfrobot生产的SEN0289晃动传感器,以及第三方公司生产的dht11数字温湿度传感器,制作了一套远程监控系统,通过ESP32-E控制器,采集目标物体的晃动情况,以及周围环境的温湿度信息,通过WiFi上传至阿里云服务器,使用户能够远程实时监测其状态。

       项目所用FireBeetle ESP32-E是一款基于ESP-WROOM-32E双核芯片的主控板,它专为IoT设计。支持WIFI和蓝牙双模通信并具有体积小巧、超低功耗、板载充电电路、接口易用等特性。可灵活的用于家庭物联网改装、工业物联网改装、可穿戴设备等等。FireBeetle ESP32-E深度支持ArduinoIDE编程,并且即将支持Scratch图形化编程及MicroPython编程。邮票孔的设计,让它可以方便的嵌入你设计的PCB上,大大缩减你的原型开发成本以及原型测试时间。

FjTC5FopuZ-_w_4kKCHQsdtRCVUc

       数字晃动传感器是一款仅对单方向手摇运动敏感的数字传感器。采用弹簧式震动开关,静止时输出高电平,当用户沿指定方向用力晃动一次,模块输出一个低电平脉冲,板载指示灯同时闪亮。具有较强的抗冲击干扰能力。

FqKve3x0qZ8RliTT5KBySIg3B7Dq

2.各功能代码片段及说明

      设备上电后,会通过wifi自动连接至阿里云服务器,此后,每隔5s将环境温湿度数据上传至服务器,当设备出现晃动时,会将晃动数据以事件方式上报至服务器。在服务器端可下发控制命令,对设备的led灯进行开关操作。

       连接阿里云:

void ConnectAliyun()
{
    while (!client.connected())
    {
        Serial.print("Attempting MQTT connection...");
        /*根据自动计算的用户名和密码连接到Alinyun的设备,不需要更改*/
        if (client.connect(myAliyun.client_id, myAliyun.username, myAliyun.password))
        {
            Serial.println("connected");
            client.subscribe(subTopic);
        }
        else
        {
            Serial.print("failed, rc=");
            Serial.print(client.state());
            Serial.println(" try again in 5 seconds");
            delay(5000);
        }
    }
}

 

       物体晃动检测:

      当设备出现晃动时,通过事件方式,上报至服务器。

void Send_shake_state_to_ail()
{
    static uint32_t cnt = 0;
    if (stateChangeFlag)
    {
        stateChangeFlag = false;
        Serial.println(stateFlag);
        client.publish(eventTopic,("{\"id\":"+ClientId+",\"params\":{\""+ShakeIdentifier+"\":"+stateFlag+"},\"method\":\"thing.event.property.post\"}").c_str());
    }
}

 

       温湿度数据上传:

       设备每隔5s,将环境温湿度信息上报至服务器。

void Send_temp_humi_to_ail()
{
    static uint32_t cnt = 0;
    if (millis() - cnt > 5000)
    {
        cnt = millis();
        DHT.read(DHT11_PIN);
        Serial.print("DHT.temperature=");
        Serial.println(DHT.temperature);
        Serial.print("DHT.humidity=");
        Serial.println(DHT.humidity);
        client.publish(pubTopic, ("{\"id\":" + ClientId + ",\"params\":{\"" + TempIdentifier + "\":" + DHT.temperature + ",\"" + HumiIdentifier + "\":" + DHT.humidity + "},\"method\":\"thing.event.property.post\"}").c_str());
    }
}

      

       控制命令下发执行:

       可在服务器端,远程下发控制命令,对设备的led进行开关操作。

void callback(char *topic, byte *payload, unsigned int len)
{
    Serial.print("Recevice [");
    Serial.print(topic);
    Serial.print("] ");
    for (int i = 0; i < len; i++)
    {
        Serial.print((char)payload[i]);
    }
    Serial.println();
    StaticJsonBuffer<300> jsonBuffer;
    JsonObject &root = jsonBuffer.parseObject((const char *)payload);
    if (!root.success())
    {
        Serial.println("parseObject() failed");
        return;
    }
    const uint16_t LightStatus = root["params"][Identifier];
    if (LightStatus == 1)
    {
        openLight();
    }
    else
    {
        closeLight();
    }
    String tempMseg = "{\"id\":" + ClientId + ",\"params\":{\"" + Identifier + "\":" + (String)LightStatus + "},\"method\":\"thing.event.property.post\"}";
    char sendMseg[tempMseg.length()];
    strcpy(sendMseg, tempMseg.c_str());
    client.publish(pubTopic, sendMseg);
}

3.功能展示及说明

       接通设备电源后,ESP32通过设置的wifi,自动连接至阿里云,在控制端可以看到,设备的上线信息。

Fl1DS8LryaOVmDLpfkRmaTotJSZF

       设备间隔5s,自动上传环境温湿度信息,通过阿里云控制端可实时查看设备的上传数据。

FsSf8hCYP_GnYp-uBY5s8IbiqUWm             Fh_2PZsHhZ2IGW2Y81l4EvVKhXbR

        当设备出现晃动时,会将晃动数据以事件方式上报至阿里云,同时在阿里云控制端口可查看设备上报的事件信息。

FhYQdQMEIDFpdFICvR9Yfb87xRTB

       可以通过阿里云控制端的在线调试功能,对设备led灯进行远程控制

       开灯操作:

FrjPv9zChR9odQeKV3KhIYLwwhP3

       关灯操作:

FqxTVo1UiQQfyCPRLnObAs3JNQd1

4.对本活动的心得体会

       非常感谢此次活动的举办方,虽然第一次使用ESP32控制器,但是借助arduino强大的开发环境,能够非常方便的对其进行开发,各种库用起来也非常方便,通过活动,熟悉了ESP32的开发流程,以及阿里云的使用流程,希望活动能够越办越好。

附件下载
shake.rar
团队介绍
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号