Skocz do zawartości

ESP32 i I2C dla czujnika BMP180


arek1996

Pomocna odpowiedź

Witam,

Mam czujnik ciśnienia i temperatury GY-68 BMP180, który był podłączony do ESP8266 i tam to dość łatwe do podłączenia bo piny SDA i SDL są opisane na płycie. Natomiast potrzebuje do projektu więcej analogowych wejść a tam, w ESP8266, jest tylko jedno i zastanawiam się gdzie i jak na ESP32 podłączyć. Czy biblioteka, którą do tego includowałem "Adafruit_BMP085.h" automatycznie wykrywa płytkę i ich piny czy trzeba to jakoś skonfigurować? I zastanawiam się czemu czujnik nie korzysta z dwóch analogowych wyjść zamiast zajmować miejsce I2C.

Pozdrawiam.

Edytowano przez arek1996
interpunkcja
Link do komentarza
Share on other sites

Nie znam tej biblioteki, ale może pomogę z ostatnim pytaniem. Do magistrali I2C może być podłączone wiele urządzeń na raz, więc nie powiedziałbym że jest to "zajmowanie" 🙂 Jest to czujnik cyfrowy, dlatego do jego odczytu nie jest potrzebne ADC.

Link do komentarza
Share on other sites

1 minutę temu, MasterYoda95 napisał:

Nie znam tej biblioteki, ale może pomogę z ostatnim pytaniem. Do magistrali I2C może być podłączone wiele urządzeń na raz, więc nie powiedziałbym że jest to "zajmowanie" 🙂 Jest to czujnik cyfrowy, dlatego do jego odczytu nie jest potrzebne ADC.

Dziękuje za odpowiedź, jestem ciekaw na jakiej zasadzie można podłączyć pod I2C więcej urządzeń? 

Link do komentarza
Share on other sites

Wystarczy je podpiąć do tych samych linii SDA, SCL (i oczywiście wspólna masa). Peryferia mają swój adres, więc urządzenie master "rozmawia" z każdym slave oddzielnie, a inne w tym czasie milczą, żeby nie zakłócać trwającej transmisji.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Jak korzystasz z esp32 przez Ardu ide to sa jakies piny przypisane na starcie do i2c, (trzeba sprawdzic ktore) ale jest chyba jeszcze mozliwosc zdefiniowac inne piny...chyba na wiekszosci pinow mozesz puscic i2c...

O tu masz opis pinow etc https://randomnerdtutorials.com/esp32-i2c-communication-arduino-ide/

Bmp180 to nie jest przypadkiem tylko do cisnienia???

Edytowano przez farmaceuta
Link do komentarza
Share on other sites

1 minutę temu, farmaceuta napisał:

Jak korzystasz z esp32 przez Ardu ide to sa jakies piny przypisane na starcie do i2c, (trzeba sprawdzic ktore) ale jest chyba jeszcze mozliwosc zdefiniowac inne piny...chyba na wiekszosci pinow mozesz poscic i2c...

A to nie tak, że są jakieś przypisane "od góry"? Np. Arduino Uno ma chyba zwarte SDA i SCL z pinami A4 i A5 i chyba nie da się tego zmienić.

Link do komentarza
Share on other sites

1 minutę temu, arek1996 napisał:

A to nie tak, że są jakieś przypisane "od góry"? Np. Arduino Uno ma chyba zwarte SDA i SCL z pinami A4 i A5 i chyba nie da się tego zmienić.

Sa...21/22 bodajze...w linku powyzej masz wszystko namalowane

Link do komentarza
Share on other sites

12 minut temu, arek1996 napisał:

A to nie tak, że są jakieś przypisane "od góry"? Np. Arduino Uno ma chyba zwarte SDA i SCL z pinami A4 i A5 i chyba nie da się tego zmienić.

A to zależy, Uno jest na Atmega328 który ma "po staremu" peryferia podpięte bezpośrednio na piny. ESP32 robi to inaczej, poza kilkoma bardzo szybkimi interfejsami wszystko idzie na GPIO przez multiplekser więce można dowolnie przestawiać (co jest nawet opisane w linku w artykule który wrzucił @farmaceuta ) :
image.thumb.png.a376f634c258babc32d119d741ae9f97.png

No i zawsze można softowo udawać I2C na dowolnych pinach.

Do tego dochodzi nieszczęsne Arduino i jego założenia co jak powinno działać, jak ostatnio używałem inaczej w każdej bibliotece.

Edytowano przez Chumanista
  • Lubię! 1
Link do komentarza
Share on other sites

Nie miałem pojęcia, że można softowo udawać I2C na pewno będę googlować i testować jak to działa. Dziękuje 🙂 

Ps. jeśli pod I2C można mieć więcej urządzeń podłączonych to w jaki sposób programować albo pobierać dane z tego konkretnego który nas interesuje? 

Link do komentarza
Share on other sites

36 minut temu, MasterYoda95 napisał:

Peryferia mają swój adres, więc urządzenie master "rozmawia" z każdym slave oddzielnie, a inne w tym czasie milczą, żeby nie zakłócać trwającej transmisji.

Tak o.

Często urządzenia pod I2C mają pin/y do ustawienia części adresu jak chcesz kilka takich samych, są też specjalne IC do tego celu.

Link do komentarza
Share on other sites

7 minut temu, arek1996 napisał:

Ps. jeśli pod I2C można mieć więcej urządzeń podłączonych to w jaki sposób programować albo pobierać dane z tego konkretnego który nas interesuje? 

Po to sa wlasnie te adresy...wysylasz konkretne polecenie na dany adres i czekasz na odpowiedz...i tak z kazdym urzadzeniem..

Link do komentarza
Share on other sites

8 godzin temu, farmaceuta napisał:

Bmp180 to nie jest przypadkiem tylko do cisnienia???

Nie - pomiar temperatury jest konieczny do kompensacji pomiaru ciśnienia.

8 godzin temu, farmaceuta napisał:

Sa...21/22 bodajze...

Zą zdefiniowane jaki SDA/SCL, ale nie wszystkie płytki mają te piny wyprowadzone. Przykład kodu dla Lolin32 Lite (nie ma pinu 21):

#define PIN_SCL 22
#define PIN_SDA 19

void setup()
{
  Wire.begin(PIN_SDA, PIN_SCL);
  Wire.setClock(400000);
  // i tak dalej
  
   

Jak ktoś bardzo chce może wygrzebać sobie resztę ze źródeł poziomicy.

I jeszcze ciekawostka o adresach: w niektórych urządzeniach (np. VL53L0X) można zmienić adres po inicjalizacji urządzenia. Wymaga to co prawda nieco ekwilibrystyki (tzn. trzeba uruchomić urządzenie na domyślnym adresie i dopiero nadać inny) w przypadku dwóch czujników na jednej szynie 🙂

  • Lubię! 1
Link do komentarza
Share on other sites

@arek1996 wpisz sobie chociażby na YT o magistralach. Większość działa podobnie mimo. Sieci komputerowe też podobnie działają. Masz adresy które są pod konkretnymi urządzeniami. Nawet jest stronka która ma listę adresów jakie mają konkretne czujniki. Dana bilbioteka sprawdza dane pod tym adresem i jeśli istnieje to na nim operuje. Z reguły na adresach opiera się większość urządzeń. RAM to też adresy w które się wpisuje bity 

Link do komentarza
Share on other sites

3 godziny temu, Dantey napisał:

Nawet jest stronka która ma listę adresów jakie mają konkretne czujniki.

Podziel się wiedzą, ja zawsze korzystam z i2c scanner, ale może się przydać.

Link do komentarza
Share on other sites

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...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.