Përmbajtje:

Stacioni i motit personal duke përdorur Raspberry Pi Me BME280 në Java: 6 hapa
Stacioni i motit personal duke përdorur Raspberry Pi Me BME280 në Java: 6 hapa

Video: Stacioni i motit personal duke përdorur Raspberry Pi Me BME280 në Java: 6 hapa

Video: Stacioni i motit personal duke përdorur Raspberry Pi Me BME280 në Java: 6 hapa
Video: Самый дешевый 7-дневный круиз класса люкс на борту Diamond Princess 2024, Korrik
Anonim
Image
Image
Fatura e Pajisjeve Thelbësore
Fatura e Pajisjeve Thelbësore

Moti i keq gjithmonë duket më keq përmes dritares

Ne kemi qenë gjithmonë të interesuar të monitorojmë motin tonë lokal dhe atë që shohim nga dritarja. Ne gjithashtu donim kontroll më të mirë mbi sistemin tonë të ngrohjes dhe ajrit të kondicionuar. Ndërtimi i një stacioni të motit personal është një përvojë e madhe mësimore. Kur të përfundoni ndërtimin e këtij projekti do të keni një kuptim më të mirë se si funksionojnë komunikimet pa tel, si funksionojnë sensorët dhe sa e fuqishme mund të jetë platforma Raspberry Pi. Me këtë projekt si bazë dhe përvojën e fituar, ju do të jeni në gjendje të ndërtoni lehtësisht projekte më komplekse në të ardhmen.

Hapi 1: Fatura e Pajisjeve Thelbësore

Fatura e Pajisjeve Thelbësore
Fatura e Pajisjeve Thelbësore
Fatura e Pajisjeve Thelbësore
Fatura e Pajisjeve Thelbësore
Fatura e Pajisjeve Thelbësore
Fatura e Pajisjeve Thelbësore

1. Një mjedër Pi

Hapi i parë është të futni duart në një tabelë Raspberry Pi. Raspberry Pi është një kompjuter me një bord me Linux. Qëllimi i tij është të përmirësojë aftësitë e programimit dhe të kuptuarit e harduerit. U miratua shpejt nga hobiistët dhe entuziastët e elektronikës për projekte novatore.

2. Mburoja I²C për Raspberry Pi

INPI2 (përshtatësi I2C) siguron Raspberry Pi 2/3 një port I²C për përdorim me shumë pajisje I²C. Availableshtë në dispozicion në Dyqanin Dcube

3. Sensori i Lagështisë Dixhitale, Presionit dhe Temperaturës, BME280

BME280 është një sensor lagështie, presioni dhe temperature që ka kohë të shpejtë reagimi dhe saktësi të lartë të përgjithshme. Ne e blemë këtë sensor nga Dyqani Dcube

4. Kabllo lidhëse I²C

Ne kishim kabllon lidhës I²C të disponueshëm në Dyqanin Dcube

5. Kabllo mikro USB

Kablloja mikro USB Furnizimi me energji elektrike është një zgjedhje ideale për fuqizimin e Raspberry Pi.

6. Interpretoni Qasjen në Internet nëpërmjet EthernetCable/Përshtatës WiFi

Një nga gjërat e para që do të dëshironi të bëni është të lidhni Raspberry Pi tuaj në internet. Ne mund të lidhemi duke përdorur një kabllo Ethernet. Një mundësi tjetër është që ju mund të lidheni me një rrjet pa tel duke përdorur një përshtatës wireless USB.

7. Kabllo HDMI (Ekrani i kabllit të lidhjes)

Çdo monitor HDMI/DVI dhe çdo TV duhet të funksionojë si ekran për Pi. Por është opsionale. Mundësia e hyrjes në distancë (si-SSH) gjithashtu nuk mund të përjashtohet. Ju gjithashtu mund të merrni qasje me programin PUTTY.

Hapi 2: Lidhjet e pajisjeve për konfigurimin

Lidhjet e harduerit për konfigurim
Lidhjet e harduerit për konfigurim
Lidhjet e harduerit për konfigurim
Lidhjet e harduerit për konfigurim

Bëni qarkun sipas skemës së treguar.

Ndërsa mësonim, ne mësuam plotësisht me bazat e elektronikës në lidhje me njohuritë e harduerit dhe softuerit. Ne donim të hartonim një skemë të thjeshtë elektronike për këtë projekt. Skemat elektronike janë si një plan për elektronikën. Hartoni një plan dhe ndiqni me kujdes modelin. Ne kemi aplikuar disa baza të elektronikës këtu. Logjika ju çon nga A në B, imagjinata do t'ju çojë kudo!

Lidhja e Raspberry Pi dhe I²C Shield

Para së gjithash merrni Raspberry Pi dhe vendosni Mburojën I²C (me Portën I²C të Përballur me Përbrenda) mbi të. Shtypni Shield me butësi mbi kunjat GPIO të Pi dhe ne jemi bërë me këtë hap aq të lehtë sa byrek (shiko foton).

Lidhja e Sensorit dhe Raspberry Pi

Merrni sensorin dhe lidhni kabllon I²C me të. Sigurohuni që dalja I²C të lidhet GJITHMON me hyrjen e I²C. E njëjta gjë duhet të ndiqet për Raspberry Pi me mburojën I²C të montuar mbi të me kunjat GPIO. Ne kemi Mburojën I²C dhe kabllot lidhës në anën tonë si një lehtësim shumë i madh dhe një avantazh shumë i madh pasi na kanë mbetur vetëm opsioni plug and play. Nuk ka më probleme me kunjat dhe instalimet elektrike dhe kështu, konfuzioni është zhdukur. Vetëm imagjinoni veten në rrjetën e telave dhe duke u futur në të. Një lehtësim nga ajo. Kjo i bën gjërat të pakomplikuara.

Shënim: Teli kafe duhet të ndjekë lidhjen Ground (GND) midis daljes së një pajisjeje dhe hyrjes së një pajisjeje tjetër

Lidhshmëria në internet është një nevojë

Ju në fakt keni një zgjedhje këtu. Mund ta lidhni Raspberry Pi me kabllon LAN ose përshtatësin wireless Nano USB për Lidhshmërinë WIFI. Sido që të jetë, manifesti është të lidheni me internetin i cili është realizuar.

Fuqizimi i qarkut

Futeni kabllon Micro USB në prizën e energjisë të Raspberry Pi. Punch up dhe voila! Gjithçka është mirë për të shkuar dhe ne do të fillojmë menjëherë.

Lidhja me ekranin

Ne ose mund të kemi kabllon HDMI të lidhur me një monitor ose një televizor. Ne mund të hyjmë në një Raspberry Pi pa e lidhur atë me një monitor duke përdorur -SSH (Hyni në vijën e komandës së Pi nga një kompjuter tjetër). Ju gjithashtu mund të përdorni softuerin PUTTY për këtë. Ky opsion është për përdoruesit e përparuar, kështu që ne nuk do ta mbulojmë atë në detaje këtu.

Kam dëgjuar se do të ketë një recesion, kam vendosur të mos marr pjesë

Hapi 3: Programimi i Raspberry Pi në Java

Programimi i Raspberry Pi në Java
Programimi i Raspberry Pi në Java

Kodi Java për Sensorin Raspberry Pi dhe BME280. Availableshtë në dispozicion në depon tonëGithub.

Para se të kaloni në kod, sigurohuni që të lexoni udhëzimet e dhëna në skedarin Readme dhe Konfiguroni Raspberry Pi tuaj sipas tij. Do të duhet vetëm një moment për ta bërë këtë. Një stacion personal i motit është një grup instrumentesh për matjen e motit të operuara nga një individ privat, klub, shoqatë, apo edhe biznes. Stacionet personale të motit mund të funksionojnë vetëm për kënaqësinë dhe edukimin e pronarit, por shumë operatorë të stacioneve të motit personal gjithashtu ndajnë të dhënat e tyre me të tjerët, ose duke përpiluar manualisht dhe duke i shpërndarë ato, ose përmes përdorimit të internetit ose radios amatore.

