micropython TPYBoard v201 簡易的web服務器的實現過程

轉載請註明文章來源,更多教程可自助參考docs.tpyboard.com,QQ技術交流羣:157816561,公衆號:MicroPython玩家匯html

前言

TPYBoard v201開發板上搭載了以太網轉TTL串口模塊(USR-K2),從而實現了TCP通訊的功能。既然能夠TCP通訊,天然也能夠實現HTTP協議通訊。因而,就萌發了本教程。本教程很簡單,僅是實現了一個簡單的靜態頁面,但願能夠給你們帶來不同的啓發。git

TPYBoard v201開發板實物github

準備工做

硬件&工具web

- TPYBoard v201 開發板 1塊
- TPYBoard v201 網絡參數配置的工具
- 路由器、電腦、網線等瀏覽器

知識儲備網絡

- 瞭解基本的TCP、HTTP通訊協議等相關的知識。不知道的可自行去百度,相關教程不少。app

 

TPYBoard v201網絡參數配置

USR-K2資料和工具下載: https://github.com/TPYBoard/Documentation/blob/master/tpyboard_docs/tpyboard/tutorial/doc/USR-K2%E8%B5%84%E6%96%99.rar
下載地址是在GitHub上,若是下載速度很慢的話,你也能夠加TPYBoard技術交流/*裙*/;157816561 文件裏下載。工具

首先,將TPYBoard v201開發板經過網線與你使用的電腦接入同一個局域網內。雙擊運行<USR-M0_V2.2.1.272.exe>,點擊搜索設備,成功的狀況下會在上面的列表中顯示搜索到的設備。ui

點擊搜素到的設備,能夠讀取到該設備的相關參數。同時也能夠進行修改並保存。接下來,咱們要進行IP地址、端口等設置。IP地址我這裏設置了靜態IP<192.168.0.99>,防止每次從新啓動時會改變IP。spa

接下來端口設置,模塊工做方式選擇TCP Server。你們能夠注意到基礎設置中有一個HTTP服務端口的設置,是由於USR-K2中自己就有一個內嵌的網頁用於參數的設置,默認是啓用了80端口,那咱們下面開啓的TCP Server的服務端口就使用81端口吧。

設置完畢後,點擊軟件最下方的保存設置。左側的操做日誌顯示框會顯示保存的進度和狀態。

這時再從新搜索設備,驗證下模塊的IP地址是否和咱們設置的一致。

 

程序實現

TPYBoard v201經過板子上的串口6與USR-K2模塊之間通訊。咱們不用去管TCP連接等問題,只須要將想要發送的數據經過串口6發送給K2模塊便可。其實咱們的程序主要就是讀取和寫入串口的工做,
當咱們從串口讀取到HTTP請求報文時,組成一個簡單的響應報文寫入到串口發送回去就能夠了。

main.py 源碼:

 1 import pyb
 2 from pyb import UART
 3 
 4 #串口6初始化
 5 uart = UART(6,115200,timeout = 100)
 6 #響應報文
 7 header = """
 8 HTTP/1.1 200 OK
 9 Content-Type:text/html
10 Content-Length:{0}
11 
12 {1}
13 """
14 #HTML頁面
15 html = """<!DOCTYPE html>
16 <html>
17     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
18     <head> <title>TPYBoard</title> </head>
19     <body>
20       <h1>TPYBoard v201</h1><br />
21       <h2>Simple HTTP server</h2>
22     </body>
23 </html>
24 """
25 
26 while True:
27     if uart.any() > 0:
28         request = uart.read().decode()
29         print('request:',request)
30         #當接收到GET請求頭時,進行響應
31         if request.find('GET') > -1:
32             data = header.format(len(html),html)
33             uart.write(data)

 

保存代碼。打開瀏覽器,輸入URL進行訪問。URL=ip:81,例如個人URL就是192.168.0.99:81。

PuTTY中打印了接收到的請求頭的數據,以下:

request: GET / HTTP/1.1
Host: 192.168.0.99:81
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.7 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9

我用的是谷歌瀏覽器,不一樣瀏覽器可能會有些不一樣,可是大同小異,只要符合HTTP請求報文格式便可,有興趣的朋友能夠多去了解些。細心的朋友會注意到,每次訪問時瀏覽器會發送兩次請求,其中有一個 GET /favicon.ico HTTP/1.1,這是由於瀏覽器想找favicon.ico文件做爲訪問網頁的圖標,這個能夠忽略掉,不影響功能。也能夠在程序中進行過濾。

下載源碼:https://github.com/TPYBoard/TPYBoard-v201 

相關文章
相關標籤/搜索