ESP-32 и INA219
Как измерить напряжение батареи при питании вашей самоделки на базе базе ESP32?
Самым очевидным решением было бы использовать резисторный делитель и снимать напряжение батареи с него, однако, оказалось, что модуль ESP-32 Cam который я использую для опытов не содержит ни одного аналогового входа, они все используются для встроенной камеры.
Поэтому, другим вариантом было использования отдельного датчика на базе INA219. Этот чип общается с внешним миром через i2c - для этого можно использовать любые две ноги ввода-вывода - в моем случае это 13 -SDA, 15-SDL. Для того чтобы все заработало как полагается в стандартный пример от Adafruit достаточно добавить одну единственную строчку для инициализации i2c на нестандартных выводах:
Wire.begin(13, 15);
Питание микороконтроллера осуществляется Step Down стабилизатором выходное напряжение которого устанавливается переменным резистором - на нем я выставил напряжение около 3.3 вольта.
Интересно, что если ничего не подать на ногу V+ INA219 то она показывает напряжение около 0.8 В и ток порядка 10mA - уж не знаю почему - во всех примерах которые я видел в сети на него ничего не подается и эти ноги используются только при измерении токов - у меня же, почему то так не заработало - нужно было сигнал подавать именно на +V при том что я запитал сам сенсор от 3.3 вольта от которого запитал и микроконтроллер.
Вот код прошивки.
Вот так выглядит моя схема.
На реальной схеме было несколько больше деталей, но в данной прошивке они не используются:
Вот что выводится в терминал:
Таким образом удалось измерить не только напряжение на аккумуляторах, но и потребляемый устройством ток.
ESP-32 Работает!
Подключил, залил пробный скетч - оно работает! Фантастика!
Хотя, признаться, работает довольно препаршиво. В сети регистрируется даже не через раз а раз в десять раз - в чем проблема пока не понятно - то ли не хватает питания, толи еще чего не нравится. Но ESP всегда были очень капризными модулями и тут важен сам факт того что работает а стабильность это уже будет отдельная история...
Удобный переходник для ESP-03
Нашел на thingiverse удобный преходник для ESP-03 для макетной платы. До этого приходилось припаивать к площадкам ESP-03 проводочки которые затем вставлялись в макетную плату. Выглядело это дело не очень. Но тут совершенно случайно наткнулся в сети на удобный переходник который можно распечатать на 3D принтере - и тут же распечатал - получилось просто прекрасно:
Надо сказать, 3D принтер просто незаменимая вещь в хозяйстве, особенно если научиться моделировать в Blender. Я пока только его осваиваю, но уже понимаю, что это вызывает зависимость. Зато теперь я могу с легкостью распечатать всякую мелочь, например каркасы для индуктивностей, различные разветвители для домашней поливалки и прочую мелочь, сделать которую другими способами было бы проблематично.
Увеличение чиcла GPIO для esp8266
Давно играюсь с esp8266, для тех кто не в курсе это такая маленькая микросхема размешенная на готовом модуле. Этот модуль можно купить у китайцев за два доллара, причем модуль этот представляет собой полноценный микроконтроллер, имeющий на борту все, что нужно чтобы создавать довольно навороченные решения и умеющий общаться c внешнем миром по wifi.
Одной из проблем этого модуля является ограниченное количество портов общего назначения. У ESP-01 свободным остается только GPIO2, хотя можно еще использовать GPIO0 и два порта через которые заливают прошивку с компьютера RX и TX тоже можно использовать как GPIO.
Однако, мне для моих поделок нужно было больше GPIO выводов, гораздо больше. Сначала, хотел попробовать сдвиговые регистры, однако потом пришла в голову идея получше - 1Wire!
У фирмы Maxim есть замечательные ключи, например, ds2413 содержит два управляемых ключа, которые могут работать как для чтения так и для записи. У ds2408 их 8. При этом, можно сколько угодно вешать таких устройств на одину шину 1Wire которая в простейшем случае представляет из себя выход GPIO микроконтроллера с подтягивающим резистором 4.7 кОм. 1Wire позволяет вешать до 256 устройств на шину, что позволяет получить отличную масштабируемость.
У китайцев на aliexpess можно купить аналог ds2413 - 3A 2100H. Хотя, у большинства продавцов написано, что продают они ds2413 - у того у которого я купил, на картинке четко была видна маркировка - 3A 2100H, больше в описании об это ничего не было сказано. От оригинальных микросхем аналог отличается только семейным кодом - у оригинального он 0x3A у китайского 0x85 так что, если заходите взять поиграть, не наколитесь. Сначала, хотел написать грозный отзыв продавшему мне эти чипы китайцу, но когда скетч успешно заработал, я написал не очень грозный...
Вот пример для работы с ардуиной, который мне помог разобраться. Еще потребуется библиотека OneWire. В последних версиях есть поддержка esp8266. Чтобы пример заработал с 2100H нужно поменять в нем 0x3A на 0x85.
Теперь, можно делать на esp8266 устройства с любым количеством входов-выходов. При условии, кончено, что они будут не слишком быстро переключаться - у 1wire не сильно высокая пропускная способность.