[Micropython]TPYBoard v202 智能WIFI遠控小車


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

前言
----------------------

之前有過用TPYBoard v102制作的各種各樣功能的智能小車,比如自動尋跡、自動避障、手機藍牙遙控等。想着還缺個WIFI控制的,那就用TPYBoard v202做一個吧。

設計思路
-------------------------

WIFI是目前最有廣泛運用的一項無線網絡傳輸技術,覆蓋范圍廣,可遠程。本次實現了遠程WIFI控制,不僅可以在家里操作,還可以接入一些雲平台,實現遠程操控。具體思路如下:

1、TPYBoard v202作為整個小車的核心控制部分,連接L298N電機驅動模塊,實現小車的基本方向控制;

2、TPYBoard v202接入網絡,開啟Socket服務實現web服務器功能;

3、手機接入同一局域網,可通過瀏覽器訪問控制頁面,進行小車控制。


所需器件
---------------------------------

- TPYBoard v202開發板 1塊
- USB數據線(MicroUSB) 1條
- L298N電機驅動模塊 1個
- 小車套件包(底板、電機等) 1個
- 18650電池 2節
- 18650電池盒 1個

程序源碼
----------------------------------

TPYBoard v202 源代碼(main.py)

import socket                 #導入socket通信庫
import machine
from machine import Pin

g4 = Pin(4,Pin.OUT)
g5 = Pin(5,Pin.OUT)
g12 = Pin(12,Pin.OUT)
g13 = Pin(13,Pin.OUT)

def Go():
    g4.value(1)
    g5.value(0)
    g12.value(1)
    g13.value(0)
def Back():
    g4.value(0)
    g5.value(1)
    g12.value(0)
    g13.value(1)

def Left():
    g4.value(1)
    g5.value(0)
    g12.value(0)
    g13.value(0)
def Right():
    g4.value(0)
    g5.value(0)
    g12.value(1)
    g13.value(0)
def Stop():
    g4.value(0)
    g5.value(0)
    g12.value(0)
    g13.value(0)
#-----------------------HTTP Server-----------------------#
#ap模式下,默認ip地址為192.168.4.1
addr = ('192.168.4.1',80) #定義socket綁定的地址,ip地址為本地,端口為80
s = socket.socket()     #創建一個socket對象
s.bind(addr)            #綁定地址
s.listen(5)             #設置允許連接的客戶端數量
print('listening on:', addr)
while True:
    cl, addr = s.accept() #接受客戶端的連接請求,cl為此鏈接創建的一個新的scoket對象,addr客戶端地址
    print('client connected from:', addr)
    cl_file = cl.makefile('rwb', 0) #返回與socket對象關聯的文件對象。rwb:支持二進制模式的讀寫操作 0:默認值,不支持緩存
    req = b''
    while True:
        line = cl_file.readline() #讀取發送過來的數據,直到\r\n換行結束
        if not line or line == b'\r\n':
            break
        req += line
    print("Request:")
    req=req.decode('utf-8').split('\r\n')
    #http header 解析
    req_data=req[0].lstrip().rstrip().replace(' ','').lower()
    print(req_data)
    if req_data.find('favicon.ico')>-1:
        cl.close()
        continue
    else:
        req_data=req_data.replace('get/?','').replace('http/1.1','')
        index = req_data.find('key=')
        value = req_data[index+4:index+6].lstrip().rstrip()
        print('key:',value)
        if value == 'go':
            Go()
        elif value == 'ba':
            Back()
        elif value == 'le':
            Left()
        elif value == 'ri':
            Right()
        else:
            Stop()
    with open("control.html", 'r') as f:
        for line in f:
            cl.send(line)
    #cl.send(response)   #返回html網頁的數據
    cl.close()          #關閉socket

 

硬件的連接
----------------------------

 

 

網頁效果
-------------------------


演示效果

-------------------------

`點擊觀看視頻 <http://mpvideo.qpic.cn/0bf2hqaaeaaaveaa3ui5h5pfapgdai6aaaqa.f10002.mp4?dis_k=75bc9f531e0fe018cfc344a63c5fdc1d&dis_t=1579070805>`_


源碼下載
--------------

`下載源碼 <https://github.com/TPYBoard/TPYBoard-v202/tree/master/12.%E6%99%BA%E8%83%BDWIFI%E8%BF%9C%E6%8E%A7%E5%B0%8F%E8%BD%A6>`_


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM