lunes, 29 de junio de 2015

Arduino , Ethernet Shield y algo de HTML

Repasando la entrada anterior, me gustaría comentar algunos puntos que no se tocaron y que pueden resultar de interés.
El primero tiene que ver con el hardware del ejemplo. Hay mucha variedad de Ethernet Shields en el mercado. Os recomendé un par que son compatibles con el Arduino, hay muchas más, pero debéis fijaros que el CHIP que use sea el W5100 Ethernet controller IC , para evitar problemas de compatibilidad.

 El siguiente punto, también de hardware tiene que ver con el consumo de ese chip. Puede llegar a ser muy alto, y además de calentarse, y de qué manera, es necesario alimentar el ejemplo con una fuente de alimentación externa, pues vuestra conexión USB no dispone de la potencia necesaria. Si aún no lo habíais hecho, es un buen momento para hacerse con una fuente externa de 9 V para alimentar vuestro Arduino.
El último punto relacionado con el hardware,  tiene que ver con los pins 10,11,12 y 13 del Arduino. Estos pins se usan para la comunicación con la Ethenet shield, por lo que no podrán ser usados para otro fin cuando se use con esta ampliación.
El resto de puntos que me gustaría tratar, están relacionados con el código del sketch de ejemplo. Al final lo que conseguimos es convertir nuestro Arduino en un servidor web.  La página mostrada es de una sencillez máxima,(es un ejemplo “demo”)  y tampoco veréis grandes florituras en los ejemplos míos  que vendrán, pues mis conocimientos de HTML son básicos.
Pero me gustaría desarrollar un poco las líneas más básicas de código HTML para mostrar la información de una manera mínimamente inteligible.
Hasta ahora, en algún ejemplo como este, habíamos usado la instrucción serial.print(); para mostrar la información que queríamos en el Monitor Serial.
Sin embargo en este ejemplo usamos la instrucción :

client.println();

Entre los parantésis podemos escribir desde un texto entre comillas:

            client.print("analog input ");


O el valor de una variable cualquiera:

            client.print(sensorReading);


Salto de línea, mostrará el siguiente valor o texto en otra línea:

            client.println("<br />");      


Y dos líneas imprescindibles que marcan el inicio y el final de un código en HTML:

            client.println("<html>");


Y
          client.println("</html>");


Otra instrucción también interesante, es la que controla el tiempo de refresco de la página. En el ejemplo del día anterior era cada 5 segundos:

client.println("Refresh: 5"); // refresh the page automatically every 5 sec

Eso es todo de momento. Espero hayáis podido configurar vuestra Ethernet Shield y el router sin problemas, pues seguiremos avanzando en las próximas entradas en estos temas.

8 comentarios:

  1. Me acaba de llegar la ethernet shield y la he cargado el código de ejemplo de webserver, pero al principio se conecta bien a la ip y consigo ver la web que crea pero como ese ejemplo se actualiza cada 5 segundos, después de que la página se actualiza 2 veces deja de funcionar y no consigo ver la página con Chrome. Aparte he notado que el chip de la shield se calienta mucho y me da miedo que se queme.

    ResponderEliminar
    Respuestas
    1. Cómo estás alimentando el circuito? Esta placa, y sobre todo el chip ethernet tiene un alto consumo. Prueba con alimentación externa, a través de pila o transformador y me cuentas. Por otro lado, el calentamiento es normal.
      Un saludo.

      Eliminar
    2. De acuerdo, lo voy a probar y ya diré si se soluciona mi problema

      Eliminar
    3. Lo he probado con una fuente de alimentación de 12v conectada por el jack de arduino y aparentemente ha funcionado bien, pero el regulador de voltaje de arduino estaba muy caliente y ha empezado a echar humo (creo que he quemado el regulador de voltaje de arduino) y ¿ahora podría alimentar a arduino por usb y a la ethernet shield con otra fuente?

      Eliminar
  2. Algo más falla. La tensión de alimentación recomendada para esta placa es de 7 a 12V, pero los límites son de 6 a 20V, por lo que el regulador no debería sufrir ni sobrecalentarse por este motivo.
    ¿Tienes algún componente más conectado? Algún cable directo a masa , un led sin resitencia limitadora, etc, revisa estos puntos y desconectados para hacer la prueba. Controla también que los pins han encajado correctamente y que no hay alguno que haya quedado fuera y te esté cortocircuitando la placa.
    Alimentar las placas por separado es posible, pero deberás conectar las masas en común, o no te funcionará. Si decides poner en marcha esta alternativa, no las montes juntas. Alimenta la placa ethernet a los pins de 5V y GND, y une los pins 10,11,12 y 13 de ambas placas. El 10 con el 10, 11 con 11 etc. El resto no es necesario. Y une con un cable las masas de ambos circuitos.
    Si encuentras algo más no dudes encomendarlo, tambo´n me puedes enviar una foto para intentar ser más concreto.

    Un saludo

    ResponderEliminar
  3. Muchas gracias por tu ayuda, al final he alimentado al conjunto por separado, el arduino por USB y la shield con una fuente de 5v y he unido tierras. Ahora funciona perfectamente; aunque me haya quedado sin regulador de voltaje, pero no es un gran problema.

    ResponderEliminar
  4. Disculpen es normal que el micro de la ethernet shield se caliente? La alimento con el mismo cable usb de la arduino al conectarla a la pc. Pregunto esto porque hace tiempo se me quemo el micro de la arduino peeo esa vez se calento muchisimo

    ResponderEliminar
    Respuestas
    1. Hola Victor Hugo,

      Dentro de la Ethernet Shield, hay un chip que es el W5100, que si que alcanza temperaturas bastante elevadas. Por el elevado consumo que tiene yo te recomendaría que para sesiones de pruebas largas, la alimentes por separado, o mejor a través de la toma de corriente de la placa de Arduino. No por el chip Arduino, sino por el puerto USB de tu ordenador. Un simple transformador a 9V es ideal para este tipo de pruebas y otras que iremos realizando con relés. Si te animas a hacerte con uno, busca uno que llegue a 1A, o al menos pase de los 500mA.

      Un saludo

      Eliminar