freetimed

freetimed

Пикабушник
4214 рейтинг 191 подписчик 19 подписок 37 постов 8 в горячем
Награды:
5 лет на Пикабу
10

Знакомимся с ESP32: Ваши вопросы

Всем привет! Мне в комментарии поступило слишком много просьб, и я предлагаю сделать следующую часть с темой, которая будет в комментарии в самом верху в режиме сортировки "по рейтингу". Принимаются так же вопросы и предложения

17

Знакомимся с ESP32, часть 7: первый проект

Всем привет! Вот, мы уже научились азам, и даже чуть больше, и готовы написать свой первый проект: часы с подкачкой времени через Wi-Fi, режимом энергосбережения, и функцией отрисовки бегущих овечек после 23:00

Мне лень описывать всё это второй раз в посте, поэтому, я просто кину ссылку на код, где всё должно быть понятно.

Всем удачи!

37

Знакомимся с ESP32, часть 6: подключение OLED-дисплея

Всем привет! Это уже шестая часть цикла "Знакомимся с ESP32", в которой мы рассмотрим подключение OLED-дисплея на контроллере SSD1306 к ESP32 по I2C. Этот выпуск, наверное, будет самым коротким из всех. Поехали!


Тут, эмм... ничего сложного: библиотеки Adafruit SSD1306 и Adafruit GFX, которые устанавливаются в два клика:

Знакомимся с ESP32, часть 6: подключение OLED-дисплея Esp32, Arduino, Oled

А затем в этом окошке пишем "ssd1306" и устанавливаем эту библиотеку

Знакомимся с ESP32, часть 6: подключение OLED-дисплея Esp32, Arduino, Oled

А затем эту

Знакомимся с ESP32, часть 6: подключение OLED-дисплея Esp32, Arduino, Oled

Подключаем SDA дисплея к пину 21, SCK к пину 22. Открываем проводник, заходим в директорию

Documents/Arduino/libraries/Adafruit_SSD1306

И открываем любым редактором (я предпочитаю Notepad++) файл

Adafruit_SSD1306.h

И где-то на 70-х строчках должно быть это

Знакомимся с ESP32, часть 6: подключение OLED-дисплея Esp32, Arduino, Oled

Раскомментируйте строчку с вашим разрешением экрана и закомментируйте остальные. Откройте пример из библиотеки Adafruit_SSD1306 и где-то на этой строчке

Знакомимся с ESP32, часть 6: подключение OLED-дисплея Esp32, Arduino, Oled

Поставьте свой адрес дисплея. По умолчанию это 0x3C, если не получается - попробуйте 0x3D


На этом всё. Через пару часов вы сможете собрать первый проект на ESP32!

Показать полностью 4
40

Знакомимся с ESP32, часть 5: Wi-Fi

Всем привет! Это уже пятая часть цикла "Знакомимся с ESP32". В этой части мы разберём Wi-Fi, в следующей части - подключение OLED дисплея, а затем соберём свой первый проект: часы с режимом энергосбережения и подкачкой времени через Wi-Fi. Поехали!


В первой части я упомянул, что у ESP32 два ядра. Для чего это нужно? Те, кто работали мучились с ESP8266 знают, что такое Wi-Fi. Это такая штука, которая даёт доступ в интернет, но пожирает всё процессорное время. В ESP32 эта проблема решена: одно ядро занимается задачами Wi-Fi, а на другом крутится прошивка.

Кто ещё не понял преимущество ESP32 перед Arduino: Arduino Mega стоит 600 рублей, Ethernet Shield - ещё 500. А за 300-400 рублей вы можете получить 240 МГц процессор и Wi-Fi. И кучу других прибамбасов (ну, ЦАП, например).

Но вернёмся к нашим баранам. Как я уже сказал ранее, ожидать, пока ESP достучится до сервера нам не придётся: этим займётся другое ядро. Для примера вот небольшой скетч, который реализует сервер Wi-Fi. Вот ещё, который ищет сети Wi-Fi и пишет их в Serial.


На этом пока всё. Ждите 6 часть!

