logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak uruchomić komunikację i2c między NodeMcu a Wemos D1?

omnixcrs 16 Lut 2020 13:37 2433 15
REKLAMA
  • #1 18474243
    omnixcrs
    Poziom 11  
    Posty: 397
    Pomógł: 8
    Ocena: 60
    Witam,

    koledzy i koleżanki brakuje mi już pomysłów na powyższy problem. Próbuje od paru godzin uruchomić komunikacje i2c pomiędzy NodeMcu oraz Wemos D1 mini.
    Obydwie płytki połączyłem masą oraz d1 do d1 i d2 do d2. Oczywiście linie podciągnięte do zasilania przez 4k7. Node jako Master i Wemos jako Slave. Niestety po wgraniu programów w monitorze portów nic !
    Wklejam kody, są to prawie gotowe przykłady, może coś źle przerobiłem.

    Kod master do node:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    kod do Slave Wemos:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 18474289
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #3 18474311
    omnixcrs
    Poziom 11  
    Posty: 397
    Pomógł: 8
    Ocena: 60
    funkcja zwraca wartość 2

    Dodano po 11 [minuty]:

    podłączyłem dla testów zamiast wemosa arduino nano usuwając oczyiście linijkę "Wire.begin(D2, D1);" i działa bez problemu, podejrzewam że własnie tu będzie problem z tym adresowaniem albo ustawianiem pinów, może to źle zapisuje ??
    Próbowałem zapisu także w takiej formie: " Wire.begin(D2,D1,8); " i również nic.
  • Pomocny post
    #4 18474382
    Konto nie istnieje
    Poziom 1  
  • #5 18474388
    omnixcrs
    Poziom 11  
    Posty: 397
    Pomógł: 8
    Ocena: 60
    tak jak napisałem powyżej użyłem też: "Wire.begin(D2, D1, 8);" i nic to nie dało.
    Wyczytałem gdzieś że esp 12 nie ma opcji żeby pracować trybie SLAVE czy to możliwe ??
    Podłączyłem inne esp zamiast WEMOSA, a mianowicie kolejne NodeMcu i też nic.
  • Pomocny post
    #6 18475388
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #7 18476318
    omnixcrs
    Poziom 11  
    Posty: 397
    Pomógł: 8
    Ocena: 60
    Hmm.... rozumiem w takim razie zrezygnuje z esp jako sleve i zastąpie je jakimś Adriano uno albo mega, one chyba obsługują TRYB slave.
  • Pomocny post
    #8 18476437
    Konto nie istnieje
    Poziom 1  
  • #9 18477006
    omnixcrs
    Poziom 11  
    Posty: 397
    Pomógł: 8
    Ocena: 60
    Tak, wiem. Dzięki za pomoc khoam!
  • #10 18504131
    omnixcrs
    Poziom 11  
    Posty: 397
    Pomógł: 8
    Ocena: 60
    Witam mam jeszcze pytanko czy esp32 będzie obsługiwać tryb slave ??
  • #11 18504298
    Konto nie istnieje
    Poziom 1  
  • #12 18504875
    omnixcrs
    Poziom 11  
    Posty: 397
    Pomógł: 8
    Ocena: 60
    Aha, czyli krótko mówiąc nie mogę użyć ESP32 jako slave programując go z Arduino IDE, tak ??
  • REKLAMA
  • #14 18505362
    omnixcrs
    Poziom 11  
    Posty: 397
    Pomógł: 8
    Ocena: 60
    Ok jakoś to ogarnę. Powiedz mi jeszcze tylko tak trochę z innej beczki: Ponieważ muszę zbudować sieć czujników temp. na obiekcie gdzie wiadomo są odległości. Będą to DS18b20 po onewire. Z różnych źródeł wyczytałem że najbezpieczniej będzie zbudować magistralę o maksymalnej długości do 100m. Ja potrzebuje rozłożyć około 30 czujników więc na pewno znacznie przekroczę 100m dlatego wymyśliłem sobie że na jednym esp stworze sobie np. 3-4 magistrale na różnych pinach, czy to możliwe i czy będzie to działać ??
  • #15 18505375
    Konto nie istnieje
    Poziom 1  
  • #16 18505406
    omnixcrs
    Poziom 11  
    Posty: 397
    Pomógł: 8
    Ocena: 60
    Ok już tworze.

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik ma problem z uruchomieniem komunikacji I2C między płytkami NodeMCU (jako Master) a Wemos D1 mini (jako Slave). Po podłączeniu i skonfigurowaniu pinów, kod nie działał, a funkcja Wire.endTransmission() zwracała wartość 2, co wskazuje na błąd. Po testach z Arduino Nano, które działało poprawnie, użytkownik podejrzewał problemy z adresowaniem lub ustawieniem pinów. Okazało się, że ESP8266 nie ma sprzętowego kontrolera I2C, co może powodować problemy z komunikacją. Użytkownik zdecydował się na użycie Arduino Uno lub Mega jako Slave, które obsługują ten tryb. Pojawiło się również pytanie o możliwość użycia ESP32 jako Slave, co okazało się niemożliwe w kontekście biblioteki Wire w Arduino HAL. Użytkownik rozważał również budowę sieci czujników temperatury z wykorzystaniem magistrali OneWire.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA