Источник вдохновения — робот крокодил из набора LEGO Education 9580 WeDo.
Робот ждёт с открытой пастью, если в неё засунуть какой-то предмет — закрывает пасть.
Наш вариант робота сильно отличается от WeDo, но основная мысль близкая: робот собирается вместе с ребёнком, ему должно быть интересно и в процессе ребёнок получит полезные знания и навыки:
- конструирование и творчество (cборка крокодила из кирпичиков Lego)
- механника: передача движения от мотора к челюсти крокодила.
- электричество : полярность, ток, проводники.
- знакомство с элементами роботостроения: контроллер, датчик, мотор.
- геометрия: угол, мера угла (для работы с сервоприводом)
- программирование (создание программы в блочном виде и загрузка её в Ардуино)
При создании робота использовались:
- Arduino Uno
- Сервопривод SG-90
- Датчик линии
- Батарейка (от 7 до 12В)
- Тумблер — выключатель
- Кирпичики Lego
Программное обеспечение:
- Arduino IDE
- Плагин Ardublock (плагин блочного программирования для Arduino)
- Сайт code.org (для обучения базовым навыкам программирования)
1. Конструируем тело крокодила с открывающимся ртом.
2. Добавляем в конструкцию датчик и мотор.
В качестве датчика присутствия использован датчик линии, т.к. он довольно распространён, к тому же он у меня был, чувствительности его хватило для этой задачи, плюс встроеная подсветка делает крокодила интересней. Выбором места размещения датчика и ширины открытия пасти подбираем оптимальный вариант срабатывания датчика (для проверки достаточно лишь запитать датчик — при срабатывании загорается светодиод на датчике).
Датчик просто зажат между деталями лего, и держится на своем месте.
Сервоприод SG-90 я приклеил суперклеем к пластинке лего, теперь он лего-совместимый.
3. Собираем корпус контроллера
Наружу выводим выключатель и делаем прозрачное окно, для того чтобы при включении питания было видно подсветку Arduino.
Батарейку подключаем к +Vin и GND, тумблер устанавливаем в разрыв плюсового провода.
Датчик подключаем к +5V, GND и входу «8».
Сервопривод SG-90 тоже подключим к внутреннему питанию, он маломощный и преобразователя на плате Arduino будет достаточно чтобы его прокормить: +5V, GND и выход «9».
5. Пишем программу
Нужно объяснить ребёнку что такое программирование. Для начала хорошы игры на составление и выполнение алгоритмов вроде «управление папой-роботом» и наоборот «ребёнок-робот». Дальше мы использовали сайт code.org (замечательный проект, всем советую) для обучения блочному программированию.
Затем прицепляем к Arduino IDE плагин Ardublock и ребёнок(с вашей помощью) пишет программу в привычном блочном виде. О плагине Ардублок я узнал из статьи на Гиктаймс. У меня получилось некоторое расхождение с данными автора при установке: файл плагина ardublock-all.jar нужно было поместить не в Документы, а в место установки Ардуино (Program Files (x86)\Arduino\tools\ArduBlockTool\tool\), файл переименовывать не обязательно.
Вот простейший вариант программы:
Рот у нашего крокодила открывается на 100 градусов, а закрывается в ноль. Задержка нужна потому что сервопривод срабатывает не мгновенно.
Отправляя алгоритм в ардуино получаем такой скетч:
#include <Servo.h> Servo servo_pin_9; void setup() { pinMode( 8 , INPUT); servo_pin_9.attach(9); servo_pin_9.write( 100 ); delay( 1000 ); } void loop() { if (digitalRead(8)) { servo_pin_9.write( 0 ); delay( 1000 ); servo_pin_9.write( 100 ); delay( 1000 ); } }
6. Готово.
Играем. Пишем другие версии алгоритма поведения крокодила.
Ниже на видео демострация работы робота в одной из вариаций.