Skocz do zawartości

Pomocna odpowiedź

Napisano (edytowany)

Witam. Mam problemy z obsługą I2C na NodeMcu v3.

NodeMCU v3 podłączony z LCM1602 tak jak na schemacie poniżej z tym że LCM1602 dostaje zasilanie 5V zasilacza, a GND z NodeMCU, LCM1602 i zasilacza są połączone razem. LCM1602 docelowo podłączony jest do wyświetlacza 20x4.
node_mcu_v3_lcm1602.thumb.png.67cf4316f8ad59a40c4fd65a35482e61.png


1. Po odpaleniu I2cScanner otrzymuję:

Scanning...
Unknown error at address 0x01
Unknown error at address 0x02
....
No I2C devices found


2. Po odpaleniu I2CexpDiag z https://github.com/duinoWitchery/hd44780 dostaję:

Serial Initialized
--------------------------------------------------------------------
I2CexpDiag - i2c LCD i/o expander backpack diagnostic tool
--------------------------------------------------------------------
hd44780 lib version: 1.3.2
--------------------------------------------------------------------
Reported Arduino Revision: 1.8.16
Arduino Board: ESP8266_NODEMCU_ESP12E
CPU ARCH: ESP8266 - F_CPU: 80000000
--------------------------------------------------------------------
SDA digital pin: 4 (GPIO4)
SCL digital pin: 5 (GPIO5)
--------------------------------------------------------------------
Checking for required external I2C pull-up on SDA - STUCK LOW
Checking for required external I2C pull-up on SCL - STUCK LOW
********************************************************************
ERROR: SDA or SCL stuck pin
********************************************************************
I2C bus not usable

Testowałem również na przypadkach gdzie na dwóch różnych expanderach LCM1602, gdzie nie ma podłączonego wyświetlacza i zasilacza, a zasilanie LCM1602 jest z pinu NodeMCU 3V, korzystałem również z różnych przewodów - efekt ten sam.
Sprawdziłem też piny D1 i D2 - są zdrowe (jest prawidłowe napięcie gdy ustawiony jest stan wysoki, a po podłączeniu diody i odpaleniu testowego programu prawidłowo mruga).

Ponadto sprawdziłem też to samo na innym ESP8266 - tym razem pod postacią Wemos D1 mini - tam sytuacja również jest taka sama.

Czy pominąłem jakiś krok? Jakieś sugestie?

Edytowano przez adamZet

Jak masz ustawione gpio w node mcu w sensie czy piny sda i scl pokrywają się z tym co jest fizycznie podłączone? 

Na której płytce? Bo na NodeMCU na 100% nie ma żadnych rezystorów na GPIO4/GPIO5, a jeśli chodzi o konwerter do wyświetlacza to ja się kiedyś już naszukałem dlaczego z UNO działa a z Pro Mini już nie 🙂

 

10 minut temu, ethanak napisał:

O ile pamiętam potrzebne są rezystory podciągające.

Są już zawarte na płytce LCM1602. Gdybym wokorzystywał sam układ PCF8574 to wtedy było by konieczne zastosowanie ich.

20 minut temu, _LM_ napisał:

Jak masz ustawione gpio w node mcu w sensie czy piny sda i scl pokrywają się z tym co jest fizycznie podłączone? 

Tak jak na zamieszczonym schemacie (po to go umieściłem). By rozwiać Twoje wątpliwości poniżej zdjęcie połączonego układu:

 

IMG_20211115_184507.jpg

5 minut temu, adamZet napisał:

Są już zawarte na płytce LCM1602

Wiesz, ja tak z doświadczenia.

Zrobiłem kiedyś próbę na Arduino UNO, działało świetnie. W docelowym układzie podłączyłem Pro Mini - oczywiście zero reakcji ze strony wyświetlacza.[1] Podłączenie rezystorów podciągających 4.7k pomogło od strzału.

Oczywiście LCM1602 z "podobno" rezystorami na pokładzie.

Ja bym spróbował dwa rezystorki podłączyć...

---

[1] Teraz już wiem dlaczego. W UNO podłączane są wewnętrzne pullupy do linii i2c - ot, taka uroda tego co siedzi w "variants"

  • Lubię! 1
52 minuty temu, ethanak napisał:

Wiesz, ja tak z doświadczenia.

Zrobiłem kiedyś próbę na Arduino UNO, działało świetnie. W docelowym układzie podłączyłem Pro Mini - oczywiście zero reakcji ze strony wyświetlacza.[1] Podłączenie rezystorów podciągających 4.7k pomogło od strzału.

Oczywiście LCM1602 z "podobno" rezystorami na pokładzie.

Ja bym spróbował dwa rezystorki podłączyć...

---

[1] Teraz już wiem dlaczego. W UNO podłączane są wewnętrzne pullupy do linii i2c - ot, taka uroda tego co siedzi w "variants"

Po podłączeniu pod 4,7kR na SDA i SCL rezultat jest taki sam.

8 godzin temu, adamZet napisał:

Checking for required external I2C pull-up on SDA - STUCK LOW

Checking for required external I2C pull-up on SCL - STUCK LOW

********************************************************************

ERROR: SDA or SCL stuck pin

Może ja nie umiem czytać ale po mojemu on tu się pruje że pullupy nie są podłączone.

(edytowany)

Pewnie chodzi o te w programie, w ustawieniach gpio jako input pullup

 

Edytowano przez _LM_

Skoro ten moduł nie chce działać na żadnej z twoich płyt testowych to może oznaczać że jest uszkodzony, dla pewności zamiast tego modułu podłączyłbym coś innego na magistralę czy w ogóle zadziała. Inna opcja to sprawdzić z tym podłączonym modułem napięcia ba sda i scl, czy może któreś nie jest przywarte do masy. 

46 minut temu, _LM_ napisał:

Skoro ten moduł nie chce działać na żadnej z twoich płyt testowych to może oznaczać że jest uszkodzony, dla pewności zamiast tego modułu podłączyłbym coś innego na magistralę czy w ogóle zadziała. Inna opcja to sprawdzić z tym podłączonym modułem napięcia ba sda i scl, czy może któreś nie jest przywarte do masy. 

Tak jak napisałem w pierwszym poście oraz tak jak możesz zobaczyć na pierwszym zdjęciu które dla Ciebie zrobiłem - posiadam dwa moduły LCM1602. Na obu jest taka sama sytuacja.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...