Интерфейс для совместного использования Raspberry Pi и Arduino










Это статья для тех, кто прочитал предыдущие части о "Умном доме HomestD с онлайн конструктором" и "Онлайн конструкторе веб-интерфейса для управления Raspberry Pi", и хотел бы управлять GPIO Raspberry Pi и подключённой к ней Arduino из одного интерфейса.



Всё ниже написанное следует рассматривать в контексте «умного дома».



Суть заключается в том, что если у Вас есть Raspberry Pi и Arduino, тогда собрав интерфейсы для управления по сети из этой статьи (Умный дом «HomestD» с онлайн конструктором) и этой (Онлайн конструктор веб-интерфейса для управления Raspberry Pi), Вы можете подключив Ардуину к Raspberry (по usb), объединить эти интерфейсы в один.

Проще говоря, Raspberry Pi будет подключена к интернету, и помимо выполнения штатных действий вы сможете управлять её GPIO (и давать другие команды) через web-интерфейс, и через тот же web-интерфейс можно будет управлять подключённой к ней Ардуиной.


Схема:


Ардуина подключена по usb к Raspberry Pi, та в свою очередь подключена к интернету через роутер, а клиенты подключаются по LAN и WIFI. Если будете заходить извне, то на роутере нужно пробросить порты.



Итак, Вы проделали всё что написано в первой и второй части и создали два web-интерфейса (в первой части вам нужно скачать программу homestd для RaspberryPi). Выполнили все действия с файлами и у вас получились две папки mydom и mydomrp, которые Вы поместили на Raspberry в корень диска (/mydom и /mydomrp)




Постарайтесь быть предельно внимательными.


Теперь давайте сделаем кнопку, которая будет переключать интерфейс c режима работы с Raspberry на работу с ардуиной (условно она будет главной). Откройте файл index.html из папки mydomrp, и где-то в районе 25-ой строки, после…

$(document).ready(function(){ 

function sendtoardu(){ slmode = 0; $.ajax({ type: "POST", url: comanda + cod_comand }); }
...


Пишем:

$('.knp0').click(function(){ var url = "http://192.168.5.146:82/"; $(location).attr('href',url); });


То есть получится вот так:

$(document).ready(function(){ 

function sendtoardu(){ slmode = 0; $.ajax({ type: "POST", url: comanda + cod_comand }); }

$('.knp0').click(function(){ var url = "http://192.168.5.146:82/"; $(location).attr('href',url); });
...


Где адрес (192.168.5.146) — это адрес Raspberry. Посмотреть можно командой:

ifconfig




82 — это порт, который вы будете вписывать в параметрах программы homestd. (sudo /mydom/homestd /dev/ttyUSB0 57600 82 /mydom/ 0)


И ближе к концу файла, сразу после тега body, нужно вписать строчку:

<div class='knpvid knp0'  title='1' >Raspberry ⇨ Arduino</div><br > 


Должно получится так:

...
</script>
</head>

<body>

<div class='knpvid knp0'  title='1' >Raspberry ⇨ Arduino</div><br >
...


Мы сделали кнопку переключающую интерфейс на работу с ардуиной.




Теперь наоборот, сделаем кнопку, которая будет переключать интерфейс c режима работы с Arduino на работу с Raspberry.

Откройте файл index.html из папки mydom, и там же, в районе 25-ой строки, после:

$(document).ready(function(){ 

function sendtoardu(){ slmode = 0; $.ajax({ type: "POST", url: comanda + cod_comand }); }
...


Пишем:

$('.knp0').click(function(){ var url = "http://192.168.5.146/"; $(location).attr('href',url); });


То есть получится вот так:

$(document).ready(function(){ 

function sendtoardu(){ slmode = 0; $.ajax({ type: "POST", url: comanda + cod_comand }); }

$('.knp0').click(function(){ var url = "http://192.168.5.146/"; $(location).attr('href',url); });
...


Адрес указываем тот же, а порт писать не надо, программа homestdrp, будет работать на стандартном (80) порту. Если он конечно не занят чем-либо.

В параметрах программы homestdrp, будете вписывать 80-ый порт. (sudo /mydomrp/homestdrp 80 /mydomrp/ 6)


И так же, ближе к концу файла, сразу после тега body, нужно вписать строчку:

<div class='knpvid knp0'  title='1' >Arduino ⇨ Raspberry</div><br >


Должно получится так:

...
</script>
</head>

<body>

<div class='knpvid knp0'  title='1' >Arduino ⇨ Raspberry</div><br >
...


Теперь мы сделали кнопку переключающая интерфейс на работу с Raspberry.




И последнее, запускаем сервера для Rasberry и Ардуины.

На всякий случай делаем исполняемыми программы и скрипт:

sudo chmod +x /mydom/homestd
sudo chmod +x /mydomrp/homestdrp
sudo chmod +x /mydomrp/init.sh


Запускаем homestdrp

sudo /mydomrp/homestdrp 80  /mydomrp/ 6


Открываем ещё один терминал и запускаем homestd

sudo /mydom/homestd /dev/ttyUSB0 57600 82 /mydom/ 0

Предварительно посмотрите как определилась ардуина в системе:

ls /dev/tty*






Для автоматизации, добавьте запуск программ в rc.local

nano /etc/rc.local


В конец файла, перед exit 0 впишите пару строк:

...
(/mydomrp/homestdrp 80  /mydomrp/ 6)&
(/mydom/homestd /dev/ttyUSB0 57600 82 /mydom/ 0)&

exit 0

Очерёдность запуска программ не имеет значения.



Осталось открыть в браузере адрес Raspberry…






Нажатие на верхнюю кнопку переведёт на Ардуину…





После внесения изменений в index.html обязательно обновите страничку в браузере.


Небольшое видео о том, это как работает.




На этом пока всё, в следующей части будет добавлен UDP клиент/сервер.


  • 0
  • 1740

Комментарии (0)

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