Spisu treści:
- Krok 1: Niezbędny rachunek za sprzęt
- Krok 2: Połączenia sprzętowe dla obwodu
- Krok 3: Programowanie Raspberry Pi w Pythonie
- Krok 4: Działający kod
- Krok 5: Wykorzystanie w praktycznym świecie
- Krok 6: Wniosek
Wideo: Stacja pogodowa wykorzystująca Raspberry Pi z BME280 w Pythonie: 6 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:29
to maith an scéalaí an aimir (Pogoda to dobry gawędziarz)
W obliczu globalnego ocieplenia i problemów ze zmianą klimatu globalny wzorzec pogody staje się nieregularny w całym naszym świecie, co prowadzi do wielu klęsk żywiołowych związanych z pogodą (susze, ekstremalne temperatury, powodzie, burze i pożary), stacja pogodowa wydaje się być niezbędna zło w domu. Wiele dowiesz się o podstawowej elektronice z projektu stacji pogodowej przy użyciu wielu tanich części i czujników. Konfiguracja jest dość łatwa i możesz ją mieć w mgnieniu oka.
Krok 1: Niezbędny rachunek za sprzęt
1. Raspberry Pi
Zdobądź płytkę Raspberry Pi. Raspberry Pi to komputer jednopłytkowy z systemem Linux. Raspberry Pi jest naprawdę tani, mały i wszechstronny, zbudowany z dostępnego i funkcjonalnego komputera, który umożliwia uczniom ćwiczenie podstaw programowania i tworzenia oprogramowania.
2. Osłona I2C dla Raspberry Pi
INPI2 (adapter I2C) zapewnia Raspberry Pi 2/3 port I²C do użytku z wieloma urządzeniami I2C. Jest dostępny w sklepie DCUBE.
3. Cyfrowy czujnik wilgotności, ciśnienia i temperatury, BME280
BME280 to czujnik wilgotności, ciśnienia i temperatury, który charakteryzuje się szybkim czasem reakcji i wysoką ogólną dokładnością. Kupiliśmy ten czujnik w sklepie DCUBE.
4. Kabel połączeniowy I2C
Użyliśmy kabla I²C dostępnego tutaj DCUBE Store.
5. Kabel Micro USB
Kabel micro USB Zasilacz to idealny wybór do zasilania Raspberry Pi.
6. Interpretowanie dostępu do Internetu przez kabel Ethernet/adapter WiFi
Dostęp do Internetu można włączyć za pomocą kabla Ethernet podłączonego do sieci lokalnej i Internetu. Alternatywnie możesz połączyć się z siecią bezprzewodową za pomocą bezprzewodowego klucza USB, co będzie wymagało konfiguracji.
7. Kabel HDMI (wyświetlacz i kabel połączeniowy)
Dowolny monitor HDMI/DVI i dowolny telewizor powinny działać jako wyświetlacz dla Pi. Alternatywnie możesz uzyskać zdalny dostęp do Pi przez SSH, negując potrzebę monitora (tylko zaawansowani użytkownicy).
Krok 2: Połączenia sprzętowe dla obwodu
Wykonaj obwód zgodnie z przedstawionym schematem. Ogólnie połączenia są bardzo proste. Zachowaj spokój i postępuj zgodnie z instrukcjami i obrazami powyżej, a nie powinieneś mieć problemów. Podczas nauki dokładnie poznaliśmy podstawy elektroniki w zakresie wiedzy o sprzęcie i oprogramowaniu. Chcieliśmy narysować prosty schemat elektroniki do tego projektu. Schematy elektroniczne są jak plany. Opracuj plan i uważnie śledź projekt. Kilka podstawowych pojęć związanych z elektroniką może się tu przydać!
Połączenie Raspberry Pi i I2C Shield
Najpierw weź Raspberry Pi i umieść na nim I²C Shield. Delikatnie naciśnij tarczę i skończymy z tym krokiem tak prostym, jak bułka z masłem (patrz zdjęcie).
Połączenie czujnika i Raspberry Pi
Weź czujnik i podłącz z nim kabel I²C. Upewnij się, że wyjście I²C ZAWSZE łączy się z wejściem I²C. To samo należy postępować w przypadku Raspberry Pi z zamontowaną na nim osłoną I²C i pinami GPIO. Zalecamy stosowanie kabli I²C, ponieważ eliminuje to potrzebę odczytywania pinów, lutowania i złego samopoczucia spowodowanego nawet najmniejszą wpadką. Za pomocą tego prostego kabla typu „plug and play” możesz z łatwością instalować, wymieniać płyty lub dodawać kolejne płyty do aplikacji.
Uwaga: Brązowy przewód powinien zawsze podążać za połączeniem uziemienia (GND) między wyjściem jednego urządzenia a wejściem innego urządzenia
Łączność z Internetem jest kluczem
Masz tutaj dwie możliwości. Możesz podłączyć Raspberry Pi do sieci za pomocą kabla Ethernet lub użyć adaptera USB do WiFi do połączenia WIFI. Tak czy inaczej, o ile jest połączony z Internetem, który obejmujesz.
Włączanie obwodu
Podłącz kabel Micro USB do gniazda zasilania Raspberry Pi. Uderz i voila! Nasz oddział to informacja.
Połączenie z ekranem
Możemy podłączyć kabel HDMI do monitora lub do telewizora. Dodatkowo możemy uzyskać dostęp do Raspberry Pi bez podłączania go do monitora za pomocą zdalnego dostępu. SSH to poręczne narzędzie do bezpiecznego zdalnego dostępu. Możesz również użyć do tego oprogramowania PUTTY. Ta opcja jest przeznaczona dla zaawansowanych użytkowników, więc nie będziemy jej tutaj szczegółowo omawiać.
To oszczędna metoda, jeśli nie chcesz dużo wydawać
Krok 3: Programowanie Raspberry Pi w Pythonie
Kod Pythona dla Raspberry Pi i czujnika BME280. Jest dostępny w naszym repozytorium Github.
Przed przejściem do kodu upewnij się, że zapoznałeś się z instrukcjami podanymi w pliku Readme i zgodnie z nimi skonfiguruj swoje Raspberry Pi. Wystarczy trochę czasu, aby przygotować się do instalacji. Stacja meteorologiczna to obiekt, zarówno na lądzie, jak i na morzu, wyposażony w przyrządy i sprzęt do pomiaru warunków atmosferycznych, dostarczający informacji do prognoz pogody oraz do badania pogody i klimatu.
Kod jest wyraźnie przed tobą i jest w najprostszej formie, jaką możesz sobie wyobrazić, i nie powinieneś mieć problemów. Nadal pytaj, czy coś (nawet jeśli wiesz tysiąc rzeczy, nadal pytaj kogoś, kto wie).
Możesz również skopiować działający kod Pythona dla tego czujnika.
# Rozprowadzany z wolną licencją.# Używaj go w dowolny sposób, z zyskiem lub za darmo, pod warunkiem, że pasuje do licencji powiązanych z nim dzieł. # BME280 # Ten kod jest przeznaczony do pracy z modułem BME280_I2CS I2C Mini dostępnym na stronie ControlEverything.com. #
importuj smbus
czas importu
# Uzyskaj magistralę I2C
autobus = smbus. SMBus(1)
# Adres BME280, 0x76(118)
# Odczytaj dane z powrotem z 0x88 (136), 24 bajty b1 = bus.read_i2c_block_data (0x76, 0x88, 24)
# Konwertuj dane
# Współczynniki temp. dig_T1 = b1[1] * 256 + b1[0] dig_T2 = b1[3] * 256 + b1[2] jeśli dig_T2 > 32767: dig_T2 -= 65536 dig_T3 = b1[5] * 256 + b1[4] jeśli dig_T3 > 32767: dig_T3 -= 65536
# Współczynniki ciśnienia
dig_P1 = b1[7] * 256 + b1[6] dig_P2 = b1[9] * 256 + b1[8] jeśli dig_P2 > 32767: dig_P2 -= 65536 dig_P3 = b1[11] * 256 + b1[10] jeśli dig_P3 > 32767: dig_P3 -= 65536 dig_P4 = b1[13] * 256 + b1[12] jeśli dig_P4 > 32767: dig_P4 -= 65536 dig_P5 = b1[15] * 256 + b1[14] jeśli dig_P5 > 32767: dig_P5 -= 65536 dig_P6 = b1[17] * 256 + b1[16] if dig_P6 > 32767: dig_P6 -= 65536 dig_P7 = b1[19] * 256 + b1[18] if dig_P7 > 32767: dig_P7 -= 65536 dig_P8 = b1[21] * 256 + b1[20] if dig_P8 > 32767: dig_P8 -= 65536 dig_P9 = b1[23] * 256 + b1[22] if dig_P9 > 32767: dig_P9 -= 65536
# Adres BME280, 0x76(118)
# Odczytaj dane z powrotem z 0xA1(161), 1 bajt dig_H1 = bus.read_byte_data (0x76, 0xA1)
# Adres BME280, 0x76(118)
# Odczytaj dane z powrotem z 0xE1(225), 7 bajtów b1 = bus.read_i2c_block_data(0x76, 0xE1, 7)
# Konwertuj dane
# Współczynniki wilgotności dig_H2 = b1[1] * 256 + b1[0] jeśli dig_H2 > 32767: dig_H2 -= 65536 dig_H3 = (b1[2] & 0xFF) dig_H4 = (b1[3] * 16) + (b1[4] & 0xF) jeśli dig_H4 > 32767: dig_H4 -= 65536 dig_H5 = (b1[4] / 16) + (b1[5] * 16) jeśli dig_H5 > 32767: dig_H5 -= 65536 dig_H6 = b1[6] jeśli dig_H6 > 127: dig_H6 -= 256
# Adres BME280, 0x76(118)
# Wybierz rejestr kontrolny wilgotności, 0xF2(242) # 0x01(01) Nadpróbkowanie wilgotności = 1 bus.write_byte_data(0x76, 0xF2, 0x01) # Adres BME280, 0x76(118) # Wybierz rejestr kontrolny pomiarów, 0xF4(244) # 0x27(39) Szybkość nadpróbkowania ciśnienia i temperatury = 1 # Tryb normalny bus.write_byte_data(0x76, 0xF4, 0x27) # Adres BME280, 0x76(118) # Wybierz rejestr konfiguracji, 0xF5(245) # 0xA0(00) Czas czuwania = magistrala 1000 ms.write_byte_data (0x76, 0xF5, 0xA0)
czas.sen(0.5)
# Adres BME280, 0x76(118)
# Odczyt danych z powrotem z 0xF7(247), 8 bajtów # Ciśnienie MSB, Ciśnienie LSB, Ciśnienie xLSB, Temperatura MSB, Temperatura LSB # Temperatura xLSB, Wilgotność MSB, Wilgotność Dane LSB = bus.read_i2c_block_data(0x76, 0xF7, 8)
# Konwertuj dane dotyczące ciśnienia i temperatury na 19-bitowe
adc_p = ((dane[0] * 65536) + (dane[1] * 256) + (dane[2] & 0xF0)) / 16 adc_t = ((dane[3] * 65536) + (dane[4] * 256) + (dane[5] i 0xF0)) / 16
# Konwertuj dane wilgotności
adc_h = dane[6] * 256 + dane[7]
# Obliczenia przesunięcia temperatury
var1 = ((adc_t) / 16384.0 - (dig_T1) / 1024.0) * (dig_T2) var2 = (((adc_t) / 131072.0 - (dig_T1) / 8192.0) * ((adc_t)/131072.0 - (dig_T1)/8192.0)) * (dig_T3) t_fine = (var1 + var2) cTemp = (var1 + var2) / 5120.0 fTemp = cTemp * 1.8 + 32
# Obliczenia kompensacji ciśnienia
var1 = (t_fine / 2.0) - 64000.0 var2 = var1 * var1 * (dig_P6) / 32768,0 var2 = var2 + var1 * (dig_P5) * 2.0 var2 = (var2 / 4.0) + ((dig_P4) * 65536.0) var1 = ((dig_P3) * var1 * var1 / 524288.0 + (dig_P2) * var1) / 524288.0 var1 = (1,0 + var1 / 32768,0) * (dig_P1) p = 1048576,0 - adc_p p = (p - (var2 / 4096,0)) * 6250.0 / var1 var1 = (dig_P9) * p * p / 2147483648,0 var2 = p * (dig_P8) / 32768,0 ciśnienie = (p + (var1 + var2 + (dig_P7)) / 16.0) / 100
# Obliczenia kompensacji wilgotności
var_H = ((t_fine) - 76800.0) var_H = (adc_h - (dig_H4 * 64.0 + dig_H5 / 16384.0 * var_H)) * (dig_H2 / 65536.0 * (1,0 + dig_H6 / 67108864.0 * var_H * (1,0 + dig_H3 / 67_108864.0) *)) wilgotność = var_H * (1,0 - dig_H1 * var_H / 524288.0) jeśli wilgotność > 100.0: wilgotność = 100.0 elif wilgotność < 0.0: wilgotność = 0.0
# Dane wyjściowe na ekran
drukuj "Temperatura w stopniach Celsjusza: %.2f C" %cTemp drukuj "Temperatura w stopniach Fahrenheita: %.2f F" %fTemp drukuj "Ciśnienie: %.2f hPa" %ciśnienie drukuj "Wilgotność względna: %.2f %%" %wilgotność
Krok 4: Działający kod
Teraz pobierz (lub git pull) kod i otwórz go w Raspberry Pi.
Uruchom polecenia skompiluj i prześlij kod na terminalu i zobacz dane wyjściowe na wyświetlaczu. Po kilku sekundach wyświetli wszystkie parametry. Po upewnieniu się, że wszystko działa świetnie, możesz opracować kilka ciekawszych.
Krok 5: Wykorzystanie w praktycznym świecie
BME280 osiąga wysoką wydajność we wszystkich aplikacjach wymagających pomiaru wilgotności i ciśnienia. Te pojawiające się aplikacje to świadomość kontekstu, np. Wykrywanie skóry, wykrywanie zmian w pomieszczeniu, monitorowanie sprawności / dobrego samopoczucia, ostrzeżenia o suchości lub wysokich temperaturach, pomiar objętości i przepływu powietrza, sterowanie automatyką domową, sterowanie ogrzewaniem, wentylacją, klimatyzacją (HVAC), Internet rzeczy (IoT), Ulepszenia GPS (np. poprawa czasu do pierwszej naprawy, Dead Reckoning, wykrywanie zbocza), nawigacja wewnętrzna (wykrywanie zmiany podłogi, wykrywanie wind), nawigacja zewnętrzna, aplikacje rekreacyjne i sportowe, prognoza pogody i wskazanie prędkości pionowej (wzrost/opadnięcie) Prędkość).
Krok 6: Wniosek
Mam nadzieję, że ten projekt zainspiruje do dalszych eksperymentów. Tworzenie bardziej wyrafinowanej stacji pogodowej może obejmować więcej czujników, takich jak Rain Gauge, czujnik światła, anemometr (prędkość wiatru) itp. Możesz je dodać i zmienić kod. Mamy film instruktażowy na YouTube przedstawiający podstawowe działanie czujnika I²C z Rasp Pi. To naprawdę niesamowite widzieć wyniki i działanie komunikacji I²C. Sprawdź to również. Baw się dobrze, budując i ucząc się! Daj nam znać, co myślisz o tej instrukcji. W razie potrzeby chcielibyśmy wprowadzić pewne ulepszenia.
Zalecana:
Profesjonalna stacja pogodowa wykorzystująca ESP8266 i ESP32 DIY: 9 kroków (ze zdjęciami)
Profesjonalna stacja pogodowa przy użyciu ESP8266 i ESP32 DIY: LineaMeteoStazione to kompletna stacja pogodowa, która może być połączona z profesjonalnymi czujnikami firmy Sensirion, a także z niektórymi komponentami Davis Instrument (deszczomierz, anemometr) Projekt jest przeznaczony do samodzielnej stacji pogodowej, ale wymaga tylko
Mini stacja pogodowa wykorzystująca Arduino i ThingSpeak: 4 kroki
Mini stacja pogodowa wykorzystująca Arduino i ThingSpeak: Witam wszystkich. W tej instrukcji poprowadzę Cię przez kroki, aby stworzyć spersonalizowaną mini stację pogodową. Ponadto będziemy używać interfejsu API ThingSpeak do przesyłania naszych danych o pogodzie na ich serwery, albo do czego służy statystyka pogodowa
Osobista stacja pogodowa wykorzystująca Raspberry Pi z BME280 w Javie: 6 kroków
Osobista stacja pogodowa korzystająca z Raspberry Pi z BME280 w Javie: Zła pogoda zawsze wygląda gorzej przez okno. Zawsze byliśmy zainteresowani monitorowaniem naszej lokalnej pogody i tego, co widzimy za oknem. Chcieliśmy również mieć lepszą kontrolę nad naszym systemem ogrzewania i klimatyzacji. Budowanie osobistej stacji pogodowej to świetna
Stacja pogodowa NaTaLia: stacja pogodowa zasilana energią słoneczną Arduino Wykonana we właściwy sposób: 8 kroków (ze zdjęciami)
Stacja pogodowa NaTaLia: Stacja pogodowa zasilana energią słoneczną Arduino Wykonana we właściwy sposób: po roku udanej pracy w 2 różnych lokalizacjach dzielę się planami projektu stacji pogodowej zasilanej energią słoneczną i wyjaśniam, jak ewoluował w system, który może naprawdę przetrwać przez długi czas okresy z energii słonecznej. Jeśli obserwujesz
Stacja pogodowa DIY wykorzystująca DHT11, BMP180, Nodemcu z Arduino IDE przez serwer Blynk: 4 kroki
Stacja pogodowa DIY wykorzystująca DHT11, BMP180, Nodemcu z Arduino IDE przez serwer Blynk: Github: DIY_Weather_Station Hackster.io: Stacja pogodowa Widziałeś aplikację pogodową, prawda? Na przykład, kiedy go otworzysz, poznasz warunki pogodowe, takie jak temperatura, wilgotność itp. Te odczyty są średnią wartością dużego