chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuà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)絡中,Wi-Fi設備通常處于以下兩種角色中的一種:

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

說明:

一個設備可能既支持 AP 又支持 STA,但是一般設備同一時間,WiF 模塊只能啟用其中的一種模式,像手機既能連接外面的 WiFi,又能自己開熱點讓別的設備連接,但是每當開啟熱點,WiFi 就會自動關閉,這是因為手機在同一時間只能支持 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 功能用于讓其他設備連接 esp32,這個功能不常用,我們以后會在補充里面介紹。

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

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

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

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

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

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

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

3. 測試 udp 通信

提示:

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

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

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

圖片

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

將上面連接 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. 準備服務器收方的地址
    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. 關閉套接字
    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)絡助手:

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

圖片

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

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

    關注

    18

    文章

    6206

    瀏覽量

    137824
  • WIFI
    +關注

    關注

    81

    文章

    5406

    瀏覽量

    208342
  • UDP
    UDP
    +關注

    關注

    0

    文章

    330

    瀏覽量

    34661
  • ESP32
    +關注

    關注

    21

    文章

    1017

    瀏覽量

    19265
  • Micropython
    +關注

    關注

    0

    文章

    68

    瀏覽量

    5306
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    使用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 ?2548次閱讀
    【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

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

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

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

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

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

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

    ESP32 SDIO 使用教程

    ESP32 SDIO 使用教程本文旨在說明如何使用標準的 ESP32-WROOM-32D 開發(fā)板進行 SDIO 的通信。本文檔適用于所有需要與 ES
    發(fā)表于 11-23 17:51 ?241次下載
    <b class='flag-5'>ESP32</b> SDIO 使用教程

    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ā)工具選擇固件下載與燒錄我的總結為什么使用MicroPython開發(fā)ESP32ESP32是非常熱門的一款物
    發(fā)表于 12-29 18:49 ?24次下載
    使用<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.5w次閱讀
    如何在<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 ?7580次閱讀

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

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

    ESP32ESP32通過Internet進行通信

    電子發(fā)燒友網(wǎng)站提供《ESP32ESP32通過Internet進行通信.zip》資料免費下載
    發(fā)表于 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的機器人汽車

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