Работа с usb

ffffvfvggvg
Offline
Зарегистрирован: 06.03.2017

Возможно ли в Arduino mega 2560 работать с компьютером через usb (например arduino собирает информацию с датчиков, а компьютер подключен к плате ардуино через usb принимает ее и делает вычисления затем посылает команду, какие выводы включить на ардуино). Не судите пожалуйста строго, я новичок. Также поддерживают ли этот режим работы arduino uno, nano?

Волшебник
Offline
Зарегистрирован: 22.12.2016

Все так и делают, вопрос только в программе на компьютере, сможете написать? Есть готовые системы управления, Фирмата кажется, но я с ней дел не имел. http://robocraft.ru/blog/arduino/283.html 

arDubino
Offline
Зарегистрирован: 12.01.2017

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

Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

1 вам логики ардуинки мало? она тоже може решить что включить а что выключить. Может тут комп совсем лишний....

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

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

ffffvfvggvg
Offline
Зарегистрирован: 06.03.2017

Компьютер мне нужен для подключения вебкамер (для видеонаблюдения), они будут подключены к мат. плате пк, сомневаюсь что arduino сможет обрабатывать иформацию с 6 вебкамер и записывать ее на флешку в mp4. Это проект умного дома. Вероятно 256 кб памяти будет недостаточно чтобы вместить интерфейс и много других возможностей, которые добавляться со временем. Arduino mega планирую использовать как основной драйвер (она, например, собирает информацию об сопротивление термодатчика и калибрует температуру, к пк отсылает информацию не какое его сопротивление, а какая температура на датчике.

arDubino
Offline
Зарегистрирован: 12.01.2017

о мать моя женщина :)))

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

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

ffffvfvggvg пишет:

Возможно ли в Arduino mega 2560 работать с компьютером через usb (например arduino собирает информацию с датчиков, а компьютер подключен к плате ардуино через usb принимает ее и делает вычисления затем посылает команду, какие выводы включить на ардуино). Не судите пожалуйста строго, я новичок. Также поддерживают ли этот режим работы arduino uno, nano?

Да, это один из основных режимов работы Ардуино - служить промежуточным звеном между датчиками и ПК. Обмен физически осуществляется через USB, но программно эмулируется COM-порт. Соответственно, работа с ним с обеих сторон выглядит как работа с COM-портом.

ВСе указанные контроллеры поддерживают этот режим. Исключение лишь Pro Mini, у которого нет USB интерфейса.

Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

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

могу дать совет (ставьте Majordomo)  там вроди как не сильно сложно настроить работу с ардуинкой через юсб, так же с камерами можно разобраться

сам 3 дня разбираюсь с мажором (поставил на Orange Pi PC) установил? запустил а звука нет, по чуть чуть разберусь.

и кстати думал самому проще написать примерно то что вы планируете (половину работы сделал и понял что еще много и все равно не выйдет так как в мажоре)

если проще сделать то да получится наджно, н эстетика тоже нужна.

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

achuser
Offline
Зарегистрирован: 02.03.2013

Приветствую. Подскажите по следующему вопросу: как можно отследить, что serial.begin успешно открыл порт? Например serial.available - если на порту нет никаких данных, сможет ли что-то вернуть при успешном соединении? Если нет, то возможно ли передать что-либо в порт и считать это же самое с порта или же подобного буфера на порту не будет и уйдет в никуда если никакое ПО со стороны компа эту инфу не примет в реальном времени?

Смысл в том, что хочу простейший вочдог собрать, чтобы работал без стороннего ПО на борту ПК, т.о. если выше описанная работа с портом возможна, то ардуинка будет работать на любой ОС. Если комп выключен или завис, получается ответа от порта не будет, если запущен - порт доступен.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

if(Serial)

Description

Indicates if the specified Serial port is ready.

On the Leonardo, if (Serial)indicates whether or not the USB CDC serial connection is open. For all other instances, including if (Serial1)on the Leonardo, this will always return true.

This was introduced in Arduino IDE 1.0.1.

Syntax

All boards:

if (Serial)

Arduino Leonardo specific:

if (Serial1)

Arduino Mega specific:

if (Serial1)
if (Serial2)
if (Serial3)

Parameters

Nothing

Returns

boolean: returns true if the specified serial port is available. This will only return false if querying the Leonardo’s USB CDC serial connection before it is ready.

Example Code

void setup() {
 //Initialize serial and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB
  }
}

void loop() {
 //proceed normally
}

 

achuser
Offline
Зарегистрирован: 02.03.2013

Все таки не могу домучать работу с USB.

Если

 if (USBon==1) 
  {
           //задержка перед ребутом
       if (millis() - timer0 > timer)
         { 
          timer0 = millis(); 
          while (!Serial) 
          {
             Serial.println(timer0);
             digitalWrite(4, HIGH);
             delay(1000);
             digitalWrite(4, LOW);                  
             break;
           }
            
          }                
  }

то не реагирует, не смотря на то, что кроме питания на ардуину ничего не подается, т.е. по сути порт открыть она не может.

Если

 if (USBon==1) 
  {
           //задержка перед ребутом
       if (millis() - timer0 > timer)
         { 
          timer0 = millis(); 
          while (!Serial.available()) 
          {
             Serial.println(timer0);
             digitalWrite(4, HIGH);
             delay(1000);
             digitalWrite(4, LOW);                  
             break;
           }
            
          }                
  }

то тут да, код отрабатывает пока не пришлешь что-либо в порт. Но тут опять же проблема, не получается очистить буфер, чтобы программа ожидала нового сигнала.

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