Как сказал Mr.Kubikus (Григорий Зайцев): "Ура!"
Действительно все заработало. Настало время поделиться подробностями. Очень я был заинтересован в беспроводном программировании ардуин, вот и захотелось докопаться до сути. Метод "научного тыка" не оправдал себя. Поэтому дальнейшее изучение модулей могло быть только совместно со специалистом. Такой нашелся в офисе ПАКПАК, да еще и сам заинтересовался, как они работают. Вещь-то удобная. Поехал я через весь город в надежде найти решение. И хоть теперь понимаю, что программистом мне не быть (мышление не то), все равно доволен результатами поездки. С начала около часа шло осторожное изучение модулей, потом пришло время прочитать инструкцию к ним, после чего еще около часа велись "эксперименты". Григорий (ну я тоже там был и рядом сидел с умным видом и большими глазами) используя последовательный инженерный подход, осциллограф и мультиметр со всем разобрался. Вот бы мне так уметь. ))) Одна из проблем, по которым не заливался скетч, была неправильная установка джамперов на шилде. И, как показал осциллограф, это привело к отсутствию сигнала TX там, где он должен быть.
В итоге, сейчас все работает, все огонечки мигают, ошибок не выскакивает. Вот я и решил по полочкам разложить, что да как с этими штуковинами. Мануалы издавать не доводилось, поэтому не судите строго. Итак...
Wireless Programming Module For Arduino
Для загрузки скетча без проводов из среды программирования в плату Arduino нам понадобятся следующие компоненты:
1) Arduino (например Arduino Uno);
2) 2 штуки Wireless Programming Module For Arduino (далее WPM №1 и WPM №2) 2,4 ГГц, версия V2 производства DFRobot;
3) Хотя бы один адаптер под модули (UartSBee v4.0 производства SeeedStudio) с возможностью выбора питания на 3,3 В. Адаптеров лучше два, лишними в хозяйстве не будут. Наличие двух адаптеров позволит оба модуля подключить к PC и проверить прием-передачу между ними.
4) Шилд для подключения "принимающего" модуля к Arduino (I/O Expansion V5.0);
5) Драйвер FTDI с сайта
http://www.ftdichip.com ;
6) Программа WirelessProgrammer для настройки модулей с сайта
http://www.dfrobot.com;
7) Данный мануал и немного спокойствия, усидчивости.
Шаг 1.
Переводим переключатель выбора питания на адаптере в положение 3,3 В. Это важно!!! От 5В модуль себя плохо почувствует и может совсем отказаться дальше работать.
Шаг 2.
Подключаем адаптер к компьютеру (можно без WPM). Открываем диспетчер устройств и обновляем драйвер адаптера из папки, в которую распаковали свеженький драйвер FTDI. После обновления драйвера появится устройство: USB Serial Port (COM...). Переподключаем адаптер.
Шаг 3.
Подключаем WPM №1 к адаптеру. Запускаем программу WirelessProgrammer. Переводим на WPM №1 переключатель MODE в положение "ON" (перевести влево, на картинке видно не четко, надпись ON смазалась) - загорается красный индикатор MODE. Выбираем плату, которую планируется программировать без проводов - Arduino Uno. Выбираем COM-порт. Жмем Connect. Свидетельством как успешного подключения для настройки, так и успешной настройки, будет служить что-то подобное в правом окне программы:
Thank you for using the 2.4G wireless module from DFRobot
---------------------www.dfrobot.com---------------------
-----------------Enter the setting mode------------------
--------------------Show the settings--------------------
Version:V2
Baudrate(Register:1-3):115200
ID(Register:4-8):192.168.1.1.1
Operating Frequency(0-125)(Register:9):40
Air Data Rate(1M/2M/250K)(Register:10):250Kbps
Timeout(Register:11):20
Оставляем все как есть или устанавливаем требуемые значения настроек WPM №1.
Шаг 4.
Переводим переключатель MODE в положение "OFF" - гаснет красный индикатор MODE. Вынимаем WPM №1из адаптера и присоединяем его к шилду. Переключатель PROG_EN переводим в положение "ON". Это будет "принимающий" WPM, название условное, на самом деле передача данных идет в обе стороны. В данном случае под приемом/передачей подразумевается прием/передача скетча.
Шаг 5.
Настраиваем WPM №2 по аналогии с настройкой WPM №1 с точно такими же параметрами, как и у WPM №1. Отличие только в том, что после настройки переключатель MODE переводим в "OFF", а переключатель PROG_EN оставляем в положении "OFF".
Шаг 6.
Все, модули настроены! Проверяем параметры:
WPM №1 ("принимающий", подключен через шилд к Arduino Uno)
Baudrate: 115200
ID: 192.168.1.1.1
Operating Frequency: 40
Air Data Rate: 250Kbps
Timeout: 20
MODE "OFF"
PROG_EN "ON"
WPM №2 ("передающий", подключен к USB компьютера)
Baudrate: 115200
ID: 192.168.1.1.1
Operating Frequency: 40
Air Data Rate: 250Kbps
Timeout: 20
MODE "OFF"
PROG_EN "OFF"
Шаг 7.
Джамперы на шилде нужно переставить в положение APC. На картинке показано как они должны быть установлены. Только в этом случае сигнал TX попадет куда следует. У меня джамперы были установлены не вертикально, а горизонтально, если ориентироваться на картинку.
Вот итоговая картинка, все наглядно. Обратите внимание, индикатор LINK будет мигать синим только тогда, когда будет передаваться/приниматься информация между WPM №1 и WPM №2. В отсутствии передачи/приема индикатор не горит.
- photo.jpg (414.19 КБ) 21425 просмотров
Шаг 8.
Запускаем среду программирования и выбираем номер COM-порта нашего адаптера с "передающим" WPM №2. Если планируется принимать данные от платы, то скорость Serial.begin(115200), наверное, должна совпадать с указанной в самих модулях - 115200.
Теперь можно прошивать плату.
Для тестирования выбираем скетч из примеров:
Файл -> Примеры -> Analog -> AnalogInOutSerial
Если в конце скетча оставим delay(2), то повторно залить через радиоканал уже не выйдет, синий индикатор на обоих модулях будет постоянно гореть. Я так полагаю, что при постоянной занятости порта процесс загрузки скетча не начинается. Придется отключать шилд и перепрошивать Arduino Uno через провод. Поэтому рекомендую задержку сделать больше, например так: delay(572), это позволит спокойно играться дальше. С указанными выше параметрами и с данным скетчем значение должно быть не менее 560 мс., число получено экспериментальным путем.
Если же в программе нельзя делать столь продолжительную паузу, то придется нажимать RESET на плате в момент начала загрузки скетча, но это уже как-то не совсем беспроводное программирование.
Возможные проблемы:
1.Старый драйвер FTDI – у меня был от 2011 года, пока не скачал свежий, ничего не работало.
2.Модули имеют разные настройки (частота, ID и др.).
3.Программа в плате вызывает постоянную передачу в порт с интервалом менее 560 мс., в этом случае скетч не начнет заливаться.
4.Модуль сгорел при ошибочной подаче на него питания 5В.
5.Поврежден USB шнур.
Все шаги по настройке с использованием данного мануала можно проделать за несколько минут. Самостоятельно настроить беспроводную загрузку кода у меня не получилось. Не было достойного мануала. У Вас теперь есть. В этом полностью заслуга Григория. За это отдельное и огромное ему спасибо! Я лишь задокументировал результат его (и немного моего) мозгового штурма.