С помощью одноплатного компьютера Raspberry Pi можно сделать «умное» зарядное устройство для мобильных телефонов и прочих портативных гаджетов.

В данном проекте Raspberry Pi будет получать от телефона актуальную информацию о состоянии заряда и завершать процесс зарядки, когда аккумулятор аппарата будет полностью заряжен.
Итак, для начала нам нужно запрограммировать Raspberry Pi, написав скрипт на Python. Для этого создайте папку home/pi/charger. В плане скрипта необходимо пояснить, что в данном случае вместо измерения напряжения или тока Raspberry Pi получает информацию непосредственно с телефона Android Debug Bridge (adb), что является универсальным инструментом с командной строкой, который позволяет общаться с экземпляром эмулятора или подключенного устройства Android. Это облегчает различные действия в рамках устройств такие, как установка и отладка приложений, и обеспечивает доступ к оболочке Unix, которую можно использовать для запуска различных команд на эмуляторе или подключенном устройстве. Когда уровень заряда достигает 100%, код на Python получает информацию об этом, посылает сигнал с помощью линии ввода/вывода GPIO17 и выключает тем самым питание с помощью реле. При этом телефон должен быть в «режим разработчика» (developer mode). Для того, чтобы использовать ADB с устройства, подключенного через USB, необходимо включить отладку USB в системных настройках устройства в разделе Параметры разработчика (Developer options). Код на Python выглядит следующим образом:
import sched, time
import subprocess
import time
import RPi.GPIO as GPIO
import os
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(17,GPIO.OUT)
GPIO.output(17,False)
s = sched.scheduler(time.time, time.sleep)
def do_something(sc):
print ("Doing stuff...")
os.system("adb shell cat /sys/class/power_supply/battery/capacity > curr_batt.txt")
from itertools import islice
with open("full_batt.txt",'r') as myfile:
head = list(islice(myfile, 3))
from itertools import islice
with open("curr_batt.txt",'r') as myfile:
headh = list(islice(myfile, 3))
if headh != head:
os.system("adb shell cat /sys/class/power_supply/battery/capacity > curr_batt.txt")
else:
GPIO.output(17,True)
sc.enter(1, 1, do_something, (sc,))
s.enter(1, 1, do_something, (s,))
s.run()
Теперь в каталоге home/pi/charger нужно создать два файла. Один назвать full_batt.txt и поместить в него всего лишь одно числовое значение: 100. Вторым файлом будет скрипт запуска. Для этого нужно использовать следующие команды:
$ cd bbt
$ nano launcher.sh
В этот файл следует поместить приведенный ниже код.
#!/bin/sh
cd /
cd home/pi/charger
sudo python charger.py
cd /
100
Чтобы сделать скрипт запуска исполняемым, нужно ввести следующие команды:
$ chmod 755 launcher.sh
$ sh launcher.sh
Это запустит ваш код на Phyton. Также следует добавить директорию для логов.
$ cd
$ mkdir logs
Также можно добавить это в crontab.
$ sudo crontab -e
@reboot sh /home/pi/bbt/launcher.sh >/home/pi/logs/cronlog 2>&1
Теперь просто осуществите подключение, как показано на схеме ниже.

© digitrode.ru