Skocz do zawartości

I2C BME280 i Raspberry


Leander

Pomocna odpowiedź

Kilka miesięcy temu kupiłem Malinę, żeby - między innymi - wciągnąć się w Pythona i po latach wrócić do programowania (kiedyś jako tako ogarniałem średnie podstawy i coś tam dla siebie pisałem). Uważam, że fajnie się uczy, gdy wymyślamy sobie jakieś mikroprojekty, na których można różne rzeczy potestować. Doszedłem do etapu, na którym mam ochotę podpiąć coś do GPIO. No i jakieś diody plus Python: ogarniam. Na marginesie - jestem dumnym absolwentem pierwszego kursu elektroniki Forbot, na drugi może niedługo znajdę czas 😄. Mam też czujnik temperatury BME280. No i tu pytanie o I2C. W wyprowadzeniu jego pinów jest napięcie, masa (oba zrozumiałe), SDA i SCL (w opisie pinów Maliny też obecne (GPIO2, GPIO3), jest CS, ale to pin nie z I2C i jest ADDR opisany jako pin wyboru adresu. W dokumentacji czujnika jest NC/GND. Nie podłączony albo masa, prawda? Obojętne jest to? Jaka jest różnica? Zmiana adresu (czyli do normalnej pracy zostaje niepodłączony)?

Pytania początkującego, więc wybaczcie prostotę :). Dane znalazłem sam, jak widać, ale wolę się dopytać o interpretację.

Edytowano przez Leander
Link do komentarza
Share on other sites

@Leander W RPi 4 masz sporo magistrali do wyboru, najprościej będzie skorzystać z tych wyprowadzeń: 

image.thumb.png.c5e9db0840ca5d5b8f610248f9cc95fc.png

18 godzin temu, Leander napisał:

jest CS, ale to pin nie z I2C

image.thumb.png.648e2b906e3c661de74a527c3e5ea04f.png

Możliwe że jest to z trybu SPI, jak masz linię SDO to jest opcja SPI. Płytek z BME jest sporo i ciężko o uniwersalną poradę, najlepiej pokaż jaką masz 😉 

Link do komentarza
Share on other sites

BME280, napisałem wyżej. Są jakieś warianty? Dokumentacja jest tu: https://www.waveshare.com/w/upload/7/75/BME280_Environmental_Sensor_User_Manual_EN.pdf

i przede wszystkim chodzi mi o funkcję pinu ADDR opisanego jako NC/GND dla Raspberry. Czy śmiało mogę zostawić niepodłączony? Dokumentacja mówi o podłączeniu w przypadku zmiany adresu urządzenia.

Link do komentarza
Share on other sites

@Leander jest sporo wariantów, a jak się wpisze w grafiki googla to jest tam mix BME/BMP. Np. moduł który kiedyś kupiłem, miał wyprowadzone tylko I2C i zasilanie.

W dokumentacji jest takie coś:

image.thumb.png.6b4b127eb961a572a298706891633674.png

Oznacza to że pin ADDR jest domyślnie podciągnięty rezystorem do zasilania i stąd adres jest z ustawionym LSB na 1. NC/GND oznacza sposób obsługi tego pinu. NC - no connection czyli zostaw wiszący w powietrzu to będzie ta domyślna 1. GND podłącz do masy to zrobi się 0 i LSB adresu będzie 0.

1 godzinę temu, Leander napisał:

Czy śmiało mogę zostawić niepodłączony?

Zgadza się.

  • Pomogłeś! 1
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

OK, rozumiem. Czyli przełączenie adresu nie jest programowe, tylko właśnie stanem przed wpięcie / wypięcie kabla. Dziękuję za rozjaśnienie.

Link do komentarza
Share on other sites

(edytowany)

Czy można zmienić temat wątku? Nie chcę zakładać nowego, bo to dalej o początkach z I2C i podlinkowanym czujnikiem BME280.

1. Wczoraj wpiąłem czujnik i ADDR wpięty w masę dał mi adres 0x76. Dziś jest tak samo wpięty i jest... 0x77. Kabelek poprawiam (wtykany w pin), ale bez zmian. Sprawdzam to przez i2cdetect -y 1.

2. Jak się skomunikować z czujnikiem w Pythonie? Czytam różne poradniki, zainstalowałem bibliotekę bme280 (wg tego https://pypi.org/project/RPi.bme280/ sudo pip install RPi.bme280 - coś jeszcze powinienem?), ale...

3. W pythonie "import smbus2" zwraca mi "no module named smbus2", a import bme280 - między innymi błąd składni ze wskazaniem na  drugi cudzysłów w print "Chip ID :", chip_id. Obie biblioteki są (sprawdziłem pip list). Czy tu wersja pythona ma znaczenie?

To są pytania kompletnie początkującego (w pythonie i czujnikach 😉 ), więc mogą wynikać z dużej niewiedzy, zatem wybaczcie.

Edytowano przez Leander
Link do komentarza
Share on other sites

3 godziny temu, Leander napisał:

Czy tu wersja pythona ma znaczenie?

Ma znaczenie jeśli masz obie wersje na RPi. Jak piszesz w pythonie3 to sprawdź "pip3 list". Jeśli nie ma to zainstaluj wpisując "sudo pip3 install smbus2".

Jeśli masz Pythona 2 i Pythona 3 to "pip" tyczy się wersji 2 a pip3 wersji 3.

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

Dziękuję!

Doszedłem do takiego miejsca, w którym coś nakopałem i różne uninstall nie działały. Robię to na Pi Zero, które jest do eksperymentów, więc przeinstalowałem system :). Na świeżo zainstalowałem RPi.bme280, ale właśnie przez pip3 i bez problemów śmiga w Pythonie (import bme280 działa, więc i dalej poszło).

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.