Как загрузить sketch по Bluetooth

dimaris
dimaris аватар
Offline
Зарегистрирован: 27.03.2012

Как загрузить sketch в ардуино по Bluetooth

Mastino
Offline
Зарегистрирован: 03.12.2011

 Нажать кнопку Upload

dimaris
dimaris аватар
Offline
Зарегистрирован: 27.03.2012

Я имел в виду можно ли с помощью RS232 bluetooth Slave Wireless module заливать в ардуино скетч?

http://www.ebay.com/itm/261055680524?ssPageName=STRK:MEWNX:IT&_trksid=p3...

leshak
Offline
Зарегистрирован: 29.09.2011

 Теоретически -да. Ардуине вообщем-то главное что-бы скетч приходил на Rx,TX пины. А как он туда приходят - с помощью кабеля, блютус модуля или маленький человечек чечетку на контактах танцует  - дело десятое.

Немного смущает только Slave - возможно создат проблемы что "нужно будет потанцевать" (но совсем в этом не уверен, возможно и нет, собственно разницы).

Так же, возможно, но не факт, что с перезагрузкой дуины (что-бы заливка началась) могут быть "нюансы". Но в крайнем случае можно и рукой кнопку ресет давить :)

Вообщем, как вы уже догадались, лично я не пробовал, но думаю 80% что без проблем вообще будет, 10% что будет но с проблемами и 10% - вообще не получится (но модуль в хозяйстве все равно пригодится),

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

 Сложновато будет... Ресет однозначно придется пальцем топтать. Перед загрузкой скетча нужно проинициализироваться, установить связь, открыть поток, только потом можно заливать, когда мост VirtualComm-Синезуб-Arduino уже настроен. Старт заливки, топ на ресет. Ресет не должен воздействовать на модуль!

dimaris
dimaris аватар
Offline
Зарегистрирован: 27.03.2012

Спасибо за понимание проблемы, с резетом действительно сложности. А давить на кнопку пробовал не помогает, да и главная цель заливать скетчи не трогая урдуину (будет стоять в модели подводной лодки) вода+герметичность сами понимаете....

Читал статейку в которой для этх целей применяют XBee, но это я так понял совсем другие RF модули..

Ну или как вариант на IRDA спаять, может кто из вас пробовал такой вариант?

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

Не вижу смысла заливать скетч в подводную лодку (кстати, Xbee под водой не работает :) )

Туда надо передавать программу движения, команду запуска... В Дуине должен быть интерпретатор программы движения, лодка должна новую программу принимать и записывать, скажем, в EEPROM. Можно и во FLASH, но тогда придется заглубляться в программирование. 

leshak
Offline
Зарегистрирован: 29.09.2011

AlexFisher пишет:

Можно и во FLASH, но тогда придется заглубляться в программирование. 

Хм.. а не подскажете что погуглить-почитать? Пока видел только чтение в примерах (хотя явно возможна запись. бутлоадер-то шьет). А вообще имеет смысл? Как у него с ресурсом перезаписи? Лучше или хуже EEPROM?

2ТопикСтартер:

а еще можно взять, например ATMEGA-8 и ее использовать в качестве "прошивальщика/перезагрузчика" основной меги. Либо устанавливать связь и по UART вливать проишвки (8-ка будет просто мостом между модулем и основной), либо вобще залить в нее ArduinoISP скетч и шить ей "основную" как программатором (вообщем-то у вас тогда и получится "беспроводной программатор").

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

 Ну... как обычно - поискать в просторах интернета по ключевому слову "самопрограммирование". Вот пара ссылок:

Апноут (самопрограммирование, ассемблер)

Форум - немножко по самопрограммированию на c

Циклов записи у флеша гораздо меньше, чем у епрома, на вскидку, 10000 против 100000... За точными цифрами надо в даташит лезть... сорри, но лень :)

dimaris
dimaris аватар
Offline
Зарегистрирован: 27.03.2012

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

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

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

dimaris
dimaris аватар
Offline
Зарегистрирован: 27.03.2012

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

maksim
Offline
Зарегистрирован: 12.02.2012

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

leshak
Offline
Зарегистрирован: 29.09.2011

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

По крайней мере если вас не смущает "нужно вытащить лодку из воды" и вам не обязательно "хочу на растоянии".

maksim
Offline
Зарегистрирован: 12.02.2012

 Например так. Объявляете массив из 20 копонентов, в котором все четные компоненты - это значения задержек, а все нечетные - обороты двигателя. По блютузу передаете 20 значений и записываете их в ЕЕПРОМ. И вот вам новый алгоритм работы двигателя. 

Примерно так:

#include <EEPROM.h>

byte massiv[20]; // Массив
boolean flag = 1; // Флаг

void setup(){
  for(int i = 0; i < 20; i++){ // Заполняем массив из ЕЕПРОМ
    massiv[i] = EEPROM.read(i);
  }
}


void loop(){
  
  if(блютуз.available()){ // Если по блютузу что нибудь есть, то
    for(int i = 0; i < 20; i++){
      byte b = блютуз.read();  // Читаем байты из блютуза
      EEPROM.write(i, b); // Записываем в ЕЕПРОМ
      massiv[i] = b;   // Заполняем массив
    }
    flag = 1;  // Взводим глаг
  }
  
  if(flag){
    for(int i = 0; i < 20; i += 2){
      двигатель.speed(massiv[i]); // Оборобы двигателя
      delay(massiv[i+1]*10);      // Время работы на этих оборотах
    }
    flag = 0; // Отработали весь цикл и опустили флаг, чтобы не было повтора цикла
  }
  
}

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

Например если отправить такой массив:

byte massiv[20] = {100, 30, 75, 5, 50, 5, 75, 10, 30, 100, 100, 20, 100, 10, 100, 30, 75, 5, 0, 1};

то алгоритм бедет таким:

двигатель.speed(100); // Задаем оборобы двигателя
delay(3000);      // Задаем время работы на этих оборотах

двигатель.speed(75); // Задаем оборобы двигателя
delay(500);      // Задаем время работы на этих оборотах

двигатель.speed(50); // Задаем оборобы двигателя
delay(500);      // Задаем время работы на этих оборотах

двигатель.speed(75); // Задаем оборобы двигателя
delay(1000);      // Задаем время работы на этих оборотах

двигатель.speed(30); // Задаем оборобы двигателя
delay(10000);      // Задаем время работы на этих оборотах

двигатель.speed(100); // Задаем оборобы двигателя
delay(2000);      // Задаем время работы на этих оборотах

двигатель.speed(100); // Задаем оборобы двигателя
delay(1000);      // Задаем время работы на этих оборотах

двигатель.speed(100); // Задаем оборобы двигателя
delay(3000);      // Задаем время работы на этих оборотах

двигатель.speed(75); // Задаем оборобы двигателя
delay(500);      // Задаем время работы на этих оборотах

двигатель.speed(0); // Задаем оборобы двигателя
delay(100);      // Задаем время работы на этих оборотах

 

mixail844
Offline
Зарегистрирован: 30.04.2012

возможная помощь тТС:

а можно ли использовать в качестве удлинителя модули типа :

http://www.ebay.com/itm/433Mhz-RF-transmitter-and-receiver-link-kit-for-...

но тут же возникают еще пара технических вопросов насчет физической реализации :

ну понятно что к принимающей стороне(Arduino что в самой лодке) на ножку Rx цепляеться приемник.

но как быть с передающей стороной,прийдеться ползьoваться еще одной ардуиной для передачи кода "в лодку",тогда как хоть примерно будет выглядеть скетч передачи кода))?конкретнее-сам код управления лодкой будет передаваться в формате .hex или в тело скетча передатчика будет код управления лодкой будет "вложен" в си'шном синтаксе?

второй вариант реализации,подключение передатчика непосресдвенно к порту RS-232/USB,тут в принцие все ясно,если RS-232 то пользуемся микросхемой MAX232 если USB то FT232RL или же приобрести/собрать USBasp программатор. 

еще варианты?)

 

mixail844
Offline
Зарегистрирован: 30.04.2012

leshak пишет:

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

По крайней мере если вас не смущает "нужно вытащить лодку из воды" и вам не обязательно "хочу на растоянии".

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

dimaris
dimaris аватар
Offline
Зарегистрирован: 27.03.2012

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

mixail844
Offline
Зарегистрирован: 30.04.2012

хммм,если не ошибаюсь,более опытыные пользователи поправят,можно ножку приема данных(Rx) дуины ,в самом конце программирования,программно настроить на вход и "подцепить" через внутренний резистой дуины на землю.тогд вообще никакая вода страшна небудет,если никто на соревнованиях не додумаетсься от розетки в воду оголеный провод кинуть.)

leshak
Offline
Зарегистрирован: 29.09.2011

dimaris пишет:

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

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

А "в походном состоянии". Ну что у нас там:

  • Земля - если никто кабель от ЛЕПа не сунет в вводу или т, то земля свяжется "с землей" общемировой. Ничего страшного (иногда даже нужно)
  • Rx,Tx - по идее - тоже ничего не должно случится если на землю коротнутся. Если "страшно" можно добавить резистор на Tx (но может начать мешать заливки/передаче данных). Если не использовать у себя в скетче работу с сериал - вообще можно не думать ни о чем. Порты будут включены на вход. А что там они "намеряют в воде" - дело десятое.
  • Остался Reset. Ну один проводок можно и постаратся заизолировать. Или вывести его через конденсатор (конденсатор - внутри корпуса). Тогда его корочение на землю - вызовет однократный ребут контроллера. Грубо говоря она _может_ перезагрузится в момент опускания в воду. 

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

А можно, если ну совсем страшно. Сделать внутри "гравитационные кнопки". Все проводки выводим через такуе кнопки:

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

Или, вместо гравитации, все проводки выводим через геркончики (та же кнопка, только срабатывает от магнита). Тогда что-бы "включить интерфейс" вам нужно просто поднести магнит к определенному месту корпуса, а без него опять будет - "проводки никуда не ведут, просто торчат наружу".

Но IMHO это если хочется "повыкаблучиватся". Из серии "свинцовые трусы". :), думаю все нормально будет и без герконов и гравитационных кнопок.

P.S. Естественно все это в предположении что у вас там не водятся электрические скаты :) Тогда герконы обязательны :)

 

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

RX и так настроен на вход. Речь о Tx-Rx вообще не идет, там будет или USB или RS232. C первым проще, можно весь интерфейс запитать через выключатель, замаскированный под... Если оставить  напряжение, то при 5 вольтах будет, конечно, небольшой электролиз (а если вода соленая, то большой) и контакты окислятся. Нужна хорошая заглушка.

dimaris
dimaris аватар
Offline
Зарегистрирован: 27.03.2012

 Ну я ребята даже и не ожидал таких интересных идей по защите интерфейса! Гравитационные контакты мне бы даже в голову не пришли, а насчет герконов мысль вполне осуществимая. Твердотельные оптореле могут подойти. Еще возникла мысль сделать чтото на подобие магнитной оптоголовки, как на пример те что к злектросчетчикам подцепляются, там обмен данными должен быть по проще чем ик порт всетаки изолировано от внешнего излучения..

leshak
Offline
Зарегистрирован: 29.09.2011

dimaris пишет:

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

Да и "гравитационные" - тоже вполне осуществимо. Это я их так "обозвал". Что-бы принцип действия понятен был. А в продаже они скорее всегу будут называть "датчик наклона", title sensor и т.п.

Но принцип у них будет тот же самый. Правда, скоре всего, в них вместо шарика будет использовать порция ртути (не будет греметь как погремушка), но и цена :( Не космическая но за такой примитив - жаба давит (особенно если их нужно несколько штук).

Тем более что "сделать самому" - 5-10-ть минут. Берем тубу от таблеток/витаминок 

Внутрь - шарик от подшибника. В крышечке делаем две дырки горячей иголкой. Пропускаем два провода. С внутреней стороны загручиваем их спиральками и приклеиваем в кнутреней стороне. Например терпопистолетом (китайские сопли).

Закрываем крышку - "гравитационная кнопка" готова ;) В нормальном состоянии - контакты разомкнуты. Перевернули - шарик упал на крышечку и замкнул контакты.

Если вы свой интерфейс выведите на брюхо лодки - то "включение" его будет само-собой. Естественным :) А все будут недоумевать и спрашивать вас: "а не боишься что замкнет"? Если будет сильно греметь - можно еще кусочки поролона/резинки на дно и крышку подлеить.