
Как правильно подключать к Arduino датчики разных типов — аналоговые и цифровые. Фоторезистор, LM35, кнопка, HC-SR04, DHT11, BMP280 — схемы подключения и код.

*Рис. 1 — Некоторые виды датчиков*
Всем привет!
В этой статье я расскажу, как правильно подключать к Arduino датчики разных типов — аналоговые и цифровые. Поехали =)
Датчик — это устройство (рис. 1), которое преобразует физическую величину окружающей среды (температуру, освещённость, давление и т. д.) в электрический сигнал, который может быть считан микроконтроллером Arduino для дальнейших действий.
Датчики можно разделить на две основные категории:
*Примеры:* потенциометр, фоторезистор, датчик температуры LM35.
*Примеры:* ультразвуковой датчик HC-SR04, датчик движения PIR, датчик температуры DS18B20, гироскоп MPU6050 (I2C).

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

*Рис. 3 — Схема подключения аналогового датчика температуры LM35*
LM35 выдаёт напряжение, пропорциональное температуре (10 мВ/°C).
#### Схема подключения (рис. 3):
#### Код для расчёта температуры:
```cpp
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);
}
`

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

*Рис. 5 — Схема подключения ультразвукового датчика расстояния HC-SR04*
HC-SR04 измеряет расстояние с помощью ультразвука, отправляя звуковую волну и замеряя время возвращения. Далее это время передаётся на микроконтроллер, и он уже высчитывает расстояние в сантиметрах/метрах/дюймах, как захотите.
#### Схема подключения (рис. 5):
#### Код для измерения расстояния:
```cpp
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);
}
`

*Рис. 6 — Пример подключения гироскопа MPU6050*
Некоторые датчики используют цифровые протоколы, такие как I2C (пины A4, A5) и SPI (D10-D13). Например, датчик положения-гироскоп MPU6050 подключается по I2C (рис. 6).
#### Схема подключения:
#### Код (с использованием библиотеки DHT):
```cpp
#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);
}
`

*Рис. 7 — Пример подключения датчика BMP280 к Arduino. Здесь версия модуля со встроенной понижайкой на 3.3V.*
#### Схема подключения:

_Внимание!_ _Этот датчик может подключаться по разному, в зависимости от версии модуля. Если у вас большая плата модуля и на нём нет почти никаких деталей, кроме самого датчика, то он работает от 3.3V. Если на плате модуля есть понижающий преобразователь и сама плата маленькая, то он работает от 5V._ Обязательно проверьте напряжение питания модуля перед подключением, иначе он сгорит и придётся покупать новый.
#### Код (с использованием библиотеки Adafruit_BMP280):
```cpp
#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);
}
`
1. Проверяйте документацию — у каждого датчика есть datasheet с точными параметрами. Также на этом сайте есть описания модулей и их распиновки.
2. Используйте подтягивающие резисторы — для цифровых входов (кнопки, энкодеры), для того, чтобы не было помех и показания были точные.
3. Фильтруйте сигнал — если датчик выдаёт шум (аналоговые датчики).
4. Правильное питание — некоторые датчики работают от 3.3 В, а не от 5 В, завышенное питание может вывести модуль из строя.
5. Используйте библиотеки — большинство сложных датчиков имеют готовые библиотеки для Arduino.
В этой статье мы рассмотрели основные принципы подключения датчиков к Arduino: от простых аналоговых и цифровых до устройств с интерфейсами I2C и SPI. Теперь вы можете экспериментировать с различными датчиками и создавать свои проекты!
Подключите школу к пилоту. Генерируйте КМЖ за 2 минуты, ведите CodeStudio уроки, заказывайте оборудование — всё в одном месте.