В этот раз я решил не повторять прошлых ошибок, не убирать в ящик платы, с которыми было бы весьма неплохо разобраться. Тем более что я решил делать собственные RGB контроллеры, а для них как раз нужны транзисторы.
Translation to English is here. Также основной канал в telegram
Сами платы я уже описывал, поэтому этот пункт мы опустим:
Для работы с ними в ESPHome есть два компонента, neopixelbus, который знаком нам с прошлой статьи и fastled:
Имея опыт работы с neopixelbus, первую конфигурацию я решил собрать на нем. Несмотря на то, что чипы разные, в ESPHome конфигурации все просто, указываем вместо одного пина - два:
data_pin:
clock_pin:
Я все собрал проект, запрограммировал плату и ничего не заработало. Поменял порты на всякий случай - нет. Поменял еще на одни - опять нет. Где-то прочитал, что нужно использовать 3.3В, а не 5В, но нет, ничего не произошло опять.
В поисках ответа мне попался такой конфиг с гита:
Помог он мне тем, что намекнул на факт возможности использовать fastled spi компонент, который не собрался и вывел кучу ошибок.
Решил для начала проверить, а работают ли платы, а работает ли компонент. Взял ESP8266, спаял все как в примере с гита, все заработало. Очевидно, что работает и плата, и библиотека. Вернулся на esp32-s2, опять ошибки компиляции.
Начав читать логи этих ошибок, я и пришел к выводу, что порты, которые я использую - некорректные. Ок, но какие же тогда корректные? В проекте с гита на esp8266 используются пины d6 (miso) И d7 (mosi).
Идем в описание SPI интерфейса:
Действительно порты D6 b D7 используются для SPI, правда логичнее было бы использовать D6 и D5, наверное... но ладно, работает же. Теперь надо разобраться, почему не работает у меня. Чтобы найти указанные порты на esp32-s2, лезем в техническую документацию. Вроде как за SPI отвечают порты в районе 30-ых. За clock отвечает порт 33, и ошибка сразу пропала, а вот с data как-то не сложилось. Методом перебора я нашел новый, на которые библиотека не стала ругаться и только тогда все и заработало по-настоящему:
data_pin: 5
clock_pin: 33
Не знаю почему, но на пятый порт компилятор не ругался. В процессе перебора я даже указал порты, на которых что-то распаяно. Понял я это когда не нашел порта на гребенке, а плата и вовсе не стартовала ☺. Итоговый код выглядит так:
esphome:
name: p9813-controller
esp32:
board: lolin_s2_mini
framework:
type: arduino
logger:
api:
encryption:
key: "superkey"
ota:
password: "superpassword"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap:
ssid: "P9813-Controller"
password: "1234567890"
captive_portal:
light:
- platform: fastled_spi
chipset: P9813
data_pin: 5
clock_pin: 33
num_leds: 5
name: "RGB"
id: bled
effects:
- pulse:
- addressable_rainbow:
- flicker:
- random:
Как видим, все просто. Обсуждать и описывать тут особо нечего, вся сложность была в том, чтобы найти эти верные порты. Вот вам видео работы:
Мой блог является некоммерческим, поэтому позитивный комментарий, лайк или репост поможет публикациям выходить чаще и развивать канал☺.
Также публикации можно найти на других площадках: Instagram, telegram (RU, EN, DE), Medium, LiveJournal, YouTube, Reddit