Уже лет десять периодически слышу про Arduino и Raspberry Pi. Первое — программируемый контроллер, второе — мини-компьютер с ОС Linux.
И, если мини-компьютер мне совершенно не интересен, поскольку с компьютерами общаюсь уже лет двадцать, то контроллер очень даже интересная штука. Запах канифоли, нагретый паяльник связанный должник, припой ПОС-61 — вот это всё будоражит воображение и радует глаз. Плюс к этому контроллер Arduino программируемый на некоем подобии C++.
С детства мечтал соединить опыт программирования с железом. Последнее и единственное, что сотворил такого рода — коробка с двумя кнопками, которая подключалась к COM порту компьютера, где специальная программа отслеживала нажатия кнопок и выполняла некоторый функционал: включала немедленный автодозвон до BBS, отключала/включала модем. Славные были деньки в коммуналке, мать их.
Так что, насмотревшись в интернете разных уроков по Arduino, купил базовый набор для обучения. В набор входят:
- резисторы 10 кОм
- резисторы 220 Ом
- потенциометр (по-нашему, крутилка)
- фоторезистор (определяет освещенность)
- датчик температуры
- светодиоды синие, красные и зелёные
- светодиод RGB (может светиться любым цветом)
- кнопочки
- проводочки
- макетная плата (для пробы своих задумок перед пайкой)
- плата Arduino Uno с проводом USB для подключения к компьютеру
- книга с экспериментами для самых маленьких (7 экспериментов), как я
- книга с основами и экспериментами для детей постарше
Плата работает с частотой 16MHz и это охренительно круто! С такой скоростью мне работать ещё не приходилось. Каких-то жалких 16 миллионов операций в секунду, оперативная память в 2048 байт, медленная работа с плавающей запятой, тормозные тригонометрические функции — это прекрасно, если вы понимаете о чём я.
Если не понимаете, то ваш мобильник, к примеру, работает с частотой около двух миллиардов операций в секунду на четырёх ядрах с поддержкой быстрой работы с плавающей запятой и оперативной памятью в 32 миллиарда байт. Даже не зная математики, можно почувствовать разницу. И вы используете эту мощь, чтобы в Инстаграм улыбальник фильтрами поправлять. Человечество стремительно тупеет.
Сама по себе плата умеет немного: принимать напряжение 5 вольт, выдавать это напряжение и, в принципе, всё. Выдавать напряжение может в цифровом виде: нет напряжения, есть напряжение и в аналоговом: выдать напряжение от нуля до пяти вольт. Читать умеет тоже в цифровом и аналоговом виде.
Цифровых разъёмов 13 штук, аналоговых 6 штук. Плюс разъёмы питания 3.3 и 5 вольт и земля GND.
Казалось бы — ерунда, а нет! На некоторых разъёмах плата умеет выдавать ШИМ сигнал. Это скачки цифрового сигнала много-много раз в секунду. Этим сигналом управляются двигатели, насколько я понял. Ещё можно динамик подключить и пиликать в него.
Энтузиасты сотворили мини-игровую консоль с экраном, называется Arduboy.
В общем, полёт фантазии не ограничен.
Мой полёт пока остановился на мигании RGB светодиодом и это отлично хотя бы потому, что я не спалил плату, как однажды спалил жёсткий диск, подключив питание вверх ногами, хотя разъем специально сделан такой формы, чтобы нельзя воткнуть его иначе. Но хитрость, сила и глупость всегда побеждают в борьбе с разумом и интеллектом.
Пока не понял — зачем повсюду втыкать резисторы: для кнопки и светодиода, но со временем до меня дойдёт.
Зато понял, что цифровые порты без значка тильды «~» не поддерживают комманду analogWrite()
, как положено.
Кстати, сразу вопрос: почему все порты не сделаны, как цифровые с поддержкой analogRead()
и analogWrite()
? Это сильно упростило бы работу с платой на мой непрофессиональный взгляд.
Плата может брать питание из трёх мест: по разьёму USB, с отдельного входа, с двух штырьков. Подключать все три входа одновременно, наверно, плохая идея.
Программируется через USB заливкой прошивки с помощью Arduino IDE.
Прошивка содержит две функции:
setup()
выполняется один раз при включении платы или после resetloop()
бесконечный цикл во время работы
В первой функции устанавливаем режим работы пинов: вход или выход, вешаем прерывания, открываем порт для отладки, во второй читаем данные и пишем.
Отдельно хочу обратить внимание на прерывания: они позволяют задействовать режим энергосбережения, что полезно при работе от батареек. Прерывание срабатывает по определённым событиям: появился сигнал, исчез сигнал. При наступлении этого события происходит вызов вашей функции, а выполнение loop()
приостанавливается. В режиме энергосбережения плата может прожить шесть лет на батарейках без учёта саморазряда.
Эту информацию и всё вышенаписанное я подчерпнул с канала AlexGyver, за что ему огромное спасибо! Чувак, мой тебе респект, ты молодец, я теперь твой фанат.
А ещё я потрогал резистор щупом мультиметра и обнаружил сопротивление в 220 Ом, как и ожидалось. Здорово, правда?
Функционал Arduino бесконечный, потому что она управляющая, а остальное делают различные внешние платы, например, реле, которое может управлять контактом, через который проходит 220 Вольт. По сигналу с Arduino реле замыкает или размыкает эту цепь.
Теперь самое интересное: цены.
Свой набор Arduino Uno с двумя книжками и прочим барахлишком я купил в магазине КЕЙ за 2790 рублей. Просто потому, что хотел всё, сразу и сейчас. Отдельно плата Arduino Uno в Чип&Дип стоит 2270 рублей. У китайцев аналог этой платы стоит от 200 рублей. Оригинальная версия от создателей обойдется вам в €28. Чувствуете некоторый разброс цен?
На мой дилетанский взгляд, покупать Arduino нужно у создателей, а разные реле и платы у китайцев. Просто потому, что создатели этого заслуживают.
Когда внезапно разбогатею (как раз после выплаты ипотеки), то планирую купить набор у создателей в районе 10-15 тысяч рублей, просто в качестве благодарности за их труд.