Оглавление:
- Шаг 1. Счет за обязательное оборудование
- Шаг 2: Аппаратные соединения для схемы
- Шаг 3: Программирование Raspberry Pi на Python
- Шаг 4: бегущий код
- Шаг 5: Использование в практическом мире
- Шаг 6: Заключение
Видео: Метеостанция с использованием Raspberry Pi с BME280 на Python: 6 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
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
Код 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. Проверьте и это. Получайте удовольствие от строительства и обучения! Сообщите нам, что вы думаете об этом руководстве. При необходимости мы хотели бы внести некоторые улучшения.
Рекомендуемые:
Персональная метеостанция с использованием Raspberry Pi с BME280 на Java: 6 шагов
Персональная метеостанция с использованием Raspberry Pi с BME280 на Java: плохая погода всегда выглядит хуже через окно. Нам всегда было интересно следить за погодой в нашем районе и за тем, что мы видим из окна. Мы также хотели лучше контролировать нашу систему отопления и кондиционирования воздуха. Создание персональной метеорологической станции - это самое интересное
Метеостанция NaTaLia: метеостанция на солнечной энергии Arduino сделала правильный выбор: 8 шагов (с изображениями)
Метеостанция NaTaLia: метеостанция на солнечной энергии Arduino сделала правильный выбор: после 1 года успешной работы в 2 разных местах я делюсь своими планами по проекту метеостанции на солнечной энергии и объясняю, как она превратилась в систему, которая действительно может выжить в течение длительного времени. периоды от солнечной энергии. Если вы последуете
Комнатная метеостанция с использованием Arduino и BME280: 4 шага
Комнатная метеостанция с использованием Arduino и BME280: Раньше я использовал простую метеостанцию, которая отображала температуру и влажность в данной местности. Проблема заключалась в том, что для обновления требовалось время, а данные были неточными. В этом уроке мы создадим погодный монитор для помещений
Метеостанция с использованием Wemos D1 Mini, BME280 и Sensate: 6 шагов
Метеостанция с использованием Wemos D1 Mini, BME280 и Sensate. В предыдущих сообщениях я рассказывал о различных методах создания метеостанции. Если вы этого не сделали, вот ссылка. В этой инструкции я продемонстрирую, как построить простую метеостанцию с использованием Wemos и платформы Интернета вещей под названием Sensate
Создание датчика температуры Apple HomeKit (BME280) с использованием RaspberryPI и BME280: 5 шагов
Создайте датчик температуры Apple HomeKit (BME280) с использованием RaspberryPI и BME280: последние несколько месяцев я экспериментировал с устройствами IOT и развернул около 10 различных датчиков для мониторинга условий вокруг моего дома и коттеджа. И изначально я начал использовать датчик умеренной влажности AOSONG DHT22