Метеостанция с журналом
Датчик, часы и карта вместе: раз в минуту строка в файл, имя файла — из даты.
Что на схеме
Плата ESP32 DevKit v1, к ней подключены:
- Датчик BME280: давление, влажность, температура (I2C) —
bme1 - Часы реального времени DS3231 (I2C) —
rtc1 - Карта SD (SPI) —
sd1
Задействованы выводы платы: 3V3, GND, D21, D22, D18, D23, D19, D5. Всего соединений на схеме: 14.
Библиотеки
Пример собирается с библиотеками:
- Adafruit BME280 Library
- Adafruit Unified Sensor
- Adafruit BusIO
- RTClib
Они уже установлены на сервере сборки — отмечать их в проекте вручную не нужно, список приезжает вместе с примером.
Как это устроено в коде
Основное, чем пользуется скетч:
Adafruit_BME280— чтение температуры, влажности и давленияRTClib— работа с часами реального времениDS3231— точные часы с собственным термокомпенсированным генераторомSerial.begin()— открывает монитор порта на заданной скоростиdelay()— пауза, на время которой ядро занято ожиданиемSD.begin()— монтирует карту памяти по SPISerial.println()— печатает строку в монитор портаSerial.printf()— печатает в монитор порта с форматированиемmillis()— миллисекунды с запуска: на них строят работу без остановки
В скетче 52 строки; подключено заголовков: 4. Сам скетч открыт на соседней вкладке — его можно менять и запускать заново.
Что попробовать изменить
- Поменяйте период в константе и посмотрите на анализаторе, как меняется картина на выводе.
- Добавьте свои
Serial.println()в интересных местах — монитор порта здесь и есть отладчик. - Перенесите деталь на другой вывод — на схеме и в коде — и убедитесь, что пример работает так же.
- Нажмите «Сделать копию»: копия станет вашим проектом, и в ней можно менять что угодно.
Смотрите также
- DHT22: температура и влажность — Однопроводный протокол с собственным таймингом. Библиотека читает датчик не чаще раза в две секунды — быстрее он не отве…
- Сигнал о перегреве — Порог с гистерезисом поверх датчика: светодиод и зуммер срабатывают, когда температура выходит за границу.
- Минимум и максимум за сеанс — Накопление статистики без массива: достаточно двух переменных и первого замера.
- BME280: три величины сразу — Датчик отдаёт не градусы, а сырые числа и заводские поправки — считает библиотека. Пример показывает, что из этого получ…
- Высота по давлению — Барометрическая высота: считается от давления на уровне моря, и ошибка в этом одном числе смещает всю шкалу.
- Точка росы и запотевание — Точку росы датчик не измеряет — её считают из температуры и влажности. Формула Магнуса и проверка «стекло запотеет».
схема проекта в виде текста — сюда же вставляется схема из Wokwi
Справка ↗
Схема
Сборка ещё не запускалась.
Печатайте в Serial числа — они станут графиком.
Serial.println(t); — один ряд,
Serial.printf("t:%.1f h:%.1f\n", t, h); — два с подписями.
Формат тот же, что понимает плоттер Arduino IDE.