|
給大家介紹一個(gè)Python手機(jī)藍(lán)牙遙控智能小車的制作教程,小車制作采用的是Python開發(fā)語言,MCU為TPYBoard,一款支持Python語言的MicroPython開發(fā)板,先一起看下成品的視頻演示吧!詳細(xì)的教程可參考TPYBoard官網(wǎng)例程。也可加入MicroPythonQQ交流群:157816561,一起學(xué)習(xí)Python開發(fā)!
藍(lán)牙小車3.jpg (69.36 KB, 下載次數(shù): 101)
下載附件
2016-12-16 13:19 上傳
首先介紹一下用到的開發(fā)板——TPYBoard
TPYBoard是遵守MIT協(xié)議由TurnipSmart公司制作的一款MicroPython開發(fā)板,它是基于STM32F405單片機(jī),通過USB接口進(jìn)行數(shù)據(jù)傳輸。該開發(fā)板內(nèi)置4個(gè)LED燈、一個(gè)加速傳感器、時(shí)鐘模塊,可在3V-10V之間的電壓正常工作。簡而言之,TPYBoard通過Python腳本語言實(shí)現(xiàn)單片機(jī)的控制,單片機(jī)能做什么就等于TPYBoard能做什么。
tpyboardv102 (2).jpg (103.44 KB, 下載次數(shù): 86)
下載附件
2016-12-16 13:20 上傳
1.實(shí)驗(yàn)?zāi)康?/strong>
1. 學(xué)習(xí)在PC機(jī)系統(tǒng)中擴(kuò)展簡單I/O 接口的方法。
2. 進(jìn)一步學(xué)習(xí)編制數(shù)據(jù)輸出程序的設(shè)計(jì)方法。
3. 學(xué)習(xí)藍(lán)牙模塊的接線方法及其工作原理。
4. 學(xué)習(xí) L298N電機(jī)驅(qū)動(dòng)板模塊的接線方法。
5. 學(xué)習(xí)藍(lán)牙控制小車的工作原理。
QQ圖片20161216100221.png (191.33 KB, 下載次數(shù): 110)
下載附件
2016-12-16 13:21 上傳
2.所需元器件
TPYBoard板子一塊
藍(lán)牙串口模塊一個(gè)
L298N電機(jī)驅(qū)動(dòng)板模塊一個(gè)
智能小車底盤一個(gè)
數(shù)據(jù)線一條
杜邦線若干
藍(lán)牙小車.jpg (234.94 KB, 下載次數(shù): 97)
下載附件
2016-12-16 13:22 上傳
3.藍(lán)牙串口模塊原理
(1)引出接口包括EN,5V,GND,TX,RX,STATE,我們小車只用到RX,TX,GND,5V四個(gè)針腳。
(2)模塊默認(rèn)波特率位9600,默認(rèn)配對密碼為1234,默認(rèn)名稱位為HC-06。
(3)led指示藍(lán)牙連接狀態(tài),閃爍表示沒有藍(lán)牙連接,常亮表示藍(lán)牙已連接并打開了端口,當(dāng)我們用安卓手機(jī)軟件發(fā)送指令時(shí),通過串口給TPYBoard發(fā)送指令,TPYBoard收到指令通過L298BN模塊來驅(qū)動(dòng)小車前進(jìn),后退,向左,向右或者停止。
如下圖接線,5V 接TPYBoard的VIN, GND 為地線,TX接TPYBoard的RX(這用的是TPYBoard串口2,X3,X4)即X4,RX接TPYBoard的TX即X3。
藍(lán)牙小車1.png (142.34 KB, 下載次數(shù): 105)
下載附件
2016-12-16 13:22 上傳
4.學(xué)習(xí)L298N電機(jī)驅(qū)動(dòng)板模塊的接線方法
本模塊是2路的H橋驅(qū)動(dòng),所以可以同時(shí)驅(qū)動(dòng)兩個(gè)電機(jī),接法如圖所示使能ENA ENB之后,可以分別從IN1 IN2輸入PWM信號(hào)驅(qū)動(dòng)電機(jī)1的轉(zhuǎn)速和方向,可以分別從IN3 IN4輸入PWM信號(hào)驅(qū)動(dòng)電機(jī)2的轉(zhuǎn)速和方向。我們將電機(jī)1接口的OUT1與OUT2與小車的一個(gè)電機(jī)的正負(fù)極連接起來,將電機(jī)2接口的OUT3與OUT2與小車的另一個(gè)電機(jī)的正負(fù)極連接起來。然后將兩邊的接線端子,即供電正極(中間的接線端子為接地)連接TPYboard的VIN,中間的接線端子即接地,連接TPYBoard的GND,In1-In4連接TPYBoard的Y1,Y2,Y3,Y4,通過Y1,Y2與Y3,Y4的高低電平,來控制電機(jī)的轉(zhuǎn)動(dòng),從而讓小車前進(jìn),后退,向左,向右。
藍(lán)牙小車2.jpg (49.61 KB, 下載次數(shù): 90)
下載附件
2016-12-16 13:23 上傳
接線ok后,編寫main.py,給TOYBoard通電就ok了,下面是源代碼。
5.源代碼
- import pyb
- from pyb import UART
- from pyb import Pin
-
- M2 = Pin('X3', Pin.IN)
- M3 = Pin('X4', Pin.IN)
- N1 = Pin('Y1', Pin.OUT_PP)
- N2 = Pin('Y2', Pin.OUT_PP)
- N3 = Pin('Y3', Pin.OUT_PP)
- N4 = Pin('Y4', Pin.OUT_PP)
-
- u2 = UART(2, 9600)
-
- while True:
- pyb.LED(2).on()
- pyb.LED(3).on()
- pyb.LED(4).on()
- _dataRead=u2.readall()
- if _dataRead!=None:
- #停止(讀取手機(jī)APP傳過來的指令,不同的軟件指令可能不同,可以自己設(shè)定,在這里是默認(rèn)的,下同)
- if(_dataRead.find(b'\xa5Z\x04\xb1\xb5\xaa')>-1):
- print('stop')
- N1.low()
- N2.low()
- N3.low()
- N4.low()
- #向左
- elif(_dataRead.find( b'\xa5Z\x04\xb4\xb8\xaa')>-1):
- print('left')
- N1.low()
- N2.high()
- N3.high()
- N4.low()
- #向右
- elif(_dataRead.find( b'\xa5Z\x04\xb6\xba\xaa')>-1):
- print('right')
- N1.high()
- N2.low()
- N3.low()
- N4.high()
- #后退
- elif(_dataRead.find(b'\xa5Z\x04\xb5\xb9\xaa')>-1):
- print('back')
- N2.high()
- N1.low()
- N4.high()
- N3.low()
- #向前
- elif(_dataRead.find( b'\xa5Z\x04\xb2\xb6\xaa')>-1):
- print('go')
- N1.high()
- N2.low()
- N3.high()
- N4.low()
復(fù)制代碼
|
|