45

Знакомимся с ESP32, часть 4: сон

Всем привет, это уже 4 часть цикла "Знакомимся с ESP32", в которой мы рассмотрим два режима сна: глубокий и лёгкий. Поехали!


Глубокий сон

Он устроен следующим образом: ESP32 засыпает, и, (если настроено), просыпается от прерывания и начинает свою работу с самого начала программы. Пример с просыпанием по тачу, который мы (тач) разобрали в 3-й части

Лёгкий сон

устроен немного иначе: ESP32 засыпает, и, (если настроено), просыпается от прывания и начинает свою работу там, где произошла остановка. Пример


Очередной короткий выпуск, однако большую часть времени я убил на чтение документации и написание кода

123

Знакомимся с ESP32, часть 3: по мелочи

Всем привет! Это третья часть цикла "Знакомимся с ESP32", в которой мы рассмотрим всякие функции по мелочи: работа с сенсорными кнопками, чтение АЦП, ШИМ, и т. д.


Сенсорные кнопки

В первой части я забыл упомянуть, что в ESP32 есть контроллер сенсорных кнопок. Это такая штука, что если прикоснуться к пину пальцем, то он выдаст некое значение, которое будет означать "вероятность" прикосновения к пину.

Пример с чтением

Для начала я приложу очень нужную картинку

Знакомимся с ESP32, часть 3: по мелочи Esp32, Arduino

Это может быть очень полезно. А теперь код

Попробуем его модифицировать. Вот.

Пример с прерыванием

Вот

АЦП

На самом деле, никаких отличий от Arduino нет. Просто та же функция analogRead, только с тем отличием, что передавать в аргументы нужно не номер аналогового пина, а номер GPIO. Выдаёт значение 0-4095, потому что АЦП 12-битный

ШИМ

Тут всё не так однозначно. ШИМ вроде как нету, но есть библиотека "ledc", которая позволяет использовать до 16 каналов ШИМ одновременно и повесить каждый из них на любой порт. Код

Цифровые пины

Ну тут всё обычно. digitalWrite, digitalRead, pinMode


Пока всё. В следующей части я, скорее всего, расскажу про Wi-Fi

Показать полностью 1
52

Знакомимся с ESP32, часть 2: заводим SD-карту

Всем привет. Мой пост, который я опубликовал около часа назад уже выполз в горячее сообщества, и я набрал аж 10 подписчиков (спасибо). Видимо, людям интересна данная тема. В этом выпуске мы рассмотрим подключение SD-карты к ESP32. Ну что же, поехали!


Я хочу выразить особую благодарность разработчикам arduino-esp32, но их библиотека SD... не работает. Либо вылезают ошибки при компиляции, либо... Помните, я в первой части говорил, что к ESP можно прикрутить внешнюю flash-память на 4-16 МБ? Она подключается по SPI. Прошивки, компилируемые в Arduino IDE, заливаются именно в эту память. Как бы я не подключал SD-карту: ставил подтягивающий резистор на SS, отключал питание SD на время загрузки, но ESP32 в консоль выдавала ошибку о том, что ей не удаётся прочитать flash-память. SD-карта, видимо, блокирует всю SPI шину. Ладно.


Пришлось искать альтернативную библиотеку (на это действие я убил не один час). И такой стала вот эта. Процесс установки более чем обычен: кидаем всё из ZIP-файла в папку libraries. Библиотека позволяет назначить произвольные пины для работы карты. Я подключил так:

ESP32 <> SD

D5 <> SS

D23 <> MOSI

D18 <> SCK

D19 <> MISO

И функции begin() нужно передать пины, к которым мы подключили карту в порядке SS, MOSI, MISO, SCK.

И вдруг, неожиданно, всё заработало. Попробуйте сами: возьмите пример nanosdcard2, и не забудьте поменять аргументы функции SD.begin().

Извиняюсь за столь короткий пост, очень скоро будет третий, про всякие порты сенсорных кнопок, АЦП и т. д.

Показать полностью
243

Знакомимся с ESP32, часть 1: установка в Arduino IDE

Всем привет! С этого поста я начинаю серию "Знакомимся с ESP32". В этой части я опишу сам микроконтроллер, а так же процесс установки в Arduino IDE. Поехали!

Знакомимся с ESP32, часть 1: установка в Arduino IDE Esp32, Arduino, Инструкция, Запуск, Длиннопост

ESP32 - это современный микроконтроллер от компании Espressif Systems, который был выпущен совсем недавно. Под "недавно" я имею в виду лето 2016. Он имеет очень нескромные характеристики:

-Двухъядерный 32-х битный процессор, работающий на частоте 80, 160 или 240 МГц (ну  плюс ещё одно энергосберегающее ядро с урезанным набором команд и на частоте 32 КГц)

-520 КБ оперативки

-448 КБ flash-памяти (на самом деле доступно больше, рассмотрим далее)

-Питание 2.2 - 3.6В

-Дополнительно внешняя flash-память на 4-16 МБ (о чём я говорил ранее)


-Wi-Fi 802.11n с максимальной скоростью 150 Мбит в секунду

-BT 4.2 BR/EDR и Low Energy


-АЦП 12-бит х18

-ЦАП 8-бит х2

-Встроенный датчик температуры

-SPI х4

-I2S x2

-I2C x2

-UART x3

-Ethernet контроллер

-CAN 2.0

-Инфракрасный контроллер, причём, как на приём, так и на передачу

-PWM на всех портах вроде

-Встроенный датчик Холла


-Куча периферии для криптографии (шифровальщики, хешеры, ГСЧ)


А так же энергопотребление:

-При передаче Wi-Fi 160-260 мА

-Без Wi-Fi и BT 20 мА

-Режим "мягкого" сна 0.8 мА

-Режим "глубокого" сна 10 мкА

-Гибернизация со включенным ядром низкого энергопотребления 5 мкА


АХТУНГ! Вы часто будете встречать слово RTC при использовании ESP32. Однако, это не Real Time Clock, а ядро низкого энергопотребления.


Я заказал отладочную плату на Али, которая обошлась мне в 335 рублей, это без доставки.


Установка


1. Скачиваем Arduino IDE

2. Устанавливаем Git с сайта

3. Запускаем Git GUI

3.1. Выбираем Clone Existing Repository

3.2. В Source Location пишем

https://github.com/espressif/arduino-esp32.git

3.3. В Target Directory пишем

C:/Users/[ИМЯ_ПОЛЬЗОВАТЕЛЯ]/Documents/Arduino/hardware/espressif/esp32

3.4. Нажимаем Clone

4. Открываем директорию

C:/Users/[ИМЯ_ПОЛЬЗОВАТЕЛЯ]/Documents/Arduino/hardware/espressif/esp32/tools

и запускаем файл get.exe

5. Подключаем нашу плату

5.1. Если драйвера сами не установились, то устанавливаем драйвера для CP210x (у меня был CP2102) отсюда

6. Запускаем Arduino IDE

7. Выбираем плату в Tools > Board (Инструменты > Плата) (У меня DOIT ESP32 DEVKIT V1)

8. Выбираем COM-порт, в который установилась плата

8.1. Как определить порт?

8.1.1. Открываем диспетчер устройств

8.1.2. Раскрываем группу "Порты (COM и LPT)"

8.1.3. Смотрим название устройств. Среди них должно быть что-то подобное

Знакомимся с ESP32, часть 1: установка в Arduino IDE Esp32, Arduino, Инструкция, Запуск, Длиннопост

COM7 - это и есть наш порт.

9. Выбираем любой пример (например, вот)

10. Загружаем, нажав Ctrl+U

10.1. В некоторых инструкциях говорят, что во время загрузки нужно нажать кнопку BOOT на плате. Однако, у меня всё завелось и без неё.


Поздравляю, теперь вы загрузили свою первую программу на ESP32! Ждите следующих частей, в которых я расскажу некоторые тонкости и трудности, с которыми я столкнулся.

Показать полностью 2
Отличная работа, все прочитано!