Модули · статья

Модули для Arduino: какие бывают, как подключить и что такое шилд

После первых уроков со светодиодами наступает момент, когда хочется экран, часы, замок по карточке или свет по расписанию. Всё это — готовые модули, и подключаются они по одним и тем же правилам. Разбираем, как читать подписи VCC, GND, DO и AO на любом модуле, какие бывают способы подключения, какая библиотека нужна какому модулю — таблицей со ссылками на разборы, — и что такое шилд. Имена библиотек сверены с живым каталогом libraries.trema.ru, а все товары в статье проверены по карточкам магазина.

Модуль — это деталь, которую за вас уже распаяли

В наших уроках мы собираем схемы из «голых» деталей: фоторезистор плюс резистор на макетной плате — и получается датчик света. Это лучший способ понять, как всё работает. Но в готовом устройстве хочется меньше проводов и меньше мест, где можно ошибиться.

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

Модули для Arduino выпускает множество фирм, и, как правило, они совместимы между собой: датчик из одного магазина заработает с экраном из другого — главное, чтобы совпадало питание, об этом ниже. В российском магазине iarduino.ru модули разложены по полкам: датчики, дисплеи, модули и платы расширения, моторы и механика. Мы будем ссылаться на конкретные карточки — все ссылки в статье проверены: товар есть в наличии, характеристики взяты из описаний.

Как читать подписи на модуле

Возьмите любой модуль-датчик — света, звука, влажности почвы, — и вы увидите одни и те же подписи у контактов. Это главный навык в мире модулей: научившись читать четыре подписи, вы подключите почти что угодно без инструкции.

Типовой модуль-датчикдатчикLM393подстроечникPWRDOVCCпитание, «плюс». Обычно 5 В,у многих модулей можно и 3,3 ВGNDземля, «минус». Соединяетсяс GND платы всегда, без исключенийDOцифровой выход: только «да / нет».Порог срабатывания задаёт подстроечникAOаналоговый выход: «сколько именно».Читается через analogRead() на A0–A5
Подписи выводов на разных модулях пишут по-разному: питание бывает VCC, VDD, V или «+», земля — GND или «−», а сигнальный контакт — S, SIG, OUT, D0 или DAT. Смысл при этом один и тот же. Если контакта четыре и среди них есть и DO, и AO — модуль умеет отдавать и «порог перейдён», и точное значение: выбирайте выход под задачу, второй можно не подключать.

Единственная пара, которую нельзя путать, — питание и земля: перепутаете — модуль может сгореть. Сигнальные контакты обычно прощают ошибки: подключили DO вместо AO — просто будут странные показания.

Проверить незнакомый модуль можно скетчем из двух команд: он печатает в монитор порта и цифровой, и аналоговый выход сразу. Подключите VCC к 5V (а если в описании модуля питание только 3,3 В — то к выводу 3.3V), GND к GND, DO к выводу 2, AO к входу A0 — и смотрите, как меняются числа, когда вы подносите руку, свет или магнит.
void setup() {
  Serial.begin(9600);
  pinMode(2, INPUT);
}

void loop() {
  int doValue = digitalRead(2);  // выход DO модуля — на вывод 2
  int aoValue = analogRead(A0);  // выход AO модуля — на вход A0
  Serial.print("DO = ");
  Serial.print(doValue);
  Serial.print("   AO = ");
  Serial.println(aoValue);
  delay(300);
}

Пять способов подключения

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

  • Цифровой вывод: «да или нет». Кнопки, реле, датчики наклона и стука. Одна команда digitalRead() или digitalWrite() — так работает самый первый датчик из уроков.
  • Аналоговый вход: «сколько именно». Фоторезистор, потенциометр, датчики влажности почвы — всё, что отдаёт плавную величину. Команда analogRead() на входах A0–A5 даёт число от 0 до 1023 — как в уроке про потенциометр.
  • Шина I2C: два провода на всех. Экраны, часы, многие датчики. На Uno это выводы A4 и A5, и одна пара проводов обслуживает хоть десять устройств сразу — у каждого свой адрес. Так подключаются LCD 1602 и OLED-дисплей.
  • Шина SPI: быстро, но больше проводов. RFID-считыватели, карты памяти, радиомодули. На Uno — выводы 10–13, каждому устройству добавляется свой провод выбора.
  • UART — обычный порт. Bluetooth-модули, GPS-приёмники: те же передача и приём, что и в мониторе порта. На Uno выводы 0 и 1 заняты связью с компьютером, поэтому модулям обычно выделяют другие два вывода программным портом.

Таблица: модуль → библиотека → с чего начать

Для простых модулей библиотека не нужна: хватает встроенных команд. Для остальных — ниже имена, по которым библиотека находится в каталоге libraries.trema.ru: наберите его в поиске — и найдётся та самая библиотека. В колонке «в магазине» — проверенные карточки iarduino.ru: товар в наличии на день выхода статьи. А датчикам мы посвятили отдельный разбор — «Датчики для Arduino»: 22 датчика под конкретные задачи и расшифровка маркировок KY, GY и MQ.

МодульБиблиотекаРазбор у насВ магазине
Кнопка, датчики наклона и вибрациине нужна — digitalRead()урок 10 «Кнопка»в наборе
Фоторезистор, потенциометрне нужна — analogRead()урок 15 «Датчик света»в наборе
Зуммер: сигналы и мелодиине нужна — tone()урок 19 «Зуммер»в наборе
Экран LCD 1602 или 2004 с модулем I2CLiquidCrystal I2Cразбор LCD 1602арт. 540
OLED-дисплей 0.96″ на SSD1306Adafruit SSD1306 или iarduino_OLEDразбор OLEDарт. 830
Температура и влажность: DHT11, DHT22DHT sensor libraryурок 27 «DHT11»арт. 444
СервоприводServo — уже встроенаурок 22 «Сервопривод»арт. 104 (аналог SG90)
Часы реального времени DS3231RTClib или iarduino_RTCпока нетарт. 877
RFID-считыватель RC522MFRC522пока нетарт. 117
Ультразвуковой дальномер HC-SR04NewPing — или совсем без библиотекипока нетарт. 70
Реле: свет и розеткине нужна — digitalWrite()пока нетарт. 53
Адресные светодиоды NeoPixel (WS2812)Adafruit NeoPixel или FastLEDпока нетарт. 784
Шаговый двигатель 28BYJ-48Stepper — встроена; удобнее AccelStepperпока нетарт. 122
Bluetooth-модуль HC-05не обязательна — обычный порт UARTпока нетарт. 398
Радиомодуль nRF24L01+RF24пока нетарт. 83

Две ловушки из этой таблицы, о которых редко предупреждают. Шаговому двигателю 28BYJ-48 нужна плата драйвера ULN2003 — напрямую к выводам Arduino его не подключить. Не дайте названию карточки себя обмануть: в комплектации по нашей ссылке указан только сам двигатель, плата драйвера кладётся в корзину отдельно. А радиомодуль nRF24L01+ питается строго от 3,3 В — карточка прямо предупреждает: напряжение выше на VCC выводит модуль из строя, хотя сигнальным линиям 5 В не страшны.

Не нашли свой модуль? Посмотрите, какой файл просит скетч в строке #include — по имени файла .h библиотека находится почти всегда: таблица «файл .h → библиотека» здесь. В Trema IDE ещё проще: соберите скетч, и на недостающую библиотеку программа сама предложит установку.

Шилд: модуль, который надевается сверху

У модулей есть старший брат — шилд (от английского shield): плата расширения, которая не подключается проводами, а целиком надевается на Arduino сверху, как этаж на дом.

USBПЛАТА ARDUINO UNOШИЛДРазъёмы и клеммы сверху— сюда подключают модули, моторы и проводаштыри повторяют разъёмы платы —шилд просто надевается сверху
Шилд — плата расширения под конкретный формат Arduino: штыревые гребёнки снизу точно повторяют разъёмы Uno, поэтому он надевается сверху без единого провода. У большинства шилдов контакты платы продублированы сверху — что шилд не занял, остаётся доступным. Главное — формат: на Nano шилд «под Uno» не наденется вовсе, а на Mega встанет — разъёмы Uno-формата там повторены, — но шины SPI и I2C у Mega выведены на другие контакты, поэтому перед покупкой смотрите в описании шилда, заявлена ли Mega.

Шилды берут на себя самую неудобную часть — силовую и соединительную:

  • Motor Shield (арт. 705, 740 ₽) — два канала для моторов: подключить мотор напрямую к Arduino нельзя, ему нужен отдельный источник тока, и шилд решает это одной платой. По карточке: моторы от 3 до 10,8 В, общий ток нагрузки на выходах — до 2 А.
  • Trema Shield (арт. 607, 540 ₽) и Trema Set Shield (арт. 881, 542 ₽) — «розетки для модулей»: каждый вывод платы продублирован гнездом с питанием и землёй рядом, модули серии Trema подключаются шлейфами или ставятся прямо на шилд — макетка и пайка не нужны вовсе.
  • LCD Keypad Shield — экран 1602 и пять кнопок одной платой: готовая лицевая панель прибора. Мы рассказывали о нём в статье про LCD 1602.

Один нюанс: шилд занимает те выводы, на которых работает, — у Motor Shield это часть цифровых выводов, у LCD Keypad — выводы D4–D10 и вход A0. Если поверх шилда нужно подключить ещё модуль, сверяйтесь с описанием, какие выводы остались свободны. И ещё один, из нашего разбора ошибок: шилд, сидящий на выводах 0 и 1, мешает прошивке — на время загрузки скетча его снимают.

Чем можно управлять с Arduino

Датчики — это «входы». Теперь «выходы» — то, ради чего проект затевается:

  • Свет и приборы из розетки — через модуль реле (арт. 53, 190 ₽): плата замыкает контакт, как выключатель. Управляется одной командой digitalWrite(). Сетевые 220 вольт опасны: если не работали с ними раньше — начните с настольной лампы на 5–12 В или позовите взрослого электрика.
  • Моторы — через транзистор, как в уроке про вентилятор, или через Motor Shield, если моторов два.
  • Сервоприводы и шаговые двигатели — когда нужен точный угол или точный поворот: урок про сервопривод показывает основу за вечер.
  • Команды с компьютера — свет, серво и мелодии с клавиатуры ПК, без нового железа: урок «Пульт из клавиатуры». Bluetooth-модуль HC-05 делает то же самое по воздуху: для платы он выглядит обычным портом UART.

Питание: 5 В, 3,3 В и почему это важно

Классические Arduino — Uno, Nano, Mega — работают на 5 В, и модули «из мира Arduino» рассчитаны на это. Но у многих плат нового поколения — ESP8266, ESP32, Raspberry Pi Pico — логика 3,3 В, и подавать на их входы 5 В нельзя.

Хорошая новость: у многих модулей в описании прямо указан диапазон питания — например, у дальномера HC-SR04 из таблицы карточка заявляет 3,3–5 В. Только не путайте питание и уровни сигналов: у модуля I2C для LCD сигнальные линии терпят 3,3–5 В, но питание экрану всё равно нужно 5 В — мы разбирали это в статье про LCD 1602. Если же модуль строго пятивольтовый, между ним и 3,3-вольтовой платой ставят преобразователь уровней (арт. 355, 53 ₽) — мы разбирали это в статье про ESP8266.

Модули в Trema IDE

Полдела с любым модулем — поставить библиотеку. В Trema IDE каталог libraries.trema.ru встроен: когда скетчу не хватает библиотеки, программа показывает окно «Нужна библиотека» и ставит её в один клик — без поиска по интернету и архивов ZIP. Библиотеки серии iarduino для Trema-модулей в каталоге тоже есть — мы насчитали 65 штук, от часов и OLED до GSM. А сканер адресов I2C, который нужен каждому владельцу экрана, лежит в примерах: Примеры → Полезное.

Вопросы

Частые вопросы про модули

Остались вопросы? Напишите нам

Что такое модуль для Arduino?

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

Что означают подписи VCC, GND, DO и AO на модуле?

VCC — питание («плюс»), GND — земля («минус»). DO — цифровой выход: только «да или нет», порог срабатывания крутится подстроечником на модуле. AO — аналоговый выход: сколько именно, читается командой analogRead(). Питание бывает подписано VDD, V или «+», сигнальный контакт — S, SIG, OUT или DAT: смысл тот же.

Чем шилд отличается от модуля?

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

Можно ли подключать модули к ESP8266 и ESP32, где логика 3,3 В?

Часто да: многие модули питаются и от 3,3 В — диапазон пишут в описании товара. Опасно обратное направление: сигнал 5 В на вход 3,3-вольтовой платы. Для таких линий ставят двунаправленный преобразователь уровней — это модуль ценой около полусотни рублей.

Какую библиотеку ставить для модуля?

Смотрите таблицу на этой странице: для каждого частого модуля — библиотека из каталога libraries.trema.ru и урок или статья с подключением. В Trema IDE можно просто собрать скетч: на недостающий #include программа сама предложит установить подходящую библиотеку.

Сколько модулей можно подключить к одной Arduino?

Цифровых и аналоговых — по числу свободных выводов: у Uno это 14 цифровых плюс 6 аналоговых. А модули с шиной I2C делят одну пару проводов A4 и A5: экран, часы и датчик спокойно живут на шине одновременно, лишь бы адреса не совпадали.

Подключите первый модуль в Trema IDE

Библиотека ставится из окна ошибки, ошибки объясняются по-русски, примеры — с русскими комментариями. Дома бесплатно: через неделю попросит бесплатную регистрацию по почте — и всё. Дальше по теме: датчики для Arduino, экран LCD 1602, OLED-дисплей, как ставить библиотеки.