В этом видео:
– Подключение солнечной батареи к GPIO пину как устройства ввода;
– Какое напряжение считается True=1;
– разбор Python скрипта для реакции на появление сигнала на GPIO пине.
Я продолжаю рассказывать о том что можно делать с gpio портами на raspberry pi.
Сегодня о том как можно использовать вот такую солнечную батарею с Raspberry pi:
Зарядить pi конечно не получится такой батареей – выходное напряжение тут всего 1,3В при хорошем освещении. Но можно получить информацию о наличии света в каком-либо месте. Например, можно интерпретировать наличие света как сигнал к отключению внешнего освещения (можно собирать свои системы умный дом и тп.). Если заменить солнечную панель на датчик движения, то можно фиксировать движение. Суть в определении какого-либо сигнала на одном из пинов raspberry pi и последующая реакция на него.
В моей схеме всё просто – если есть свет, то диоды загораются, если света нет, то гаснут. Дополнительно, в данной схеме я использовал резистор в 1К Ом для ограничения тока через пин к которому подключена солнечная батарея. Больших токов ожидать не стоит, но лучше обезопасить себя.
Моя схема выглядит следующим образом:
Есть четыре светодиода подключённые к разным пинам на RaspberryPi.
Пины: green=7 ; yellow=12 ; red=16 ; blue=18
И солнечная батарея подключена к пину 11:
solarbattery=11Пины к которым подключены диоды настроены как и в предыдущих видео на Выход:
for i in LED:
GPIO.setup(i, GPIO.OUT, initial=0)
Пин 11- солнечная батарея, насроен на Выход:
GPIO.setup(solarbattery, GPIO.IN)
С использованием операторов циклов производится мониторинг состояние пина 11. Если на нём есть сигнал, то включаем диоды, если сигнала нет, то диоды выключаем
if GPIO.input(solarbattery)==True:
for i in LED:
GPIO.output(i,True)
time.sleep(0.1)
else:
for i in LED:
GPIO.output(i,False)
time.sleep(0.1)
Особенностью данной схемы является возможность получать сигнал с внешнего устройства или прибора. В данном случае солнечная батарея – если освещения слабое, то батарея будет генерировать слабое напряженение, ток тут не особо важен.
Возникает вопрос какое напряжение может сгенерировать батарея и какое напряжение Raspberry Pi будет считать достаточным для положительного сигнала на входе.Сигнал поступает с солнечной батареи – если достаточно света и батарея может сгенерировать 1.3В, то сигнал на входе есть.
На этом сайте я нашёл вот какую информацию:To answer that question I/O ports have two parameters which deal with the output level:
: The maximum low level voltage. (0.8V on the BCM2835)
: The minimum high level voltage. (1.3V on the BCM2835)Для Raspberry Pi Достаточно 1,3 вольта для того чтобы считать что сигнал на пине есть.
Больше 3х вольт я бы не стал подавать на пин, так как пины генерируют как раз напряжение в 3 вольта.
Информация о том сколько пины генерируют напряжения и какие токи приемлемы по ссылке:
http://pinout.xyzК сожалению, WordPress портит всю вёрстку с отступами.
Смотрите скриншот и видео!
# cat my-script.py
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)green=7 ; yellow=12 ; red=16 ; blue=18
solarbattery=11
LED = [green,yellow,red,blue]for i in LED:
GPIO.setup(i, GPIO.OUT, initial=0)
GPIO.setup(solarbattery, GPIO.IN)print ("Ctrl+C exits the program")
try:
while True:
if GPIO.input(solarbattery)==True:
for i in LED:
GPIO.output(i,True)
time.sleep(0.1)
else:
for i in LED:
GPIO.output(i,False)
time.sleep(0.1)
time.sleep(0.3)except KeyboardInterrupt:
GPIO.cleanup()
Удачи!