Тележка с манипулятором и брандспойтом

Обсуждаем рождающиеся мысли и результаты экспериментов.

Re: Тележка с манипулятором и брандспойтом

Сообщение lorry » 24 окт 2014, 00:45

Спокойной ночи!
Аватара пользователя
lorry
 
Сообщения: 448
Зарегистрирован: 04 фев 2014, 13:53
Откуда: Комсомольск-на-Амуре
прог. языки: машинные коды
ФИО: Иван Иваныч

Re: Тележка с манипулятором и брандспойтом

Сообщение ALS » 24 окт 2014, 00:48

slom, дружище, ты только не накосяч.
В баню IDE.

В TREX уже залита прошивка, которая позволяет управлять всем хозяйством "из коробки".
https://www.sparkfun.com/products/12075
читаем User Manual, на пятой странице :
Sample Code:
The T’REX robot controller comes pre-loaded with the “Arduino Nano w/ 328” bootloader
and sample code that lets you use the controller right out of the box.

На стр. 9-12 подробно расписан протокол.
Управление девайсом - пакетами по 27 байт, инфа с датчиков и проч - пакеты по 24 байта.

Т.о. тебе для начала надо запустить на компе любую терминальную программу и в соответствии с мануалом попробовать подать туда пакет, руководствуясь описанием.
А полезешь сейчас программировать дуню - это тебе недели на две никчемного разбирательства с тем, что тебе пока в принципе не нужно.
Последний раз редактировалось ALS 24 окт 2014, 00:52, всего редактировалось 1 раз.
Аватара пользователя
ALS
 
Сообщения: 803
Зарегистрирован: 24 окт 2011, 23:32
Откуда: Севастополь
прог. языки: асм

Re: Тележка с манипулятором и брандспойтом

Сообщение lorry » 24 окт 2014, 00:56

Вам нужно выбрать вашу плату в IDE вот здесь:
IDE.jpg

Теперь ваша плата и среда программирования видят друг друга и вы можете писать свою программу и заливать ее в плату.
Чтобы скачать русскую версию IDE посмотрите здесь: http://arduino.ru/Arduino_environment
Я так понял slom совсем новичок и даже с C не знаком.
Кстати там и описания команд программирования есть. Вообще, программа пишется на C+ если вы не знакомы с этим языком, то придется изучать, иначе никак не сможете писать свой программный код.

Добавлено спустя 5 минут 40 секунд:
ALS писал(а):В TREX уже залита прошивка, которая позволяет управлять всем хозяйством "из коробки".

Нууу, ежели так, то это меняет дело, нужно найти стандартную прошивку (всего навсего) и с ней работать. Тем не менее, парень хочет допилить устройство, добавить всякие датчики и пр., так что без IDE и знания C не обойтись.
Аватара пользователя
lorry
 
Сообщения: 448
Зарегистрирован: 04 фев 2014, 13:53
Откуда: Комсомольск-на-Амуре
прог. языки: машинные коды
ФИО: Иван Иваныч

Re: Тележка с манипулятором и брандспойтом

Сообщение ALS » 24 окт 2014, 00:59

По-чесноку, даже я, взяв ее впервые в руки, ничего не стал бы там допиливать и добавлять.
Код уже залит и он дает полное управление тем, что уже есть - от этого и надо отталкиваться.
Аватара пользователя
ALS
 
Сообщения: 803
Зарегистрирован: 24 окт 2011, 23:32
Откуда: Севастополь
прог. языки: асм

Re: Тележка с манипулятором и брандспойтом

Сообщение lorry » 24 окт 2014, 01:05

ALS писал(а):По-чесноку, даже я, взяв ее впервые в руки, ничего не стал бы там допиливать и добавлять.
Код уже залит и он дает полное управление тем, что уже есть - от этого и надо отталкиваться.

