Запуск raspberry от аккумуляторов (засекаем время работы)

Вступление

Смысл иметь портативный носимый компьютер, если он будет все время дома включен в розетку? Проще тогда прошивку для роутера сделать, пусть пашет на благо умного дома… 

Я хочу, что бы распберри работала в кармане (или привязанная к дрону, или спрятанная в нужном месте), а для этого нужно понимать, чем её запитать, сколько она проработает автономно и как сделать весь процесс максимально дешевым.

Выбор батарей для raspberry

Вариантов, на самом деле довольно много.

Один из них, относительно дешевый, это взять обычные батарейки, по 1.5В (а лучше, аккумуляторные), 5 шт или больше, или крону (9В), подключить через стабилизатор напряжения (например, такой) — на него подаете до 15В, он на выходе дает стабильные 5, и будет давать, независимо от того, как там плавает напряжение (Об этом я еще напишу отдельно).


Другой способ — взять заряженную батарею от ноутбука или, если сила позволяет, от источника бесперебойного питания или даже аккумулятор от автомобиля :) Имейте в виду, что батареи от ИБП или ноутбука скорее всего будут идти без защиты от разряда/перезаряда, а это значит, что они смогут загореться и/или сдохнуть вместе с устройством. Опять же, для подачи ровно 5В нужно будет использовать стабилизатор. Подробнее — тут

Я же пошел самым удобным для меня и самым универсальным способом — использовал аккумуляторы, которые объединил в powerbank. Бесспорно, можно было взять готовый powerbank, но, во первых, это дороже, во вторых, аккумуляторы я использую отдельно от этого проекта — для питания других устройств, светодиодных лент, когда требуется, фонарей, раций, шуруповертов и всякое такое. 

Вот, что мне для этого потребовалось:
1. Непосредственно аккумуляторы 18650b — ссылка. Каждый из них даёт 3.7В, ёмкость 3400мА. В данном случае понадобятся 8 штук. Хорошие аккумуляторы стоят дороговато, но, как я писал выше, у них довольно много применений. Можете взять дешевле или выковырять из старой батареи от ноутбука — они будут не такие ёмкостные, но тоже пойдут.
2. Корпус для powerbank'а — Вот такой

В принципе, этого вполне достаточно — вы сможете заряжать батареи сразу в powerbankе от обычной телефонной зарядки (долго, правда), ну и сможете подзаряжать свои устройства (или питать raspberry) от него.



Как видите, тут два порта OUT — один на 1А, второй на 2.1А — это что бы заряжать телефоны. А по краям два порта IN — это что бы заряжать сами аккумуляторы в пауэрбанке.

Но я лично заряжаю от умной зарядки, вот такой

Она умеет заряжать фигову тучу разных батареек (AA, AAA, +) и аккумуляторов (18650, 26650, 16340, 14500, 10440,18500), умеет заряжать, разряжать, замерять ёмкость и внутреннее сопротивление. Более того, там есть USB порт, и можно использовать зарядку как powerbank — но, к сожалению, там ток 1А — телефон с планшетом зарядит, но вот распбери не потянет. Если решите брать, можете взять и аккумуляторы в этом же магазине, тут проверенные.
 

Тестирование времени работы

Итак, взяли батареи, вставили в powerbank, включили в него же raspberry (в тот разъем, где написано 2А).
Я решил испытывать время работы самым простым и бронебойным способом — запустить, и посмотреть, когда оно умрет.

Время запуска мне известно (20:00 в моем случае, 04.10.2018), а вот время выключения может оказаться сюрпризом. Поэтому создадим скрипты, которые помогут отследить отключения электропитания. 

Скрипт №1 очень простой — каждую секунду он пишет в текстовый файл текущее время. Когда я увижу, что распберри выключена, я включу её и посмотрю последнее записанное время — и, таким образом, узнаю, когда она в последний раз работала.

Подключаюсь к raspberry по SSH с помощью putty, становлюсь рутом (sudo bash), создаю файл deathtime.py вот с таким содержимым:
 

import time
from datetime import datetime

while True:
    with open('./deathtime.txt', 'w') as output:
        output.write(str(datetime.now()))
    time.sleep(1)

Он очень простой — он открывает в текущей директории файл deathtime.txt, и пишет туда текущее время. Закрывает файл, ждет 1 секунду, и пишет снова.
Запустим его в виртуальной сессии (что бы продолжал работать, даже если мы отключимся).
Выполняем последовательно команды

screen -S deathtime
python3.5 ./deathtime.py
ctrl+a+d

Теперь, каждую секунду, в текущей директории будет обновляться файл deathtime.txt, можете проверять

Второй скрипт немного сложнее — он нужен для того, что бы дать немного нагрузки на устройство — скрипт будет сканировать откружающие wifi точки доступа, и скидывать их имена в файл. Это откровенно бессмысленное занятие, если честно, но тестить значит тестить.
Выполняем последовательно команды:

touch scan.sh
chmod +x ./scan.sh

Это мы создали файл для скрипта и дали ему возможность исполняться.

Теперь добавим в него код и сохраним:

#!/bin/bash

curr_dt=$(date "+%Y.%m.%d-%H.%M.%S")
echo "DT: $curr_dt"
scan_res=$(iwlist wlan1 scan | grep ESSID)
echo "Scan results:\n $scan_res"

echo "$curr_dt\n$scan_res" > wifilist.txt

Наш скрипт берет текущую дату и время, а так же сканирует точки доступа и выдает их имена. Так же всю эту информацию он записывает в файл wifilist.txt в текущей директории. Скрипт работает с устройством wlan1 (у меня два wifi, вам, возможно, нужно будет заменить wlan1 на wlan0).

Можете запустить этот скрипт, он выдаст информацию на экран и создаст текстовый файл.

./scan.sh

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

screen -S wifiscan
watch -n1 ./scan.sh
ctrl+a+d

Готово, скрипт бесконечно сканирует сеть и записывает результаты в файл.
Если что, можете выполнить команду

screen -list

что бы посмотреть, запущены ли виртуальные сессии. Вы должны увидеть что-то похожее на:

 

Результаты

В таком режиме малинка проработала 41 час, планомерно снижая заряд на powebank`е. К примеру, спустя 3 часа 25 минут, аккумуляторы сели на 6%. Думаю, для носимого (и возимого) устройства вполне сойдет.

Категория: Электроника
Последнее изменение:

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



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

Bitcoin адрес проекта: [[address]]

Перевод на сумму [[value]] BTC получен. Спасибо!.
[[error]]

Ethereum адрес проекта: [[address]]