micro:bit of things -- Vehicles

2018-01-04 10:43

10. Vehicles

micro:bit 物聯網 課程 系列   --- 創客車設計

 

本頁概述了我在6至9歲兒童中成功使用的三個日益複雜的車輛項目。

它們是STEM / STEAM課程的理想環境。

PPV

預編程的車輛是三個項目中最簡單的。

需要精確遵循永不改變的路線的車輛。 這可以被編程到車輛中。 自然而然的安全裝置和故障安全機制將需要被添加到車輛中。 項目的這些方面可以作為擴展工作,以擴展你的能力更強的學生。

任務:

要建立一個機器人車輛,將可靠,準確地遵循工廠周圍的預定路線。

 

 

 

 

設計簡介:

 

機器人車輛必須每天在工廠製造三條迴路,以將部件運送到裝配線。

在到達每個生產點(A到D)時,車輛在下車之前必須暫停,然後繼續前進。

擴展挑戰:

車輛在行駛過程中應始終發出警報,並在到達每個生產點時通知其到達。

 

該算法可以使用不插電的方法來設計,但是由於我正在和大一點的孩子一起工作,我更喜歡教授編程結構,並讓孩子們使用Logo來計劃他們的程序。

算法:

Starting at D, facing up.

repeat 3 [fd 200 rt 90 fd 100 wait 50 rt 90 fd 100 wait 50 lt 90 fd 100 wait 50 rt 90 fd 100 rt 90 fd 200 rt 90 wait 500]

 

 

該模型:

 

儘管可以購買現成的車輛和車輛套件,但這些車輛比兒童製造的車輛要昂貴得多,並且與他們自己設計和製造的車輛一樣,沒有像兒童那樣產生同樣的影響。

沒有必要購買昂貴的套件。 事實上,如果他們自己設計和建造車輛,孩子們將會學到更多東西。 這是一個理想的STEM項目。

關於重要的背景信息,請參見Motor Control頁面以及下面的自行建造線的計劃。 此頁面上的所有三個車輛項目都可以使用相同的基本底盤。 馬達和旋轉輪安裝用熱膠槍粘在一起。

對於前兩個項目模型更簡單,不需要LED和光傳感器,它包括:

> a rectangle sheet of 2mm MDF (12 x 20 cm)

> two, 200:1 ratio, geared motors

> two 5 or 6 cm diameter wheels

> a swivel wheel

> 6V battery pack with switch

> Kitronic motor board

> two resistors

> a micro:bit

雖然可以從'kit' from Kitronik 購買價格合理的“套件”,但我不贊成在套件上使用STEM項目。 一個深思熟慮的STEM課程的目的應該是挑戰孩子提出自己的設計,他們可以建立,測試和改進。

套件不提供任何類似的學習經驗,所以不會如此有效地教STEM。

請注意,右側的設計包括一個LED和兩個LDR。 這些是為了跟隨車輛項目的線路,並不是PPV和RCV項目所需要的。

 

 

下圖中的車輛都是由八年級的孩子們設計和建造的,他們非常高興地將其個性化。 他們為自己所取得的成就感到自豪,並且能夠將自己的模特帶回家,向朋友和家人展示。 兒童在使用工具包時不會感到這種所有權。

 

Cost of self build models - under £10 (excluding cost of Kitronik motor board and micro:bit).

 

 

PXT Editor script:

 

 

This is a partial script for the first part of the robot's route.

 

repeat 3 [fd 200 rt 90

 

 

 

 

# Move forward(turn both motors on)

 

pin8.write_digital(1)

pin12.write_digital(0)

pin0.write_digital(1)

pin16.write_digital(0)

sleep(5000)

# Make a left turn (turn Motor 2 off)

pin8.write_digital(0)

pin12.write_digital(0)

sleep(2000)

# Move forward(turn both motors on)

pin8.write_digital(1)

pin12.write_digital(0)

pin0.write_digital(1)

pin16.write_digital(0)

sleep(5000)

# Make a left turn (turn Motor 2 off)

pin8.write_digital(0)

pin12.write_digital(0)

sleep(2000)

 

RCV

計算機控制的車輛一直是一個受小孩歡迎的項目。 無線電遙控車是一個相當簡單的項目,具有巨大的影響力。

每個車輛需要兩個micro:bits 一個用作手持控制器,另一個用於控制電機板。

在我的學校裡,所有這些車輛項目都是作為STEM項目來教授的,這些項目將對電路電力的理解與編程知識,設計和製作技能相結合。

任務:

搭建一個可以通過手持設備遠程驅動的車輛,該設備使用無線信號與車輛進行通信。

 

Micro Python script:

N.B. For the script below to access the radio module you will need to use the https://python.microbit.org beta version of the Python editor.

Press buttons a for left and AND b for right.

Hand held controller script:

from microbit import *

import radio

radio.on()

 

while True:

 

if button_a.is_pressed():

display.show(Image.ARROW_W)

radio.send('l')

sleep(50)

 

if button_b.is_pressed():

display.show(Image.ARROW_E)

radio.send('r')

sleep(50)

 

Kitronik motor board controller script:

from microbit import *

import radio

radio.on()

 

while True:

 

msgin = radio.receive()

 

if msgin == '0':

# ------turn left motor 2 off

pin8.write_digital(0)

pin12.write_digital(0)

# ------turn right motor 1 off

pin0.write_digital(0)

pin16.write_digital(0)

display.scroll("O")

sleep(50)

 

elif msgin == 'r':

# ------turn left motor 2 off

pin8.write_digital(0)

pin12.write_digital(0)

# ------turn right motor 1 on

pin0.write_digital(1)

pin16.write_digital(0)

display.show(Image.ARROW_W)

sleep(50)

 

elif msgin == 'l':

# ------turn left motor 2 on

pin8.write_digital(1)

pin12.write_digital(0)

# ------turn right motor 1 off

pin0.write_digital(0)

pin16.write_digital(0)

display.show(Image.ARROW_E)

sleep(50)

 

else:

# ---turn both motors on

pin8.write_digital(1)

pin12.write_digital(0)

pin0.write_digital(1)

pin16.write_digital(0)

display.show(Image.ARROW_N)

sleep(50)

My own pupils wanted to add two additional buttons, one to stop the vehicle and one to put the vehicle in reverse.

while True:

if pin1.read_digital() == 1:

display.scroll("O")

radio.send('o')

sleep(50)

if pin2.read_digital() == 1:

display.scroll("B")

radio.send('b')

sleep(50)

A corresponding script must be written for the motor board controller.

elif msgin == 'o':

# ------turn both motors off

pin8.write_digital(0)

pin12.write_digital(0)

pin0.write_digital(0)

pin16.write_digital(0)

display.scroll("O")

sleep(50)

elif msgin == 'b':

# ------turn both motors off

pin8.write_digital(0)

pin12.write_digital(1)

pin0.write_digital(0)

pin16.write_digital(1)

display.scroll("B")

sleep(50)

 

LFV

對無人駕駛車輛的持續研究和開發不斷有新聞價值,孩子們對這一概念非常著迷。

LFV(後續車輛)項目是一個非常簡單的方式,讓兒童能夠洞察反饋控制系統在無人駕駛車輛技術中的應用方式。

查看本頁頂部的計劃,了解有關模型構建的想法。

 

 

任務:

通過跟隨路面上繪製的線條來構建和編程能夠自行駕駛的車輛。

 

算法:

永遠重複

如果光線傳感器關閉,則關閉電機

否則打開電機

如果光電傳感器右轉,則關閉電機

否則打開電機

 

模型:

 

 

 

 

www.kitronik.co.uk/blog/bbc-microbit-line-following-buggy/

 

 

使用6伏電池組為微型電機和電機板供電。

 

左邊:

左側電機連接到電機1。

左側的LDR連接在輸入1(P1)和GND之間。

一個電阻連接到輸入1之間的P1和3V之間,以創建一個潛在的分頻器(我不會解釋KS3的潛在分頻器的功能,除非你確定他們會明白)。

 

右邊:

右側電機連接到電機2。

右側的LDR連接在輸入2(P2)和GND之間。

P2和3V之間的電阻連接到輸入2。

一個LED連接到電源為兩個LDR提供光源。

圖像顯示了LFV左側的測試台電路。

注意輸入1上的固定電阻以創建一個分壓器。

電機有一個直角200:1的齒輪箱。

LDR被指出來接收從“地面”反射的光。

測試時,將其移回黑線,並嘗試不同的高度。

當LDR安裝在機箱下時,您需要使用明亮的白色LED進行額外照明。

 

測試:

在測試時,我發現最簡單的方法是用一條貼在淺色桌面上的黑色絕緣膠帶。線條和“地面”的顏色必須有強烈的對比。

在測試期間,由於LDR的變化,LDR與線之間的距離,房間中的光線水平,LED的亮度,線條顏色和底色都將影響該值需要為模擬輸入設置。

 

這是一個很好的機會教孩子們關於校準。最佳模擬輸入值可以通過以下方式找到:

A)試用和改進 - 不斷調整輸入值並進行測試,直到LFV表現符合預期。

B)在程序中添加一個塊,以便輸出模擬輸入值。通過將車輛從一側移動到另一側,越過線路並記錄LDR在地面以及在線路上的輸入值。從這些結果中,您可以確定在控製程序中設置的最佳模擬輸入值。

C)用電位器替換固定電阻。這將允許調整靈敏度而不需要修改程序中的代碼。

D)簡單的調整可以通過在旋轉輪支架下方添加小珠來稍微提升車輛的前部或者通過將LDR上下移動一毫米或兩毫米來實現。這些都是孩子們應該為自己設計的很好的設計改進。

 

 

PXT Block Editor script:

 

The script shown below is the one used to control the LFV in the video clip above.

 

Micro Python script:

 

from microbit import *

 

while True:

if pin1.read_analog() > 950:

pin8.write_digital(0)

pin12.write_digital(0)

if pin2.read_analog() > 950:

pin0.write_digital(0)

pin16.write_digital(0)

if pin1.read_analog() < 950:

pin8.write_digital(1)

pin12.write_digital(0)

if pin2.read_analog() < 950:

pin0.write_digital(1)

pin16.write_digital(0)

 

—————

返回