使用兩塊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.pswp.cn/bicheng/15362.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/15362.shtml
英文地址,請注明出處:http://en.pswp.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 …