使用两块ESP8266实现ESP-NOW通信

ESP-NOW简介

ESP-NOW是Espressif开发的一种基于Wi-Fi的低功耗通信协议。与传统Wi-Fi通信不同,ESP-NOW不需要配对过程,设备间可以直接通信,非常适合需要快速传输小数据包的应用,如传感器网络、遥控器和智能家居设备。它的优势在于低延迟、低功耗和无需网络路由器的直连通信。

使用两块ESP8266实现ESP-NOW通信

要使用两块ESP8266实现ESP-NOW通信,我们需要配置一块作为发送设备,另一块作为接收设备。首先,确保你已经安装了Arduino IDE,并添加了ESP8266的开发板支持。

准备工作

  1. 安装Arduino IDE和ESP8266支持包

    • 打开Arduino IDE,导航到File > Preferences,在“Additional Boards Manager URLs”字段中添加以下链接:
      http://arduino.esp8266.com/stable/package_esp8266com_index.json
      
    • 然后,打开Tools > Board > Boards Manager,搜索esp8266并安装。
  2. 库文件

    • 安装ESP-NOW库:打开Sketch > Include Library > Manage Libraries,搜索ESP8266WiFi并安装。

发送端代码

以下是ESP8266作为发送端的Arduino代码:

#include <ESP8266WiFi.h>
#include <espnow.h>// 广播地址,所有设备均可接收
uint8_t broadcastAddress[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};// 发送数据结构
typedef struct struct_message {char message[32];
} struct_message;struct_message myData;void setup() {// 初始化串口监视器Serial.begin(115200);// 初始化Wi-FiWiFi.mode(WIFI_STA);// 初始化ESP-NOWif (esp_now_init() != 0) {Serial.println("Error initializing ESP-NOW");return;}// 注册发送回调esp_now_set_self_role(ESP_NOW_ROLE_CONTROLLER);esp_now_add_peer(broadcastAddress, ESP_NOW_ROLE_COMBO, 1, NULL, 0);
}void loop() {// 填充发送数据strcpy(myData.message, "Hello, ESP-NOW!");// 发送数据esp_now_send(broadcastAddress, (uint8_t *) &myData, sizeof(myData));// 打印发送信息Serial.println("Message sent: " + String(myData.message));// 每隔2秒发送一次delay(2000);
}

接收端代码

以下是ESP8266作为接收端的Arduino代码:

#include <ESP8266WiFi.h>
#include <espnow.h>// 接收数据结构
typedef struct struct_message {char message[32];
} struct_message;struct_message myData;// 接收回调函数
void onDataRecv(uint8_t *mac, uint8_t *incomingData, uint8_t len) {memcpy(&myData, incomingData, sizeof(myData));Serial.print("Received message: ");Serial.println(myData.message);
}void setup() {// 初始化串口监视器Serial.begin(115200);// 初始化Wi-FiWiFi.mode(WIFI_STA);// 初始化ESP-NOWif (esp_now_init() != 0) {Serial.println("Error initializing ESP-NOW");return;}// 注册接收回调esp_now_set_self_role(ESP_NOW_ROLE_SLAVE);esp_now_register_recv_cb(onDataRecv);
}void loop() {// 空闲
}

总结

ESP-NOW是一个强大的协议,可以在没有Wi-Fi网络的情况下实现设备间的快速通信。通过以上步骤,你可以使用两块ESP8266开发板建立一个简单的ESP-NOW通信系统。这种方式特别适用于低功耗、低延迟和无需网络基础设施的应用场景。希望这篇博客能帮你快速入门ESP-NOW,开启你的无线通信开发之旅。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/15362.shtml

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

相关文章

小红书云原生 Kafka 技术剖析:分层存储与弹性伸缩

面对 Kafka 规模快速增长带来的成本、效率和稳定性挑战时&#xff0c;小红书大数据存储团队采取云原生架构实践&#xff1a;通过引入冷热数据分层存储、容器化技术以及自研的负载均衡服务「Balance Control」&#xff0c;成功实现了集群存储成本的显著降低、分钟级的集群弹性迁…

[图解]SysML和EA建模住宅安全系统-07 to be块定义图

1 00:00:01,970 --> 00:00:05,040 入侵者这里有个∞ 2 00:00:05,530 --> 00:00:07,000 说明它下面已经有子图了 3 00:00:07,010 --> 00:00:08,080 我们看看里面子图 4 00:00:10,200 --> 00:00:17,000 这里&#xff0c;我们看位置 5 00:00:19,030 --> 00:00:…

Vitis HLS 学习笔记--抽象并行编程模型-不良示例

目录 1. 简介 2. 基础 kernel 2.1 pass kernel 2.2 double_pass kernel 2.3 add_kernel 2.4 split kernel 3. 三种bypass 3.1 input_bypass 3.2 middle_bypass 3.3 output_bypass 4. 总结 1. 简介 本文展示三个在数据流水线中常见的问题&#xff1a; 输入参数绕过…

python中模拟键盘按键和鼠标按键

目录 0.作用和需安装库 1.模拟键盘按键 2.虚拟键表 3.模拟鼠标 0.作用和需安装库 作用&#xff1a;用程序实现达到按下键盘按键的作用&#xff0c;或者按下鼠标&#xff0c;无需真正按键盘或者鼠标。 需要安装pywin32这个库 pip install pywin32 1.模拟键盘按键 例子1…

在Mac OS下编写第一个Flask代码

在电脑上已经安装了Homebrew&#xff0c;在Homebrew里已经安装了Python。 创建一个新的Flask应用。这里发生了几件事&#xff1a; 创建虚拟环境&#xff1a; 你使用python3 -m venv flask创建了一个名为flask的虚拟环境。激活虚拟环境&#xff1a; 通过运行source flask/bin/ac…

chatgpt线性差值 将直线渐变颜色

color(x)(x-x1)/(x2-x1) 与gpt给出的 这个位置比例可以表示为d/L是概念相同 x-x1是计算当前点距离起点距离&#xff0c;x2-x1是计算长度 例如&#xff0c;如果我们在直线上距离起点A的距离为d&#xff0c;整条直线的长度为L 用数学方式解释 2024/5/25 18:54:30 当我们要在一…

vue+echart :点击趋势图中的某一点或是柱状图,出现弹窗,并传输数据

样式 在趋势图中点击某一个柱状图&#xff0c;出现下面的弹窗 代码实现 主要是在趋势图页面代码中&#xff0c;在初始化趋势图的设置中&#xff0c;添加对趋势图监听的点击方法 drawChart() {const chartData this.chartData;let option {};if (!chartData.xData?.len…

Swift 类和结构体

类和结构体 一、结构体和类对比1、类型定义的语法2、结构体和类的实例3、属性访问4、结构体类型的成员逐一构造器 二、结构体和枚举是值类型三、类是引用类型1、恒等运算符2、指针 结构体和类作为一种通用而又灵活的结构&#xff0c;成为了人们构建代码的基础。你可以使用定义常…

python mp3转mp4工具

成品UI 安装moviepy库 pip install moviepy 转换demo from moviepy.editor import *# 创建一个颜色剪辑&#xff0c;时长与音频相同 audioclip AudioFileClip(r"C:\Users\Administrator\PycharmProjects\pythonProject44\test4\赵照 - 灯塔守望人.mp3") videoclip…

node-nass安装踩坑

编译DSS的前端&#xff0c;用1.1.4编译&#xff0c;没有问题&#xff0c;用1.1.1版本就有问题&#xff0c;一直是node-gyp有问题&#xff0c;怎么也解决了不了。 后来检查发现&#xff0c;是因为要安装node-nass才导致出现node-gyp的问题。 而1.1.4没问题&#xff0c;是因为我…

头歌c语言实验答案

由于头歌C语言实验的具体内容和题目可能随时间变化&#xff0c;我无法直接提供特定实验的完整答案。但我可以基于参考文章中的内容和结构&#xff0c;给出一个通用的回答格式&#xff0c;并结合相关信息进行说明。 通用回答格式 实验名称和描述 实验名称&#xff1a;头歌C语言…

用Python Pygame做的一些好玩的小游戏

有些游戏的代码比较长就不公布了 1.简简单单 1.疯狂的鸡哥 你要准备的图片&#xff1a; 命名为&#xff1a;ji.png 代码&#xff1a; import pygame import random as r pygame.init() pygame.display.set_caption(aaa) pm pygame.display.set_mode((800,600))class Ls(py…

Java进阶学习笔记15——接口概述

认识接口&#xff1a; Java提供了一个关键字Interface&#xff0c;用这个关键字我们可以定义一个特殊的结构&#xff1a;接口。 接口不能创建对象。 注意&#xff1a;接口不能创建对象&#xff0c;接口是用来被类实现&#xff08;implements&#xff09;的&#xff0c;实现接口…

中国电子学会(CEIT)2023年05月真题C语言软件编程等级考试三级(含详细解析答案)

中国电子学会(CEIT)考评中心历届真题(含解析答案) C语言软件编程等级考试三级 2023年05月 编程题五道 总分:100分一、找和为K的两个元素(20分) 在一个长度为n (n < 1000)的整数序列中,判断是否存在某两个元素之和为k。 时间限制: 1000 内存限制: 65536 输入 …

基于Spring Boot的高校图书馆管理系统

项目和论文都有企鹅号2583550535 基于Spring Boot的图书馆管理系统||图书管理系统_哔哩哔哩_bilibili 第1章 绪论... 1 1.1 研究背景和意义... 1 1.2 国内外研究现状... 1 第2章 相关技术概述... 2 2.1 后端开发技术... 2 2.1.1 SpringBoot 2 2.1.2 MySQL.. 2 2.1.3 My…

unity中如何插入网页

在Unity中插入自己的网页通常是通过使用Unity的WebGL构建目标和HTML页面来实现的。以下是一些步骤&#xff1a; 构建你的Unity项目为WebGL&#xff1a;在Unity中&#xff0c;选择Build Settings&#xff08;构建设置&#xff09;&#xff0c;将Platform&#xff08;平台&#x…

vr商品全景展示场景编辑软件的优点

3D模型展示网站搭建编辑器以强大的3D编辑引擎和逼真的渲染效果&#xff0c;让您轻松实现模型展示的优化。让用户通过简单的操作&#xff0c;就能满足个人/设计师/商户多样化展示的需求&#xff0c;让您的模型成为独一无二的杰作。 3D模型展示网站搭建编辑器采用国内领先的实时互…

java继承使用细节二

构造器 主类是无参构造器时会默认调用 public graduate() {// TODO Auto-generated constructor stub也就是说我这里要用构造器会直接调用父类。它是默认看不到的 &#xff0c;System.out.println("graduate");} 但当主类是有参构造器如 public father_(int s,doubl…

c语言:将小写字母转换为大写字母

//将小写字母转换为大写字母 #include <stdio.h> #include <ctype.h> int main() { char arr[]"you are low"; int i0; while(arr[i]) { if(islower(arr[i])) { arr[i]arr[i]-32; } i; } printf("%s\n",arr); return 0; }

微调Llama3实现在线搜索引擎和RAG检索增强生成功能

视频中所出现的代码 Tavily SearchRAG 微调Llama3实现在线搜索引擎和RAG检索增强生成功能&#xff01;打造自己的perplexity和GPTs&#xff01;用PDF实现本地知识库_哔哩哔哩_bilibili 一.准备工作 1.安装环境 conda create --name unsloth_env python3.10 conda activate …