Подключение датчиков к Arduino: руководство для начинающих

Всем привет!
В этой статье я расскажу, как правильно подключать к Arduino датчики разных типов — аналоговые и цифровые. Поехали =)
1. Введение в датчики для Arduino
1.1. Что такое датчик?
Датчик — это устройство (рис. 1), которое преобразует физическую величину окружающей среды (температуру, освещённость, давление и т. д.) в электрический сигнал, который может быть считан микроконтроллером Arduino для дальнейших действий.
1.2. Типы датчиков
Датчики можно разделить на две основные категории:
- Аналоговые — выдают сигнал в виде напряжения (0–5 В), который считывается аналоговым входом Arduino (A0–A5 на Arduino Uno).
Примеры: потенциометр, фоторезистор, датчик температуры LM35. - Цифровые — передают данные в виде логических уровней (0 или 1, как кнопка) или через цифровые интерфейсы (I2C, SPI, UART).
Примеры: ультразвуковой датчик HC-SR04, датчик движения PIR, датчик температуры DS18B20, гироскоп MPU6050 (I2C).

2. Подключение аналоговых датчиков
2.1. Пример: фоторезистор (датчик освещённости)
Фоторезистор изменяет сопротивление в зависимости от количества попадающего на него света (больше света — меньше сопротивление). Подключим его по схеме делителя напряжения:
Схема подключения (рис. 2):
- Фоторезистор → один конец на 5V, другой на A0 и резистор 10 кОм на GND.
Код для считывания данных:
void setup() {
Serial.begin(9600); // Инициализация Serial-порта
}
void loop() {
int lightValue = analogRead(A0); // Чтение значения с фоторезистора
Serial.println(lightValue); // Вывод в монитор порта
delay(500); // Задержка 0,5 сек
}

2.2. Пример: датчик температуры LM35
LM35 выдаёт напряжение, пропорциональное температуре (10 мВ/°C).
Схема подключения (рис. 3):
- Vout → A0
- Vcc → 5V
- GND → GND
Код для расчёта температуры:
void setup() {
Serial.begin(9600);
}
void loop() {
int tempValue = analogRead(A0);
float voltage = tempValue * (5.0 / 1023.0); // Перевод в вольты
float temperature = voltage * 100; // LM35: 10 мВ = 1°C
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" °C");
delay(1000);
}

3. Подключение цифровых датчиков
3.1. Пример: кнопка (простейший цифровой датчик)
Кнопка — это простейший цифровой датчик, который замыкает или размыкает цепь.
Схема подключения (рис. 4):
- Один конец кнопки → 5V
- Другой конец → D2 и резистор 10 кОм на GND (подтяжка к земле)
Код для считывания нажатия:
void setup() {
pinMode(2, INPUT); // Настройка D2 как вход
Serial.begin(9600);
}
void loop() {
int buttonState = digitalRead(2); // Чтение состояния кнопки
if (buttonState == HIGH) {
Serial.println("Button pressed!");
}
delay(100);
}

3.2. Пример: ультразвуковой датчик HC-SR04
HC-SR04 измеряет расстояние с помощью ультразвука, отправляя звуковую волну и замеряя время возвращения. Далее это время передаётся на микроконтроллер, и он уже высчитывает расстояние в сантиметрах/метрах/дюймах, как захотите.
Схема подключения (рис. 5):
- VCC → 5V
- Trig → D9
- Echo → D10
- GND → GND
Код для измерения расстояния:
const int trigPin = 9;
const int echoPin = 10;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH); // Генерация импульса
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH); // Измерение времени отклика
float distance = duration * 0.034 / 2; // Расчёт расстояния в см
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
delay(500);
}

4. Подключение датчиков с интерфейсами I2C и SPI
Некоторые датчики используют цифровые протоколы, такие как I2C (пины A4, A5) и SPI (D10-D13). Например, датчик положения-гироскоп MPU6050 подключается по I2C (рис. 6).
4.1. Пример: датчик температуры и влажности DHT11 (цифровой, 1-Wire)
Схема подключения:
- VCC → 5V
- DATA → D2
- GND → GND
Код (с использованием библиотеки DHT):
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
dht.begin();
}
void loop() {
float humidity = dht.readHumidity(); // Чтение влажности
float temperature = dht.readTemperature(); // Чтение температуры
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.print(" %, Temp: ");
Serial.print(temperature);
Serial.println(" °C");
delay(2000);
}

4.2. Пример: датчик BMP280 (I2C, давление и температура)
Схема подключения:
- VCC → 3.3V или 5V, в зависимости от версии модуля.
- GND → GND
- SCL → A5
- SDA → A4

Внимание! Этот датчик может подключаться по разному, в зависимости от версии модуля. Если у вас большая плата модуля и на нём нет почти никаких деталей, кроме самого датчика, то он работает от 3.3V. Если на плате модуля есть понижающий преобразователь и сама плата маленькая, то он работает от 5V. Обязательно проверьте напряжение питания модуля перед подключением, иначе он сгорит и придётся покупать новый.
Код (с использованием библиотеки Adafruit_BMP280):
#include <Wire.h>
#include <Adafruit_BMP280.h>
Adafruit_BMP280 bmp;
void setup() {
Serial.begin(9600);
if (!bmp.begin(0x76)) { // Адрес I2C (0x76 или 0x77)
Serial.println("BMP280 not found!");
while (1);
}
}
void loop() {
Serial.print("Temperature = ");
Serial.print(bmp.readTemperature());
Serial.println(" °C");
Serial.print("Pressure = ");
Serial.print(bmp.readPressure() / 100.0); // в гПа
Serial.println(" hPa");
delay(2000);
}
5. Советы по работе с датчиками
- Проверяйте документацию — у каждого датчика есть datasheet с точными параметрами. Также на этом сайте есть описания модулей и их распиновки.
- Используйте подтягивающие резисторы — для цифровых входов (кнопки, энкодеры), для того, чтобы не было помех и показания были точные.
- Фильтруйте сигнал — если датчик выдаёт шум (аналоговые датчики).
- Правильное питание — некоторые датчики работают от 3.3 В, а не от 5 В, завышенное питание может вывести модуль из строя.
- Используйте библиотеки — большинство сложных датчиков имеют готовые библиотеки для Arduino.
6. Заключение
В этой статье мы рассмотрели основные принципы подключения датчиков к Arduino: от простых аналоговых и цифровых до устройств с интерфейсами I2C и SPI. Теперь вы можете экспериментировать с различными датчиками и создавать свои проекты!
Если у вас есть вопросы — задавайте их в нашем Telegram-чате. Удачных экспериментов! 🚀
