Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.10.2014, 23:52   #1
d00m
Senior Member
 
Регистрация: 06.11.2012
Сообщений: 153
Вес репутации: 0
d00m is an unknown quantity at this point
Question передать нажатия клавиатуры через wifi на arduino+mr3020

всем привет.

как бы грамотно передавать кнопки "вперед-назад-вправо-влево", нажатые на клавиатуре компа на arduino которая подключена по USB к роутеру mr3020, которы в свою очередь подключен к wifi сети, в которой находится наш комп.

то есть есть wifi сетка, в ней комп и роутер, к роутеру подключена ардуина с сервоприводами.
хочется рулить сервами, нажимая кнопки на клавиатуре.
d00m вне форума   Ответить с цитированием
Старый 19.10.2014, 00:50   #2
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: передать нажатия клавиатуры через wifi на arduino+mr3020

Можете посмотреть в коде модуля "CyberBot2"
Admin вне форума   Ответить с цитированием
Старый 19.10.2014, 12:52   #3
d00m
Senior Member
 
Регистрация: 06.11.2012
Сообщений: 153
Вес репутации: 0
d00m is an unknown quantity at this point
По умолчанию Re: передать нажатия клавиатуры через wifi на arduino+mr3020

чтото я не понял, как там обеспечивается передача команд через wifi..
и главное - каким образом в ардуино попадают команды от клавиатуры из браузера..

UPD:

насколько я пока понял - дело в вашем "модуле Веб-камеры".. он, в связке с прошивкой CyberWRT, каким-то образом обеспечивает перехват нажатий на клавиатуре. Вероятно есть какойто код в странице самого модуля, там где кнопки "вперед-назад-etc" и область отображения видео картинки.
то есть когда это окно в фокусе - нажатия клавиатуры перехватываются, передаются на serial и обрабатываются уже скетчем. в вашем случае, с помощью CyberLib, но полагаю, можно и без него обойтись.
главное перехватить нажатие кнопки в браузере и передать код кнопки в скетч.

в принципе меня бы это тоже устроило, если я бы я понимал как вы в браузере перехватываете события клавиатуры.
.. я уже думал писать какойто бинарник под openwrt чтобы он слушал сокет на стороне роутера, и какуюто мини-программку на строне компа - чтобы она слашула клавиатуру и передавала нажатия кнопок, через wifi на роутер ))

Последний раз редактировалось d00m; 19.10.2014 в 13:41.
d00m вне форума   Ответить с цитированием
Старый 19.10.2014, 16:23   #4
d00m
Senior Member
 
Регистрация: 06.11.2012
Сообщений: 153
Вес репутации: 0
d00m is an unknown quantity at this point
По умолчанию Re: передать нажатия клавиатуры через wifi на arduino+mr3020

похоже не все так просто..
уже понимаю что модуль Вебкамеры ни причем.
все эти операции перехвата и обработки клавиш клавиатуры находятся в модуле CyberBot.. + тесная связка с веб сервером прошивки CyberWRT..

вот мне и нужно эту часть повторить на openwrt trunk.
куда копать ?
я уже понял, что важный файлы index.cgi и carduino.spybot.js
но что надо сделать чтобы их прикрутить к обычному uhttpd ?

ктонить может выложить /etc/config/uhttpd из роутера прошитого CyberWRT ?
мне кажется там должны быть какието специальные опции list interpretener для того чтобы этот веб сервер обрабатывал cgi файлы
d00m вне форума   Ответить с цитированием
Старый 19.10.2014, 19:35   #5
stD
Senior Member
 
Аватар для stD
 
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1311
stD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant future
По умолчанию Re: передать нажатия клавиатуры через wifi на arduino+mr3020

Дык поставь киберврт, на кой тебе транк?

Последний раз редактировалось stD; 19.10.2014 в 19:40.
stD вне форума   Ответить с цитированием
Старый 19.10.2014, 20:06   #6
d00m
Senior Member
 
Регистрация: 06.11.2012
Сообщений: 153
Вес репутации: 0
d00m is an unknown quantity at this point
По умолчанию Re: передать нажатия клавиатуры через wifi на arduino+mr3020

ну так оно проще купить чтото готовое..
в общем распаковал прошивку CyberWrt-v1.4.bin - смотрю как оно устроено..

UPD:
все же очень интересно - почему index.cgi ?

/cgi-bin/modules/CyberBot2/index.cgi

не html, не php..

Последний раз редактировалось d00m; 19.10.2014 в 20:53.
d00m вне форума   Ответить с цитированием
Старый 19.10.2014, 21:44   #7
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: передать нажатия клавиатуры через wifi на arduino+mr3020

Для PHP нужно PHP пакеты устанавливать, а они очень тяжелые и не влезут на внутреннюю память роутера. Поэтому все сделано на *.cgi
HTML коди можно в cgi тоже писать
Admin вне форума   Ответить с цитированием
Старый 19.10.2014, 21:54   #8
d00m
Senior Member
 
Регистрация: 06.11.2012
Сообщений: 153
Вес репутации: 0
d00m is an unknown quantity at this point
По умолчанию Re: передать нажатия клавиатуры через wifi на arduino+mr3020

понятно, спасибо.

а можете еще объяснить что значит этот код:

Код:
<div id="forward" onmousedown="submitUART('W')" onmouseup="submitUART('x')">Вперед</div>
он есть в каждой кнопке, и я не пойму почему код "onmouseup="submitUART('x')" есть в обработчике нажатия каждой кнопки.. зачем ?
я еще както понимаю, что в каждой кнопке своя буква - W S A D..
но почему при ОТПУСКАНИИ клавиши мышки отправляется одинаковый код ?
хотя это может какаято заглушка..

и я так понимаю, клавиатуру оно слушает за счет этого:

Код:
<body onkeypress="return keyPressed(event)" onkeyup="return keyUp(event)" onload="setXformClass ()">
..............
</body>
??
d00m вне форума   Ответить с цитированием
Старый 19.10.2014, 21:58   #9
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: передать нажатия клавиатуры через wifi на arduino+mr3020

Цитата:
он есть в каждой кнопке, и я не пойму причем тут mouse?
Это для работы с тачкрином на телефоне и планшете

Цитата:
но почему при ОТПУСКАНИИ клавиши мышки отправляется одинаковый код ?
Для коректной работы робота, пока держим клавишу он двигается, отпускаем он останавливается
Admin вне форума   Ответить с цитированием
Старый 19.10.2014, 22:24   #10
d00m
Senior Member
 
Регистрация: 06.11.2012
Сообщений: 153
Вес репутации: 0
d00m is an unknown quantity at this point
По умолчанию Re: передать нажатия клавиатуры через wifi на arduino+mr3020

ага, тоже понятно, спасибо..

чую, буду много спрашивать таких примитивных вещей.

вот например, у вас в файле uart.cgi такой код:

Код:
root@hobot:~# cat /www/cgi-bin/modules/CyberBot2/uart.cgi 
#!/bin/sh
#Copyright (C) 2013 cyberwrt.ru, cyber-place.ru, mp3car.ru
echo $QUERY_STRING > /dev/ttyUSB0
echo $QUERY_STRING > /dev/ttyACM0
echo $QUERY_STRING > /dev/ttyATH0
echo "202"
непонятно зачем 202 ?

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

root@hobot:~# echo cl > /dev/ttyUSB0

серва не двигается

но получается с printf

root@hobot:~# printf cl > /dev/ttyUSB0

все нормально отрабатывает.

строка инициализации в rc.local сформирована с помощью вашего модуля
Драйвер_FTDI (я все таки установил некоторые ваши модули на свой openwrt trunk)

Код:
root@hobot:~# cat /etc/rc.local 
stty -F /dev/ttyUSB0 cs8 115200 clocal ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts -hupcl
# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.

exit 0
d00m вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 02:30. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика