Բովանդակություն:
- Քայլ 1: Հիմնական սարքավորումների հաշիվ
- Քայլ 2: Կարգավորման սարքավորումների միացումներ
- Քայլ 3: Raspberry Pi ծրագրավորում Java- ում
- Քայլ 4: Կոդի գործնականություն
- Քայլ 5: Օգտագործումը կառուցողական աշխարհում
- Քայլ 6: Եզրակացություն
Video: Անձնական եղանակային կայան ՝ օգտագործելով Raspberry Pi- ն BME280- ով Java- ում. 6 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:46
Վատ եղանակը միշտ ավելի վատ տեսք ունի պատուհանից:
Մենք միշտ շահագրգռված ենք եղել վերահսկել մեր տեղական եղանակը և այն, ինչ տեսնում ենք պատուհանից: Մենք նաև ցանկանում էինք ավելի լավ վերահսկել մեր ջեռուցման և օդորակման համակարգը: Անձնական եղանակային կայանի կառուցումը ուսուցման հիանալի փորձ է: Այս նախագծի կառուցումն ավարտելուց հետո ավելի լավ կհասկանաք, թե ինչպես են աշխատում անլար հաղորդակցությունները, ինչպես են աշխատում սենսորները և որքան հզոր կարող է լինել Raspberry Pi հարթակը: Այս նախագիծը որպես հիմք և ձեռք բերված փորձը, դուք կկարողանաք հեշտությամբ կառուցել ավելի բարդ նախագծեր ապագայում:
Քայլ 1: Հիմնական սարքավորումների հաշիվ
1. Ազնվամորի Պի
Առաջին քայլն այն է, որ ձեր ձեռքերը հասնեն Raspberry Pi տախտակին: Raspberry Pi- ն Linux- ով աշխատող մեկ տախտակ ունեցող համակարգիչ է: Դրա նպատակն է բարելավել ծրագրավորման հմտությունները և ապարատային ընկալումը: Այն արագորեն ընդունվեց նորարարական նախագծերի համար զբաղվողների և էլեկտրոնիկայի սիրահարների կողմից:
2. I²C Shield ազնվամորի Pi- ի համար
INPI2- ը (I2C ադապտեր) ապահովում է Raspberry Pi 2/3 և I²C պորտը I²C բազմաթիվ սարքերի հետ օգտագործելու համար: Այն հասանելի է Dcube Store- ում
3. Թվային խոնավության, ճնշման և ջերմաստիճանի ցուցիչ, BME280
BME280- ը խոնավության, ճնշման և ջերմաստիճանի ցուցիչ է, որն ունի արագ արձագանքման ժամանակ և ընդհանուր բարձր ճշգրտություն: Այս սենսորը մենք գնել ենք Dcube Store- ից
4. I²C միացնող մալուխ
Մենք ունեինք I²C միացման մալուխ, որը հասանելի էր Dcube Store- ում
5. Միկրո USB մալուխ
Միկրո USB մալուխ Էլեկտրամատակարարումը իդեալական ընտրություն է Raspberry Pi- ի սնուցման համար:
6. Մեկնաբանել ինտերնետ հասանելիությունը EthernetCable/WiFi ադապտերի միջոցով
Առաջին բաներից մեկը, որ կցանկանաք անել, դա ձեր Raspberry Pi- ի ինտերնետին միացումն է: Մենք կարող ենք միանալ Ethernet մալուխի միջոցով: Մեկ այլ հնարավորություն այն է, որ դուք կարող եք միանալ անլար ցանցին ՝ օգտագործելով USB անլար ադապտեր:
7. HDMI մալուխ (ցուցադրման և միացման մալուխ)
HDանկացած HDMI/DVI մոնիտոր և ցանկացած հեռուստատեսություն պետք է աշխատեն որպես ցուցադրում Pi- ի համար: Բայց դա ընտրովի չէ: Հեռավոր մուտքի (նման-SSH) հնարավորությունը նույնպես չի կարող բացառվել: Կարող եք նաև մուտք գործել PUTTY ծրագրակազմով:
Քայլ 2: Կարգավորման սարքավորումների միացումներ
Կատարեք սխեման, ինչպես ցույց է տրված սխեմատիկ:
Սովորելիս մենք մանրամասնորեն ծանոթացանք էլեկտրոնիկայի հիմունքներին `կապված ապարատային և ծրագրային ապահովման գիտելիքների հետ: Մենք ցանկանում էինք այս նախագծի համար կազմել էլեկտրոնիկայի պարզ սխեմատիկա: Էլեկտրոնային սխեմաները նման են էլեկտրոնիկայի նախագծին: Մշակեք նախագիծ և ուշադիր հետևեք ձևին: Մենք այստեղ կիրառել ենք էլեկտրոնիկայի որոշ հիմունքներ: Տրամաբանությունը ձեզ տանում է A- ից B, երևակայությունը կտանի ձեզ ամենուր:
Raspberry Pi- ի և I²C Shield- ի միացում
Առաջին հերթին վերցրեք Raspberry Pi- ն և դրա վրա տեղադրեք I²C Shield (Inward Facing I²C Port- ով): Մեղմորեն սեղմեք Shield- ը Pi- ի GPIO կապում, և մենք այս քայլը կատարեցինք նույնքան հեշտ, որքան կարկանդակը (տես նկարը):
Սենսորային և ազնվամորու Pi- ի միացում
Վերցրեք սենսորը և միացրեք I²C մալուխը դրա հետ: Համոզվեք, որ I²C ելքը ՄԻՇՏ միանում է I²C մուտքին: Նույնը պետք է հետևել Raspberry Pi- ի համար, երբ դրա վրա տեղադրված է I²C վահանը GPIO կապում: Մենք ունենք I²C Shield և միացնող մալուխները մեր կողմից ՝ որպես շատ մեծ օգնություն և շատ մեծ առավելություն, քանի որ մեզ մնում է միայն plug and play տարբերակ: Այլևս քորոցների և էլեկտրագծերի խնդիր չկա, և, հետևաբար, խառնաշփոթը վերացել է: Պարզապես պատկերացրեք ինքներդ ձեզ լարերի ցանցում և մտեք դրա մեջ: Դրանից թեթևացում: Սա ամեն ինչ բարդացնում է:
Նշում. Շագանակագույն մետաղալարը միշտ պետք է հետևի Ground (GND) կապին մի սարքի ելքի և մեկ այլ սարքի մուտքի միջև:
Ինտերնետ կապը անհրաժեշտություն է
Դուք իրականում այստեղ ընտրություն ունեք: Դուք կարող եք միացնել Raspberry Pi- ն LAN մալուխով կամ անլար Nano USB ադապտերով WIFI միացման համար: Ամեն դեպքում, մանիֆեստը կայացած ինտերնետին միանալն է:
Շղթայի սնուցումը
Միացրեք Micro USB մալուխը Raspberry Pi- ի սնուցման վարդակին: Unchարճացրեք և վոիլա: Ամեն ինչ լավ է, և մենք անմիջապես կսկսենք:
Միացում ցուցադրման հետ
Մենք կարող ենք կամ HDMI մալուխը միացնել մոնիտորին կամ հեռուստացույցին: Մենք կարող ենք մուտք գործել Raspberry Pi ՝ առանց այն մոնիտորին միացնելու -SSH- ի միջոցով (մուտք գործեք Pi- ի հրամանի տող այլ համակարգչից): Դրա համար կարող եք օգտագործել նաև PUTTY ծրագրակազմը: Այս տարբերակը առաջադեմ օգտվողների համար է, այնպես որ մենք այն մանրամասն չենք լուսաբանի այստեղ:
Ես լսել եմ, որ անկում է լինելու, որոշեցի չմասնակցել:
Քայլ 3: Raspberry Pi ծրագրավորում Java- ում
Raspberry Pi- ի և BME280 ցուցիչի համար Java կոդը: Այն հասանելի է մերGithub շտեմարանում:
Նախքան ծածկագրին անցնելը, համոզվեք, որ կարդացել եք Readme ֆայլում տրված հրահանգները և ըստ դրա կարգավորեք ձեր Raspberry Pi- ն: Դա անելու համար կպահանջվի ընդամենը մի պահ: Անձնական եղանակային կայանը եղանակի չափման գործիքների շարք է, որոնք աշխատում են մասնավոր անձի, ակումբի, ասոցիացիայի կամ նույնիսկ բիզնեսի կողմից: Անձնական եղանակային կայանները կարող են գործել բացառապես սեփականատիրոջ հաճույքի և կրթության համար, սակայն շատ անհատ օդերևութաբանական կայանների օպերատորները նույնպես կիսում են իրենց տվյալները մյուսների հետ ՝ դրանք ձեռքով կազմելով և տարածելով, կամ ինտերնետի կամ սիրողական ռադիոյի միջոցով:
Կոդն ամենապարզ ձևն է, որը կարող եք պատկերացնել, և դրա հետ կապված որևէ խնդիր չպետք է ունենաք, այլ հարցրեք, թե արդյոք ունեք: Նույնիսկ եթե դուք հազար բան գիտեք, միևնույն է հարցրեք մեկին, ով գիտի:
Այս սենսորի համար կարող եք պատճենել աշխատանքային java ծածկագիրը նաև այստեղից:
// Տարածված է ազատ կամքի լիցենզիայի միջոցով: // BME280 // Այս կոդը նախատեսված է BME280_I2CS I2C մինի մոդուլի հետ աշխատելու համար, որը հասանելի է ControlEverything.com կայքում: //
ներմուծել com.pi4j.io.i2c. I2CBus;
ներմուծել com.pi4j.io.i2c. I2CD սարք; ներմուծել com.pi4j.io.i2c. I2CFactory; ներմուծում java.io. IOException;
հանրային դաս BME280
{public static void main (String args ) նետում է Բացառություն {// Ստեղծել I2C ավտոբուս I2CBus bus = I2CFactory.getInstance (I2CBus. BUS_1); // Ստացեք I2C սարք, BME280 I2C հասցեն ՝ 0x76 (108) I2CD սարքի սարք = bus.getDevice (0x76); // Կարդացեք 24 բայթ տվյալներ 0x88 (136) բայթ հասցեից b1 = նոր բայթ [24]; device.read (0x88, b1, 0, 24); // Փոխարկել տվյալները // ջերմաստիճանի գործակիցները int dig_T1 = (b1 [0] & 0xFF) + ((b1 [1] & 0xFF) * 256); int dig_T2 = (b1 [2] & 0xFF) + ((b1 [3] & 0xFF) * 256); եթե (dig_T2> 32767) {dig_T2 -= 65536; } int dig_T3 = (b1 [4] & 0xFF) + ((b1 [5] & 0xFF) * 256); եթե (dig_T3> 32767) {dig_T3 -= 65536; } // ճնշման գործակիցներ int dig_P1 = (b1 [6] & 0xFF) + ((b1 [7] & 0xFF) * 256); int dig_P2 = (b1 [8] & 0xFF) + ((b1 [9] & 0xFF) * 256); եթե (dig_P2> 32767) {dig_P2 -= 65536; } int dig_P3 = (b1 [10] & 0xFF) + ((b1 [11] & 0xFF) * 256); եթե (dig_P3> 32767) {dig_P3 -= 65536; } int dig_P4 = (b1 [12] & 0xFF) + ((b1 [13] & 0xFF) * 256); եթե (dig_P4> 32767) {dig_P4 -= 65536; } int dig_P5 = (b1 [14] & 0xFF) + ((b1 [15] & 0xFF) * 256); եթե (dig_P5> 32767) {dig_P5 -= 65536; } int dig_P6 = (b1 [16] & 0xFF) + ((b1 [17] & 0xFF) * 256); եթե (dig_P6> 32767) {dig_P6 -= 65536; } int dig_P7 = (b1 [18] & 0xFF) + ((b1 [19] & 0xFF) * 256); եթե (dig_P7> 32767) {dig_P7 -= 65536; } int dig_P8 = (b1 [20] & 0xFF) + ((b1 [21] & 0xFF) * 256); եթե (dig_P8> 32767) {dig_P8 -= 65536; } int dig_P9 = (b1 [22] & 0xFF) + ((b1 [23] & 0xFF) * 256); եթե (dig_P9> 32767) {dig_P9 -= 65536; } // Կարդացեք 1 բայթ տվյալներ 0xA1 (161) հասցեից int dig_H1 = ((բայթ) device.read (0xA1) & 0xFF); // Կարդացեք 7 բայթ տվյալներ 0xE1 (225) սարքի հասցեից: կարդալ (0xE1, b1, 0, 7); // Փոխարկել տվյալները // խոնավության գործակիցները int dig_H2 = (b1 [0] & 0xFF) + (b1 [1] * 256); եթե (dig_H2> 32767) {dig_H2 -= 65536; } int dig_H3 = b1 [2] & 0xFF; int dig_H4 = ((b1 [3] & 0xFF) * 16) + (b1 [4] & 0xF); եթե (dig_H4> 32767) {dig_H4 -= 65536; } int dig_H5 = ((b1 [4] & 0xFF) / 16) + ((b1 [5] & 0xFF) * 16); եթե (dig_H5> 32767) {dig_H5 -= 65536; } int dig_H6 = b1 [6] & 0xFF; եթե (dig_H6> 127) {dig_H6 -= 256; } // Ընտրեք հսկողության խոնավության գրանցամատյան // Խոնավություն նմուշառման արագությունից = 1 սարք. Գրել (0xF2, (բայթ) 0x01); // Ընտրել հսկիչ չափման գրանցամատյան // Նորմալ ռեժիմ, ջերմաստիճան և ճնշում ընտրանքի արագության նկատմամբ = 1 սարք: գրել (0xF4, (բայթ) 0x27); // Ընտրեք config register // Stand_by time = 1000 ms device.write (0xF5, (byte) 0xA0); // Կարդացեք 8 բայթ տվյալներ 0xF7 (247) հասցեից // ճնշում msb1, ճնշում msb, ճնշում lsb, ջերմաստիճան msb1, temp msb, temp lsb, խոնավություն lsb, խոնավություն msb բայթ տվյալներ = նոր բայթ [8]; device.read (0xF7, տվյալներ, 0, 8); // pressureնշման և ջերմաստիճանի տվյալները փոխարկեք 19 բիթ երկարության adc_p = (((երկար) (տվյալներ [0] & 0xFF) * 65536) + ((երկար) (տվյալներ [1] և 0xFF) * 256) + (երկար) (տվյալներ [2] & 0xF0)) / 16; երկար adc_t = (((երկար) (տվյալներ [3] և 0xFF) * 65536) + ((երկար) (տվյալներ [4] և 0xFF) * 256) + (երկար) (տվյալներ [5] և 0xF0)) / 16; // Փոխակերպեք խոնավության տվյալները երկար adc_h = ((երկար) (տվյալները [6] & 0xFF) * 256 + (երկար) (տվյալները [7] & 0xFF)); // Temերմաստիճանի փոխհատուցման հաշվարկներ կրկնակի 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; // Pressնշման փոխհատուցման հաշվարկներ 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; կրկնակի ճնշում = (p + (var1 + var2 + ((կրկնակի) dig_P7)) / 16.0) / 100; // Խոնավության փոխհատուցման հաշվարկներ կրկնակի 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_H))); կրկնակի խոնավություն = var_H * (1.0 - dig_H1 * var_H / 524288.0); եթե (խոնավություն> 100.0) {խոնավություն = 100.0; } else if (խոնավություն <0.0) {խոնավություն = 0.0; } // Մուտքագրեք տվյալները System.out.printf էկրանին («elsերմաստիճանը Celsius: %.2f C %n», cTemp); System.out.printf («Fերմաստիճանը Ֆարենհայտում ՝ %.2f F %n», fTemp); System.out.printf ("Pressնշում. %.2f hPa %n", ճնշում); System.out.printf ("Հարաբերական խոնավություն. %.2f %% RH %n", խոնավություն); }}
Քայլ 4: Կոդի գործնականություն
Այժմ, ներբեռնեք (կամ git pull) ծածկագիրը և բացեք այն Raspberry Pi- ում:
Գործարկեք տերմինալում կոդը կազմելու և վերբեռնելու հրամանները և տեսեք արտադրանքը Մոնիտորի վրա: Մի քանի պահից այն կցուցադրի բոլոր պարամետրերը: Ապահովելով, որ դուք ունեք կոդի սահուն անցում և հանգիստ (նախկին) արդյունք, դուք ավելի շատ գաղափարներ եք մտածում հետագա փոփոխություններ կատարելու համար (Յուրաքանչյուր նախագիծ սկսվում է պատմությամբ):
Քայլ 5: Օգտագործումը կառուցողական աշխարհում
BME280- ը բարձր արդյունավետության է հասնում բոլոր այն ծրագրերում, որոնք պահանջում են խոնավության և ճնշման չափում: Այս ի հայտ եկող ծրագրերն են Համատեքստի իրազեկումը, օրինակ. Մաշկի հայտնաբերում, սենյակի փոփոխության հայտնաբերում, Ֆիթնեսի մոնիտորինգ / բարեկեցություն, Չորության կամ բարձր ջերմաստիճանի վերաբերյալ նախազգուշացում, umeավալի և օդի հոսքի չափում, Տան ավտոմատացման հսկողություն, Heեռուցման հսկողություն, օդափոխություն, օդորակիչ (HVAC), Իրերի ինտերնետ (IoT), GPS- ի բարելավում (օրինակ ՝ ժամանակի առաջին ուղղման բարելավում, մեռած հաշվարկ, լանջի հայտնաբերում), ներքին նավարկություն (հատակի հայտնաբերման փոփոխություն, վերելակի հայտնաբերում), բացօթյա նավարկություն, ժամանցի և սպորտային ծրագրեր, եղանակի կանխատեսում և ուղղահայաց արագության ցուցում (բարձրացում/սուզվել Արագություն):
Քայլ 6: Եզրակացություն
Ինչպես տեսնում եք, այս նախագիծը հիանալի ցուցադրում է, թե ինչի են ընդունակ ապարատային և ծրագրային ապահովումները: Փոքր ժամանակում կարելի է կառուցել նման տպավորիչ նախագիծ: Իհարկե, սա դեռ սկիզբն է: Ավելի բարդ Անձնական եղանակային կայան ստեղծելը, ինչպիսին է Օդանավակայանի ավտոմատացված Անձնական եղանակային կայանները, կարող են ներառել ևս մի քանի սենսորներ, ինչպիսիք են ՝ անեմոմետրը (քամու արագությունը), հաղորդիչը (տեսանելիությունը), պիրանոմետրը (արևային ճառագայթում) և այլն: I²C ցուցիչ Rasp Pi- ով: Իրոք զարմանալի է տեսնել I²C հաղորդակցության արդյունքներն ու աշխատանքը: Ստուգեք նաև այն: Haveվարճացեք կառուցելով և սովորելով: Խնդրում ենք մեզ տեղեկացնել, թե ինչ եք կարծում այս ուսանելիի մասին: Անհրաժեշտության դեպքում մենք կցանկանայինք կատարելագործումներ կատարել:
Խորհուրդ ենք տալիս:
Սենյակի եղանակային կայան ՝ օգտագործելով Arduino և BME280: 4 քայլ
Սենյակի եղանակային կայան ՝ օգտագործելով Arduino և BME280. Նախկինում ես կիսում էի մի պարզ եղանակային կայան, որը ցուցադրում էր տեղական տարածքի ջերմաստիճանը և խոնավությունը: Դրա խնդիրն այն էր, որ ժամանակ կպահանջվեր թարմացնելու համար, և տվյալները ճշգրիտ չէին: Այս ձեռնարկում մենք կկազմենք փակ եղանակի մոնիտոր
Եղանակային կայան ՝ օգտագործելով Wemos D1 Mini, BME280 և Sensate. 6 քայլ
Եղանակային կայան ՝ օգտագործելով Wemos D1 Mini, BME280 և Sensate. Նախորդ հրապարակումներում ես կիսվել եմ եղանակային կայան կառուցելու տարբեր եղանակներով: Եթե դեռ չեք ստուգել, ահա հղումը: Այս ուսանելիում ես ցույց կտամ, թե ինչպես կարելի է կառուցել պարզ եղանակային կայան ՝ օգտագործելով Wemos և IoT հարթակ ՝ Sensate անունով:
Particle Photon IoT Անձնական եղանակային կայան. 4 քայլ (նկարներով)
Particle Photon IoT Անձնական եղանակային կայան
Multi Task Raspberry 1 B (Անձնական ամպ + եղանակային կայան) ՝ 4 քայլ
Multi Task Raspberry 1 B (Անձնական ամպ + եղանակային կայան). Որոշ ժամանակ առաջ ես հիշեցի, որ ավելի նոր տարբերակ գնելուց հետո կար RPiB պահեստ: Մտածելով գաղտնիության մասին ՝ պահուստային ֆայլերս պահելիս, որոշեցի ունենալ իմ ամպային սերվերը: Ուրախ լավ արդյունքով, բայց չբավարարված R- ից ներուժի վատնումով
Acurite 5 in 1 եղանակային կայան ՝ օգտագործելով Raspberry Pi և Weewx (այլ եղանակային կայաններ համատեղելի են). 5 քայլ (նկարներով)
Acurite 5 in 1 եղանակային կայան ՝ օգտագործելով Raspberry Pi և Weewx (այլ եղանակային կայաններ համատեղելի են). Երբ ես գնել էի Acurite 5 in 1 օդերևութաբանական կայանը, ես ցանկանում էի, որ կարողանայի ստուգել եղանակը իմ տանը, երբ ես հեռու էի: Երբ տուն հասա և տեղադրեցի, հասկացա, որ կամ պետք է միացնեմ համակարգչին կամ գնեմ նրանց խելացի հանգույցը