国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

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

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

        CHANBAEK ? 來源:FunIO ? 作者:好好學(xué)習(xí)哇 ? 2023-06-13 17:05 ? 次閱讀
        加入交流群
        微信小助手二維碼

        掃碼添加小助手

        加入工程師交流群

          1. 官方文檔
          1. 創(chuàng)建一個(gè) STA 的基本流程
          1. 測(cè)試 udp 通信

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

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

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

        說明:

        一個(gè)設(shè)備可能既支持 AP 又支持 STA,但是一般設(shè)備同一時(shí)間,WiF 模塊只能啟用其中的一種模式,像手機(jī)既能連接外面的 WiFi,又能自己開熱點(diǎn)讓別的設(shè)備連接,但是每當(dāng)開啟熱點(diǎn),WiFi 就會(huì)自動(dòng)關(guān)閉,這是因?yàn)槭謾C(jī)在同一時(shí)間只能支持 AP 和 STA 一種。

        1. 官方文檔

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

        圖片

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

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

        STA 的實(shí)現(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 兩個(gè)頻段的信號(hào),但是 esp32 只支持 2.4G 的信號(hào)。

        官網(wǎng)提供了一個(gè)創(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 的實(shí)現(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,這個(gè)功能不常用,我們以后會(huì)在補(bǔ)充里面介紹。

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

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

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

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

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

        import network
        import time
        
        class Wifi():
            """
            只實(shí)現(xiàn)了STA模式的WiFi鏈接封裝
            """
        
        
            def __init__(self):
                self.wlan = network.WLAN(network.STA_IF)
        
        
        
            """
            復(fù)位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ò),則連接超時(shí)
                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: # 連接超時(shí)
                            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對(duì)象
            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è)備將在默認(rèn)情況下永遠(yuǎn)重試連接,即使身份驗(yàn)證失敗或范圍內(nèi)沒有 AP,因此我們不需要重復(fù) connect,只需要執(zhí)行一次,自己設(shè)置一個(gè)等待超時(shí)就可以了。當(dāng)然若不想這樣也可以通過調(diào) wlan.config(reconnects=n)來更改,其中 n 是所需的重新連接嘗試次數(shù)(0 表示不會(huì)重試,-1 將恢復(fù)嘗試永遠(yuǎn)重新連接的默認(rèn)行為)。

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

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

        3. 測(cè)試 udp 通信

        提示:

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

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

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

        圖片

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

        將上面連接 wifi 的程序封裝成 wifi.py,然后創(chuàng)建一個(gè) test_socket.py 文件,這時(shí) 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"
        # 隨便選一個(gè)端口,建議端口范圍2000~65535
        server_port = 5000
        
        
        
        def creation_udp_client():
            # 1. 創(chuàng)建udp套接字
            udp_socket = socket(AF_INET, SOCK_DGRAM)
            # 2. 準(zhǔn)備服務(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對(duì)象
            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)
        

        點(diǎn)擊 ide 上面的運(yùn)行按鈕,如下:

        圖片

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

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

        圖片

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

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

          關(guān)注

          18

          文章

          6391

          瀏覽量

          140036
        • WIFI
          +關(guān)注

          關(guān)注

          82

          文章

          5509

          瀏覽量

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

          關(guān)注

          0

          文章

          334

          瀏覽量

          35411
        • ESP32
          +關(guān)注

          關(guān)注

          26

          文章

          1194

          瀏覽量

          21667
        • Micropython
          +關(guān)注

          關(guān)注

          1

          文章

          69

          瀏覽量

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

        掃碼添加小助手

        加入工程師交流群

          評(píng)論

          相關(guān)推薦
          熱點(diǎn)推薦

          使用ESP32實(shí)現(xiàn)藍(lán)牙通信

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

          【FireBeetle 2 ESP32-S3開發(fā)板測(cè)評(píng)】MicroPython開發(fā)體驗(yàn)

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

          如何在ESP32上使用MicroPython

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

          如何利用ESP32和Ubuntu搭建UDP通信系統(tǒng)?

          如何利用ESP32和Ubuntu搭建UDP通信系統(tǒng)?
          發(fā)表于 01-20 06:09

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

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

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

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

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

          micropython基礎(chǔ)入門(esp32/esp8266單片機(jī)開發(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單片機(jī)開發(fā))-物<b class='flag-5'>聯(lián)網(wǎng)</b>技術(shù)

          ESP32刷入MicroPython以及連接WiFi

          一、ESP32刷入MicroPython1.ESP32驅(qū)動(dòng)2.下載MicroPython3.刷入micropython4.進(jìn)入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ā)板準(zhǔn)備開發(fā)工具選擇固件下載與燒錄我的總結(jié)為什么使用MicroPython開發(fā)ESP32ESP32是非常熱門的一款物
          發(fā)表于 12-29 18:49 ?25次下載
          使用<b class='flag-5'>MicroPython</b>開發(fā)<b class='flag-5'>ESP32</b>(01):快速入門

          如何在ESP32/ESP8266上使用MicroPython

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

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

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

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

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

          ESP32ESP32通過Internet進(jìn)行通信

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

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

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