Hello, Habr! Kami sudah tentang platform LEGO MINDSTORMS Education EV3. Objektif utama platform ini adalah belajar melalui contoh praktikal, membangunkan kemahiran STEAM dan membangunkan minda kejuruteraan. Ia boleh digunakan untuk kerja makmal untuk mengkaji mekanik dan dinamik. Bangku makmal yang diperbuat daripada bata LEGO dan utiliti untuk merekod dan memproses data menjadikan eksperimen lebih menarik dan visual serta membantu kanak-kanak lebih memahami fizik. Sebagai contoh, pelajar boleh mengumpul data takat lebur dan menggunakan aplikasi untuk menyusunnya dan membentangkannya dalam graf. Tetapi ini hanyalah permulaan: hari ini kami akan memberitahu anda cara melengkapkan set ini dengan persekitaran pengaturcaraan MicroPython dan menggunakannya untuk mengajar robotik.

Belajar pengaturcaraan menggunakan EV3
Kanak-kanak sekolah moden ingin melihat hasil yang berwarna-warni. Ya, mereka bosan jika program mencetak nombor ke konsol, dan mereka mahu melihat graf berwarna, gambar rajah dan mencipta robot sebenar yang bergerak dan mengikut arahan. Kod biasa juga kelihatan terlalu rumit untuk kanak-kanak, jadi adalah lebih baik untuk mula belajar dengan sesuatu yang lebih mudah.
Persekitaran pengaturcaraan asas EV3 adalah berdasarkan bahasa grafik LabVIEW dan membolehkan anda menentukan algoritma untuk robot secara visual: arahan dibentangkan dalam bentuk blok yang boleh diseret dan disambungkan.

Kaedah ini berfungsi dengan baik apabila anda perlu menunjukkan cara algoritma dibina, tetapi ia tidak sesuai untuk program dengan bilangan blok yang besar. Apabila senario menjadi lebih kompleks, adalah perlu untuk beralih kepada pengaturcaraan dengan kod, tetapi langkah ini sukar untuk diambil oleh kanak-kanak.
Terdapat beberapa helah di sini, salah satunya adalah untuk menunjukkan bahawa kod melakukan perkara yang sama seperti blok. Dalam persekitaran EV3, ini boleh dilakukan melalui penyepaduan MicroPython, jadi kanak-kanak boleh mencipta program yang sama dalam kedua-dua persekitaran pengaturcaraan blok asas dan Python dalam Kod Visual Studio Microsoft. Mereka melihat bahawa kedua-dua kaedah berfungsi sama, tetapi menyelesaikan masalah kompleks menggunakan kod adalah lebih mudah.
Bertukar kepada MicroPython
Persekitaran EV3 dibina pada pemproses ARM9, dan pembangun dengan sengaja membiarkan seni bina terbuka. Penyelesaian ini memungkinkan untuk melancarkan perisian tegar alternatif, salah satunya ialah imej untuk bekerja dengan MicroPython. Ia membolehkan anda menggunakan Python untuk memprogramkan EV3 anda, membawa kit lebih dekat dengan tugasan sebenar.
Untuk bermula, anda perlu memuat turun pada mana-mana kad mikroSD, pasangkannya dalam mikrokomputer EV3 dan hidupkannya. Kemudian anda perlu memasang untuk Visual Studio. Dan anda boleh mula bekerja.
Memprogramkan robot pertama dalam MycroPython

Pada kami Terdapat beberapa pelajaran untuk menguasai konsep asas robotik. Model EV3 memperkenalkan kanak-kanak kepada asas yang digunakan dalam kereta pandu sendiri, robot pemasangan kilang dan mesin CNC.
Kami akan mengambil contoh mesin lukisan, yang boleh diajar untuk melukis corak dan bentuk geometri. Kes ini ialah versi ringkas robot kimpalan atau pengilangan dewasa dan menunjukkan cara EV3 boleh digunakan bersama dengan MicroPython untuk mengajar murid sekolah. Dan mesin lukisan boleh menandakan lubang pada papan litar bercetak untuk ayah, tetapi itu satu lagi tahap yang memerlukan matematik.
Untuk kerja kita perlukan:
- Set Teras LEGO MINDSTORMS Education EV3;
- helaian besar kertas berkotak-kotak;
- penanda berwarna.
Pemasangan robot itu sendiri ada , dan kita akan melihat contoh pengaturcaraan.
Mula-mula kita memulakan perpustakaan modul 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
Kami menyediakan platform yang memutarkan pemegang seperti motor di port B. Kami menetapkan nisbah gear bagi kereta api gear dua peringkat dengan bilangan gigi 20-12-28, masing-masing.
turntable_motor = Motor(Port.B, Direction.CLOCKWISE, [20, 12, 28])
Kami mengkonfigurasi mekanisme mengangkat untuk pemegang sebagai motor di port C:
seesaw_motor = Motor(Port.C)
Kami mengkonfigurasi giroskop, yang mengukur sudut kecondongan pemegang, dalam port 2:
gyro_sensor = GyroSensor(Port.S2)
Kami mengkonfigurasi penderia warna dalam port 3. Penderia digunakan untuk mengesan kertas putih di bawah mesin lukisan:
color_sensor = ColorSensor(Port.S3)
Kami mengkonfigurasi penderia sentuh dalam port 4. Robot mula melukis apabila penderia ditekan:
touch_sensor = TouchSensor(Port.S4)
Kami mentakrifkan fungsi yang menaikkan dan menurunkan pemegang:
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)
Kami mentakrifkan fungsi untuk memutarkan pemegang ke sudut tertentu atau ke sudut tertentu:
def pen_holder_turn_to(target_angle):
if target_angle > gyro_sensor.angle():
Jika sudut sasaran lebih besar daripada sudut sensor giro semasa, teruskan mengikut arah jam dengan kelajuan positif:
turntable_motor.run(70)
while gyro_sensor.angle() < target_angle:
pass
elif target_angle < gyro_sensor.angle():
Jika sudut sasaran kurang daripada penderia giro semasa, kemudian gerakkan lawan jam:
turntable_motor.run(-70)
while gyro_sensor.angle() > target_angle:
pass
Hentikan platform berputar apabila sudut sasaran dicapai:
turntable_motor.stop(Stop.BRAKE)
Tetapkan kedudukan awal pemegang di kedudukan atas:
pen_holder_raise()
Kini datang bahagian utama program - gelung yang tidak berkesudahan. EV3 mula-mula menunggu penderia warna mengesan kertas putih atau petak permulaan biru dan untuk penderia sentuh ditekan. Kemudian dia melukis corak, kembali ke kedudukan permulaan dan mengulangi semuanya lagi.
Apabila peranti tidak bersedia, LED pada pengawal bertukar menjadi merah dan imej "ibu jari ke bawah" dipaparkan pada skrin LCD:
while True:
brick.light(Color.RED)
brick.display.image(ImageFile.THUMBS_DOWN)
Kami menunggu sehingga penderia warna mengira biru atau putih, tetapkan warna LED kepada hijau, paparkan imej "jempol ke atas" pada skrin LCD dan laporkan bahawa peranti sedia untuk digunakan:
while color_sensor.color() not in (Color.BLUE, Color.WHITE):
wait(10)
brick.light(Color.GREEN)
brick.display.image(ImageFile.THUMBS_UP)
Kami menunggu sensor sentuh ditekan, tetapkan nilai sudut 0 kepada sensor giroskopik dan mula melukis:
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)
Angkat pemegang pen dan kembalikan ke kedudukan asalnya:
pen_holder_raise()
pen_holder_turn_to(0)</i>
Ini adalah program mudah yang kami buat. Dan kini kami melancarkannya dan melihat robot penggubalan dalam tindakan.
Apakah yang diberikan oleh contoh sedemikian?

EV3 ialah alat panduan kerjaya untuk kerjaya STEM dan titik masuk ke dalam kerjaya kejuruteraan. Memandangkan ia boleh digunakan untuk menyelesaikan masalah praktikal, kanak-kanak memperoleh pengalaman dalam pembangunan teknikal dan penciptaan robot industri, belajar mensimulasikan situasi sebenar, memahami program dan menganalisis algoritma, dan menguasai pembinaan pengaturcaraan asas.
Sokongan MicroPython menjadikan platform EV3 sesuai untuk pengajaran sekolah menengah. Pelajar boleh mencuba diri mereka sebagai pengaturcara dalam salah satu bahasa moden yang paling popular, dan berkenalan dengan profesion yang berkaitan dengan pengaturcaraan dan reka bentuk kejuruteraan. Kit EV3 menunjukkan bahawa pengekodan tidak menakutkan, menyediakan anda untuk cabaran kejuruteraan yang serius dan membantu anda mengambil langkah pertama ke arah menguasai kemahiran teknikal. Dan bagi mereka yang bekerja di sekolah dan dikaitkan dengan pendidikan, kami telah menyediakan dan bahan pendidikan. Mereka menerangkan secara terperinci apakah kemahiran yang dibangunkan semasa melaksanakan tugas tertentu, dan bagaimana kemahiran yang diperoleh berkaitan dengan standard latihan.
Sumber: www.habr.com
