物联网的实现:Arduino UNO R4 WIFI + MQTTX

这篇具有很好参考价值的文章主要介绍了物联网的实现:Arduino UNO R4 WIFI + MQTTX。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、写在前面

Arduino UNO R4 WIFI(简称“UNO R4”)是一款带有R7FA4M1芯片和ESP32芯片的开发板,在UNO R3的基础上,添加了联网和点阵屏的功能。

由于UNO R4的使用与UNO R3基本相同,最主要的区别是联网功能。在ESP32芯片的支持下,UNO R4可以更好地用于物联网教育。

二、物联网

1.物联网的概念

物联网是通信网和互联网的拓展应用和网络延伸,它利用感知技术与智能装备对物理世界进行感知识别,通过网络传输互联,进行计算、处理和知识挖掘,实现人与物、物与物的信息交互和无缝链接,达到对物理世界实时控制、精确管理和科学决策的目的。

2.物联网的技术特征

全面感知:利用无线射频识别、传感器、定位器和二维码等手段,随时随地对物体进行信息采集和获取。

可靠传递:通过各种网络,对接收到的物体信息进行实时且准确的远程传送,实现信息的交互和共享,并进行各种有效的处理。

智能处理:通过各种网络,对接收到的物体信息进行实时且准确的远程传送,实现信息的交互和共享,并进行各种有效的处理。

3.物联网的组成结构

感知层:感知层实现对物理世界的智能感知识别、信息采集处理和自动控制,并通过通信模块将物理实体连接到网络层和应用层。

网络层:网络层主要实现信息的传递、路由和控制,包括延伸网、接入网和核心网,网络层可依托公众电信网和互联网,也可以依托行业专用通信网络。

应用层:应用层包括应用基础设施/中间件和各种物联网应用。应用基础设施/中间件为物联网应用提供信息处理、计算等通用基础服务设施、能力及资源调用接口,以此为基础实现物联网在众多领域的各种应用。

三、Arduino UNO R4 WIFI

arduino跟物联网模块区别,物联网,c语言,websocket
Arduino UNO R4 WIFI VERSION

上图为本教程使用的Arduino UNO R4 WIFI(意大利原版),详见以下网址。

Arduino® UNO R4 WiFi — Arduino Online ShopThe Arduino UNO R4 WiFi combines the processing power and exciting new peripherals of the RA4M1 microcontroller from Renesas with the wireless connectivity power of the ESP32-S3 from Espressif. On top of this, the UNO R4 WiFi offers an on-board 12x8 LED matrix, Qwiic connector, VRTC, and OFF pin, covering all potentialhttps://store-usa.arduino.cc/products/uno-r4-wifi芯片的完整型号为R7FA4M1AB3CFM,ESP32模组的完整编号为ESP32-S3-MINI-1。

功能概况如下。

arduino跟物联网模块区别,物联网,c语言,websocket
Arduino UNO R4 WIFI FUNCTION

四、MQTTX

1.物联网平台分析

近年来,国内外物联网平台发展迅猛,常见的物联网平台包括Blynk、Blinker、HiveMQ、EMQX,Arduino力推Arduino Cloud,北京师范大学Mixly团队还针对中国创客教育开发了MixIO平台,上述平台很好地支持了物联网教育的开展。

然而,Blynk、HiveMQ和Arduino Cloud是国外产品,在网络方面和使用方面颇有不便;Blinker一直不温不火,在资源支持和APP设计方面比较落后;MixIO强烈依赖Mixly,在其它IDE中使用困难。

2.选择MQTTX的原因

考虑了种种因素,由EMQX开发的MQTTX成为中小学物联网教育的较佳选择,其功能和特点包括:具有图形化界面,对初学者友好;支持中文界面显示,对中国用户友好;本地部署,完全免费。

以下是MQTTX的下载地址,本教程以Windows客户端为例,即MQTTX在Windows系统上运行。

MQTTX:全功能 MQTT 客户端工具MQTTX 是一款强大的全功能 MQTT 5.0 客户端工具,适用于桌面、命令行和 WebSocket。它使得开发和测试 MQTT 应用更加简单高效。https://mqttx.app/zh

五、Arduino UNO R4 WIFI + MQTTX

1.方案设计

有了前面的介绍,我们已经了解了物联网、UNO R4和MQTTX是什么。在本教程中,由UNO R4和MQTTX组成的物联网系统将完成两个基本功能——Uno R4向MQTTX发送消息、MQTTX向UNO R4发送消息,见下图。

arduino跟物联网模块区别,物联网,c语言,websocket
物联网系统的两个基本功能

在MQTT协议的支持下,UNO R4和MQTTX形成了单工传输。当UNO R4向MQTTX发送消息时,MQTTX要订阅UNO R4指定的主题;当MQTTX向UNO R4发送消息时,UNO R4要订阅MQTTX指定的主题。

2.方案实现

(1)打开MQTTX,用户名和密码均输入test,点击“连接”。

arduino跟物联网模块区别,物联网,c语言,websocket

(2)点击“添加订阅”,命名为publish。

(3)下载压缩“UNOR4_MQTTX.zip”并解压缩。

(4)打开“arduino_secrets.h”,修改WIFI名称和密码。

//arduino_secrets.h header file
#define SECRET_SSID "WIFI_NAME"
#define SECRET_PASS "WIFI_PSWD"

(5)运行“recFromMQTTX.ino”,此时MQTTX客户端将收到Hello MQTTX的消息。

#include "WiFiS3.h"
#include <ArduinoMqttClient.h>
#include <ArduinoJson.h>

WiFiClient wifiClient;
MqttClient mqttClient(wifiClient);

// 设置WIFI
char ssid[] = "VICTUS";
char pass[] = "22228888";
// 设置MQTT(EMQX)
char mqtt_user[] = "test";
char mqtt_pass[] = "test";
const char broker[] = "broker.emqx.io";
int port = 1883;
// 指定订阅主题(Arduino为信息接收方)
const char subscribe_topic[] = "subscribe";

void setup() {
  Serial.begin(9600);
  while (!Serial) {
    ;
  }
  // 连接网络
  Serial.print("Attempting to connect to WPA SSID: ");
  Serial.println(ssid);
  while (WiFi.begin(ssid, pass) != WL_CONNECTED) {
    Serial.print(".");
    delay(5000);
  }
  Serial.println("You're connected to the network");
  Serial.println();
  // 连接MQTT
  mqttClient.setUsernamePassword(mqtt_user, mqtt_pass);
  Serial.print("Attempting to connect to the MQTT broker: ");
  if (!mqttClient.connect(broker, port)) {
    Serial.print("MQTT connection failed! Error code = ");
    Serial.println(mqttClient.connectError());
    while (1)
      ;
  }
  Serial.println("You're connected to the MQTT broker!");
  // 订阅主题
  mqttClient.onMessage(onMqttMessage);
  mqttClient.subscribe(subscribe_topic);
}

void loop() {
  mqttClient.poll(); // 定期检查新消息
}

void onMqttMessage(int messageSize) {
  // 读取消息内容
  String message;
  for (int i = 0; i < messageSize; i++) {
    message += (char)mqttClient.read();
  }
  // 解析 JSON 消息
  StaticJsonDocument<512> doc;
  DeserializationError error = deserializeJson(doc, message);
  // 检查解析是否成功
  if (error) {
    Serial.print("JSON parse failed: ");
    Serial.println(error.c_str());
    return;
  }
  // 打印 JSON 消息的内容
  Serial.println("Received JSON message:");
  serializeJsonPretty(doc, Serial);
}

(6)运行“sendToMQTTX.ino”,之后在MQTTX中指定subscribe主题,点击“发送”按钮,此时Arduino IDE的“串口监视器”将收到Hello Arduino的消息。文章来源地址https://www.toymoban.com/news/detail-769357.html

#include "WiFiS3.h"
#include <ArduinoMqttClient.h>
#include <ArduinoJson.h>

WiFiClient wifiClient;
MqttClient mqttClient(wifiClient);

//  设置WIFI
char ssid[] = "VICTUS";
char pass[] = "22228888";
//  设置MQTT(EMQX)
char mqtt_user[] = "test";
char mqtt_pass[] = "test";
const char broker[] = "broker.emqx.io";
int port = 1883;
//  指定发送主题(Arduino为信息发送方)
const char publish_topic[] = "publish";

void setup() {
  //  打开串口
  Serial.begin(9600);
  while (!Serial) {
    ;
  }
  //  连接网络
  Serial.print("Attempting to connect to WPA SSID: ");
  Serial.println(ssid);
  while (WiFi.begin(ssid, pass) != WL_CONNECTED) {
    Serial.print(".");
    delay(5000);
  }
  Serial.println("You're connected to the network");
  Serial.println();
  //  连接MQTT
  mqttClient.setUsernamePassword(mqtt_user, mqtt_pass);
  Serial.print("Attempting to connect to the MQTT broker: ");
  if (!mqttClient.connect(broker, port)) {
    Serial.print("MQTT connection failed! Error code = ");
    Serial.println(mqttClient.connectError());
    while (1)
      ;
  }
  Serial.println("You're connected to the MQTT broker!");
}

void loop() {
  mqttClient.poll();
  publishMessage();
}

void publishMessage() {
  // 创建一个 JSON 对象
  StaticJsonDocument<200> doc;
  doc["msg"] = "Hello MQTTX";
  // 将 JSON 对象序列化为字符串
  char jsonBuffer[512];
  serializeJson(doc, jsonBuffer);
  // 向指定的主题发送 JSON 字符串
  mqttClient.beginMessage(publish_topic);
  mqttClient.print(jsonBuffer);
  mqttClient.endMessage();
  // 每隔一段时间发送一次
  delay(5000);
}

到了这里,关于物联网的实现:Arduino UNO R4 WIFI + MQTTX的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序+UDP+wifi8266+l293d扩展板+Arduino uno遥控小车

    序言 前面突然看到自己已经落灰的Arduino板子,感觉自己必须做点什么。正好手上有个8266的模块、有个焊接接好的小车、有个落灰的Arduino板子,好巧。正好前几天上过一篇8266模块和微信小程序进行UDP通信的博文,一切都正好,那开搞吧。 前置知识需要的不多 至少要去看看微

    2024年02月09日
    浏览(47)
  • 第二十九篇、基于Arduino uno,控制MP3Player mini模块播放音乐——结果导向

    说明:通电后播放对应的歌曲,可以选择循环播放还是播放一次,也可以通过串口指定播放对应的音乐,如果是你想要的,可以接着往下看。 说明:虽然MP3Player mini模块有很多型号,但是原理和代码都是适用的。 说明:只需要连接六根线。 引脚图: uno————MP3Player mini模

    2024年02月03日
    浏览(50)
  • Arduino开发之如何连接WIFI模块?

      在硬件开发过程中,会将许多传感器组合,产生许多数据,这些数据需要传输到上位机进行数据融合处理才能实现硬件系统的功能,或许这些数据不急着处理,可以将数据存储到SD卡中,隔一段时间后再导出统一整理,但有时需要无线通信,远控硬件作出行动。对于无线

    2024年02月06日
    浏览(45)
  • Arduino UNO原理图学习记录

    arduino作为单片机的一种语言,对应有arduino系列电路板,其中最常用的为arduino uno。 将UNO其中部分电路进行了删改  Atmega328P芯片部分(加了两个0R电阻,芯片可用Atmega328P与Atmega328PB) atmega328p中的1,2,9,10,11,12,13,14,15,16,17,20,23,24,25,26,27,28,30,31,32可以作为输出输入端子; 3,5,21则接地

    2024年02月06日
    浏览(41)
  • 物联网智能网关(ESP8266WIFI模块)

    一、温湿度和光敏数据采集。要求:采集ESP8266平台中温湿度传感器与光敏电阻的数据并传输至网页端显示。 (1)分别对应温湿度传感器及光敏传感器的功能绘制或展示硬件连接原理图并简单说明。   光敏电路:光敏电路,实现感光效果   温湿度(DHT11)电路:测量温湿度

    2023年04月22日
    浏览(51)
  • Arduino UNO HC-05蓝牙配对教程

    1. 准备材料         Arduino1(主)、Arduino2(从)、蓝牙1(主)、蓝牙2(从)、杜邦线若干 2. 接线方式(主从一致) 1.主机配对 1. 新建一个空白工程,直接上传到Arduino。   2. 设置蓝牙进入AT指令模式,具体操作方法:按住蓝牙模块按钮,然后上电,直到蓝牙模块LED进入慢闪烁模式,

    2023年04月27日
    浏览(46)
  • Arduino UNO 4X4矩阵键盘

    目录 一,硬件 二,原理 三,电路图 四,代码  五,实物图 Arduino UNO 4X4矩阵键盘         连接矩阵键盘的8个IO全部上拉,先使行线变为输入,列线变为输出并为低电平,若有按键按下,则对应的行线接地,判断哪个行线为低电平,则可读出第几行有按键被按下;然后使列

    2024年02月16日
    浏览(46)
  • Arduino D1开发板 ESP8266 ESP01-S Wifi 模块 手机控制继电器 学习手记

    因为以前学过一次,但是不深入。所以这次重学,记录一下。 这次用了最新的东东,畅快无极限! 官网在这里:https://arduino-esp8266.readthedocs.io/en/3.1.1/index.html 在ArduinoIDE里下载开发板esp8266是一件很痛苦的事情,虽然成功过,但是后来找到最好的方法还是下载中国的离线版,

    2024年02月11日
    浏览(49)
  • 【宿舍指纹锁---Arduino UNO (保姆级教程)】

    Arduino UNO AS608指纹模块+TTL转接口 MG996R舵机 1602液晶 胶枪 杜邦线 面包板 细线 5v电源 https://github.com/adafruit/Adafruit-Fingerprint-Sensor-Library/archive/master.zip 1.首先下载Adafruit指纹库(https://github.com/adafruit/Adafruit-Fingerprint-Sensor-Library/archive/master.zip)。下载完成后,您将得到一个.zip文件;

    2024年02月02日
    浏览(58)
  • 使用Arduino Uno构建一个巡线机器人

    原文 MX 巡线机器人 (LFR: line follower robot)是一种简单的自主引导机器人,它遵循在地面上绘制的线来检测白色表面上的暗线或黑暗表面上的白线。在本教程中,使用 Arduino Uno 和一些易于访问的组件构建黑线跟随机器人。 巡线机器人的原理 如前所述,巡线机器人(LFR)跟随

    2024年02月10日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包