Мазмұны:

Python -да BME280 көмегімен Raspberry Pi қолданатын метеостанция: 6 қадам
Python -да BME280 көмегімен Raspberry Pi қолданатын метеостанция: 6 қадам

Бейне: Python -да BME280 көмегімен Raspberry Pi қолданатын метеостанция: 6 қадам

Бейне: Python -да BME280 көмегімен Raspberry Pi қолданатын метеостанция: 6 қадам
Бейне: Raspberry Pi BME280 Weather Station Using Python and Flask 2024, Шілде
Anonim
Image
Image
Императивті жабдықтар туралы заң
Императивті жабдықтар туралы заң

бұл жақсы тақырып және ауа райы (Ауа райы жақсы әңгімеші)

Жаһандық жылыну мен климаттың өзгеру мәселелеріне байланысты біздің әлемде ауа райының тұрақсыздығы өзгеріп, ауа райына байланысты көптеген табиғи апаттарға (қуаңшылық, экстремалды температура, су тасқыны, дауыл мен дала өрттері) алып келеді, метеостанция қажет болып көрінеді. үйдегі зұлымдық. Сіз арзан бөлшектер мен сенсорлардың көмегімен метеостанция жобасынан негізгі электроника туралы көп білесіз. Орнату өте оңай, және сіз оны бірден ала алмайсыз.

1 -қадам: Императивті жабдықтар туралы есеп

Императивті жабдықтар туралы заң
Императивті жабдықтар туралы заң
Императивті жабдықтар туралы заң
Императивті жабдықтар туралы заң
Императивті жабдықтар туралы заң
Императивті жабдықтар туралы заң

1. Таңқурай Pi

Қолдарыңызды Raspberry Pi тақтасына қойыңыз. Raspberry Pi - бұл Linux -пен жұмыс істейтін бір тақталы компьютер. Raspberry Pi - бұл оқушыларға бағдарламалау мен бағдарламалық қамтамасыз етуді құру негіздерін үйрену үшін қол жетімді және функционалды компьютерден жасалған шынымен де арзан, кішкентай және әмбебап.

2. Raspberry Pi үшін I2C қалқаны

INPI2 (I2C адаптері) Raspberry Pi 2/3 пен I²C портын бірнеше I2C құрылғыларымен пайдалануға мүмкіндік береді. Ол DCUBE дүкенінде қол жетімді.

3. Сандық ылғалдылық, қысым мен температура сенсоры, BME280

BME280 - ылғалдылық, қысым мен температура сенсоры, ол жылдам жауап беру уақыты мен жоғары дәлдікке ие. Біз бұл сенсорды DCUBE дүкенінен сатып алдық.

4. I2C қосылатын кабель

Біз DCUBE дүкенінде қол жетімді I²C кабелін қолдандық.

5. Микро USB кабелі

Микро USB кабелі Қуат көзі - Raspberry Pi -ге қуат беру үшін тамаша таңдау.

6. EthernetCable/WiFi адаптері арқылы Интернетке қосылуды түсіндіріңіз

Интернетке кіруді жергілікті желіге және интернетке қосылған Ethernet кабелі арқылы қосуға болады. Сонымен қатар, конфигурация қажет болатын USB сымсыз кілтін пайдаланып сымсыз желіге қосылуға болады.

7. HDMI кабелі (Дисплей және байланыс кабелі)

Кез келген HDMI/DVI мониторы мен кез келген теледидар Pi үшін дисплей ретінде жұмыс істеуі керек. Сонымен қатар, сіз мониторға қажеттілікті жоққа шығаратын SSH арқылы Pi -ге қашықтан қол жеткізе аласыз (тек озық пайдаланушылар үшін).

2 -қадам: Схемаға арналған аппараттық қосылымдар

Схемаға арналған аппараттық қосылулар
Схемаға арналған аппараттық қосылулар
Схемаға арналған аппараттық қосылулар
Схемаға арналған аппараттық қосылулар

Схеманы көрсетілген схемаға сәйкес жасаңыз. Жалпы, қосылулар өте қарапайым. Тыныштық сақтаңыз және жоғарыдағы нұсқаулар мен суреттерді орындаңыз, сонда сізде проблемалар болмауы керек. Оқу барысында біз аппараттық және бағдарламалық қамтамасыз ету туралы электрониканың негізін толық меңгердік. Біз осы жобаның электроникасының қарапайым схемасын құрғымыз келді. Электрондық схемалар сызбаға ұқсайды. Жобаны жасаңыз және дизайнды мұқият орындаңыз. Электрониканың бірнеше негізгі түсініктері мұнда пайдалы болуы мүмкін!

Raspberry Pi мен I2C Shield қосылымы

Алдымен, Raspberry Pi алыңыз және оған I²C қалқанын қойыңыз. Қалқанды ақырын басыңыз, сонда біз бұл қадамды бәліш сияқты оңай аяқтаймыз (суретті қараңыз).

Сенсор мен Raspberry Pi қосылуы

Сенсорды алыңыз және онымен I²C кабелін қосыңыз. I²C шығысы әрқашан I²C кірісіне қосылатынына көз жеткізіңіз. I²C қалқаны GPIO түйреуіштері орнатылған Raspberry Pi үшін де солай істеу керек, біз I²C кабельдерін қолдануды ұсынамыз, себебі ол кішкене сырғып кетуден туындаған түйреуіштерді, дәнекерлеуді және нашарлауды қажет етпейді.. Бұл қарапайым қосылатын және қосылатын кабельдің көмегімен сіз тақталарды оңай орнатуға, ауыстыруға немесе қосымша тақталарды қосуға болады.

Ескертпе: қоңыр сым әрқашан бір құрылғының шығысы мен басқа құрылғының кірісі арасындағы Ground (GND) байланысын ұстануы керек

Интернетке қосылу кілт болып табылады

Мұнда сізде екі таңдау бар. Сіз Raspberry Pi -ді желіге Ethernet кабелі арқылы қосуға немесе WIFI -ге қосылу үшін USB -ден WiFi адаптеріне қосуға болады. Қалай болғанда да, егер ол Интернетке қосылған болса, сіз оны жабасыз.

Электр тізбегін қосу

Micro USB кабелін Raspberry Pi қуат ұясына қосыңыз. Соққы және воила! Біздің топ - бұл ақпарат.

Экранға қосылу

Біз HDMI кабелін мониторға немесе теледидарға қосамыз. Бұған қоса, біз Raspberry Pi -ге қашықтан қатынауды пайдаланып мониторға қоспай -ақ қол жеткізе аламыз. SSH - бұл қашықтан кіруге қауіпсіз құрал. Ол үшін PUTTY бағдарламалық жасақтамасын қолдануға болады. Бұл опция озық пайдаланушыларға арналған, сондықтан біз оны егжей -тегжейлі қарастырмаймыз.

Егер сіз көп ақша жұмсағыңыз келмесе, бұл үнемді әдіс

3 -қадам: Python -да Raspberry Pi бағдарламалау

Python тілінде Raspberry Pi бағдарламалау
Python тілінде Raspberry Pi бағдарламалау

Raspberry Pi және BME280 сенсоры үшін Python коды. Ол біздің Github репозиторийінде қол жетімді.

Кодқа өтпес бұрын, Readme файлында берілген нұсқауларды оқығаныңызға және оған сәйкес Raspberry Pi орнатыңыз. Метеостанция - бұл құрлықта да, теңізде де ауа райы жағдайын өлшеуге арналған аспаптар мен қондырғылармен ауа райы болжамы туралы ақпарат беру үшін, ауа райы мен климатты зерттеу үшін қондырғы.

Код сіздің алдыңызда және сіз ойлағандай қарапайым түрде және сізде ешқандай проблемалар болмауы керек. Бар ма деп сұраңыз (Егер сіз мың нәрсені білсеңіз де, білетін адамнан сұраңыз).

Сіз бұл сенсордың жұмыс істейтін Python кодын осы жерден көшіре аласыз.

# Ерік-жігер лицензиясымен таратылады.# Егер ол онымен байланысты жұмыстардың лицензиясына сәйкес келсе, оны қалаған жолмен пайдаланыңыз немесе тегін пайдаланыңыз. # BME280 # Бұл код ControlEverything.com сайтында қол жетімді BME280_I2CS I2C шағын модулімен жұмыс жасауға арналған. #

smbus импорттау

импорт уақыты

# I2C автобусын алыңыз

автобус = smbus. SMBus (1)

# BME280 мекенжайы, 0x76 (118)

# Деректерді 0x88 (136), 24 байт b1 = bus.read_i2c_block_data (0x76, 0x88, 24) бастап оқу

# Деректерді түрлендіру

# Температура коэффициенттері 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

# Қысым коэффициенттері

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 bus.write_byte_data (0x76, 0xF2, 0x01) # BME280 мекен -жайы, 0x76 (118) # Бақылау өлшеу регистрін таңдау, 0xF4 (244) # 0x27 (39) Қысым мен температураның шамадан тыс іріктеу жылдамдығы = 1 # Қалыпты режим bus.write_byte_data (0x76, 0xF4, 0x27) # BME280 мекенжайы, 0x76 (118) # Configuration регистрін таңдаңыз, 0xF5 (245) # 0xA0 (00) Stand_by time = 1000 ms шина.write_byte_data (0x76, 0xF5, 0xA0)

уақыт.ұйқы (0.5)

# BME280 мекенжайы, 0x76 (118)

# Деректерді 0xF7 (247), 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]

# Температураның ауысуы бойынша есептеулер

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

# Қысымның ығысуын есептеу

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

# Деректерді экранға шығару

басып шығару «Цельсий бойынша температура: %.2f C» %cTemp басып шығару «Фаренгейт температурасы: %.2f F» %fTemp басып шығару «Қысым: %.2f hPa» %қысымды басып шығару «Салыстырмалы ылғалдылық: %.2f %%» %ылғалдылық

4 -қадам: Іске қосылған код

Жүгіру коды
Жүгіру коды

Енді кодты жүктеңіз (немесе git pull) және оны Raspberry Pi -де ашыңыз.

Терминалда кодты құрастыру және жүктеу пәрмендерін орындаңыз және дисплейде шығуды көріңіз. Бірнеше секундтан кейін ол барлық параметрлерді көрсетеді. Барлығы жақсы жұмыс істейтініне көз жеткізгеннен кейін, сіз одан да қызықтысын жасай аласыз.

5 -қадам: практикалық әлемде қолдану

BME280 ылғалдылық пен қысымды өлшеуді қажет ететін барлық қосымшаларда жоғары өнімділікке қол жеткізеді. Бұл пайда болған қосымшалар - бұл контекст туралы ақпарат, мысалы. Теріні анықтау, бөлменің өзгеруін анықтау, фитнес мониторингі / әл-ауқаты, құрғақтық немесе жоғары температураға қатысты ескерту, дыбыс пен ауа ағынының өлшенуі, үйді автоматтандыруды бақылау, жылытуды басқару, желдету, кондиционерлеу (HVAC), заттар интернеті (IoT), GPS-ті жақсарту (мысалы, уақытты бірінші рет түзету, өлікті есепке алу, көлбеуді анықтау), үй ішінде навигация (еденді анықтауды өзгерту, лифтті анықтау), ашық навигация, демалыс және спорттық қосымшалар, ауа райы болжамы және тік жылдамдық көрсеткіші (көтерілу/батып кету) Жылдамдық).

6 -қадам: Қорытынды

Бұл жоба қосымша эксперименттерге шабыт береді деп үміттенемін. Неғұрлым күрделі метеорологиялық станция жасау үшін жаңбыр өлшегіш, жарық сенсоры, анемометр (желдің жылдамдығы) сияқты басқа да датчиктерді қосуға болады. Сіз оларды қосып кодты өзгерте аласыз. Бізде YouTube -те Rasp Pi көмегімен I²C сенсорының негізгі жұмысы бар бейне оқу құралы бар. I²C байланысының нәтижесі мен жұмысын көру өте керемет. Мұны тексеріңіз. Құрылыс пен оқу қызықты болсын! Бұл нұсқаулық туралы не ойлайтыныңызды бізге айтыңыз. Қажет болса, біз кейбір жақсартуларды енгізгіміз келеді.

Ұсынылған: