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

Выбор кейса

Итак, приступаем к выбору кейса для получившийся метеостанции)

Немного исследовав этот вопрос, остановился на варианте 3д печати.

Выбор кейса – я остановился на данном варианте, мне кажется, то, что надо)

В данный момент принтера у меня нет, поэтому буду думать, буду искать, где напечатать)

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

Всё, кейс отправлен на печать)

И вот он уже напечатан) выглядит, прямо как на картинке сверху, симпатично очень.

Автономность

Идём дальше, теперь делать данную метеостанцию полностью автономной –

добавим usb 3g модем и в планах подключить powerbank и солнечную панель.

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

Решил остановиться на следующей модели:

ARK DS E303 2G/3G

Итак, ждём модем)

Приобрёл 3g модем ARK LINK E303 также известный как ARK DS-E303, сим-карту одного из операторов, подключил модем к компьютеру, вроде определяется, сим-карта читается, скорость интернета не проверял)

Итак, вставил 3g модем в Orange Pi Zero, команда lsusb показывает, что BUS 006 занят каким-то девайсом. 3g модем может определяться системой разными способами, т.е. и как кард ридер, и как модем. чтобы посмотреть, как какое устройство он подключился, набираем:

lsusb     — покажет список всех устройств.

Как я понял, для того, чтобы модем всегда подключался как модем (это я ещё буду проверять), есть программа modeswitch, её и необходимо установить:

sudo apt-get install usb-modeswitch

В моём случае модем определился как флешка только один раз, походу после установки программы он начал определяться под другим номером (было 20a6:f00e , стало 20a6:1105).

Кто-то проводит сразу устанавливает несколько необходимых программ:

sudo apt-get install usb-modeswitch minicom ppp Установка этого модема дело тонкое, у всех получается по разному. Далее устанавливаем программу Sakis3G, разархивируем и дадим права на выполнение (в директорию 3g):
mkdir ~/3g
cd 3g/
wget http://sourceforge.net/projects/vim-n4n0/files/sakis3g.tar.gz
tar -xzvf sakis3g.tar.gz
sudo chmod +x sakis3g

Далее, запустим Sakis3G в интерактивном режиме для установления соединения:

$ sudo ./sakis3g --interactive

Далее выбираем Connect with 3G / USB device / Mobile Connect / Interface #0 / и я выбрал уже настроенный вариант 1. Проверил, вроде работает)

Чтобы проверить, отправляются ли мои данные, я выключил wifi –

ifconfig wlan0 down

(после ребута он появится опять). На данный момент к интернету через модем мы подключаемся, а вот данные не отправляем, завтра продолжим разбор)

Полезные линк 1 и 2. Вот ещё одна подробная статья.

С помощью команды

route -n

можно посмотреть – как у вас настроено подключение и в каком порядке происходит подключение, сверху приоритетней.

dmesg | grep tty

Эта команда покажет нам список оборудования, обнаруженного системой в том порядке, в котором это произошло.

Итак, после того, как я включил подключил и настроил 3g модуль, сделал пинг 8.8.8.8:

root@orangepizero:/etc# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=52 time=864 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=52 time=303 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=52 time=311 ms

Если же делать

ping www.google.com

То в ответ мне была тишина) После долгих разборок настроек переустановок и опять новых настроек, выяснилось, что дело в ненастроенных nameservers, которые вроде настраиваются автоматически (файл, где хранится информация о неймсерверах – /etc/ppp/resolv.conf).

Что я сделал:

su root
# cd /etc
# rm resolv.conf
# ln -s /etc/ppp/resolv.conf

 

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

Настроил с помощью программы umtskeeper:

cd 3g/
wget http://zool33.uni-graz.at/petz/umtskeeper/src/umtskeeper.tar.gz
tar -xzvf umtskeeper.tar.gz
chmod +x umtskeeper

Дистрибутив UMTSkeeper уже содержит sakis3g. Поэтому отдельно sakis3g можно не устанавливать, для автоматического при разрыве соединения необходимо запустить umtskeeper с соответствующими параметрами:

# ./umtskeeper --sakisoperators "USBINTERFACE='0' OTHER='USBMODEM' USBMODEM='20a6:1105' APN='CUSTOM_APN' CUSTOM_APN='internet.beeline.ru' SIM_PIN='0000' APN_USER='beeline' APN_PASS='beeline'" --sakisswitches "--sudo --console" --devicename 'Huawei' --log --silent --nat 'no'
tail /var/log/umtskeeper.log -f 

так можно посмотреть логи программы

Настройка автоматического подключения к Интернет по 3G при запуске:

Добавить команду в файл rc.local

# nano /etc/rc.local

/3g/umtskeeper –sakisoperators “USBINTERFACE=’0′ OTHER=’USBMODEM’ USBMODEM=’20a6:1105′ APN=’CUSTOM_APN’ CUSTOM_APN=’internet.beeline.ru’ SIM_PIN=’0000′ APN_USER=’beeline’ APN_PASS=’beeline'” –sakisswitches “–sudo –console” –devicename ‘Huawei’ –log –silent –nat ‘no’ &

Теперь при старте запускается подключение через наш USB modem, но по какой-то причине, данные с датчиков не передаются на сервер, продолжим выяснять)

Всё проверил, с помощью следующей команды (примерно) смог отправить данные, значит просто слетел автостарт отправки данных

curl -d "param1=value1&param2=value2" -H "Content-Type: application/x-www-form-urlencoded" -X POST http://localhost:3000/data

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

Точка доступа с интернетом

Также подключил вариант использования Orange Pi Zero как точку доступа с доступом к интернету через ppp0 через USB модем)

В первый раз, когда я проводил настройку точки доступа, я ввёл неправильные настройки доступа по локальной сети и Orange Pi Zero для меня превратился в кирпичик (т.к. у меня не было возможности зайти в консоль не через локальную сеть или это требовало много времени), пришлось всё переустанавливать.

Все грешат на встроенный Wifi модуль, с ним приходится неплохо так возится, но со второго раза вроде получилось. ВАЖНО, почему-то говорят есть какая-то принципиальная разница между настройкой Wifi модуль, через который до этого подключались к сети и модулем, до этого который не использовался в работе, как-то так!)

armbian-config

Дальше network  –  wlan  – (отключаем wifi от сети, если он был подключен) – Hotspot – включаем hotspot (сейчас у меня он уже включен, там какой-то долгий процесс настройки точки доступа происходит).

Вот примерные действия, которые делались, когда подключили точку доступа –

  • Set the kernel to router mode:
echo 1 > /proc/sys/net/ipv4/ip_forward

Примерно так должен выглядеть iptables:

# iptables --list-rules
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A FORWARD -i ppp0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i wlan0 -o ppp0 -j ACCEPT

# iptables --list-rules -t nat
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A POSTROUTING -o ppp0 -j MASQUERADE

 

Дополню, если будет что дополнить, вот кстати скрипт по автонастройке расшаривания eth0 по wlan0 в ad-hoc сети:) (я использовал метод выше)

ethoverwlan.sh
#!/bin/bash

iw wlan0 set type ibss
iw wlan0 ibss join proxywlan
ip addr add 192.168.0.254 dev wlan0
ip link set wlan0 up
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

Всё, теперь наша чудо машинка не только измеряет температуру, но и раздаёт интернет)

После ребута, нужные мне строчки слетают из iptables(возможно из за строчки в том же rc.local: iptables-restore < /etc/iptables.ipv4.nat), поэтому добавлю нужное мне в /etc/rc.local:

iptables -t nat-A POSTROUTING -o ppp0 -j MASQUERADE

Всё, при ребуте должно заработать)

Не заработало, пришлось полностью переделать rc.local, чтобы сначала загружались команды, прописанные видимо точкой доступа, потом umtskeeper, потом iptables, а потом уже программа, отправляющие данные, пока такое решение.

Подправил предыдущие шаги, должно работать)

Питание

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

Поэтому буду смотреть и выбирать, и конечно же, по приемлемой цене.

 

Охлаждение

Сразу после установки Orange Pi Zero в корпус показания датчиков температуры начали расти (датчики я спрятал внутри корпуса), действительно, заметно сильнее стал греться процессор (с установленным радиатором), вот показания температуры процессора:

пишет 54° по Цельсию, если дела совсем плохи будут, тогда возможно потребуется установка кулера) и возможно в новый корпус)

 

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

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

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

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