Удаленная прошивка Arduino через сервер MDM (Linux)

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

Модератор: immortal

Ответить
arturmon
Сообщения: 155
Зарегистрирован: Сб июл 07, 2012 11:42 pm
Благодарил (а): 3 раза
Поблагодарили: 3 раза

Удаленная прошивка Arduino через сервер MDM (Linux)

Сообщение arturmon » Вт мар 11, 2014 10:46 pm

Может кому нибудь пригодится . :D
В общем суть такая :
Мой ПК -----Wi-fi-----> Роутер----LAN-----> Сервер MDM -----USB------>Mega2560R3
| |
------------------------------LAN--------------->

Надеюсь понятна схема ;D суть заморачиваться есть только в том что ваша мега перешивается часто и ей нужно находиться далеко от ПК через который вы прошиваете. Тогда это описание решения для нас.
Все очень просто Порт USB меги пробрасывается в сеть на порт нашего MDM, пример если сервер MDM имеет ip 192.168.0.50 то по моей фотке например получится обращение к порту 192.168.0.50:40000 ( можно спокойно это проверить через putty, установить только формат в raw) но! т.к. оболочка arduino работать не умеет с Winsock :D то на нашем ПК с которого будем программировать нужно создать обратный конвертер из Winsock to COM, создать виртуальный COM порт.
на MDM ставим ser2net, настраиваем как на фото (порт можете на свой удобный настроить)
на "Нашем ПК" ставите tibbo virtual serial port и тоже настраивает как на фото (порт и ip MDM указываете свои)
все теперь можете прошивать вашу мегу с своего компа и еще бонус появляется если пробросить порт в интернет....то тогда можно шить и вообще удаленно из любой точки мира 8)

более детально можно почитать и посмотреть http://computer-service.pro/smf/index.php?topic=103.0
dmw
Сообщения: 469
Зарегистрирован: Вт мар 12, 2013 1:22 am
Благодарил (а): 41 раз
Поблагодарили: 81 раз

Re: Удаленная прошивка Arduino через сервер MDM (Linux)

Сообщение dmw » Ср мар 12, 2014 9:19 am

Я это делаю через web-интерфейс с помощью консольной утилиты avrdude. Сервер работает на unix, arduino подключена к порту /dev/ttyACM0
Форма состоит из двух файлов:
arduino.html - загружает hex-файл прошивки в локальную папку сервера куда подключена arduino

Код: Выделить всё

<html>
<head>
  <title>Загрузка прошивки в Arduino на сервере</title>
</head>
<body>
      <h2><p><b> Форма для загрузки прошивки </b></p></h2>
      <form action="arduino.php" method="post" enctype="multipart/form-data">
      <input type="file" name="filename"><br> 
      <input type="submit" value="Загрузить"><br>
      </form>
</body>
</html>
arduino.php - вызывается после получения файла, прошивает arduino и выводит результат

Код: Выделить всё

<html>
<head>
  <title>Result</title>
</head>
<body>
<?php
   if($_FILES["filename"]["size"] > 1024*3*1024)
   {
     echo ("Размер файла превышает три мегабайта");
     exit;
   }
   // Проверяем загружен ли файл
   if(is_uploaded_file($_FILES["filename"]["tmp_name"]))
   {
     // Если файл загружен успешно, перемещаем его
     // из временной директории в конечную
     move_uploaded_file($_FILES["filename"]["tmp_name"], "/var/www/files/".$_FILES["filename"]["name"]);
	 echo ("Файл ".$_FILES["filename"]["name"]." принят сервером.<br>");
	 echo ("Идет прошивка Arduino...<br>");
	 echo ('<hr align="left" width="600" size="2" color="#ff9900" /><xmp>');
	 
	 // прошиваем arduino
	 // документация на avrdude: http://www.nongnu.org/avrdude/user-manual/avrdude.html
	 //passthru('avrdude -p m2560 -P /dev/ttyACM0 -c stk500v2 -b 115200 -C /etc/avrdude.conf -U flash:w:/var/www/files/'.$_FILES["filename"]["name"].' 2>&1', $retval); //это для Arduino Mega
	 passthru('avrdude -F -V -c arduino -p ATMEGA328P -P /dev/ttyACM0 -b 115200 -C /etc/avrdude.conf -U flash:w:/var/www/files/'.$_FILES["filename"]["name"].' 2>&1', $retval); //это для Arduino Uno v3
	 
	 if ($retval==0) echo ("Выполнено.");
	 else echo ("Ошибка: ".$retval);
	 echo("</xmp>");
   } else {
     echo("Ошибка загрузки файла");
   }
?>
</body>
</html>
Сам hex-файл забираю после компиляции у родной Arduino IDE, либо если скетч не сильно нагружен специфичными библиотеками здесь: http://ide.wifino.com. С последним online-сервисом выходит даже удобнее, скетчи хранятся в облаке, подправить их скомпилировать и прошить в arduino удается даже со смартфона.
Вложения
ArduinoWEB.jpg
ArduinoWEB.jpg (13.77 КБ) 7183 просмотра
arturmon
Сообщения: 155
Зарегистрирован: Сб июл 07, 2012 11:42 pm
Благодарил (а): 3 раза
Поблагодарили: 3 раза

Re: Удаленная прошивка Arduino через сервер MDM (Linux)

Сообщение arturmon » Ср мар 12, 2014 9:35 am

тоже интересный вариант, но ограничивается только прошивкой :!:
в мое варианте получается что с ардуиной работаешь так же как будто она локально подключена то есть можно спокойно посмотреть что в терминале творится.
dmw
Сообщения: 469
Зарегистрирован: Вт мар 12, 2013 1:22 am
Благодарил (а): 41 раз
Поблагодарили: 81 раз

Re: Удаленная прошивка Arduino через сервер MDM (Linux)

Сообщение dmw » Ср мар 12, 2014 10:25 am

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

Код: Выделить всё

cat /dev/ttyACM0
arturmon
Сообщения: 155
Зарегистрирован: Сб июл 07, 2012 11:42 pm
Благодарил (а): 3 раза
Поблагодарили: 3 раза

Re: Удаленная прошивка Arduino через сервер MDM (Linux)

Сообщение arturmon » Ср мар 12, 2014 10:49 am

я ведь тоже не спорю твой способ тоже отличный. :roll:
Ответить