网站建设合同定义南阳seo长尾关键词

bicheng/2026/1/17 23:41:53/文章来源:
网站建设合同定义,南阳seo长尾关键词,黑龙江省住房和城乡建设厅官网,开发软件app下载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.mzph.cn/bicheng/89395.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

公司网站在哪备案logo设计网站官网

https://bbs.espressif.com/viewtopic.php?t75242#p100294 https://blog.csdn.net/ydogg/article/details/72598752

网页设计音乐网站旅游类网站策划建设_

GPT-4 Turbo、功能融合:OpenAI 首个开发者大会回顾 就在昨天 2023 年 11 月 6 日,OpenAI 举行了首个开发者大会 DevDay,即使作为目前大语言模型行业的领军者,OpenAI 卷起来可一点都不比同行差。 OpenAI 在大会上不仅公布了新的 …

网站主题如何自己做资源网站

1.分发简介 RabbitMQ不设置的话默认采用轮询方式分发消息,你一个我一个(公平);但实际生活中,由于处理速度不同,若还采用轮询方式分发会导致处理速度快的空等待,因此我们采用不公平分发 2.不公平分发 在消费者这侧设置即可,以之前的Worker3和Worker4为例 2.1.Worker3 packa…

网站开发主要任务怎么做网站一张图

最新版风车IM通讯iosapph5三端源码及视频教程 1.宝塔环境如下: Nginx 1.20 Tomcat 8 MySQL 8.0 Redis 7 2.放行端口如下: 666 6600 6700 7000(用作前端) 7001(用作后端) 3.宝塔数据库添加数据库旁边有个ro…

网站关联词搜索怎么做网站怎么做中英文交互

【User Tech】2024 我们来啦! 今年,【User Tech】将更加专注于为社区用户提供技术功能解读、热点答疑,聚焦更丰富、更多样化的行业或使用场景的用户案例。我们期待通过分享更多关于 Milvus Cloud 的实战经验,为大家在 AI、大模型、…

徐州百度快照优化临漳seo整站排名

背景介绍 什么代码覆盖? 代码覆盖(Code coverage)是软件测试中的一种度量,描述程序中源代码被测试的比例和程度,所得比例称为代码覆盖率。简单来理解,就是单元测试中代码执行量与代码总量之间的比率。 Java常用的单元测试覆盖率…

网站建设开发外包公司怎么做网站扫码支付

我自己用C写了一个插件,插件是dll形式的,我的插件式在dll的目录下有个config文件夹,里面是我用json写的插件配置文件,当插件运行的时候我需要读取到json配置文件,所有最重要的就是如何获取dll的路径. 大概就是这么个结构, 我自己封装了一个函数.只适用于window编程,因为里面用…

上海外贸建站商城威海企业网站建设

“最近读了一本不是编程的程序员技能书《软技能-代码之外的生存指南》,全书分为 7 个篇章,分别是职业、自我营销、学习、生产力、理财、健身和精神。在读完职业、自我营销和理财这三个篇章后,让我感触很深,也让我很意外。本来以为…

厦门网站设计公司找哪家厦门小程序建设企业网站报备

通知!通知!通知!!!玩酷屋十一黄金优惠限时限量秒杀活动,能抢到算你厉害:1、活动期间 2017/10/02 22:30 ——2017/10/05 22:302、【宝宝的物理学】第一辑 原价:189元,秒…

上海网站建设的公司宁波发布最新通报

简介 Lookup注解可能平时开发中大家接触的少,但是又确实挺有用的,比如我们一个单例Bean注入了一个原型Bean,原型Bean的效果其实是会失效的,因为单例Bean一开始就实例化好了,后面也不会再变化,但我们可能需…

社交网站备案爱站工具包

网络安全对于游戏行业来说是至关重要的,当游戏行业受到恶意的攻击者进行网络攻击时,严重的会导致服务器崩溃,使业务无法正常进行工作运行,给企业造成巨大的经济损失,那么对于网络安全,游戏服务器需要注意哪…

wordpress整站数据广东建设工程信息网站

在独立站跨境贸易当中,很多时候我们都会重复一个动作,那就是查看对手网站或者某一网站的流量,以此来分析和总结如何优化自己的站点,借鉴对手优秀的地方来补足自己的缺点,或者某些时候会模仿甚至抄袭竞品网站。那么如何…

网站建设方案和报价表软件开发人天报价标准

文章目录 1 Hive概述2 Hive部署2.1 规划2.2 安装软件 3 Hive体验4 Hive客户端4.1 HiveServer2 服务4.2 DataGrip 5 问题集5.1 Could not open client transport with JDBC Uri 结语 1 Hive概述 Apache Hive是一个开源的数据仓库查询和分析工具,最初由Facebook开发&…

外贸设计网站建设网站建设创新成果

原创 | 文 BFT机器人 01 人机交互的新工具 在人机交互领域,来自欧洲各地的研究人员开发了一种名为HEUROBOX的新工具,用于评估交互。HEUROBOX提供了84个基本启发式和228个高级启发式,用于评估人机交互的各个方面,如安全性、人体工…

加强普法网站和普法网络集群建设关于建设工程资质网站

“更适合中国宝宝体质”的主题乐园,被泡泡玛特造出来了。 9月26日,位于北京朝阳公园内的国内首个潮玩行业沉浸式 IP 主题乐园,也是泡泡玛特首个线下乐园——泡泡玛特城市乐园 POP LAND正式开园。 约4万平方米的空间中,泡泡玛特使…

杭州网站建设优化推广网络推广学校

转载自:http://blog.sina.com.cn/s/blog_7571423b01016707.html 编程求解:输入两个整数 n 和 m ,从数列 1 , 2 , 3.......n 中随意取几个数 ,使其和等于 m , 要求将其中所有的可能组合列出来. 分析: 主要思…

手机网站微信支付代码陕西西安网站设计公司

在现代办公场景中,数据可视化的应用已经成为提高效率、推动创新的得力工具。无论是管理层还是普通员工,都能从数据可视化中受益匪浅。下面我就以可视化从业者的角度,简单聊聊这个话题。 首先,数据可视化提升了数据的易读性与理解性…

大学生做网站和做app深圳市住房和城乡建设部网站

VSS概述版本控制是工作组软件开发中的重要方面,它能防止意外的文件丢失、允许反追踪到早期版本、并能对版本进行分支、合并和管理。在软件开发和您需要比较两种版本的文件或找回早期版本的文件时,源代码的控制是非常有用的。Visual SourceSafe 是一种源代…

专业网站的建设设行吗温州网站建设和运营

java lambda循环对于每个经常需要在Java 8&#xff08;或更高版本&#xff09;中使用多维数组的人来说&#xff0c;这只是一个快速技巧。 在这种情况下&#xff0c;您可能经常会以类似于以下代码的结尾&#xff1a; float[][] values ... for (int i 0; i < values.leng…

服装网站 欣赏wordpress 媒体库无法打开

此片文章简单介绍布局管理的使用方法。通过实例先分别介绍分隔窗口QSplitter类、停靠窗口QDockWidget类及QStackedWidget类的使用&#xff0c;最后再通过一个实例介绍QLayout的使用。 分割窗口QSplitter类 分隔窗口可以灵活地布局窗口&#xff0c;可以用在文件资源管理器地窗…