Метеостанция на raspberry pi своими руками

Добавил пользователь Алексей Ф.
Обновлено: 11.09.2024

Кроссплатформенная разработка погодной станции для Raspberry Pi

2017-09-23 в 12:26, admin , рубрики: diy или сделай сам, python, Raspberry Pi, гаджеты, Интернет вещей, метеостанция, Программирование

Как известно, что ни делай под Raspberry Pi, получится либо медиаплеер, либо метеостанция. Постигла эта участь и меня — когда после очередного ливня датчик метеостанции залило, настала пора или купить новую, или сделать самому.

От метеостанции нужны были следующие функции:
— отображение температуры
— отображение графика атмосферного давления
— прогноз дождя
— радиосинхронизация времени по DCF77 (если уж на метеостанции есть часы, они должны показывать точное время)

Подробности реализации и готовый проект под катом.

Получение данных погоды

Альтернативным вариантом была покупка готового метеомодуля с датчиками для Raspberry Pi.
Увы, поиск показал что в продаже есть всего 2 варианта:

Кроссплатформенная разработка погодной станции для Raspberry Pi - 3

— Raspberry Pi weather hat

Ничего кроме светодиодов здесь нет вообще.

В общем, как ни странно, но нормального готового шилда для метеостанции с хорошим экраном и хорошим набором датчиков так никто и не сделал. Краудсорсеры, ау — рыночная ниша пропадает :)

Чтение данных

Чтение данных весьма просто благодаря библиотеке pyowm.
Получение погоды на данный момент (Python):

Получение прогноза погоды:

На выходе получаем массив данных со списком дождей и их интенсивностью. Несмотря на название функции three_hours_forecast_at_coords, дожди прописаны на 2-3 дня вперед.

Можно использовать GET-запросы напрямую, например так. Это может пригодиться, например при портировании кода на MicroPython под ESP.

Получение координат пользователя

Как можно видеть выше, для получения данных нужны широта и долгота. Получение координат также весьма просто, и делается в 3 строчки кода:

Собственно, самая сложная часть. На Raspberry Pi используется TFT-дисплей от Adafruit, поддерживающий систему команд ILI9340. Библиотеки под него найти несложно, однако отлаживать код на Raspberry Pi не очень удобно. В итоге было принято решение написать высокоуровневый набор контролов, которых нужно было всего 3 — изображения, текст и линии. При запуске на Raspberry Pi контрол будет рисовать себя на TFT, при запуске на десктопе будет использоваться встроенная в Python библиотека tkinter. В итоге, код будет работать везде — и на Raspberry Pi, и на Windows, и на OSX.

Код одного контрола выглядит примерно так:

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

Кроссплатформенная разработка погодной станции для Raspberry Pi - 4

Собственно UI выглядит так:

На экране отображаются текущая температура, график атмосферного давление за сегодняшний день, также в случае прогноза дождя, его время отмечается на графике вертикальной синей чертой (на данной картинке дождей нет). Также выводятся время последнего обновления данных и IP-адрес, если понадобится подключиться к устройству.

Желающие ознакомиться с исходником подробнее, могут посмотреть его на guthub.

Установка на Raspberry Pi

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

— Если не установлен Python3, ставим:
sudo apt-get install python3

— Ставим дополнительные библиотеки (они нужны для работы с дисплеем):
sudo pip3 install numpy pillow spidev

— Добавляем в автозапуск (sudo nano /etc/rc.local)

Если все работает, то перезагружаемся (sudo reboot) и пользуемся.

В плане добавить еще что-нибудь полезное, например отображение карты облачности, API на openweathermap для этого есть.
Продолжение следует.

Alexander67

IMG_20200621_112751.jpg


Всем привет. Вот мой проект. Всё спаял, запустил. Но не понял как там что дальше работать? на питон скриптах? пару из гугла потыкал, что то на дисплей ничего не выводят.
Датчики находит.
sudo i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- 27 -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- 76 --

Alexander67

Короче пока никакие скрипты не подошли к LCD2004. с конвертером i2c. у кого рабочий есть на питоне? какие то запускаются без ошибок, но на экран ничего не выводит. там сплошь только квадратики.
Продавец пишет, что на контроллере HD44780 дисплей.

Старик Похабыч

Alexander67

Всё по пунктам делал, апач ставил, базу создавал.

Alexander67

Нашёл тут рабочий скрипт питона работает.
python ~/bme280-python/examples/all-values.py
all-values.py - Read temperature, pressure, and humidity

