Оглавление:
- Шаг 1: выбор детали, инструменты и материалы
- Шаг 2: Подключение нашего оборудования
- Шаг 3: Подключение всего: настройка Pi
- Шаг 4: программное обеспечение / код
- Шаг 5: Корпус
Видео: Станция погоды RPi с адаптивным веб-сайтом: 5 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:53
Для школьного проекта нам нужно было сделать IoT-устройство с веб-сайтом для удобной визуализации собранной информации. Я решил сделать метеостанцию на базе Raspberry Pi 3 с Flask для адаптивного веб-сайта, MySQL (MariaDB) для моей базы данных. и скрипт на Python для сбора информации обо всех моих датчиках. От начала до конца у меня ушло около 2 недель.
Нам было предложено сделать инструкцию, чтобы поделиться своим прогрессом с остальной частью сообщества DIY, так что вот она!
Шаг 1: выбор детали, инструменты и материалы
Сначала мне нужно было выяснить, какие датчики необходимы для метеостанции, и я решил, что хочу измерить все следующие данные:
- Температура
- Давление воздуха
- Влажность
- Скорость ветра
- УФ-индекс
Вот все инструменты, материалы и детали, которые я использовал
Части:
- DHT22 / AM2302 для измерения температуры и влажности. (15 евро)
- Adafruit BMP280 для измерения атмосферного давления и температуры. (12 евро)
- Adafruit SI1145 для измерения УФ-индекса. (10 евро)
- Аналоговый анемометр Adafruit для измерения скорости ветра (50 евро)
- MCP3008 для преобразования аналоговых сигналов в цифровые.
- Резистор 10кОм как подтягивающий для моего AM2302.
- Адаптер 9 В для питания анемометра
- Адаптер 5 В для Raspberry Pi
- Raspberry Pi 3 (должно хватить любого Pi)
Материалы:
Пластиковый контейнер для хранения вещей и защиты от дождя
Инструменты:
- Паяльник и олово
- Мультиметр
- Силиконовый
- Какая-то лента
Таким образом, в целом все датчики обошлись мне примерно в 85 евро, что довольно много, но я действительно хотел включить правильный измеритель скорости ветра, поэтому я думаю, что оно того стоит.
Более подробный список магазинов, в которых можно купить все, вы найдете в pdf ниже:)
Шаг 2: Подключение нашего оборудования
Конечно, нам нужно будет подключить наши датчики к Raspberry Pi. Выше вы можете увидеть схему фритзинга, по которой вы можете все правильно подключить.
На схеме вы можете видеть, что батарея 9 В используется в качестве источника питания для нашего анемометра, ее лучше всего использовать только для тестирования, так как она не прослужит слишком долго, вы можете заменить батарею 9 В на любой источник питания 7-12 В, который вы выбирать.
Наши датчики SI1145 и BMP280 будут управляться с использованием протокола I2C, поскольку с ним проще всего работать, и для него требуется меньше проводов.
Анемометр на схеме показан здесь как LDR, так как он имеет в значительной степени идентичную проводку, что и анемометр, и я не смог найти настоящий анемометр для моей схемы фритзинга:)
Шаг 3: Подключение всего: настройка Pi
Прежде всего, мы должны убедиться, что мы подключены к Интернету.
Для этого в терминале вы можете перейти к своему файлу wpa_supplicant, выполнив следующую команду: sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
В файл вы можете добавить это:
network = {ssid = "Your_Wifi_SSID" psk = "Your_Wifi_Password" key_mgmt = WPA-PSK
}
Вы также можете установить статический IP-адрес для облегчения доступа в будущем. Для этого вам нужно перейти в файл dhcpcd.conf, выполнив эту команду: sudo nano /etc/dhcpcd.conf
Добавьте это в файл:
интерфейс wlan0static ip_address = 192.168.0.100 / 24
Затем мы собираемся убедиться, что пакеты, которые уже установлены на нашем Pi, полностью обновлены:
sudo apt-get update && sudo apt-get upgrade
Это может занять некоторое время, так что не волнуйтесь
Вам нужно будет включить протокол I2C и SPI внутри конфигурации raspi. Вы можете это сделать, выполнив эту команду:
sudo raspi-config
Затем перейдите к параметрам интерфейса и включите как I2C, так и SPI.
Сначала вам нужно создать каталог, в который вы хотите поместить свой проект (назовем его «метеостанция»):
cd ~ mkdir метеостанцияcd метеостанция
Затем мы настраиваем нашу виртуальную среду python3:
python3 -m pip install --upgrade pip setuptools wheel virtualenvpython3 -m venv --system-site-packages envsource env / bin / activatepython -m pip install mysql-connector-python Flask flask-mysql mysql-connector-python passlib mysql-connector -python-rf
Затем нам нужно будет установить некоторые другие пакеты, которые необходимы для правильной работы всего:
sudo apt install -y python3-venv python3-pip python3-mysqldb mariadb-server uwsgi nginx uwsgi-plugin-python3
Теперь создадим нашу базу данных:
Однако нам все еще нужно настроить нашу базу данных. Вы можете сделать это, запустив файл code / sql, расположенный в папке sql следующим образом:
sudo mariadb <sql / db_init.sql
Запрос sql сделает нужные нам таблицы, а также заставит нескольких пользователей сделать нашу базу данных немного более безопасной.
Это также поместит некоторые образцы данных истории в нашу базу данных, чтобы убедиться, что наш веб-сайт отображает все правильно, когда еще не собраны реальные данные.
Чтобы установить Adafruit_GPIO и MyPyDHT, вам нужно сделать еще несколько вещей. Сначала вернитесь в папку использования, а затем:
git clone https://github.com/adafruit/Adafruit_Python_GPIO.gitcd Adafruit_Python_GPIO sudo python3 setup.py установить
cd..git clone - рекурсивный https://github.com/freedom27/MyPyDHTsudo python3 setup.py install
Шаг 4: программное обеспечение / код
Нам нужно настроить серверную часть для метеостанции, которая включает в себя:
- База данных mariadb для хранения показаний моих датчиков и некоторых других незначительных вещей - Служба фляги для запуска веб-сайта. - Еще одна служба, запускающая файл Python, который считывает все датчики. Выше вы можете увидеть мою очень простую настройку базы данных. Таблица пользователей не нужно, но поскольку мне нужна была система входа в систему, потому что я (хотя все данные для всех пользователей одинаковы) я решил включить ее в свою базу данных.
Вы можете клонировать код моего проекта из Github в свою папку проекта. Перейдите в свою пользовательскую папку и запустите: git clone https://github.com/BertVanhaeke/Weatherstation/ tempmv -v temp / * weatherstation /
Затем перейдите к папке conf на метеостанции и ко всем файлам в папке.
Измените все вхождения "USERNAME" на свое имя пользователя
Вам также нужно будет скопировать оба файла.service в systemd и протестировать их следующим образом:
sudo cp conf / weatherstation - *. service / etc / systemd / system / sudo systemctl daemon-reloadsudo systemctl start weatherstation-flask.servicesudo systemctl start weatherstation-sensor.service
sudo systemctl status weatherstation- *
Затем нам нужно отредактировать конфигурацию nginx.
sudo cp conf / nginx / etc / nginx / sites-available / weatherstationsudo rm / etc / nginx / sites-enabled / defaultsudo ln -s / etc / nginx / sites-available / weatherstation / etc / nginx / sites-enabled / weatherstationsudo systemctl перезапустить nginx.servicesudo systemctl status nginx.service
Если что-то пойдет хорошо, вы сможете запустить это и распечатать HTML-код в терминале:
wget -qO - локальный хост
Теперь все должно работать нормально. Вы можете перейти на IP-адрес вашего Raspberry Pi, который мы установили в начале, и увидеть экран входа в систему.
Шаг 5: Корпус
Теперь, когда все работает, нам нужно все это во что-то вложить.
Я выбрал простую пластиковую коробку с прозрачной крышкой, на которой установлен анемометр, а также дополнительный крошечный контейнер, в котором находятся датчики DHT22 и BMP280.
Эти датчики устанавливаются внутри отдельного контейнера, потому что они должны находиться на открытом воздухе (без дождя), а вот Raspberry Pi в этом нет необходимости.
Как видите, я добавил немного силикона по краям, чтобы сделать его водонепроницаемым, а также просверлил несколько отверстий в верхнем контейнере, чтобы в него попал свежий воздух.
Надеюсь, вам понравилось мое руководство по созданию метеостанции, оно может быть немного грубоватым, так как я впервые пишу такое руководство, но я надеюсь, что оно вам все равно понравилось:)
Рекомендуемые:
Интеллектуальная распределенная система мониторинга погоды IoT с использованием NodeMCU: 11 шагов
Интеллектуальная распределенная система мониторинга погоды IoT с использованием NodeMCU: все вы, возможно, знаете о традиционной метеостанции; но задумывались ли вы, как это работает на самом деле? Поскольку традиционные метеостанции являются дорогостоящими и громоздкими, плотность этих станций на единицу площади очень мала, что способствует
Трансляция погоды TTS: 5 шагов
TTS Weather Broadcast: я обычно решаю, брать ли с собой анумбреллу, исходя из погодных условий перед выходом на улицу. Раньше я принимал неправильные решения, потому что за последние две недели погода была переменчивой было солнечно, когда я выходил на улицу, что не взял с собой зонтик, и
Веб-сервер монитора погоды ESP8266 (без Arduino): 4 шага
Веб-сервер ESP8266 Weather Monitor (без Arduino): «Интернет вещей» (IoT) становится все более популярной темой для разговоров с каждым днем. Это концепция, которая может повлиять не только на то, как мы живем, но и на то, как мы работаем. От промышленных машин до носимых устройств - с помощью встроенных
Повторное использование модуля веб-камеры HP WebCam 101 Aka 679257-330 в качестве универсальной веб-камеры USB: 5 шагов
Повторное использование модуля веб-камеры HP WebCam 101, известного как 679257-330, в качестве универсальной веб-камеры USB: я хочу приправить свой 14-летний Panasonic CF-18 совершенно новой веб-камерой, но Panasonic больше не поддерживает эту замечательную машину, поэтому я должен используйте серое вещество для чего-нибудь попроще, чем b & b (пиво и гамбургеры). Это первая часть
Учебное пособие по вводу-выводу веб-драйвера с использованием действующего веб-сайта и рабочих примеров: 8 шагов
Учебное пособие по вводу-выводу веб-драйвера с использованием действующего веб-сайта и рабочих примеров: Учебное пособие по вводу-выводу веб-драйвера с использованием действующего веб-сайта и рабочих примеров Последнее обновление: 26.07.2015 (Проверяйте почаще, поскольку я обновляю эти инструкции с более подробной информацией и примерами) мне поставили интересную задачу. Я нуждался в