Камера включена, трансляция идёт, ардуина пыхтит. Если кому интересно - можете попробовать в действии. Только мне потом напишите, нормуль или глюки есть.
Там щас пустая комната, только телик работает. Катюха по квартире ща полуголая бегает, но в зал я сказал ей не входить шоп не палиться :-D
UPD> Новое тестирование, на работе. Попугай сначала атаковал камеру, потом вроде к ней привык, даж на её дергания внимания не обращает.
UPD> Было удачной идеей камеру поставить в кабинете где попугай живёт :-)
Полный размер Питрович на монике позирует перед вебкамерой
UPD> Тестирование продолжил дома. Камеру, как и в прошлый раз, в зал поставил перед теликом (чтоб было хоть что-то движущееся в кадре). Первое время там Вика тусила, постоянно порывалась камеру свернуть набок.
Через некоторое время трансляцию смотрело 20 человек, и многие из них пробовали покрутить камерой. Краш-тест устроили неслабый, несколько раз камера со стульчика по инерции падала от резких движений (не очень тяжёлое основание к которому прикручены сервы). Но вскоре мне на глаза попался штатив от фотика и моток скотча. Так что камеру с сервами и деревянной дощечкой-основанием благополучно прикрутил к штативу. Неэстетично, зато дёшево удобно и практично.
В добавок, рядом поставил вторую камеру (стационарную) и направил её на управляемую. В итоге сразу видно картинку с управляемой камеры и саму камеру. Удобно.
Тестирование прошло удачно, только вот режим обучения пока тупит, надо допиливать. Народ вроде хвалит, говорят что очень высокая скорость реакции. Эт и правда неплохо получилось, учитывая что команды через интернет с удалённого сервера принимаются. Задержка очень маленькая, буквально доли секунды. С видео немного хуже дела обстоят - смотри.ком частенько тупить начинает.
Телек зачем - буду твой смотреть :-). А в остальном достойно. Только ньюанс - 180 гр. нормально смотришь, а дальше вверх ногами, однако быстро привыкаешь :-).
Конструкция такая. Ноль градусов - чуть ниже горизонта смотрит, 90 градусов - примерно зенит, 180 - опять горизонт, но противоположный :-) А по горизонтали обзор градусов 160 где-то. Я тут нафотал камеру, выложу, сам посмотришь.
Насчёт канала - я ж без звука показываю, знач неполноценное вещание :-) А СТС дополнительная реклама вряд ли повредит. Эт на время тестирования поставил у телика, чтоб видеть когда смотри.ком тормозить начнёт.
Кстати, попугай - зараза. За то время, что ноут сегодня на работе простоял, эта жёлтая зараза ему надкусила провод от зарядки и провода от обеих серв понадкусывал.
Что-то непонятно с режимом обучения. Ставишь галку, мышью ведешь из точки а в точку б, убираешь галку, жмешь play, по идее она автоматом должна переместится по этому маршруту как я понял. Однако на самом деле ее колбасит и довольно продолжительное время. Так, что это не хулиганство, она сама со стула прыгает :-).
Я на некоторое время управление только одному кому-то оставлял, когда её совсем уж закрутили. Плюс пришлось идти на хитрость - управление работает по рэндому, три шанса из десяти.
Ну, такую возможность предусмотрел, но пока не ограничивал. По-этому в крайних положениях иногда слегка скрежет слышен. У самих серв угол охвата примерно чуть меньше 180 градусов.
Ну, за ларьком именно через такое наблюдать, наверное, не ахти будет. Эт вам нужно что-то готовое, а не такой набор "сделай сам" :-) И надо чтоб в ларьке интернет был. Можно и Йотой, в принципе, обойтись.
Да какой тут ворклог. Приделал сервы к ардуине, набросал скетч, наваял вебморду и запустил в тестирование. Конструкция наипростейшая, тут даж ничего изобретать не пришлось.
Добрый вечер, дуинка при попытке повторить выдает следующее error: 'class String' has no member named 'contains' error: cannot convert 'String' to 'const char*' for argument '1' to 'int atoi(const char*)'
где встречается contains можно заменить на indexOf, только условие надо делать >=0 или !=-1. Т.е., к примеру, if (buffer.contains("{11}")) заменить на if (buffer.indexOf("{11}")>=0) или if (buffer.indexOf("{11}")!=-1)
Всё-таки посеял я ту строковую либу, с которой тогда делал. Всё компилилось ништяг.
Суть проблемы по второй ошибке - функция atoi хочет параметр типа char *, а ей подсовывают String. Влоб - надо String преобразовать в char *, для этого можно вот так сделать:
У меня щас ещё ругаецо на buffer.append(c), это можно заменить на buffer += c; Потом снова ругается на переопределение String, тут уж можно закомментить #include <WString.h>
Если честно, я не ожидал что этот мой бредокод кому-нить пригодится, так что написано тяп-ляп :-) Я всегда так, когда делаю что-нить для проверки мысли - о продолжении не думаю. Эдакий POC (Proof Of Concept), потом обычно переписываю если надобность возникает. Но этот код для той камеры переписывать не буду ибо щас уже намного удобнее управление реализовал.
2 Гость: В скетче MAC или ip менял? Если поменять MAC, но оставить прошлый айпишник - свич с ума сразу сойдёт ибо в ARP таблице помнит прошлое соответствие MAC-ip.
А скажи еще пжст. ты Ардуинку запитывал от юбшного питания или БП, что то у меня выбивает на области управления мыши когда 2 сервы подключенны, очень большое подозрение что не хватает питания.
хм, странно у меня тоже "Micro Servo 9G" - аналог твоим, но при задействовании одновреманном двх серв ардуинка уходит в ребут ... ща буду колдовать с БП ..... хочу переделать двой скриптик для управления через веб-морду робо-машиной с камерой крутящейся на башке ... (очень кстате многофункциональная твоя идея по правлению)
для управления движение машинки. 1. Поле "Вперед и Влево" 2. Вперед 3. Вперед и Вправо 4. стоп 5 ..ну и назад так же
что б при наведении мыши на соответственное поле в БД отсылался индекс (к примеру на поле 1 - записали 1 ) ну а на Ардуине будет что то прхоже твоей системы, по ГЕТ вытянули, поехали, повернули, встали ..
как думаешь сработает система ? и пжс. где можно покопать на функцию обработки движения мыши нормальную инфу (гугл много мусора выдает)
2 Гость: Ща пока следующую бутылку не принесли, могу сказать следующее. Схема с GET-запросами проста в реализации, но ущербна ибо слишком уж примитивна. Когда я делал управление микромашинками, сначала как раз GET-ами и делал. Эт называется умным словом polling. Но почти сразу же пришлось от такого отказаться ибо задержка великовата. Так что совет - забить на этот поллинг и делать на базе TCP (ну или UDP пакетов). Т.е сразу клиент-серверную архитектуру бацать ибо намного удобнее универсальнее и шустрее.
Всё, пошёл за следующим бухлом а то уже всё кончилось.
вот так вот. ща буду читать как это организовать. если не влом вот мое мыло 0fess0@gmail.com черкани завтра пжст. как с тобой связаться. если не влом ;) Хорошей пъянки )
Добрый вечер! Можете подсказать как правильно считать Ардуинкой данные после GET запроса? С записью данных в БД у меня все получилось! А вот вытащить кусок вашего кода, для считывания ответа от скрипта, который делает выборку из БД у меня не получается((
Сергей, добрый день. Наткнулся на вашу статью на geektimes. Отличный проект. Ему уже 5 лет, но может вы вспомните и сможете ответить, как вы организовали трансляцию видео с камеры на сайт? Спасибо.
Да, Сергей, все просто, когда знаешь как)) Я хочу робота телеприсутствия собрать, но пока больше запутался, чем подобрался к истине. Вот здесь (http://cyber-place.ru/showthread.php?t=2069)я задавал вопрос и описал проблемы, которые мне пока видятся. Если вас не затруднит, поделитесь опытом, пожалуйста, где мне об этом "намного проще" почитать?)) Спасибо.
Автору спасибо, статья хоть и старая но полезная, я немного подредактировал скетч под версию IDE 1.6 и все отлично работает. В данный момент все работает на связке - роутер TP-Link MR3420 с прошивкой openwrt, на которой поднят веб-сервер и база данных, вебка, которая стримит mjpeg поток в сеть, ну и собственно сама ардуина с сервами. Если еще возможно кто-то хочет сделать подобный рабочий экземпляр, пишите на почту: skillage@mail.ru
SysCat Вторник, 9 Ноября, 2010 22:30 цитировать ссылка на коммент
Гость Вторник, 9 Ноября, 2010 23:37 цитировать ссылка на коммент
Gol Вторник, 9 Ноября, 2010 23:39 цитировать ссылка на коммент
Gol Вторник, 9 Ноября, 2010 23:39 цитировать ссылка на коммент
Гость Вторник, 9 Ноября, 2010 23:45 цитировать ссылка на коммент
Гость Вторник, 9 Ноября, 2010 23:48 цитировать ссылка на коммент
Gol Вторник, 9 Ноября, 2010 23:53 цитировать ссылка на коммент
Насчёт канала - я ж без звука показываю, знач неполноценное вещание :-) А СТС дополнительная реклама вряд ли повредит. Эт на время тестирования поставил у телика, чтоб видеть когда смотри.ком тормозить начнёт.
SysCat Среда, 10 Ноября, 2010 09:40 цитировать ссылка на коммент
SysCat Среда, 10 Ноября, 2010 20:33 цитировать ссылка на коммент
Katenok Среда, 10 Ноября, 2010 21:34 цитировать ссылка на коммент
Лиска Среда, 10 Ноября, 2010 22:48 цитировать ссылка на коммент
это у мамы чтоли 1+? O_o
Gol Среда, 10 Ноября, 2010 22:56 цитировать ссылка на коммент
Katenok Четверг, 11 Ноября, 2010 07:44 цитировать ссылка на коммент
Гость Четверг, 11 Ноября, 2010 10:41 цитировать ссылка на коммент
Гость Четверг, 11 Ноября, 2010 16:48 цитировать ссылка на коммент
Gol Четверг, 11 Ноября, 2010 17:29 цитировать ссылка на коммент
Гость Четверг, 11 Ноября, 2010 22:56 цитировать ссылка на коммент
Гость Четверг, 11 Ноября, 2010 22:56 цитировать ссылка на коммент
Gol Четверг, 11 Ноября, 2010 23:12 цитировать ссылка на коммент
Gol Четверг, 11 Ноября, 2010 23:13 цитировать ссылка на коммент
Гость Четверг, 11 Ноября, 2010 23:23 цитировать ссылка на коммент
Gol Четверг, 11 Ноября, 2010 23:30 цитировать ссылка на коммент
Гость Четверг, 11 Ноября, 2010 23:48 цитировать ссылка на коммент
Gol Четверг, 11 Ноября, 2010 23:52 цитировать ссылка на коммент
Гость Четверг, 11 Ноября, 2010 23:56 цитировать ссылка на коммент
Gol Пятница, 12 Ноября, 2010 00:13 цитировать ссылка на коммент
Гость Пятница, 12 Ноября, 2010 00:17 цитировать ссылка на коммент
Gol Пятница, 12 Ноября, 2010 00:36 цитировать ссылка на коммент
Гость Пятница, 12 Ноября, 2010 12:04 цитировать ссылка на коммент
Гость Пятница, 12 Ноября, 2010 22:09 цитировать ссылка на коммент
Gol Пятница, 12 Ноября, 2010 22:19 цитировать ссылка на коммент
Гость Суббота, 13 Ноября, 2010 14:43 цитировать ссылка на коммент
Gol Суббота, 13 Ноября, 2010 14:58 цитировать ссылка на коммент
Гость Суббота, 13 Ноября, 2010 16:53 цитировать ссылка на коммент
Gol Воскресенье, 14 Ноября, 2010 11:33 цитировать ссылка на коммент
Гость Воскресенье, 14 Ноября, 2010 13:17 цитировать ссылка на коммент
Gol Воскресенье, 14 Ноября, 2010 15:28 цитировать ссылка на коммент
Гость Четверг, 18 Ноября, 2010 00:27 цитировать ссылка на коммент
Gol Четверг, 18 Ноября, 2010 00:45 цитировать ссылка на коммент
Гость Пятница, 19 Ноября, 2010 09:51 цитировать ссылка на коммент
mskvmail@mail.ru
Gol Пятница, 19 Ноября, 2010 10:43 цитировать ссылка на коммент
Гость Суббота, 20 Ноября, 2010 22:37 цитировать ссылка на коммент
Gol Понедельник, 22 Ноября, 2010 00:54 цитировать ссылка на коммент
makis Суббота, 27 Ноября, 2010 19:35 цитировать ссылка на коммент
Ща скачал твои сырцы Пойду разбираться
У меня на работе(дежурка) тоже попугай-волнистый и две морские черепахи живут.
Гость Четверг, 24 Февраля, 2011 16:57 цитировать ссылка на коммент
Гость Пятница, 4 Мая, 2012 01:11 цитировать ссылка на коммент
Прошу ответить на почту chistic@inbox.ru
Заранее спасибо!)
Гость Суббота, 5 Мая, 2012 21:46 цитировать ссылка на коммент
error: 'class String' has no member named 'contains'
error: cannot convert 'String' to 'const char*' for argument '1' to 'int atoi(const char*)'
Gol Суббота, 5 Мая, 2012 22:06 цитировать ссылка на коммент
if (buffer.contains("{11}"))
заменить на
if (buffer.indexOf("{11}")>=0) или if (buffer.indexOf("{11}")!=-1)
Gol Суббота, 5 Мая, 2012 22:06 цитировать ссылка на коммент
Gol Суббота, 5 Мая, 2012 22:20 цитировать ссылка на коммент
Суть проблемы по второй ошибке - функция atoi хочет параметр типа char *, а ей подсовывают String. Влоб - надо String преобразовать в char *, для этого можно вот так сделать:
char strbuf [5];
PString(strbuf, sizeof(strbuf), value);
и далее уже val1 = atoi(strbuf);
Т.е. кусок
val1 = atoi(value1);
val2 = atoi(value2);
Меняй на
char strbuf [5];
PString(strbuf, sizeof(strbuf), value1);
val1 = atoi(strbuf);
PString(strbuf, sizeof(strbuf), value2);
val1 = atoi(strbuf);
Криво, но сработает :-)
Gol Суббота, 5 Мая, 2012 22:24 цитировать ссылка на коммент
Потом снова ругается на переопределение String, тут уж можно закомментить #include <WString.h>
Gol Суббота, 5 Мая, 2012 22:26 цитировать ссылка на коммент
Гость Суббота, 5 Мая, 2012 22:37 цитировать ссылка на коммент
Гость Суббота, 5 Мая, 2012 22:38 цитировать ссылка на коммент
Gol Суббота, 5 Мая, 2012 22:41 цитировать ссылка на коммент
Gol Суббота, 5 Мая, 2012 22:43 цитировать ссылка на коммент
Gol Суббота, 5 Мая, 2012 22:44 цитировать ссылка на коммент
Это был мой первый опыт с Ардуиной :-)
Гость Суббота, 5 Мая, 2012 22:45 цитировать ссылка на коммент
error: ISO C++ forbids declaration of 'String' with no type
Gol Суббота, 5 Мая, 2012 22:51 цитировать ссылка на коммент
Эт на какой строчке? #include <WString.h> в самом верху закомментил?
Гость Суббота, 5 Мая, 2012 23:05 цитировать ссылка на коммент
Gol Суббота, 5 Мая, 2012 23:06 цитировать ссылка на коммент
Так заголовок выглядит?
#include <SPI.h>
#include <Ethernet.h>
#include <Servo.h>
#include <PString.h>
//#include <WString.h>
Гость Суббота, 5 Мая, 2012 23:09 цитировать ссылка на коммент
Gol Суббота, 5 Мая, 2012 23:11 цитировать ссылка на коммент
Ссылку на рулилку - в студию!
Гость Суббота, 5 Мая, 2012 23:51 цитировать ссылка на коммент
Duplicate entry '1' for key 'cam_id'Не могу подключиться к БД
Gol Суббота, 5 Мая, 2012 23:55 цитировать ссылка на коммент
Поле cam_id в базе уникальное должно быть, а судя по ошибке у тебя несколько записей с одинаковым полем cam_id
Гость Воскресенье, 6 Мая, 2012 00:11 цитировать ссылка на коммент
Гость Воскресенье, 6 Мая, 2012 21:25 цитировать ссылка на коммент
Gol Воскресенье, 6 Мая, 2012 22:16 цитировать ссылка на коммент
на поле id автоинкремент стоит? Покажи структуру БД и скрипт который пишет в БД
Гость Воскресенье, 6 Мая, 2012 22:23 цитировать ссылка на коммент
Скоро ссылка будет в студии)))
Gol Воскресенье, 6 Мая, 2012 22:33 цитировать ссылка на коммент
Т.е. не было автоинкремента?
Гость Воскресенье, 6 Мая, 2012 22:52 цитировать ссылка на коммент
Gol Понедельник, 7 Мая, 2012 00:11 цитировать ссылка на коммент
В скетче MAC или ip менял? Если поменять MAC, но оставить прошлый айпишник - свич с ума сразу сойдёт ибо в ARP таблице помнит прошлое соответствие MAC-ip.
Гость Воскресенье, 3 Июня, 2012 01:59 цитировать ссылка на коммент
Текущее действие: Duplicate entry '1' for key 'cam_id'Не могу подключиться к БД
автоинкримент стоит на ИД , делает первую запись и выбивает еррор
таблицу создавал по коду твоему
CREATE TABLE `servo` (
`id` smallint(6) NOT NULL AUTO_INCREMENT,
`cam_id` tinyint(4) NOT NULL,
`action` varchar(20) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `cam_id` (`cam_id`)
) ENGINE=MEMORY DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;
такое ощушение что он в КАМ_ИД постоянно гонит 1 и после второй попытки говорит - шишку ... может есть идеи ?
Гость Воскресенье, 3 Июня, 2012 04:06 цитировать ссылка на коммент
увидел вот это
$result = dbquery('INSERT INTO servo SET cam_id=1, action="'.$act.'" ');
Гость Воскресенье, 3 Июня, 2012 04:12 цитировать ссылка на коммент
UNIQUE KEY `cam_id` (`cam_id`)
на
INDEX `cam_id` (`cam_id`)
все работает.
Gol Воскресенье, 3 Июня, 2012 05:27 цитировать ссылка на коммент
Ну эт да, UNIQUE на cam_id и не нужен, я даж хз откуда он там взялся :-)
Гость Воскресенье, 3 Июня, 2012 14:42 цитировать ссылка на коммент
Gol Воскресенье, 3 Июня, 2012 14:52 цитировать ссылка на коммент
От блока питания, но очень хиленького (то ли 200, то ли 300 мА). Но у меня и сервы слабенькие были, ток что им хватало.
Гость Воскресенье, 3 Июня, 2012 14:57 цитировать ссылка на коммент
Гость Воскресенье, 3 Июня, 2012 20:09 цитировать ссылка на коммент
(уменьшенный размер)
_____ _____ _____
| | | |
| 1 | 2 | 3 |
|_____|_____|_____|
| |
| 4 |
_____|_____|_____
| | | |
| 5 | 6 | 7 |
|_____|_____|_____|
для управления движение машинки.
1. Поле "Вперед и Влево"
2. Вперед
3. Вперед и Вправо
4. стоп
5 ..ну и назад так же
что б при наведении мыши на соответственное поле в БД отсылался индекс (к примеру на поле 1 - записали 1 ) ну а на Ардуине будет что то прхоже твоей системы, по ГЕТ вытянули, поехали, повернули, встали ..
как думаешь сработает система ?
и пжс. где можно покопать на функцию обработки движения мыши нормальную инфу (гугл много мусора выдает)
Спасибо =)
Гость Воскресенье, 3 Июня, 2012 20:13 цитировать ссылка на коммент
Gol Воскресенье, 3 Июня, 2012 20:55 цитировать ссылка на коммент
Ухх, слушай, у нас тут ща воскресная пьянка, так что давай завтра подскажу
Гость Воскресенье, 3 Июня, 2012 20:57 цитировать ссылка на коммент
Gol Воскресенье, 3 Июня, 2012 21:03 цитировать ссылка на коммент
Ща пока следующую бутылку не принесли, могу сказать следующее. Схема с GET-запросами проста в реализации, но ущербна ибо слишком уж примитивна. Когда я делал управление микромашинками, сначала как раз GET-ами и делал. Эт называется умным словом polling. Но почти сразу же пришлось от такого отказаться ибо задержка великовата. Так что совет - забить на этот поллинг и делать на базе TCP (ну или UDP пакетов). Т.е сразу клиент-серверную архитектуру бацать ибо намного удобнее универсальнее и шустрее.
Всё, пошёл за следующим бухлом а то уже всё кончилось.
Гость Воскресенье, 3 Июня, 2012 21:08 цитировать ссылка на коммент
ща буду читать как это организовать.
если не влом вот мое мыло 0fess0@gmail.com
черкани завтра пжст. как с тобой связаться.
если не влом ;)
Хорошей пъянки )
Спасибо большое за совет ;)
Гость Воскресенье, 9 Февраля, 2014 20:49 цитировать ссылка на коммент
Гость Четверг, 13 Февраля, 2014 12:45 цитировать ссылка на коммент
Гость Четверг, 20 Февраля, 2014 11:34 цитировать ссылка на коммент
ну вообще дело было в ноябре 2010 года - 3,5 года назад...
Гость Четверг, 24 Июля, 2014 11:21 цитировать ссылка на коммент
#1064 - You have an error in your SQL syntax near 'ENGINE = MEMORY DEFAULT CHARSET = cp1251 AUTO_INCREMENT =1' at line 5
почему база не работает?
Gol Пятница, 25 Июля, 2014 10:54 цитировать ссылка на коммент
А фиг её знает, эт много лет назад было, я уж не помню а заново лезть совсем не хочется
fapw Пятница, 23 Октября, 2015 15:19 цитировать ссылка на коммент
Gol Понедельник, 26 Октября, 2015 18:44 цитировать ссылка на коммент
Ну блин ты вспомнил былые годы. С тех пор уж всё намного проще стало :-)
fapw Среда, 28 Октября, 2015 15:29 цитировать ссылка на коммент
Гость Среда, 13 Января, 2016 19:03 цитировать ссылка на коммент