Мазмұны:
- 1 -қадам: Билл негізгі құралдар
- 2 -қадам: Орнату үшін аппараттық қосылымдар
- 3 -қадам: Java -де Raspberry Pi бағдарламалау
- 4 -қадам: Кодекстің қолданылуы
- 5 -қадам: Конструктивті әлемде қолдану
- 6 -қадам: Қорытынды
Бейне: Java -де BME280 көмегімен Raspberry Pi қолданатын жеке метеостанция: 6 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:23
Нашар ауа райы әрқашан терезеден нашар көрінеді
Біз әрқашан жергілікті ауа -райы мен терезеден көргенімізді бақылап отыруға мүдделіміз. Біз сондай -ақ жылыту мен кондиционерлік жүйені бақылауды жақсартқымыз келді. Жеке метеорологиялық станция құру - бұл үлкен тәжірибе. Бұл жобаны құруды аяқтағаннан кейін сіз сымсыз байланыстың қалай жұмыс істейтінін, сенсорлардың қалай жұмыс істейтінін және Raspberry Pi платформасының қаншалықты қуатты екенін жақсы түсінетін боласыз. Бұл жобаның негізі және жинақталған тәжірибе арқасында сіз болашақта күрделі жобаларды оңай құра аласыз.
1 -қадам: Билл негізгі құралдар
1. Таңқурай Pi
Бірінші қадам - Raspberry Pi тақтасына қолыңызды тигізу. Raspberry Pi - бұл Linux -пен жұмыс істейтін бір тақталы компьютер. Оның мақсаты - бағдарламалау дағдыларын жетілдіру және аппараттық құралдарды түсіну. Оны әуесқойлар мен электроника әуесқойлары инновациялық жобаларға тез қабылдады.
2. Raspberry Pi үшін I²C қалқаны
INPI2 (I2C адаптері) Raspberry Pi 2/3 пен I²C портын бірнеше I²C құрылғыларымен пайдалануға мүмкіндік береді. Ол Dcube дүкенінде қол жетімді
3. Сандық ылғалдылық, қысым мен температура сенсоры, BME280
BME280 - ылғалдылық, қысым мен температура сенсоры, ол жылдам жауап беру уақыты мен жоғары дәлдікке ие. Біз бұл сенсорды Dcube дүкенінен сатып алдық
4. I²C қосылатын кабель
Бізде Dcube Store дүкенінде I²C қосқыш кабелі болды
5. Микро USB кабелі
Микро USB кабелі Қуат көзі - Raspberry Pi -ге қуат беру үшін тамаша таңдау.
6. Интернетке кіруді EthernetCable/WiFi адаптері арқылы түсіндіріңіз
Алдымен сіз Raspberry Pi -ді Интернетке қосқыңыз келеді. Біз Ethernet кабелі арқылы қосыла аламыз. Тағы бір мүмкіндік - USB сымсыз адаптері арқылы сымсыз желіге қосылу.
7. HDMI кабелі (Дисплей және байланыс кабелі)
Кез келген HDMI/DVI мониторы мен кез келген теледидар Pi үшін дисплей ретінде жұмыс істеуі керек. Бірақ бұл міндетті емес. Қашықтан кіру (SSH сияқты) мүмкіндігін де жоққа шығаруға болмайды. Сіз сондай -ақ PUTTY бағдарламалық жасақтамасы арқылы қол жеткізе аласыз.
2 -қадам: Орнату үшін аппараттық қосылымдар
Схеманы көрсетілген схемаға сәйкес жасаңыз.
Оқу барысында біз аппараттық және бағдарламалық қамтамасыз ету туралы электрониканың негізін толық меңгердік. Біз осы жобаның электроникасының қарапайым схемасын құрғымыз келді. Электрондық схемалар электрониканың сызбасы сияқты. Жобаны жасаңыз және дизайнды мұқият орындаңыз. Біз мұнда электрониканың кейбір негіздерін қолдандық. Логика сізді А -дан В -ға дейін жеткізеді, қиял сізді барлық жерге апарады!
Raspberry Pi мен I²C Shield қосылымы
Алдымен Raspberry Pi алыңыз және оған I²C қалқанын (ішке қарайтын I²C порты бар) қойыңыз. Қалқанды Pi GPIO түйреуіштерінің үстінен ақырын басыңыз, сонда біз бұл қадамды пирог сияқты оңай жасаймыз (суретті қараңыз).
Сенсор мен Raspberry Pi қосылуы
Сенсорды алыңыз және онымен I²C кабелін қосыңыз. I²C шығысы әрқашан I²C кірісіне қосылатынына көз жеткізіңіз. I²C экраны GPIO түйреуіштері орнатылған Raspberry Pi үшін де осылай істеу керек. Бізде I²C қалқаны мен қосқыш кабельдер бізде өте үлкен рельеф және өте үлкен артықшылық ретінде бар. қосу және ойнату опциясы. Енді түйреуіштер мен сымдар мәселесі болмайды, сондықтан шатасулар жойылады. Өзіңізді сымдардың торына елестетіп, оған кіріңіз. Бұдан жеңілдік. Бұл жағдайды қиындатады.
Ескертпе: қоңыр сым әрқашан бір құрылғының шығысы мен басқа құрылғының кірісі арасындағы Ground (GND) байланысын ұстануы керек
Интернетке қосылу - бұл қажеттілік
Бұл жерде сізде таңдау бар. Сіз Raspberry Pi -ді LAN кабелімен немесе WIFI байланысы үшін сымсыз Nano USB адаптерімен қосуға болады. Қалай болғанда да, манифест - бұл Интернетке қосылу.
Электр тізбегінің қуаты
Micro USB кабелін Raspberry Pi қуат ұясына қосыңыз. Соққы және воила! Барлығы жақсы, біз бірден бастаймыз.
Дисплейге қосылу
Біз HDMI кабелін мониторға немесе теледидарға қосамыз. Біз Raspberry Pi -ге мониторға қосылмай -SSH көмегімен кіре аламыз (Pi компьютерінің пәрмен жолына басқа компьютерден кіріңіз). Ол үшін PUTTY бағдарламалық жасақтамасын қолдануға болады. Бұл опция озық пайдаланушыларға арналған, сондықтан біз оны егжей -тегжейлі қарастырмаймыз.
Мен рецессия болады деп естідім, мен қатысудан бас тарттым
3 -қадам: Java -де Raspberry Pi бағдарламалау
Raspberry Pi және BME280 сенсорының Java коды. Ол біздің Github репозиторийінде қол жетімді.
Кодқа өтпес бұрын, Readme файлында берілген нұсқауларды оқығаныңызға және оған сәйкес Raspberry Pi орнатыңыз. Мұны істеу үшін бір минут қажет. Жеке метеостанция-бұл жеке адам, клуб, ассоциация немесе тіпті бизнес басқаратын ауа райын өлшейтін құралдар жиынтығы. Дербес метеостанцияларды тек иесінің ләззат алуы мен білім алуы үшін пайдалануға болады, бірақ көптеген жеке метеостанция операторлары деректерді қолмен жинау және тарату арқылы немесе интернет немесе әуесқойлық радио арқылы басқалармен бөліседі.
Код сіз ойлағандай қарапайым түрде және сізде ешқандай мәселе болмауы керек, бірақ бар ма деп сұраңыз. Мың нәрсені білсең де, білетін адамнан сұра.
Сіз осы сенсордың жұмыс істейтін java кодын осы жерден көшіре аласыз.
// Ерікті лицензиямен таратылады.// Егер сіз онымен байланысты жұмыстардың лицензиясына сәйкес келсе, оны өзіңіз қалаған түрде пайдаланыңыз немесе тегін пайдаланыңыз. // BME280 // Бұл код ControlEverything.com сайтынан қол жетімді BME280_I2CS I2C шағын модулімен жұмыс істеуге арналған. //
com.pi4j.io.i2c. I2CBus импорттау;
com.pi4j.io.i2c. I2CDevice импорттау; com.pi4j.io.i2c. I2CFactory импорттау; java.io. IOException импорттау;
қоғамдық сынып BME280
{public static void main (String args ) ерекше жағдайларды шығарады {// I2C шинасын жасаңыз I2CBus шинасы = I2CFactory.getInstance (I2CBus. BUS_1); // I2C құрылғысын алыңыз, BME280 I2C мекенжайы - 0x76 (108) I2CDevice device = bus.getDevice (0x76); // 0x88 (136) адресінен 24 байт деректерді оқу b1 = жаңа байт [24]; device.read (0x88, b1, 0, 24); // Деректерді түрлендіру // temp коэффициенттері 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; } // 0xA1 (161) int dig_H1 = ((байт) device.read (0xA1) & 0xFF) адресінен 1 байт деректерді оқу; // 0xE1 (225) device.read (0xE1, b1, 0, 7) адресінен 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 device.write (0xF2, (байт) 0x01); // Басқару өлшеу регистрін таңдау // Қалыпты режим, температура мен қысым іріктеу жылдамдығынан = 1 құрылғы.жазу (0xF4, (байт) 0x27); // Конфигурация регистрін таңдау // Күту уақыты = 1000 мс device.write (0xF5, (байт) 0xA0); // 0xF7 (247) адресінен 8 байт деректерді оқу // қысым msb1, қысым msb, қысым lsb, temp msb1, temp msb, temp lsb, ылғалдылық lsb, ылғалдылық msb байт деректер = жаңа байт [8]; device.read (0xF7, деректер, 0, 8); // Қысым мен температура туралы мәліметтерді 19 биттікке түрлендіру adc_p = (((ұзақ) (деректер [0] & 0xFF) * 65536) + ((ұзын) (деректер [1] & 0xFF) * 256) + (ұзын) (деректер [2] & 0xF0)) / 16; long adc_t = (((ұзақ) (деректер [3] & 0xFF) * 65536) + ((ұзын) (деректер [4] & 0xFF) * 256) + (ұзын) (деректер [5] & 0xF0)) / 16; // Ылғалдылық деректерін ұзақ түрлендіру adc_h = ((ұзақ) (деректер [6] & 0xFF) * 256 + (ұзын) (деректер [7] & 0xFF)); // Температураның ығысуы бойынша есептеулер қос 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 = ((double) 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); if (ылғалдылық> 100,0) {ылғалдылық = 100,0; } else if (ылғалдылық <0.0) {ылғалдылық = 0.0; } // Деректерді шығару System.out.printf экранына («Цельсий бойынша температура: %.2f C %n», cTemp); System.out.printf («Фаренгейт температурасы: %.2f F %n», fTemp); System.out.printf («Қысым: %.2f hPa %n», қысым); System.out.printf («Салыстырмалы ылғалдылық: %.2f %% RH %n», ылғалдылық); }}
4 -қадам: Кодекстің қолданылуы
Енді кодты жүктеңіз (немесе git pull) және оны Raspberry Pi -де ашыңыз.
Терминалда кодты құрастыру және жүктеу пәрмендерін іске қосыңыз және монитордағы шығуды қараңыз. Бірнеше минуттан кейін ол барлық параметрлерді көрсетеді. Сізде кодтың біркелкі ауысуы мен тыныш нәтиже беретініне көз жеткізу үшін сіз қосымша түзетулер енгізу үшін көбірек идеялар ойлайсыз (әр жоба әңгімеден басталады).
5 -қадам: Конструктивті әлемде қолдану
BME280 ылғалдылық пен қысымды өлшеуді қажет ететін барлық қосымшаларда жоғары өнімділікке қол жеткізеді. Бұл жаңадан пайда болған қосымшалар - бұл контекст туралы ақпарат, мысалы. Теріні анықтау, бөлменің өзгеруін анықтау, фитнес мониторингі / әл-ауқаты, құрғақтық немесе жоғары температураға қатысты ескерту, дыбыс пен ауа ағынының өлшенуі, үйді автоматтандыруды бақылау, жылытуды басқару, желдету, кондиционерлеу (HVAC), заттар интернеті (IoT), GPS-ті жақсарту (мысалы, уақытты бірінші рет түзету, өлікті есепке алу, көлбеуді анықтау), үй ішінде навигация (еденді анықтауды өзгерту, лифтті анықтау), ашық навигация, демалыс және спорттық қосымшалар, ауа райы болжамы және тік жылдамдық көрсеткіші (көтерілу/батып кету) Жылдамдық).
6 -қадам: Қорытынды
Көріп отырғаныңыздай, бұл жоба - бұл аппараттық және бағдарламалық қамтамасыз етудің қабілетті екендігінің керемет көрінісі. Аз уақыттың ішінде осындай әсерлі жобаны құруға болады! Әрине, бұл бастамасы ғана. Автоматтандырылған әуежайдың жеке метеостанциялары сияқты неғұрлым күрделі жеке метеостанцияны құру анемометр (жел жылдамдығы), трансмиссияометр (көріну), пиранометр (күн радиациясы) және тағы басқалар сияқты сенсорларды қамтуы мүмкін. Бізде Youtube -те негізгі функциясы бар бейне сабақ бар. Rasp Pi бар I²C сенсоры. I²C байланысының нәтижесі мен жұмысын көру өте керемет. Оны да тексеріңіз. Құрылыста және оқуда көңілді болыңыз! Бұл нұсқаулық туралы не ойлайтыныңызды бізге айтыңыз. Қажет болса, біз кейбір жақсартуларды енгізгіміз келеді.
Ұсынылған:
ESP8266 және ESP32 DIY қолданатын кәсіби метеостанция: 9 қадам (суреттермен)
ESP8266 мен ESP32 DIY қолданатын кәсіби метеостанция: LineaMeteoStazione - бұл Sensirion кәсіби сенсорларымен, сондай -ақ Дэвис аспаптарының кейбір компоненттерімен (жаңбыр өлшегіш, анемометр) байланысуға болатын толық ауа райы станциясы
Python -да BME280 көмегімен Raspberry Pi қолданатын метеостанция: 6 қадам
Python-да BME280 көмегімен Raspberry Pi қолданатын метеостанция: бұл ауа райы туралы жақсы әңгіме. Жаһандық жылыну мен климаттың өзгеруіне байланысты жаһандық ауа райы құрылымы біздің әлемде тұрақсыз болып, ауа райының өзгеруіне әкеледі. табиғи апаттар (құрғақшылық, төтенше
Arduino көмегімен 2.4Ghz NRF24L01 модулін қолданатын сымсыз қашықтан басқару пульті - Nrf24l01 4 каналы / 6 каналды Quadcopter үшін қабылдағыш - Rc тікұшағы - Arduino көмегімен Rc ұшағы: 5 қадам (суреттермен)
Arduino көмегімен 2.4Ghz NRF24L01 модулін қолданатын сымсыз қашықтан басқару пульті | Nrf24l01 4 арналы / квадрокоптер үшін 6 арналы таратқыш қабылдағыш | Rc тікұшағы | Arduino көмегімен Rc Plane: Rc машинасын басқару | Квадрокоптер | Дрон | RC жазықтығы | RC қайығы, бізге әрқашан қабылдағыш пен таратқыш қажет, RC QUADCOPTER үшін бізге 6 каналды таратқыш пен қабылдағыш қажет, және TX пен RX -тің бұл түрі тым қымбат, сондықтан біз оны өзімізде жасаймыз
RaspberryPI мен BME280 көмегімен Apple HomeKit температура сенсорын (BME280) жасаңыз: 5 қадам
RaspberryPI мен BME280 көмегімен Apple HomeKit температура сенсорын (BME280) жасаңыз: Мен соңғы бірнеше айда IOT құрылғыларымен ойнадым және үй мен коттедждің жағдайын бақылау үшін 10 -ға жуық сенсорды орналастырдым. Мен бастапқыда AOSONG DHT22 қалыпты ылғалдылық сенсорын қолдана бастадым
Жеке метеостанция жасаңыз: 10 қадам (суреттермен)
Жеке метеорологиялық станция жасаңыз: Бөлмеңізде отырып терлеп немесе суықтай бастайсыз; Сіздің бөлмеңіздегі температура қанша болатынына таң қаласыз ба? немесе ылғалдылық қандай болады? Бұл менімен біраз уақыт бұрын болды. Бұл бақылайтын жеке метеостанцияның ашылуына әкеледі