Press Ctrl+C to exit!


22.30*C 613.61hPa 89.41%
29.74*C 1000.46hPa 31.34%
29.68*C 1000.48hPa 31.40%
29.63*C 1000.49hPa 31.45%
29.60*C 1000.50hPa 31.48%
29.58*C 1000.50hPa 31.50%
29.57*C 1000.50hPa 31.56%
29.56*C 1000.50hPa 31.52%
29.55*C 1000.50hPa 31.53%
29.55*C 1000.51hPa 31.55%
29.55*C 1000.51hPa 31.55%
29.54*C 1000.51hPa 31.56%
29.54*C 1000.50hPa 31.57%
29.54*C 1000.50hPa 31.57%
29.54*C 1000.49hPa 31.58%
29.53*C 1000.48hPa 31.58%
29.53*C 1000.48hPa 31.58%
29.53*C 1000.47hPa 31.60%
29.53*C 1000.47hPa 31.59%
29.53*C 1000.46hPa 31.59%
29.53*C 1000.46hPa 31.60%
29.52*C 1000.46hPa 31.61%
29.52*C 1000.47hPa 31.61%
29.52*C 1000.48hPa 31.61%
29.52*C 1000.49hPa 31.61%
29.52*C 1000.50hPa 31.61%


Все заменил, только не понял где взять файл config, и куда его прилепить? новый интерфейс выводится, но журнал событий не показывает , ошибка 404 вроде, что делать, куда копать дальше?

0 Спам


Добрый вечер! Как записать образ SD карты для PI3, образ для PI2 не работает на 3. Спасибо!

0

Лично я не проверял, но судя по отзывам на форуме, все должно работать и на RPi3
В любом случае после установки, если страница не открывается, нужно через отладку в терминале посмотреть причину этой проблемы.

0 Спам


Спасибо, моя плюха, все загрузилось и работает, пока пробую тестировать. Жду нового интерфейса, надеюсь что он будет так-же в виде образа, а то не силен в линексе.

0

Нет, образ уже давно выложен. Просто нет смысла после каждого изменения обновлять образ размером 4 Гб. Нужно будет только доустановить на скачанный образ библиотеку smsbus - см. здесь и заменить файл config, а так же папки html и python - и получите новый интерфейс с дополнительными возможностями.

0 Спам


Спасибо получилось, буду пробовать.

0 Спам


Win32DiskImage записывает файлы с расширением . img, а образ системы домашней автоматизации на яндекс диске имеет расширение . bin. Как записать данный файл на флэшку, если Win32DiskImage его не видит.

Доброй ночи. Решил сделать себе сабжевую штуковину и установить на крышу. Конечно всё довольно просто, но может кто подскажет где купить барометры\термометры и другие датчики? Ещё лучше будет если легко написать под них дрова. Хочу на netbsd, но можно и линукс.




А там есть выводы? Или ты на USB хочешь всё завязать?
Тогда хорошо бы купить готовую USB метеостанцию.


Боюсь, не взлетит. Что произойдет с сабжем при -25? А при +40?


паять 1wire контроллер(или на расбери будет 1wire из коробки?), цеплять далласовские датчики. часть из них сразу заработает с digitemp. часть придется пилить :)


А зачем нуден Raspberry Pi? Лучше использовать что-нибудь попроще и понадёжней.

Не проще ли будет купить готовую домашнюю метеостанцию?


Какая тёплая у вас погода в Рязани.


Лучше использовать что-нибудь попроще и понадёжней.

я бы так и сделал. Arduino или STM32-Discovery широко распространены и имеют приличное коммюнити.


А вам не кажется, что вы пытаетесь забивать гвозди микроскопом? Гораздо проще взять отдельный контроллер (типа ардуино и т.п.), и уже к нему подключать различные датчики. В сети полно примеров реализации того же 1-wire для кучи разных контроллеров.

Систему с отдельным контроллером также проще подключать к десктопу - можно взять стандартный драйвер того же usb или rs-232.

Хотя в образовательных целях можно замутить проект и на Raspberry Pi.


C радио датчиками лучше не связываться. Зимой батарейки дохнут со страшной силой.

Так что либо1 wire, либо проводные варианты типа девиса по 1wire даже книжка есть Weather Toys: Building and Hacking Your Own 1-Wire Weather Station (ссылку на скачивание нагуглишь). Да, надо защищать датчики температуры и влажности от солнечного света - иначе врать будут градусов на 5-10


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

Читайте также: