女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

基于ESP32+MicroPython實現聯網并進行UDP通信

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

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

在我們能接觸的 WiFi 網絡中,Wi-Fi設備通常處于以下兩種角色中的一種:

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

說明:

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

1. 官方文檔

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

圖片

實現 WiFi 連接功能,需要使用到network模塊:

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

STA 的實現方法

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 的密碼。

說明:

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

官網提供了一個創建 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 的實現方法

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 功能用于讓其他設備連接 esp32,這個功能不常用,我們以后會在補充里面介紹。

2. 創建一個 STA 的基本流程

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

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

socket:用于設備之間的通信,當連接網絡后,下一步就是建立和其他設備的通信。

下面我們創建一個 WiFi 類,實現 STA 連接:

import network
import time

class Wifi():
    """
    只實現了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狀態
    """
    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秒內未連接到網絡,則連接超時
        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) # 關閉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() # 創建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")

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

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

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

3. 測試 udp 通信

提示:

使用 micropython 開發 esp32,要求開發者要有 python 基礎。

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

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

圖片

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

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

圖片

然后將下面內容添加到 test_socket.py 文件中,內容如下:

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. 創建udp套接字
    udp_socket = socket(AF_INET, SOCK_DGRAM)
    # 2. 準備服務器收方的地址
    dest_addr = (server_addr, server_port)

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


if __name__ == "__main__":
    wifi = Wifi() # 創建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 上面的運行按鈕,如下:

圖片

然后打開網絡助手:

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

圖片

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

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

    關注

    18

    文章

    6169

    瀏覽量

    137349
  • WIFI
    +關注

    關注

    81

    文章

    5370

    瀏覽量

    207390
  • UDP
    UDP
    +關注

    關注

    0

    文章

    330

    瀏覽量

    34469
  • ESP32
    +關注

    關注

    20

    文章

    1006

    瀏覽量

    18803
  • Micropython
    +關注

    關注

    0

    文章

    68

    瀏覽量

    5130
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    使用ESP32實現藍牙通信

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

    【FireBeetle 2 ESP32-S3開發板測評】MicroPython開發體驗

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

    ESP32+micropython開源項目挑戰之--像素燈

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

    如何在ESP32上使用MicroPython

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

    為什么使用MicroPython開發ESP32

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

    ESP32有官方實現CAN的通信micropython包嗎?

    CAN通信在汽車領域大量使用,尤其是日益增長的車聯網需求,ESP32實現CAN通信micropyt
    發表于 03-03 08:22

    求助,ESP32有官方實現CAN的通信micropython包么?

    CAN通信在汽車領域大量使用,尤其是日益增長的車聯網需求,ESP32實現CAN通信micropyt
    發表于 03-07 06:05

    視頻教程-micropython基礎入門(esp32/esp8266單片機開發)-物聯網技術

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

    ESP32刷入MicroPython以及連接WiFi

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

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

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

    如何在ESP32/ESP8266上使用MicroPython

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

    使用ESP32實現UDP通信的方法

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

    ESP32+MicroPython開發環境的搭建

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

    ESP32ESP32通過Internet進行通信

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

    構建ESP32 MicroPython Wifi的機器人汽車

    電子發燒友網站提供《構建ESP32 MicroPython Wifi的機器人汽車.zip》資料免費下載
    發表于 07-12 09:12 ?8次下載
    構建<b class='flag-5'>ESP32</b> <b class='flag-5'>MicroPython</b> Wifi的機器人汽車