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

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

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

3天內(nèi)不再提示

基于ESP32+MicroPython實現(xiàn)聯(lián)網(wǎng)并進行UDP通信

CHANBAEK ? 來源:FunIO ? 作者:好好學習哇 ? 2023-06-13 17:05 ? 次閱讀
    1. 官方文檔
    1. 創(chuàng)建一個 STA 的基本流程
    1. 測試 udp 通信

使用 esp32 開發(fā)程序,非常重要的功能就是使用 wifi,下面我們就講一下 esp32 連接 wifi 的方法。

在我們能接觸的 WiFi 網(wǎng)絡(luò)中,Wi-Fi設(shè)備通常處于以下兩種角色中的一種:

  • 提供無線接入的設(shè)備,稱之為 Access Point(AP) 無線接入點,家里常見的路由器就是結(jié)合 WiFi 和網(wǎng)絡(luò)路由功能的 AP,AP 和 AP 可以相互連接。
  • 連接到 AP 的設(shè)備,稱之為 Station(STA) 無線終端,像手機電腦等需要聯(lián)網(wǎng)的設(shè)備都處于 STA 模式,這個模式不允許其他設(shè)備接入。

說明:

一個設(shè)備可能既支持 AP 又支持 STA,但是一般設(shè)備同一時間,WiF 模塊只能啟用其中的一種模式,像手機既能連接外面的 WiFi,又能自己開熱點讓別的設(shè)備連接,但是每當開啟熱點,WiFi 就會自動關(guān)閉,這是因為手機在同一時間只能支持 AP 和 STA 一種。

1. 官方文檔

官方文檔對 esp32 實現(xiàn)wifi 功能的文檔鏈接 ^[1]^ ,如下:

圖片

實現(xiàn) WiFi 連接功能,需要使用到network模塊:

不管是 STA 還是 AP 都是基于 network 的 WLAN,針對 LAN 我們以后再講。

STA 的實現(xiàn)方法

import network

wlan = network.WLAN(network.STA_IF) # create station interface
wlan.active(True)       # activate the interface
wlan.scan()             # scan for access points
wlan.isconnected()      # check if the station is connected to an AP
wlan.connect('ssid', 'key') # connect to an AP
wlan.config('mac')      # get the interface's MAC address
wlan.ifconfig()         # get the interface's IP/netmask/gw/DNS addresses

ssid:就是需要鏈接的 WiFi 的名稱。

key:就是需要鏈接的 WiFi 的密碼。

說明:

現(xiàn)在的路由器都有 2.4g5G 兩個頻段的信號,但是 esp32 只支持 2.4G 的信號。

官網(wǎng)提供了一個創(chuàng)建 STA 的 demo:

def do_connect():
    import network
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    if not wlan.isconnected():
        print('connecting to network...')
        wlan.connect('ssid', 'key')
        while not wlan.isconnected():
            pass
    print('network config:', wlan.ifconfig())

AP 的實現(xiàn)方法

import network

ap = network.WLAN(network.AP_IF) # create access-point interface
ap.config(ssid='ESP-AP') # set the SSID of the access point
ap.config(max_clients=10) # set how many clients can connect to the network
ap.active(True)         # activate the interface

AP 功能用于讓其他設(shè)備連接 esp32,這個功能不常用,我們以后會在補充里面介紹。

2. 創(chuàng)建一個 STA 的基本流程

esp32 不管是 UDP 還是 TCP 通信,都需要兩個模塊的支持。

network:用于連接 WiFi,獲取 wifi 分配的 ip 等。

socket:用于設(shè)備之間的通信,當連接網(wǎng)絡(luò)后,下一步就是建立和其他設(shè)備的通信。

下面我們創(chuàng)建一個 WiFi 類,實現(xiàn) STA 連接:

import network
import time

class Wifi():
    """
    只實現(xiàn)了STA模式的WiFi鏈接封裝
    """


    def __init__(self):
        self.wlan = network.WLAN(network.STA_IF)



    """
    復位WiFi模塊
    """
    def Init_wifi(self):
        if  self.wlan.isconnected():
            self.wlan.active(False)
            print("wifi disconnect,please Reset Configuration ")

    """
    獲取WiFi狀態(tài)
    """
    def status(self):
        return self.wlan.status()


    """
    獲取WiFi配置
    """
    def get_wifi_config(self):
        if self.wlan.isconnected():
            return self.wlan.ifconfig()


    """
    掃描WiFi列表
    """
    def wifi_scan(self):
        if wifi.status() != network.STAT_CONNECTING:
            self.wlan.active(True) # 開啟WiFi
        return self.wlan.scan()


    """
    連接WiFi
    """
    def connet_wifi(self, ssid, password):
        count = 10 # 10秒內(nèi)未連接到網(wǎng)絡(luò),則連接超時
        self.wlan.active(True) # 開啟WiFi
        if not self.wlan.isconnected():
            self.wlan.connect(ssid,password)
            while not self.wlan.isconnected():
                print('connecting to network...')
                time.sleep(1)
                count -= 1
                if count == 0: # 連接超時
                    self.wlan.active(False) # 關(guān)閉WiFi
                    print("Connecting  Timeout,Please check the account password!")
                    break
        if self.wlan.isconnected():
            # 連接成功,則打印被分配的ip等信息
            print("ip:" ,self.wlan.ifconfig()[0])
            print("subnet:" ,self.wlan.ifconfig()[1])
            print("gateway:" ,self.wlan.ifconfig()[2])
            print("dns:" ,self.wlan.ifconfig()[3])
            return True
        else:
            # 未成功連接,則返回False
            return False


if __name__ == "__main__":
    wifi = Wifi() # 創(chuàng)建WiFi對象
    wifi_list = wifi.wifi_scan() # 掃描WiFi列表
    print(wifi_list)

    link_wifi = wifi.connet_wifi('K3', 'zhao0312') # 連接WiFi
    if(link_wifi == True):
        print("connet wifi is ok")

在調(diào)用 wlan.connect()之后,設(shè)備將在默認情況下永遠重試連接,即使身份驗證失敗或范圍內(nèi)沒有 AP,因此我們不需要重復 connect,只需要執(zhí)行一次,自己設(shè)置一個等待超時就可以了。當然若不想這樣也可以通過調(diào) wlan.config(reconnects=n)來更改,其中 n 是所需的重新連接嘗試次數(shù)(0 表示不會重試,-1 將恢復嘗試永遠重新連接的默認行為)。

wlan.isconnected()可以判斷當前是否連接成功,當然也可以使用 wlan.status()將返回網(wǎng)絡(luò)狀態(tài),調(diào)用 wlan.connect()之后,網(wǎng)絡(luò)將處于 network.STAT_CONNECTING 表示正在連接狀態(tài),直到連接成功或接口被禁用狀態(tài)才會改變。

一旦網(wǎng)絡(luò)建立,我們可以通過 socket 模塊像往常寫 python 程序一樣創(chuàng)建和使用 TCP/UDP 套接字,使用 urequests 模塊可以方便的實現(xiàn) HTTP 請求。

3. 測試 udp 通信

提示:

使用 micropython 開發(fā) esp32,要求開發(fā)者要有 python 基礎(chǔ)。

首先將電腦安裝一個網(wǎng)絡(luò)調(diào)試助手軟件,這里推薦使用 NetAssist.exe。下載地址:下載鏈接 ^[2]^ ;

然后找一個能保證 PC 和 ESP32 都能正常連接的路由器,把電腦連接上路由器,然后在電腦的 cmd 控制臺輸入 ipconfig,看一下路由器分配的 ip 地址,如下:

圖片

這個 ip 地址將會在后面使用到。打開電腦上下載一個網(wǎng)絡(luò)助手等待備用。

將上面連接 wifi 的程序封裝成 wifi.py,然后創(chuàng)建一個 test_socket.py 文件,這時 esp 內(nèi)目錄如下:

圖片

然后將下面內(nèi)容添加到 test_socket.py 文件中,內(nèi)容如下:

from wifi import Wifi

from socket import *
import time

# 我電腦的ip
server_addr = "192.168.2.103"
# 隨便選一個端口,建議端口范圍2000~65535
server_port = 5000



def creation_udp_client():
    # 1. 創(chuàng)建udp套接字
    udp_socket = socket(AF_INET, SOCK_DGRAM)
    # 2. 準備服務(wù)器收方的地址
    dest_addr = (server_addr, server_port)

    # 3. 從鍵盤獲取數(shù)據(jù)
    send_data = "hello world"
    # 4. 發(fā)送數(shù)據(jù)到指定的電腦上
    udp_socket.sendto(send_data.encode('utf-8'), dest_addr)
    # 5. 關(guān)閉套接字
    udp_socket.close()


if __name__ == "__main__":
    wifi = Wifi() # 創(chuàng)建WiFi對象
    link_wifi = wifi.connet_wifi('K3', 'zhao0312') # 連接WiFi
    if(link_wifi == True):
        print("connet wifi is ok")
        while True:
            creation_udp_client()
            time.sleep(5)

點擊 ide 上面的運行按鈕,如下:

圖片

然后打開網(wǎng)絡(luò)助手:

選擇 ip 和端口號與 test_socket.py 文件設(shè)置的一致,就會收到由 esp32 發(fā)過來的消息,如下:

圖片

到此實驗完成,若需要讓程序開機運行,則只需要將 test_socket.py 內(nèi)容 copy 到 boot.py 文件中即可。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 通信
    +關(guān)注

    關(guān)注

    18

    文章

    6069

    瀏覽量

    136288
  • WIFI
    +關(guān)注

    關(guān)注

    81

    文章

    5308

    瀏覽量

    204447
  • UDP
    UDP
    +關(guān)注

    關(guān)注

    0

    文章

    327

    瀏覽量

    34012
  • ESP32
    +關(guān)注

    關(guān)注

    18

    文章

    977

    瀏覽量

    17468
  • Micropython
    +關(guān)注

    關(guān)注

    0

    文章

    68

    瀏覽量

    4762
收藏 人收藏

    評論

    相關(guān)推薦

    使用ESP32實現(xiàn)藍牙通信

    上次給大家分享了如何使用ESP32實現(xiàn)UDP通信,今天跟大家聊聊如何使用ESP32實現(xiàn)藍牙
    發(fā)表于 11-21 09:31 ?1.6w次閱讀

    【FireBeetle 2 ESP32-S3開發(fā)板測評】MicroPython開發(fā)體驗

    【FireBeetle 2 ESP32-S3開發(fā)板測評】MicroPython開發(fā)體驗
    的頭像 發(fā)表于 07-23 09:02 ?1891次閱讀
    【FireBeetle 2 <b class='flag-5'>ESP32</b>-S3開發(fā)板測評】<b class='flag-5'>MicroPython</b>開發(fā)體驗

    ESP32+micropython開源項目挑戰(zhàn)之--像素燈

    ESP32
    YS YYDS
    發(fā)布于 :2023年07月02日 17:48:46

    如何在ESP32上使用MicroPython

    ESP32的原有程序,擦除成功后下載MicroPython固件,并使用簡單的“Hello World(你好,世界)”程序進行測試。安裝esptool打開命令行,輸入`pip install esptool此操作將在系統(tǒng)上安裝es
    發(fā)表于 01-11 07:58

    為什么使用MicroPython開發(fā)ESP32

    為什么使用MicroPython開發(fā)ESP32
    發(fā)表于 02-22 08:08

    ESP32有官方實現(xiàn)CAN的通信micropython包嗎?

    CAN通信在汽車領(lǐng)域大量使用,尤其是日益增長的車聯(lián)網(wǎng)需求,ESP32實現(xiàn)CAN通信micropyt
    發(fā)表于 03-03 08:22

    求助,ESP32有官方實現(xiàn)CAN的通信micropython包么?

    CAN通信在汽車領(lǐng)域大量使用,尤其是日益增長的車聯(lián)網(wǎng)需求,ESP32實現(xiàn)CAN通信micropyt
    發(fā)表于 03-07 06:05

    視頻教程-micropython基礎(chǔ)入門(esp32/esp8266單片機開發(fā))-物聯(lián)網(wǎng)技術(shù)

    micropython基礎(chǔ)入門(esp32/esp8266單片機開發(fā)) 10...
    發(fā)表于 11-13 15:36 ?55次下載
    視頻教程-<b class='flag-5'>micropython</b>基礎(chǔ)入門(<b class='flag-5'>esp32</b>/<b class='flag-5'>esp</b>8266單片機開發(fā))-物<b class='flag-5'>聯(lián)網(wǎng)</b>技術(shù)

    ESP32刷入MicroPython以及連接WiFi

    一、ESP32刷入MicroPython1.ESP32驅(qū)動2.下載MicroPython3.刷入micropython4.進入ESP32二、
    發(fā)表于 12-04 19:51 ?28次下載
    <b class='flag-5'>ESP32</b>刷入<b class='flag-5'>MicroPython</b>以及連接WiFi

    使用MicroPython開發(fā)ESP32(01):快速入門

    文章目錄為什么使用MicroPython開發(fā)ESP32快速入門開發(fā)板準備開發(fā)工具選擇固件下載與燒錄我的總結(jié)為什么使用MicroPython開發(fā)ESP32ESP32是非常熱門的一款物
    發(fā)表于 12-29 18:49 ?22次下載
    使用<b class='flag-5'>MicroPython</b>開發(fā)<b class='flag-5'>ESP32</b>(01):快速入門

    如何在ESP32/ESP8266上使用MicroPython

    在本教程中,我們將了解 MicroPython,它與 Python 有何不同,以及如何在 ESP32/ESP8266 上開始使用 MicroPython。此外,我們將看到一個 LED
    發(fā)表于 08-19 15:09 ?1.4w次閱讀
    如何在<b class='flag-5'>ESP32</b>/<b class='flag-5'>ESP</b>8266上使用<b class='flag-5'>MicroPython</b>

    使用ESP32實現(xiàn)UDP通信的方法

    前面給大家分享了ESP32使用miropython編程環(huán)境搭建,今天給大家分享如何使用ESP32實現(xiàn)UDP通信
    的頭像 發(fā)表于 11-14 10:21 ?6536次閱讀

    ESP32+MicroPython開發(fā)環(huán)境的搭建

    ESP32 一般有兩種開發(fā)方式,c 語言開發(fā)和 python 開發(fā)。
    的頭像 發(fā)表于 06-13 17:00 ?9142次閱讀
    <b class='flag-5'>ESP32+MicroPython</b>開發(fā)環(huán)境的搭建

    ESP32ESP32通過Internet進行通信

    電子發(fā)燒友網(wǎng)站提供《ESP32ESP32通過Internet進行通信.zip》資料免費下載
    發(fā)表于 06-15 09:58 ?4次下載
    <b class='flag-5'>ESP32</b>到<b class='flag-5'>ESP32</b>通過Internet<b class='flag-5'>進行</b><b class='flag-5'>通信</b>

    構(gòu)建ESP32 MicroPython Wifi的機器人汽車

    電子發(fā)燒友網(wǎng)站提供《構(gòu)建ESP32 MicroPython Wifi的機器人汽車.zip》資料免費下載
    發(fā)表于 07-12 09:12 ?7次下載
    構(gòu)建<b class='flag-5'>ESP32</b> <b class='flag-5'>MicroPython</b> Wifi的機器人汽車
    主站蜘蛛池模板: 717影院理论午夜伦不卡久久 | 国内精品自产拍在线少密芽 | bbw美女与zooxx | 亚洲免费久久 | 奶头被客人吸得又红又肿 | 日本阿v片在线播放免费 | 亚洲日本一区二区三区在线不卡 | 免费人成网站在线观看10分钟 | 国产精品久久久久成人免费 | 国产精品无码视频一区二区 | 99久久精品国产一区二区三区 | a视频在线免费观看 | 无套内射无矿码免费看黄 | 不卡的在线AV网站 | 久久久免费观成人影院 | 亚洲 欧美 国产 综合久久 | 亚洲色欲色欲无码AV | 视频一区在线免费观看 | 一本道色综合手机久久 | 亚洲免费每日在线观看 | 69精品人妻一区二区三区蜜桃 | 免费夜里18款禁用软粉色 | 99久久亚洲精品日本无码 | 亚洲AV无码一区二区三区乱子伦 | 99热久久精品国产一区二区 | 欧美精品AV精品一区视频 | 国产精品一区二区三区免费 | 日本大尺码喷液过程视频 | 青青草原伊人 | 国产 日韩 欧美 综合 激情 | 2019精品国产品在线不卡 | 亚洲嫩草影院久久精品 | 国产专区青青草原亚洲 | 亚洲精品乱码久久久久久中文字幕 | 国产一区二区免费在线观看 | 亚洲 综合 欧美在线视频 | 一道本无吗d d在线播放 | 91区国产福利在线观看午夜 | 国产亚洲精品a在线观看app | 久久夜色撩人精品国产 | 午夜天堂一区人妻 |