国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

八、W5100S/W5500+RP2040之MicroPython開發(fā)<HTTP Server示例>

這篇具有很好參考價(jià)值的文章主要介紹了八、W5100S/W5500+RP2040之MicroPython開發(fā)<HTTP Server示例>。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1 前言

??隨著云計(jì)算的推廣和普及,越來越多的網(wǎng)絡(luò)設(shè)備和服務(wù)需要連接到網(wǎng)絡(luò),這意味著需要更多的IP地址和其他網(wǎng)絡(luò)配置信息。DHCP服務(wù)器可以動態(tài)地分配IP地址和其他配置信息,簡化了網(wǎng)絡(luò)配置管理,提高了網(wǎng)絡(luò)設(shè)備的可用性和效率。

??W5100S/W5500是一款集成全硬件 TCP/IP 協(xié)議棧的嵌入式以太網(wǎng)控制器,同時(shí)也是一顆工業(yè)級以太網(wǎng)控制芯片。本教程將介紹W5100S/W5500以太網(wǎng)HTTP Server應(yīng)用的基本原理、使用步驟、應(yīng)用實(shí)例以及注意事項(xiàng),幫助讀者更好地掌握這一技術(shù)。

2. 相關(guān)網(wǎng)絡(luò)信息

2.1 簡介

w5500用的是utf8,W5100S/W5500+RP2040之Python開發(fā),RP2040,W5100S/W5500,MicroPython

??HTTP,全稱為超文本傳輸協(xié)議(Hypertext Transfer Protocol),是一種應(yīng)用最為廣泛的網(wǎng)絡(luò)傳輸協(xié)議,是用于從萬維網(wǎng)服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議,所有的WWW文件都必須遵守這個(gè)標(biāo)準(zhǔn)。它是一個(gè)基于TCP/IP通信協(xié)議來傳遞數(shù)據(jù)(HTML文件,圖片文件,查詢結(jié)果等)。

2.2 HTTP Server工作步驟

w5500用的是utf8,W5100S/W5500+RP2040之Python開發(fā),RP2040,W5100S/W5500,MicroPython

HTTP Server的原理步驟可以歸納為以下幾點(diǎn):

  1. 建立連接:Web瀏覽器與Web服務(wù)器建立連接,打開一個(gè)稱為socket(套接字)的虛擬文件,此文件的建立標(biāo)志著連接建立成功。
  2. 請求:Web瀏覽器通過socket向Web服務(wù)器提交請求。HTTP的請求一般是GET或POST命令(POST用于FORM參數(shù)的傳遞)。
  3. 服務(wù)器處理請求:一旦收到請求,服務(wù)器會根據(jù)請求類型和URL找到相應(yīng)的資源,并讀取文件內(nèi)容。如果是POST請求,服務(wù)器還會解析表單數(shù)據(jù)。
  4. 響應(yīng):服務(wù)器將處理后的數(shù)據(jù)通過HTTP協(xié)議返回給客戶端,包括HTTP頭信息和HTML文件內(nèi)容。
  5. 關(guān)閉連接:客戶端和服務(wù)器之間的連接在完成數(shù)據(jù)交換后會被關(guān)閉。

2.3 HTTP Server的優(yōu)點(diǎn)

??HTTP Server的優(yōu)點(diǎn)包括:

  1. 簡單靈活:HTTP協(xié)議簡單,易于理解和實(shí)現(xiàn),因此開發(fā)人員可以更快地構(gòu)建和部署應(yīng)用程序。
  2. 易于擴(kuò)展:HTTP協(xié)議支持多種擴(kuò)展,可以輕松地添加新功能和特性,以滿足不斷變化的需求。
  3. 無狀態(tài):HTTP協(xié)議無狀態(tài),這意味著服務(wù)器不會為每個(gè)請求保持狀態(tài)。雖然這可能會導(dǎo)致一些問題,但無狀態(tài)也使得HTTP協(xié)議更加靈活和可擴(kuò)展。
  4. 支持跨平臺:HTTP協(xié)議是一種通用的網(wǎng)絡(luò)協(xié)議,可以在各種操作系統(tǒng)和設(shè)備上實(shí)現(xiàn)和使用。
  5. 支持多種編程語言:HTTP協(xié)議不限制使用的編程語言,因此可以使用各種編程語言來開發(fā)和部署應(yīng)用程序。
  6. 良好的可維護(hù)性:HTTP協(xié)議規(guī)范明確,易于理解和維護(hù),同時(shí)存在許多成熟的工具和庫,使得開發(fā)人員可以更快地構(gòu)建和部署應(yīng)用程序。
  7. 支持多媒體內(nèi)容:HTTP協(xié)議可以傳輸多種類型的數(shù)據(jù),包括文本、圖片、音頻和視頻等多媒體內(nèi)容,使得開發(fā)人員可以輕松地構(gòu)建多媒體應(yīng)用程序。
  8. 支持緩存和壓縮:HTTP協(xié)議支持緩存和壓縮技術(shù),可以減少網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量,提高應(yīng)用程序的性能和響應(yīng)速度。

2.4 HTTP Server應(yīng)用場景

??HTTP Server的應(yīng)用場景非常廣泛,以下是一些主要的場景:

  1. 文件共享:HTTP Server最廣泛的用途就是允許在互聯(lián)網(wǎng)上共享文件。通過使用HTTP Server,用戶可以從服務(wù)器下載或上傳文件。
  2. Web應(yīng)用:大多數(shù)的網(wǎng)站和應(yīng)用都離不開HTTP Server。HTTP Server能夠處理客戶端的請求,并且把處理的結(jié)果返回到客戶端。
  3. 云服務(wù):許多云服務(wù)都依賴于HTTP Server,比如Amazon的S3、Google Cloud Storage等。這些服務(wù)都提供了一個(gè)RESTful的API,使用HTTP進(jìn)行交互。
  4. 大數(shù)據(jù):Hadoop、Spark等大數(shù)據(jù)工具都支持通過HTTP Server來訪問和處理數(shù)據(jù)。
  5. 物聯(lián)網(wǎng):在物聯(lián)網(wǎng)領(lǐng)域,HTTP Server也發(fā)揮了很大的作用。比如,許多智能家居設(shè)備都使用HTTP Server來與手機(jī)應(yīng)用或者網(wǎng)頁進(jìn)行交互。
  6. 流媒體:HTTP Server也被廣泛用于流媒體服務(wù),比如一些在線視頻網(wǎng)站和音樂網(wǎng)站。
  7. 游戲開發(fā):一些基于Web的游戲也使用了HTTP Server來進(jìn)行客戶端和服務(wù)器之間的通信。
  8. 遠(yuǎn)程管理:許多設(shè)備的遠(yuǎn)程管理界面就是一個(gè)簡單的Web頁面,通過HTTP Server接受用戶的輸入并返回結(jié)果。

3 WIZnet以太網(wǎng)芯片

WIZnet 主流硬件協(xié)議棧以太網(wǎng)芯片參數(shù)對比

Model Embedded Core Host I/F TX/RX Buffer HW Socket Network Performance
W5100S TCP/IPv4, MAC & PHY 8bit BUS, SPI 16KB 4 Max.25Mbps
W6100 TCP/IPv4/IPv6, MAC & PHY 8bit BUS, Fast SPI 32KB 8 Max.25Mbps
W5500 TCP/IPv4, MAC & PHY Fast SPI 32KB 8 Max.15Mbps
  1. W5100S/W6100 支持 8bit數(shù)據(jù)總線接口,網(wǎng)絡(luò)傳輸速度會優(yōu)于W5500。
  2. W6100 支持IPv6,與W5100S 硬件兼容,若已使用W5100S的用戶需要支持IPv6,可以Pin to Pin兼容。
  3. W5500 擁有比 W5100S更多的 Socket數(shù)量以及發(fā)送與接收緩存。

相較于軟件協(xié)議棧,WIZnet的硬件協(xié)議棧以太網(wǎng)芯片有以下優(yōu)點(diǎn)

  1. 硬件TCP/IP協(xié)議棧:WIZnet的硬件協(xié)議棧芯片提供了一種硬件實(shí)現(xiàn)的TCP/IP協(xié)議棧,這種硬件實(shí)現(xiàn)的協(xié)議棧比軟件實(shí)現(xiàn)的協(xié)議棧具有更好的性能和穩(wěn)定性。
  2. 不需要額外的嵌入式系統(tǒng)軟件棧和內(nèi)存資源:由于所有的以太網(wǎng)傳輸和接收操作都由獨(dú)立的以太網(wǎng)控制器處理,因此不需要額外的嵌入式系統(tǒng)軟件棧和內(nèi)存資源。
  3. 抵抗網(wǎng)絡(luò)環(huán)境變化和DDoS攻擊:與易受網(wǎng)絡(luò)環(huán)境變化和DDoS攻擊影響的軟件TCP/IP協(xié)議棧相比,硬件協(xié)議棧芯片能夠提供更穩(wěn)定的以太網(wǎng)性能。
  4. 適用于低規(guī)格的嵌入式系統(tǒng):即使在低規(guī)格的嵌入式系統(tǒng)中,使用WIZnet的硬件協(xié)議棧芯片也可以比使用軟件TCP/IP協(xié)議棧的高規(guī)格系統(tǒng)顯示出更高效的互聯(lián)網(wǎng)應(yīng)用操作性能。

w5500用的是utf8,W5100S/W5500+RP2040之Python開發(fā),RP2040,W5100S/W5500,MicroPython

4 HTTP網(wǎng)絡(luò)設(shè)置示例概述以及使用

4.1 流程圖

??程序的運(yùn)行框圖如下所示:

w5500用的是utf8,W5100S/W5500+RP2040之Python開發(fā),RP2040,W5100S/W5500,MicroPython

4.2 準(zhǔn)備工作核心

軟件

  • Thonny

硬件

  • W5100SIO模塊 + RP2040 樹莓派Pico開發(fā)板 或者 Wiznet W5100S-EVB-Pico開發(fā)板
  • Micro USB 接口的數(shù)據(jù)線
  • 網(wǎng)線

4.3 連接方式

  • 通過數(shù)據(jù)線連接PC的USB口(主要用于燒錄程序,也可以虛擬出串口使用)
  • 使用模塊連接RP2040 進(jìn)行接線時(shí)
    • RP2040 GPIO16 <----> W5100S MISO
    • RP2040 GPIO17 <----> W5100S CS
    • RP2040 GPIO18 <----> W5100S SCK
    • RP2040 GPIO19 <----> W5100S MOSI
    • RP2040 GPIO20 <----> W5100S RST
  • 通過PC和設(shè)備都通過網(wǎng)線連接路由器LAN口

4.4 主要代碼概述

??我們直接打開http_server.py文件。
第一步:可以看到在w5x00_init()函數(shù)中,進(jìn)行了SPI的初始化。以及將SPI相關(guān)引腳和復(fù)位引腳注冊到庫中,后續(xù)則是激活網(wǎng)絡(luò),并使用DHCP配置網(wǎng)絡(luò)地址信息,當(dāng)DHCP失敗時(shí),則配置靜態(tài)網(wǎng)絡(luò)地址信息。當(dāng)未配置成功時(shí),會打印出網(wǎng)絡(luò)地址相關(guān)寄存器的信息,可以幫助我們更好的排查問題。

第二步:設(shè)置socket號,綁定服務(wù)器ip和端口號。

第三步:監(jiān)聽,等待客戶端連接。

第四步:設(shè)置網(wǎng)頁界面,對客戶端的請求做出解析,以此來控制燈的開關(guān)。同時(shí)窗口打印出燈的狀態(tài)和客戶端的IP信息

''' HTTP Server example.
    date: 2023-11-27
'''
from usocket import socket
from machine import Pin,SPI
import time, network


''' LED init
'''
led = Pin(25, Pin.OUT)

''' static netinfo
'''
ip = '192.168.1.11'
sn = '255.255.255.0'
gw = '192.168.1.1'
dns= '8.8.8.8'

netinfo=(ip, sn, gw, dns)

localip = ''
localport = 8000
listen_info = (localip, localport)

    
def w5x00_init():
    global localip
    ''' spi0 init
        baudrate: 2000000
        mosi pin: gpio19
        miso pin: gpio16
        sck  pin: gpio18
        cs   pin: gpio17
        rst  pin: gpio20
    '''
    spi=SPI(0,2_000_000, mosi=Pin(19),miso=Pin(16),sck=Pin(18))
    nic = network.WIZNET5K(spi,Pin(17),Pin(20))
    nic.active(True)
    # use dhcp, if fail use static netinfo
    try:
        nic.ifconfig('dhcp')
    except:
        nic.ifconfig(netinfo)
    localip = nic.ifconfig()[0]
    print('ip :', nic.ifconfig()[0])
    print('sn :', nic.ifconfig()[1])
    print('gw :', nic.ifconfig()[2])
    print('dns:', nic.ifconfig()[3])
    
    while not nic.isconnected():
        time.sleep(1)
#         print(nic.regs())
        print('no link')
        uart.write('no link\r\n')

''' web page info
'''
def web_page():
    if  led.value()==1:
        led_state="ON"
    else:
        led_state="OFF"
        
    html = """
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Raspberry Pi Pico Web server - WIZnet W5100S</title>
    </head>
    <body>
    <div align="center">
    <H1>Raspberry Pi Pico Web server & WIZnet Ethernet HAT</H1>
    <h2>Control LED</h2>
    PICO LED state: <strong>""" + led_state + """</strong>
    <p><a href="/?led=on"><button class="button">ON</button></a><br>
    </p>
    <p><a href="/?led=off"><button class="button button2">OFF</button></a><br>
    </p>
    </div>
    </body>
    </html>
    """
    return html

def main():
    global localip
    w5x00_init()
    s = socket()
    s.bind((localip, 80))
    s.listen(5)
    
    while True:
        conn, addr = s.accept()
        print('Connect from %s' % str(addr))
        request = conn.recv(1024)
        request = str(request)
        #print('Content = %s' % request)
        led_on = request.find('/?led=on')
        led_off = request.find('/?led=off')
        if led_on == 6:
            print("LED ON")
            led.value(1)
        if led_off == 6:
            print("LED OFF")
            led.value(0)
        response = web_page()
        conn.send('HTTP/1.1 200 OK\n')
        conn.send('Connection: close\n')
        conn.send('Content-Type: text/html\n')
        conn.send('Content-Length: %s\n\n' % len(response))
        conn.send(response)
        conn.close()


if __name__ == "__main__":
    main()




4.5 結(jié)果演示

w5500用的是utf8,W5100S/W5500+RP2040之Python開發(fā),RP2040,W5100S/W5500,MicroPython

第一步:打開thonny選擇環(huán)境為Raspberry Pi Pico將程序復(fù)制到Thonny中,然后點(diǎn)擊運(yùn)行。

第二步:打開瀏覽器輸入服務(wù)器ip,進(jìn)入到網(wǎng)頁。

第三步:選擇燈的狀態(tài)進(jìn)行控制。點(diǎn)擊瀏覽器界面控制燈的狀態(tài)之后Thonny上的窗口會打印燈的狀態(tài)和客戶端ip。

注意:因?yàn)镸icroPython的print函數(shù)是啟用了stdout緩沖的,所以有時(shí)候并不會第一時(shí)間打印出內(nèi)容。

5 注意事項(xiàng)

  • 如果采用的是Wiznet的W5500來實(shí)現(xiàn)本章的示例,則只需燒錄W5500的固件并運(yùn)行示例程序即可。

6 相關(guān)鏈接

WIZnet官網(wǎng)

本章例程鏈接

想了解更多,評論留言哦!文章來源地址http://www.zghlxwxcb.cn/news/detail-828670.html

到了這里,關(guān)于八、W5100S/W5500+RP2040之MicroPython開發(fā)<HTTP Server示例>的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 六、W5100S/W5500+RP2040樹莓派Pico<UDP Server數(shù)據(jù)回環(huán)測試>

    六、W5100S/W5500+RP2040樹莓派Pico<UDP Server數(shù)據(jù)回環(huán)測試>

    ??UDP是一種無連接的網(wǎng)絡(luò)協(xié)議,它提供了一種簡單的、不可靠的方式來進(jìn)行數(shù)據(jù)傳輸。盡管它并不保證數(shù)據(jù)傳輸?shù)耐暾院晚樞蛐裕玌DP在某些場景下卻具有獨(dú)特的優(yōu)勢,例如在實(shí)時(shí)應(yīng)用或網(wǎng)絡(luò)游戲等領(lǐng)域中。 ??W5100S/W5500是一款集成全硬件 TCP/IP 協(xié)議棧的嵌入式以太網(wǎng)控

    2024年02月07日
    瀏覽(18)
  • 七、W5100S/W5500+RP2040樹莓派Pico<UDP 組播>

    七、W5100S/W5500+RP2040樹莓派Pico<UDP 組播>

    ??UDP組播是一種基于UDP協(xié)議的通信方式,它允許一臺計(jì)算機(jī)通過發(fā)送單個(gè)UDP數(shù)據(jù)包來同時(shí)向多個(gè)目標(biāo)發(fā)送信息。這種通信方式在需要高效、實(shí)時(shí)的數(shù)據(jù)傳輸?shù)膽?yīng)用中非常有用,比如視頻直播、在線游戲等。 ??本章節(jié)將進(jìn)行UDP組播回環(huán)測試。 ??W5100S/W5500是一款集成全硬

    2024年02月06日
    瀏覽(17)
  • 三、W5100S/W5500+RP2040樹莓派Pico<TCP Client數(shù)據(jù)回環(huán)測試>

    三、W5100S/W5500+RP2040樹莓派Pico<TCP Client數(shù)據(jù)回環(huán)測試>

    ??在當(dāng)今的計(jì)算機(jī)網(wǎng)絡(luò)環(huán)境中,TCP(傳輸控制協(xié)議)是一種非常重要的通信協(xié)議。TCP提供了一種可靠、有序和錯(cuò)誤控制的數(shù)據(jù)傳輸方式,被廣泛應(yīng)用于各種網(wǎng)絡(luò)應(yīng)用中。在TCP通信中,TCP Client是客戶端的角色,它負(fù)責(zé)建立連接、發(fā)送數(shù)據(jù)和接收數(shù)據(jù)。 ??本文以TCP Client為核

    2024年02月08日
    瀏覽(18)
  • CLION開發(fā)STM32之W5500系列(一)

    本系列適用于需要使單片機(jī)通過網(wǎng)口進(jìn)行通信的開發(fā)。 針對的是剛?cè)腴T的同學(xué)們,也是個(gè)人的經(jīng)驗(yàn)分享。 本次使用到的芯片為stm32f103vet6(其他的也可以) 本次使用的網(wǎng)口模塊為W5500,其網(wǎng)關(guān)有示例程序均可以參考. 本次使用Clion+OpenOCD+ARM-GCC 進(jìn)行開發(fā)、燒錄、編譯. 建議熟悉網(wǎng)絡(luò)

    2024年02月09日
    瀏覽(22)
  • Clion開發(fā)STM32之W5500系列(綜合實(shí)驗(yàn))

    Clion開發(fā)STM32之W5500系列(綜合實(shí)驗(yàn))

    此為w5500模塊的綜合實(shí)驗(yàn)測試模塊,包含dhcp、dns、ntp 以上三個(gè)模塊的驅(qū)動參考之前的文章,本篇不做說明. 使用的開發(fā)芯片 stm32f103vet6系列,外設(shè)接口使用的spi2 通過dhcp動態(tài)獲取ip, 通過dns解析NTP服務(wù)域名的ip 通過NTP服務(wù)ip獲取時(shí)間

    2024年02月16日
    瀏覽(28)
  • Clion開發(fā)STM32之W5500系列(NTP服務(wù)封裝)

    Clion開發(fā)STM32之W5500系列(NTP服務(wù)封裝)

    在w5500基礎(chǔ)庫中進(jìn)行封裝,獲取服務(wù)端的時(shí)間,來校準(zhǔn)本地時(shí)間。 本次使用的方案是通過ntp獲取時(shí)間+定時(shí)器更新保證時(shí)間準(zhǔn)確。

    2024年02月16日
    瀏覽(24)
  • Ubuntu搭建RP2040開發(fā)環(huán)境-1

    2024-4-23 hongxi.zhu 前置依賴(可選) 一、下載SDK和編譯鏈 下載SDK 下載交叉編譯鏈 配置 在最后追加 二、編譯實(shí)例工程 新開一個(gè)終端,進(jìn)入 pico-examples 目錄 編譯blink編程 編譯完成同級目錄下生成:blink.uf2、blink.elf、blink.bin 格式 下載方式 .uf2 USB拖拽到flash中 .elf SWD下載 .bin fla

    2024年04月26日
    瀏覽(27)
  • 樹莓派Raspberry Pico RP2040 開發(fā)環(huán)境配置完全縫合終極版C-SDK

    更新:這篇文章寫的有點(diǎn)亂,后續(xù)整理見我的個(gè)人博客:rp2040開發(fā)環(huán)境配置集合版 如果你只想要使用VScode作為你的開發(fā)環(huán)境,那么這篇會是更好的參考: RP2040配置VSCODE開發(fā)環(huán)境——一勞永逸版 RP2040作為一款樹莓派的單片機(jī),一開始我以為會有很成熟的開發(fā)方案,結(jié)果發(fā)現(xiàn)網(wǎng)

    2024年02月01日
    瀏覽(20)
  • 【使用W5500實(shí)現(xiàn)UDP、TCP通信】

    一、W5500介紹 W5500是一個(gè)集成的以太網(wǎng)模塊,這個(gè)模塊上攜帶TCP/IP協(xié)議,控制器只需要通過SPI協(xié)議讀寫其寄存器便可以以網(wǎng)絡(luò)的方式進(jìn)行數(shù)據(jù)交互。 W5500模塊自帶10個(gè)引腳,但由于使用其官方庫,只需使用六個(gè)引腳便可以進(jìn)行數(shù)據(jù)交互,這六個(gè)引腳分別為:VCC、GND、MISO、MOSI、

    2023年04月08日
    瀏覽(15)
  • FPGA控制W5500完成UDP環(huán)回測試

    FPGA控制W5500完成UDP環(huán)回測試

    本文針對已經(jīng)對W5500有一定了解,并且數(shù)據(jù)手冊已經(jīng)通讀一遍的人群,因?yàn)椴┲髂壳爸煌瓿闪薝DP環(huán)回測試,因此在后文可能只介紹有關(guān)UDP部分。 1.FPGA核心板或者開發(fā)板; 2.W5500模塊。下圖是博主使用的模塊; 3.網(wǎng)絡(luò)調(diào)試助手,網(wǎng)上隨便找一個(gè)就行; 主機(jī)與W5500通信有固定協(xié)議

    2024年02月06日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包