Базовий стартер ESP32
Комплект
Пакувальний лист
ESP32 Вступ
Ви не знайомі з ESP32? Почніть тут! ESP32 — це серія недорогих і малопотужних мікроконтролерів System on a Chip (SoC), розроблених Espressif, які включають бездротові можливості Wi-Fi і Bluetooth і двоядерний процесор. Якщо ви знайомі з ESP8266, то ESP32 є його наступником із багатьма новими функціями.Технічні характеристики ESP32
Якщо ви хочете отримати трохи більше технічних і конкретних даних, ви можете поглянути на наступні детальні характеристики ESP32 (джерело: http://esp32.net/) — для отримання додаткової інформації перевірте таблицю даних):
- Бездротове підключення WiFi: швидкість передачі даних 150.0 Мбіт/с з HT40
- Bluetooth: BLE (Bluetooth Low Energy) і Bluetooth Classic
- Процесор: 32-розрядний мікропроцесор Tensilica Xtensa Dual-Core LX6, що працює на частоті 160 або 240 МГц
- Пам'ять:
- ПЗУ: 448 Кб (для завантаження та основних функцій)
- SRAM: 520 КБ (для даних та інструкцій)
- RTC fas SRAM: 8 КБ (для зберігання даних і основного ЦП під час завантаження RTC з режиму глибокого сну)
- RTC slow SRAM: 8 КБ (для доступу до співпроцесора в режимі глибокого сну) eFuse: 1 Кбіт (з яких 256 біт використовуються для системи (MAC-адреса та конфігурація чіпа), а решта 768 біт зарезервовано для додатків клієнтів, у тому числі Flash-шифрування та ідентифікатор мікросхеми)
Вбудована флеш-пам’ять: флеш-пам’ять, підключена внутрішньо через IO16, IO17, SD_CMD, SD_CLK, SD_DATA_0 і SD_DATA_1 на ESP32-D2WD і ESP32-PICO-D4.
- 0 МіБ (чіпи ESP32-D0WDQ6, ESP32-D0WD і ESP32-S0WD)
- 2 MiB (чіп ESP32-D2WD)
- 4 MiB (модуль ESP32-PICO-D4 SiP)
Low Power: гарантує, що ви все ще можете використовувати перетворення АЦП, наприкладample, під час глибокого сну.
Периферійний вхід/вихід:
- периферійний інтерфейс із DMA, що включає ємнісний сенсорний пристрій
- АЦП (аналогово-цифровий перетворювач)
- ЦАП (цифро-аналоговий перетворювач)
- I²C (інтегральна схема)
- UART (універсальний асинхронний приймач/передавач)
- SPI (послідовний периферійний інтерфейс)
- I²S (інтегрований міжчиповий звук)
- RMII (скорочений незалежний від медіа інтерфейс)
- ШІМ (широтно-імпульсна модуляція)
Безпека: апаратні прискорювачі для AES і SSL/TLS
Плати розвитку ESP32
ESP32 відноситься до чистого чіпа ESP32. Однак термін «ESP32» також використовується для позначення плат розробки ESP32. Використовувати чисті чіпи ESP32 нелегко чи практично, особливо під час навчання, тестування та створення прототипів. У більшості випадків ви захочете використовувати плату розробки ESP32.
Ми будемо використовувати плату ESP32 DEVKIT V1 як еталон. На малюнку нижче показано плату ESP32 DEVKIT V1, версія з 30 контактами GPIO.Технічні характеристики – ESP32 DEVKIT V1
У наведеній нижче таблиці наведено короткий перелік функцій і технічних характеристик плати ESP32 DEVKIT V1 DOIT:
Кількість ядер | 2 (двоядерний) |
Wi-Fi | 2.4 ГГц до 150 Мбіт/с |
Bluetooth | BLE (Bluetooth Low Energy) і застарілий Bluetooth |
Архітектура | 32 біти |
Тактова частота | До 240 МГц |
ОЗУ | 512 КБ |
Шпильки | 30 (в залежності від моделі) |
Периферійні пристрої | Ємнісний сенсорний, АЦП (аналогово-цифровий перетворювач), ЦАП (цифро-аналоговий перетворювач), 12C (інтегральна схема), UART (універсальний асинхронний приймач/передавач), CAN 2.0 (Мережа зони контролера), SPI (послідовний периферійний інтерфейс) , 12S (інтегрований Inter-IC Звук), RMII (зменшений медіа-незалежний інтерфейс), ШІМ (широтно-імпульсна модуляція) тощо. |
Вбудовані кнопки | Кнопки RESET і BOOT |
Вбудовані світлодіоди | вбудований синій світлодіод, підключений до GPIO2; вбудований червоний світлодіод, який показує, що плата живиться |
USB до UART міст |
CP2102 |
Він оснащений інтерфейсом microUSB, за допомогою якого ви можете підключити плату до комп’ютера, щоб завантажити код або подати живлення.
Він використовує мікросхему CP2102 (USB до UART) для зв’язку з вашим комп’ютером через COM-порт за допомогою послідовного інтерфейсу. Інша популярна мікросхема CH340. Перевірте, який перетворювач мікросхем USB на UART на вашій платі, тому що вам потрібно буде встановити необхідні драйвери, щоб ваш комп’ютер міг обмінюватися даними з платою (більше інформації про це далі в цьому посібнику).
Ця плата також оснащена кнопкою RESET (може мати позначку EN) для перезапуску плати та кнопкою BOOT для переведення плати в режим мигання (доступна для отримання коду). Зауважте, що деякі плати можуть не мати кнопки BOOT.
Він також оснащений вбудованим синім світлодіодом, який внутрішньо підключено до GPIO 2. Цей світлодіод корисний для налагодження, щоб надати певний візуальний фізичний вихід. Також є червоний світлодіод, який загоряється, коли ви подаєте живлення на плату.Розпиновка ESP32
Периферійні пристрої ESP32 включають:
- 18 каналів аналого-цифрового перетворювача (АЦП).
- 3 інтерфейси SPI
- 3 інтерфейси UART
- 2 інтерфейси I2C
- 16 канали виходу ШІМ
- 2 цифро-аналогових перетворювача (DAC)
- 2 інтерфейси I2S
- 10 ємнісних датчиків GPIO
Функції АЦП (аналогово-цифровий перетворювач) і ЦАП (цифро-аналоговий перетворювач) призначені для певних статичних контактів. Однак ви можете вирішити, які висновки є UART, I2C, SPI, PWM тощо – вам просто потрібно призначити їх у коді. Це можливо завдяки функції мультиплексування чіпа ESP32.
Хоча ви можете визначити властивості контактів у програмному забезпеченні, існують контакти, призначені за замовчуванням, як показано на наступному малюнкуКрім того, існують шпильки зі спеціальними функціями, які роблять їх придатними чи ні для конкретного проекту. У наступній таблиці показано, які піни найкраще використовувати як входи та виходи, а з якими потрібно бути обережними.
Шпильки, виділені зеленим, можна використовувати. Ті, що виділені жовтим кольором, можна використовувати, але вам потрібно звернути увагу, оскільки вони можуть мати неочікувану поведінку переважно під час завантаження. Виводи, виділені червоним, не рекомендується використовувати як входи або виходи.
GP ІО | Введення | Вихід | Примітки |
0 | підтягнувся | OK | виводить сигнал ШІМ під час завантаження, має бути НИЗЬКИЙ, щоб увійти в режим мигання |
1 | контакт TX | OK | вихід налагодження під час завантаження |
2 | OK | OK | підключений до бортового світлодіода, потрібно залишити плаваючим або LOW, щоб увійти в режим миготіння |
3 | OK | RX штифт | HIGH при завантаженні |
4 | OK | OK | |
5 | OK | OK | виводить сигнал ШІМ під час завантаження, шпилька для обв’язки |
12 | OK | OK | черевик виходить з ладу, якщо тягнути високо, шпилька |
13 | OK | OK | |
14 | OK | OK | виводить сигнал ШІМ під час завантаження |
15 | OK | OK | виводить сигнал ШІМ під час завантаження, шпилька для обв’язки |
16 | OK | OK | |
17 | OK | OK | |
18 | OK | OK | |
19 | OK | OK | |
21 | OK | OK | |
22 | OK | OK | |
23 | OK | OK | |
25 | OK | OK | |
26 | OK | OK | |
27 | OK | OK | |
32 | OK | OK | |
33 | OK | OK | |
34 | OK | лише введення | |
35 | OK | лише введення | |
36 | OK | лише введення | |
39 | OK | лише введення |
Продовжуйте читати, щоб отримати більш детальний і поглиблений аналіз GPIO ESP32 і його функцій.
Введіть лише шпильки
GPIO 34–39 є GPI – контакти лише для введення. Ці контакти не мають внутрішніх резисторів підтягування або витягування. Їх не можна використовувати як виходи, тому використовуйте ці контакти лише як входи:
- GPIO 34
- GPIO 35
- GPIO 36
- GPIO 39
Спалах SPI вбудований в ESP-WROOM-32
GPIO 6 - GPIO 11 доступні в деяких платах розробки ESP32. Однак ці контакти підключаються до інтегрованого спалаху SPI на чіпі ESP-WROOM-32 і не рекомендуються для інших цілей. Отже, не використовуйте ці шпильки у своїх проектах:
- GPIO 6 (SCK/CLK)
- GPIO 7 (SDO/SD0)
- GPIO 8 (SDI/SD1)
- GPIO 9 (SHD/SD2)
- GPIO 10 (SWP/SD3)
- GPIO 11 (CSC/CMD)
Ємнісні сенсорні GPIO
ESP32 має 10 внутрішніх ємнісних сенсорних датчиків. Вони можуть відчути зміни будь-чого, що утримує електричний заряд, наприклад людської шкіри. Таким чином, вони можуть виявляти зміни, викликані під час торкання GPIO пальцем. Ці контакти можна легко інтегрувати в ємнісні панелі та замінити механічні кнопки. Ємнісні сенсорні контакти також можна використовувати для виведення ESP32 із глибокого сну. Ці внутрішні датчики дотику підключені до цих GPIO:
- T0 (GPIO 4)
- T1 (GPIO 0)
- T2 (GPIO 2)
- T3 (GPIO 15)
- T4 (GPIO 13)
- T5 (GPIO 12)
- T6 (GPIO 14)
- T7 (GPIO 27)
- T8 (GPIO 33)
- T9 (GPIO 32)
Аналого-цифровий перетворювач (АЦП)
ESP32 має 18 x 12 біт вхідних каналів АЦП (тоді як ESP8266 має тільки 1 x 10 біт АЦП). Це GPIO, які можна використовувати як АЦП і відповідні канали:
- ADC1_CH0 (GPIO 36)
- ADC1_CH1 (GPIO 37)
- ADC1_CH2 (GPIO 38)
- ADC1_CH3 (GPIO 39)
- ADC1_CH4 (GPIO 32)
- ADC1_CH5 (GPIO 33)
- ADC1_CH6 (GPIO 34)
- ADC1_CH7 (GPIO 35)
- ADC2_CH0 (GPIO 4)
- ADC2_CH1 (GPIO 0)
- ADC2_CH2 (GPIO 2)
- ADC2_CH3 (GPIO 15)
- ADC2_CH4 (GPIO 13)
- ADC2_CH5 (GPIO 12)
- ADC2_CH6 (GPIO 14)
- ADC2_CH7 (GPIO 27)
- ADC2_CH8 (GPIO 25)
- ADC2_CH9 (GPIO 26)
Примітка: Контакти ADC2 не можна використовувати, коли використовується Wi-Fi. Отже, якщо ви використовуєте Wi-Fi і у вас виникли проблеми з отриманням значення від ADC2 GPIO, ви можете розглянути можливість використання замість нього ADC1 GPIO. Це має вирішити вашу проблему.
Вхідні канали АЦП мають 12-бітну роздільну здатність. Це означає, що ви можете отримати аналогові показання в діапазоні від 0 до 4095, де 0 відповідає 0 В, а 4095 – 3.3 В. Ви також можете встановити роздільну здатність ваших каналів на коді та діапазоні АЦП.
Висновки АЦП ESP32 не мають лінійної поведінки. Ймовірно, ви не зможете відрізнити 0 від 0.1 В або від 3.2 до 3.3 В. Ви повинні мати це на увазі, використовуючи контакти АЦП. Ви отримаєте поведінку, подібну до тієї, що показана на наступному малюнку.Цифро-аналоговий перетворювач (DAC)
На ESP2 є 8 x 32 біт ЦАП канали для перетворення цифрових сигналів в аналоговіtage сигнальні виходи. Це канали DAC:
- DAC1 (GPIO25)
- DAC2 (GPIO26)
RTC GPIO
На ESP32 є підтримка RTC GPIO. GPIO, спрямовані до підсистеми низького споживання RTC, можна використовувати, коли ESP32 перебуває в глибокому сні. Ці RTC GPIO можна використовувати для виведення ESP32 із глибокого сну, коли Ultra Low
Працює співпроцесор Power (ULP). Наступні GPIO можна використовувати як зовнішнє джерело пробудження.
- RTC_GPIO0 (GPIO36)
- RTC_GPIO3 (GPIO39)
- RTC_GPIO4 (GPIO34)
- RTC_GPIO5 (GPIO35)
- RTC_GPIO6 (GPIO25)
- RTC_GPIO7 (GPIO26)
- RTC_GPIO8 (GPIO33)
- RTC_GPIO9 (GPIO32)
- RTC_GPIO10 (GPIO4)
- RTC_GPIO11 (GPIO0)
- RTC_GPIO12 (GPIO2)
- RTC_GPIO13 (GPIO15)
- RTC_GPIO14 (GPIO13)
- RTC_GPIO15 (GPIO12)
- RTC_GPIO16 (GPIO14)
- RTC_GPIO17 (GPIO27)
ШІМ
ШІМ-контролер ESP32 LED має 16 незалежних каналів, які можна налаштувати для генерації ШІМ-сигналів з різними властивостями. Усі контакти, які можуть виступати як виходи, можна використовувати як контакти ШІМ (GPIO 34–39 не можуть генерувати ШІМ).
Щоб встановити ШІМ-сигнал, необхідно визначити такі параметри в коді:
- частота сигналу;
- Робочий цикл;
- канал ШІМ;
- GPIO, куди ви хочете вивести сигнал.
I2C
ESP32 має два канали I2C, і будь-який контакт можна встановити як SDA або SCL. При використанні ESP32 з Arduino IDE стандартними контактами I2C є:
- GPIO 21 (SDA)
- GPIO 22 (SCL)
Якщо ви хочете використовувати інші піни під час використання бібліотеки проводів, вам потрібно просто зателефонувати:
Wire.begin(SDA, SCL);
SPI
За замовчуванням зіставлення контактів для SPI таке:
SPI | МОЗІ | МІСО | CLK | CS |
ВСПІ | GPIO 23 | GPIO 19 | GPIO 18 | GPIO 5 |
HSPI | GPIO 13 | GPIO 12 | GPIO 14 | GPIO 15 |
Переривання
Усі GPIO можна налаштувати як переривання.
Шпильки для обв’язки
Мікросхема ESP32 має наступні контакти для обв’язки:
- GPIO 0 (має бути НИЗЬКИЙ, щоб перейти в режим завантаження)
- GPIO 2 (має бути плаваючим або LOW під час завантаження)
- GPIO 4
- GPIO 5 (має бути HIGH під час завантаження)
- GPIO 12 (має бути LOW під час завантаження)
- GPIO 15 (має бути HIGH під час завантаження)
Вони використовуються для переведення ESP32 у режим завантажувача або прошивки. На більшості плат розробки з вбудованим USB/Serial вам не потрібно турбуватися про стан цих контактів. Плата переводить контакти в правильний стан для перепрошивки або режиму завантаження. Більше інформації про вибір режиму завантаження ESP32 можна знайти тут.
Однак, якщо у вас є периферійні пристрої, підключені до цих контактів, у вас можуть виникнути проблеми з спробою завантажити новий код, прошити ESP32 новою мікропрограмою або скинути плату. Якщо у вас є якісь периферійні пристрої, підключені до шпильок для обв’язки, і у вас виникають проблеми із завантаженням коду або прошивкою ESP32, це може бути тому, що ці периферійні пристрої заважають ESP32 увійти в правильний режим. Прочитайте документацію щодо вибору режиму завантаження, щоб направити вас у правильному напрямку. Після скидання, перепрошивання або завантаження ці контакти працюють належним чином.
Шпильки ВИСОКО під час завантаження
Деякі GPIO змінюють свій стан на HIGH або видають сигнали ШІМ під час завантаження чи скидання.
Це означає, що якщо у вас є виходи, підключені до цих GPIO, ви можете отримати несподівані результати під час скидання або завантаження ESP32.
- GPIO 1
- GPIO 3
- GPIO 5
- GPIO 6 – GPIO 11 (підключено до вбудованої флеш-пам’яті SPI ESP32 – не рекомендується використовувати).
- GPIO 14
- GPIO 15
Увімкнути (EN)
Увімкнути (EN) — це контакт увімкнення регулятора 3.3 В. Він підтягнутий, тому підключіть його до заземлення, щоб вимкнути регулятор 3.3 В. Це означає, що ви можете використовувати цей штифт, підключений до кнопки, щоб перезавантажити ESP32, наприкладample.
Споживаний струм GPIO
Абсолютний максимальний струм, який споживає один GPIO, становить 40 мА відповідно до розділу «Рекомендовані умови експлуатації» в таблиці даних ESP32.
ESP32 Вбудований датчик Холла
ESP32 також має вбудований датчик Холла, який виявляє зміни в магнітному полі в оточенні
ESP32 Arduino IDE
Існує надбудова для Arduino IDE, яка дозволяє програмувати ESP32 за допомогою Arduino IDE та її мови програмування. У цьому підручнику ми покажемо вам, як встановити плату ESP32 в Arduino IDE незалежно від того, використовуєте ви Windows, Mac OS X або Linux.
Необхідні умови: встановлено Arduino IDE
Перш ніж розпочати цю процедуру інсталяції, вам потрібно встановити на комп’ютері Arduino IDE. Є дві версії Arduino IDE, які можна встановити: версія 1 і версія 2.
Ви можете завантажити та встановити Arduino IDE, натиснувши таке посилання: arduino.cc/en/Main/Software
Яку версію Arduino IDE ми рекомендуємо? На даний момент є деякі plugins для ESP32 (наприклад, SPIFFS FileSystem Uploader Plugin), які ще не підтримуються на Arduino 2. Отже, якщо ви збираєтеся використовувати плагін SPIFFS у майбутньому, ми рекомендуємо встановити застарілу версію 1.8.X. Вам просто потрібно прокрутити вниз сторінку програмного забезпечення Arduino, щоб знайти його.
Встановлення надбудови ESP32 в Arduino IDE
Щоб установити плату ESP32 у вашу Arduino IDE, виконайте наступні інструкції:
- У вашій Arduino IDE перейдіть до File> Налаштування
- Введіть наступне в «Additional Board Manager URLs” поле:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Потім натисніть кнопку «ОК»:Примітка: якщо у вас уже є плати ESP8266 URL, ви можете відокремити URLs через кому наступним чином:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json,
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Відкрийте диспетчер дощок. Перейдіть до Інструменти > Дошка > Менеджер дощок…шукати ESP32 and press install button for the “ESP32 by Espressif Systems“:
Ось і все. Він повинен бути встановлений через кілька секунд.
Завантажте тестовий код
Підключіть плату ESP32 до комп’ютера. Відкривши Arduino IDE, виконайте такі дії:
- Виберіть свою дошку в меню Інструменти > Дошка (у моєму випадку це модуль ESP32 DEV)
- Виберіть порт (якщо ви не бачите COM-порт у своєму Arduino IDE, вам потрібно встановити драйвери VCP CP210x USB to UART Bridge):
- Відкрийте наступний прикладample під File > Напрamples > WiFi
(ESP32) > WiFiScan - У вашій Arduino IDE відкриється новий ескіз:
- Натисніть кнопку «Завантажити» в Arduino IDE. Зачекайте кілька секунд, поки код компілюється та завантажується на вашу дошку.
- Якщо все пройшло так, як очікувалося, ви повинні побачити повідомлення «Завантаження завершено». повідомлення.
- Відкрийте Arduino IDE Serial Monitor зі швидкістю передачі даних 115200 бод:
- Натисніть вбудовану кнопку «Увімкнути» ESP32, і ви побачите мережі, доступні поблизу вашого ESP32:
Усунення несправностей
Якщо ви намагаєтеся завантажити новий ескіз на свій ESP32 і отримуєте це повідомлення про помилку «Сталася фатальна помилка: не вдалося підключитися до ESP32: час очікування минув… Підключення…». Це означає, що ваш ESP32 не перебуває в режимі прошивки/завантаження.
Вибравши правильну назву плати та COM-порт, виконайте такі дії:
Утримуйте кнопку «BOOT» на платі ESP32
- Натисніть кнопку «Завантажити» в Arduino IDE, щоб завантажити свій ескіз:
- Коли ви побачите «Підключення…». повідомлення у вашій Arduino IDE, відпустіть палець від кнопки «BOOT»:
- Після цього ви повинні побачити повідомлення «Завантаження завершено».
Ось і все. Ваш ESP32 має запустити новий ескіз. Натисніть кнопку «ВКЛЮЧИТИ», щоб перезапустити ESP32 і запустити новий завантажений ескіз.
Вам також доведеться повторювати цю послідовність кнопок кожного разу, коли ви хочете завантажити новий ескіз.
Проект 1 ESP32 Входи Виходи
У цьому посібнику з початку роботи ви дізнаєтеся, як зчитувати цифрові входи, як-от кнопковий перемикач, і керувати цифровими виходами, як-от світлодіод, за допомогою ESP32 із Arduino IDE.
передумови
Ми запрограмуємо ESP32 за допомогою Arduino IDE. Отже, перед тим, як продовжити, переконайтеся, що у вас встановлено надбудову для плат ESP32:
- Встановлення надбудови ESP32 в Arduino IDE
Цифрові виходи керування ESP32
Спочатку вам потрібно встановити GPIO, яким ви хочете керувати, як ВИХІД. Використовуйте функцію pinMode() наступним чином:
pinMode(GPIO, ВИХІД);
Щоб керувати цифровим виходом, вам просто потрібно використовувати функцію digitalWrite(), яка приймає як аргументи GPIO (число int), на який ви посилаєтеся, і стан, HIGH або LOW.
digitalWrite(GPIO, STATE);
Усі GPIO можна використовувати як виходи, за винятком GPIO 6–11 (підключених до інтегрованого флеш-пам’яті SPI) і GPIO 34, 35, 36 і 39 (вхід лише GPIO);
Докладніше про ESP32 GPIO: Довідковий посібник ESP32 GPIO
ESP32 Читання цифрових входів
Спочатку встановіть GPIO, який ви хочете читати як INPUT, за допомогою функції pinMode() наступним чином:
pinMode(GPIO, INPUT);
Щоб прочитати цифровий вхід, наприклад кнопку, ви використовуєте функцію digitalRead(), яка приймає як аргумент GPIO (число int), на який ви посилаєтеся.
digitalRead(GPIO);
Усі GPIO ESP32 можна використовувати як входи, за винятком GPIO 6–11 (підключених до вбудованого флеш-пам’яті SPI).
Докладніше про ESP32 GPIO: Довідковий посібник ESP32 GPIO
Проект Прample
Щоб показати вам, як використовувати цифрові входи та цифрові виходи, ми створимо простий проект напрampз кнопкою та світлодіодом. Ми прочитаємо стан кнопки та відповідно засвітимо світлодіод, як показано на малюнку нижче.
Потрібні запчастини
Ось список частин, які вам знадобляться для побудови схеми:
- ESP32 DEVKIT V1
- 5 мм світлодіод
- Резистор 220 Ом
- Натиснути кнопку
- Резистор 10 кОм
- Макетна дошка
- Перемички
Принципова схема
Перш ніж приступити, потрібно зібрати схему зі світлодіодом і кнопкою.
Ми підключимо світлодіод до GPIO 5, а кнопку – до GPIO 4.Код
Відкрийте код Project_1_ESP32_Inputs_Outputs.ino в arduino IDEЯк працює Кодекс
У наступних двох рядках ви створюєте змінні для призначення контактів:
Кнопка підключена до GPIO 4, а світлодіодний індикатор підключений до GPIO 5. При використанні Arduino IDE з ESP32 4 відповідає GPIO 4, а 5 відповідає GPIO 5.
Далі ви створюєте змінну для збереження стану кнопки. За замовчуванням це 0 (не натиснуто).
int buttonState = 0;
У setup() ви ініціалізуєте кнопку як ВХІД, а світлодіод як ВИХІД.
Для цього ви використовуєте функцію pinMode(), яка приймає пін, на який ви посилаєтеся, і режим: INPUT або OUTPUT.
pinMode(кнопкаPin, INPUT);
pinMode(ledPin, ВИХІД);
У циклі () ви читаєте стан кнопки та відповідно встановлюєте світлодіод.
У наступному рядку ви читаєте стан кнопки та зберігаєте його в змінній buttonState.
Як ми бачили раніше, ви використовуєте функцію digitalRead().
buttonState = digitalRead(buttonPin);
Наступний оператор if перевіряє, чи стан кнопки є HIGH. Якщо так, світлодіод вмикається за допомогою функції digitalWrite(), яка приймає як аргумент ledPin і стан HIGH.
if (buttonState == HIGH)Якщо стан кнопки не ВИСОКИЙ, ви вимикаєте світлодіод. Просто встановіть LOW як другий аргумент у функції digitalWrite().
Завантаження коду
Перш ніж натиснути кнопку завантаження, перейдіть до Інструменти > Дошка та виберіть дошку: DOIT ESP32 DEVKIT V1.
Перейдіть до Інструменти > Порт і виберіть COM-порт, до якого підключено ESP32. Потім натисніть кнопку завантаження та дочекайтеся повідомлення «Завантаження завершено».Примітка. Якщо ви бачите багато крапок (підключення…__…__) у вікні налагодження та повідомлення «Не вдалося підключитися до ESP32: минув час очікування заголовка пакета», це означає, що вам потрібно натиснути вбудовану кнопку ЗАВАНТАЖЕННЯ ESP32 кнопку після крапок
починають з'являтися. Усунення несправностей
Демонстрація
Після завантаження коду протестуйте свою схему. Ваш світлодіод повинен засвітитися, коли ви натискаєте кнопку:І вимкніть, коли відпустите:
Аналогові входи Project 2 ESP32
Цей проект показує, як читати аналогові входи за допомогою ESP32 за допомогою Arduino IDE.
Аналогове зчитування корисне для зчитування значень зі змінних резисторів, таких як потенціометри або аналогові датчики.
Аналогові входи (ADC)
Зчитування аналогового значення за допомогою ESP32 означає, що ви можете вимірювати різний об’ємtage рівні від 0 В до 3.3 В.
ВипtagПотім виміряне значення e присвоюється значенню від 0 до 4095, у якому 0 В відповідає 0, а 3.3 В відповідає 4095.tage між 0 В і 3.3 В буде надано відповідне значення між ними.АЦП є нелінійним
В ідеалі ви очікували б лінійної поведінки при використанні контактів АЦП ESP32.
Однак цього не відбувається. Ви отримаєте таку поведінку, як показано на наступній діаграмі:Така поведінка означає, що ваш ESP32 не може відрізнити 3.3 В від 3.2 В.
Ви отримаєте однакове значення для обох томівtages: 4095.
Те саме відбувається при дуже низькій гучностіtagЗначення e: для 0 В і 0.1 В ви отримаєте однакове значення: 0. Потрібно пам’ятати про це, використовуючи контакти АЦП ESP32.
Функція analogRead().
Зчитувати аналоговий вхід за допомогою ESP32 за допомогою Arduino IDE так само просто, як використовувати функцію analogRead(). Він приймає як аргумент GPIO, який ви хочете прочитати:
analogRead(GPIO);
У платі DEVKIT V15board (версія з 1 GPIO) доступно лише 30.
Візьміть розводку плати ESP32 і знайдіть контакти АЦП. На малюнку нижче вони виділені червоною рамкою.Ці контакти аналогового входу мають 12-бітну роздільну здатність. Це означає, що коли ви читаєте аналоговий вхід, його діапазон може змінюватися від 0 до 4095.
Примітка: контакти ADC2 не можна використовувати, коли використовується Wi-Fi. Отже, якщо ви використовуєте Wi-Fi і у вас виникли проблеми з отриманням значення від ADC2 GPIO, ви можете розглянути можливість використання замість нього ADC1 GPIO, це повинно вирішити вашу проблему.
Щоб побачити, як усе пов’язано, ми зробимо простий прикладample для зчитування аналогового значення з потенціометра.
Потрібні запчастини
Для цього ексample, вам потрібні наступні частини:
- Плата ESP32 DEVKIT V1
- Потенціометр
- Макетна дошка
- Перемички
Схема
Підключіть потенціометр до вашого ESP32. Середній штифт потенціометра слід під’єднати до GPIO 4. Ви можете використовувати наведену нижче принципову схему як довідник.Код
Ми запрограмуємо ESP32 за допомогою Arduino IDE, тому переконайтеся, що у вас встановлено доповнення ESP32, перш ніж продовжувати: (Якщо ви вже виконали цей крок, можете перейти до наступного.)
Встановлення надбудови ESP32 в Arduino IDE
Відкрийте код Project_2_ESP32_Inputs_Outputs.ino в arduino IDEЦей код просто зчитує значення з потенціометра та друкує ці значення в послідовному моніторі.
У коді ви починаєте з визначення GPIO, до якого підключений потенціометр. У цьому ексample, GPIO 4.У setup() ініціалізуйте послідовний зв’язок зі швидкістю передачі даних 115200 бод.
У loop() використовуйте функцію analogRead(), щоб прочитати аналоговий вхід із potPin.
Нарешті, роздрукуйте значення, зчитані з потенціометра в послідовному моніторі.
Завантажте наданий код у свій ESP32. Переконайтеся, що ви вибрали правильну плату та COM-порт у меню «Інструменти».
Тестування Example
Після завантаження коду та натискання кнопки скидання ESP32 відкрийте монітор послідовного порту зі швидкістю передачі даних 115200 бод. Поверніть потенціометр і подивіться, як змінюються значення.Максимальне значення, яке ви отримаєте, — 4095, а мінімальне — 0.
Підведення підсумків
У цій статті ви дізналися, як читати аналогові входи за допомогою ESP32 з Arduino IDE. Підсумовуючи:
- Плата ESP32 DEVKIT V1 DOIT (версія з 30 контактами) має 15 контактів АЦП, які можна використовувати для читання аналогових входів.
- Ці контакти мають роздільну здатність 12 біт, що означає, що ви можете отримати значення від 0 до 4095.
- Щоб прочитати значення в Arduino IDE, ви просто використовуєте функцію analogRead().
- Висновки АЦП ESP32 не мають лінійної поведінки. Ймовірно, ви не зможете відрізнити 0 від 0.1 В або від 3.2 до 3.3 В. Ви повинні мати це на увазі, використовуючи контакти АЦП.
Проект 3 ESP32 PWM (аналоговий вихід)
У цьому посібнику ми покажемо вам, як генерувати сигнали ШІМ за допомогою ESP32 за допомогою Arduino IDE. Як колишнійampми створимо просту схему, яка затемнює світлодіод за допомогою світлодіодного ШІМ-контролера ESP32.ШІМ-контролер ESP32 LED
ESP32 має світлодіодний ШІМ-контролер із 16 незалежними каналами, які можна налаштувати для генерування ШІМ-сигналів з різними властивостями.
Ось кроки, які вам потрібно буде виконати, щоб затемнити світлодіод з ШІМ за допомогою Arduino IDE:
- Спочатку потрібно вибрати канал ШІМ. Є 16 каналів від 0 до 15.
- Потім потрібно встановити частоту сигналу ШІМ. Для світлодіода підходить частота 5000 Гц.
- Вам також потрібно встановити роздільну здатність сигналу: у вас є роздільна здатність від 1 до 16 біт. Ми будемо використовувати 8-бітну роздільну здатність, що означає, що ви можете контролювати яскравість світлодіода, використовуючи значення від 0 до 255.
- Далі вам потрібно вказати, на який GPIO або GPIO з’являтиметься сигнал. Для цього ви будете використовувати таку функцію:
ledcAttachPin(GPIO, канал)
Ця функція приймає два аргументи. Перший — це GPIO, який буде виводити сигнал, а другий — це канал, який генеруватиме сигнал. - Нарешті, щоб контролювати яскравість світлодіода за допомогою ШІМ, ви використовуєте таку функцію:
ledcWrite(канал, робочий цикл)
Ця функція приймає як аргументи канал, який генерує сигнал ШІМ, і робочий цикл.
Потрібні запчастини
Для виконання цього підручника вам знадобляться такі частини:
- Плата ESP32 DEVKIT V1
- 5 мм світлодіод
- Резистор 220 Ом
- Макетна дошка
- Перемички
Схема
Підключіть світлодіод до вашого ESP32, як показано на наступній схематичній схемі. Світлодіод має бути підключений до GPIO 4.Примітка: Ви можете використовувати будь-який пін, якщо він може працювати як вихід. Усі контакти, які можуть діяти як виходи, можна використовувати як контакти ШІМ. Щоб отримати додаткові відомості про ESP32 GPIO, прочитайте: ESP32 Pinout Reference: Які контакти GPIO слід використовувати?
Код
Ми запрограмуємо ESP32 за допомогою Arduino IDE, тому переконайтеся, що у вас встановлено доповнення ESP32, перш ніж продовжувати: (Якщо ви вже виконали цей крок, можете перейти до наступного.)
Встановлення надбудови ESP32 в Arduino IDE
Відкрийте код Project_3_ESP32_PWM.ino в arduino IDEВи починаєте з визначення контакту, до якого прикріплено світлодіод. У цьому випадку світлодіод підключено до GPIO 4.
Потім ви встановлюєте властивості сигналу ШІМ. Ви визначаєте частоту 5000 Гц, вибираєте канал 0 для генерації сигналу та встановлюєте роздільну здатність 8 біт. Ви можете вибрати інші властивості, відмінні від цих, щоб генерувати різні сигнали ШІМ.
У setup() вам потрібно налаштувати LED PWM з властивостями, які ви визначили раніше, використовуючи функцію ledcSetup(), яка приймає як аргументи ledChannel, частоту та роздільну здатність, як показано нижче:
Далі вам потрібно вибрати GPIO, з якого ви отримуватимете сигнал. Для цього використовуйте функцію ledcAttachPin(), яка приймає як аргументи GPIO, куди ви хочете отримати сигнал, і канал, який генерує сигнал. У цьому ексample, ми отримаємо сигнал у ledPin GPIO, який відповідає GPIO 4. Канал, який генерує сигнал, є ledChannel, що відповідає каналу 0.
У циклі ви будете змінювати робочий цикл від 0 до 255, щоб збільшити яскравість світлодіода.
А потім між 255 і 0, щоб зменшити яскравість.
Щоб встановити яскравість світлодіода, вам просто потрібно використовувати функцію ledcWrite(), яка приймає як аргументи канал, який генерує сигнал, і робочий цикл.
Оскільки ми використовуємо 8-бітну роздільну здатність, робочий цикл буде керуватися за допомогою значення від 0 до 255. Зауважте, що у функції ledcWrite() ми використовуємо канал, який генерує сигнал, а не GPIO.
Тестування Example
Завантажте код на свій ESP32. Переконайтеся, що вибрано правильну плату та COM-порт. Подивіться на свою схему. Ви повинні мати тьмяний світлодіод, який збільшує та зменшує яскравість.
Проект 4 ESP32 PIR датчик руху
У цьому проекті показано, як виявляти рух за допомогою ESP32 за допомогою датчика руху PIR. Зумер подає сигнал, коли виявлено рух, і вимкне сигнал, якщо рух не буде виявлено протягом заданого часу (наприклад, 4 секунди).
Як працює датчик руху HC-SR501
.Принцип роботи датчика HC-SR501 заснований на зміні інфрачервоного випромінювання на рухомий об'єкт. Щоб бути виявлений датчиком HC-SR501, об'єкт повинен відповідати двом вимогам:
- Об'єкт випромінює в інфрачервоному діапазоні.
- Об’єкт рухається або тремтить
Отже:
Якщо об’єкт випромінює інфрачервоні промені, але не рухається (наприклад, людина стоїть нерухомо, не рухаючись), датчик не виявляє його.
Якщо об’єкт рухається, але НЕ випромінює інфрачервоні промені (наприклад, робот або транспортний засіб), датчик НЕ виявляє його.
Знайомство з таймерами
У цьому ексample ми також представимо таймери. Ми хочемо, щоб світлодіод світився протягом заданої кількості секунд після виявлення руху. Замість використання функції delay(), яка блокує ваш код і не дозволяє вам робити нічого протягом певної кількості секунд, ми повинні використовувати таймер.Функція delay().
Ви повинні бути знайомі з функцією delay(), оскільки вона широко використовується. Ця функція досить проста у використанні. Він приймає одне ціле число як аргумент.
Це число представляє час у мілісекундах, який програма має чекати до переходу до наступного рядка коду.Коли ви виконуєте затримку (1000), ваша програма зупиняється на цьому рядку на 1 секунду.
delay() є функцією блокування. Функції блокування не дозволяють програмі виконувати будь-які інші дії, доки це конкретне завдання не буде виконано. Якщо вам потрібно, щоб кілька завдань виконувалися одночасно, ви не можете використовувати delay().
Для більшості проектів вам слід уникати використання затримок і замість цього використовувати таймери.
Функція millis().
Використовуючи функцію millis(), ви можете повернути кількість мілісекунд, що минула з моменту запуску програми.Чому ця функція корисна? Тому що за допомогою математики ви можете легко перевірити, скільки часу минуло, не блокуючи свій код.
Потрібні запчастини
Щоб дотримуватися цього підручника, вам потрібні наступні частини
- Плата ESP32 DEVKIT V1
- PIR датчик руху (HC-SR501)
- Активний зумер
- Перемички
- Макетна дошка
СхемаПримітка: Робочий томtage HC-SR501 становить 5 В. Використовуйте контакт Vin, щоб живити його.
Код
Перш ніж продовжити цей підручник, вам слід встановити надбудову ESP32 у вашій Arduino IDE. Виконайте один із наведених нижче посібників, щоб інсталювати ESP32 у Arduino IDE, якщо ви цього ще не зробили. (Якщо ви вже виконали цей крок, ви можете перейти до наступного).
Встановлення надбудови ESP32 в Arduino IDE
Відкрийте код Project_4_ESP32_PIR_Motion_Sensor.ino в arduino IDE.
Демонстрація
Завантажте код на плату ESP32. Переконайтеся, що вибрано правильну плату та COM-порт. Завантажте довідковий код.
Відкрийте Serial Monitor зі швидкістю передачі даних 115200 бод.Проведіть рукою перед датчиком PIR. Зумер повинен увімкнутися, а на моніторі послідовного порту буде надруковано повідомлення «Виявлено рух! Тривога зумера».
Через 4 секунди звуковий сигнал має вимкнутися.
Перемикач Project 5 ESP32 Web Сервер
У цьому проекті ви створите автономний web сервер із ESP32, який керує виходами (два світлодіоди) за допомогою середовища програмування Arduino IDE. The web сервер адаптований до мобільних пристроїв і доступ до нього можна отримати з будь-якого пристрою, який є браузером у локальній мережі. Ми покажемо вам, як створити web сервер і як крок за кроком працює код.
Проект завершеноview
Перш ніж перейти безпосередньо до проекту, важливо окреслити, що ми маємо web сервер підійде, щоб було простіше виконувати кроки пізніше.
- The web сервер, який ви створите, керує двома світлодіодами, підключеними до ESP32 GPIO 26 і GPIO 27;
- Ви можете отримати доступ до ESP32 web сервер, ввівши IP-адресу ESP32 у браузері локальної мережі;
- Натискаючи кнопки на вашому web на сервері можна миттєво змінити стан кожного світлодіода.
Потрібні запчастини
Для цього підручника вам знадобляться такі частини:
- Плата ESP32 DEVKIT V1
- 2x 5 мм світлодіод
- 2 резистор 200 Ом
- Макетна дошка
- Перемички
Схема
Почніть зі створення схеми. Підключіть два світлодіоди до ESP32, як показано на наступній схематичній схемі: один світлодіод під’єднайте до GPIO 26, а інший – до GPIO 27.
Примітка: Ми використовуємо плату ESP32 DEVKIT DOIT із 36 контактами. Перш ніж збирати схему, переконайтеся, що ви перевірили цоколевку плати, яку ви використовуєте.Код
Тут ми надаємо код, який створює ESP32 web сервер. Відкрийте код Project_5_ESP32_Switch _Web_Server.ino в arduino IDE, але поки не завантажуйте його. Вам потрібно внести деякі зміни, щоб це працювало на вас.
Ми запрограмуємо ESP32 за допомогою Arduino IDE, тому переконайтеся, що у вас встановлено доповнення ESP32, перш ніж продовжувати: (Якщо ви вже виконали цей крок, можете перейти до наступного.)
Встановлення надбудови ESP32 в Arduino IDE
Налаштування мережевих облікових даних
Вам потрібно змінити такі рядки з обліковими даними мережі: SSID і пароль. Код добре прокоментований щодо того, де слід внести зміни.Завантаження коду
Тепер ви можете завантажити код і і web сервер запрацює одразу.
Виконайте наступні дії, щоб завантажити код на ESP32:
- Підключіть плату ESP32 до комп’ютера;
- У середовищі розробки Arduino IDE виберіть свою плату в Інструменти > Плата (у нашому випадку ми використовуємо плату ESP32 DEVKIT DOIT);
- Виберіть COM-порт у меню Інструменти > Порт.
- Натисніть кнопку «Завантажити» в Arduino IDE і зачекайте кілька секунд, поки код скомпілюється та завантажиться на вашу плату.
- Дочекайтеся повідомлення «Завантаження завершено».
Пошук IP-адреси ESP
Після завантаження коду відкрийте Serial Monitor зі швидкістю передачі даних 115200 бод.Натисніть кнопку ESP32 EN (скидання). ESP32 підключається до Wi-Fi та виводить IP-адресу ESP на серійний монітор. Скопіюйте цю IP-адресу, оскільки вона вам потрібна для доступу до ESP32 web сервер.
Доступ до Web Сервер
Щоб отримати доступ до web сервера, відкрийте браузер, вставте IP-адресу ESP32, і ви побачите наступну сторінку.
Примітка: Ваш браузер і ESP32 мають бути підключені до однієї локальної мережі.Якщо ви подивитеся на серійний монітор, ви побачите, що відбувається на тлі. ESP отримує HTTP-запит від нового клієнта (в даному випадку від вашого браузера).
Ви також можете переглянути іншу інформацію про HTTP-запит.
Демонстрація
Тепер ви можете перевірити, чи ваші web сервер працює належним чином. Натисніть кнопки, щоб керувати світлодіодами.У той же час ви можете поглянути на серійний монітор, щоб побачити, що відбувається у фоновому режимі. наприкладample, коли ви натискаєте кнопку, щоб увімкнути GPIO 26, ESP32 отримує запит на /26/on URL.
Коли ESP32 отримує цей запит, він вмикає світлодіод, підключений до GPIO 26, і оновлює свій стан на web сторінки.
Подібним чином працює кнопка для GPIO 27. Перевірте, чи він працює належним чином.
Як працює Кодекс
У цьому розділі ми докладніше розглянемо код, щоб побачити, як він працює.
Перше, що вам потрібно зробити, це включити бібліотеку WiFi.Як згадувалося раніше, вам потрібно вставити ваш ssid і пароль у наступних рядках у подвійних лапках.
Потім ви встановлюєте свій web сервер на порт 80.
Наступний рядок створює змінну для зберігання заголовка HTTP-запиту:
Далі ви створюєте допоміжні змінні для зберігання поточного стану ваших виходів. Якщо ви хочете додати більше виходів і зберегти його стан, вам потрібно створити більше змінних.
Вам також потрібно призначити GPIO кожному з ваших виходів. Тут ми використовуємо GPIO 26 і GPIO 27. Ви можете використовувати будь-які інші відповідні GPIO.
налаштування()
Тепер перейдемо до setup(). Спочатку ми запускаємо послідовний зв’язок зі швидкістю передачі даних 115200 бод для цілей налагодження.Ви також визначаєте свої GPIO як OUTPUT і встановлюєте для них значення LOW.
Наступні рядки починають Wi-Fi-з’єднання з WiFi.begin(ssid, пароль), дочекайтеся успішного з’єднання та надрукуйте IP-адресу ESP у Serial Monitor.
цикл()
У loop() ми програмуємо, що відбувається, коли новий клієнт встановлює з’єднання з web сервер.
ESP32 завжди прослуховує вхідних клієнтів із таким рядком:При отриманні запиту від клієнта ми збережемо вхідні дані. Цикл while, який слідує, працюватиме, доки клієнт залишається підключеним. Ми не рекомендуємо змінювати наступну частину коду, якщо ви точно не знаєте, що робите.
У наступному розділі операторів if і else перевіряється, яка кнопка була натиснута у вашому web сторінку та відповідно керує виходами. Як ми бачили раніше, ми робимо запит на різні URLзалежно від натиснутої кнопки.
наприкладampякщо ви натиснули кнопку GPIO 26 ON, ESP32 отримає запит на /26/ON URL (ми бачимо цю інформацію в заголовку HTTP на моніторі послідовного порту). Отже, ми можемо перевірити, чи містить заголовок вираз GET /26/on. Якщо він містить, ми змінюємо змінну output26state на ON, і ESP32 вмикає світлодіод.
Це працює аналогічно для інших кнопок. Отже, якщо ви хочете додати більше виходів, вам слід змінити цю частину коду, щоб включити їх.
Відображення HTML web сторінки
Наступне, що вам потрібно зробити, це створити web сторінки. ESP32 надішле відповідь вашому браузеру з HTML-кодом для створення web сторінки.
The web сторінка надсилається клієнту за допомогою цього вираження client.println(). Ви повинні ввести те, що ви хочете надіслати клієнту як аргумент.
Перше, що ми повинні надіслати, це завжди наступний рядок, який вказує, що ми надсилаємо HTML.Потім наступний рядок робить web сторінка адаптивна в будь-якому web браузер.
А наступне використовується для запобігання запитам на піктограмі. – Вам не потрібно турбуватися про цю лінію.
Стилізація Web Сторінка
Далі у нас є текст CSS для стилізації кнопок і web зовнішній вигляд сторінки.
Ми вибираємо шрифт Helvetica, визначаємо вміст, який буде відображатися блоком і вирівнюватись по центру.Ми стилізуємо наші кнопки кольором #4CAF50, без рамки, текст білого кольору та з таким відступом: 16px 40px. Ми також встановлюємо параметр text-decoration у значення none, визначаємо розмір шрифту, поля та курсор для вказівника.
Ми також визначаємо стиль для другої кнопки з усіма властивостями кнопки, які ми визначили раніше, але іншого кольору. Це буде стиль кнопки вимкнення.
Налаштування Web Заголовок першої сторінки
У наступному рядку ви можете встановити перший заголовок вашого web сторінки. Тут ми маємо “ESP32 Web Сервер», але ви можете змінити цей текст на будь-який.Відображення кнопок і відповідного стану
Потім ви пишете абзац, щоб відобразити поточний стан GPIO 26. Як бачите, ми використовуємо змінну output26State, щоб стан оновлювався миттєво, коли ця змінна змінюється.Потім ми відображаємо кнопку ввімкнення або вимкнення, залежно від поточного стану GPIO. Якщо поточний стан GPIO вимкнено, ми показуємо кнопку ON, якщо ні, ми відображаємо кнопку OFF.
Ми використовуємо ту саму процедуру для GPIO 27.
Закриття підключення
Нарешті, коли відповідь закінчується, ми очищаємо змінну заголовка та припиняємо з’єднання з клієнтом за допомогою client.stop().
Підведення підсумків
У цьому посібнику ми показали вам, як створити a web сервер з ESP32. Ми показали вам простий колишнійampфайл, який керує двома світлодіодами, але ідея полягає в тому, щоб замінити ці світлодіоди на реле або будь-який інший вихід, яким ви хочете керувати.
Project 6 RGB LED Web Сервер
У цьому проекті ми покажемо вам, як дистанційно керувати світлодіодом RGB за допомогою плати ESP32 за допомогою a web сервер із інструментом вибору кольорів.
Проект завершеноview
Перш ніж почати, давайте подивимося, як працює цей проект:
- ESP32 web сервер відображає панель вибору кольорів.
- Коли ви вибираєте колір, ваш браузер робить запит на a URL який містить параметри R, G і B вибраного кольору.
- Ваш ESP32 отримує запит і розподіляє значення для кожного параметра кольору.
- Потім він надсилає ШІМ-сигнал із відповідним значенням на GPIO, які керують світлодіодом RGB.
Як працюють світлодіоди RGB?
У світлодіоді RGB із загальним катодом усі три світлодіоди мають спільний негативний контакт (катод). Усе, що входить у комплект, є RGB із загальним катодом.Як створити різні кольори?
За допомогою світлодіода RGB ви, звичайно, можете виробляти червоне, зелене та синє світло, і, налаштувавши інтенсивність кожного світлодіода, ви також можете виробляти інші кольори.
наприкладampНаприклад, щоб створити чисто синє світло, ви повинні встановити синій світлодіод на найвищу інтенсивність, а зелений і червоний світлодіоди на найменшу інтенсивність. Для білого світла ви встановили б усі три світлодіоди на найвищу інтенсивність.
Змішування кольорів
Щоб створити інші кольори, ви можете комбінувати три кольори різної інтенсивності. Для регулювання інтенсивності кожного світлодіода можна використовувати ШІМ-сигнал.
Оскільки світлодіоди розташовані дуже близько один до одного, наші очі бачать результат поєднання кольорів, а не три кольори окремо.
Щоб мати уявлення про те, як поєднувати кольори, подивіться на наступну таблицю.
Це найпростіша таблиця змішування кольорів, але вона дає вам уявлення про те, як вона працює та як створювати різні кольори.Потрібні запчастини
Для цього проекту вам потрібні такі частини:
- Плата ESP32 DEVKIT V1
- RGB LED
- 3 резистори по 220 Ом
- Перемички
- Макетна дошка
СхемаКод
Ми запрограмуємо ESP32 за допомогою Arduino IDE, тому переконайтеся, що у вас встановлено доповнення ESP32, перш ніж продовжувати: (Якщо ви вже виконали цей крок, можете перейти до наступного.)
- Встановлення надбудови ESP32 в Arduino IDE
Після складання схеми відкрийте код
Проект_6_RGB_LED_Web_Server.ino в IDE arduino.
Перед завантаженням коду не забудьте вставити облікові дані мережі, щоб ESP міг підключитися до вашої локальної мережі.Як працює код
Скетч ESP32 використовує бібліотеку WiFi.h.Наступні рядки визначають рядкові змінні для зберігання параметрів R, G і B із запиту.
Наступні чотири змінні використовуються для декодування HTTP-запиту пізніше.
Створіть три змінні для GPIO, які керуватимуть параметрами смуги R, G і B. У цьому випадку ми використовуємо GPIO 13, GPIO 12 і GPIO 14.
Ці GPIO мають виводити сигнали ШІМ, тому нам спочатку потрібно налаштувати властивості ШІМ. Встановіть частоту сигналу ШІМ на 5000 Гц. Потім зв’яжіть канал ШІМ для кожного кольору
І, нарешті, встановіть дозвіл каналів ШІМ на 8 біт
У setup() призначте властивості ШІМ для каналів ШІМ
Приєднайте канали ШІМ до відповідних GPIO
У наступному розділі коду відображається засіб вибору кольорів у вашому web і робить запит на основі вибраного вами кольору.
Коли ви вибираєте колір, ви отримуєте запит у такому форматі.
Отже, нам потрібно розділити цей рядок, щоб отримати параметри R, G і B. Параметри зберігаються в змінних redString, greenString і blueString і можуть мати значення від 0 до 255.Щоб керувати смугою за допомогою ESP32, використовуйте функцію ledcWrite(), щоб генерувати сигнали ШІМ зі значеннями, декодованими з HTTP запит.
Примітка: дізнайтеся більше про PWM з ESP32: Project 3 ESP32 PWM (аналоговий вихід)
Щоб керувати смугою за допомогою ESP8266, нам просто потрібно використовувати
функція analogWrite() для генерації сигналів ШІМ зі значеннями, декодованими із запиту HTTP.
analogWrite(redPin, redString.toInt());
analogWrite(greenPin, greenString.toInt());
analogWrite(bluePin, blueString.toInt())
Оскільки ми отримуємо значення в рядковій змінній, нам потрібно перетворити їх на цілі числа за допомогою методу toInt().
Демонстрація
Після введення облікових даних мережі виберіть потрібну плату та COM-порт і завантажте код у свій ESP32. Довідкові кроки для завантаження коду.
Після завантаження відкрийте Serial Monitor на швидкості 115200 бод і натисніть кнопку ESP Enable/Reset. Ви повинні отримати IP-адресу плати.Відкрийте браузер і вставте IP-адресу ESP. Тепер скористайтеся інструментом вибору кольорів, щоб вибрати колір світлодіода RGB.
Потім вам потрібно натиснути кнопку «Змінити колір», щоб колір почав діяти.Щоб вимкнути світлодіод RGB, виберіть чорний колір.
Найсильніші кольори (у верхній частині палітри кольорів) — це ті, які дадуть кращі результати.
Реле Project 7 ESP32 Web Сервер
Використання реле з ESP32 є чудовим способом дистанційного керування побутовими приладами змінного струму. Цей посібник пояснює, як керувати релейним модулем за допомогою ESP32.
Ми розглянемо, як працює релейний модуль, як підключити реле до ESP32 і створити web сервер для дистанційного керування реле.
Знайомство з реле
Реле — це перемикач з електричним приводом, і, як і будь-який інший вимикач, його можна вмикати чи вимикати, пропускаючи струм чи ні. Ним можна керувати за допомогою низької гучностіtages, наприклад 3.3 В, що забезпечується GPIO ESP32 і дозволяє нам контролювати високу гучністьtagнаприклад 12 В, 24 В або об’єм мережіtage (230 В у Європі та 120 В у США).З лівого боку є два набори з трьох розеток для підключення високої гучностіtages, і штифти з правого боку (низька гучністьtage) підключіться до GPIO ESP32.
Мережа Voltage З'єднанняМодуль реле, показаний на попередній фотографії, має два роз’єми, кожен з яких має три гнізда: загальний (COM), нормально закритий (NC) і нормально відкритий (NO).
- COM: підключіть струм, який ви хочете контролювати (об’єм мережі).tagд).
- NC (Normally Closed): нормально замкнута конфігурація використовується, якщо потрібно, щоб реле було закрито за замовчуванням. NC є штифтами COM підключені, тобто струм тече, якщо ви не надішлете сигнал від ESP32 до модуля реле, щоб розімкнути ланцюг і припинити потік струму.
- NO (Normally Open): нормально розімкнута конфігурація працює навпаки: немає зв’язку між контактами NO та COM, тому ланцюг розірвано, якщо ви не надішлете сигнал від ESP32, щоб закрити ланцюг.
Контрольні шпилькиНизька гучністьtagЗбоку є набір із чотирьох шпильок і набір із трьох шпильок. Перший набір складається з VCC і GND для живлення модуля, а також входу 1 (IN1) і входу 2 (IN2) для керування нижнім і верхнім реле відповідно.
Якщо ваш релейний модуль має лише один канал, ви матимете лише один контакт IN. Якщо у вас чотири канали, у вас буде чотири контакти IN і так далі.
Сигнал, який ви посилаєте на контакти IN, визначає, чи активне реле чи ні. Реле спрацьовує, коли вхідна напруга падає нижче приблизно 2 В. Це означає, що ви матимете такі сценарії:
- Нормально закрита конфігурація (NC):
- Сигнал HIGH – тече струм
- Сигнал LOW – струм не тече
- Нормально відкрита конфігурація (NO):
- Сигнал HIGH – струм не тече
- Сигнал LOW – протікає струм
Ви повинні використовувати нормально закриту конфігурацію, коли струм має протікати більшу частину часу, і ви хочете лише час від часу його зупиняти.
Використовуйте нормально відкриту конфігурацію, якщо потрібно, щоб струм час від часу проходив (наприклад,ample, включити alamp час від часу).
Вибір джерела живленняДругий набір контактів складається з контактів GND, VCC і JD-VCC.
Вивід JD-VCC живить електромагніт реле. Зверніть увагу, що модуль має перемичку, яка з’єднує контакти VCC і JD-VCC; той, що зображений тут, жовтий, але ваш може бути іншого кольору.
Коли перемичка встановлена, контакти VCC і JD-VCC з’єднані. Це означає, що електромагніт реле живиться безпосередньо від контакту живлення ESP32, тому модуль реле та схеми ESP32 фізично не ізольовані один від одного.
Без перемички вам потрібно забезпечити незалежне джерело живлення для живлення електромагніту реле через штифт JD-VCC. Ця конфігурація фізично ізолює реле від ESP32 за допомогою вбудованої в модуль оптронної пари, що запобігає пошкодженню ESP32 у разі стрибків напруги.
СхемаУВАГА: Використання високої обtagДжерела живлення можуть спричинити серйозні травми.
Тому 5-мм світлодіоди використовуються замість високого об’єму живленняtagе лампи в досліді. Якщо ви не знайомі з mains voltage попросіть когось, хто має допомогти вам. Під час програмування ESP або проводки вашої схеми переконайтеся, що все від’єднано від мережіtage.Встановлення бібліотеки для ESP32
Щоб побудувати це web сервер, ми використовуємо ESPAsyncWebБібліотека сервера та бібліотека AsyncTCP.
Встановлення ESPAsyncWebСерверна бібліотека
Виконайте наступні кроки, щоб установити ESPAsyncWebСервер бібліотека:
- Натисніть тут, щоб завантажити ESPAsyncWebСерверна бібліотека. Ви повинні були
папку .zip у папці завантажень - Розархівуйте папку .zip, і ви повинні отримати ESPAsyncWebПапка Server-master
- Перейменуйте папку з ESPAsyncWebМайстер-сервер до ESPAsyncWebСервер
- Перемістіть ESPAsyncWebПапка сервера в папку інсталяційних бібліотек Arduino IDE
Крім того, у вашій Arduino IDE ви можете перейти до Sketch > Include
Бібліотека > Додати бібліотеку .ZIP… і виберіть бібліотеку, яку ви щойно завантажили.
Встановлення бібліотеки AsyncTCP для ESP32
The ESPAsyncWebСервер бібліотека потребує Асинхронний TCP бібліотека на роботу. Слідуйте
наступні кроки для встановлення цієї бібліотеки:
- Натисніть тут, щоб завантажити бібліотеку AsyncTCP. У папці завантажень має бути папка .zip
- Розархівуйте папку .zip, і ви повинні отримати папку AsyncTCP-master
1. Перейменуйте папку з AsyncTCP-master на AsyncTCP
3. Перемістіть папку AsyncTCP у папку інсталяційних бібліотек Arduino IDE
4. Нарешті, знову відкрийте Arduino IDE
Крім того, у вашій Arduino IDE ви можете перейти до Sketch > Include
Бібліотека > Додати бібліотеку .ZIP… і виберіть бібліотеку, яку ви щойно завантажили.
Код
Ми запрограмуємо ESP32 за допомогою Arduino IDE, тому переконайтеся, що у вас встановлено доповнення ESP32, перш ніж продовжувати: (Якщо ви вже виконали цей крок, можете перейти до наступного.)
Встановлення надбудови ESP32 в Arduino IDE
Після встановлення необхідних бібліотек відкрийте код Project_7_ESP32_Relay_Web_Server.ino в IDE arduino.
Перед завантаженням коду не забудьте вставити облікові дані мережі, щоб ESP міг підключитися до вашої локальної мережі.Демонстрація
Після внесення необхідних змін завантажте код у свій ESP32. Довідкові кроки для завантаження коду.
Відкрийте Serial Monitor зі швидкістю 115200 бод і натисніть кнопку ESP32 EN, щоб отримати його IP-адресу. Потім відкрийте браузер у локальній мережі та введіть IP-адресу ESP32, щоб отримати доступ до web сервер.
Відкрийте Serial Monitor зі швидкістю 115200 бод і натисніть кнопку ESP32 EN, щоб отримати його IP-адресу. Потім відкрийте браузер у локальній мережі та введіть IP-адресу ESP32, щоб отримати доступ до web сервер.Примітка: Ваш браузер і ESP32 мають бути підключені до однієї локальної мережі.
Ви повинні отримати щось наступне з двома кнопками, як кількість реле, яку ви визначили у своєму коді.Тепер ви можете використовувати кнопки для керування реле за допомогою смартфона.
Project_8_Output_State_Synchronization_ Web_Сервер
Цей проект показує, як керувати виходами ESP32 або ESP8266 за допомогою a web сервер і фізична кнопка одночасно. Стан виведення оновлюється на web сторінки, незалежно від того, змінюється вона фізичною кнопкою або web сервер.
Проект завершеноview
Давайте коротко розглянемо, як працює проект.ESP32 або ESP8266 розміщує a web сервер, який дозволяє контролювати стан виведення;
- Поточний вихідний стан відображається на web сервер;
- ESP також підключено до фізичної кнопки, яка контролює той самий вихід;
- Якщо ви змінюєте вихідний стан за допомогою фізичної кнопки puhs, його поточний стан також оновлюється на web сервер.
Таким чином, цей проект дозволяє вам контролювати той самий вихід за допомогою a web сервер і кнопка одночасно. Щоразу, коли вихідний стан змінюється, web сервер оновлено.
Потрібні запчастини
Ось список частин, які вам знадобляться для побудови схеми:
- Плата ESP32 DEVKIT V1
- 5 мм світлодіод
- Резистор 220 Ом
- Натиснути кнопку
- Резистор 10 кОм
- Макетна дошка
- Перемички
СхемаВстановлення бібліотеки для ESP32
Щоб побудувати це web сервер, ми використовуємо ESPAsyncWebБібліотека сервера та бібліотека AsyncTCP. (Якщо ви вже зробили цей крок, ви можете перейти до наступного кроку.)
Встановлення ESPAsyncWebСерверна бібліотека
Виконайте наступні кроки, щоб установити ESPAsyncWebСерверна бібліотека:
- Натисніть тут, щоб завантажити ESPAsyncWebСерверна бібліотека. Ви повинні були
папку .zip у папці завантажень - Розархівуйте папку .zip, і ви повинні отримати ESPAsyncWebПапка Server-master
- Перейменуйте папку з ESPAsyncWebМайстер-сервер до ESPAsyncWebСервер
- Перемістіть ESPAsyncWebПапка сервера в папку інсталяційних бібліотек Arduino IDE
Крім того, у вашій Arduino IDE ви можете перейти до Sketch > Include
Бібліотека > Додати бібліотеку .ZIP… і виберіть бібліотеку, яку ви щойно завантажили.
Встановлення бібліотеки AsyncTCP для ESP32
ESPAsyncWebДля роботи серверної бібліотеки потрібна бібліотека AsyncTCP. Виконайте наступні дії, щоб установити цю бібліотеку:
- Натисніть тут, щоб завантажити бібліотеку AsyncTCP. У папці завантажень має бути папка .zip
- Розархівуйте папку .zip, і ви повинні отримати папку AsyncTCP-master
- Перейменуйте папку з AsyncTCP-master на AsyncTCP
- Перемістіть папку AsyncTCP у папку інсталяційних бібліотек Arduino IDE
- Нарешті, знову відкрийте Arduino IDE
Крім того, у вашій Arduino IDE ви можете перейти до Sketch > Include
Бібліотека > Додати бібліотеку .ZIP… і виберіть бібліотеку, яку ви щойно завантажили.
Код
Ми запрограмуємо ESP32 за допомогою Arduino IDE, тому переконайтеся, що у вас встановлено доповнення ESP32, перш ніж продовжувати: (Якщо ви вже виконали цей крок, можете перейти до наступного.)
Встановлення надбудови ESP32 в Arduino IDE
Після встановлення необхідних бібліотек відкрийте код
Project_8_Output_State_Synchronization_Web_Server.ino в IDE arduino.
Перед завантаженням коду не забудьте вставити облікові дані мережі, щоб ESP міг підключитися до вашої локальної мережі.
Як працює Кодекс
Стан кнопки та стан виведення
Змінна ledState містить вихідний стан світлодіода. За замовчуванням, коли web сервер запускається, він НИЗЬКИЙ.
ButtonState і lastButtonState використовуються для визначення того, була кнопка натиснута чи ні.кнопка (web сервер)
Ми не включили HTML для створення кнопки в змінній index_html.
Це тому, що ми хочемо мати можливість змінювати його залежно від поточного стану світлодіода, який також можна змінити за допомогою кнопки.
Отже, ми створили заповнювач для кнопки %BUTTONPLACEHOLDER%, який буде замінено текстом HTML для створення кнопки пізніше в коді (це робиться у функції processor().процесор()
Функція processor() замінює будь-які заповнювачі в тексті HTML фактичними значеннями. По-перше, він перевіряє, чи містять тексти HTML
заповнювачі %BUTTONPLACEHOLDER%.Потім викличте функцію theoutputState(), яка повертає поточний стан виведення. Ми зберігаємо його в змінній outputStateValue.
Після цього використовуйте це значення для створення тексту HTML для відображення кнопки з правильним станом:
Запит HTTP GET на зміну стану виведення (JavaScript)
Коли ви натискаєте кнопку, викликається функція thetoggleCheckbox(). Ця функція зробить запит на різні URLs, щоб увімкнути або вимкнути світлодіод.Щоб увімкнути світлодіод, він робить запит на /update?state=1 URL:
В іншому випадку він робить запит на /update?state=0 URL.
Запит HTTP GET на оновлення стану (JavaScript)
Щоб зберегти вихідний стан оновленим на web сервера, ми викликаємо наступну функцію, яка робить новий запит на /state URL кожну секунду.Обробляти запити
Потім нам потрібно впоратися з тим, що відбувається, коли ESP32 або ESP8266 отримує запити на ті URLs.
При отриманні запиту на root /URL, ми надсилаємо HTML-сторінку, а також процесор.Наступні рядки перевіряють, чи отримали ви запит на /update?state=1 або /update?state=0 URL і відповідно змінює ledState.
Коли запит отримано в /state URL, ми надсилаємо поточний вихідний стан:
цикл()
У циклі () ми усуваємо тріскот кнопки та вмикаємо або вимикаємо світлодіод залежно від значення ledState змінна.Демонстрація
Завантажте код на свою плату ESP32. Завантажте довідкові кроки коду.
Потім відкрийте Serial Monitor зі швидкістю передачі даних 115200 бод. Натисніть вбудовану кнопку EN/RST, щоб отримати IP-адресу.Відкрийте браузер у локальній мережі та введіть IP-адресу ESP. Ви повинні мати доступ до web сервер, як показано нижче.
Примітка: Ваш браузер і ESP32 мають бути підключені до однієї локальної мережі.Ви можете перемкнути кнопку на web сервер, щоб увімкнути світлодіод.
Ви також можете керувати тим самим світлодіодом за допомогою фізичної кнопки. Його стан завжди автоматично оновлюватиметься на web сервер.
Проект 9 ESP32 DHT11 Web Сервер
У цьому проекті ви дізнаєтеся, як створити асинхронний ESP32 web сервер із DHT11, який відображає температуру та вологість за допомогою Arduino IDE.
передумови
The web сервер, який ми створимо, автоматично оновлює показання без необхідності оновлення web сторінки.
З цим проектом ви дізнаєтеся:
- Як зчитувати температуру та вологість з датчиків DHT;
- Побудуйте асинхронний web сервер за допомогою ESPAsyncWebСерверна бібліотека;
- Оновлюйте показання датчика автоматично без необхідності оновлення web сторінки.
Асинхронний Web Сервер
Щоб побудувати web сервер, який ми будемо використовувати ESPAsyncWebСерверна бібліотека який забезпечує простий спосіб створення асинхронного web сервер. Побудова асинхронного web Сервер має кілька допtages, як зазначено на сторінці бібліотеки GitHub, наприклад:
- «Обробляти більше ніж одне підключення одночасно»;
- «Коли ви надсилаєте відповідь, ви одразу готові обробляти інші з’єднання, поки сервер піклується про надсилання відповіді у фоновому режимі»;
- «Простий механізм обробки шаблонів для обробки шаблонів»;
Потрібні запчастини
Щоб виконати цей підручник, вам потрібні такі частини:
- Плата розвитку ESP32
- Модуль DHT11
- Макетна дошка
- Перемички
СхемаВстановлення бібліотек
Вам потрібно встановити кілька бібліотек для цього проекту:
- The ДГТ і Уніфікований сенсор Adafruit Бібліотеки драйверів для читання з датчика DHT.
- ESPAsyncWebСервер і Асинхронний TCP бібліотеки для створення асинхронних web сервер.
Дотримуйтеся наступних інструкцій, щоб установити ці бібліотеки:
Встановлення бібліотеки датчиків DHT
Щоб зчитувати з датчика DHT за допомогою Arduino IDE, вам потрібно встановити Бібліотека датчиків DHT. Виконайте наступні дії, щоб установити бібліотеку.
- Натисніть тут, щоб завантажити бібліотеку датчиків DHT. У папці завантажень має бути папка .zip
- Розархівуйте папку .zip, і ви повинні отримати папку DHT-sensor-library-master
- Перейменуйте папку з DHT-sensor-library-master на DHT_sensor
- Перемістіть папку DHT_sensor до папки інсталяційних бібліотек Arduino IDE
- Нарешті, знову відкрийте Arduino IDE
Встановлення драйвера датчика Adafruit Unified
Вам також потрібно встановити Adafruit Unified Sensor Driver Бібліотека для роботи з датчиком DHT. Виконайте наступні кроки, щоб установити бібліотеку.
- Натисніть тут, щоб завантажити бібліотеку Adafruit Unified Sensor. У папці завантажень має бути папка .zip
- Розархівуйте папку .zip, і ви повинні отримати папку Adafruit_sensor-master
- Перейменуйте папку з Adafruit_sensor-master на Adafruit_sensor
- Перемістіть папку Adafruit_sensor до папки інсталяційних бібліотек Arduino IDE
- Нарешті, знову відкрийте Arduino IDE
Встановлення ESPAsyncWebСерверна бібліотека
Виконайте наступні кроки, щоб установити ESPAsyncWebСервер бібліотека:
- Натисніть тут, щоб завантажити ESPAsyncWebСерверна бібліотека. Ви повинні були
папку .zip у папці завантажень - Розпакуйте папку .zip, і ви повинні
отримати ESPAsyncWebПапка Server-master - Перейменуйте папку з ESPAsyncWebМайстер-сервер до ESPAsyncWebСервер
- Перемістіть ESPAsyncWebПапка сервера в папку інсталяційних бібліотек Arduino IDE
Встановлення асинхронної бібліотеки TCP для ESP32
The ESPAsyncWebСервер бібліотека потребує Асинхронний TCP бібліотека на роботу. Виконайте наступні дії, щоб установити цю бібліотеку:
- Натисніть тут, щоб завантажити бібліотеку AsyncTCP. У папці завантажень має бути папка .zip
- Розархівуйте папку .zip, і ви повинні отримати папку AsyncTCP-master
- Перейменуйте папку з AsyncTCP-master на AsyncTCP
- Перемістіть папку AsyncTCP у папку інсталяційних бібліотек Arduino IDE
- Нарешті, знову відкрийте Arduino IDE
Код
Ми запрограмуємо ESP32 за допомогою Arduino IDE, тому переконайтеся, що у вас встановлено доповнення ESP32, перш ніж продовжувати: (Якщо ви вже виконали цей крок, можете перейти до наступного.)
Встановлення надбудови ESP32 в Arduino IDE
Після встановлення необхідних бібліотек відкрийте код
Проект_9_ESP32_DHT11_Web_Server.ino в IDE arduino.
Перед завантаженням коду не забудьте вставити облікові дані мережі, щоб ESP міг підключитися до вашої локальної мережі.Як працює Кодекс
У наступних параграфах ми пояснимо, як працює код. Продовжуйте читати, якщо хочете дізнатися більше, або перейдіть до розділу «Демонстрація», щоб побачити остаточний результат.
Імпорт бібліотек
Спочатку імпортуйте необхідні бібліотеки. Wi-Fi, ESPAsyncWebСервер і ESPAsyncTCP необхідні для створення web сервер. Бібліотеки Adafruit_Sensor і DHT потрібні для читання з датчиків DHT11 або DHT22.Визначення змінних
Визначте GPIO, до якого підключено контакт даних DHT. У цьому випадку він підключений до GPIO 4.Потім виберіть тип датчика DHT, який ви використовуєте. У нашого колишньогоample, ми використовуємо DHT22. Якщо ви використовуєте інший тип, вам потрібно просто розкоментувати свій датчик і закоментувати всі інші.
Створіть екземпляр об’єкта DHT із типом і PIN-кодом, які ми визначили раніше.Створіть асинхроннийWebСерверний об’єкт на порту 80.
Прочитайте функції температури та вологості
Ми створили дві функції: одну для зчитування температури Ми створили дві функції: одну для зчитування температури (readDHTTemperature()), а іншу для зчитування вологості (readDHTHumidity()).Отримати показання датчика так само просто, як використовувати Отримати показання датчика так само просто, як використовувати методи readTemperature() і readHumidity() для об’єкта dht.
У нас також є умова, яка повертає два тире (–), якщо датчик не отримує показання.
Показання повертаються як тип рядка. Щоб перетворити float на рядок, використовуйте функцію String().
За замовчуванням ми читаємо температуру в градусах Цельсія. Щоб отримати температуру в градусах Фаренгейта, прокоментуйте температуру в градусах Цельсія та розкоментуйте температуру у Фаренгейті, щоб мати наступне:
Завантажте код
Тепер завантажте код на свій ESP32. Переконайтеся, що вибрано правильну плату та COM-порт. Завантажте довідковий код.
Після завантаження відкрийте монітор послідовного порту на швидкості 115200 бод. Натисніть кнопку скидання ESP32. IP-адреса ESP32 повинна бути надрукована в послідовному номері монітор.Демонстрація
Відкрийте браузер і введіть IP-адресу ESP32. ваш web сервер має відображати останні показання датчиків.
Примітка: Ваш браузер і ESP32 мають бути підключені до однієї локальної мережі.
Зверніть увагу, що показники температури та вологості оновлюються автоматично без необхідності оновлення web сторінки.
Проект_10_ESP32_OLED_дисплей
Цей проект показує, як використовувати 0.96-дюймовий OLED-дисплей SSD1306 з ESP32 за допомогою Arduino IDE.
Представляємо 0.96-дюймовий OLED-дисплей
The OLED-дисплей яку ми будемо використовувати в цьому посібнику, це модель SSD1306: одноколірний 0.96-дюймовий дисплей із 128 × 64 пікселями, як показано на наступному малюнку.OLED-дисплею не потрібне підсвічування, що забезпечує дуже хороший контраст у темному середовищі. Крім того, його пікселі споживають енергію, лише коли вони ввімкнені, тому OLED-дисплей споживає менше електроенергії порівняно з іншими дисплеями.
Оскільки OLED-дисплей використовує протокол зв’язку I2C, проводка дуже проста. Ви можете використовувати наступну таблицю як довідник.
OLED Pin | ESP32 |
Vin | 3.3 В |
GND | GND |
SCL | GPIO 22 |
ПДР | GPIO 21 |
СхемаВстановлення бібліотеки SSD1306 OLED – ESP32
Є кілька доступних бібліотек для керування OLED-дисплеєм за допомогою ESP32.
У цьому посібнику ми будемо використовувати дві бібліотеки Adafruit: Бібліотека Adafruit_SSD1306 і Бібліотека Adafruit_GFX.
Виконайте наступні дії, щоб установити ці бібліотеки.
- Відкрийте Arduino IDE і перейдіть до Sketch > Include Library > Manage Libraries. Має відкритися Менеджер бібліотеки.
- Введіть «SSD1306» у вікні пошуку та встановіть бібліотеку SSD1306 від Adafruit.
- Після встановлення бібліотеки SSD1306 від Adafruit введіть «GFX» у вікні пошуку та встановіть бібліотеку.
- Після встановлення бібліотек перезапустіть Arduino IDE.
Код
Після встановлення необхідних бібліотек відкрийте Project_10_ESP32_OLED_Display.ino в arduino IDE. код
Ми запрограмуємо ESP32 за допомогою Arduino IDE, тому переконайтеся, що у вас встановлено доповнення ESP32, перш ніж продовжити: (Якщо ви вже виконали цей крок, можете перейти до наступного.)
Встановлення надбудови ESP32 в Arduino IDEЯк працює Кодекс
Імпорт бібліотек
По-перше, вам потрібно імпортувати необхідні бібліотеки. Бібліотека Wire для використання I2C і бібліотек Adafruit для запису на дисплей: Adafruit_GFX і Adafruit_SSD1306.Ініціалізуйте OLED-дисплей
Потім ви визначаєте ширину та висоту свого OLED. У цьому ексample, ми використовуємо OLED-дисплей 128×64. Якщо ви використовуєте інші розміри, ви можете змінити це в змінних SCREEN_WIDTH і SCREEN_HEIGHT.Потім ініціалізуйте об’єкт відображення шириною та висотою, визначеними раніше за допомогою протоколу зв’язку I2C (&Wire).
Параметр (-1) означає, що ваш OLED-дисплей не має контакту RESET. Якщо ваш OLED-дисплей має контакт RESET, його слід підключити до GPIO. У цьому випадку вам слід передати номер GPIO як параметр.
У setup() ініціалізуйте послідовний монітор на швидкості передачі 115200 бод для цілей налагодження.Ініціалізуйте OLED-дисплей за допомогою методу begin() наступним чином:
Цей фрагмент також друкує повідомлення на послідовному моніторі, якщо ми не можемо підключитися до дисплея.
Якщо ви використовуєте інший OLED-дисплей, вам може знадобитися змінити адресу OLED. У нашому випадку це адреса 0x3C.
Після ініціалізації дисплея додайте дві секунди затримки, щоб OLED мав достатньо часу для ініціалізації перед написанням тексту:
Очистити дисплей, встановити розмір шрифту, колір і написати текст
Після ініціалізації дисплея очистіть буфер дисплея за допомогою методу clearDisplay():
Перш ніж писати текст, вам потрібно встановити розмір тексту, колір і місце відображення тексту на OLED.
Встановіть розмір шрифту за допомогою методу setTextSize():Встановіть колір шрифту за допомогою методу setTextColor():
WHITE встановлює білий шрифт і чорний фон.
Визначте позицію початку тексту за допомогою методу setCursor(x,y). У цьому випадку ми встановлюємо початок тексту в координатах (0,0) – у верхньому лівому куті.Нарешті, ви можете надіслати текст на дисплей за допомогою методу println() наступним чином
Потім вам потрібно викликати метод display(), щоб фактично відобразити текст на екрані.
Бібліотека Adafruit OLED надає корисні методи для легкого прокручування тексту.
- startscrollright(0x00, 0x0F): прокручувати текст зліва направо
- startscrollleft(0x00, 0x0F): прокручувати текст справа наліво
- startscrolldiagright(0x00, 0x07): прокручувати текст від лівого нижнього кута до правого верхнього кута startscrolldiagleft(0x00, 0x07): прокручувати текст від правого нижнього кута до лівого верхнього кута
Завантажте код
Тепер завантажте код у свій ESP32. Довідкові кроки для завантаження коду.
Після завантаження коду OLED відображатиме текст, що прокручується.
Документи / Ресурси
![]() |
Базовий стартовий комплект LAFVIN ESP32 [pdfІнструкція з експлуатації ESP32 Basic Starter Kit, ESP32, Basic Starter Kit, Starter Kit |