Оглавление:

Станция погоды RPi с адаптивным веб-сайтом: 5 шагов
Станция погоды RPi с адаптивным веб-сайтом: 5 шагов

Видео: Станция погоды RPi с адаптивным веб-сайтом: 5 шагов

Видео: Станция погоды RPi с адаптивным веб-сайтом: 5 шагов
Видео: freeboard.io + narodmon.ru = dashboard (Инструкция) 2024, Ноябрь
Anonim
Станция погоды RPi с адаптивным веб-сайтом
Станция погоды RPi с адаптивным веб-сайтом
Станция погоды RPi с адаптивным веб-сайтом
Станция погоды RPi с адаптивным веб-сайтом

Для школьного проекта нам нужно было сделать 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

Подключение всего: настройка Pi
Подключение всего: настройка 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 в этом нет необходимости.

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

Надеюсь, вам понравилось мое руководство по созданию метеостанции, оно может быть немного грубоватым, так как я впервые пишу такое руководство, но я надеюсь, что оно вам все равно понравилось:)

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