Kodi është në formën më të thjeshtë që mund ta imagjinoni dhe nuk duhet të keni asnjë problem me të, por pyesni nëse keni. Edhe nëse dini një mijë gjëra, prapë pyesni dikë që e di.

Ju gjithashtu mund të kopjoni kodin Java të punës për këtë sensor nga këtu.

// Shpërndarë me një licencë me vullnet të lirë.// Përdoreni atë në çdo mënyrë që dëshironi, fitimprurëse ose falas, me kusht që të përshtatet në licencat e veprave të tij shoqëruese. // BME280 // Ky kod është krijuar për të punuar me Mini Modulin BME280_I2CS I2C i disponueshëm nga ControlEverything.com. //

import com.pi4j.io.i2c. I2CBus;

import com.pi4j.io.i2c. I2CDevice; import com.pi4j.io.i2c. I2CFactory; import java.io. IOException;

klasa publike BME280

{public static void main (String args ) hedh Përjashtim {// Krijo autobus I2C I2CBus bus = I2CFactory.getInstance (I2CBus. BUS_1); // Merrni pajisjen I2C, adresa BME280 I2C është 0x76 (108) pajisje I2CDevice = bus.getDevice (0x76); // Lexoni 24 bajt të dhëna nga adresa 0x88 (136) bajt b1 = bajt i ri [24]; pajisje.lexoni (0x88, b1, 0, 24); // Shndërroni të dhënat // koeficientët temp int dig_T1 = (b1 [0] & 0xFF) + ((b1 [1] & 0xFF) * 256); int dig_T2 = (b1 [2] & 0xFF) + ((b1 [3] & 0xFF) * 256); nëse (dig_T2> 32767) {dig_T2 -= 65536; } int dig_T3 = (b1 [4] & 0xFF) + ((b1 [5] & 0xFF) * 256); nëse (dig_T3> 32767) {dig_T3 -= 65536; } // koeficientët e presionit int dig_P1 = (b1 [6] & 0xFF) + ((b1 [7] & 0xFF) * 256); int dig_P2 = (b1 [8] & 0xFF) + ((b1 [9] & 0xFF) * 256); nëse (dig_P2> 32767) {dig_P2 -= 65536; } int dig_P3 = (b1 [10] & 0xFF) + ((b1 [11] & 0xFF) * 256); nëse (dig_P3> 32767) {dig_P3 -= 65536; } int dig_P4 = (b1 [12] & 0xFF) + ((b1 [13] & 0xFF) * 256); nëse (dig_P4> 32767) {dig_P4 -= 65536; } int dig_P5 = (b1 [14] & 0xFF) + ((b1 [15] & 0xFF) * 256); nëse (dig_P5> 32767) {dig_P5 -= 65536; } int dig_P6 = (b1 [16] & 0xFF) + ((b1 [17] & 0xFF) * 256); nëse (dig_P6> 32767) {dig_P6 -= 65536; } int dig_P7 = (b1 [18] & 0xFF) + ((b1 [19] & 0xFF) * 256); nëse (dig_P7> 32767) {dig_P7 -= 65536; } int dig_P8 = (b1 [20] & 0xFF) + ((b1 [21] & 0xFF) * 256); nëse (dig_P8> 32767) {dig_P8 -= 65536; } int dig_P9 = (b1 [22] & 0xFF) + ((b1 [23] & 0xFF) * 256); nëse (dig_P9> 32767) {dig_P9 -= 65536; } // Lexoni 1 bajt të dhëna nga adresa 0xA1 (161) int dig_H1 = ((byte) pajisje. Lexoni (0xA1) & 0xFF); // Lexoni 7 bajt të dhëna nga adresa 0xE1 (225) pajisje. Lexoni (0xE1, b1, 0, 7); // Shndërroni të dhënat // koeficientët e lagështisë int dig_H2 = (b1 [0] & 0xFF) + (b1 [1] * 256); nëse (dig_H2> 32767) {dig_H2 -= 65536; } int dig_H3 = b1 [2] & 0xFF; int dig_H4 = ((b1 [3] & 0xFF) * 16) + (b1 [4] & 0xF); nëse (dig_H4> 32767) {dig_H4 -= 65536; } int dig_H5 = ((b1 [4] & 0xFF) / 16) + ((b1 [5] & 0xFF) * 16); nëse (dig_H5> 32767) {dig_H5 -= 65536; } int dig_H6 = b1 [6] & 0xFF; nëse (dig_H6> 127) {dig_H6 -= 256; } // Zgjidhni regjistrin e kontrollit të lagështisë // Lagështia mbi normën e marrjes së mostrave = 1 pajisje. Shkruani (0xF2, (bajt) 0x01); // Zgjidhni regjistrin e matjes së kontrollit // Mënyra normale, temperatura dhe presioni mbi normën e marrjes së mostrave = 1 pajisje. Shkruani (0xF4, (bajt) 0x27); // Zgjidh regjistrin e konfigurimit // Koha e gatishmërisë = 1000 ms pajisje. Shkruaj (0xF5, (bajt) 0xA0); // Lexoni 8 bajt të dhëna nga adresa 0xF7 (247) // presioni msb1, presioni msb, presioni lsb, temp msb1, temp msb, temp lsb, lagështia lsb, lagështia msb byte të dhëna = bajt i ri [8]; pajisje.lexoni (0xF7, të dhëna, 0, 8); // Shndërroni të dhënat e presionit dhe temperaturës në 19-bit të gjata adc_p = (((e gjatë) (të dhëna [0] & 0xFF) * 65536) + ((e gjatë) (të dhëna [1] & 0xFF) * 256) + (e gjatë) (të dhëna [2] & 0xF0)) / 16; e gjatë adc_t = (((e gjatë) (të dhëna [3] & 0xFF) * 65536) + ((e gjatë) (të dhëna [4] & 0xFF) * 256) + (e gjatë) (të dhëna [5] & 0xF0)) / 16; // Shndërroni të dhënat e lagështisë gjatë adc_h = ((e gjatë) (të dhëna [6] & 0xFF) * 256 + (e gjatë) (të dhëna [7] & 0xFF)); // Llogaritjet e kompensimit të temperaturës dyfish var1 = (((dyfish) adc_t) / 16384.0 - ((dyfish) dig_T1) / 1024.0) * ((dyfish) dig_T2); dyfish var2 = ((((dyfish) adc_t) / 131072.0 - ((dyfish) dig_T1) / 8192.0) * (((dyfish) adc_t) /131072.0 - ((dyfish) dig_T1) /8192.0)) * ((dyfish) dig_T3); dyfish t_fine = (e gjatë) (var1 + var2); cTemp dyfishtë = (var1 + var2) / 5120.0; dyshe fTemp = cTemp * 1.8 + 32; // Llogaritjet e kompensimit të presionit var1 = ((dyfish) t_fine / 2.0) - 64000.0; var2 = var1 * var1 * ((dyfish) dig_P6) / 32768.0; var2 = var2 + var1 * ((dyfish) dig_P5) * 2.0; var2 = (var2 / 4.0) + (((dyfish) dig_P4) * 65536.0); var1 = (((dyfish) dig_P3) * var1 * var1 / 524288.0 + ((dyfish) dig_P2) * var1) / 524288.0; var1 = (1.0 + var1 / 32768.0) * ((dyfish) dig_P1); dyshe p = 1048576.0 - (dyfish) adc_p; p = (p - (var2 / 4096.0)) * 6250.0 / var1; var1 = ((dyfish) dig_P9) * p * p / 2147483648.0; var2 = p * ((dyfish) dig_P8) / 32768.0; presion i dyfishtë = (p + (var1 + var2 + ((dyfish) dig_P7)) / 16.0) / 100; // Llogaritjet e kompensimit të lagështisë dyfish var_H = (((dyfish) 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_H))); lagështi e dyfishtë = var_H * (1.0 - dig_H1 * var_H / 524288.0); nëse (lagështia> 100.0) {lagështia = 100.0; } tjetër nëse (lagështia <0.0) {lagështia = 0.0; } // Dalja e të dhënave në ekran System.out.printf ("Temperatura në Celsius: %.2f C %n", cTemp); System.out.printf ("Temperatura në Fahrenheit: %.2f F %n", fTemp); System.out.printf ("Presioni: %.2f hPa %n", presion); System.out.printf ("Lagështia relative: %.2f %% RH %n", lagështia); }}

Hapi 4: Prakticiteti i Kodit

Prakticiteti i Kodit
Prakticiteti i Kodit

Tani, shkarkoni (ose git pull) kodin dhe hapeni atë në Raspberry Pi.

Drejtoni komandat për të përpiluar dhe ngarkuar kodin në terminal dhe shihni daljen në Monitor. Pas pak çastesh, do të shfaqë të gjithë parametrat. Duke u siguruar që të keni një kalim të qetë të kodit dhe një rezultat të qetë (ish), ju mendoni më shumë ide për të bërë ndryshime të mëtejshme (Çdo projekt fillon me një histori).

Hapi 5: Shfrytëzimi në botën konstruktive

BME280 arrin performancë të lartë në të gjitha aplikimet që kërkojnë matje të lagështisë dhe presionit. Këto aplikacione në zhvillim janë vetëdija për kontekstin, p.sh. Zbulimi i lëkurës, Zbulimi i ndryshimit të dhomës, Monitorimi / Mirëqenia e Fitnesit, Paralajmërim në lidhje me Thatësinë ose Temperaturat e Larta, Matja e Vëllimit dhe Rrjedhës së Ajrit, Kontrolli i Automatizimit të Shtëpisë, Ngrohja e Kontrollit, Ventilimi, Kondicionimi (HVAC), Interneti i Gjërave (IoT), Përmirësimi i GPS (p.sh. Përmirësimi i rregullimit të kohës së parë, llogaritja e vdekur, zbulimi i shpatit), navigimi i brendshëm (ndryshimi i zbulimit të dyshemesë, zbulimi i ashensorit), navigimi në natyrë, aplikacionet e kohës së lirë dhe sporteve, parashikimi i motit dhe treguesi i shpejtësisë vertikale (ngritje/lavaman) Shpejtësia).

Hapi 6: Përfundimi

Siç mund ta shihni, ky projekt është një demonstrim i shkëlqyeshëm i asaj që janë në gjendje hardware dhe softuer. Në pak kohë, dikush mund të ndërtojë një projekt kaq mbresëlënës! Sigurisht, ky është vetëm fillimi. Krijimi i një Stacioni Moti Personal më të sofistikuar si Aeroporti i Automatizuar Stacionet Moti Personal mund të përfshijë edhe më shumë sensorë si Anemometër (shpejtësia e erës), Transmetometri (dukshmëria), Pyranometri (rrezatimi diellor) etj. Ne kemi një video tutorial në Youtube që ka funksionimin bazë të Sensori I²C me Rasp Pi. Reallyshtë vërtet e mahnitshme të shohësh rezultatet dhe punën e komunikimeve të I²C. Kontrolloni gjithashtu. Argëtohuni duke ndërtuar dhe mësuar! Ju lutemi na tregoni se çfarë mendoni për këtë udhëzues. Ne do të donim të bënim disa përmirësime nëse ishte e nevojshme.

Recommended: