arek1996 Napisano Marzec 14, 2022 Udostępnij Napisano Marzec 14, 2022 (edytowany) 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 Marzec 14, 2022 przez arek1996 interpunkcja
MasterYoda95 Marzec 14, 2022 Udostępnij Marzec 14, 2022 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.
arek1996 Marzec 14, 2022 Autor tematu Udostępnij Marzec 14, 2022 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ń?
MasterYoda95 Marzec 14, 2022 Udostępnij Marzec 14, 2022 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.
farmaceuta Marzec 14, 2022 Udostępnij Marzec 14, 2022 (edytowany) 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 Marzec 14, 2022 przez farmaceuta
arek1996 Marzec 14, 2022 Autor tematu Udostępnij Marzec 14, 2022 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ć.
farmaceuta Marzec 14, 2022 Udostępnij Marzec 14, 2022 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
Chumanista Marzec 14, 2022 Udostępnij Marzec 14, 2022 (edytowany) 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 ) : 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 Marzec 14, 2022 przez Chumanista 1
arek1996 Marzec 14, 2022 Autor tematu Udostępnij Marzec 14, 2022 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?
Chumanista Marzec 14, 2022 Udostępnij Marzec 14, 2022 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.
farmaceuta Marzec 14, 2022 Udostępnij Marzec 14, 2022 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..
ethanak Marzec 15, 2022 Udostępnij Marzec 15, 2022 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 1
Dantey Marzec 26, 2022 Udostępnij Marzec 26, 2022 @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
SOYER Marzec 26, 2022 Udostępnij Marzec 26, 2022 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ć.
Dantey Marzec 26, 2022 Udostępnij Marzec 26, 2022 @SOYER https://learn.adafruit.com/i2c-addresses/the-list Znalazłem kiedyś bo przyszedł mi BME280 z Ali i znajdowało mi czujnik ale nie pod 0x77 / 0x76 tylko pod 0x39 i okazało się że dostałem APDS-9960 który niestety przypomina dosyć mocno BME280 1 1
Pomocna odpowiedź
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ę »