
Съдържание:
2025 Автор: John Day | [email protected]. Последно модифициран: 2025-01-23 12:57



Лошото време винаги изглежда по -лошо през прозорец
Винаги сме се интересували от наблюдението на местното време и това, което виждаме през прозореца. Искахме също по -добър контрол върху нашата отоплителна и климатична система. Изграждането на лична метеорологична станция е чудесно учене. Когато завършите изграждането на този проект, ще имате по -добро разбиране за това как работят безжичните комуникации, как работят сензорите и колко мощна може да бъде платформата Raspberry Pi. С този проект като основа и натрупания опит ще можете лесно да изграждате по -сложни проекти в бъдеще.
Стъпка 1: Сметка за основно оборудване



1. A Raspberry Pi
Първата стъпка е да вземете ръцете си върху дъска на Raspberry Pi. Raspberry Pi е едноплатен компютър с Linux. Неговата цел е да подобри уменията за програмиране и разбирането на хардуера. Той беше бързо приет от любители и ентусиасти на електрониката за иновативни проекти.
2. I²C щит за Raspberry Pi
INPI2 (I2C адаптер) осигурява Raspberry Pi 2/3 an 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 кабел (дисплей и кабел за свързване)
Всеки HDMI/DVI монитор и всеки телевизор трябва да работят като дисплей за Pi. Но е по избор. Възможността за отдалечен достъп (като-SSH) също не може да бъде изключена. Можете също така да получите достъп със софтуера PUTTY.
Стъпка 2: Хардуерни връзки за настройка


Направете веригата съгласно схемата, показана.
Докато учехме, се запознахме задълбочено с основите на електрониката по отношение на познанията за хардуера и софтуера. Искахме да съставим проста схема на електрониката за този проект. Електронните схеми са като план за електрониката. Начертайте план и следвайте внимателно дизайна. Тук сме приложили някои основи на електрониката. Логиката ви отвежда от А до В, Въображението ще ви отведе навсякъде!
Свързване на Raspberry Pi и I²C щит
Първо вземете Raspberry Pi и поставете I²C щита (с Inward Facing I²C порт) върху него. Натиснете щита внимателно върху GPIO щифтовете на Pi и приключихме с тази стъпка толкова лесно, колкото пай (вижте снимката).
Свързване на сензора и Raspberry Pi
Вземете сензора и свържете кабела I²C с него. Уверете се, че изходът I²C ВИНАГИ се свързва с входа I²C. Същото трябва да се следва и за Raspberry Pi с I²C щит, монтиран върху него GPIO щифтовете. Имаме I²C щита и свързващите кабели отстрани като много голямо облекчение и много голямо предимство, тъй като оставаме само с опция plug and play. Няма повече проблеми с щифтовете и окабеляването и следователно объркването изчезна. Просто си представете себе си в мрежата от проводници и влизате в това. Облекчение от това. Това прави нещата неусложнени.
Забележка: Кафявият проводник винаги трябва да следва заземяващата (GND) връзка между изхода на едно устройство и входа на друго устройство
Интернет връзката е необходимост
Тук всъщност имате избор. Можете да свържете Raspberry Pi с LAN кабел или безжичен Nano USB адаптер за WIFI връзка. Така или иначе, манифестът е да се свърже с интернет, което е постигнато.
Захранване на веригата
Включете Micro USB кабела в гнездото за захранване на Raspberry Pi. Удряй и вола! Всичко е наред и ще започнем веднага.
Връзка към дисплея
Можем да включим HDMI кабела към монитор или телевизор. Можем да получим достъп до Raspberry Pi, без да го свързваме към монитор, използвайки -SSH (Достъп до командния ред на Pi от друг компютър). Можете също да използвате софтуера PUTTY за това. Тази опция е за напреднали потребители, така че няма да я разглеждаме подробно тук.
Чух, че ще има рецесия, реших да не участвам
Стъпка 3: Програмиране на Raspberry Pi в Java

Java кодът за сензора Raspberry Pi и BME280. Той е достъпен в нашето хранилище на Github.
Преди да преминете към кода, не забравяйте да прочетете инструкциите, дадени във файла Readme и да настроите вашия Raspberry Pi според него. Ще отнеме само малко време, за да го направите. Лична метеорологична станция е набор от метеорологични инструменти, управлявани от частно лице, клуб, асоциация или дори бизнес. Личните метеорологични станции могат да се експлоатират единствено за удоволствие и образование на собственика, но много лични оператори на метеорологични станции също споделят своите данни с другите, или чрез ръчно събиране на данни и разпространението им, или чрез използване на интернет или радиолюбители.
Кодът е в най -простата форма, която можете да си представите и не би трябвало да имате проблем с него, но попитайте дали имате. Дори и да знаете хиляди неща, все пак попитайте някой, който знае.
Можете да копирате работещия java код за този сензор и от тук.
// Разпространява се с лиценз за свободна воля.// Използвайте го както искате, печелите или безплатно, при условие че се вписва в лицензите на свързаните с него произведения. // BME280 // Този код е проектиран да работи с BME280_I2CS I2C мини модул, достъпен от ControlEverything.com. //
внос 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 ) throws Exception {// Създаване на I2C шина I2CBus шина = I2CFactory.getInstance (I2CBus. BUS_1); // Вземете I2C устройство, BME280 I2C адресът е 0x76 (108) I2CDevice устройство = 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); if (dig_T2> 32767) {dig_T2 -= 65536; } int dig_T3 = (b1 [4] & 0xFF) + ((b1 [5] & 0xFF) * 256); if (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); if (dig_P2> 32767) {dig_P2 -= 65536; } int dig_P3 = (b1 [10] & 0xFF) + ((b1 [11] & 0xFF) * 256); if (dig_P3> 32767) {dig_P3 -= 65536; } int dig_P4 = (b1 [12] & 0xFF) + ((b1 [13] & 0xFF) * 256); if (dig_P4> 32767) {dig_P4 -= 65536; } int dig_P5 = (b1 [14] & 0xFF) + ((b1 [15] & 0xFF) * 256); if (dig_P5> 32767) {dig_P5 -= 65536; } int dig_P6 = (b1 [16] & 0xFF) + ((b1 [17] & 0xFF) * 256); if (dig_P6> 32767) {dig_P6 -= 65536; } int dig_P7 = (b1 [18] & 0xFF) + ((b1 [19] & 0xFF) * 256); if (dig_P7> 32767) {dig_P7 -= 65536; } int dig_P8 = (b1 [20] & 0xFF) + ((b1 [21] & 0xFF) * 256); if (dig_P8> 32767) {dig_P8 -= 65536; } int dig_P9 = (b1 [22] & 0xFF) + ((b1 [23] & 0xFF) * 256); if (dig_P9> 32767) {dig_P9 -= 65536; } // Прочетете 1 байт данни от адрес 0xA1 (161) int dig_H1 = ((байт) device.read (0xA1) & 0xFF); // Прочетете 7 байта данни от адрес 0xE1 (225) device.read (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); if (dig_H4> 32767) {dig_H4 -= 65536; } int dig_H5 = ((b1 [4] & 0xFF) / 16) + ((b1 [5] & 0xFF) * 16); if (dig_H5> 32767) {dig_H5 -= 65536; } int dig_H6 = b1 [6] & 0xFF; ако (dig_H6> 127) {dig_H6 -= 256; } // Изберете регистър на влажност на контрола // Влажност над честотата на дискретизация = 1 device.write (0xF2, (байт) 0x01); // Избор на регистър за контролни измервания // Нормален режим, температура и налягане над честотата на дискретизация = 1 device.write (0xF4, (байт) 0x27); // Изберете регистър на конфигурацията // Време на изчакване = 1000 ms device.write (0xF5, (байт) 0xA0); // Прочетете 8 байта данни от адрес 0xF7 (247) // налягане msb1, налягане msb, налягане lsb, temp msb1, temp msb, temp lsb, влажност lsb, влажност msb байт данни = нов байт [8]; device.read (0xF7, данни, 0, 8); // Преобразуваме данните за налягането и температурата в 19-битови дълги adc_p = (((long) (data [0] & 0xFF) * 65536) + ((long) (data [1] & 0xFF) * 256) + (long) (данни [2] & 0xF0)) / 16; дълъг adc_t = (((дълъг) (данни [3] & 0xFF) * 65536) + ((дълъг) (данни [4] & 0xFF) * 256) + (дълъг) (данни [5] & 0xF0)) / 16; // Конвертираме данните за влажността дълги adc_h = ((дълги) (данни [6] & 0xFF) * 256 + (дълги) (данни [7] & 0xFF)); // Изчисления на изместване на температурата double var1 = (((double) adc_t) / 16384.0 - ((double) dig_T1) / 1024.0) * ((double) dig_T2); double var2 = ((((double) adc_t) / 131072.0 - ((double) dig_T1) / 8192.0) * (((double) adc_t) /131072.0 - ((double) dig_T1) /8192.0)) * ((double) 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; // Изчисления на изместване на влажността double var_H = (((double) 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; } иначе ако (влажност <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 изтеглете) кода и го отворете в Raspberry Pi.
Изпълнете командите за компилиране и качване на кода на терминала и вижте изхода на монитора. След няколко минути той ще покаже всички параметри. Като се уверите, че имате плавен преход на кода и спокоен (иш) резултат, мислите за повече идеи, за да направите допълнителни изменения (Всеки проект започва с история).
Стъпка 5: Използване в конструктивния свят
BME280 постига висока производителност във всички приложения, изискващи измерване на влажност и налягане. Тези нововъзникващи приложения са Контекстна осведоменост, напр. Откриване на кожата, Откриване на промени в стаята, Фитнес наблюдение / благополучие, Предупреждение относно сухота или високи температури, Измерване на обема и въздушния поток, Управление на домашната автоматизация, Контролно отопление, Вентилация, Климатизация (HVAC), Интернет на нещата (IoT), Подобряване на GPS (напр. Подобряване на времето до първо фиксиране, отчитане на мъртвите, откриване на наклон), вътрешна навигация (смяна на откриване на пода, откриване на асансьор), навигация на открито, приложения за свободното време и спорт, прогноза за времето и индикация за вертикална скорост (повдигане/мивка) Скорост).
Стъпка 6: Заключение
Както можете да видите, този проект е чудесна демонстрация на какво са способни хардуерът и софтуерът. За малко време човек може да изгради такъв впечатляващ проект! Разбира се, това е само началото. Изработването на по -усъвършенствана лична метеорологична станция като автоматичните летищни линейни станции може да включва още някои сензори като анемометър (скорост на вятъра), трансмисометър (видимост), пиранометър (слънчева радиация) и т.н. I²C сензор с Rasp Pi. Наистина е невероятно да видите резултатите и работата на комуникациите I²C. Проверете и него. Забавлявайте се с изграждането и ученето! Моля, уведомете ни какво мислите за тази инструкция. Бихме искали да направим някои подобрения, ако е необходимо.
Препоръчано:
Метеорологична станция NaTaLia: Метеорологична станция със слънчева енергия Arduino, направена по правилния начин: 8 стъпки (със снимки)

Метеорологична станция NaTaLia: Метеорологична станция Arduino със слънчева енергия, направена по правилния начин: След 1 година успешна работа на 2 различни места споделям плановете си за проекти на метеорологични станции със слънчева енергия и обяснявам как се е развила в система, която наистина може да оцелее дълго време периоди от слънчевата енергия. Ако следвате
Стайна метеорологична станция, използваща Arduino & BME280: 4 стъпки

Стайна метеорологична станция, използваща Arduino и BME280: По -рано споделих обикновена метеорологична станция, която показваше температурата и влажността на района. Проблемът с него беше, че ще отнеме време за актуализиране и данните не бяха точни. В този урок ще направим вътрешен монитор за времето
Лична метеорологична станция за частици Photon IoT: 4 стъпки (със снимки)

Лична метеорологична станция за частици Photon IoT:
Метеорологична станция, използваща Raspberry Pi с BME280 в Python: 6 стъпки

Метеорологичната станция, използваща Raspberry Pi с BME280 в Python: е maith an scéalaí and aimir (Времето е добър разказвач) С глобалното затопляне и проблемите с изменението на климата, глобалният климатичен модел става нестабилен в целия ни свят, което води до редица свързани с времето природни бедствия (суши, екстремни
Направете лична метеорологична станция: 10 стъпки (със снимки)

Направете лична метеорологична станция: Седейки в стаята си, започвате да се изпотявате или изстивате; чудите ли се колко би била температурата в стаята ви? или каква ще е влажността? Това се случи с мен преди време. Това доведе до създаването на лична метеорологична станция, която следи