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

Датчики для Arduino: как выбрать, подключить и прочитать

Датчики — органы чувств вашей платы: с ними скетч узнаёт о свете и темноте, движении, температуре, наклоне и даже дыме. Разбираем, как датчик отдаёт показания, собираем таблицу из 22 датчиков — что измеряет, какой выход, какая библиотека и где купить, — и расшифровываем маркировки KY, GY и MQ. Все товарные ссылки проверены по карточкам магазина, а имена библиотек — по живому каталогу; четыре скетча из статьи реально собраны для Uno.

Датчик — это вопрос, на который плата получает ответ

Любой проект на Arduino устроен одинаково: датчики отвечают на вопросы («темно ли?», «есть ли движение?», «сколько градусов?»), а скетч решает, что делать с ответами. В первом курсе мы уже собирали датчики из «голых» деталей — фоторезистор в уроке про ночник, датчик наклона в сигнализации, — а здесь смотрим на готовые модули: что бывает и как выбрать под задачу.

Как читать подписи VCC, GND, DO и AO на плате любого модуля и чем модуль отличается от «голой» детали — мы подробно разобрали в родительской статье «Модули для Arduino», повторяться не будем. В магазине iarduino.ru под датчики отведена целая полка — «Сенсоры, датчики»: на витрине 44 модуля, а внутри — подкатегории от климата и света до газов и жидкостей. Все ссылки в статье ведут на карточки, проверенные в день выхода: товар в наличии.

Три способа, которыми датчик отдаёт показания

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

Термистор NTCаналоговый выходAO → вход A0отдаёт число 0–1023,градусы считает скетчA0DS18B20шина 1-WireDATA → вывод 2присылает готовые градусы,датчиков на проводе — несколькоD2BMP280шина I2CSDA·SCL → A4·A5готовые паскали и градусы,шину делит с экраном и часамиA4 A5ПЛАТА ARDUINO UNO
Одна и та же задача — узнать температуру — решается датчиками трёх «поколений». Термистор отдаёт сырое число, и переводить его в градусы приходится скетчу. DS18B20 присылает готовые градусы по одному проводу данных. BMP280 живёт на шине I2C вместе с экраном и часами — и заодно измеряет давление. Чем умнее датчик, тем короче скетч и тем нужнее библиотека.
  • Цифровой выход DO — «да или нет». Датчики движения, наклона, стука, концевики: одна команда digitalRead() — и ответ готов. Порог срабатывания у многих задаётся подстроечным резистором прямо на плате.
  • Аналоговый выход AO — «сколько именно». Свет, звук, газ, ток: analogRead() возвращает число от 0 до 1023, а переводить его в люксы или амперы — забота скетча или библиотеки. С этого способа начинается урок про датчик света.
  • Шина — готовые величины в цифре. «Умные» датчики с собственной микросхемой присылают уже посчитанные градусы и паскали: по I2C (два провода A4 и A5 на всех), по 1-Wire (один провод данных, как у DS18B20) или по UART. Таким датчикам почти всегда нужна библиотека — как её поставить.

Таблица: что измерить → датчик → библиотека

22 задачи — и проверенный датчик под каждую. Имена библиотек — те, по которым они находятся в каталоге libraries.trema.ru; «не нужна» значит, что хватает встроенных digitalRead() и analogRead(). В колонке «в магазине» — карточки iarduino.ru, каждая проверена: товар в наличии на день выхода статьи.

Что измеряемДатчик · выходБиблиотекаРазбор у насВ магазине
Свет: день или ночьФоторезистор или датчик освещённости · AOне нужнаурок 15 «Датчик света»арт. 613
Температура воды, улицы, почвыDS18B20, герметичный щуп · 1-WireOneWire + DallasTemperatureпока нетарт. 333
Температура и влажность воздухаDHT22 (или DHT11 из набора) · цифровойDHT sensor libraryурок 27 «DHT11»арт. 444
Атмосферное давлениеБарометр BMP280 · I2CAdafruit BMP280 Libraryпока нетарт. 840
Расстояние до предметаУльтразвуковой HC-SR04 · Trig/Echoне нужна — или NewPingпока нетарт. 70
Движение: человек в комнатеPIR-датчик HC-SR501 · DOне нужнапока нетарт. 37
Движение даже сквозь перегородкуДоплеровский RCWL-0516 · DOне нужнапока нетарт. 804
Громкость звукаДатчик звука (микрофон) · AOне нужнапока нетарт. 849
Газ и дымMQ-2 · AOне нужнапока нетарт. 845
Наклон корпусаДатчик наклона · DOне нужнаурок 16 «Наклон и вибрация»арт. 615
Вибрация и стукSW-420 · DOне нужнаурок «Прерывания»в наборе
Магнит рядомДатчик Холла SS49E · AOне нужнаурок 17 «Датчик Холла»арт. 614
Дверь или окно открытыГеркон с магнитом · контактне нужнапока нетарт. 345
Касание, упор в преградуКонцевик · DOне нужнапока нетарт. 687
Линия под колёсами роботаTCRT5000 · AOне нужнапока нетарт. 1575
Команды с ИК-пультаИК-приёмник 38 кГц · DOIRremoteпока нетарт. 620
Повороты и ускоренияGY-521 (MPU-6050) · I2CAdafruit MPU6050пока нетарт. 244
Ток в цепиДатчик тока 5 А (ACS712) · AOiarduino_ACS712пока нетарт. 927
Расход воды по трубеYF-S201 · импульсыне нужна — attachInterrupt()урок «Прерывания»арт. 778
Угол поворота ручкиЭнкодер FLASH-I2C · I2Cбиблиотека производителяпока нетарт. 1190
Положение джойстикаДжойстик, оси X и Y · 2×AOне нужнапока нетарт. 888
Качество воздуха в комнатеCCS811 (eCO2 и летучие вещества) · I2CAdafruit CCS811 Libraryпока нетарт. 972

Ловушки комплектации — прямо из карточек магазина. Герметичному DS18B20 для работы нужен резистор 4,7 кОм между линией данных и питанием — в комплект он не входит, кладите в корзину отдельно. Геркону точно так же нужен внешний резистор 10 кОм. А библиотеки ИК-приёма занимают аппаратный таймер: и у рекомендованной нами IRremote (по её документации), и у фирменной библиотеки из карточки ИК-приёмника на Uno и Nano из-за этого не работает ШИМ на выводах 3 и 11.

Про DHT11 из наших уроков. Он отлично подходит для комнаты, но его диапазон начинается с 0 °C — зимнюю улицу он не измерит. Для улицы и воды берите герметичный DS18B20 (−55…+125 °C), для точной влажности — DHT22. Отдельной карточки DHT11 в магазине сейчас нет в наличии, поэтому в таблице — DHT22 и обучающий набор, где DHT11 уже лежит.

Собрано и проверено: четыре скетча

Все четыре способа чтения датчиков из этой статьи мы собрали по-настоящему — для Uno, с библиотеками из каталога. Размеры прошивок из отчёта компилятора: термометр DS18B20 (OneWire + DallasTemperature) — 5 776 байт, DHT22 (DHT sensor library) — 5 034 байта, люксметр BH1750 по I2C — 6 968 байт. А дальномер HC-SR04 обходится вообще без библиотек — 2 606 байт: весь «драйвер» помещается в десяток строк.

void setup() {
  Serial.begin(9600);
  pinMode(3, OUTPUT);   // TRIG
  pinMode(2, INPUT);    // ECHO
}

void loop() {
  digitalWrite(3, LOW);
  delayMicroseconds(2);
  digitalWrite(3, HIGH);              // импульс запуска 10 мкс
  delayMicroseconds(10);
  digitalWrite(3, LOW);
  long us = pulseIn(2, HIGH, 30000);  // ждём эхо
  long mm = us * 10 / 58;             // 58 мкс на сантиметр
  Serial.print("L = ");
  Serial.print(mm);
  Serial.println(" mm");
  delay(200);
}

Показания смотрите в мониторе порта, а если хочется наглядности — стройте график прямо в IDE: идеи опытов с графиком у нас уже собраны. Следующий шаг — вывести числа на экран LCD 1602 или OLED, а для метеостанции с отправкой по Wi-Fi пригодится ESP8266.

KY, GY, MQ: как читать маркировки датчиков

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

KY-038KY — плата из набора Keyes «37 датчиков в одном»038 — номер в наборе: этот — микрофон с компараторомGY-521GY — плата-переходник для микросхемы, обычно шина I2C521 — внутри гироскоп и акселерометр MPU-6050MQ-2MQ — газовый сенсор с подогревом, нужен прогрев2 — что именно ловит: горючие газы и дым
Маркировка на плате — не стандарт, а традиция: одни и те же платы продаются под разными брендами. Расшифровывать её просто: буквы — серия, номер — конкретный датчик. Не узнали маркировку — наберите её в поиске вместе со словом «Arduino»: по номеру находятся распиновка, примеры и библиотека.

KY-серия — платы из китайского набора Keyes «37 датчиков в одном»; те же платы продаются и под другими брендами. Полезно узнавать частые номера: KY-001 — термометр DS18B20, KY-002 — датчик вибрации, KY-003 — датчик Холла, KY-013 — термистор, KY-023 — джойстик, KY-038 — микрофон.

GY-серия — платы-переходники, на которые распаяна готовая микросхема-датчик, обычно с шиной I2C: GY-521 — гироскоп-акселерометр MPU-6050 из нашей таблицы, GY-68 — барометр BMP180, GY-BMP280 — барометр BMP280. Осторожнее с компасом GY-271: на плате может оказаться либо HMC5883L, либо его аналог QMC5883L, а библиотеки у них разные.

MQ-серия — газовые сенсоры с подогревом: MQ-2 — горючие газы и дым, MQ-3 — пары алкоголя, MQ-7 — угарный газ, MQ-135 — «качество воздуха» в целом. У всей серии две особенности: после включения датчику нужно прогреться, и с завода он не откалиброван — показывает «больше или меньше», а не проценты. Для настоящих измерений CO2 берут датчики другого принципа — например, инфракрасный MH-Z19 с выходом UART.

Остальные частые имена — просто модели: HC-SR04 — ультразвуковой дальномер, HC-SR501 — PIR-датчик движения, FC-51 — ИК-датчик препятствия, TCRT5000 — отражательный датчик для езды по линии, SW-420 — датчик вибрации.

Питание: где датчики не заводятся и сгорают

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

  • Датчику качества воздуха CCS811 нельзя 5 В — питание строго до 3,3 В, и к пятивольтовой Uno его напрямую не подключить: карточка прямо описывает схему с делителем напряжения.
  • Датчики движения, наоборот, не заводятся от 3,3 В: HC-SR501 просит от 4,5 В, доплеровский RCWL-0516 — от 4 В. При этом выход у HC-SR501 — 3,3-вольтовый, так что читать его безопасно любой плате.
  • У датчика расхода воды YF-S201 амплитуда импульсов равна питанию: запитаете от 12 В — получите 12 В на входе платы и рискуете его сжечь. С Arduino питайте от 5 В.
  • Карточки тоже ошибаются: у GY-521 характеристики обещают питание 3,5–6 В, а раздел подключения той же карточки требует строго 3,3 В. Когда описание спорит само с собой, выбирайте осторожный вариант — хуже от 3,3 В модулю не станет.

Частые вопросы отвечаем в конце

Ниже — короткие ответы на вопросы, с которыми к нам приходят чаще всего: с какого датчика начать, почему «врёт» газовый датчик и куда девать показания.

Вопросы

Частые вопросы про датчики

Остались вопросы? Напишите нам — отвечаем по-русски.

С какого датчика начать новичку?

С фоторезистора из обучающего набора: урок 15 «Датчик света» собирает ночник без единой библиотеки. Из готовых модулей проще всего датчики с цифровым выходом — движение HC-SR501 или датчик наклона: одна команда digitalRead(), и ответ готов.

Чем цифровой выход DO отличается от аналогового AO?

DO отвечает только «да или нет» — порог срабатывания задаёт подстроечный резистор на плате. AO отвечает «сколько именно»: analogRead() возвращает число от 0 до 1023. У многих датчиков есть оба выхода — подключайте тот, который нужен задаче, второй можно оставить в воздухе.

Нужна ли каждому датчику библиотека?

Нет. Больше половины датчиков из нашей таблицы читаются встроенными командами digitalRead() и analogRead(). Библиотека нужна «умным» датчикам с шиной — DS18B20, DHT22, барометру BMP280, гироскопу MPU-6050; точные имена библиотек — в таблице на этой странице.

Что значат маркировки KY, GY и MQ на плате датчика?

Буквы — серия, номер — конкретный датчик. KY — платы из китайского набора Keyes «37 датчиков в одном», GY — платы-переходники с готовой микросхемой-датчиком (обычно шина I2C), MQ — газовые сенсоры с подогревом. Например: GY-521 — гироскоп-акселерометр MPU-6050, MQ-2 — дым и горючие газы.

Почему газовый датчик MQ показывает ерунду первые минуты?

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

Какой датчик температуры выбрать: DHT11, DHT22 или DS18B20?

DHT11 — для комнаты: его диапазон начинается с 0 °C, зимнюю улицу он не измерит. DHT22 точнее и тоже меряет влажность. DS18B20 в герметичном щупе — для улицы, воды и почвы: −55…+125 °C. Подключаются все три одинаково просто, скетчи — в наших уроках и статьях.

Дальше — подключать

Выбрали датчик — подключайте и пишите скетч в бесплатной русской Trema IDE: ошибки объясняются по-русски, а на недостающую библиотеку программа сама предложит установку из каталога. Дальше по теме: модули и шилды, экран LCD 1602, OLED-дисплей, ESP8266 и Wi-Fi и бесплатные уроки.