В этом руководстве с ESP32 описывается, как построить метеостанцию с использованием ESP32 с использованием BMP280 и SSD1306. Этот проект ESP32 отображает показания датчиков с помощью ЖК-дисплея. Создание метеостанции с ESP32 — это простой проект IoT, но полезно начать работу с ESP32 и изучить его основные функции. В этом проекте для контроля давления и температуры мы будем использовать BMP280. Итак, этот учебник ESP32 исследует, как:
- используйте BMP280 или BME280, чтобы получить текущую температуру и давление
- используйте SSD1306 ЖК-дисплей, который покажет показания датчиков
Для создания этого проекта мы будем использовать VS Code с плагином PlatformIO . Это очень интересная IDE, которая помогает нам.
Окончательный результат показан на рисунке ниже:
Необходимые компоненты
Чтобы следовать этому руководству, вам понадобятся следующие компоненты:
- ESP32 DEVKIT Плата
- Датчик BMP280
- SSD1306
- Перемычки
- макетировать
Если у вас нет датчика BMP280, вы можете использовать BME280. Если вы используете датчик BME280, вы также можете контролировать влажность.
Описание модуля датчика BMP280
BMP280 — это модуль датчика, который измеряет давление и температуру. Если у вас BME280, можно также измерить влажность. Существует несколько версий этого датчика. В этой метеостанции ESP32 используется протокол связи I2C.
SSD1306 ЖК-дисплей
SSD1306 — это ЖК-дисплей, используемый для отображения показаний датчика. Есть несколько версий этого ЖК-дисплея. Они имеют разную ширину и высоту в терминах пикселей. В этом проекте используется монохромный дисплей 128 × 64. SSD1306 использует протокол I2C, но вы также можете использовать версию SPI. В этом случае вы должны изменить соединения.
Схема: ESP32 + BMP280 + SSD1306
Прежде всего, давайте посмотрим, как подключить ESP32 к BMP280 и к SSD1306. Схема показана ниже:
BMP280 и SSD1306 являются устройствами I2C, поэтому мы должны подключить четыре контакта:
- Vcc контакт
- Заземленный контакт GND
- Часы CLK pin
- Пин SDA данных
Синхронизация и выводы данных подключаются к выводам EPS2 I2C, как показано выше.
Считывание данных с датчика BMP280 с использованием ESP32
На этом первом этапе мы будем считывать данные с датчика (BMP280), подключенного к ESP32. Это очень просто. Прежде всего, мы должны импортировать библиотеку Adafruit для управления BMP280. Если вы не знаете, как это сделать, прочтите параграф «Настройка ESP32 IDE», чтобы узнать, как начать работу с ESP32 и PlatformIO.
Джава
x
1
#include <Arduino.h>
2
#include <WiFi.h>
3
#include <Wire.h>
4
#include <Adafruit_BMP280.h>
5
6
#define BMP_SDA 21
7
#define BMP_SCL 22
8
9
Adafruit_BMP280 bmp280;
10
11
void setup() {
12
Serial.begin(9600);
13
Serial.println("Initializing BMP280");
14
boolean status = bmp280.begin(0x76);
15
if (!status) {
16
Serial.println("Not connected");
17
}
18
}
19
20
void loop() {
21
Serial.println(WiFi.localIP());
22
float temp = bmp280.readTemperature();
23
float press = bmp280.readPressure() / 100;
24
25
Serial.println("Temperature:");
26
Serial.println(temp);
27
}
Код довольно прост. После включения определений код ESP32 объявляет в строке 9 объект, который мы будем использовать для подключения к датчику BMP280. В этом setup()
методе мы устанавливаем соединение между ESP32 и BMP280. Как вы можете заметить, код использует адрес 0x76. Убедитесь, что ваш датчик имеет тот же адрес I2C или измените его в соответствии с вашими потребностями.
Наконец, в loop()
методе мы читаем температуру и давление:
-
bmp280.readTemperature()
-
bmp280.readPressure()
Температура указана в градусах Цельсия, а давление выражено в Паскалях. Чтобы преобразовать его в миллибар, необходимо разделить показания датчика на 100.
Если вы используете BME280, вы также можете определить влажность. Вот и все, мы готовы показать результат.
Отображение показаний датчика с использованием ESP32 и SSD1306
В этой последней части начала работы с проектом ESP32 мы покажем значения, считанные с датчика, и покажем их на ЖК-дисплее (SSD1306). Вы можете использовать другой совместимый дисплей, чтобы показать результат. Давайте посмотрим код:
Джава
x
1
#include <Adafruit_GFX.h>
2
#include <Adafruit_SSD1306.h>
3
4
Adafruit_SSD1306 display(128, 64, &Wire, -1);
5
6
void setup() {
7
...
8
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3c)) {
9
Serial.println(F("SSD1306 allocation failed"));
10
for(;;); // Don't proceed, loop forever
11
}
12
13
display.setTextSize(1);
14
display.clearDisplay();
15
display.setTextColor(SSD1306_WHITE);
16
}
17
18
void loop() {
19
Serial.println(WiFi.localIP());
20
float temp = bmp280.readTemperature();
21
float press = bmp280.readPressure() / 100;
22
23
Serial.println("Temperature:");
24
Serial.println(temp);
25
26
display.clearDisplay();
27
display.setCursor(0,0);
28
display.print("Temperature:");
29
display.println(temp);
30
display.print("Pressure:");
31
display.println(press);
32
display.display();
33
34
delay(6000);
35
}
Несколько вещей, на которые следует обратить внимание в этом фрагменте кода ESP32. Прежде всего, если вы не знаете, как импортировать библиотеку для управления SSD1306, перейдите к следующему абзацу. После импорта определений в строке 4 мы определяем объект, который будет обрабатывать отображение. Дисплей, используемый в этой метеостанции ESP32, представляет собой ЖК-дисплей 128 × 64, ширина и высота — это значения, используемые в определении. Если ваш дисплей имеет разные размеры, замените значения шириной и высотой. В строке 8 код пытается подключиться к дисплею. Наконец, он настраивает отображение, устанавливая размер текста и цвет текста.
В loop()
методе мы просто показываем температуру и давление, считанные с датчика. Это все. Вы построили свою метеостанцию, используя ESP32.
ESP32 — отличное устройство, и его можно использовать в нескольких сценариях. Например, вы можете прочитать, как подключить ESP32 к AWS IoT Core .
Настройка ESP32 IDE
Как только контакты подключены, мы можем сосредоточить наше внимание на том, как настроить IDE, которую мы будем использовать для создания проекта метеостанции ESP32. Как было сказано ранее, мы будем использовать Visual Studio Code с плагином Platform IO. Вы можете скачать код Visual Studio по этой ссылке . Затем нажмите на расширения в левой части меню и найдите плагин PlatformIO. После установки вы получите что-то вроде этого:
Это все, что мы готовы использовать в IDE.
Создание нового проекта ESP32
Настало время создать новый проект ESP32. Откройте плагин PlatformIO и создайте новый проект. Затем выберите платформу ESP32. Вот и все … теперь вы можете создать новый проект, в котором мы разработаем начало работы с метеостанцией ESP32.
Импорт библиотек
После создания проекта мы можем импортировать библиотеки для обработки BMP280 и SSD1306. Нажмите на Библиотеки (меню слева) и найдите:
- BMP280
- SSD1306
Найдя библиотеки Adafruit, вы можете импортировать их в свой проект и будете готовы их использовать.
Завершение …
В конце этой статьи вы узнаете, как начать работу с ESP32 для создания простой метеостанции. Из этого туториала вы узнали, как подключить ESP32 к BMP280 и как показать показания датчика с помощью SSD1306. Вы можете улучшить этот проект ESP32, добавив новые датчики или новые функции.