"Не в железе сила, а в знании" — можно сказать в наши дни)
Сейчас электроника и робототехника стала намного доступнее чем была раньше — появился выбор, уменьшился порог вхождения. Но без знаний как это работает, и как с этим работать — эта электроника и останется лишь "железом" (и как это бывает — наборы бывает лежат без дела). Знания получить намного сложнее, на базе личного опыта, практики.
Поэтому курсы для начинающих — так ценятся. Есть платные и бесплатные курсы — но обеспечить актуальность, сопровождение курса, совместимость с железом и обратную связь — это не просто дело, тем более найти на русском языке.
Про один из таких онлайн-курсов мы хотим вам рассказать — "Строим роботов и другие устройства на Arduino. От светофора до 3D-принтера". Курс разработан совместно компанией Киберфизика и МФТИ (Московский физико-технический институт). Учебные текстовые и видео материалы размещены бесплатно на Coursera. Курс разбит на 6 частей (каждая по недели), и для каждой части — высылается соответствующее железо.
Рассказывать всегда лучше на базе своего опыта, поэтому про курс и впечатления, будем рассказывать "в реальном времени" по мере прохождения. Делиться впечатлениями будет один из участников нашего хакспейса.
Неделя 1
Всем привет! Меня зовут Антон, и я хочу вам рассказать в шестинедельном цикле публикаций об опыте участия в онлайн-курсе от МФТИ.
Небольшое предисловие. Мое образование и текущая работа связаны с ИТ. Познания в электронике и схемотехнике заканчиваются университетским курсом электроники. Изредка пользуюсь паяльником, могу провести несложные расчеты для какой-нибудь схемы.
Опыта программирования для Arduino как такового нет. Скрипты пишу в основном на Python и Bash, с C-подобным синтаксисом знаком по языкам PHP и JavaScript. На самом C не было опыта написания программ.
После написания мной и братом обзора трех наборов по электронике для детей, представитель проекта “Киберфизика” предложил пройти онлайн-курс “Строим роботов и другие устройства на Arduino” на сайте Coursera. Поскольку ранее я проходил несколько курсов (не связанных с ИТ) на платформе, я предположил, что материал будет тривиальным и простеньким, как в большинстве вводных курсов на платформе Coursera, или на уровне заданий из методичек аналогичных электронных наборов. Но, как оказалось, это было заблуждением. Сами создатели позиционируют курс как введение в робототехнику для студентов и старшеклассников, где обучающиеся узнают, что такое роботы и другие “умные” устройства, как они взаимодействуют со внешним миром, как взаимодействуют с человеком и, самое главное, как научиться создавать такие устройства самому.
Интересно заметить, что по словам авторов курса две трети аудитории, а это 13,5 тысяч человек, люди в возрасте от 25 до 45 лет! И можно понять, почему: список тем достаточно широк — от простейших датчиков и “мигалок” до устройства 3D-принтера, и все это подкреплено необходимой теорией, например, устройство и параметры электрических цепей, виды и параметры сигналов и т. д… При этом материал изложен простым и доступным языком. После прохождения первой недели для меня не стало новостью также и то, что средняя оценка курса составляет 4,9 из 5 баллов.
Поскольку обучение нацелено в первую очередь на практическое решение задач, для первых недель авторы курса предоставили мне набор “Киберфизики” Роботы и устройства. Старт+.
Внутри нас встречает буклет с описанием набора и платы Нейтрино.
Сразу после буклета лежит сама плата Нейтрино, которая является аналогом Arduino Uno, но одна вещь сразу обращает на себя внимание — на плате находятся 20 трехпиновых выводов для подключения разнообразных датчиков. Меня это искренне порадовало, так как для других плат, которые видел ранее, необходимо было устанавливать дополнительный шилд, чтобы подключать периферию.
Внутри все разложено по маленьким коробочкам. Все пакетики с содержимым подписаны.
В комплект положили также странное устройство с трубкой. После быстрого поиска в интернете это оказался погружной насос, который, судя по всему, будет использоваться на следующих неделях занятий.
Еще, как мне подсказали авторы курса (и о чем написано в буклете :)), лоточек из-под платы можно также задействовать — собирать в нем схемы и хранить “рассыпуху”, чтобы между занятиями детали никуда не убежали. Я узнал об этом уже после окончания первой недели, но, надеюсь, в будущем оценю пользу лотка.
Теперь поговорим о самом курсе. Он длится шесть недель. Первые три недели оцениваются с помощью тестов, а на четвертой и последующих неделях можно выполнить дополнительное задание и отправить на оценку сокурсникам.
В уроках первой недели преподаватель вначале рассказывал основы схемотехники, затем постепенно собирал и дорабатывал модель светофора, как в графической среде Fritzing, так и на настоящей плате. Вначале был собран светофор с ручным управлением и постепенно превращен в автоматический с помощью Arduino. Попутно были рассказаны основы языка программирования для среды Arduino.
Стоит отметить, что, несмотря на небольшой размер, видеолекции очень содержательны, что безусловно радует. Вот примерный перечень тем первой недели, которые я для себя отметил:
- Принцип работы и устройство макетной платы
- Устройство простейшей электрической цепи. Электрический ток. Светодиоды
- Способы представления электронных схем. Принципиальные схемы, графические схемы в среде Fritzing
- Измерение параметров электрической цепи. Ток, напряжение, сопротивление
- Платы Arduino и разновидности. Среда Arduino IDE
- Основы программирования в среде Arduino IDE. Переменные, макроопределения, циклы
В заключении первой недели я честно сдал с первого раза тест с 80% правильных ответов, допустив 4 ошибки, из которых одна была из-за незнания матчасти (выводы светодиода и правило подключения его к схеме), остальные допустил по причине невнимательности. Со второй попытки удалось пройти тест лишь с одной ошибкой :)
В качестве практики я также решил попробовать собрать светофор. Поскольку повторять упражнение один в один мне показалось немного скучно, я сразу же решил собрать два светофора, которые имитируют работу перекрестка.
Программу написал грубо и «в лоб», но работает ровно так, как я и задумывал. Честно попробовал переписать код и сделать красиво — с массивами и функциями, но сразу же сказалось незнание языка C – например, я так и не смог разобраться за несколько минут, как создать многомерные массивы и заполнить их значениями на языке C. Судя по учебному плану, эти темы будут рассказаны на третьей неделе, поэтому решил не забегать вперед и спокойно продолжать заниматься по учебной программе.
#define PIN_1_G 1
#define PIN_1_Y 2
#define PIN_1_R 3
#define PIN_2_G 4
#define PIN_2_Y 5
#define PIN_2_R 6
int green_on = 5000;
int red_on = 5000;
void setup() {
pinMode(PIN_1_G, OUTPUT);
pinMode(PIN_1_Y, OUTPUT);
pinMode(PIN_1_R, OUTPUT);
pinMode(PIN_2_G, OUTPUT);
pinMode(PIN_2_Y, OUTPUT);
pinMode(PIN_2_R, OUTPUT);
digitalWrite(PIN_1_G, LOW);
digitalWrite(PIN_1_Y, LOW);
digitalWrite(PIN_1_R, HIGH);
digitalWrite(PIN_2_G, HIGH);
digitalWrite(PIN_2_Y, LOW);
digitalWrite(PIN_2_R, LOW);
}
void loop() {
delay(green_on);
for (int i = 0; i < 3; i++)
{
digitalWrite(PIN_2_G, LOW);
delay(500);
digitalWrite(PIN_2_G, HIGH);
delay(500);
}
digitalWrite(PIN_2_G, LOW);
digitalWrite(PIN_2_Y, HIGH);
delay(2000);
digitalWrite(PIN_2_Y, LOW);
digitalWrite(PIN_2_R, HIGH);
delay(1500);
digitalWrite(PIN_1_Y, HIGH);
delay(2000);
digitalWrite(PIN_1_Y, LOW);
digitalWrite(PIN_1_R, LOW);
digitalWrite(PIN_1_G, HIGH);
delay(green_on);
for (int i = 0; i < 3; i++)
{
digitalWrite(PIN_1_G, LOW);
delay(500);
digitalWrite(PIN_1_G, HIGH);
delay(500);
}
digitalWrite(PIN_1_G, LOW);
digitalWrite(PIN_1_Y, HIGH);
delay(2000);
digitalWrite(PIN_1_Y, LOW);
digitalWrite(PIN_1_R, HIGH);
delay(1500);
digitalWrite(PIN_2_Y, HIGH);
delay(2000);
digitalWrite(PIN_2_Y, LOW);
digitalWrite(PIN_2_R, LOW);
digitalWrite(PIN_2_G, HIGH);
}
Запись на курс
С 27 марта открыта запись на курс: Строим роботов и другие устройства на Arduino. От светофора до 3D-принтера
Автор: MakeItLab