A-A-Arduino Uno и базовый набор

Уже лет десять периодически слышу про Arduino и Raspberry Pi. Первое — программируемый контроллер, второе — мини-компьютер с ОС Linux.

И, если мини-компьютер мне совершенно не интересен, поскольку с компьютерами общаюсь уже лет двадцать, то контроллер очень даже интересная штука. Запах канифоли, нагретый паяльник связанный должник, припой ПОС-61 — вот это всё будоражит воображение и радует глаз. Плюс к этому контроллер Arduino программируемый на некоем подобии C++.

С детства мечтал соединить опыт программирования с железом. Последнее и единственное, что сотворил такого рода — коробка с двумя кнопками, которая подключалась к COM порту компьютера, где специальная программа отслеживала нажатия кнопок и выполняла некоторый функционал: включала немедленный автодозвон до BBS, отключала/включала модем. Славные были деньки в коммуналке, мать их.

Arduino Uno + Базовый набор

Так что, насмотревшись в интернете разных уроков по Arduino, купил базовый набор для обучения. В набор входят:

  • резисторы 10 кОм
  • резисторы 220 Ом
  • потенциометр (по-нашему, крутилка)
  • фоторезистор (определяет освещенность)
  • датчик температуры
  • светодиоды синие, красные и зелёные
  • светодиод RGB (может светиться любым цветом)
  • кнопочки
  • проводочки
  • макетная плата (для пробы своих задумок перед пайкой)
  • плата Arduino Uno с проводом USB для подключения к компьютеру
  • книга с экспериментами для самых маленьких (7 экспериментов), как я
  • книга с основами и экспериментами для детей постарше

Arduino Uno + Базовый набор

Плата работает с частотой 16MHz и это охренительно круто! С такой скоростью мне работать ещё не приходилось. Каких-то жалких 16 миллионов операций в секунду, оперативная память в 2048 байт, медленная работа с плавающей запятой, тормозные тригонометрические функции — это прекрасно, если вы понимаете о чём я.

Если не понимаете, то ваш мобильник, к примеру, работает с частотой около двух миллиардов операций в секунду на четырёх ядрах с поддержкой быстрой работы с плавающей запятой и оперативной памятью в 32 миллиарда байт. Даже не зная математики, можно почувствовать разницу. И вы используете эту мощь, чтобы в Инстаграм улыбальник фильтрами поправлять. Человечество стремительно тупеет.

Сама по себе плата умеет немного: принимать напряжение 5 вольт, выдавать это напряжение и, в принципе, всё. Выдавать напряжение может в цифровом виде: нет напряжения, есть напряжение и в аналоговом: выдать напряжение от нуля до пяти вольт. Читать умеет тоже в цифровом и аналоговом виде.

Цифровых разъёмов 13 штук, аналоговых 6 штук. Плюс разъёмы питания 3.3 и 5 вольт и земля GND.

Казалось бы — ерунда, а нет! На некоторых разъёмах плата умеет выдавать ШИМ сигнал. Это скачки цифрового сигнала много-много раз в секунду. Этим сигналом управляются двигатели, насколько я понял. Ещё можно динамик подключить и пиликать в него.

Энтузиасты сотворили мини-игровую консоль с экраном, называется Arduboy.

В общем, полёт фантазии не ограничен.

Мой полёт пока остановился на мигании RGB светодиодом и это отлично хотя бы потому, что я не спалил плату, как однажды спалил жёсткий диск, подключив питание вверх ногами, хотя разъем специально сделан такой формы, чтобы нельзя воткнуть его иначе. Но хитрость, сила и глупость всегда побеждают в борьбе с разумом и интеллектом.

Arduino Uno, макетная плата, RGB светодиод

Пока не понял — зачем повсюду втыкать резисторы: для кнопки и светодиода, но со временем до меня дойдёт.

Зато понял, что цифровые порты без значка тильды «~» не поддерживают комманду analogWrite(), как положено.

Кстати, сразу вопрос: почему все порты не сделаны, как цифровые с поддержкой analogRead() и analogWrite()? Это сильно упростило бы работу с платой на мой непрофессиональный взгляд.

Плата может брать питание из трёх мест: по разьёму USB, с отдельного входа, с двух штырьков. Подключать все три входа одновременно, наверно, плохая идея.

Программируется через USB заливкой прошивки с помощью Arduino IDE.

Прошивка содержит две функции:

  • setup() выполняется один раз при включении платы или после reset
  • loop() бесконечный цикл во время работы

В первой функции устанавливаем режим работы пинов: вход или выход, вешаем прерывания, открываем порт для отладки, во второй читаем данные и пишем.

Отдельно хочу обратить внимание на прерывания: они позволяют задействовать режим энергосбережения, что полезно при работе от батареек. Прерывание срабатывает по определённым событиям: появился сигнал, исчез сигнал. При наступлении этого события происходит вызов вашей функции, а выполнение loop() приостанавливается. В режиме энергосбережения плата может прожить шесть лет на батарейках без учёта саморазряда.

Эту информацию и всё вышенаписанное я подчерпнул с канала AlexGyver, за что ему огромное спасибо! Чувак, мой тебе респект, ты молодец, я теперь твой фанат.

А ещё я потрогал резистор щупом мультиметра и обнаружил сопротивление в 220 Ом, как и ожидалось. Здорово, правда?

Функционал Arduino бесконечный, потому что она управляющая, а остальное делают различные внешние платы, например, реле, которое может управлять контактом, через который проходит 220 Вольт. По сигналу с Arduino реле замыкает или размыкает эту цепь.

Теперь самое интересное: цены.

Свой набор Arduino Uno с двумя книжками и прочим барахлишком я купил в магазине КЕЙ за 2790 рублей. Просто потому, что хотел всё, сразу и сейчас. Отдельно плата Arduino Uno в Чип&Дип стоит 2270 рублей. У китайцев аналог этой платы стоит от 200 рублей. Оригинальная версия от создателей обойдется вам в €28. Чувствуете некоторый разброс цен?

На мой дилетанский взгляд, покупать Arduino нужно у создателей, а разные реле и платы у китайцев. Просто потому, что создатели этого заслуживают.

Когда внезапно разбогатею (как раз после выплаты ипотеки), то планирую купить набор у создателей в районе 10-15 тысяч рублей, просто в качестве благодарности за их труд.

Блог Евгения Жирнова