А теперь и обещанная вторая часть этого мракобесия.
Все проверено и работает.
Напомню трепетному читателю, как это работает.
Светодиодная лента – драйвер светоидиодной ленты – в разрыве стоит реле – Arduino Nano – Raspberry Pi.
Собственно, чтобы это все работало нам нужно сделать:
- Залить на Arduino скетч. Привожу пример того, что сейчас работает, но это просто из-за того что не хочется идти и перезаливать:
int value; //переменная
int Reley = 7; // порт к которму подключен пин реле. (порт D7)
void setup()
{
Serial.begin(9600); // запускаем работу с портом
pinMode(Reley, OUTPUT); //говорим, что порт Reley, т.е. порт D7 явлюяется портом вывода
Serial.println(value);
}
void loop()
{
if (Serial.available()) //если из последовательного интерфейса что пришло, значит…
{
value = Serial.read(); // заносим в переменную value, то что пришло в порт
if (value == '1') // если пришел символ "1" включаем реле, т.е. подаем высокий уровень на пин D7
{
digitalWrite(Reley, HIGH);
Serial.println("Reley — ON");
}
if ( val == '0') // если пришел символ "0" выключаем реле
{
digitalWrite(Reley, LOW);
Serial.println("Reley — OFF");
}
}
}
- Далее нам необходимо все это счастье подружить с Rasp Pi. Как уже писал ранее, для того, чтобы что-то с этим делать, нам нужно для начала установить pySerial. В нашем случае для малинки это делалось так:
sudo apt-get install python-serial
После этого можно будет попробовать собрать скрипты для Python, ибо именно им проще всего, как показала практика пользоваться для управления этой радостью.
Использовались скрипты, сделанные на коленке:
Включение света:
import time
import serial
arduino=serial.Serial(“/dev/ttyUSB0”,9600,timeout=1000)
time.sleep(2)
arduino.write(‘1’)
Выключение света, очевидно:
import time
import serial
arduino=serial.Serial(“/dev/ttyUSB0”,9600,timeout=1000)
time.sleep(2)
arduino.write(‘0’)
Магическое использование библиотеки time обосновано исключительно тем, что Arduino при подаче на нее сигнала просто жаждет перезагрузиться и то, что происходит дальше – не происходит. sleep(2) не дает этому случиться.
Есть более радикальный вариант – прикрутить/припаять конденсатор в 10 микроФарад между GND и RST
Этот скрипт лучше изменить, чтобы он мог искать и другие порты, нужно добавить еще и возможные адреса этого порта:
locations=[‘/dev/ttyUSB0′,’/dev/ttyUSB1′,’/dev/ttyUSB2′,’/dev/ttyUSB3’,
‘/dev/ttyS0′,’/dev/ttyS1′,’/dev/ttyS2′,’/dev/ttyS3’]
3. Следующим этапом этого мероприятия является подключение PHP для выполнения этих скриптов. Так как все происходит в ,мягко говоря, гетерогенной среде (скрипты писались в bash под Windows 10 из-под подключения через ssh к Raspberry PI), поэтому разместил Apache и PHP на малинке и нарисовал где-то такой скрипт для проверки работоспособности этого мракобесия:
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Light Control</title>
</head>
<body>
Light Control:
<form method="get" action="light2.php">
<input type="submit" value="ON" name="on">
<input type="submit" value="OFF" name="off">
</form>
<?php
if(isset($_GET['on'])){
$python = exec('/usr/bin/python /var/www/html/enablelight.py');
}
else if(isset($_GET['off'])){
$python = exec('/usr/bin/python /var/www/html/shutdownlight.py');
}
?>
</body>
</html>
4. Чего стоит опасаться:
1.Связка с PHP не заработала с первого раза. Пришлось искать логи, которые нашлись тут:
/var/log/apache2/.
2. Если скрит работает нормально из консоли, но при этом через веб-морду не заработал, то есть несколько альтернатив:
- Изменить права для доступа на устройство: sudo chmod 666 /dev/tty…
- Более культурный вариант – изменение прав в /etc/udev/rules.d где-то до такого вида () потребуется перезагрузка
# navigate to rules.d directory
cd /etc/udev/rules.d
#create a new rule file
sudo touch my-newrule.rules
# open the file
sudo vim my-newrule.rules
# add the following
KERNEL==”tty…”, MODE=”0666″
- Добавление пользователя в группу dialout на уровне индейца
Вроде как все, после этих манипуляций сможете включать и выключать свет через Wi Fi.
Что уж, решение совершенно дебильное, но тем не менее, рабочее.
Конечно же, не переключаемся, скоро будет еще больше всего интересного и ненужного!
PS А Rockets & Bishops – еще одно отличное пойло от пивоварни имени анархиста.