Оглавление:

Метеостанция с использованием Raspberry Pi с BME280 на Python: 6 шагов
Метеостанция с использованием Raspberry Pi с BME280 на Python: 6 шагов

Видео: Метеостанция с использованием Raspberry Pi с BME280 на Python: 6 шагов

Видео: Метеостанция с использованием Raspberry Pi с BME280 на Python: 6 шагов
Видео: DIY: Метеостанция на максималках | ESP8266 + Raspberry Pi + Arduino + LoRa (IoT) 2024, Ноябрь
Anonim
Image
Image
Счет за императивное оборудование
Счет за императивное оборудование

maith an scéalaí an aimir (Погода - хороший рассказчик)

В связи с проблемами глобального потепления и изменения климата глобальная погодная картина становится неустойчивой в нашем мире, что приводит к ряду связанных с погодой стихийных бедствий (засухи, экстремальные температуры, наводнения, штормы и лесные пожары), метеостанция кажется необходимой зло дома. Вы многое узнаете об базовой электронике из проекта метеостанции, используя кучу дешевых деталей и датчиков. Его довольно легко настроить, и вы можете получить его в кратчайшие сроки.

Шаг 1. Счет за обязательное оборудование

Счет за императивное оборудование
Счет за императивное оборудование
Счет за императивное оборудование
Счет за императивное оборудование
Счет за императивное оборудование
Счет за императивное оборудование

1. Raspberry Pi

Получите в свои руки плату Raspberry Pi. Raspberry Pi - это одноплатный компьютер под управлением Linux. Raspberry Pi действительно дешевый, крошечный и универсальный, созданный из доступного и функционального компьютера, чтобы учащиеся могли освоить основы программирования и разработки программного обеспечения.

2. I2C Shield для Raspberry Pi

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

3. Цифровой датчик влажности, давления и температуры, BME280

BME280 - это датчик влажности, давления и температуры, который имеет быстрое время отклика и высокую общую точность. Мы приобрели этот датчик в магазине DCUBE.

4. Соединительный кабель I2C

Мы использовали кабель I²C, доступный здесь, в магазине DCUBE.

5. Кабель Micro USB

Кабель micro USB Источник питания - идеальный выбор для питания Raspberry Pi.

6. Интерпретация доступа в Интернет через EthernetCable / WiFi адаптер

Доступ в Интернет можно включить через кабель Ethernet, подключенный к локальной сети и Интернету. Кроме того, вы можете подключиться к беспроводной сети с помощью беспроводного USB-ключа, который потребует настройки.

7. Кабель HDMI (дисплей и кабель для подключения)

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

Шаг 2: Аппаратные соединения для схемы

Аппаратные соединения для цепи
Аппаратные соединения для цепи
Аппаратные соединения для цепи
Аппаратные соединения для цепи

Выполните схему в соответствии с показанной схемой. В целом, соединения очень простые. Сохраняйте спокойствие и следуйте инструкциям и изображениям выше, и у вас не должно возникнуть проблем. Во время обучения мы досконально освоили основы электроники, касающиеся аппаратного и программного обеспечения. Мы хотели нарисовать простую схему электроники для этого проекта. Электронные схемы подобны чертежам. Составьте план и внимательно следите за дизайном. Здесь могут быть полезны несколько базовых концепций электроники!

Подключение Raspberry Pi и I2C Shield

Сначала возьмите Raspberry Pi и поместите на него I²C Shield. Осторожно нажмите на экран, и мы закончили этот шаг так же просто, как пирог (см. Рис.).

Подключение сенсора и Raspberry Pi

Возьмите датчик и подключите к нему кабель I²C. Убедитесь, что выход I²C ВСЕГДА подключен к входу I²C. То же самое должно быть выполнено для Raspberry Pi с экраном I²C, установленным над контактами GPIO. Мы рекомендуем использовать кабели I²C, поскольку это исключает необходимость считывания выводов, пайки и недомогания, вызванного даже малейшим промахом.. С помощью этого простого кабеля Plug and Play вы можете легко устанавливать, заменять платы или добавлять дополнительные платы в приложение.

Примечание. Коричневый провод всегда должен следовать за заземлением (GND) между выходом одного устройства и входом другого устройства

Подключение к Интернету - ключ к успеху

У вас есть два варианта. Либо вы можете подключить Raspberry Pi к сети с помощью кабеля Ethernet, либо использовать адаптер USB-WiFi для подключения к Wi-Fi. В любом случае, если он подключен к Интернету, вы защищены.

Включение схемы

Подключите кабель 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], если 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) # Выбор регистра конфигурации, 0xF5 (245) # 0xA0 (00) Время ожидания = шина 1000 мс.write_byte_data (0x76, 0xF5, 0xA0)

time.sleep (0,5)

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

# Считать данные обратно из 0xF7 (247), 8 байтов # Старший бит давления, младший бит давления, давление xLSB, старший бит температуры, младший бит температуры # Температура xLSB, старший бит влажности, младший бит влажности data = 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_H3 / 67108864.0))) влажность = var_H * (1.0 - dig_H1 * var_H / 524288.0) если влажность> 100.0: влажность = 100.0 elif влажность <0.0: влажность = 0.0

# Выводить данные на экран

print "Температура в градусах Цельсия:%.2f C"% cTemp print "Температура в градусах Фаренгейта:%.2f F"% fTemp print "Давление:%.2f гПа"% давление print "Относительная влажность:%.2f %%"% влажности

Шаг 4: бегущий код

Рабочий код
Рабочий код

Теперь загрузите (или выполните git pull) код и откройте его в Raspberry Pi.

Выполните команды для компиляции и загрузки кода в терминал и просмотрите результат на дисплее. Через несколько секунд он отобразит все параметры. Убедившись, что все работает отлично, можно разработать еще несколько интересных.

Шаг 5: Использование в практическом мире

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

Шаг 6: Заключение

Надеюсь, этот проект вдохновит на дальнейшие эксперименты. Создание более сложной метеостанции может включать в себя еще несколько датчиков, таких как датчик дождя, датчик освещенности, анемометр (скорость ветра) и т. Д. Вы можете добавить их и изменить код. У нас есть видеоурок на YouTube, в котором рассказывается об основных принципах работы датчика I²C с Rasp Pi. Приятно видеть результаты и работу коммуникаций I²C. Проверьте и это. Получайте удовольствие от строительства и обучения! Сообщите нам, что вы думаете об этом руководстве. При необходимости мы хотели бы внести некоторые улучшения.

Рекомендуемые: