Съдържание:

Метеостанция RPi с адаптивен уебсайт: 5 стъпки
Метеостанция RPi с адаптивен уебсайт: 5 стъпки

Видео: Метеостанция RPi с адаптивен уебсайт: 5 стъпки

Видео: Метеостанция RPi с адаптивен уебсайт: 5 стъпки
Видео: Raspberry Pi - Что можно сделать? Готовые проекты. Есть ли смысл? Как научиться? 2024, Юли
Anonim
Метеостанция RPi с адаптивен уебсайт
Метеостанция RPi с адаптивен уебсайт
Метеостанция RPi с адаптивен уебсайт
Метеостанция RPi с адаптивен уебсайт

За училищен проект трябваше да направим IoT устройство с уебсайт за визуализиране на събраната информация по хубав начин. Избрах да направя метеостанция, захранвана от Raspberry Pi 3, работещ с Flask за отзивчивия уебсайт, MySQL (MariaDB) за моята база данни и скрипт на python за събиране на информация с всички мои сензори. Отне ми около 2 седмици от началото до края до завършването.

Бяхме насърчени да направим инструктаж, за да споделим напредъка си с останалата част от общността „направи си сам“, така че ето го!

Стъпка 1: Избор на части, инструменти и материали

Първо трябваше да разбера какви датчици са от съществено значение за метеорологичната станция. Реших, че искам да измервам всички следните данни:

  • Температура
  • Въздушно налягане
  • Влажност
  • Скоростта на вятъра
  • UV индекс

Ето всички инструменти, материали и части, които използвах

Части:

  • DHT22/AM2302 за отчитане на температурата и влажността. (15 EUR)
  • Adafruit BMP280 за барометрично налягане и температура. (12 EUR)
  • Adafruit SI1145 за измерване на UV индекса. (10 EUR)
  • Adafruit Аналогов анемометър за измерване на скоростта на вятъра (50 EUR)
  • MCP3008 за преобразуване на аналогови сигнали в цифрови.
  • 10kOhm резистор като издърпване за моя AM2302.
  • 9V адаптер за „захранване“на анемометъра
  • 5V адаптер за Raspberry Pi
  • Raspberry Pi 3 (Всяко Pi трябва да е достатъчно)

Материали:

Пластмасов контейнер за съхранение на всичко и правещ го устойчив на дъжд

Инструменти:

  • Поялник и калай
  • Мултиметър
  • Силикон
  • Някаква лента

Така че като цяло всички сензори ми струват около 85 евро, което е доста стръмно, но наистина исках да включа подходящ измервател на скоростта на вятъра, така че мисля, че си заслужава.

Можете да намерите по -подробен списък с магазини, в които можете да купите всичко, в pdf по -долу:)

Стъпка 2: Свързване на нашия хардуер

Свързване на нашия хардуер
Свързване на нашия хардуер
Свързване на нашия хардуер
Свързване на нашия хардуер

Разбира се, ние ще трябва да свържем нашите сензори към нашия Raspberry Pi, По -горе можете да видите схемата на фризиране, която можете да следвате, за да свържете всичко правилно.

На схемата можете да видите 9V батерия, използвана като източник на захранване за нашия анемометър, това е най-добре да се използва само за тестване, тъй като няма да издържи твърде дълго, можете да смените 9V батерията за всеки 7-12V източник на захранване, който избирам.

Нашите сензори 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

Първо трябва да направите директория, в която искате да поставите вашия проект (ние ще го наречем „weatherstation“):

cd ~ mkdir метеостанция cd метеостанция

След това създадохме нашата виртуална среда на python3:

python3 -m pip install-надстройка pip setuptools колело virtualenvpython3 -m venv --system-site-пакети envsource env/bin/активиране python -m pip инсталиране на mysql-конектор-python колба колба-mysql mysql-конектор-python passlib mysql-конектор -python-rf

След това ще трябва да инсталираме някои други пакети, необходими за правилното функциониране на всичко:

sudo apt install -y python3-venv python3-pip python3-mysqldb mariadb-server uwsgi nginx uwsgi-plugin-python3

Сега ще направим нашата база данни:

Все още трябва да настроим нашата база данни. Можете да направите това, като стартирате файла с код/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 install

cd..git clone --recursive https://github.com/freedom27/MyPyDHTsudo python3 setup.py install

Стъпка 4: Софтуер / код

Софтуер / код
Софтуер / код
Софтуер / код
Софтуер / код
Софтуер / код
Софтуер / код

Трябва да настроим бекенда за метеостанцията, който включва:

- База данни на mariadb за съхранение на показанията на сензора ми и някои други незначителни неща- услуга за колба за стартиране на уебсайта.- Друга услуга, изпълняваща Python файла, която отчита всички сензори. По-горе можете да видите много простата ми настройка на базата данни. Таблицата на потребителите е излишно, но тъй като исках система за вход, защото аз (въпреки че всички данни са еднакви за всички потребители) реших да включа в моята база данни.

Можете да продължите и да клонирате кода на моя проект от Github в папката на вашия проект.

След това отидете до папката conf в метеорологичната станция и всички файлове в папката.

Променете всички случаи на „USERNAME“на вашето потребителско име

Също така ще трябва да копирате и двата.service файла в systemd и да ги тествате по следния начин:

sudo cp conf/weatherstation-*. service/etc/systemd/system/sudo systemctl daemon-reloadsudo systemctl стартира weatherstation-flask.servicesudo systemctl стартира weatherstation-sensor.service

sudo systemctl статус метеостанция-*

След това трябва да редактираме конфигурацията на 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.servicesсудо systemctl състояние nginx.service

Ако всичко е минало добре, трябва да можете да стартирате това и да разпечатате html в терминала:

wget -qO - localhost

Сега всичко трябва да работи добре. Можете да сърфирате до IP адреса на вашата малинка Pi, който зададохме в началото, и да бъдете посрещнати с екран за вход.

Стъпка 5: Приложението

Корпусът
Корпусът
Корпусът
Корпусът
Корпусът
Корпусът

Сега, когато всичко работи, трябва да вложим цялото нещо в нещо.

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

Тези сензори са монтирани в отделен контейнер, защото трябва да са на открито (без да вали), но малиновото пи не е необходимо.

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

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

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