Все статьиHardware

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

БА
Бексултан Айтен
CTO, Alashed
6 августа 2025 г.
9 мин чтения
Подключение датчиков к Arduino: руководство для начинающих

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

Некоторые виды датчиков
Некоторые виды датчиков

*Рис. 1 — Некоторые виды датчиков*

Всем привет!

В этой статье я расскажу, как правильно подключать к 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. Подключение аналоговых датчиков

2.1. Пример: фоторезистор (датчик освещённости)

Фоторезистор изменяет сопротивление в зависимости от количества попадающего на него света (больше света — меньше сопротивление). Подключим его по схеме делителя напряжения:

#### Схема подключения (рис. 2):

  • Фоторезистор — один конец на 5V, другой на A0 и резистор 10 кОм на GND.

#### Код для считывания данных:

```cpp

void setup() {

Serial.begin(9600); // Инициализация Serial-порта

}

void loop() {

int lightValue = analogRead(A0); // Чтение значения с фоторезистора

Serial.println(lightValue); // Вывод в монитор порта

delay(500); // Задержка 0,5 сек

}

`

Схема подключения аналогового датчика температуры LM35
Схема подключения аналогового датчика температуры LM35

*Рис. 3 — Схема подключения аналогового датчика температуры LM35*

2.2. Пример: датчик температуры LM35

LM35 выдаёт напряжение, пропорциональное температуре (10 мВ/°C).

#### Схема подключения (рис. 3):

  • VoutA0
  • Vcc5V
  • GNDGND

#### Код для расчёта температуры:

```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 кОм для избежания помех*

3. Подключение цифровых датчиков

3.1. Пример: кнопка (простейший цифровой датчик)

Кнопка — это простейший цифровой датчик, который замыкает или размыкает цепь.

#### Схема подключения (рис. 4):

  • Один конец кнопки — 5V
  • Другой конец — D2 и резистор 10 кОм на GND (подтяжка к земле)

#### Код для считывания нажатия:

```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);

}

`

Схема подключения ультразвукового датчика расстояния HC-SR04
Схема подключения ультразвукового датчика расстояния HC-SR04

*Рис. 5 — Схема подключения ультразвукового датчика расстояния HC-SR04*

3.2. Пример: ультразвуковой датчик HC-SR04

HC-SR04 измеряет расстояние с помощью ультразвука, отправляя звуковую волну и замеряя время возвращения. Далее это время передаётся на микроконтроллер, и он уже высчитывает расстояние в сантиметрах/метрах/дюймах, как захотите.

#### Схема подключения (рис. 5):

  • VCC5V
  • TrigD9
  • EchoD10
  • GNDGND

#### Код для измерения расстояния:

```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);

}

`

Пример подключения гироскопа MPU6050
Пример подключения гироскопа MPU6050

*Рис. 6 — Пример подключения гироскопа MPU6050*

4. Подключение датчиков с интерфейсами I2C и SPI

Некоторые датчики используют цифровые протоколы, такие как I2C (пины A4, A5) и SPI (D10-D13). Например, датчик положения-гироскоп MPU6050 подключается по I2C (рис. 6).

4.1. Пример: датчик температуры и влажности DHT11 (цифровой, 1-Wire)

#### Схема подключения:

  • VCC5V
  • DATAD2
  • GNDGND

#### Код (с использованием библиотеки 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);

}

`

Пример подключения датчика BMP280 к Arduino
Пример подключения датчика BMP280 к Arduino

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

4.2. Пример: датчик BMP280 (I2C, давление и температура)

#### Схема подключения:

  • VCC3.3V или 5V, в зависимости от версии модуля.
  • GNDGND
  • SCLA5
  • SDAA4
Версии модулей BMP280
Версии модулей BMP280

_Внимание!_ _Этот датчик может подключаться по разному, в зависимости от версии модуля. Если у вас большая плата модуля и на нём нет почти никаких деталей, кроме самого датчика, то он работает от 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);

}

`

5. Советы по работе с датчиками

1. Проверяйте документацию — у каждого датчика есть datasheet с точными параметрами. Также на этом сайте есть описания модулей и их распиновки.

2. Используйте подтягивающие резисторы — для цифровых входов (кнопки, энкодеры), для того, чтобы не было помех и показания были точные.

3. Фильтруйте сигнал — если датчик выдаёт шум (аналоговые датчики).

4. Правильное питание — некоторые датчики работают от 3.3 В, а не от 5 В, завышенное питание может вывести модуль из строя.

5. Используйте библиотеки — большинство сложных датчиков имеют готовые библиотеки для Arduino.

6. Заключение

В этой статье мы рассмотрели основные принципы подключения датчиков к Arduino: от простых аналоговых и цифровых до устройств с интерфейсами I2C и SPI. Теперь вы можете экспериментировать с различными датчиками и создавать свои проекты!

Попробуйте Alashed бесплатно

Подключите школу к пилоту. Генерируйте КМЖ за 2 минуты, ведите CodeStudio уроки, заказывайте оборудование — всё в одном месте.

Попробовать бесплатноДемо