Բովանդակություն:

Եղանակային կայանը ՝ օգտագործելով Raspberry Pi- ն BME280- ով Python- ում. 6 քայլ
Եղանակային կայանը ՝ օգտագործելով Raspberry Pi- ն BME280- ով Python- ում. 6 քայլ

Video: Եղանակային կայանը ՝ օգտագործելով Raspberry Pi- ն BME280- ով Python- ում. 6 քայլ

Video: Եղանակային կայանը ՝ օգտագործելով Raspberry Pi- ն BME280- ով Python- ում. 6 քայլ
Video: How to use MPU-9250 Gyroscope, Accelerometer, Magnetometer for Arduino 2024, Հուլիսի
Anonim
Image
Image
Սարքավորման հրամայական հաշիվ
Սարքավորման հրամայական հաշիվ

is maith a scéalaí an aimir (Եղանակը լավ պատմող է)

Գլոբալ տաքացման և կլիմայի փոփոխության խնդիրներով, եղանակի գլոբալ օրինաչափությունը դառնում է անկանոն մեր աշխարհում, ինչը հանգեցնում է եղանակային պայմանների մի շարք բնական աղետների (երաշտներ, ծայրահեղ ջերմաստիճաններ, ջրհեղեղներ, փոթորիկներ և անտառային հրդեհներ): չարիք տանը: Դուք շատ բան եք սովորում հիմնական էլեկտրոնիկայի մասին եղանակային կայանի նախագծից ՝ օգտագործելով մի քանի էժան մասեր և տվիչներ: Դա բավականին հեշտ է կարգավորել, և ոչ մի ժամանակում այն չեք կարող ունենալ:

Քայլ 1. Պարտադիր սարքավորումների հաշիվ

Սարքավորման հրամայական հաշիվ
Սարքավորման հրամայական հաշիվ
Սարքավորման հրամայական հաշիվ
Սարքավորման հրամայական հաշիվ
Սարքավորման հրամայական հաշիվ
Սարքավորման հրամայական հաշիվ

1. Ազնվամորի Պի

Ձեռք բերեք Raspberry Pi տախտակին: Raspberry Pi- ն Linux- ով աշխատող մեկ տախտակ ունեցող համակարգիչ է: Raspberry Pi- ն իսկապես էժան, փոքր և բազմակողմանի է ՝ կառուցված մատչելի և ֆունկցիոնալ համակարգչից, որը սովորողների համար կիրառում է ծրագրավորման և ծրագրային ապահովման զարգացման հիմունքները:

2. I2C Shield ազնվամորու Pi- ի համար

INPI2- ը (I2C ադապտեր) ապահովում է Raspberry Pi 2/3 և I²C պորտը I2C բազմաթիվ սարքերով օգտագործելու համար: Այն հասանելի է DCUBE խանութում:

3. Թվային խոնավության, ճնշման և ջերմաստիճանի ցուցիչ, BME280

BME280- ը խոնավության, ճնշման և ջերմաստիճանի ցուցիչ է, որն ունի արագ արձագանքման ժամանակ և ընդհանուր բարձր ճշգրտություն: Մենք գնել ենք այս տվիչը DCUBE Store- ից:

4. I2C միացնող մալուխ

Մենք օգտագործել ենք այստեղ DCUBE Store- ում առկա I²C մալուխը:

5. Միկրո USB մալուխ

Միկրո USB մալուխ Էլեկտրամատակարարումը իդեալական ընտրություն է Raspberry Pi- ի սնուցման համար:

6 Ինտերնետ հասանելիության մեկնաբանում EthernetCable/WiFi ադապտերի միջոցով

Ինտերնետ հասանելիությունը կարելի է միացնել տեղական ցանցին և ինտերնետին միացված Ethernet մալուխի միջոցով: Այլապես, կարող եք միանալ անլար ցանցին ՝ օգտագործելով USB անլար կապ, որը կպահանջի կազմաձևում:

7. HDMI մալուխ (ցուցադրման և միացման մալուխ)

HDանկացած HDMI/DVI մոնիտոր և ցանկացած հեռուստատեսություն պետք է աշխատեն որպես ցուցադրում Pi- ի համար: Այլապես, SSH- ի միջոցով կարող եք հեռակա մուտք գործել Pi ՝ մերժելով մոնիտորի անհրաժեշտությունը (միայն առաջադեմ օգտվողներին):

Քայլ 2: Սարքավորման միացումներ շրջանի համար

Սարքավորման միացումներ սխեմայի համար
Սարքավորման միացումներ սխեմայի համար
Սարքավորման միացումներ սխեմայի համար
Սարքավորման միացումներ սխեմայի համար

Կատարեք սխեման ըստ ցուցադրված սխեմատիկայի: Ընդհանուր առմամբ, կապերը շատ պարզ են: Հանգստացեք և հետևեք վերը նշված հրահանգներին և պատկերներին, և դուք չպետք է խնդիրներ ունենաք: Սովորելիս մենք մանրամասնորեն ծանոթացանք էլեկտրոնիկայի հիմունքներին `կապված ապարատային և ծրագրային ապահովման գիտելիքների հետ: Մենք ցանկանում էինք այս նախագծի համար կազմել էլեկտրոնիկայի պարզ սխեմատիկա: Էլեկտրոնային սխեմաները նման են նախագծերի: Մշակեք նախագիծ և ուշադիր հետևեք ձևին: Էլեկտրոնիկայի մի քանի հիմնական հասկացություններ կարող են օգտակար լինել այստեղ:

Raspberry Pi- ի և I2C Shield- ի միացում

Նախ վերցրեք Raspberry Pi- ն և դրա վրա տեղադրեք I²C Shield- ը: Մեղմորեն սեղմեք Վահանը, և մենք ավարտեցինք այս քայլը նույնքան հեշտ, որքան կարկանդակը (տես նկարը):

Սենսորային և ազնվամորու Pi- ի միացում

Վերցրեք սենսորը և միացրեք I²C մալուխը դրա հետ: Համոզվեք, որ I²C ելքը ՄԻՇՏ միանում է I²C մուտքին: Նույնը պետք է հետևել Raspberry Pi- ի համար, երբ I²C վահանը տեղադրված է GPIO կապում: Մենք խորհուրդ ենք տալիս օգտագործել I²C մալուխները, քանի որ այն մերժում է նույնիսկ ամենափոքր սայթաքումից առաջացած քորոցների, զոդման և վատառողջության կարիքը:. Այս պարզ միացման և խաղալու մալուխի միջոցով կարող եք հեշտությամբ տեղադրել, փոխանակել տախտակները կամ ծրագրին ավելացնել ավելի շատ տախտակներ:

Նշում. Շագանակագույն մետաղալարը միշտ պետք է հետևի Ground (GND) կապին մի սարքի ելքի և մեկ այլ սարքի մուտքի միջև:

Ինտերնետ կապը բանալին է

Դուք այստեղ ունեք երկու ընտրություն: Կամ դուք կարող եք միացնել Raspberry Pi- ն ցանցին `օգտագործելով Ethernet մալուխ, կամ օգտագործել USB- ի WiFi ադապտեր` WIFI միացման համար: Ամեն դեպքում, քանի դեռ այն միացված է ինտերնետին, դուք ապահովագրված եք:

Շղթայի հզորացում

Միացրեք Micro USB մալուխը Raspberry Pi- ի սնուցման վարդակին: Unchարճացրեք և վոիլա: Մեր թիմը տեղեկատվական է:

Միացում էկրանին

Մենք կարող ենք կամ HDMI մալուխը միացնել մոնիտորին, կամ հեռուստացույցին: Բացի այդ, մենք կարող ենք մուտք գործել Raspberry Pi ՝ առանց այն հեռակառավարման միջոցով մոնիտորին միացնելու: SSH- ը հարմար գործիք է անվտանգ հեռավոր մուտքի համար: Դրա համար կարող եք օգտագործել նաև PUTTY ծրագրակազմը: Այս տարբերակը առաջադեմ օգտվողների համար է, այնպես որ մենք այն մանրամասն չենք լուսաբանի այստեղ:

Դա տնտեսական մեթոդ է, եթե չեք ցանկանում շատ ծախսել:

Քայլ 3: Raspberry Pi ծրագրավորում Python- ում

Raspberry Pi ծրագրավորում Python- ում
Raspberry Pi ծրագրավորում Python- ում

Raspberry Pi- ի և BME280 ցուցիչի Python ծածկագիրը: Այն հասանելի է մեր Github շտեմարանում:

Նախքան ծածկագրին անցնելը, համոզվեք, որ կարդացել եք Readme ֆայլում տրված հրահանգները և ըստ դրա կարգավորեք ձեր Raspberry Pi- ն: Մի փոքր ժամանակ ձեզ պատրաստ կլինի կարգավորման: Եղանակային կայանը ցամաքային կամ ծովային հաստատություն է, որն ունի մթնոլորտային պայմանները չափող գործիքներ և սարքավորումներ `եղանակի կանխատեսումների համար տեղեկատվություն տրամադրելու և եղանակի ու կլիմայի ուսումնասիրման համար:

Կոդն ակնհայտորեն ձեր առջև է և այն ամենապարզ ձևով, որը դուք կարող եք պատկերացնել, և դուք չպետք է խնդիրներ ունենաք: Դեռևս հարցրեք, թե որևէ մեկը (նույնիսկ եթե դուք հազար բան գիտեք, միևնույն է հարցրեք ինչ -որ մեկին, ով գիտի):

Այս սենսորի համար կարող եք պատճենել նաև աշխատող Python ծածկագիրը այստեղից:

# Տարածված է ազատ կամքի լիցենզիայի միջոցով: # BME280 # Այս կոդը նախատեսված է BME280_I2CS I2C մինի մոդուլի հետ աշխատելու համար, որը հասանելի է ControlEverything.com կայքում: #

ներմուծել smbus

ներմուծման ժամանակը

# Ձեռք բերեք I2C ավտոբուս

ավտոբուս = smbus. SMBus (1)

# BME280 հասցե, 0x76 (118)

# Կարդացեք տվյալները 0x88 (136), 24 բայթ b1 = bus.read_i2c_block_data (0x76, 0x88, 24)

# Փոխակերպեք տվյալները

# Pերմաստիճանի գործակիցներ dig_T1 = b1 [1] * 256 + b1 [0] dig_T2 = b1 [3] * 256 + b1 [2] եթե dig_T2> 32767: dig_T2 -= 65536 dig_T3 = b1 [5] * 256 + b1 [4] եթե dig_T3> 32767: dig_T3 -= 65536

# Ureնշման գործակիցներ

dig_P1 = b1 [7] * 256 + b1 [6] dig_P2 = b1 [9] * 256 + b1 [8] եթե dig_P2> 32767: dig_P2 -= 65536 dig_P3 = b1 [11] * 256 + b1 [10] եթե dig_P3 > 32767: dig_P3 -= 65536 dig_P4 = b1 [13] * 256 + b1 [12] եթե dig_P4> 32767: dig_P4 -= 65536 dig_P5 = b1 [15] * 256 + b1 [14] եթե dig_P5> 32767: dig_P5 -= 65536 dig_P6 = b1 [17] * 256 + b1 [16] եթե dig_P6> 32767: dig_P6 -= 65536 dig_P7 = b1 [19] * 256 + b1 [18] եթե dig_P7> 32767: dig_P7 -= 65536 dig_P8 = b1 [21] * 256 + b1 [20] եթե dig_P8> 32767: dig_P8 -= 65536 dig_P9 = b1 [23] * 256 + b1 [22] եթե dig_P9> 32767: dig_P9 -= 65536

# BME280 հասցե, 0x76 (118)

# Կարդացեք տվյալները 0xA1 (161), 1 բայթ dig_H1 = bus.read_byte_data (0x76, 0xA1)

# BME280 հասցե, 0x76 (118)

# Կարդացեք տվյալները 0xE1- ից (225), 7 բայթ b1 = bus.read_i2c_block_data (0x76, 0xE1, 7)

# Փոխակերպեք տվյալները

# Խոնավության գործակիցներ dig_H2 = b1 [1] * 256 + b1 [0] եթե dig_H2> 32767: dig_H2 -= 65536 dig_H3 = (b1 [2] & 0xFF) dig_H4 = (b1 [3] * 16) + (b1 [4] & 0xF) եթե dig_H4> 32767: dig_H4 -= 65536 dig_H5 = (b1 [4] / 16) + (b1 [5] * 16) եթե dig_H5> 32767: dig_H5 -= 65536 dig_H6 = b1 [6] եթե dig_H6> 127: dig_H6 -= 256

# BME280 հասցե, 0x76 (118)

# Ընտրեք կառավարման խոնավության գրանցամատյան, 0xF2 (242) # 0x01 (01) Խոնավության գերբարձրացում = 1 ավտոբուս: գրեք_տվյալներ (0x76, 0xF2, 0x01) # BME280 հասցե, 0x76 (118) # Ընտրեք կառավարման չափման գրանցամատյան, 0xF4 (244) # 0x27 (39) ureնշման եւ ջերմաստիճանի գերբեռնման արագություն = 1 # Նորմալ ռեժիմ ավտոբուս. Գրեք_բայթ_տվյալներ (0x76, 0xF4, 0x27) # BME280 հասցե, 0x76 (118) # Ընտրեք կազմաձևման գրանցամատյան, 0xF5 (245) # 0xA0 (00) Սպասման սպասման ժամանակ = 1000 ms ավտոբուս.write_byte_data (0x76, 0xF5, 0xA0)

ժամանակ. քուն (0.5)

# BME280 հասցե, 0x76 (118)

# Կարդացեք տվյալները 0xF7- ից (247), 8 բայթ # ureնշում MSB, ճնշում LSB, ճնշում xLSB, ջերմաստիճան MSB, ջերմաստիճան LSB # ջերմաստիճան xLSB, խոնավություն MSB, խոնավություն LSB տվյալներ = bus.read_i2c_block_data (0x76, 0xF7, 8)

# Փոխարկեք ճնշման և ջերմաստիճանի տվյալները 19 բիթ

adc_p = ((տվյալները [0] * 65536) + (տվյալները [1] * 256) + (տվյալները [2] և 0xF0)) / 16 adc_t = ((տվյալները [3] * 65536) + (տվյալները [4] * 256) + (տվյալներ [5] և 0xF0)) / 16

# Փոխարկեք խոնավության տվյալները

adc_h = տվյալներ [6] * 256 + տվյալներ [7]

# Peratերմաստիճանի փոխհատուցման հաշվարկներ

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

# Ureնշման փոխհատուցման հաշվարկներ

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 * (1.0 - dig_H1 * var_H / 524288.0), եթե խոնավություն> 100.0: խոնավություն = 100.0 էլիֆ խոնավություն <0.0: խոնավություն = 0.0

# Ելքի տվյալները էկրանին

տպել «peratերմաստիճանը Celsius:

Քայլ 4: Գործող օրենսգիրք

Գործող օրենսգիրք
Գործող օրենսգիրք

Այժմ, ներբեռնեք (կամ git pull) ծածկագիրը և բացեք այն Raspberry Pi- ում:

Գործարկեք տերմինալում կոդը կազմելու և վերբեռնելու հրամանները և արդյունքը տեսեք Displayուցադրման վրա: Մի քանի վայրկյան անց այն կցուցադրի բոլոր պարամետրերը: Համոզվելուց հետո, որ ամեն ինչ հիանալի է աշխատում, կարող եք զարգացնել ևս մի քանի հետաքրքիրը:

Քայլ 5: Օգտագործումը գործնական աշխարհում

BME280- ը բարձր արդյունավետության է հասնում բոլոր այն ծրագրերում, որոնք պահանջում են խոնավության և ճնշման չափում: Այս առաջացող ծրագրերը համատեքստի իրազեկում են, օրինակ. Մաշկի հայտնաբերում, սենյակի փոփոխության հայտնաբերում, Ֆիթնեսի մոնիտորինգ / բարեկեցություն, Չորության կամ բարձր ջերմաստիճանի վերաբերյալ նախազգուշացում, umeավալի և օդի հոսքի չափում, Տան ավտոմատացման հսկողություն, Heեռուցման հսկողություն, օդափոխություն, օդորակիչ (HVAC), Իրերի ինտերնետ (IoT), GPS- ի բարելավում (օրինակ ՝ ժամանակի առաջին ուղղման բարելավում, մեռած հաշվարկ, լանջի հայտնաբերում), ներքին նավարկություն (հատակի հայտնաբերման փոփոխություն, վերելակի հայտնաբերում), բացօթյա նավարկություն, ժամանցի և սպորտային ծրագրեր, եղանակի կանխատեսում և ուղղահայաց արագության ցուցում (բարձրացում/սուզվել Արագություն):

Քայլ 6: Եզրակացություն

Հուսով եմ, որ այս նախագիծը ոգեշնչում է հետագա փորձերին: Ավելի բարդ եղանակային կայան պատրաստելը կարող է ներառել ավելի շատ տվիչներ, ինչպիսիք են Անձրևաչափը, Լույսի ցուցիչը, անեմոմետրը (քամու արագությունը) և այլն: Դուք կարող եք դրանք ավելացնել և փոփոխել ծածկագիրը: Մենք ունենք YouTube- ի վիդեո ձեռնարկ, որն ունի Rasp Pi- ի հետ I²C սենսորի հիմնական գործառույթը: Իրոք զարմանալի է տեսնել I²C հաղորդակցության արդյունքներն ու աշխատանքը: Ստուգեք այն նաև: funվարճացեք կառուցելով և սովորելով: Խնդրում ենք մեզ տեղեկացնել, թե ինչ եք կարծում այս ուսանելիի մասին: Անհրաժեշտության դեպքում մենք կցանկանայինք կատարելագործումներ կատարել:

Խորհուրդ ենք տալիս: