Xin chào, Habr! Chúng tôi đã về nền tảng LEGO MINDSTORMS Education EV3. Mục tiêu chính của nền tảng này là học tập thông qua các ví dụ thực tế, phát triển kỹ năng STEAM và phát triển tư duy kỹ thuật. Nó có thể được sử dụng cho công việc trong phòng thí nghiệm để nghiên cứu cơ học và động lực học. Bàn thí nghiệm làm từ gạch LEGO cùng các tiện ích ghi và xử lý dữ liệu khiến các thí nghiệm trở nên thú vị và trực quan hơn, đồng thời giúp trẻ hiểu rõ hơn về vật lý. Ví dụ: sinh viên có thể thu thập dữ liệu điểm nóng chảy và sử dụng ứng dụng để sắp xếp và trình bày dưới dạng biểu đồ. Nhưng đây mới chỉ là khởi đầu: hôm nay chúng tôi sẽ cho bạn biết cách bổ sung bộ này với môi trường lập trình MicroPython và sử dụng nó để dạy về robot.

Học lập trình bằng EV3
Học sinh hiện đại muốn thấy kết quả đầy màu sắc. Đúng, họ cảm thấy nhàm chán nếu chương trình in các con số ra bảng điều khiển và họ muốn xem biểu đồ màu, sơ đồ và tạo ra các robot thực sự di chuyển và làm theo lệnh. Mã thông thường cũng có vẻ quá phức tạp đối với trẻ em, vì vậy tốt hơn hết bạn nên bắt đầu học với thứ gì đó dễ dàng hơn.
Môi trường lập trình EV3 cơ bản dựa trên ngôn ngữ đồ họa LabVIEW và cho phép bạn chỉ định các thuật toán cho robot một cách trực quan: các lệnh được trình bày dưới dạng các khối có thể kéo và kết nối.

Phương pháp này hoạt động tốt khi bạn cần hiển thị cách xây dựng thuật toán, nhưng nó không phù hợp với các chương trình có số lượng khối lớn. Khi các tình huống trở nên phức tạp hơn, cần phải chuyển sang lập trình bằng mã, nhưng trẻ em khó thực hiện được bước này.
Có một số thủ thuật ở đây, một trong số đó là để chứng tỏ rằng mã thực hiện công việc tương tự như các khối. Trong môi trường EV3, điều này có thể thực hiện được thông qua tích hợp MicroPython, vì vậy trẻ em có thể tạo cùng một chương trình trong cả môi trường lập trình khối cơ bản và Python trong Visual Studio Code của Microsoft. Họ thấy rằng cả hai phương pháp đều hoạt động giống nhau, nhưng việc giải quyết các vấn đề phức tạp bằng cách sử dụng mã sẽ thuận tiện hơn.
Chuyển sang MicroPython
Môi trường EV3 được xây dựng trên bộ xử lý ARM9 và các nhà phát triển đã cố tình để kiến trúc mở. Giải pháp này giúp có thể tung ra phần sụn thay thế, một trong số đó là hình ảnh để làm việc với MicroPython. Nó cho phép bạn sử dụng Python để lập trình EV3 của mình, đưa bộ công cụ này đến gần hơn với các tác vụ trong đời thực.
Để bắt đầu, bạn cần tải xuống trên bất kỳ thẻ nhớ microSD nào, hãy cài đặt nó vào máy vi tính EV3 và bật nó lên. Sau đó bạn cần cài đặt dành cho Visual Studio. Và bạn có thể bắt đầu làm việc.
Lập trình robot đầu tiên trong MycroPython

Trên của chúng tôi Có một số bài học để nắm vững các khái niệm cơ bản về robot. Các mô hình EV3 giới thiệu cho trẻ những kiến thức cơ bản được sử dụng trong ô tô tự lái, robot lắp ráp trong nhà máy và máy CNC.
Chúng ta sẽ lấy ví dụ về một chiếc máy vẽ, có thể được dạy để vẽ các mẫu và hình dạng hình học. Trường hợp này là phiên bản đơn giản hóa của robot hàn hoặc phay dành cho người lớn và cho thấy EV3 có thể được sử dụng kết hợp với MicroPython để dạy học sinh như thế nào. Và một chiếc máy vẽ có thể đánh dấu các lỗ trên bảng mạch in cho bố, nhưng đó lại là một cấp độ khác đòi hỏi môn toán.
Đối với công việc, chúng tôi cần:
- Bộ lõi giáo dục LEGO MINDSTORMS EV3;
- tờ giấy ca rô lớn;
- đánh dấu màu.
Việc lắp ráp robot tự nó được thực hiện , và chúng ta sẽ xem xét một ví dụ lập trình.
Đầu tiên chúng ta khởi tạo thư viện mô-đun 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
Chúng tôi thiết lập một bệ quay tay cầm giống như một động cơ ở cổng B. Chúng tôi đặt tỷ số truyền của bộ truyền bánh răng hai cấp với số răng lần lượt là 20-12-28.
turntable_motor = Motor(Port.B, Direction.CLOCKWISE, [20, 12, 28])
Chúng ta cấu hình cơ cấu nâng tay cầm như một động cơ ở cổng C:
seesaw_motor = Motor(Port.C)
Chúng tôi định cấu hình con quay hồi chuyển, đo góc nghiêng của tay cầm, ở cổng 2:
gyro_sensor = GyroSensor(Port.S2)
Chúng ta cấu hình cảm biến màu ở cổng 3. Cảm biến dùng để phát hiện giấy trắng dưới máy vẽ:
color_sensor = ColorSensor(Port.S3)
Chúng tôi định cấu hình cảm biến cảm ứng ở cổng 4. Robot bắt đầu vẽ khi nhấn cảm biến:
touch_sensor = TouchSensor(Port.S4)
Chúng tôi xác định các chức năng nâng và hạ tay cầm:
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)
Chúng ta định nghĩa một hàm để xoay tay cầm theo một góc nhất định hoặc một góc nhất định:
def pen_holder_turn_to(target_angle):
if target_angle > gyro_sensor.angle():
Nếu góc mục tiêu lớn hơn góc cảm biến con quay hồi chuyển hiện tại, hãy tiếp tục theo chiều kim đồng hồ với tốc độ dương:
turntable_motor.run(70)
while gyro_sensor.angle() < target_angle:
pass
elif target_angle < gyro_sensor.angle():
Nếu góc mục tiêu nhỏ hơn cảm biến con quay hồi chuyển hiện tại thì hãy di chuyển ngược chiều kim đồng hồ:
turntable_motor.run(-70)
while gyro_sensor.angle() > target_angle:
pass
Dừng bệ quay khi đạt đến góc mục tiêu:
turntable_motor.stop(Stop.BRAKE)
Đặt vị trí ban đầu của tay cầm ở vị trí phía trên:
pen_holder_raise()
Bây giờ đến phần chính của chương trình - một vòng lặp vô tận. Đầu tiên, EV3 đợi cảm biến màu phát hiện tờ giấy trắng hoặc hình vuông bắt đầu màu xanh và nhấn cảm biến cảm ứng. Sau đó, anh ta vẽ một mẫu, quay lại vị trí bắt đầu và lặp lại mọi thứ một lần nữa.
Khi thiết bị chưa sẵn sàng, đèn LED trên bộ điều khiển chuyển sang màu đỏ và hiển thị hình ảnh “không thích” trên màn hình LCD:
while True:
brick.light(Color.RED)
brick.display.image(ImageFile.THUMBS_DOWN)
Chúng ta đợi cho đến khi cảm biến màu đếm xanh lam hoặc trắng, đặt màu đèn LED thành xanh lục, hiển thị hình ảnh “không thích” trên màn hình LCD và báo thiết bị đã sẵn sàng sử dụng:
while color_sensor.color() not in (Color.BLUE, Color.WHITE):
wait(10)
brick.light(Color.GREEN)
brick.display.image(ImageFile.THUMBS_UP)
Chúng ta đợi cảm biến cảm ứng được nhấn, gán giá trị góc 0 cho cảm biến con quay hồi chuyển và bắt đầu vẽ:
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)
Nâng hộp đựng bút lên và đưa nó về vị trí ban đầu:
pen_holder_raise()
pen_holder_turn_to(0)</i>
Đây là chương trình đơn giản mà chúng tôi đã tạo ra. Và bây giờ chúng ta khởi chạy nó và quan sát hoạt động của rô-bốt soạn thảo.
Những ví dụ như vậy cung cấp những gì?

EV3 là công cụ hướng dẫn nghề nghiệp dành cho các ngành nghề STEM và là điểm khởi đầu cho các ngành nghề kỹ thuật. Vì nó có thể được sử dụng để giải quyết các vấn đề thực tế, trẻ em có được kinh nghiệm phát triển kỹ thuật và chế tạo robot công nghiệp, học cách mô phỏng các tình huống thực tế, hiểu chương trình và phân tích thuật toán cũng như nắm vững các cấu trúc lập trình cơ bản.
Sự hỗ trợ của MicroPython giúp nền tảng EV3 phù hợp cho việc giảng dạy ở trường trung học. Sinh viên có thể thử sức mình với tư cách là lập trình viên bằng một trong những ngôn ngữ hiện đại phổ biến nhất và làm quen với các ngành nghề liên quan đến lập trình và thiết kế kỹ thuật. Bộ công cụ EV3 cho thấy rằng việc viết mã không hề đáng sợ, giúp bạn chuẩn bị cho những thử thách kỹ thuật nghiêm trọng và giúp bạn thực hiện bước đầu tiên để thành thạo các kỹ năng kỹ thuật. Và đối với những người làm việc trong trường học và gắn liền với giáo dục, chúng tôi đã chuẩn bị và tài liệu giáo dục. Họ mô tả chi tiết những kỹ năng nào được phát triển khi thực hiện một số nhiệm vụ nhất định và những kỹ năng thu được có liên quan như thế nào đến các tiêu chuẩn đào tạo.
Nguồn: www.habr.com
