Indholdsfortegnelse:
- Trin 1: Lov om imperativt udstyr
- Trin 2: Hardwareforbindelser til kredsløb
- Trin 3: Raspberry Pi -programmering i Python
- Trin 4: Løbekoden
- Trin 5: Udnyttelse i praktisk verden
- Trin 6: Konklusion
Video: Vejrstation ved hjælp af Raspberry Pi med BME280 i Python: 6 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:27
er maith an scéalaí an aimir (Vejret er en god historiefortæller)
Med global opvarmning og problemer med klimaændringer bliver det globale vejrmønster uberegneligt i hele vores verden, hvilket fører til en række vejrrelaterede naturkatastrofer (tørke, ekstreme temperaturer, oversvømmelser, storme og naturbrande), en vejrstation synes at være en nødvendig onde derhjemme. Du lærer meget om grundlæggende elektronik fra et vejrstationsprojekt ved hjælp af en masse billige dele og sensorer. Det er ret let at konfigurere, og du kan få det på ingen tid.
Trin 1: Lov om imperativt udstyr
1. En Raspberry Pi
Få fingrene i et Raspberry Pi -bord. Raspberry Pi er en Linux -drevet enkelt bordcomputer. Raspberry Pi er virkelig billig, lille og alsidig bygget af en tilgængelig og funktionel computer, hvor eleverne kan udøve det grundlæggende inden for programmering og softwareudvikling.
2. I2C Shield til Raspberry Pi
INPI2 (I2C -adapteren) giver Raspberry Pi 2/3 en I²C -port til brug med flere I2C -enheder. Den er tilgængelig i DCUBE Store.
3. Digital fugtigheds-, tryk- og temperatursensor, BME280
BME280 er en fugtigheds-, tryk- og temperatursensor, der har hurtig responstid og høj samlet nøjagtighed. Vi købte denne sensor fra DCUBE Store.
4. I2C -tilslutningskabel
Vi brugte I²C -kablet, der er tilgængeligt her i DCUBE Store.
5. Micro USB -kabel
Micro USB -kablet Strømforsyning er et ideelt valg til strømforsyning til Raspberry Pi.
6. Fortolk internetadgang via EthernetCable/WiFi -adapter
Internetadgang kan aktiveres via et Ethernet -kabel, der er tilsluttet et lokalt netværk og internettet. Alternativt kan du oprette forbindelse til et trådløst netværk ved hjælp af en trådløs USB -dongle, hvilket kræver konfiguration.
7. HDMI -kabel (Display & tilslutningskabel)
Enhver HDMI/DVI -skærm og ethvert tv skal fungere som skærm til Pi. Alternativt kan du få fjernadgang til Pi'en via SSH og negere behovet for en skærm (kun avancerede brugere).
Trin 2: Hardwareforbindelser til kredsløb
Lav kredsløbet i henhold til det viste skema. Generelt er forbindelserne meget enkle. Hold ro og følg instruktionerne og billederne ovenfor, og du bør ikke have problemer. Mens vi lærte, fik vi grundigt med det grundlæggende inden for elektronik vedrørende hardware og software viden. Vi ønskede at udarbejde en simpel elektronisk skema for dette projekt. Elektroniske skemaer er som tegninger. Tegn en plan og følg designet omhyggeligt. Et par grundlæggende begreber inden for elektronik kan være nyttige her!
Tilslutning af Raspberry Pi og I2C Shield
Tag først Raspberry Pi og placer I²C Shield på den. Tryk forsigtigt på skjoldet, og vi er færdige med dette trin så let som tærte (se billedet).
Tilslutning af sensoren og Raspberry Pi
Tag sensoren og tilslut I²C -kablet med den. Sørg for, at I²C Output ALTID forbinder til I²C Input. Det samme skal følges for Raspberry Pi med I²C-skjoldet monteret over GPIO-benene. Vi anbefaler brugen af I²C-kablerne, da det negerer behovet for aflæsning af pinout, lodning og utilpashed forårsaget af selv den mindste slip-up. Med dette enkle plug and play -kabel kan du nemt installere, skifte kort eller tilføje flere tavler til en applikation.
Bemærk: Den brune ledning skal altid følge jordforbindelsen (GND) mellem output fra en enhed og input fra en anden enhed
Internetforbindelse er nøglen
Du har to valg her. Enten kan du slutte Raspberry Pi til netværket ved hjælp af et ethernet -kabel eller bruge en USB til WiFi -adapter til WIFI -forbindelse. Uanset hvad, så længe det er forbundet til internettet, er du dækket.
Tænd for kredsløbet
Sæt Micro USB -kablet i strømstikket på Raspberry Pi. Slå op og voila! Vores hold er information.
Tilslutning til skærm
Vi kan enten have HDMI -kablet tilsluttet en skærm eller et tv. Derudover kan vi få adgang til en Raspberry Pi uden at forbinde den til en skærm ved hjælp af fjernadgang. SSH er et praktisk værktøj til sikker fjernadgang. Du kan også bruge PUTTY -softwaren til det. Denne mulighed er for avancerede brugere, så vi vil ikke dække det i detaljer her.
Det er en økonomisk metode, hvis du ikke vil bruge meget
Trin 3: Raspberry Pi -programmering i Python
Python -koden til Raspberry Pi og BME280 -sensoren. Den er tilgængelig i vores Github -lager.
Inden du går videre til koden, skal du læse instruktionerne i Readme -filen og konfigurere din Raspberry Pi i henhold til den. Bare lidt tid gør dig klar til opsætning. En vejrstation er en facilitet, enten på land eller til søs, med instrumenter og udstyr til måling af atmosfæriske forhold for at give oplysninger om vejrudsigter og for at studere vejret og klimaet.
Koden er klart foran dig, og den er i den enkleste form, som du kan forestille dig, og du bør ikke have problemer. Spørg stadig hvis nogen (Selvom du ved tusind ting, så spørg stadig en der ved).
Du kan også kopiere den fungerende Python -kode til denne sensor herfra.
# Distribueret med en fri vilje-licens.# Brug den, som du vil, profit eller gratis, forudsat at den passer ind i licenserne til de tilhørende værker. # BME280 # Denne kode er designet til at fungere med BME280_I2CS I2C Mini Modulet tilgængeligt fra ControlEverything.com. #
import smbus
importtid
# Få I2C -bus
bus = smbus. SMBus (1)
# BME280 adresse, 0x76 (118)
# Læs data tilbage fra 0x88 (136), 24 bytes b1 = bus.read_i2c_block_data (0x76, 0x88, 24)
# Konverter dataene
# Temp koefficienter dig_T1 = b1 [1] * 256 + b1 [0] dig_T2 = b1 [3] * 256 + b1 [2] hvis dig_T2> 32767: dig_T2 -= 65536 dig_T3 = b1 [5] * 256 + b1 [4] hvis dig_T3> 32767: dig_T3 -= 65536
# Trykkoefficienter
dig_P1 = b1 [7] * 256 + b1 [6] dig_P2 = b1 [9] * 256 + b1 [8] hvis dig_P2> 32767: dig_P2 -= 65536 dig_P3 = b1 [11] * 256 + b1 [10] hvis dig_P3 > 32767: dig_P3 -= 65536 dig_P4 = b1 [13] * 256 + b1 [12] hvis dig_P4> 32767: dig_P4 -= 65536 dig_P5 = b1 [15] * 256 + b1 [14] hvis 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] hvis dig_P8> 32767: dig_P8 -= 65536 dig_P9 = b1 [23] * 256 + b1 [22] hvis dig_P9> 32767: dig_P9 -= 65536
# BME280 adresse, 0x76 (118)
# Læs data tilbage fra 0xA1 (161), 1 byte dig_H1 = bus.read_byte_data (0x76, 0xA1)
# BME280 adresse, 0x76 (118)
# Læs data tilbage fra 0xE1 (225), 7 bytes b1 = bus.read_i2c_block_data (0x76, 0xE1, 7)
# Konverter dataene
# Fugtighedskoefficienter dig_H2 = b1 [1] * 256 + b1 [0] hvis dig_H2> 32767: dig_H2 -= 65536 dig_H3 = (b1 [2] & 0xFF) dig_H4 = (b1 [3] * 16) + (b1 [4] & 0xF) hvis dig_H4> 32767: dig_H4 -= 65536 dig_H5 = (b1 [4] / 16) + (b1 [5] * 16) hvis dig_H5> 32767: dig_H5 -= 65536 dig_H6 = b1 [6] hvis dig_H6> 127: dig_H6 -= 256
# BME280 adresse, 0x76 (118)
# Vælg kontrolfugtighedsregister, 0xF2 (242) # 0x01 (01) Fugtighedsoversampling = 1 bus.write_byte_data (0x76, 0xF2, 0x01) # BME280 -adresse, 0x76 (118) # Vælg kontrolmåleregister, 0xF4 (244) # 0x27 (39) Tryk og temperatur Oversampling rate = 1 # Normal mode bus.write_byte_data (0x76, 0xF4, 0x27) # BME280 adresse, 0x76 (118) # Vælg konfigurationsregister, 0xF5 (245) # 0xA0 (00) Stand_by tid = 1000 ms bus.write_byte_data (0x76, 0xF5, 0xA0)
time.sleep (0,5)
# BME280 adresse, 0x76 (118)
# Læs data tilbage fra 0xF7 (247), 8 bytes # Tryk MSB, tryk LSB, tryk xLSB, temperatur MSB, temperatur LSB # temperatur xLSB, luftfugtighed MSB, luftfugtighed LSB data = bus.read_i2c_block_data (0x76, 0xF7, 8)
# Konverter tryk- og temperaturdata til 19-bits
adc_p = ((data [0] * 65536) + (data [1] * 256) + (data [2] & 0xF0)) / 16 adc_t = ((data [3] * 65536) + (data [4] * 256) + (data [5] & 0xF0)) / 16
# Konverter fugtighedsdata
adc_h = data [6] * 256 + data [7]
# Temperaturforskydningsberegninger
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
# Beregninger af trykforskydninger
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 tryk = (p + (var1 + var2 + (dig_P7)) / 16.0) / 100
# Fugtighedsforskydning beregninger
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 / 67108864.0 * var_))) luftfugtighed = var_H * (1,0 - dig_H1 * var_H / 524288,0) hvis luftfugtighed> 100,0: luftfugtighed = 100,0 elif luftfugtighed <0,0: luftfugtighed = 0,0
# Output data til skærmen
print "Temperatur i Celsius: %.2f C" %cTemp print "Temperatur i Fahrenheit: %.2f F" %fTemp udskrift "Tryk: %.2f hPa" %tryk print "Relativ luftfugtighed: %.2f %%" %luftfugtighed
Trin 4: Løbekoden
Download nu (eller git pull) koden og åbn den i Raspberry Pi.
Kør kommandoerne for at kompilere og uploade koden på terminalen og se output på displayet. Efter få sekunder viser det alle parametre. Når du har sørget for, at alt fungerer godt, kan du udvikle nogle mere interessante.
Trin 5: Udnyttelse i praktisk verden
BME280 opnår høj ydeevne i alle applikationer, der kræver fugtigheds- og trykmåling. Disse nye applikationer er kontekstbevidsthed, f.eks. Hudregistrering, registrering af rumskifte, fitnessovervågning / velvære, advarsel vedrørende tørhed eller høje temperaturer, måling af volumen og luftstrøm, hjemmeautomatiseringskontrol, kontrolvarme, ventilation, aircondition (HVAC), tingenes internet (IoT), GPS-forbedring (f.eks. Forbedring af tid til første-reparation, dødtælling, detektion af hældninger), indendørs navigation (ændring af gulvregistrering, elevatordetektion), udendørs navigation, fritid og sport, vejrudsigter og lodret hastighedsindikation (stigning/håndvask) Hastighed).
Trin 6: Konklusion
Håber dette projekt inspirerer til yderligere eksperimenter. At lave en mere sofistikeret vejrstation kan involvere nogle flere sensorer som regnmåler, lyssensor, vindmåler (vindhastighed) osv. Du kan tilføje dem og ændre koden. Vi har en video -tutorial på YouTube, der har den grundlæggende funktion af I²C -sensoren med Rasp Pi. Det er virkelig fantastisk at se resultaterne og arbejdet med I²C -kommunikationen. Tjek det også. Hav det sjovt at bygge og lære! Fortæl os venligst, hvad du synes om dette instruerbare. Vi vil gerne lave nogle forbedringer, hvis det er nødvendigt.
Anbefalede:
Personlig vejrstation ved hjælp af Raspberry Pi med BME280 i Java: 6 trin
Personlig vejrstation ved hjælp af Raspberry Pi Med BME280 i Java: Dårligt vejr ser altid værre ud gennem et vindue.Vi har altid været interesseret i at overvåge vores lokale vejr og hvad vi ser ud af vinduet. Vi ønskede også bedre kontrol over vores varme- og klimaanlæg. At bygge en personlig vejrstation er en fed
Vejrstation ved hjælp af Wemos D1 Mini, BME280 og Sensate .: 6 trin
Vejrstation ved hjælp af Wemos D1 Mini, BME280 og Sensate .: I tidligere indlæg har jeg delt forskellige metoder til at bygge en vejrstation. Hvis du ikke har tjekket det her er et link. I denne instruktive vil jeg demonstrere hvordan man bygger en simpel vejrstation ved hjælp af Wemos og en IoT -platform kaldet Sensate
Trådløs fjernbetjening ved hjælp af 2,4 GHz NRF24L01 -modul med Arduino - Nrf24l01 4 -kanals / 6 -kanals sender modtager til Quadcopter - Rc Helikopter - Rc -fly ved hjælp af Arduino: 5 trin (med billeder)
Trådløs fjernbetjening ved hjælp af 2,4 GHz NRF24L01 -modul med Arduino | Nrf24l01 4 -kanals / 6 -kanals sender modtager til Quadcopter | Rc Helikopter | Rc -fly ved hjælp af Arduino: At betjene en Rc -bil | Quadcopter | Drone | RC -fly | RC -båd, vi har altid brug for en modtager og sender, antag at vi til RC QUADCOPTER har brug for en 6 -kanals sender og modtager, og den type TX og RX er for dyr, så vi laver en på vores
Byg en Apple HomeKit -temperatursensor (BME280) ved hjælp af en RaspberryPI og en BME280: 5 trin
Byg en Apple HomeKit -temperatursensor (BME280) Ved hjælp af en RaspberryPI og en BME280: Jeg har leget rundt med IOT -enheder i de sidste par måneder og har implementeret omkring 10 forskellige sensorer til at overvåge forhold omkring mit hus og sommerhus. Og jeg var oprindeligt begyndt at bruge AOSONG DHT22 tempereret fugtighedsføler
Acurite 5 i 1 vejrstation ved hjælp af en Raspberry Pi og Weewx (andre vejrstationer er kompatible): 5 trin (med billeder)
Acurite 5 in 1 Weather Station Brug af en Raspberry Pi og Weewx (andre vejrstationer er kompatible): Da jeg havde købt Acurite 5 in 1 vejrstationen, ville jeg kunne kontrollere vejret i mit hjem, mens jeg var væk. Da jeg kom hjem og satte den op, indså jeg, at jeg enten skulle have skærmen tilsluttet en computer eller købe deres smarte hub