Модули · статья
Датчики для Arduino: как выбрать, подключить и прочитать
Датчики — органы чувств вашей платы: с ними скетч узнаёт о свете и темноте, движении, температуре, наклоне и даже дыме. Разбираем, как датчик отдаёт показания, собираем таблицу из 22 датчиков — что измеряет, какой выход, какая библиотека и где купить, — и расшифровываем маркировки KY, GY и MQ. Все товарные ссылки проверены по карточкам магазина, а имена библиотек — по живому каталогу; четыре скетча из статьи реально собраны для Uno.
Датчик — это вопрос, на который плата получает ответ
Любой проект на Arduino устроен одинаково: датчики отвечают на вопросы («темно ли?», «есть ли движение?», «сколько градусов?»), а скетч решает, что делать с ответами. В первом курсе мы уже собирали датчики из «голых» деталей — фоторезистор в уроке про ночник, датчик наклона в сигнализации, — а здесь смотрим на готовые модули: что бывает и как выбрать под задачу.
Как читать подписи VCC, GND, DO и AO на плате любого модуля и чем модуль отличается от «голой» детали — мы подробно разобрали в родительской статье «Модули для Arduino», повторяться не будем. В магазине iarduino.ru под датчики отведена целая полка — «Сенсоры, датчики»: на витрине 44 модуля, а внутри — подкатегории от климата и света до газов и жидкостей. Все ссылки в статье ведут на карточки, проверенные в день выхода: товар в наличии.
Три способа, которыми датчик отдаёт показания
Прежде чем выбирать датчик, полезно понять, в каком виде он отдаст ответ. Способов три, и лучше всего они видны на одной и той же задаче — измерить температуру:
- Цифровой выход 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-Wire | OneWire + DallasTemperature | пока нет | арт. 333 |
| Температура и влажность воздуха | DHT22 (или DHT11 из набора) · цифровой | DHT sensor library | урок 27 «DHT11» | арт. 444 |
| Атмосферное давление | Барометр BMP280 · I2C | Adafruit 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 кГц · DO | IRremote | пока нет | арт. 620 |
| Повороты и ускорения | GY-521 (MPU-6050) · I2C | Adafruit MPU6050 | пока нет | арт. 244 |
| Ток в цепи | Датчик тока 5 А (ACS712) · AO | iarduino_ACS712 | пока нет | арт. 927 |
| Расход воды по трубе | YF-S201 · импульсы | не нужна — attachInterrupt() | урок «Прерывания» | арт. 778 |
| Угол поворота ручки | Энкодер FLASH-I2C · I2C | библиотека производителя | пока нет | арт. 1190 |
| Положение джойстика | Джойстик, оси X и Y · 2×AO | не нужна | пока нет | арт. 888 |
| Качество воздуха в комнате | CCS811 (eCO2 и летучие вещества) · I2C | Adafruit CCS811 Library | пока нет | арт. 972 |
Ловушки комплектации — прямо из карточек магазина. Герметичному DS18B20 для работы нужен резистор 4,7 кОм между линией данных и питанием — в комплект он не входит, кладите в корзину отдельно. Геркону точно так же нужен внешний резистор 10 кОм. А библиотеки ИК-приёма занимают аппаратный таймер: и у рекомендованной нами IRremote (по её документации), и у фирменной библиотеки из карточки ИК-приёмника на Uno и Nano из-за этого не работает ШИМ на выводах 3 и 11.
Собрано и проверено: четыре скетча
Все четыре способа чтения датчиков из этой статьи мы собрали по-настоящему — для 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-серия — платы из китайского набора 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 и бесплатные уроки.
