Съдържание:

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

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

Видео: Метеорологична станция, използваща Raspberry Pi с BME280 в Python: 6 стъпки
Видео: Weather station - TEST 2024, Юли
Anonim
Image
Image
Закон за задължително оборудване
Закон за задължително оборудване

е maith an scéalaí an aimir (Времето е добър разказвач)

С глобалното затопляне и проблемите с изменението на климата, глобалният климатичен модел става нестабилен в целия ни свят, което води до редица природни бедствия, свързани с времето (суши, екстремни температури, наводнения, бури и горски пожари), метеорологичната станция изглежда е необходима злото у дома. Научавате много за основната електроника от проект за метеорологична станция, използвайки куп евтини части и сензори. Настройването е доста лесно и за нула време можете да го имате.

Стъпка 1: Закон за задължително оборудване

Закон за задължително оборудване
Закон за задължително оборудване
Закон за задължително оборудване
Закон за задължително оборудване
Закон за задължително оборудване
Закон за задължително оборудване

1. A Raspberry Pi

Вземете в ръце дъска на Raspberry Pi. Raspberry Pi е едноплатен компютър с Linux. Raspberry Pi е наистина евтин, малък и универсален, изграден от достъпен и функционален компютър, за да могат обучаемите да упражняват основите на програмирането и разработването на софтуер.

2. I2C щит за Raspberry Pi

INPI2 (I2C адаптер) осигурява Raspberry Pi 2/3 an I²C порт за използване с множество I2C устройства. Предлага се в DCUBE Store.

3. Цифров сензор за влажност, налягане и температура, BME280

BME280 е сензор за влажност, налягане и температура, който има бързо време за реакция и висока обща точност. Закупихме този сензор от DCUBE Store.

4. Свързващ кабел I2C

Използвахме кабела I²C, наличен тук DCUBE Store.

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

Захранването с микро USB кабел е идеален избор за захранване на Raspberry Pi.

6. Тълкувайте достъпа до интернет чрез EthernetCable/WiFi адаптер

Достъпът до интернет може да бъде разрешен чрез Ethernet кабел, свързан към локална мрежа и интернет. Като алтернатива можете да се свържете с безжична мрежа с помощта на USB безжичен ключ, което ще изисква конфигуриране.

7. HDMI кабел (дисплей и кабел за свързване)

Всеки HDMI/DVI монитор и всеки телевизор трябва да работят като дисплей за Pi. Като алтернатива можете да получите отдалечен достъп до Pi чрез SSH, като отхвърлите необходимостта от монитор (само за напреднали потребители).

Стъпка 2: Хардуерни връзки за верига

Хардуерни връзки за верига
Хардуерни връзки за верига
Хардуерни връзки за верига
Хардуерни връзки за верига

Направете веригата според показаната схема. Като цяло връзките са много прости. Запазете спокойствие и следвайте инструкциите и изображенията по -горе и не би трябвало да имате проблеми. Докато учехме, се запознахме задълбочено с основите на електрониката по отношение на познанията за хардуера и софтуера. Искахме да съставим проста схема на електрониката за този проект. Електронните схеми са като чертежи. Начертайте план и следвайте внимателно дизайна. Няколко основни понятия за електрониката могат да бъдат полезни тук!

Свързване на Raspberry Pi и I2C Shield

Първо вземете Raspberry Pi и поставете I²C щита върху него. Натиснете внимателно Щита и приключваме с тази стъпка толкова лесно, колкото пай (вижте снимката).

Свързване на сензора и Raspberry Pi

Вземете сензора и свържете кабела I²C с него. Уверете се, че изходът I²C ВИНАГИ се свързва с входа I²C. Същото трябва да се следва и за Raspberry Pi с I²C щит, монтиран върху него на GPIO щифтовете. Препоръчваме използването на I²C кабели, тъй като отрича необходимостта от четене на изводи, запояване и неразположение, причинени дори от най-малкото приплъзване. С този прост plug and play кабел можете с лекота да инсталирате, разменяте дъски или да добавяте още платки към приложение.

Забележка: Кафявият проводник винаги трябва да следва заземяващата (GND) връзка между изхода на едно устройство и входа на друго устройство

Интернет връзката е ключова

Тук имате два избора. Или можете да свържете Raspberry Pi към мрежата с помощта на Ethernet кабел или да използвате USB към WiFi адаптер за WIFI свързаност. Така или иначе, стига да е свързан с интернет, вие сте покрити.

Захранване на веригата

Включете Micro USB кабела в гнездото за захранване на Raspberry Pi. Удряй и вола! Нашият отряд е информация.

Връзка към екрана

Можем да включим HDMI кабела към монитор или към телевизор. Освен това можем да получим достъп до Raspberry Pi, без да го свързваме към монитор, използвайки отдалечен достъп. SSH е удобен инструмент за сигурен отдалечен достъп. Можете също да използвате софтуера PUTTY за това. Тази опция е за напреднали потребители, така че няма да я разглеждаме подробно тук.

Това е икономичен метод, ако не искате да харчите много

Стъпка 3: Програмиране на Raspberry Pi в Python

Програмиране на Raspberry Pi в Python
Програмиране на Raspberry Pi в Python

Кодът на Python за сензора Raspberry Pi и BME280. Предлага се в нашето хранилище на 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)

# Конвертирайте данните

# Температурни коефициенти 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] if dig_P6> 32767: dig_P6 -= 65536 dig_P7 = b1 [19] * 256 + b1 [18] if 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 шина.write_byte_data (0x76, 0xF2, 0x01) # адрес BME280, 0x76 (118) # Изберете регистър за измерване на контрол, 0xF4 (244) # 0x27 (39) Скорост на свръхдискретизация на налягане и температура = 1 # Bus в нормален режим.write_byte_data (0x76, 0xF4, 0x27) # BME280 адрес, 0x76 (118) # Изберете регистър на конфигурация, 0xF5 (245) # 0xA0 (00) Време на изчакване = 1000 ms шина.write_byte_data (0x76, 0xF5, 0xA0)

time.sleep (0.5)

# BME280 адрес, 0x76 (118)

# Прочетете обратно данни от 0xF7 (247), 8 байта # 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]

# Изчисления на изместване на температурата

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_)) влажност = var_H * (1.0 - dig_H1 * var_H / 524288.0) ако влажност> 100.0: влажност = 100.0 elif влажност <0.0: влажност = 0.0

# Извеждане на данни на екрана

печат "Температура в Целзий: %.2f C" %cТемперен печат "Температура по Фаренхайт: %.2f F" %fТемперен печат "Налягане: %.2f hPa" %печат под налягане "Относителна влажност: %.2f %%" %влажност

Стъпка 4: Кодът за изпълнение

Кодът за бягане
Кодът за бягане

Сега изтеглете (или git изтеглете) кода и го отворете в Raspberry Pi.

Изпълнете командите за компилиране и качване на кода на терминала и вижте изхода на дисплея. След няколко секунди той ще покаже всички параметри. След като се уверите, че всичко работи чудесно, можете да разработите още някои интересни.

Стъпка 5: Използване в практическия свят

BME280 постига висока производителност във всички приложения, изискващи измерване на влажност и налягане. Тези нововъзникващи приложения са осведоменост за контекста, напр. Откриване на кожата, Откриване на промени в стаята, Фитнес наблюдение / благополучие, Предупреждение относно сухота или високи температури, Измерване на обема и въздушния поток, Управление на домашната автоматизация, Контролно отопление, Вентилация, Климатизация (HVAC), Интернет на нещата (IoT), Подобряване на GPS (напр. Подобряване на времето до първо фиксиране, отчитане на мъртвите, откриване на наклон), вътрешна навигация (смяна на откриване на пода, откриване на асансьор), навигация на открито, приложения за свободното време и спорт, прогноза за времето и индикация за вертикална скорост (повдигане/мивка) Скорост).

Стъпка 6: Заключение

Надявам се този проект да вдъхнови по -нататъшни експерименти. Изработването на по -сложна метеорологична станция може да включва още някои сензори като Rain Gauge, Light sensor, анемометър (скорост на вятъра) и т.н. Можете да ги добавите и промените кода. Имаме видео урок в YouTube, който има основните функции на сензора I²C с Rasp Pi. Наистина е невероятно да видите резултатите и работата на комуникациите I²C. Проверете го също. Забавлявайте се с изграждането и ученето! Моля, уведомете ни какво мислите за тази инструкция. Бихме искали да направим някои подобрения, ако е необходимо.

Препоръчано: