你好,Habr!我們已經 關於 LEGO MINDSTORMS Education EV3 平台。該平台的主要目標是透過實際案例學習,培養STEAM技能並形成工程思維。它可用於研究力學和動力學的實驗室工作。由樂高積木製成的實驗室支架以及用於記錄和處理數據的工具使實驗更加有趣和直觀,並幫助孩子們更好地理解物理。例如,小學生可以收集熔點數據,並使用該應用程式將其組織並以圖表形式呈現。但這只是個開始:今天我們將向您展示如何使用 MicroPython 程式環境擴展該套件並使用它來教授機器人技術。

使用 EV3 學習編程
現代的小學生希望看到豐富多彩的成果。是的,如果程式將數字列印到控制台,他們會感到無聊,他們想查看豐富多彩的圖形、圖表,並創建能夠移動和遵循命令的真實機器人。常規程式碼對孩子來說似乎也太複雜了,所以最好從一些比較簡單的程式碼開始學習。
EV3 基本程式設計環境基於 LabVIEW 圖形化語言,讓您以視覺化的方式為機器人設定演算法:命令以可拖曳和連接的區塊的形式呈現。

當你需要展示演算法是如何建構的時候,這種方法很有效,但它不適合具有大量區塊的程式。隨著場景變得越來越複雜,就需要使用程式碼進行編程,但這一步對孩子來說很困難。
這裡有幾個技巧,其中之一就是展示程式碼與區塊執行相同的操作。 EV3 環境透過與 MicroPython 的整合實現了這一點:孩子們在基於基本區塊的程式設計環境和 Microsoft 的 Visual Studio Code 中的 Python 中創建相同的程式。他們認為兩種方法的工作方式相同,但程式碼更方便解決複雜問題。
切換到 MicroPython
EV3 環境建立在 ARM9 處理器上,開發人員刻意將架構保持開放。該解決方案使我們能夠推出替代固件,其中一個是用於與 MicroPython 配合使用的映像。它允許您使用 Python 對 EV3 進行編程,使得該套件的使用更加貼近實際任務。
要開始工作,您需要下載 到任何 microSD 卡,將其安裝到 EV3 程式區塊中並開啟。然後你需要安裝 對於 Visual Studio。然後你就可以開始工作了。
使用 MycroPython 編寫第一個機器人

在我們的 有幾堂課程可以幫助你掌握機器人技術的基本概念。 EV3 模型向孩子介紹自動駕駛汽車、工廠組裝機器人和CNC工具機的基礎知識。
我們將以一台可以教它繪製圖案和幾何形狀的繪圖機為例。這個案例是成人機器人焊接機或銑床的簡化版本,展示如何將 EV3 與 MicroPython 一起使用來教導小學生。而且繪圖機還可以幫爸爸在印刷電路板上打孔,不過那又是另一個層次的,需要數學計算。
為了工作我們需要:
- LEGO MINDSTORMS Education EV3 基礎套裝;
- 一大張方格紙;
- 彩色標記。
機器人本身的組裝是在 ,我們來看一個程式設計範例。
首先,讓我們初始化 EV3 程式塊庫:
#!/usr/bin/env pybricks-micropython
from pybricks import ev3brick as brick
from pybricks.ev3devices import (Motor, TouchSensor, ColorSensor, GyroSensor)
from pybricks.parameters import Port, Stop, Direction, Color, ImageFile
from pybricks.tools import wait
我們在B口設定了作為電動馬達轉動把手的平台,設定兩級齒輪傳動的傳動比,齒數分別為20-12-28。
turntable_motor = Motor(Port.B, Direction.CLOCKWISE, [20, 12, 28])
我們將手把的升降機構設定為 C 埠中的馬達:
seesaw_motor = Motor(Port.C)
我們在連接埠2設置了測量搖桿傾斜角度的陀螺儀:
gyro_sensor = GyroSensor(Port.S2)
我們在連接埠3設置了顏色感測器,該感測器用於檢測繪圖機下面的白紙:
color_sensor = ColorSensor(Port.S3)
我們在連接埠 4 設定了觸控感應器。當按下感測器時,機器人開始繪圖:
touch_sensor = TouchSensor(Port.S4)
我們定義抬起和放下手柄的函數:
def pen_holder_raise():
seesaw_motor.run_target(50, 25, Stop.HOLD)
wait(1000)
def pen_holder_lower():
seesaw_motor.run_target(50, 0, Stop.HOLD)
wait(1000)
我們定義一個函數來將手柄旋轉給定角度或某個角度:
def pen_holder_turn_to(target_angle):
if target_angle > gyro_sensor.angle():
如果目標角度大於目前陀螺儀感測器角度,則繼續以正速度順時針移動:
turntable_motor.run(70)
while gyro_sensor.angle() < target_angle:
pass
elif target_angle < gyro_sensor.angle():
如果目標角度小於目前陀螺儀感測器角度,則我們逆時針移動:
turntable_motor.run(-70)
while gyro_sensor.angle() > target_angle:
pass
達到目標角度後停止旋轉平台:
turntable_motor.stop(Stop.BRAKE)
我們將手柄的初始位置設定為上方位置:
pen_holder_raise()
現在到了程式的主要部分——無限循環。首先,EV3 等待顏色感測器偵測到白紙或藍色起始方塊,並等待觸控感應器被按下。然後他畫出一個圖案,回到起始位置並再次重複所有動作。
當裝置未準備好時,控制器上的 LED 變為紅色,並且在 LCD 螢幕上顯示「拇指向下」圖示:
while True:
brick.light(Color.RED)
brick.display.image(ImageFile.THUMBS_DOWN)
我們等到顏色感測器偵測到藍色或白色,將 LED 的顏色設為綠色,在 LCD 螢幕上顯示「豎起大拇指」影像並報告裝置已準備好運作:
while color_sensor.color() not in (Color.BLUE, Color.WHITE):
wait(10)
brick.light(Color.GREEN)
brick.display.image(ImageFile.THUMBS_UP)
我們等待觸控感應器被按下,為陀螺儀感應器分配一個角度值 0 並開始繪製:
while not touch_sensor.pressed():
wait(10)
gyro_sensor.reset_angle(0)
pen_holder_turn_to(15)
pen_holder_lower()
pen_holder_turn_to(30)
pen_holder_raise()
pen_holder_turn_to(45)
pen_holder_lower()
pen_holder_turn_to(60)
我們將筆筒抬起,放回原位:
pen_holder_raise()
pen_holder_turn_to(0)</i>
這是我們得到的簡單程序。現在我們啟動它並觀察機器人繪圖員的實際操作。
這樣的例子說明了什麼?

EV3 是 STEM 職業的職業指導工具,也是進入工程領域的切入點。由於它可以解決實際問題,孩子們可以獲得技術開發和工業機器人創造的經驗,學會模擬真實情況,理解程式和分析演算法,並掌握基本的程式結構。
MicroPython 支援使 EV3 平台適合高中教育。學生可以嘗試成為最受歡迎的現代語言之一的程式設計師,並熟悉與程式設計和工程設計相關的職業。 EV3 套件顯示編碼並不可怕,可以讓孩子們做好應對嚴峻的工程挑戰的準備,並幫助他們邁出掌握技術專業知識的第一步。對於那些在學校工作並與教育相關的人,我們準備好了 和教學材料。它們詳細描述了在執行某些任務時會發展哪些技能,以及所獲得的技能與學習標準之間的關係。
來源: www.habr.com
