色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何在Micropython下使用ESPNow功能進行數據傳輸呢?

冬至子 ? 來源:醉里挑燈舞劍 ? 作者:Franze ? 2023-11-08 11:27 ? 次閱讀

ESPNow是一種輕量級的無線通信協議,適用于ESP32芯片,它可以實現低功耗、高效率的設備間通訊,不需要路由器,也不需要wifi,同時,在使用ESPNow的時候不影響wifi 和藍牙

在文章中,我們將學習如何在Micropython環境下使用ESP32的ESPNow功能進行數據傳輸。ESPNOW支持一對一,一對多,多對多的各種通訊方式,在這里不做更多的說明。

準備工作

在開始之前,確保你已經做好了以下準備工作:

1.安裝Micropython固件到ESP32模塊上(1.20.0 以后的版本)。
2.確保你有兩個或更多的ESP32模塊,它們將用于數據通訊(我用的兩塊ESP32-S3進行的測試,實際ESP8266也是支持的,但是某些函數略有差異)。

獲取ESP32的MAC地址

ESPNOW發送數據需要知道目標ESP32的MAC地址。有兩種簡單的方法獲取MAC地址,一種是在燒錄完成后可以看到,另一個是通過程序來獲得

圖片

在上圖中燒錄完成后可以看到AP和STA狀態下的MAC地址

下面是通過代碼獲取MAC地址的方法:

圖片

獲取到MAC地址后,一切都簡單了,當然,還有一種不獲取MAC地址的方法就是廣播0xFF*6的方式,廢話不多說,直接上代碼

發送端

import network
import espnow
import time

sta = network.WLAN(network.STA_IF)    # Enable station mode for ESP
sta.active(True)
sta.disconnect()        # Disconnect from last connected WiFi SSID

e = espnow.ESPNow()     # Enable ESP-NOW
e.active(True)

peer1 = b'x34x85x18x90x86x38'   # MAC address of peer1's wifi interface
e.add_peer(peer1)                     # add peer1 (receiver1)
#如果有多個接收都就在這下面接著增加peer2...

print("Starting...")            # Send to all peers

def main():
    while True:
        e.send(peer1, "這是Slave發送過來的數據", True)     # send commands to pear 1
        time.sleep(2)

if __name__ == "__main__":
    main()

代碼很簡單,直接官方代碼小改,注意使用時改MAC地址即可。

#### 接收端的代碼
import network
import espnow
# A WLAN interface must be active to send()/recv()
sta = network.WLAN(network.STA_IF)
sta.active(True)
sta.disconnect()                # Disconnect from last connected WiFi SSID

e = espnow.ESPNow()                  # Enable ESP-NOW
e.active(True)

peer = b'x34x85x18x46x3dx28'   # MAC address of peer's wifi interface
#這個MAC地址是發送端的
e.add_peer(peer)                     # Sender's MAC registration

def espnow_rx():
    while True:
        host, msg = e.recv()
        if msg:                          # wait for message
            print(msg)
if __name__ == "__main__":
    espnow_rx()

代碼簡單,不多贅述,注冊完設備后就收發信息即可。

通過以上步驟,你就可以在Micropython環境下使用ESPNow進行簡單而高效的數據通訊了。記得根據你的實際需求調整代碼和配置信息。

幾個說明

在Micropython控制硬件主要就分幾步走,首先導入相關的庫,然后構建對象,接下來定義相關的函數,最后調用定義好的函數。

1.在這里,導入espnow之后,先實例化一個對象并激活。

2.在使用espnow收發數據之前必須先啟用Network.STA_IF或者Network.AP_IF,如果不需要wifi轉發那就不需要連接或者配置

3.ESPNow.send(mac,msg)注意消息發送消息長度不大于250bytes,如是長度大于250bytes時切包再合包。

4.ESPNow.recv([timeout_ms])接收數據

5.ESPNow.any()檢查數據是否可用

6.其它函數簡說:

ESPNow.set_pmk(pmk) 設置用于加密本地主密鑰的主密鑰 (PMK) 用于加密消息的密鑰 (LMK)。如果未設置,則默認 PMK 為 由底層樂鑫 ESP-NOW 軟件堆棧使用

ESPNow.add_peer(mac[, lmk][, channel][, ifidx][, encrypt])

