Метеостанция на Orange Pi Zero

 

Сегодня я буду рассматривать ещё вариант метеостанции, которую возможно изготовить своими руками, скорей всего речь пойдёт о метеостанции на платформе Raspberry, т.к. на Ардуино уже была изготовлена и какое-то время она проработала (из-за технической неисправности, скорей всего брака, работать она перестала).

Успел уже найти историю, в которой автор рассказывает как раз о школьном проекте, вот ссылка, в котором он знакомил школьников с тем, как делать такие метеостанции, как они работают и т.д., даже сюжет об этом показали в новостях

Но сегодня нас интересует конкретно Raspberry или аналог, так что начнём.

Итак, какую информацию удалось собрать:

Существуют Raspberry Pi и существует аналог Orange Pi, оранж является очень похожим изделием на Распбери, технические характеристики как я понял в некоторых случаях даже превосходят, но дешевле. У Raspberry есть официальный модуль-дополнение, которое называется The Sense HAT, и обладает оно некоторым набором датчиков, а именно температуры, давления, влажности вроде, акселерометром, гироскопом и магнитометром вроде, очень удобно, но получается для пробного образца дороговато на данный момент (я уверен, к Raspberry мы ещё вернёмся). Итак, остановимся пока на аналоге, Orange Pi Zero:

Собственно вот так выглядит эта прелесть.

Вот так выглядит собственно запуск Orange Pi Zero с нуля:

Отлично, как работать с этим зверем становится потихоньку более менее понятно.

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

Ещё одна подробная инструкция:

https://lucsmall.com/2017/01/19/beginners-guide-to-the-orange-pi-zero/

 

На данный момент у меня имеется:

Температурный датчик (dht11 и ещё есть dht22)

плату orange pi куплю завтра

веб сервер с работающим скриптом, который позволяет получать и записывать данные в MYSQL сервер

программу, которую я использовал на ардуино для отправки данных на этот веб сервер

Есть ещё Гугл карта, которая должна отображать данные из базы данных MYSQL, но она это перестала делать, надо будет с ней поработать.

 

Нашёл много вариантов обработки получаемых данных, в том числе и установка веб сервера на сам микроконтроллер и в дальнейшем уже получение информации с него. Буду придерживаться варианта, когда он сам будет отправлять данные на определённый веб сервер.

 

Вот инструкции, по использованию датчиков на Orange Pi:

Temperature and humidity sensor on the Orange Pi

https://github.com/ionutpi/DHT22-Python-library-Orange-PI

по поводу отправления данных на веб сервер:

https://www.raspberrypi.org/forums/viewtopic.php?t=94499

https://habr.com/post/166373/

https://habr.com/post/163575/

Завтра продолжу

 

Сегодня наступило завтра, продолжаю:

 

Приобрёл микрокомпьютер Orange Pi Zero, маленький, выглядит мило, но это уже серьёзный аппарат, даже говорят процессор может греться. Купил также кабель и карту памяти микроСД, но купил маленького объёма, говорят что требуется от 10 гб класса 10 и выше, вроде так.

 

Итак, поехал докупать:

 

МикроСд нужного объёма

Юсб адаптер для чтения микроСд карт (пытался для этих нужд использовать телефон, но необходимо форматировать карту памяти и заливать на неё образ ОС, это через телефон сделать не получится)

Радиатор + клей + канцелярский нож

 

Всё куплено, установил операционную систему Armbian по инструкции (инструкция),

Возникла сложность с подключением к микрокомпьютеру – после запуска, к нему необходимо подключиться, используя программу Putty или аналоги, также есть возможность подключиться к микрокомпьютеру использую USB и переходник. Для того, чтобы подключиться по локальной сети через Putty, необходимо знать ip этого микрокомпьютера, найти мне его помогла программа ZENMAP (https://nmap.org/book/zenmap.html), просканировав локальную сеть, нашёл orangepizero.

Подключился с помощью Putty, изменил пароли, теперь вроде всё работает, идём дальше.

 

Дальше

Подключение и настройка датчиков.

ещё ссылка, чтобы удобней было: http://www.itcooky.com/?p=4023

 

Столкнулся со следующей ситуацией, ну это было очевидно:

Модель, которую я приобрёл – имеет в своём названии ZERO – это означает, что у неё нет готовых контактов на плате, их нужно паять. Только в понедельник появиться возможность напаять необходимых контактов, чтобы подключить датчики.

В следующий раз необходимо это иметь ввиду)

 

Приобрёл паяльник, приобрёл PIN головки, которые необходимы для того, чтобы подключить датчики.

Припаял головки к плате, сейчас буду подключать датчик температуру или какой-нить другой, дальше пробовать смотреть, ничего я не испортил во время пайки и работает ли моя пайка)

Схема контактов на Orange Pi Zero:

Подключил датчик к GPIO 1, подключил питание 5V и землю, смотрим

 

Как установить и настроить WiringPi на Orange Pi PC?

инструкция: https://github.com/lanefu/WiringOtherPi/blob/h3/INSTALL

git clone https://github.com/lanefu/WiringOtherPi.git

cd WiringOtherPi

./build

и потом:

gpio -v  если что-то показывает, значит работает)

 

Дальше по хорошему необходимо установить программу i2cdetect, чтобы она показала подключенные устройства, вроде так. Важный момент:

Включаем i2c через armbian-config (System->Hardware) командой
sudo armbian-config и т.д. включаем все три шины или ту на которой датчик. (I2C в оборудовании вроде).

В целях проверки были приобретена пара температурных датчиков DS18B20, подключены по схеме с использованием резистора, по инструкции отсюда

https://forum.armbian.com/topic/7324-solved-modprobe-fatal-module-w1-sunxi-not-found-in-directory-libmodules41418-sunxi/

 

armbian-config – конфиг ОС

Подключение 1-wire датчиков DS18B20

Чтобы настроить 1-wire в Armbian на Orange Pi Zero нужно сделать следующее:

cd /home
mkdir 1w
nano 1w.dts

Вставить в файл следующее:

// Definitions for w1-gpio module (without external pullup)
/dts-v1/;
/plugin/;

/ {
    compatible = "allwinner,sun8i-h3";

    fragment@0 {
        target-path = "/";
        __overlay__ {

            onewire@0 {
                compatible = "w1-gpio";
                pinctrl-names = "default";
                pinctrl-0 = <&w1_pins>;
                gpios = <&pio 0 6 0>; // PWM1/PA06 pin on Orange Pi Zero (0 this is A port, 6 this is 06 pin. for PD14 use  <&pio 3 14 0>)
                status = "okay";
            };
        };
    };

    fragment@1 {
        target = <&pio>;
        __overlay__ {
            w1_pins: w1_pins {
                allwinner,pins = "PA06";
                allwinner,function = "gpio_in"; // in (initially)
                allwinner,pull = <0>; // off
            };
        };
    };

};

Сохранить файл

Дальше в консоли:

git clone -b dt-overlays8 https://github.com/pantoniou/dtc
cd dtc
apt-get install flex bison

#Вот здесь возник трабл с dpkg/lock - решил его так:
#sudo rm /var/lib/dpkg/lock
Вот ещё один рабочий вариант установки!!! (обратите внимание, что в какой-то
момент вылетают 3 ошибки, но это вроде нормально) 
make
./dtc -@ -O dtb -I dts -o ../1w.dtbo ../1w.dts

Далее:

cd ..
cp 1w.dtbo /boot/dtb/overlay/sun8i-h3-w1-therm.dtbo

Armbian-config:

armbian-config

Заходим в раздел «System», «Bootenv», добавляем в строчке «overlays»

w1-therm

Сохраняем, выходим из armbian-config и перезагружаемся.

Теперь на пине PA06 поднят 1-Wire.

Взято полностью отсюда: https://sysengineer.ru/2018/06/03/podklyuchenie-1-wire-datchikov-ds18b20-na-mainline-yadre-orange-pi-pc.html
Теперь
cd /sys/bus/w1/devices/
ls
мы видим наш датчик 28-ХХХХ какой-то,
cd 28-ХХХХ
cat w1_slave
Выдаст нам показания счётчика:
Порт PA06 оказался GPIO.7 и одновременно пином 7.
Подключил второй датчик, всё работает.
Создав несколько файлов программы (https://micro-pi.ru/%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-ds18b20-%D0%BA-orange-pi-bpi-rpi/), скомпилировав командой (предварительно изменив номер пина на 7 в одном из файлов)
sudo g++ main.cpp OneWire.cpp o main.out lwiringPi lpthread
./main.out
Запустилась программа, которая показывает показания датчиков (т1 и т2).

 

 

Please follow and like us:
0
Метеостанция на Orange Pi Zero

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Перейти к верхней панели