Третий проект — датчик по I2C и вывод на экран. Это первый проект, который выглядит как устройство.
Что нужно: датчик (BME280 — температура, влажность, давление), экран OLED 128×64 на SSD1306, четыре провода, плата.
Подключение: VCC и GND на питание, SDA и SCL на пины I2C. У ESP32 по умолчанию SDA=21, SCL=22 (у разных плат бывает иначе). Подтяжки 4.7 кОм на обе линии, если их нет на модулях.
Адреса: BME280 — 0x76 или 0x77 (зависит от перемычки), SSD1306 — 0x3C или 0x3D. Первым делом сканер I2C: он покажет, что реально на шине.
Код: две библиотеки (Adafruit BME280 и Adafruit SSD1306), инициализация, чтение, вывод. Примеры есть в библиотеках — начинай с них, потом правь.
Что проверить, если пусто на экране:
- Адрес: сканер нашёл устройство?
- Питание: 3.3 В на модуле.
- Подтяжки: 3.3 В на SDA и SCL в покое.
- Земля: общая.
- Скорость: попробуй 100 кГц вместо 400.
Дальше: добавить кнопку переключения экранов, лог в Serial, отправку по Wi-Fi.
Время: 40–60 минут. Это проект, после которого становится понятно, как соединяются цифровые модули.
Первый «настоящий» проект: датчик, шина, экран — типичная архитектура любительского устройства.
Собери и выведи три величины. Подыши на датчик — влажность и температура должны вырасти.
Проверь себя
Сканер I2C показывает два адреса: 0x3C и 0x76. Что это значит?
На шине два устройства: экран (0x3C) и датчик (0x76). Адреса не конфликтуют, можно работать с обоими на одних линиях.
-
SparkFun: I2C
подключение датчика
-
Спецификация I²C-bus (NXP UM10204) на i2c-bus.org
адреса и подтяжки