1.實驗目的
1.學習在PC機系統中擴展簡單I/O接口的方法。
2.進一步學習編制數據輸出程序的設計方法。
3.學習藍牙模塊的接線方法及其工作原理。
4.學習L298N電機驅動板模塊的接線方法。
5.學習藍牙控制小車的工作原理。
2.所需元器件
TPYBoard板子一塊
藍牙串口模塊一個
L298N電機驅動板模塊一個
智能小車底盤一個
數據線一條
杜邦線若干
3.藍牙串口模塊原理
(1)引出接口包括EN,5V,GND,TX,RX,STATE,我們小車只用到RX,TX,GND,5V四個針腳。
(2)模塊默認波特率位9600,默認配對密碼為1234,默認名稱位為HC-06。
(3)led指示藍牙連接狀態,閃爍表示沒有藍牙連接,常亮表示藍牙已連接并打開了端口,當我們用安卓手機軟件發送指令時,通過串口給TPYBoard發送指令,TPYBoard收到指令通過L298BN模塊來驅動小車前進,后退,向左,向右或者停止。
如下圖接線,5V接TPYBoard的VIN,GND為地線,TX接TPYBoard的RX(這用的是TPYBoard串口2,X3,X4)即X4,RX接TPYBoard的TX即X3。
4.學習L298N電機驅動板模塊的接線方法
本模塊是2路的H橋驅動,所以可以同時驅動兩個電機,接法如圖所示使能ENAENB之后,可以分別從IN1IN2輸入PWM信號驅動電機1的轉速和方向,可以分別從IN3IN4輸入PWM信號驅動電機2的轉速和方向。我們將電機1接口的OUT1與OUT2與小車的一個電機的正負極連接起來,將電機2接口的OUT3與OUT2與小車的另一個電機的正負極連接起來。然后將兩邊的接線端子,即供電正極(中間的接線端子為接地)連接TPYboard的VIN,中間的接線端子即接地,連接TPYBoard的GND,In1-In4連接TPYBoard的Y1,Y2,Y3,Y4,通過Y1,Y2與Y3,Y4的高低電平,來控制電機的轉動,從而讓小車前進,后退,向左,向右。
接線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:
- #停止(讀取手機APP傳過來的指令,不同的軟件指令可能不同,可以自己設定,在這里是默認的,下同)
- 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()
復制代碼
|