ESP8266 a WS28xx

Petr Zapadlo zapik na email.cz
Středa Únor 2 15:37:01 CET 2022


Zdravím,

bojuju tady už několik dní s ovládáním PWM led driverů  WS2818b 
připojených k ESP8266 - pin D2, GPIO4. Mám za sebou pouhé 3ks ws2818, na 
jednom PCB, kousíček od sebe. Slouží jako generátor PWM pro výkonové ledky.

Schema je zde:

https://cloud.zapadlo.name/index.php/s/Ray8n93kTNKk5nK

Nejsem schopen dosáhnout uspokojivé funkce.

S knihovnou Adafruit_NeoPixel jsem se ničeho funkčního nedobral, když 
zobrazuji střídavě jednotlivé barvy, tak občas se zobrazení změní, ale 
je to chaotické a neodpovídá to posílaným datům. (Zkoušel jsem jak 
400kHz, tak 800kHz). Na LA vidím jitter v časování impulsů - jsou takové 
roztřesené. Za prvním ws2818 už data neprolezou = nerozumí jim. Na LA 
není vidět žádná změna při nastavené 400KHz. Ovšem počty impulzů sedí a 
nejsou rozpadlé do shluků. Zkoušeno jen bez Wifi neboť to stejně nikam 
nevede. Vlastní délky impulsů jsou lehce mimo toleranci uvedenou v DS.

Dále jsem vyzkoušel knihovnu Fast_LED, zde jsem dosáhl docela úspěchu - 
ale jen v situaci, kdy není inicializovaná Wifi.  Pokud není wifi - 
impulzy sedí přesně s časováním a funguje to. Nicméně v okamžiku kdy 
zinicializuji Wifi, tak vše končí - v řadě impulzů se objevují velké 
díry, které jsou ws2818 detekovány jako reset. (noInterrupt() situaci 
neřeší). Zajímavé je, že jsem musel připojit na vstup ws za level 
shifter kondenzátor proti zemi 22p, jinak to nechodilo. (zkoušeno i u 
knihovny Ada... beze změny)

Dále jsem našel knihovnu Makuna/NeoPixelBus, zde autor využívá nějaký 
HW, protože jsou k dispozici různé metody - DMA, UART a bitbang. Na 
první dvě jsou pouze jeden konkrétní pin, bitbang by měl chodit na 
každém. Mě teda nechodil - opět na LA "roztřesené" impulzy. Při 
provizorním připojení na RX pin a použití metody DMA - jsou impulzy 
perfektní se stabilním časováním bez ohledu na wifi. Nicméně ta knihovna 
je nějaká pro mě těžkopádná a evidetně určená k výrazně komplikovanější 
situaci  - nejsem schopen zjistit jak nastavit prostou hodnotu na 
jednotlivých kanálech. Neznáte někdo tuhle knihovnu?


Docela jsem z toho frustrován - knihovna Adafruit_NeoPixel má v 
repozitáři statisíce stáhnutí a internet je plný návodů na  její použití 
a ESP8266. Evidentně mi něco uniká a já nevím co.

Díky

Petr




Další informace o konferenci Hw-list