Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Rozwiązano] NODEMCU + czujnik BME280 + LCD2x16 - konflikt I2C

zomb 12 Lut 2018 21:37 306 8
  • #1 12 Lut 2018 21:37
    zomb
    Poziom 8  

    Wtam
    mam układ składający się z Nodemcu v3 i wpiętych do niego kilka urządzeń. Miedzy innymi LCD2x16 i czujnik wilgoci BME280 skomunikowane po I2C.

    Wszystko dobrze działa do momentu jak odetnę zasilanie od LCD (mam switcha którym mam możliwość odciąć prądu od LCD) i wówczas BME280 który wpięty jest na tej samej szynie co LCD zaczyna pokazywac głupoty (wilgotnośc 100% i temp. -144).

    Kojarzę że jak testowałem sam LCD wpięty po I2C i przypadkowo odpiąłem zasilanie, to serial port pokazywał jakieś krzaki.

    Wygląda jakby był problem z urządzeniem wpiętym po I2C bez zasilania.
    Podpowiecie coś?

    Zrobiłem jeszcze test w drugą stronę: odpiąłem zasilanie od BME280 przy wpiętym LCD. W tym przypadku LCD przestał wyświetlać cokolwiek. Po ponownym podaniu zasilania na BME wszystko działą dobrze.

    Jak mogę odciąć zasilanie od jednego z urządzeń żeby drugie działało.

    0 8
  • #2 12 Lut 2018 21:50
    alienHater
    Poziom 10  

    To samo się dzieje gdy masz odcięty od zasilania lcd i włączysz Arduino z czujnikiem?
    Co mają krzarzki w serialu do i2c? Jedyne co przychodz mi na myśl to reset arduino, tak nie powinno być. Ustaw port na 115200 i zobacz czy pokaże się tekst(po odcieciu zasilania od lcd)?

    0
  • #3 12 Lut 2018 21:57
    tos18
    Poziom 37  

    Proponuję sprawdzić jak wygląda sprawa rezystorów podciągających linie magistrali I2C. Niektóre moduły BME mają rezystory na pokładzie. W takim przypadku po odcięciu zasilania modułu będą problemy(rezystory stworzą połączenie między SDA i SCL ). Rozwiązanie to usunięcie rezystorów podciągających z modułów i umieszczenie ich przy kontrolerze oraz zasilanie z kontrolera.

    0
  • #4 12 Lut 2018 22:30
    zomb
    Poziom 8  

    Pewnie masz rację z tymi rezystorami podciągającymi ale nie bardzo wiem jak się za to zabrać.

    Ale w sumie jak ustawię
    lcd.noDisplay();
    lcd.noBacklight();
    to mam chyba o co mi chodziło, tylko muszę trochę układ zmienić.

    Dziękuje

    0
  • Pomocny post
    #5 13 Lut 2018 10:21
    chemik22
    Poziom 14  

    Na tych chińskich płytkach BMP/BME280 to tam jest wlutowany rezystor na 100%..


    Tak w ogóle to LCD2x16 to pracuje Ci na 3,3V ? pytam bo najczęściej występują w wersji na 5V..

    0
  • #6 13 Lut 2018 11:55
    zomb
    Poziom 8  

    działa ale marnie świeci wiec zasilam go z innego źródła 5V.

    Jak mogę pozbyć się tego rezystora i czym to skutkuje?

    0
  • Pomocny post
    #7 13 Lut 2018 12:56
    tos18
    Poziom 37  

    Nie rezystora tylko rezystorów i nie pozbyć tylko przełożyć w inny punkt magistrali.
    I2C jest magistralą pozwalającą na podłączenie wielu urządzeń. Do pracy wymaga tylko dwóch rezystorów podciągających napięcie na liniach SDA i SCL do napięcia zasilania w stanie nieaktywnym.
    popatrz na ten obraz

    0
  • #8 13 Lut 2018 13:29
    chemik22
    Poziom 14  

    Musisz usunąć z płytki BME280 (lutownicą) dwa rezystory które są podpięte do SCA/SCL. Ta płytka ma kilka elementów wiec na pewno się domyślisz które to są (blisko tych pinów SCA/SCL)... Jak już je usuniesz to przy wejściu do NodeMCU daj podciągające rezystory do Vcc na tych nóżkach tak jak to przedstawił kolega wyżej na schemacie

    0
  • #9 14 Lut 2018 09:38
    zomb
    Poziom 8  

    jako że nie czułem się na siłach na wylutowanie tych rezystorów, zdecydowałem się rozwiązać temat od strony programowej.

    Switchem nie odpinam zasilania tylko podaję sygnał na wejście i ustawiam lcd.noDisplay();
    lcd.noBacklight();

    lub

    lcd.display();
    lcd.backlight();

    dziękuję za pomoc i zamykam temat.

    0