Совершенно согласен, тем паче slom судя по всему совсем уж не сведущ. Пожалуй ему сперва нужно потренироваться в программировании на чем то более простом. К примеру: slom, приобретите простую Arduino UNO (у китайцев можно за 600-700 руб. взять) и изучите программирование для этого микроконтроллера, по крайней мере точно не испортите стандартную прошивку своей платы, а уж потом можно будет и к более серьезным вещам приступать. Правда, на это потребуется время, и не мало :(
Аватара пользователя
lorry
 
Сообщения: 448
Зарегистрирован: 04 фев 2014, 13:53
Откуда: Комсомольск-на-Амуре
прог. языки: машинные коды
ФИО: Иван Иваныч

Re: Тележка с манипулятором и брандспойтом

Сообщение slom » 24 окт 2014, 09:17

ALS писал(а):slom, дружище, ты только не накосяч.
В баню IDE.

В TREX уже залита прошивка, которая позволяет управлять всем хозяйством "из коробки".
https://www.sparkfun.com/products/12075
читаем User Manual, на пятой странице :
Sample Code:
The T’REX robot controller comes pre-loaded with the “Arduino Nano w/ 328” bootloader
and sample code that lets you use the controller right out of the box.

На стр. 9-12 подробно расписан протокол.
Управление девайсом - пакетами по 27 байт, инфа с датчиков и проч - пакеты по 24 байта.

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



все верно говорите!

вот только что такое терминальная программа и как с ней работать?

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

в программировании я полный 0! зато силен в 3д граффике, могу баш на баш, кому то помочь разобраться в 3д максе если нужно, а мне помогут в програминге...


кстати земляк ALS у тебя случаем нет какого нибудь пульта и приемника для модельного управления и желания встретиться и покатать телегу :D
а то чето наши местные хобиты с вевастопол инфо от морозились все дружно :no:
Аватара пользователя
slom
 
Сообщения: 645
Зарегистрирован: 07 сен 2014, 19:29
Откуда: Севастополь
Skype: slom_3d
прог. языки: 3d max :)

Re: Тележка с манипулятором и брандспойтом

Сообщение ALS » 24 окт 2014, 12:25

http://digitalchip.ru/terminal-1-9b-rab ... com-portom
как работать -
выставляешь свой ком-порт, его скорость, жмешь connect
в верхнем окне должны приходить 24-байтные пакеты статуса
внизу - строка, которую надо забить 27-байтной посылкой (в шестнадцатиричных кодах), каждый код соответсвует одному байту этой самой посылки.
убираешь галку "CR"
жмешь "Send"
если все правильно, то железяка примет пакет и покрутит колесами/сервами или сделает еще что-то полезное.

Там же - кнопки макросов, на каждый из которых можно забить свою посылку, т.о. можно будет управлять нажатием на соответствующую кнопку.
Когда разберешся с пакетами, тогда можно будет думать о "прослойке" между стандартным RC-приемником и TREX-ом.

Комплектов для RC у меня нет, я не увлекаюсь моделями. В "модельной" ветке не севинфо я просто иногда помогаю камрадам с какой-либо нестандартной электроникой.
Аватара пользователя
ALS
 
Сообщения: 803
Зарегистрирован: 24 окт 2011, 23:32
Откуда: Севастополь
прог. языки: асм

Re: Тележка с манипулятором и брандспойтом

Сообщение lorry » 24 окт 2014, 12:54

slom, чтобы дистанционно помочь с программированием, тому, кто будет этим заниматься, нужно иметь платформу и плату как у вас. Не многие могут позволить себе иметь такую "игрушку" (я имею в виду стоимость). Кроме того, нужно синхронизировать хотения и возможности, вы можете желать одного, при этом исполнитель может не...:
1. не понять вас (очень сложно взаимодействовать без прямого общения) - решаемо, в случае проживание в одном городе или более тесной переписке;
2. не иметь в наличии требуемого оборудования (датчики, сенсоры, привода и пр.) - тоже решаемо, если вы предоставите нужные компоненты;
3. не иметь заинтересованности в дальнейшем продвижении вашего проекта, после некоторого времени сотрудничества у исполнителя что то случилось (это официальная версия) - не решаемо, просто человек может потерять интерес (это не официальная версия, такое бывает, к сожалению :( );
4. просто забухал - и такое бывает, хотя, не часто и временно;
5. ну, и, может еще кто что добавит ...
Возможности ваши тоже не безграничны. Создать такую машинку, как хотите вы, требует не малых капитало-вложений, вытяните ли вы это? По моим скромным прикидкам такая машина (манипулятор с брандспойтом) обойдется как минимум в 50000-70000 тыс. руб. только оборудования, не считая расходов на программирование.
Так что скорее всего вам самому придется изучать программирование AVR.
Это все мое мнение, может кто и возразит.
Аватара пользователя
lorry
 
Сообщения: 448
Зарегистрирован: 04 фев 2014, 13:53
Откуда: Комсомольск-на-Амуре
прог. языки: машинные коды
ФИО: Иван Иваныч

Re: Тележка с манипулятором и брандспойтом

Сообщение slom » 24 окт 2014, 13:33

ALS спасибо, сейчас буду разбираться.

lori, мне бы хотелось уложиться для начала тыщь так в 20 :)
из них 17 я уже потратил...
и пока финансы закончились :(

насчет общения то имхо есть скайп и форум. насчет того что у помогающего должно быть тоже самое что у просящего помощи - согласен, и будь у меня большие фин возможности я бы вам или другому помогающему купил бы такую же плату, для разбирательства и заодно как благодарность за оказанные услуги, но стоит эта зараза недешево :(

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

по проекту то забухатя я не забухаю, у меня нет тяги к спиртному, а вот надоесть может, как скоро не знаю, например мое увлечение 3д максом лет 7 назад перешло в профи деятельность, но спустя 6 лет имея за плечами стони проектов и хорошее портфолио, меня стало тошнить от 3д :cry:
https://www.fl.ru/users/slom/
http://www.weblancer.net/users/SLOM/portfolio/

зам незнаю чем закончиться это увлечение, может брошу на пол пути, а может сделаю мега крутую штуку или даже много разной хренотени :D
во многом это зависит от помощи форумчан...

Добавлено спустя 14 минут 41 секунду:
ALS писал(а):http://digitalchip.ru/terminal-1-9b-rabotaem-s-com-portom
как работать -
выставляешь свой ком-порт, его скорость, жмешь connect
в верхнем окне должны приходить 24-байтные пакеты статуса
внизу - строка, которую надо забить 27-байтной посылкой (в шестнадцатиричных кодах), каждый код соответсвует одному байту этой самой посылки.
убираешь галку "CR"
жмешь "Send"
если все правильно, то железяка примет пакет и покрутит колесами/сервами или сделает еще что-то полезное.

Там же - кнопки макросов, на каждый из которых можно забить свою посылку, т.о. можно будет управлять нажатием на соответствующую кнопку.
Когда разберешся с пакетами, тогда можно будет думать о "прослойке" между стандартным RC-приемником и TREX-ом.

Комплектов для RC у меня нет, я не увлекаюсь моделями. В "модельной" ветке не севинфо я просто иногда помогаю камрадам с какой-либо нестандартной электроникой.


нажал конект
получил в верхнем окне
Код: Выделить всё
ATюярцfxxxшЂ<0>Ђ<0>ЂЂЂ
и плата пикнула

перевел считывалку в хекс формат(16 рич)
стало чтото более внятное :D

Код: Выделить всё
41 54 FE FF F0 F6 06 06 66 78 78 78 F8 80 00 80 00 80 80 80


как написать пакет? есть пример как он должен выглядеть? например чтобы сдвинуть серву?
Аватара пользователя
slom
 
Сообщения: 645
Зарегистрирован: 07 сен 2014, 19:29
Откуда: Севастополь
Skype: slom_3d
прог. языки: 3d max :)

Re: Тележка с манипулятором и брандспойтом

Сообщение ALS » 24 окт 2014, 14:09

дык, это... я ж ссылку давал :
user manual - стр.9-10, байты 9...20 - управление сервами
Аватара пользователя
ALS
 
Сообщения: 803
Зарегистрирован: 24 окт 2011, 23:32
Откуда: Севастополь
прог. языки: асм

Re: Тележка с манипулятором и брандспойтом

Сообщение slom » 24 окт 2014, 14:31

00 00 00 00 00 00 00 00 05 05 05 05 05 05 05 05 05 05 05 05 00 00 00 00 00 00 00

еще пробовал все 55 делать вместо 05

при отправке светодиод сигает на плате и все...
Аватара пользователя
slom
 
Сообщения: 645
Зарегистрирован: 07 сен 2014, 19:29
Откуда: Севастополь
Skype: slom_3d
прог. языки: 3d max :)

Re: Тележка с манипулятором и брандспойтом

Сообщение ALS » 24 окт 2014, 14:51

slom, дружище, ты пойми, пож-ста, правильно.
Если у тебя с английским тоже тяжко, то не выучив хотя бы сотню слов, ты даже программировать не сможешь.
Вообще никак и ничего.
Тогда придется либо предлагать деньги, чтоб ЗА ТЕБЯ кто-то это сделал, либо... ну я не знаю, еще с полгода потратить на изучение азов.

Просто там английским по-белому написано :
1. Start byte – must be 0x0F (15 decimal)
это, типа, признак начала посылки и он должен только таким и никаким другим.

Есть и константы, которые нельзя забивать нулями от балды, напр., адрес I2C по дефолту - 0х07, его НЕ НАДО менять.
Чувствительности сенсоров также не стоит обнулять, а какие они по дефолту - наверняка, есть в доке.


Дальше не стал читать, некогда, сорри. Вечером.
Аватара пользователя
ALS
 
Сообщения: 803
Зарегистрирован: 24 окт 2011, 23:32
Откуда: Севастополь
прог. языки: асм

Re: Тележка с манипулятором и брандспойтом

Сообщение slom » 24 окт 2014, 15:08

ALS писал(а):slom, дружище, ты пойми, пож-ста, правильно.
Если у тебя с английским тоже тяжко, то не выучив хотя бы сотню слов, ты даже программировать не сможешь.
Вообще никак и ничего.
Тогда придется либо предлагать деньги, чтоб ЗА ТЕБЯ кто-то это сделал, либо... ну я не знаю, еще с полгода потратить на изучение азов.

Просто там английским по-белому написано :
1. Start byte – must be 0x0F (15 decimal)
это, типа, признак начала посылки и он должен только таким и никаким другим.

Есть и константы, которые нельзя забивать нулями от балды, напр., адрес I2C по дефолту - 0х07, его НЕ НАДО менять.
Чувствительности сенсоров также не стоит обнулять, а какие они по дефолту - наверняка, есть в доке.


Дальше не стал читать, некогда, сорри. Вечером.


так как оно должно выглядеть?
то что там на инглише написано я читал, и меня это тоже смутило.
но при чтении статуса выдало все слова по 2 символа (41 54 FE FF F0 F6 06 06 66 78 78 78 F8 80 00 80 00 80 80 80 )

а выходит нужно

0xF0 00 00 ff 00 ff 00 ff и так далие?

п.с. былиб деньги на программистов яб не тратил время на форумы, на тож они и нужны чтобы люди друг другу бескорыстно помогали... хотя почему бескорыстно иногда интерес и любопытство, а что же там получиться... ценнее грязных бумажек :)
Аватара пользователя
slom
 
Сообщения: 645
Зарегистрирован: 07 сен 2014, 19:29
Откуда: Севастополь
Skype: slom_3d
прог. языки: 3d max :)

Re: Тележка с манипулятором и брандспойтом

Сообщение ALS » 24 окт 2014, 15:25

а выходит нужно
0xF0 00 00 ff 00 ff 00 ff и так далие?

Да, первые два байта в статусе должны быть F0 00.
Это значит, что скорость порта в твоей программе сейчас выставлена неправильно.
А, кстати, какая именно ?
Аватара пользователя
ALS
 
Сообщения: 803
Зарегистрирован: 24 окт 2011, 23:32
Откуда: Севастополь
прог. языки: асм

Re: Тележка с манипулятором и брандспойтом

Сообщение slom » 24 окт 2014, 18:00

ALS писал(а):
а выходит нужно
0xF0 00 00 ff 00 ff 00 ff и так далие?

Да, первые два байта в статусе должны быть F0 00.
Это значит, что скорость порта в твоей программе сейчас выставлена неправильно.
А, кстати, какая именно ?


битрейд? по умолчанию 9600 :D


вопрос возник, а вот этим посланием команд, я не собью заводские настройки? :o
или после перезагрузки или отключения питания все настройки встанут в дефолт?

Добавлено спустя 1 час 28 минут 18 секунд:
ура товарищи!

пришол китайский блютус модуль!
модуль работает, мобила его нашла и приняла, но движения нет, либо батареек мало либо надо прошивать под блютус, плата по умолчанию вроде под рс....


Изображение


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

Добавлено спустя 56 минут 54 секунды:
попробовал впихнуть в плату код на блютус

выдал вот такую ошибку

This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.
Arduino: 1.0.6 (Windows 7), Board: "Arduino Nano w/ ATmega328"
Bluetooth.ino: In function 'void Bluetooth()':
Bluetooth:9: error: 'startbyte' was not declared in this scope
Bluetooth:11: error: 'lmspeed' was not declared in this scope
Bluetooth:12: error: 'rmspeed' was not declared in this scope
Bluetooth:17: error: 'lmspeed' was not declared in this scope
Bluetooth:18: error: 'rmspeed' was not declared in this scope
Bluetooth:26: error: 'lmspeed' was not declared in this scope
Bluetooth:27: error: 'rmspeed' was not declared in this scope
Bluetooth:31: error: 'Motors' was not declared in this scope
Bluetooth.ino: In function 'void BluetoothConfig()':
Bluetooth:40: error: 'mode' was not declared in this scope


код был такой:


Код: Выделить всё
void Bluetooth()
{
  //============================================================= Bluetooth Control ===================================================

  static byte d,e;                                             // data and error bytes
  if(Serial.available()>2)                                     // Command is 3 bytes in length
  {
    d=Serial.read();                                           // read byte from buffer
    if(d!=startbyte)                                           // if byte is not a start byte (0x0F)
    {
      lmspeed=0;                                               // bad data received
      rmspeed=0;                                               // set motor speeds to 0
      e=0;                                                     // error flag reset
    }
    else
    {
      lmspeed=(int(Serial.read())-127)*2-1;                    // good data received
      rmspeed=(int(Serial.read())-127)*2-1;                    // read values for left and right motors
    }
  }
  else                                                         // less than 3 bytes in buffer
  {
    e++;                                                       // count program loops with less than 3 bytes in buffer
    if(e>100)                                                  // assume lost signal if buffer less than 3 bytes for too long
    {
      lmspeed=0;                                               // stop left motor
      rmspeed=0;                                               // stop right motor
      e=0;                                                     // reset error counter
    }
  }
  Motors();                                                    // update motors
}



void BluetoothConfig()                                         // This code intended for a DAGU bluetooth module - may not work with other brands
{
  long baud[]={9600,115200,57600,38400,19200,4800,2400,1200};  // try 9600 first as this is default setting then try other baud rates
  byte br=0,d;
  while(mode==0 && br<8)                                       // scan through different baud rates and attempt to configure bluetooth module
  {
    Serial.begin(baud[br]);                                    // enable T'REX serial at baud rate baud[br]
    Serial.print("AT");                                        // send "AT" to see if bluetooth module is connected
    delay(1500);                                               // wait for bluetooth module to respond
   
    if(Serial.available()>1)                                   // after 1 second the bluetooth module should respond
    {
      byte i=Serial.read();                                    // should be 79 "O"
      byte j=Serial.read();                                    // should be 75 "K"
      if(i==79 && j==75)                                       // if response is "OK" then cofigure bluetooth module
      {
        EmptyBuffer();                                         // clear buffer
        Serial.print("AT+NAMET'REX");                          // ensure name is set to "T'REX"
        delay(1500);                                           // wait for bluetooth module to respond
        EmptyBuffer();                                         // clear buffer
        Serial.print("AT+PIN1234");                            // ensure PIN is set to "1234"
        delay(1500);                                           // wait for bluetooth module to respond
        EmptyBuffer();                                         // clear buffer
        if(br!=0)                                              // if bluetooth baud rate was not 9600
        {
          Serial.print("AT+BAUD4");                            // set bluetooth baud rate to 9600
          delay(1500);                                         // wait for bluetooth module to respond
          EmptyBuffer();                                       // clear buffer
          Serial.end();                                        // close serial communications at current baud rate
          Serial.begin(9600);                                  // set T'REX controller serial communications to 9600
        }
        mode=2;                                                // bluetooth module successfully detected and configured - change to bluetooth mode
      }       
    }
    if(mode==0)                                                // bad response - bluetooth module not communicating at current baud rate
    {
      EmptyBuffer();
      Serial.end();                                            // close serial communications at this baud rate
      br++;                                                    // prepare to try next baud rate
    }
  }
}

void EmptyBuffer()
{
  byte b;
  while(Serial.available())                                    // empty buffer once response is received
  {
    b=Serial.read();
  }
}



//=============================================================== Bluetooth AT+ commands ===========================================
/*
--------- Test Communications --------
Send: AT            Receive: OK


---------- Change Baud Rate ----------
Send: AT+BAUD1      Receive: OK1200
Send: AT+BAUD2      Receive: OK2400
Send: AT+BAUD3      Receive: OK4800
Send: AT+BAUD4      Receive: OK9600
Send: AT+BAUD5      Receive: OK19200
Send: AT+BAUD6      Receive: OK38400
Send: AT+BAUD7      Receive: OK57600
Send: AT+BAUD8      Receive: OK115200


------------ Change Name -------------
Send: AT+NAMEname   Receive: OKsetname


--------- Change Pairing Code --------
Send: AT+PIN1234    Receive: OKsetpin
Аватара пользователя
slom
 
Сообщения: 645
Зарегистрирован: 07 сен 2014, 19:29
Откуда: Севастополь
Skype: slom_3d
прог. языки: 3d max :)

Пред.След.

Вернуться в Идеи

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

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