当前位置: 首页 > news >正文

锦州网站建设公司建设银行信用卡积分兑换话费网站

锦州网站建设公司,建设银行信用卡积分兑换话费网站,房子如何上网站做民宿,wordpress 禁用谷歌字体 地图ESP32和ESP8266的ESP-MESH 功能介绍一、介绍ESP-MESH二、安装painlessMesh库三、ESP-MESH基本示例#xff08;广播消息#xff09;四、示范 功能介绍 了解如何使用ESP-MESH网络协议通过ESP32和ESP8266 NodeMCU板构建网状网络。 ESP-MESH允许多个设备#xff08;节点#x… ESP32和ESP8266的ESP-MESH 功能介绍一、介绍ESP-MESH二、安装painlessMesh库三、ESP-MESH基本示例广播消息四、示范 功能介绍 了解如何使用ESP-MESH网络协议通过ESP32和ESP8266 NodeMCU板构建网状网络。 ESP-MESH允许多个设备节点在单个无线局域网下相互通信。 ESP32和ESP8266板均支持该功能。 在本指南中我们将向您展示如何使用Arduino内核开始使用ESP-MESH。 本文涵盖以下主题 介绍ESP-MESH ESP-MESH基本示例广播消息 使用ESP-MESH交换传感器读数广播 一、介绍ESP-MESH 根据Espressif文档 “ ESP-MESH是建立在Wi-Fi协议之上的网络协议。 ESP-MESH允许散布在较大物理区域室内和室外中的众多设备称为节点在单个WLAN无线局域网下互连。 ESP-MESH具有自我组织和自我修复的功能这意味着该网络可以自动构建和维护。” 有关更多信息请访问ESP-MESH官方文档。 传统的Wi-Fi网络架构 在传统的Wi-Fi网络体系结构中单个节点访问点–通常为路由器连接到所有其他节点站。 每个节点都可以使用访问点相互通信。 但是这仅限于接入点的Wi-Fi覆盖范围。 每个站点必须在范围内才能直接连接到接入点。 ESP-MESH不会发生这种情况。 ESP-MESH网络架构 使用ESP-MESH节点无需连接到中央节点。 节点负责彼此中继传输。 这允许多个设备分布在较大的物理区域上。 节点可以自组织并彼此动态对话以确保数据包到达其最终节点目的地。 如果从网络中删除了任何节点则它可以自我组织以确保数据包到达其目的地。 painlessMesh库使我们能够以简单的方式使用ESP8266或/和ESP32板创建网状网络。 “ painlessMesh是真正的自组织网络这意味着不需要计划中央控制器或路由器。 任何包含1个或多个节点的系统都将自组织成功能齐全的网格。 网格的最大大小受堆中可分配给子连接缓冲区的内存量的限制我们认为因此应该确实很高。 有关painlessMesh库的更多信息。 二、安装painlessMesh库 您可以通过Arduino库管理器安装painlessMesh。 转到工具管理库。 图书馆管理器应打开。 搜索“ painlessmesh”并安装该库。 我们正在使用1.4.5版 该库还需要其他一些库依赖项。 应该会弹出一个新窗口要求您安装所有缺少的依赖项。 选择“全部安装”。 如果未显示此窗口则需要安装以下库依赖项 ArduinoJson来自bblanchon 任务计划程序 ESPAsyncTCPESP8266 AsyncTCPESP32 如果您使用的是PlatformIO则将以下行添加到platformio.ini文件中以添加库并更改监视器速度。 For the ESP32: monitor_speed 115200 lib_deps painlessmesh/painlessMesh ^1.4.5 ArduinoJson arduinoUnity TaskScheduler AsyncTCP For the ESP8266: monitor_speed 115200 lib_deps painlessmesh/painlessMesh ^1.4.5 ArduinoJson TaskScheduler ESPAsyncTCP 三、ESP-MESH基本示例广播消息 要开始使用ESP-MESH我们首先尝试使用该库的基本示例。 本示例创建一个网状网络其中所有板均向所有其他板广播消息。 我们以四个板两个ESP32和两个ESP8266为例进行了实验。 您可以添加或删除板。 该代码与ESP32和ESP8266板均兼容。 代码– painlessMesh库基本示例 将以下代码复制到您的Arduino IDE库示例中的代码。 该代码与ESP32和ESP8266板均兼容。 /*Rui SantosComplete project details at https://RandomNerdTutorials.com/esp-mesh-esp32-esp8266-painlessmesh/This is a simple example that uses the painlessMesh library: https://github.com/gmag11/painlessMesh/blob/master/examples/basic/basic.ino */#include painlessMesh.h#define MESH_PREFIX whateverYouLike #define MESH_PASSWORD somethingSneaky #define MESH_PORT 5555Scheduler userScheduler; // to control your personal task painlessMesh mesh;// User stub void sendMessage() ; // Prototype so PlatformIO doesnt complainTask taskSendMessage( TASK_SECOND * 1 , TASK_FOREVER, sendMessage );void sendMessage() {String msg Hi from node1;msg mesh.getNodeId();mesh.sendBroadcast( msg );taskSendMessage.setInterval( random( TASK_SECOND * 1, TASK_SECOND * 5 )); }// Needed for painless library void receivedCallback( uint32_t from, String msg ) {Serial.printf(startHere: Received from %u msg%s\n, from, msg.c_str()); }void newConnectionCallback(uint32_t nodeId) {Serial.printf(-- startHere: New Connection, nodeId %u\n, nodeId); }void changedConnectionCallback() {Serial.printf(Changed connections\n); }void nodeTimeAdjustedCallback(int32_t offset) {Serial.printf(Adjusted time %u. Offset %d\n, mesh.getNodeTime(),offset); }void setup() {Serial.begin(115200);//mesh.setDebugMsgTypes( ERROR | MESH_STATUS | CONNECTION | SYNC | COMMUNICATION | GENERAL | MSG_TYPES | REMOTE ); // all types onmesh.setDebugMsgTypes( ERROR | STARTUP ); // set before init() so that you can see startup messagesmesh.init( MESH_PREFIX, MESH_PASSWORD, userScheduler, MESH_PORT );mesh.onReceive(receivedCallback);mesh.onNewConnection(newConnectionCallback);mesh.onChangedConnections(changedConnectionCallback);mesh.onNodeTimeAdjusted(nodeTimeAdjustedCallback);userScheduler.addTask( taskSendMessage );taskSendMessage.enable(); }void loop() {// it will run the user scheduler as wellmesh.update(); }在上传代码之前您可以设置MESH_PREFIX类似于MESH网络的名称和MESH_PASSWORD变量可以将其设置为任意值。 然后我们建议您为每个板更改以下行以轻松识别发送消息的节点。 例如对于节点1更改消息如下所示 String msg Hi from node 1 ; 代码如何工作 首先包括painlessMesh库。 #include “painlessMesh.h” MESH详细信息 然后添加网格详细信息。 MESH_PREFIX引用网格的名称。 您可以将其更改为任何您喜欢的。 #define MESH_PREFIX “whateverYouLike” 顾名思义MESH_PASSWORD是MESH密码。 您可以将其更改为任何您喜欢的。 #define MESH_PASSWORD “somethingSneaky” 网格中的所有节点应使用相同的MESH_PREFIX和MESH_PASSWORD。 MESH_PORT指您要在其上运行网格服务器的TCP端口。 默认值为5555。 #define MESH_PORT 5555 Scheduler 建议避免在网状网络代码中使用delay。 为了维护网格需要在后台执行一些任务。 使用delay将阻止这些任务的发生并可能导致网格失去稳定性/崩溃。 相反建议使用TaskScheduler运行在painlessMesh本身中使用的任务。 下面的行创建了一个名为userScheduler的新Scheduler。 painlessMesh 创建一个名为mesh的painlessMesh对象以处理网格网络。 Create tasks 创建一个名为taskSendMessage的任务该任务负责在程序运行时每秒调用一次sendMessage函数。 Task taskSendMessage(TASK_SECOND * 1 , TASK_FOREVER, sendMessage); Send a Message to the Mesh sendMessage函数将消息发送到消息网络广播中的所有节点。 void sendMessage() {String msg Hi from node 1;msg mesh.getNodeId();mesh.sendBroadcast( msg );taskSendMessage.setInterval(random(TASK_SECOND * 1, TASK_SECOND * 5)); }The message contains the “Hi from node 1” text followed by the board chip ID. String msg “Hi from node 1”; msg mesh.getNodeId(); 要广播消息只需在网格对象上使用sendBroadcast方法然后将要发送的消息msg作为参数传递。 mesh.sendBroadcast(msg); 每次发送新消息时代码都会更改消息之间的间隔一到五秒。 taskSendMessage.setInterval(random(TASK_SECOND * 1, TASK_SECOND * 5)); Mesh Callback Functions 接下来创建多个回调函数当特定事件在网格上发生时将被调用。 receiveCallback函数打印消息发件人来自和消息内容msg.c_str。 void receivedCallback( uint32_t from, String msg ) {Serial.printf(startHere: Received from %u msg%s\n, from, msg.c_str()); }每当新节点加入网络时newConnectionCallback函数就会运行。 此功能仅打印新节点的芯片ID。 您可以修改功能以执行任何其他任务。 void newConnectionCallback(uint32_t nodeId) {Serial.printf(-- startHere: New Connection, nodeId %u\n, nodeId); }每当网络上的连接发生更改时节点加入或离开网络时changedConnectionCallback函数都会运行。 void changedConnectionCallback() {Serial.printf(Changed connections\n); }当网络调整时间时nodeTimeAdjustedCallback函数将运行以便所有节点都同步。 打印偏移量。 void nodeTimeAdjustedCallback(int32_t offset) {Serial.printf(Adjusted time %u. Offset %d\n, mesh.getNodeTime(),offset); }setup() 选择所需的调试消息类型 //mesh.setDebugMsgTypes( ERROR | MESH_STATUS | CONNECTION | SYNC | COMMUNICATION | GENERAL | MSG_TYPES | REMOTE ); // all types on mesh.setDebugMsgTypes( ERROR | STARTUP ); // set before init() so that you can see startup messages用前面定义的细节初始化网格。 mesh.init(MESH_PREFIX, MESH_PASSWORD, userScheduler, MESH_PORT); 将所有回调函数分配给它们相应的事件。 mesh.onReceive(receivedCallback); mesh.onNewConnection(newConnectionCallback); mesh.onChangedConnections(changedConnectionCallback); mesh.onNodeTimeAdjusted(nodeTimeAdjustedCallback); 最后将taskSendMessage函数添加到userScheduler。 调度程序负责在正确的时间处理和运行任务。 userScheduler.addTask(taskSendMessage); 最后启用taskSendMessage以便程序开始将消息发送到网格。 taskSendMessage.enable(); 为了使网格保持运行将mesh.update添加到loop中。 void loop() {// it will run the user scheduler as wellmesh.update(); }四、示范 将提供的代码上传到所有主板。 不要忘记修改邮件以轻松识别发件人节点 将板连接到计算机后打开每个板的串行连接。 您可以使用串行监视器也可以使用类似PuTTY的软件并为所有板打开多个窗口。 您应该看到所有板都收到彼此的消息。 例如这些是节点1收到的消息。它从节点2、3和4接收消息。 当网格上发生更改时您还应该看到其他消息板子离开或加入网络时。 使用ESP-MESH交换传感器读数 在下一个示例中我们将在4个板之间交换传感器读数您可以使用不同数量的板。 每个板都接收其他板的读数。 例如我们将交换来自BME280传感器的传感器读数但是您可以使用任何其他传感器。
http://www.sadfv.cn/news/426483/

相关文章:

  • 网站侵权 做网站有责任吗做网线头子的顺序
  • 济南网站建设设计石家庄网站做网站
  • 网站建设的重要性意义与价值中华室内设计网官网
  • 做seo推广手机网站网站活动策划怎么做
  • 做网站的公司经营范围怎么写企业网站建设三个原则
  • 游戏网站建设的策划wordpress的编辑器插件安装
  • 做推广用那个网站吗杭州网站设计公司哪个好
  • 手机网站设计欣赏网站城乡建设厅建筑特种作业证书查询
  • net网站开发找那家中国十大室内设计师
  • 织梦电子行业网站模板在网站中添加百度地图
  • 网站免费建软件外包产业
  • 重庆智能网站建设多少钱网站建设广告平台推广
  • 企业网站的综合要求是什么前几年做那个网站能致富
  • 天河手机建网站网站注册协议模板
  • 网站名称不能涉及在线印章制作
  • 网站建设开票属于什么服务网叶制作
  • 遵义市做网站公司盐城市城镇化建设投资集团网站
  • 十堰微网站建设价格建设彩票网站如何盈利
  • 顺的网络做网站好不好漂亮的html单页
  • 专业餐饮vi设计公司wordpress 4.7优化精减
  • 公司内部网站维护企业网站的功能可分为前台和后台两个部分
  • 个人网站备案拍照免费中学网站模板
  • 网站设计什么样风格会高端些网站建设过程中的网站设计怎么做
  • 阿里巴巴国际站入口c2c代表平台有哪些
  • 网盘搜索 网站开发网站建设 部署与发布视频
  • 石家庄网站建设的公司wordpress右侧悬浮
  • 黑龙江省建设网站首页网络推广培训学校
  • 做网站鞍山公司邮箱地址
  • 官方网站如何做做网站属于程序员吗
  • 一个网站的建设流程重庆车牌制作