|

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

Рис. 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.

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

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

void loop() {
  int lightValue = analogRead(A0); // Чтение значения с фоторезистора
  Serial.println(lightValue);      // Вывод в монитор порта
  delay(500);                      // Задержка 0,5 сек
}
Рис. 3 — Схема подключения аналогового датчика температуры LM35

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

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

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

  • VoutA0
  • Vcc5V
  • GNDGND

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

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 (подтяжка к земле)

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

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

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

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

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

  • VCC5V
  • TrigD9
  • EchoD10
  • GNDGND

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

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

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

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

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

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

  • VCC5V
  • DATAD2
  • GNDGND

Код (с использованием библиотеки 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);
}
Рис. 7 — Пример подключения датчика BMP280 к Arduino. Здесь версия модуля со встроенной понижайкой на 3.3V.

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

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

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

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

  1. Проверяйте документацию — у каждого датчика есть datasheet с точными параметрами. Также на этом сайте есть описания модулей и их распиновки.
  2. Используйте подтягивающие резисторы — для цифровых входов (кнопки, энкодеры), для того, чтобы не было помех и показания были точные.
  3. Фильтруйте сигнал — если датчик выдаёт шум (аналоговые датчики).
  4. Правильное питание — некоторые датчики работают от 3.3 В, а не от 5 В, завышенное питание может вывести модуль из строя.
  5. Используйте библиотеки — большинство сложных датчиков имеют готовые библиотеки для Arduino.

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

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

Если у вас есть вопросы — задавайте их в нашем Telegram-чате. Удачных экспериментов! 🚀

5/5 - (8 голосов)


Поделись!
×

Пожалуйста, отключите блокировщик рекламы!
Реклама помогает автору создавать новые статьи!
Спасибо ❤️


Как отключить блокировщик?
Для этого нажмите на значок расширения блокировщика и нажмите "Выключить на этом сайте", затем обновите страницу. Спасибо!
×

Пожалуйста, отключите блокировщик рекламы!
Реклама помогает автору создавать новые статьи!
Спасибо ❤️