roboforum.ru

Технический форум по робототехнике.
Текущее время: 02 дек 2024, 15:56

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 754 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7 ... 51  След.
Автор Сообщение
 Заголовок сообщения: Робот на базе роутера D Link DIR-320
СообщениеДобавлено: 14 фев 2011, 07:33 
Не в сети

Зарегистрирован: 06 июн 2008, 05:26
Сообщения: 70
Откуда: Уссурийск
==================================================================================================================
Вставка от =DeaD=

ВНИМАНИЕ!!! На рынке сейчас часто вместо DIR-320 продаётся DIR-320NRU - это совершенно другой по железу роутер и всё что тут описано к нему не имеет отношения. Будьте бдительны!

На текущий момент задача проброски видео и уарта на роутере D-Link DIR-320 решена полностью, при этом в рамках флеш-памяти роутера, т.е. для работы подключение каких-то флешек или usb-хабов не требуется.

Порядок модификации роутера для этой задачи подробно описан в вики на странице [[DIR-320]].

Кроме того от пользователя d3xr есть описание установки прошивки OpenWrt на DIR-320, оно находится на странице [[OpenWrt]]
==================================================================================================================


Вдохновленный темой http://roboforum.ru/forum40/topic5222.html, задумался над созданием робота на базе этого роутера. Первоначальный функционал - управляемый с компьютера робот по каналу Wi-Fi. Робот прошит (так скажем, не без усилий) прошивкой от http://vampik.ru/. На нем завелась Linux-подобная операционка, можно подключиться Телнетом. Задача первая научиться рулить роботом посредством операционной системы. На борту есть USB порт, говорят есть UART. Вот его лицо
Вложение:
face.jpg
face.jpg [ 177.62 КиБ | Просмотров: 125866 ]
, а это спина
Вложение:
back.jpg
back.jpg [ 67.88 КиБ | Просмотров: 125407 ]
.

_________________
Орфография и стилистика автора сохранены.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Робот на базе роутера D Link DIR-320
СообщениеДобавлено: 27 фев 2011, 23:24 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
В прошивках vampik нету поддержки UVC-вебкамер, поэтому сразу нет :)

Добавлено спустя 27 минут 7 секунд:
Всё, buildroot поставил, сейчас буду пробовать написать и скомпилировать "Hello World!" :)

Добавлено спустя 13 минут 29 секунд:
Ура! "Hello world!" успешно собрался и запустился! :Yahoo!:

Завтра продолжим изыскания :oops:

Протокол телодвижений записан в [[DIR-320]], желающие присоединиться - приветствуются!
Кстати, никто не знает более разумного способа ввода текста программы в файл, чем "echo ... >> файл" ?

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Робот на базе роутера D Link DIR-320
СообщениеДобавлено: 28 фев 2011, 07:58 
Не в сети

Зарегистрирован: 06 июн 2008, 05:26
Сообщения: 70
Откуда: Уссурийск
Настройте ssh и можно писать прямо с компа. В приложении клиент.


Вложения:
winscp310.rar [701.3 КиБ]
Скачиваний: 0

_________________
Орфография и стилистика автора сохранены.
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Робот на базе роутера D Link DIR-320
СообщениеДобавлено: 28 фев 2011, 10:08 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
В каком смысле "писать прямо с компа" ? Там текстовый редактор что-ли будет или возможность кинуть файл с компа? Я так думаю должна быть какая-то простая возможность кинуть файл с компа или закачать его с роутера запросом, чтобы без этих наворотов с SSH, или я ошибаюсь?

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Робот на базе роутера D Link DIR-320
СообщениеДобавлено: 28 фев 2011, 11:49 
Не в сети

Зарегистрирован: 27 авг 2008, 10:45
Сообщения: 1981
Откуда: Харьков
прог. языки: С/С++
SCP (Secure Copy Protocol) и SFTP - протоколы передачи файлов через ssh. WinSCP поддерживает их оба. Т.е. да, можно будет переливать файлики туда-сюда между роутером и ПК. Но это только в том случае, если dropbear, который живет в dd-wrt, эти протоколы поддерживает.

Судя по вот этому https://www.dd-wrt.com/wiki/index.php/SFTP_with_DD-WRT - для поддержки sftp нужно родного демона менять на неродного. А вот scp может поддерживаться и "из коробки" - пробовать надо.

Пы.Сы Если надо просто залить мелкий скрыпт - я набираю его в блокноте, а потом Ctrl-A Ctrl-C и в PuTTY набираю 'cat >/etc/super-puper.conf', потом правой кнопкой вставляю и по Ctrl-D завершаю создание файла.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Робот на базе роутера D Link DIR-320
СообщениеДобавлено: 28 фев 2011, 11:57 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Я видимо тоже пока через Ctrl+C, Ctrl+V буду работать :)

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Робот на базе роутера D Link DIR-320
СообщениеДобавлено: 28 фев 2011, 12:37 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

Зарегистрирован: 18 сен 2006, 12:26
Сообщения: 18018
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич
а для пущей красоты через SSH нужно пробросить компорт роутера :)
дабы на компе программы могли напрямую общаться с железным компортом роутера )

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

_________________
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Робот на базе роутера D Link DIR-320
СообщениеДобавлено: 28 фев 2011, 12:41 
Не в сети

Зарегистрирован: 06 июн 2008, 05:26
Сообщения: 70
Откуда: Уссурийск
Откуда взяли, что в прошивке от vampik нету поддержки UVC-веб камер?

_________________
Орфография и стилистика автора сохранены.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Робот на базе роутера D Link DIR-320
СообщениеДобавлено: 28 фев 2011, 13:52 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Вот тут: http://wl500g.info/showthread.php?t=17641
Только в 1.в. сказано, что есть поддержка UVC-камер.

А что, у vampik'овской тоже есть поддержка?

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Робот на базе роутера D Link DIR-320
СообщениеДобавлено: 28 фев 2011, 14:42 
Не в сети

Зарегистрирован: 06 июн 2008, 05:26
Сообщения: 70
Откуда: Уссурийск
Я полагаю нужно добавить "Автоматическое монтирование флешки

echo “#!/bin/sh” > /usr/local/sbin/post-mount
echo “mount /dev/scsi/host0/bus0/target0/lun0/part1 /opt” >> /usr/local/sbin/post-mount
chmod +x /usr/local/sbin/post-mount
flashfs save
flashfs commit
flashfs enable

Файл «post-mount» выполняется системой на автомате после монтирования дисков, а последние три строки сохраняют изменения во встроенной памяти роутера. Не забывай выполнять их, иначе рискуешь потерять данные после перезагрузки!"

_________________
Орфография и стилистика автора сохранены.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Робот на базе роутера D Link DIR-320
СообщениеДобавлено: 28 фев 2011, 14:58 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Потерять данные или монтирование? По идее подмонтировал снова и данные снова на месте, или я что-то забываю?

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Робот на базе роутера D Link DIR-320
СообщениеДобавлено: 28 фев 2011, 22:57 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
esprit писал(а):
Во вложении исходники сервера и клиента.

Я так понимаю там простое эхо? Весь реальный обмен с UART портом закомментирован до лучших времен? :)
Я думаю можно уже начать отлаживать UART обмен тупо замкнув через резистор RX и TX на разъеме роутера :)

Добавлено спустя 27 минут 32 секунды:
Основной цикл, который надо переделать на уарт с обычного эха сокета:
Код:
    while(1)
    {
        sock = accept(listener, NULL, NULL);
        if(sock < 0)
        {
         perror("Can't bind port");
         close(sock);
         return -1;
        }
        printf("Connect accepted\n");
        while(1)
        {
            bytes_read = recv(sock, buf, 1, 0);
           if(bytes_read <= 0) break;
//            write(fd, buf, 4);
//            if (n < 0)
//                 printf("write() of 4 bytes failed!\n", stderr);
          printf("Data accepted\n:%s",buf);
//              printf(buf);
            send(sock, buf, bytes_read, 0);
        }
   
        close(sock);
    }


Добавлено спустя 1 час 5 минут 45 секунд:
Я что-то окончательно чумею, а есть какой-то метод проверить ждёт ли меня в буфере последовательного порта символ или нет? А то read() завешивает программу пока что-нибудь не поступит.

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Робот на базе роутера D Link DIR-320
СообщениеДобавлено: 28 фев 2011, 23:42 
Не в сети
Аватара пользователя

Зарегистрирован: 21 май 2007, 22:57
Сообщения: 600
Откуда: Калининград
прог. языки: C++
есть :)
тэээкс... сейчас загляну в закрома кода :)

вот так можно узнать, есть ли данные для считывания:
Код:
int bytes;
ioctl(port_fd, FIONREAD, &bytes);
return bytes;

_________________
RoboCraft.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Робот на базе роутера D Link DIR-320
СообщениеДобавлено: 01 мар 2011, 00:36 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Я еще пытаюсь правильней сделать - через select
Но пока не очень получается :(

Добавлено спустя 6 минут 9 секунд:
А, всё, нашел свой косяк, первый параметр в select кривой передаю :)

Добавлено спустя 20 минут 47 секунд:
esprit писал(а):
http://dipcore.com/wp-content/uploads/2010/05/dir320_UART_pinout.jpg

А это проверенная распиновка? А то когда я на ней Rx и Tx замыкаю через 6.8кОм резистор - у меня роутер умирает и не возвращается в чувство, пока перемычку не уберу....

Добавлено спустя 1 минуту 9 секунд:
Актуальный исходник программы suart.c для проброса сокета в уарт и обратно с использованием select:
Код:
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdio.h>
#include <unistd.h> /* UNIX standard function definitions */
#include <fcntl.h> /* File control definitions */
#include <errno.h> /* Error number definitions */
#include <termios.h> /* POSIX terminal control definitions */

int main(int argc, char *argv[])
{
    int sock_fd, listener;
    struct sockaddr_in addr;
    char buf[1];
    int bytes_read;

    listener = socket(AF_INET, SOCK_STREAM, 0);
    if(listener < 0)
    {
      perror("Can't create  socket");
      return -1;
    }
   
    addr.sin_family = AF_INET;
    addr.sin_port = htons(3000);
    addr.sin_addr.s_addr = htonl(INADDR_ANY);
    if(bind(listener, (struct sockaddr *)&addr, sizeof(addr)) < 0)
    {
     perror("Can't bind port");
     close(sock_fd);
     return -1;
    }

    listen(listener, 1);
   
//    printf("Listening port   :%s\n",prt);


int tty_fd; /* File descriptor for the port */
int n;
struct termios options;

tty_fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NONBLOCK);
if (tty_fd == -1) perror("open_port: Unable to open /dev/ttyS0 - ");
else
{
fcntl(tty_fd, F_SETFL, 0);

tcgetattr(tty_fd, &options);
cfmakeraw(&options);

/************************************************************************/
// c_cflag
options.c_cflag |= CS8;
options.c_cflag |= PARENB;
options.c_cflag &= ~CSTOPB;
options.c_cflag |= CREAD; // Enable Receiver
options.c_cflag |= CLOCAL; // Ignore modem control lines.

cfsetispeed(&options, B115200);
cfsetospeed(&options, B115200);

tcsetattr(tty_fd, TCSAFLUSH, &options);
tcflush(tty_fd, TCIOFLUSH); /**/
}


    while(1)
    {
        sock_fd = accept(listener, NULL, NULL);
        if(sock_fd < 0)
        {
         perror("Can't bind port");
         close(sock_fd);
         return -1;
        }
        printf("Connect accepted\n");
        while(1)
        {

          fd_set rfds;
          struct timeval tv;
          int retval;
          int nfds=tty_fd+1;
          if(sock_fd>tty_fd) nfds=sock_fd+1;

          FD_ZERO(&rfds);
          FD_SET(tty_fd, &rfds);
          FD_SET(sock_fd, &rfds);

          tv.tv_sec = 10;
          tv.tv_usec = 0;
          retval = select(nfds, &rfds, NULL, NULL, &tv);

          /* Не полагаемся на значение tv! */
          if (retval)
          {
            printf("Some data available.\n");
            if (FD_ISSET(tty_fd, &rfds))
            {
              bytes_read = read(tty_fd, buf, 100);
              send(sock_fd, buf, bytes_read, 0);
              buf[bytes_read]=0;
              printf("=>Socket: %s\n",buf);
            };
            if (FD_ISSET(sock_fd, &rfds))
            {
              bytes_read = recv(sock_fd, buf, 1, 0);
              if(bytes_read <= 0) break;
              write(tty_fd, buf, bytes_read);
              buf[bytes_read]=0;
              printf("Socket=>: %s\n",buf);
            };
          }
          else
            printf("No data in 10 seconds.\n");

        }
   
        close(sock_fd);
    }
   
    return 0;
}


Добавлено спустя 20 минут 56 секунд:
Похоже проблема не в распиновке, только не знаю как подступиться, завтра будут осциллографом тыкать в контакты.

В общем при старте видимо нельзя замыкать RX/TX, потому как там консоль отладочная похоже, а при работе очень оно к статике чувствительно, перезагружает на раз-два видимо.

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Робот на базе роутера D Link DIR-320
СообщениеДобавлено: 01 мар 2011, 12:08 
Не в сети

Зарегистрирован: 27 авг 2008, 10:45
Сообщения: 1981
Откуда: Харьков
прог. языки: С/С++
Цитата откуда-то с инета:

Если необходимо использовать этот uart порт для других целей (наиболее часто используют для шаринга с ресиверами без lan порта, подключения GPS, можно также подключить микроконтроллер и взаимодействовать с ним через uart) необходимо отключить отладочную консоль от /dev/ttyS0. Необходимо ввести команды:
Код:
nvram set kernel_args="root=/dev/mtdblock2 rootfstype=squashfs,ext3 noinitrd init=/linuxrc console=null"
nvram commit


И перезагрузиться. Вернуть все назад можно командой:

Код:
nvram set kernel_args="root=/dev/mtdblock2 rootfstype=squashfs,ext3 noinitrd init=/linuxrc console=/dev/ttyS0"
nvram commit


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Робот на базе роутера D Link DIR-320
СообщениеДобавлено: 01 мар 2011, 12:36 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
2boez: Да, это я уже записал себе в заметки на предыдущей странице post198262.html#p198262

Сегодня вечером буду двигаться дальше.

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 754 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7 ... 51  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15


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

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO