уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Почти год назад я писал о том, что хотел бы разобраться с Arduino и, в частности, научиться управлять Arduino при помощи программки, написанной в Delphi. Вот, собственно, и наступил тот самый момент, когда можно сидеть дома и разбираться с заявленной темой. Итак, времени у меня на всё про всё — семь дней максимум. Мастерить буду простенький газоанализатор…даже не так — сигнализатор наличия в доме каких-либо вредных газов (формальдегида, оксида углерода и т.д.). Почему именно «сигнализатор»я постараюсь пояснить в одной из следующих статей цикла. И, как можно догадаться, все статьи этого цикла будут начинаться с хэштега #МастеримДома. И начну сегодня с самого основного — знакомства с устройством Arduino.

Итак, что же из себя представляет Arduino? Википедия даёт такое определение: Arduino — торговая марка аппаратно-программных средств для построения простых систем автоматики и робототехники, ориентированная на непрофессиональных пользователей. По сути, Arduino — это конструктор, типа  «Лего» для тех, кто интересуется электроникой. Благодаря своей относительной простоте и удобству, Arduino является довольно популярной платформой, без преувеличения, во всём мире.

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

Вообще, на базе Arduino можно собрать много всяких интересных штук, начиная от банального электронного термометра и, заканчивая системами климат-контроля, роботами и прочими устройствами до которых мне как до Китая пешком. С интересными разработками на базе Arduino можно познакомиться, например, на том же Хабре. Как я уже сказал выше, собирать я буду сигнализатор вредных газов в помещении. Для того, чтобы реализовать проект у меня имеется в наличии следующее железо:

Плата Arduino UNO с кабелем для подключения по USB

Arduino Uno

Собственно, это сердце и мозг всей нашей будущей разработки. Достаточно популярная и относительно дешевая плата Arduino.

Средняя макетная плата

С помощью этого девайса мы будем собирать макет нашего устройства.

LCD 1602 с I2C-модулем

Тут всё понятно — результаты работы датчиков будем выводить на экран.

Ну и, собственно, сами датчики, которые покупались в разное время и в разных местах.

Набор датчиков серии MQ (MQ-135, MQ-9 и т.д.)

Датчик формальдегида CJMCU-1100

По мелочам — кучи соединительных проводов всех цветов и размеров. Дополнительно заказал датчик температуры и влажности DHT-22 и будем надеяться, что он успеет прийти до момента моего выхода на работу :)

Итак, приступим к работе с Arduino. И, для начала, настроим Arduino IDE.

Настройка и работа с Arduino IDE

Для того, чтобы можно было взаимодействовать с платой Arduino Uno нам потребуется драйвер WinChipHead USB-SERIAL. Для моей Arduino UNO китайского происхождения подошел вот этот драйвер (ссылка на Яндекс.Диск).

Теперь перейдем непосредственно к Arduino IDE. Как понятно из названия, Arduino IDE — это среда разработки. Скачать среду можно с официального сайта вот отсюда.

После скачивания, установки и запуска Вы увидите вот такую аскетичную (по сравнению с Delphi) IDE:

В основе языка программирования Arduino лежит язык С++, поэтому хотим мы этого или нет, но основы С++ придётся в итоге всё же изучить.

Программа, которая пишется для Arduino называется скетч. По умолчанию в новом скетче определены два метода — setup() и loop(). Собственно, как почти всегда в программировании, название методов говорит само за себя:

  • setup() — метод который вызывается один раз на старте и может использоваться для настройки работы, например, для инициализации переменных, определения режимов работы и т.д.
  • loop() — метод который постоянно повторяется в цикле и позволяет активно управлять Arduino.

Чтобы продемонстрировать работу с Arduino, воспользуемся одним из примеров, входящих в состав Arduino IDE, под названием Blink. Для этого выберем следующий пункт меню:

Файл — Примеры — 01. Basics — Blink

Откроется новое окно со скетчем «Blink». Разберемся, что здесь и как работает. Вначале обратим внимание на метод setup()

void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

В методе вызывается одна функция — pinMode, которая имеет следующее описание:

pinMode(pin, mode)

Устанавливает режим работы заданного входа/выхода (pin) как входа или как выхода.

  • pin — это номер входа/выхода (pin), который Вы хотите установить
  • mode — это режим одно из двух значение — INPUT или OUTPUT, устанавливает на вход или выход соответственно.

В нашем случае, в качестве первого параметра задана константа LED_BUILTIN, которая определяет номер контакта, к которому подключен встроенный на плате Arduino светодиод (обычно LED_BUILTIN = 13)

Теперь посмотрим на код в методе loop():

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}

Как понятно из комментариев к коду, здесь мы моргаем встроенным на плате светодиодом с интервалом в одну секунду. Физически, если pin был установлен в режим OUTPUT функцией pinMode(), то для значения HIGH напряжение на соответствующем pin будет 5В (или 3.3В для 3.3V плат), и 0В (земля) для LOW.

Попробуем загрузить наш скетч на плату Arduino Uno. Для этого нам необходимо:

во-первых, определить нашу плату. Для этого в меню «Инструменты — Плата» выбрать значение «Arduino Uno»:

во-вторых, понять на каком COM-порту «висит»наша плата. Для этого подключаем с помощью кабеля плату к свободному USB-порту, открываем диспетчер устройств и ищем в разделе «Порты (COM и LPT)» что-то типа такого:

Судя по картинке выше, моя плата «висит» на COM7. Выбираем в Arduino IDE этот порт:

Теперь наш скетч можно загрузить на плату и посмотреть на работу. Выбираем в меню пункт «Скетч — Загрузка». Если вы всё сделали правильно, то увидите в IDE вот  такое сообщение:

А сама на плате с интервалом в 1 секунду начнет моргать красный светодиод.

В поставке Arduino IDE также есть и другие примеры скетчей, которые нам в последующем пригодятся. Однако, забегая немного вперед, скажу, что Arduino умеет посылать данные в COM-порт и читать данные из COM-порта и именно этим мы и воспользуемся, когда дело дойдет до работы в Delphi.

А на сегодня всё. Если Вас заинтересовала тема работы с Arduino — заходите завтра в блог ;).

5 1 голос
Рейтинг статьи
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Подписаться
Уведомить о
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии