MODIFICAR PROGRAMACION ARDUINO DESDE INTERNET

Hola a todos.
Estoy en un proyecto que necesito modificar regularmente el sketch de arduino desde internet para no tener que desplazarme un largo trayecto.

He estado buscando por hay y he encontrado algo , que modifica el bootloader, pero yo no utilizo bootloader porque programo a traves de usbasp.

Alguien sabe como puedo hacerlo,( si es que hay alguna manera),
gracias de antemano

Y como vas a comunicarte con internet?
No presentas debidamente tu proyecto
Me da la impresión que no estas usando placas arduinos, no es asi?

Intenta explicar detalladamente como será tu nodo maestro, cómo seran los esclavos. Que usas para comunicarte a internet, W5100, ECN28J60, ESP8266?

Hola CAPITAN.
como siempre dandome caña, jajaja

Si, si es un arduino uno, tambien con un mega
tengo la shield w5100, pero si hace falta comprar otra pues se compra , por si hay mejoras.

Como de comunicaciones por internet se poco quiero que me asesores y que podemos hacer.

el arduino sera un receptor(cliente) y recibira los datos y se reprogramara.

un ssaludo

Veo casi más factible conectar a internet una RaspberryPi, y a esta, conectado el USBASP por USB y por el otro lado, conectado al arduino.

hola carmelococo.

me dices asi:

pc,usbasp,rasperry pi,internet,modulo de internet,arduino

El problema que veo es que no se programar en rasperry pi(no lo he tenido nunca) pero no se hace con arduino o con c no?

Hola pincho, la raspi se programa con python, si echas un vistazo en google hay tutoriales muy claros.. yo no es que controle al 100% pero cuando me puse con esos tutoriales, ni siquiera conocia que existiera el lenguaje, pero en cosa de una semana pude hacer muchas cosas.
Creo que lo que carmeloco te quiere decir es que te conectes a la raspi via internet y que con las GPIO de ésta actues sobre el Arduino, pero como dice Surbyte, dependerá de lo que realmente quieres hacer, ya que con esa información que das, podemos decirte muchas cosas, pero que nada te sirva... :wink:

Primero no me di cuenta que eras tu pincho y segundo ya no soy capitán ya soy MAYOR, jeje
Yo he visto soluciones que permiten modificando el bootloader del arduino usando el w5100 para poder actualizarlo via internet. No las he probado pero lo hemos debatido aquí.

Busca : arduino ethernet upgrade o bien arduino ethernet bootloader

Yo me refería a usar la Raspberry Pi, como si fuese un pc, pero con la ventaja de ser mas pequeño, mas barato y consume menos. Se le puede instalar raspbian, o ubuntu si usas un 2B, que básicamente, es un linux, al que se le puede instalar el ide de arduino, y conectarse remotamente al raspberry desde internet.

Yo le veo un montón de ventajas.

hola tifilus

le voy a hechar un vistazo a la pasperri a ver que tal va.

Bueno voy a decir un ejemplo de lo que quiero decir

programo un arduino con el blink por ejemplo. este tiene que estar conectado a internet con por ejemplo la w5100. todo ok.

desde mi casa por ejemplo a 65 km del arduino estoy programando con el portatil y quiero reprogramar el arduino que tenemos con internet y modificamos el blink por otro programa.
eso es lo que quiro hacer, de momento, claro.

Surbyte eso de MAYOR hay que debatirlo , jajajaja
Eso es un rango muy alto.
Lo que tu me dices es modificar el bootloader y desde internet hacer una comunicacion TFTP con el pc y desde alli reprogramarlo, es asi?

Carmelococo, lo tuyo me gusta, pero si tengo un portatil no me gastaria el dinero en una pasperri, no?
o es otra cosa lo que me estas diciendo?

ahh por cierto el servidor que tengo con arduino la pagina es, por si la quereeis ver( es una tonteria pero bueno).

pincho41700.ddns.net

pasperry... jajajajaja Rasberry SOLDADOOOOOOOOOOO RasPi se dice para simplificar!!!

YO diría que el enfoque mas simple es el que te he presentado. UNO +W5100 con bootloader modificado para ser reprogramado via web.

Lo puedes hacer tambien con un portatil, pero encuentro casi un despilfarro dejar un portátil a 65km solo para re-programar un arduino. Yo sugerí una raspberry por su bajo coste.

A lo del bootloader modificado, le veo ciertos problemas. Según veo, solo es posible la carga por tftp, durante 5 segundos en el arranque. O hay alguien para darle al reset, o no subes el código. Otra opción es poner algo en el código, que pueda generar ese reset a petición, pero un error en esta parte del código, invalida el procedimiento.

El segundo problema que veo es el propio tftp. Los paquetes tftp, se envían siempre por udp, nunca por tcp. Esto significa que no hay corrección de errores, y si llega el nuevo código corrupto, carga corrupto.

jajajja joder CAPITAN uno no se puede equivocar, jajaja
bueno le dire raspi.
CAPITAN es un poco simple lo que dices, y si funciona de maravilla
pero carmelococo dice que si no ahy nadie para darle al reset no va a funcionar , y entonces eso no es valido, ya que estoy a 65 km del arduino.
Debe habeer alguna solucion , digo yo.

La solución pasa por una función, que haga llamar a un watchdog. Sería algo como un botón de reset en la página web del arduino, que lo lleve a un bucle infinito, que haga saltar al watchdog.

Saludos.....

No sé si será eso, pero yo lo digo.....

Dices que sólo se dispone de 5 segundos hasta que el sistema arranca. En el bootloader hay un parámetro que se llama bootdelay, que es el tiempo que que espera para arrancar, me imagino que estará puesto a 5 segundos. Yo pienso, bajo mi ignorancia, que si se abre el bootloader, se modifica ese parámetro a mas segundos y se vuelve a cerrar quizás solucione ese problema.

¿Qué extensión tiene ese bootloader img o bin?
¿Alguien lo puede pasar para abrirlo y comprobarlo?

Saludos.

para resetear por software es esta:

void software_Reset() // Restarts program from beginning but does not reset the peripherals and registers
{
asm volatile ("  jmp 0");  
}

ahora implementarlo con WDT es otra cosa

Tambien se podria hacer como dice chujalt a ver que tal va eso.

Pero se puede hacer tambien de esta forma?

Conversor rj45 a USB ->Usbasp->arduino

Creo que se podria hacer tambien asi?

Buenas!
No se si con Arduino existe la opción de leer archivos de texto (puede que con Stream, pero no lo he utilizado nunca), con la raspi sé que sí, de hecho tengo algún programa que lo hace, el archivo va cambiando constantemente y va sacando por pantalla diferentes estadísticas según lo que ponga en el archivo de texto.. supongo que en vez de añadir cosas (como el caso en que te digo), si lo que hay en el archivo es el programa principal, al cambiar ese programa, ejecutaría diferentes cosas.. puede que no sea una idea demasiado elaborada, pero por dar una solucion que pueda ser más fácil.. de esta forma, solo usarías la Raspi... :sweat_smile: :cold_sweat: (ya te digo que no es muy elaborada, pero no lo veo del todo ilógico).
Saludos!