0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样使用UbiDots连接ESP32并发布多个传感器数据

454398 来源:网络整理 作者:网络整理 2019-11-12 10:26 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

步骤1:硬件和软件规范

ESP32 WiFi/BLE

无线温湿度传感器

软件规格

Arduino IDE

第2步:创建俘虏门户

强制门户网站是一个网页,向新连接的用户显示,然后才向他们授予对网络资源的更广泛访问权限。在这里,我们提供三个网页,供您在DHCP和静态IP设置之间进行选择。我们可以通过两种方式为ESP定义IP地址。

DHCP IP地址-这是一种动态分配IP地址的方法到设备。 ESP的默认IP地址为192.168.4.1

静态IP地址-为我们的网络设备分配一个永久IP地址。为了向设备提供静态IP,我们需要定义IP地址,网关地址和子网掩码。

第一个网页位于192.168.1.77。此处为用户提供了单选按钮,可以在DHCP和静态IP设置之间进行选择。在下一个网页中,我们必须提供IP相关信息以继续进行操作。

HTML代码

可以在以下位置找到网页的HTML代码:

您可以使用任何IDE或文本编辑器(例如Sublime或notepad ++)来制作HTML网页。

首先创建一个包含两个单选按钮的HTML网页,以在DHCP和静态之间进行选择IP设置。

现在创建按钮以提交您的回复

为单选按钮命名。

ESP Web服务器类将使用这些名称作为参数,并使用这些参数获取单选按钮的响应

现在插入“ SUBMIT”按钮以将响应发送到设备。网页上,我们有文本框。

在文本框中输入名称值和输入类型,然后在“ SUBMIT”中添加提交按钮以提交响应。

创建“ RESET” ‘按钮以重置文本字段的内容。

步骤3:提供Wi Fi和UbiDots凭据

主要问题是在管理WiFi凭据时发生的。即使我们有WiFiMulti库,也可以在其中向设备提供多个SSID和密码,然后设备将连接到可用的网络。但是,如果可用网络不在WiFiMulti列表中,该怎么办。始终刷新 ESP32 设备不是一个可靠的解决方案。

为解决此问题,我们托管了一个网页,用户可以在其中提交可用网络的SSID和密码。它的工作方式如下。

该网页托管于用户从强制门户中选择的静态IP或DHCP IP

此网页包含用于输入SSID的文本字段,密码和UBIDOTS令牌ID将设备连接到 UbiDots 。

在输入字段中输入本地WiFi的SSID和密码,然后输入 UbiDot 》的令牌ID并输入SUBMIT

这些凭据将保存在 ESP32 的EEPROM

60秒后,设备将自动与AP

下次打开设备时,用户无需执行此过程,设备将自动从EEPROM中获取用户凭据并继续发布传感器读数到 UbiDots 。

步骤4:将传感器读数发布到UbiDots

此处我们正在将无线温度和湿度传感器与 ESP 32 设备一起使用,以获取温度和H亮度数据。我们正在使用 MQTT 协议将数据发送到UbiDots。 MQTT 遵循发布和订阅机制,而不是请求和响应。它比HTTP更快,更可靠。这项工作如下。

我们正在使用任务计划程序来计划任务,例如从传感器中获取数据,发布传感器读数,订阅 MQTT 主题。/li》

首先,包括Task Scheduler头文件,它是实例并计划任务。

我们已经计划了两个任务,它们涉及两个不同的控制操作。

#define _TASK_TIMEOUT

#include

Scheduler ts;

//---------Tasks------------//

Task tSensor(4 * TASK_SECOND, TASK_FOREVER, &taskSensorCallback, &ts, false, NULL, &taskSensorDisable);

Task tWiFi(10* TASK_SECOND, TASK_FOREVER, &taskWiFiCallback, &ts, false, NULL, &taskWiFiDisable);

任务1用于读取传感器值,该任务运行1秒钟,直到达到10秒超时。

当Task1超时时,我们正在连接到本地Wifi和 MQTT 代理。

现在已启用任务2并我们将禁用任务1

任务2用于将传感器数据发布到 UbiDots MQTT 经纪人,此任务将运行20秒,直到超时20秒

当Task2达到超时时,将再次启用任务1,并禁用Task2。再次在这里,我们获取更新的值,并且过程继续进行。

读取I2C传感器数据

我们从无线温度和湿度传感器获得29字节的帧。对该框架进行操作以获取实际的温度和湿度数据。

uint8_t data[29];

data[0] = Serial1.read();

delay(k);

//chck for start byte

if(data[0]==0x7E)

{

while (!Serial1.available());

for ( i = 1; i《 29; i++)

{

data[i] = Serial1.read();

delay(1);

}

if(data[15]==0x7F) /////// to check if the recive data is correct

{

if(data[22]==1) //////// make sure the sensor type is correct

{

humidity = ((((data[24]) * 256) + data[25]) /100.0);

humidity /=10.0;

cTempint = (((uint16_t)(data[26])《《8)| data[27]);

cTemp = (float)cTempint /100.0;

cTemp /= 10.0;

fTemp = cTemp * 1.8 + 32;

fTemp /= 10.0;

battery = random(100,327);

voltage = battery/100;

nodeId = data[16];}

连接到UbiDots MQTT API

包括用于 MQTT 流程的头文件。

#include

为 MQTT 定义其他变量,例如客户端名称,代理地址,令牌ID(我们正在从EEPROM中获取令牌ID)

#define MQTT_CLIENT_NAME “ClientVBShightime123”

char mqttBroker[] = “things.ubidots.com”;

char payload[100];

char topic[150];

//create variable to store token ID

String tokenId;

创建变量以存储不同的传感器数据并创建char变量以存储主题

#define VARIABLE_LABEL_TEMPF “tempF” // Assing the variable label

#define VARIABLE_LABEL_TEMPC “tempC” // Assing the variable label

#define VARIABLE_LABEL_BAT “bat”

#define VARIABLE_LABEL_HUMID “humid” // Assing the variable label

char topic1[100];

char topic2[100];

char topic3[100];

将数据发布到所提到的 MQTT 主题,有效负载将类似于 {“ tempc”: {value:“ tempData”}}

sprintf(topic1, “%s”,“”);

sprintf(topic1, “%s%s”, “/v1.6/devices/”, DEVICE_LABEL);

sprintf(payload, “%s”, “”); // Cleans the payload

sprintf(payload, “{”%s“:”, VARIABLE_LABEL_TEMPC); // Adds the value

sprintf(payload, “%s{”value“:%s}”, payload, str_cTemp); // Adds the value

sprintf(payload, “%s}”, payload); // Closes the dictionary brackets

Serial.println(payload);

Serial.println(client.publish(topic1,payload) ? “published” : “notpublished”);

//Do same for other topic as well

client.publish()将数据发布到UbiDots。

步骤5:可视化数据

转到Ubidots并登录到您的帐户。

从顶部列出的“数据”标签导航到仪表板。

现在单击“ + ”图标以添加然后ew小部件。

从列表中选择一个小部件,然后添加变量和设备。

可以使用不同的小部件在仪表板上显示传感器数据。

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2579

    文章

    56021

    浏览量

    796453
  • Ubidots
    +关注

    关注

    0

    文章

    10

    浏览量

    4047
  • ESP32
    +关注

    关注

    27

    文章

    1244

    浏览量

    22933
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    ESP32驱动MPU-6050三轴加速度三轴陀螺仪传感器串口输出数据

    本文介绍了MPU-6050传感器的基本特点,ESP32的接线和驱动程序,并通过ESP32开发板的串口输出传感器的三轴加速度,三轴角速度,内部温度传感
    的头像 发表于 06-06 09:43 278次阅读
    <b class='flag-5'>ESP32</b>驱动MPU-6050三轴加速度三轴陀螺仪<b class='flag-5'>传感器</b>串口输出<b class='flag-5'>数据</b>

    乐鑫科技新品ESP32-H4亮点速递!

    近期,乐鑫科技新品发布节奏持续加快。作为乐鑫科技一级代理商,启明云端为您带来最新芯片产品ESP32-H4的详细解读。ESP32-H4隶属于乐鑫科技ESP32-H系列,在低功耗物联网应用
    的头像 发表于 04-16 18:05 762次阅读
    乐鑫科技新品<b class='flag-5'>ESP32</b>-H4亮点速递!

    ESP32/ESP8266开发板单向多对一ESP-NOW无线通信

    本实验通过ESP-NOW无线通信协议实现多个ESP32/ESP 8266开发板向ESP32开发板发送数据
    的头像 发表于 03-30 10:14 346次阅读
    <b class='flag-5'>ESP32</b>/<b class='flag-5'>ESP</b>8266开发板单向多对一<b class='flag-5'>ESP</b>-NOW无线通信

    基于ESP32的开源空气质量传感器介绍

    今天给大家带来一款基于 ESP32 的开源的空气质量传感器!专为家庭环境长期空气质量追踪打造,集成双高精度传感器,可同步监测 PM2.5、温湿度、气压、VOC,自带屏显实时看数据,还能
    的头像 发表于 03-26 16:11 985次阅读
    基于<b class='flag-5'>ESP32</b>的开源空气质量<b class='flag-5'>传感器</b>介绍

    ESP32开发板单向点对点ESP-NOW无线通信

    本例程通过两个ESP32开发板实现单向点对点ESP-NOW无线通信,一个ESP32开发板作为Sender发送方,另一个开发板作为Receiver接收方接收发送方的数据
    的头像 发表于 03-19 09:21 438次阅读
    <b class='flag-5'>ESP32</b>开发板单向点对点<b class='flag-5'>ESP</b>-NOW无线通信

    ESP32/ESP8266开发板单向一对多ESP-NOW无线通信

    通过ESP-NOW无线通信协议实现ESP32开发板向多个ESP32/ESP 8266开发板发送数据
    的头像 发表于 03-13 09:23 442次阅读
    <b class='flag-5'>ESP32</b>/<b class='flag-5'>ESP</b>8266开发板单向一对多<b class='flag-5'>ESP</b>-NOW无线通信

    乐鑫科技发布全新ESP32-H21超低功耗无线SoC

    的升级版本,ESP32-H21 集成片上 DC-DC 转换,可进一步降低芯片在工作状态下的电流消耗,从而显著延长对功耗敏感物联网产品的电池使用时间。
    的头像 发表于 03-05 14:24 3.7w次阅读

    基于ESP32的环境传感器集线器开源项目介绍

    想监测家庭或办公环境空气质量,却找不到合适的解决方案?要么传感器功能单一,只测温湿度忽略颗粒物、VOC;要么数据分散难整合,无法长期追踪趋势;要么缺乏专业可视化工具,数据看不懂、用不上;还有的不能扩展,想加
    的头像 发表于 03-05 10:07 1030次阅读
    基于<b class='flag-5'>ESP32</b>的环境<b class='flag-5'>传感器</b>集线器开源项目介绍

    ESP32开发板创建同步WebServer网页服务

    ESP32 内置了 Wi-Fi 功能,能够作为网页服务(Web Server)向网络中的其他设备提供服务。通过在 ESP32 上运行网页服务,可以创建基于浏览
    的头像 发表于 01-30 11:36 551次阅读
    <b class='flag-5'>ESP32</b>开发板创建同步WebServer网页服务<b class='flag-5'>器</b>

    ESP32蓝牙驱动MAX98357对音频音乐播放

    本文介绍了MAX98357音频模块的基本特性,并利用ESP32的蓝牙功能程序驱动此模块,最后用手机蓝牙连接ESP32播放手机音乐
    的头像 发表于 12-19 19:55 3584次阅读
    <b class='flag-5'>ESP32</b>蓝牙驱动MAX98357对音频音乐播放

    乐鑫ESP32-C2小尺寸高性价比,物联网应用的理想无线连接方案

    ESP-IDF开发框架和Matter协议,适用于智能家居、工业传感器等场景,提供完整开发生态加速产品上市。该芯片在半导体紧缺背景下立项,为简单物联网设备提供高性价比无线连接方案。
    的头像 发表于 11-04 10:30 625次阅读
    乐鑫<b class='flag-5'>ESP32</b>-C2小尺寸高性价比,物联网应用的理想无线<b class='flag-5'>连接</b>方案

    ESP32-运行网页服务(Web Server)-实用篇

    在前一篇文章《ESP32-运行网页服务(WebServer)-入门篇》,我们介绍了ESP32运行网页服务(WebServer)的原理,然后我们基于
    的头像 发表于 07-28 18:05 4301次阅读
    <b class='flag-5'>ESP32</b>-运行网页服务<b class='flag-5'>器</b>(Web Server)-实用篇

    ESP32内置电容触摸传感器的使用

    本文介绍了ESP32芯片内置的电容式触摸传感器能够探测由手指或其他物品直接接触或接近而产生的电容差异。利用此原理原理。把读取到的触摸值和一个设定阈值比较,可以实现更多的功能,比如触摸灯,触摸门禁等。
    的头像 发表于 07-23 19:56 1709次阅读
    <b class='flag-5'>ESP32</b>内置电容触摸<b class='flag-5'>传感器</b>的使用

    ESP32开发板元件资料

    ESP32开发板元件
    发表于 07-21 14:47 17次下载

    ESP32-P4—具备丰富IO连接、HMI和出色安全特性的高性能SoC

    和IO连接特性等方面提出的更高需求。 卓越性能: ESP32-P4搭载RISC-V双核处理,主频高达400MHz,支持单精度FPU和 AI扩展,可满足所有必要的算力需求。它还集成了一个40MHz低功率
    的头像 发表于 06-26 09:59 2566次阅读
    <b class='flag-5'>ESP32</b>-P4—具备丰富IO<b class='flag-5'>连接</b>、HMI和出色安全特性的高性能SoC