цифровая электроника
вычислительная техника
встраиваемые системы

 
» » » Умное зарядное устройство на основе Raspberry Pi

Умное зарядное устройство на основе Raspberry Pi

Автор: Mike(admin) от 1-12-2016, 19:31

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


Умное зарядное устройство на основе 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

Теперь просто осуществите подключение, как показано на схеме ниже.


Умное зарядное устройство на основе Raspberry Pi



© digitrode.ru


Теги: Raspberry Pi, Зарядное устройство, Python, ADB



Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий