找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2999|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

Micropython教程之TPYBoard制作藍(lán)牙+紅外循跡小車

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:130183 發(fā)表于 2017-11-15 13:13 | 只看該作者 |只看大圖 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
  1.實(shí)驗(yàn)?zāi)康?br />
  學(xué)習(xí)在PC機(jī)系統(tǒng)中擴(kuò)展簡單I/O接口的方法。

  進(jìn)一步學(xué)習(xí)編制數(shù)據(jù)輸出程序的設(shè)計(jì)方法。

  學(xué)習(xí)藍(lán)牙模塊的接線方法及其工作原理。

  學(xué)習(xí)L298N電機(jī)驅(qū)動板模塊的接線方法。

  學(xué)習(xí)藍(lán)牙控制小車的工作原理。


  2.所需元器件

  TPYBoardv102板子1塊

  藍(lán)牙串口透傳模塊(HC-06)1個

  L298N電機(jī)驅(qū)動板模塊1個

  智能小車底盤1個

  數(shù)據(jù)線1條

  杜邦線若干

  智能藍(lán)牙小車APP(Android版)點(diǎn)擊下載




  3.藍(lán)牙串口模塊原理




  (1)引出接口包括EN,5V,GND,TX,RX,STATE,我們小車只用到RX,TX,GND,5V四個針腳

  (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ā)送指令時,通過串口給TPYBoard發(fā)送指令,TPYBoard收到指令通過L298BN模塊來驅(qū)動小車前進(jìn),后退,向左,向右或者停止。

  如下表接線:


[td]
藍(lán)牙模塊(HC-06)
TPYBoardv10x
5V
VIN(+5V)
GND
GND
RX
Y9(UART(3)-TX)
TX
Y10(UART(3)-RX)

    4.四路紅外循跡模塊




  (1)當(dāng)模塊檢測到前方障礙物信號時,電路板上紅色指示燈點(diǎn)亮,同時OUT端口持續(xù)輸出低電平信號,該模塊檢測距離2~60cm,檢測角度35°,檢測距離可以通過電位器進(jìn)行調(diào)節(jié),順時針調(diào)電位器,檢測距離增加;逆時針調(diào)電位器,檢測距離減少。

  (2)傳感器屬于紅外線反射探測,因此目標(biāo)的反射率和形狀是探測距離的關(guān)鍵。其中黑色探測距離最小,白色最大;小面積物體距離小,大面積距離大。

  (3)傳感器模塊輸出端口OUT可直接與單片機(jī)IO口連接即可,也可以直接驅(qū)動一個5V繼電器模塊或者蜂鳴器模塊;連接方式:VCC-VCC、GND-GND、OUT-IO。

  (4)比較器采用LM339,工作穩(wěn)定。

  (5)可采用3.3V-5V直流電源對模塊進(jìn)行供電。當(dāng)電源接通時,綠色電源指示燈點(diǎn)亮。

  5.四路紅外感應(yīng)探頭的安裝

  尋跡的原理其實(shí)就光的吸收,反射和散射。大家都知道,白色反射所有顏色的光,而黑色吸收所有顏色的光,這就為小車尋跡提供了有力的科學(xué)依據(jù)。在小車的車頭上安裝上紅外探頭(我是安裝了四個),一字順序排開。哪個探頭接收不到反射或者散射回來的光時,說明這個探頭此時正在黑色的尋跡帶上。

  6.判斷反饋的信號

  如果要是正前方的探頭接收不到光,那么說明小車此時走在黑色的尋跡帶上?梢允剐≤囍本行走。如果左面的探頭接收不到光,那么說明小車左面出現(xiàn)了黑色尋跡帶,此時小車應(yīng)該執(zhí)行左轉(zhuǎn)彎。右轉(zhuǎn)彎同左轉(zhuǎn)彎原理。如果要是小車前面,左面,右面三個方向全都接收不到光,或者是兩個方向上的探頭都接收不到光,到底是左轉(zhuǎn)彎,右轉(zhuǎn)彎還是繼續(xù)直行,這個就要看你自己在程序里怎么做判斷了。

  7.探頭的安裝與接線

  四路紅外探頭接線很簡單,雖然有十八根線,但是有十二根是三根三根的分成四組,一一對應(yīng)接線,其余的六根,是VCC和GND。還有四根是接到TPYBoardv10x開發(fā)板的IO口上的,用于接收四路紅外循跡模塊反饋的信號。

  接線OK后,編寫main.py,給TPYBoard通電就ok了,下面是源代碼。

  8.源代碼

  1. # main.py -- put your code here!
  2. import pyb
  3. from pyb import UART
  4. from pyb import Pin

  5. N1 = Pin('X1', Pin.OUT_PP)
  6. N2 = Pin('X2', Pin.OUT_PP)
  7. N3 = Pin('X3', Pin.OUT_PP)
  8. N4 = Pin('X4', Pin.OUT_PP)

  9. M1 = Pin('Y1', Pin.IN)
  10. M2 = Pin('Y2', Pin.IN)
  11. M3 = Pin('Y3', Pin.IN)
  12. M4 = Pin('Y4', Pin.IN)

  13. blue=UART(3,9600)
  14. mode='1'#1:表示藍(lán)牙模式 2:循跡模式

  15. def Stop():
  16.     N1.low()
  17.     N2.low()
  18.     N3.low()
  19.     N4.low()
  20. def Back():
  21.     N1.high()
  22.     N2.low()
  23.     N3.high()
  24.     N4.low()
  25. def Go():
  26.     N1.low()
  27.     N2.high()
  28.     N3.low()
  29.     N4.high()
  30. def Left():
  31.     N1.high()
  32.     N2.low()
  33.     N3.low()
  34.     N4.high()
  35. def Right():
  36.     N1.low()
  37.     N2.high()
  38.     N3.high()
  39.     N4.low()
  40. while True:
  41.     if blue.any()>0:
  42.         data=blue.read().decode()
  43.         print(data)
  44.         if data.find('0')>-1:
  45.             #stop
  46.             Stop()
  47.             mode="1"
  48.             print('stop')
  49.         if data.find('1')>-1:
  50.             Go()
  51.             print('go')
  52.         if data.find('2')>-1:
  53.             Back()
  54.             pyb.delay(500)
  55.             Stop()
  56.         if data.find('3')>-1:
  57.             Left()
  58.             pyb.delay(250)
  59.             Stop()
  60.         if data.find('4')>-1:
  61.             Right()
  62.             pyb.delay(250)
  63.             Stop()
  64.         if data.find('5')>-1:
  65.             mode="1"
  66.             Stop()
  67.         if data.find('6')>-1:
  68.             mode="2"
  69.     else:
  70.         if mode=="2":
  71.             print('循跡模式')
  72.             if(M1.value() and M2.value() and M3.value()):
  73.                 Stop()
  74.                 mode="1"
  75.             if(M2.value() or M3.value()):
  76.                 pyb.LED(2).on()
  77.                 pyb.LED(3).off()
  78.                 pyb.LED(4).off()
  79.                 Go()
  80.             if M1.value():
  81.                 pyb.LED(3).on()
  82.                 pyb.LED(2).off()
  83.                 pyb.LED(4).off()
  84.                 Right()
  85.                 pyb.delay(10)
  86.             if M4.value():
  87.                 pyb.LED(4).on()
  88.                 pyb.LED(2).off()
  89.                 pyb.LED(3).off()
  90.                 Left()
  91.                 pyb.delay(10)
復(fù)制代碼



  9.智能藍(lán)牙小車APP的使用

  下載安裝后,打開[藍(lán)牙智能小車]APP,進(jìn)入操作界面。如下:





  點(diǎn)擊左下角的桃心圖標(biāo),進(jìn)入自定義編碼界面。通過這個界面,我們可以自定義操作界面中各個按鍵發(fā)出去的指令內(nèi)容。如下:





  點(diǎn)擊頁面下方的關(guān)于我們,可以加入我們的技術(shù)交流群和關(guān)注微信公眾號。如下:





  接下來,回到一開始的操作界面,點(diǎn)擊右下角的設(shè)置圖標(biāo),進(jìn)行藍(lán)牙模塊的連接。首先先點(diǎn)擊[搜索藍(lán)牙設(shè)備],界面會自動加載搜索到的藍(lán)牙設(shè)備,當(dāng)出現(xiàn)HC-06時,點(diǎn)擊進(jìn)行連接。





  如果是第一次連接,需要進(jìn)行配對,配對的密碼默認(rèn)1234。





  提示連接成功后,我們就可以通過四個方向鍵來操縱智能藍(lán)牙小車了。

  大家可以看到,右上角的圖標(biāo),可以進(jìn)行藍(lán)牙模式和循跡模式的切換。當(dāng)按下時,兩種模式來回切換。當(dāng)處于循跡模式時,界面如下。

  



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表