前言
TPYBoard v201開發(fā)板上搭載了以太網(wǎng)轉(zhuǎn)TTL串口模塊(USR-K2)巴帮,從而實現(xiàn)了TCP通信的功能晶密。既然可以TCP通信,自然也可以實現(xiàn)HTTP協(xié)議通信秀鞭。于是趋观,就萌發(fā)了本教程。本教程很簡單锋边,僅是實現(xiàn)了一個簡單的靜態(tài)頁面皱坛,希望可以給大家?guī)聿灰粯拥膯l(fā)。
準備工作
硬件&工具
- TPYBoard v201 開發(fā)板 1塊
- TPYBoard v201 網(wǎng)絡(luò)參數(shù)配置的工具
- 路由器豆巨、電腦剩辟、網(wǎng)線等
知識儲備
- 了解基本的TCP、HTTP通信協(xié)議等相關(guān)的知識。不知道的可自行去百度贩猎,相關(guān)教程很多熊户。
TPYBoard v201網(wǎng)絡(luò)參數(shù)配置
USR-K2資料和工具下載:?點擊下載
下載地址是在GitHub上,如果下載速度很慢的話吭服,你也可以加TPYBoard技術(shù)交流/*裙*/;157816561 文件里下載嚷堡。
首先,將TPYBoard v201開發(fā)板通過網(wǎng)線與你使用的電腦接入同一個局域網(wǎng)內(nèi)艇棕。雙擊運行<USR-M0_V2.2.1.272.exe>蝌戒,點擊搜索設(shè)備,成功的情況下會在上面的列表中顯示搜索到的設(shè)備沼琉。
點擊搜素到的設(shè)備北苟,可以讀取到該設(shè)備的相關(guān)參數(shù)。同時也可以進行修改并保存打瘪。接下來粹淋,我們要進行IP地址、端口等設(shè)置瑟慈。IP地址我這里設(shè)置了靜態(tài)IP<192.168.0.99>,防止每次重新啟動時會改變IP屋匕。
接下來端口設(shè)置葛碧,模塊工作方式選擇TCP Server。大家可以注意到基礎(chǔ)設(shè)置中有一個HTTP服務(wù)端口的設(shè)置过吻,是因為USR-K2中本身就有一個內(nèi)嵌的網(wǎng)頁用于參數(shù)的設(shè)置进泼,默認是啟用了80端口,那我們下面開啟的TCP Server的服務(wù)端口就使用81端口吧纤虽。
設(shè)置完畢后乳绕,點擊軟件最下方的保存設(shè)置。左側(cè)的操作日志顯示框會顯示保存的進度和狀態(tài)逼纸。
這時再重新搜索設(shè)備洋措,驗證下模塊的IP地址是否和我們設(shè)置的一致。
程序?qū)崿F(xiàn)
TPYBoard? v201通過板子上的串口6與USR-K2模塊之間通信杰刽。我們不用去管TCP鏈接等問題菠发,只需要將想要發(fā)送的數(shù)據(jù)通過串口6發(fā)送給K2模塊即可。其實我們的程序主要就是讀取和寫入串口的工作贺嫂,當我們從串口讀取到HTTP請求報文時滓鸠,組成一個簡單的響應(yīng)報文寫入到串口發(fā)送回去就可以了。
main.py 源碼:
import pyb
from pyb import UART
#串口6初始化
uart = UART(6,115200,timeout = 100)
#響應(yīng)報文
header = """
HTTP/1.1 200 OK
Content-Type:text/html
Content-Length:{0}
{1}
"""
#HTML頁面
html = """<!DOCTYPE html>
<html>
? ? <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
? ? <head> <title>TPYBoard</title> </head>
? ? <body>
? ? ? <h1>TPYBoard v201</h1><br />
? ? ? <h2>Simple HTTP server</h2>
? ? </body>
</html>
"""
while True:
? ? if uart.any() > 0:
? ? ? ? request = uart.read().decode()
? ? ? ? print('request:',request)
? ? ? ? #當接收到GET請求頭時第喳,進行響應(yīng)
? ? ? ? if request.find('GET') > -1:
? ? ? ? ? ? data = header.format(len(html),html)
? ? ? ? ? ? uart.write(data)
保存代碼糜俗。打開瀏覽器,輸入URL進行訪問。URL=ip:81悠抹,例如我的URL就是192.168.0.99:81珠月。
PuTTY中打印了接收到的請求頭的數(shù)據(jù),如下:
? ? 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請求報文格式即可梁丘,有興趣的朋友可以多去了解些侵浸。細心的朋友會注意到,每次訪問時瀏覽器會發(fā)送兩次請求氛谜,其中有一個 GET /favicon.ico HTTP/1.1掏觉,這是因為瀏覽器想找favicon.ico文件作為訪問網(wǎng)頁的圖標,這個可以忽略掉值漫,不影響功能澳腹。也可以在程序中進行過濾。
下載源碼:https://github.com/TPYBoard/TPYBoard-v201