ESPNow.add_peer(mac, param=value, …)

添加/注冊提供的 mac 地址作為對等方。其他參數可以 也被指定為位置或關鍵字參數(任何設置為 的參數都將設置為其默認值)

ESPNow.del_peer(mac) 取消注冊與提供的 mac 地址關聯的對等方

ESPNow.get_peer(mac) (ESP32 only) 已注冊的對等體上轉換信息

ESPNow.get_peers() (ESP32 only) 返回所有已注冊對等方的“對等信息”參數(作為元組 元組)。

ESPNow.peer_count() (ESP32 only) 查看已注冊對等方的數量

ESPNow.mod_peer(mac, lmk, [channel], [ifidx], [encrypt]) (ESP32 only) ESPNow.mod_peer(mac, ‘param’=value, …) (ESP32 only)

修改與提供的 mac 地址關聯的對等方的參數。參數可以作為位置或關鍵字參數提供 (請參閱)。任何未設置(或設置為 )的參數都將保留該參數的現有值。

ESPNow.irq(callback) (ESP32 only)

設置回調函數,在消息有消息后盡快調用 從另一個 ESPNow 設備接收。將調用回調函數 以實例對象作為參數。

為了更可靠的運行, 建議在以下情況下讀出盡可能多的可用消息 調用回調并將讀取超時設置為零,例如:

def recv_cb(e):
    while True:  # Read out all messages waiting in the buffer
        mac, msg = e.irecv(0)  # Don't wait if no messages left
        if mac is None:
            return
        print(mac, msg)
e.irq(recv_cb)

廣播消息的方法:
bcast = b'xff' * 6
e.add_peer(bcast)
e.send(bcast, "Hello World!")
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 無線通信
    +關注

    關注

    58

    文章

    4564

    瀏覽量

    143496
  • 路由器
    +關注

    關注

    22

    文章

    3728

    瀏覽量

    113701
  • 回調函數
    +關注

    關注

    0

    文章

    87

    瀏覽量

    11554
  • ESP32
    +關注

    關注

    18

    文章

    971

    瀏覽量

    17201
  • Micropython
    +關注

    關注

    0

    文章

    68

    瀏覽量

    4731
收藏 人收藏

    評論

    相關推薦

    ADS1299與STM32f407通過SPI進行數據傳輸的時候,可以直接使用HAL庫中的HAL_SPI_Receive函數進行數據傳輸嗎?

    在與STM32f407通過SPI進行數據傳輸的時候,可以在使能SPI之后,直接使用HAL庫中的HAL_SPI_Receive函數進行數據傳輸嗎?還是需要判斷DRDY,在DRDY置低之后再使用HAL_SPI_Receive函數?
    發表于 11-13 08:29

    怎么用LABVIEW和FPGA控制W5300進行數據傳輸

    用FPGA 控制W5300(采用的是TCP/IP協議)進行數據傳輸,上位機軟件用LABVIEW做!怎么才能進行數據傳輸。W5300怎么與LABVIEW進行數據傳輸!!各位大仙能不能給指明方向!謝謝
    發表于 12-30 19:29

    請問問手機與電腦之間在沒有網絡的情況如何進行數據傳輸

    請問問手機與電腦之間在沒有網絡的情況如何進行數據傳輸
    發表于 05-31 21:15

    TCP通信,完成了使用WiFi模塊,進行數據傳輸功能:包括接收數據,發送數據,發送文件。

    完成了使用WiFi模塊,進行數據傳輸功能:包括接收數據,發送數據,發送文件。
    發表于 01-21 20:16

    關于EDMA PingPong傳輸和并行傳輸,請問對于PingPong模式的數據傳輸,是否只是用一個channel進行數據傳輸

    的channel可看做是一個傳輸事件,用于觸發一個EDMA通道進行數據傳輸。記得Andy在一個帖子中曾說過,“IPR寄存器是用來記錄產生中斷的EDMA channel源,從低到高每一個bit依次對應相應
    發表于 06-20 06:05

    用E90-DTU進行數據傳輸,怎么將數據傳到后臺轉化

    用E90-DTU進行數據傳輸,怎么將數據傳到后臺轉化
    發表于 04-02 16:28

    怎樣利用ESP8266和Stm32F4單片機進行數據傳輸

    怎樣利用ESP8266和Stm32F4單片機進行數據傳輸?有哪些操作?
    發表于 10-21 08:55

    如何通過單一數據進行數據傳輸

    如何通過單一數據進行數據傳輸
    發表于 12-02 07:14

    VEML6040顏色傳感器是如何利用I2C總線進行數據傳輸

    VEML6040是什么?VEML6040顏色傳感器的外圍電路是怎樣的?VEML6040顏色傳感器是如何利用I2C總線進行數據傳輸
    發表于 02-14 06:35

    DMA進行數據傳輸和CPU進行數據傳輸的疑問

    原先的總線矩陣+仲裁器結構中的數據總線進行數據傳輸的? 接上一個問題,如果是的話,那么當進行DMA數據傳輸時,必定是需要占用數據總線的,那么
    發表于 05-25 17:18

    HT56R678使用I2C進行數據傳輸的方法

    HT56R678使用I2C進行數據傳輸的方法 HT56R678 內建有SIM 功能,其中包括了SPI 和I2C 兩種通信接口,本文以HT56R678 為母體,介紹使用I2C 進行數據傳輸的方法和注意
    發表于 03-27 09:25 ?16次下載

    HT56R678使用I2C進行數據傳輸的方法

    HT56R678使用I2C進行數據傳輸的方法HT56R678 內建有SIM 功能,其中包括了SPI 和I2C 兩種通信接口,本文以HT56R678 為母體,介紹使用I2C 進行數據傳輸的方法和注意事項。
    發表于 03-28 22:39 ?7次下載

    無線數據傳輸模塊的功能特點

    無線數據傳輸模塊主要采用RS485通訊方式,將有線采集端的數據傳送到模塊中,再以無線方式進行數據傳輸,實現有線設備和無線設備之間的數據傳輸
    發表于 07-20 10:21 ?1645次閱讀

    如何實現Typec手機在充電的同時又能進行OTG數據傳輸方案

    ? Type-C接口的轉接器幫你忙,輕松的實現在快充的過程中,又能實現數據傳輸(OTG)的功能 幫你實現Type-c手機充電的同時又能進行數據傳輸(OTG)功能 深圳市禾川興科技 ?O
    發表于 12-22 14:03 ?7352次閱讀
    如何實現Typec手機在充電的同時又<b class='flag-5'>能進行</b>OTG<b class='flag-5'>數據傳輸</b>方案

    STM32CubeMX-串口開啟DMA進行數據傳輸

    STM32CubeMX筆記-串口開啟DMA進行數據傳輸
    發表于 12-27 18:40 ?7次下載
    STM32CubeMX-串口開啟DMA<b class='flag-5'>進行數據傳輸</b>
    主站蜘蛛池模板: 饥渴的护士自慰被发现| 久久精品男人影院| 99国产这里只有精品视频| 欧美日韩亚洲中字二区| 国产成人v视频在线观看| 一本道高清到手机在线| 色偷偷成人网免费视频男人的天堂| 精品视频一区二区三三区四区| 叮当成人社区| 边做边爱免费视频| 99久视频只有精品2019| 中文字AV字幕在线观看| 尤蜜网站在线进入免费| 亚洲精品无码专区在线播放| 日韩一区二区三区射精| 日操夜操天天操| 色大姐综合网| 日韩欧美群交P内射捆绑| 秋霞午夜鲁丝片午夜精品久| 美女搜查官被高难度黑人在线播放| 久久91精品国产91久| 久久九九有精品国产23百花影院| 好湿好紧水多AAAAA片秀人网| 国产婷婷色一区二区三区在线| 国产精品亚洲电影久久成人影院 | 久草热在线| 久久久无码精品一区二区三区 | 亚洲国产欧美在线人成aaaa20| 亚洲国产高清福利视频| 亚洲综合无码一区二区| 亚洲午夜精品A片久久WWW软件| 亚洲欧美国产旡码专区| 亚洲AV福利天堂一区二区三| 亚洲AV无码影院在线播放| 暖暖视频中国在线观看免费韩国| 另类专区hy777| 欧美日韩北条麻妃一区二区| 奇米狠狠一区二区三区| 日本韩国欧美一区| 少妇第一次交换| 午夜想想爱|