23.10.2015, 22:33 | #191 | |||
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Re: Модуль "CyberBot-3"
Цитата:
Цитата:
Цитата:
|
|||
25.10.2015, 20:45 | #192 |
Junior Member
Регистрация: 16.04.2014
Сообщений: 19
Вес репутации: 0 |
Re: Модуль "CyberBot-3"
|
25.10.2015, 23:00 | #193 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Re: Модуль "CyberBot-3"
Несколько замечаний по схеме?
1-Питание моторшилда от ардуино, откуда там 5в? 2-Я вижу у Вас стабилизатор линейный, на какой максимальный ток он рассчитан? Не греется? Просадки при включении движков не наблюдаются? 3-Так как китайцы экономят на емкостях конденсаторов, то я бы добавил пару электролитов 4700мкФ и 1000мкФ. 4700 повесил бы на 11в на входе моторшилда, а 1000 параллельно хабу или роутеру |
26.10.2015, 13:29 | #194 |
Junior Member
Регистрация: 03.10.2014
Адрес: Балашиха
Сообщений: 12
Вес репутации: 0 |
Re: Модуль "CyberBot-3"
Скажите плиз. Для чего нужно 5 вольт из стабилизатора подключать к 5 вольтам Ардуино . Вроде он (ардуино) уже запитан? Или это для стабилизации , но какой?
|
27.10.2015, 17:47 | #195 | |
Senior Member
Регистрация: 07.01.2015
Адрес: Baku
Сообщений: 225
Вес репутации: 0 |
Re: Модуль "CyberBot-3"
Цитата:
используй вот этот: https://youtu.be/HcA-f-SeI6g Код:
/* Sketch based on Cyberlib library from cyber-place.ru, however due to some hangups desition were taken to get rid of this library and use arduino standard libraries and Adafrruit libraries. LCD module used just for debuging and is optional, however many useful information can be hooked to it. Wiring: 1.8''LCD is just insertewd to MEGA pins 8 -> AREF 2 servos (yaw and pitch) hooked to digital pins 2 and 3 (configurable, just like LCD pins) Servos powered by 5 volt regulator from external power supply (this is important not to fry arduino or your modem) For video demonstration please visit my youtube: http://youtu.be/HcA-f-SeI6g Any references/updates please visit my blog: www.voltrans.az */ //#include <CyberLib.h> // Подключаем библиотеку #include <Servo.h> // Подключаем библиотеку сервоприводов #include <Adafruit_GFX.h> // Core graphics library #include <Adafruit_ST7735.h> // Hardware-specific library #include <SPI.h> Servo myservo1; Servo myservo2; //long previousMillis; // Нужно для таймера //uint8_t LedStep = 0; // Счетчик int val1 = 0; int val2 = 0; //int servoSpeed = 20; int servoAngle = 20; int minAngle = 0; int maxAngle = 180; //int i; int q=2; int w=114; boolean light_stat; uint8_t inByte; uint8_t speed=255; //максимальная скорость по умолчанию //#define init {D4_Out; D5_Out; D6_Out; D7_Out; D8_Out; D11_Out; D12_Out;} #define TFT_CS 13 #define TFT_RST 12 // you can also connect this to the Arduino reset // in which case, set this #define pin to 0! #define TFT_DC 11 #define TFT_SCLK 9 // set these to be whatever pins you like! #define TFT_MOSI 10 // set these to be whatever pins you like! Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST); const int ledPin = 8; const int irlight = 46; const int blastLed = 47; int backlit = 100; //backlit void setup() { noTone(49); pinMode(ledPin, OUTPUT); pinMode(irlight, OUTPUT); pinMode(blastLed, OUTPUT); analogWrite(ledPin, backlit); tft.initR(INITR_BLACKTAB); // ST7735-Chip initialisieren tft.fillScreen(ST7735_BLACK); tft.drawRoundRect(0,0,128,160,6,ST7735_WHITE); tft.drawRect(0,100,128,12,ST7735_WHITE); tft.drawTriangle(64, 5, 43, 35, 86, 35, ST7735_WHITE); tft.drawTriangle(64, 95, 43, 65, 86, 65, ST7735_WHITE); tft.drawTriangle(5, 50, 40, 35, 40, 65, ST7735_WHITE); tft.drawTriangle(123, 50, 89, 35, 89, 65, ST7735_WHITE); tft.setTextColor(ST7735_WHITE); tft.setCursor(46, 42); tft.print("WEBCAM"); tft.setCursor(46, 52); tft.print("CONTROL"); tft.setCursor(10, 102); tft.setTextColor(ST7735_WHITE); tft.setTextWrap(true); tft.print("Serial Monitor:"); myservo1.attach(24); // Подключение сервоприводов к порту myservo2.attach(26); // Подключение сервоприводов к порту myservo1.write(val1); myservo2.write(val2); delay(500); myservo1.detach(); myservo2.detach(); init; // Инициализация портов horn(); //звуковое оповещение готовности робота Serial.begin(57600);// Инициализация порта для связи с роутером //wdt_enable (WDTO_500MS); tft.setCursor(72, 90); tft.setTextColor(ST7735_RED); tft.print("BLAST OFF"); tft.setCursor(8, 90); tft.setTextColor(ST7735_RED); tft.print("IR OFF"); } void loop() { /* unsigned long currentMillis = millis(); // Обновление таймера if (LedStep == 0 && currentMillis - previousMillis > 500){ // Задержка 0,5 сек. previousMillis = currentMillis; // обновление таймер LedStep = 1; // Счетчик шагов } if (LedStep == 1 && currentMillis - previousMillis > 500){ // Задержка 0,5 сек. previousMillis = currentMillis; // обновление таймер LedStep = 2; // Счетчик шагов } if (LedStep == 2 && currentMillis - previousMillis > 500){ // Задержка 0,5 сек. LedStep = 0; // Счетчик шагов } */ if (Serial.available()) //Еесли что то пришло { byte inByte = Serial.read(); tft.setTextColor(ST7735_WHITE); tft.setCursor(q, w); tft.print(inByte); tft.print(", "); q=q+24; if(q>=120){ w=w+10; q=2; } if(w>=150){ tft.fillRect(1,111,126,46,ST7735_BLACK); q=2; w=114; } switch (inByte) // Смотрим какая команда пришла { case 'U': // Серво поднимается if(val1<maxAngle){ up(); myservo1.attach(24); // attaches the servo on pin 2 for(int i=0;i<servoAngle;i++){ myservo1.write(val1+i); // sets the servo position according to the scaled value delay(servoAngle); } val1=val1+servoAngle; myservo1.detach(); // detaches the servo on pin 2 } //up(); // myservo1.write(i -= 10); break; case 'J': // Серво опускается if(val1>minAngle){ dn(); myservo1.attach(24); // attaches the servo on pin 2 for(int i=0;i<servoAngle;i++){ myservo1.write(val1-i); // sets the servo position according to the scaled value delay(servoAngle); } val1=val1-servoAngle; myservo1.detach(); // detaches the servo on pin 2 } //dn(); //myservo1.write(i += 10); break; case 'H': // Серво поворачивается влево if(val2<maxAngle){ lt(); myservo2.attach(26); // attaches the servo on pin 2 for(int i=0;i<servoAngle;i++){ myservo2.write(val2+i); // sets the servo position according to the scaled value delay(servoAngle); } val2=val2+servoAngle; myservo2.detach(); // detaches the servo on pin 2 } //lt(); //myservo2.write(i += 10); break; case 'K': // Серво поворачивается вправо if(val2>minAngle){ rt(); myservo2.attach(26); // attaches the servo on pin 2 for(int i=0;i<servoAngle;i++){ myservo2.write(val2-i); // sets the servo position according to the scaled value delay(servoAngle); } val2=val2-servoAngle; myservo2.detach(); // detaches the servo on pin 2 } //rt(); //myservo2.write(i -= 10); break; case 'B': // Бластер if(light_stat) { digitalWrite(blastLed, LOW); bIRoff(); light_stat=false; } else { digitalWrite(blastLed, HIGH); bIRon(); light_stat=true; } break; case 'C': // Клаксон horn(); break; case 'V': // Включить/Выключить фары if(light_stat) { digitalWrite(irlight, LOW); IRoff(); light_stat=false; } else { digitalWrite(irlight, HIGH); IRon(); light_stat=true; } break; } if(inByte>47 && inByte<58) speed=(inByte-47)*25+5;//принимает команду и преобразуем в скорость } // wdt_reset(); } void up(){ tft.fillTriangle(64, 6, 44, 34, 85, 34, ST7735_GREEN); tft.fillTriangle(64, 6, 44, 34, 85, 34, ST7735_BLACK); } void dn(){ tft.fillTriangle(64, 92, 46, 67, 83, 67, ST7735_GREEN); tft.fillTriangle(64, 92, 46, 67, 83, 67, ST7735_BLACK); } void lt(void){ tft.fillTriangle(6, 50, 39, 36, 39, 64, ST7735_GREEN); tft.fillTriangle(6, 50, 39, 36, 39, 64, ST7735_BLACK); } void rt(void){ tft.fillTriangle(122, 50, 90, 36, 90, 64, ST7735_GREEN); tft.fillTriangle(122, 50, 90, 36, 90, 64, ST7735_BLACK); } void horn() { noTone(49); tone(49, 440, 150); delay(250); tone(49, 440, 700); } void bIRon(){ tft.setCursor(72, 90); tft.setTextColor(ST7735_BLACK); tft.print("BLAST OFF"); tft.setCursor(72, 90); tft.setTextColor(ST7735_GREEN); tft.print("BLAST ON"); } void bIRoff(){ tft.setCursor(72, 90); tft.setTextColor(ST7735_BLACK); tft.print("BLAST ON"); tft.setCursor(72, 90); tft.setTextColor(ST7735_RED); tft.print("BLAST OFF"); } void IRon(){ tft.setCursor(8, 90); tft.setTextColor(ST7735_BLACK); tft.print("IR OFF"); tft.setCursor(8, 90); tft.setTextColor(ST7735_GREEN); tft.print("IR ON"); } void IRoff(){ tft.setCursor(8, 90); tft.setTextColor(ST7735_BLACK); tft.print("IR ON"); tft.setCursor(8, 90); tft.setTextColor(ST7735_RED); tft.print("IR OFF"); } Последний раз редактировалось elik745i; 27.10.2015 в 18:01. |
|
27.10.2015, 17:57 | #196 |
Senior Member
Регистрация: 07.01.2015
Адрес: Baku
Сообщений: 225
Вес репутации: 0 |
Re: Модуль "CyberBot-3"
По поводу схемы тоже что то она мне не нравится, лучше возьмите кусок текстолита макетного и ее используйте, как распределительную, питение моторов, ардуино и вайфая надо разделить отдельными коденсаторами, что бы посадки менее влияли на остальное, тогда и зависания пропадут, и вообще надо поконкретнее чертить схемку, ато эта как будто настряпана на коленках, ведь потом кто то захочет повторить ваш опыт...
есть очень хороший способ чертить схемы - карандаш и бумага, далее сфотькайте и уже сюда, если сложно работать в пеинте... |
27.10.2015, 23:08 | #197 |
Junior Member
Регистрация: 23.09.2015
Сообщений: 26
Вес репутации: 0 |
Re: Модуль "CyberBot-3"
нашел баг. камера с роутером работают если подключаться через ноут, но вот с телефона samsung кнопки появляются, загрузка идет... и виснит перед завершением.
да, возможно ли управление ботом через интернет, допустим из другого города. если да то как? и можно ли добавить скетч под платформы авто типа, для серво-машинки для поворота и для мотора который будет поворачивать руливую тягу. Последний раз редактировалось Павел_Сергеевич; 27.10.2015 в 23:15. |
27.10.2015, 23:16 | #198 | ||
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Re: Модуль "CyberBot-3"
Цитата:
Цитата:
|
||
28.10.2015, 00:22 | #199 |
Junior Member
Регистрация: 23.09.2015
Сообщений: 26
Вес репутации: 0 |
Re: Модуль "CyberBot-3"
подключил камеру к модифицированному ротеру (wrt) подключаюсь к роутеру через wifi с телефона самсунг, в стандартном браузере забиваю ip попадаю в панель управления wrt активирую модуль робот шпион, появляются кнопки на ~5-20% шкалы загрузки, доходит шкала до ~80-95% и останавливается. видео нет. с ноута выхожу на тот же ip активирую модуль робот шпион, появляются кнопки и виликолепное изображение с камеры.
а как сделать ip статичным или белым? хотя бы ссылку на эту тему. |
28.10.2015, 00:48 | #200 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Re: Модуль "CyberBot-3"
IP-адреса бывают: "белыми" или "серыми".
Белый - это уникальный IP в интернете. Серый - это внутренний IP локальной сети, напрямую доступный только внутри этой сети. Во внешний мир серые ходят через прокси или нат. Аналогию белого и серого IP в интернете можно представить по телефонии: Белый - это нормальный телефонный номер, на который можно позвонить откуда угодно. Серый - это номер офисной АТС, на который извне офиса напрямую не дозвонишься, а только через всякие хитрости типа роботов или по просьбе "переключите на такой-то номер", что не всегда удобно, зато внутренних номеров можно сделать внутри офиса хоть тыщщу, как и серых IP внутри локальной сети. Еще IP-адреса бывают "статичными" или "динамическими". Статичный - это когда за вашим компьютером привязан конкретный IP-адрес. Динамический - это когда при включении компьютер получает произвольный IP из какого-то диапазона, что сильно экономит дефицитное IP-пространство для провайдера, но порой жутко неудобно для абонента. По аналогии с телефонией: представьте, если бы каждый день Ваш сотовый телефон получал новый произвольный, пусть даже и федеральный номер. Исходящие звонки будут как-бы без проблем, правда на том конце провода постоянно будут спрашивать "а кто это?". А вот со входящими будут явные проблемы, т.к. кто бы знал, на какой номер Вам прямо сейчас позвонить Если у тебя белый, динамический IP , то модуль "DDNS" тебе поможет |
Здесь присутствуют: 7 (пользователей: 0 , гостей: 7) | |
|
|