Spisu treści:

Stacja pogodowa wykorzystująca Raspberry Pi z BME280 w Pythonie: 6 kroków
Stacja pogodowa wykorzystująca Raspberry Pi z BME280 w Pythonie: 6 kroków

Wideo: Stacja pogodowa wykorzystująca Raspberry Pi z BME280 w Pythonie: 6 kroków

Wideo: Stacja pogodowa wykorzystująca Raspberry Pi z BME280 w Pythonie: 6 kroków
Wideo: Unboxing paczka z PZEM-004 2024, Listopad
Anonim
Image
Image
Ustawa o imperatywnym wyposażeniu
Ustawa o imperatywnym wyposażeniu

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

Ustawa o imperatywnym wyposażeniu
Ustawa o imperatywnym wyposażeniu
Ustawa o imperatywnym wyposażeniu
Ustawa o imperatywnym wyposażeniu
Ustawa o imperatywnym wyposażeniu
Ustawa o imperatywnym wyposażeniu

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

Połączenia sprzętowe dla obwodu
Połączenia sprzętowe dla obwodu
Połączenia sprzętowe dla obwodu
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

Programowanie Raspberry Pi w Pythonie
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

Kod do biegania
Kod do biegania

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: