Home»Desarrollos»Medidor de consumo con Arduino. El corazón del proyecto

Medidor de consumo con Arduino. El corazón del proyecto

0
Shares
Pinterest WhatsApp

Arduino_Duemilanove_0509El pequeño corazón de nuestro proyecto va a ser un Arduino Duemilanove que cuenta con un Atmel ATmega328. Este gran conocido por la comunidad open-hardware irá realizando las lecturas de la pinza amperímetra, recogiendo la temperatura medida por el DS18B20, y enviando toda esta información a nuestra base de datos gracias a la interfaz ethernet ENC28J60.

Lo primero que tendremos que hacer es descargar el IDE de desarrollo que nos va a permitir escribir el fuente de nuestra aplicación, programar el Arduino mediante la conexión USB, y tendremos una pequeña consola de monitorización para ver que esta haciendo realmente nuestra placa.

Entorno de desarrollo

Podemos descargar el IDE en el siguiente enlace, y esta disponible tanto para Windows como para Linux y Mac. En la propia instalación se incluye una serie de ejemplos para poder empezar a trastear con nuestro pequeño desde el primer minuto.arduino_ide

Una vez instalado tendremos que seleccionar el tipo de Arduino con el que vamos a trabajar, con lo que iremos a la opción «Herramientas->Placa», y también deberemos seleccionar el puerto COM donde está conectado a nuestro PC. Esta información es necesaria para poder cargar el programa que hayamos desarrollado en el microcontrolador que monta el Arduino.

Últimamente se están vendido placas Arduino con un chip adaptador USB CH340. Si es nuestro caso, deberemos descargar e instalar los drivers adecuados. Hay cientos de páginas en la red que hablan sobre este tema, os dejo un enlace para descargarlo. Descargar Drivers.

Si tenemos un Arduino «pata negra» los drivers se instalaran automáticamente en nuestro equipo.

Lenguaje de programación y estructura del programa

El lenguaje de programación que vamos a utilizar para trabajar con nuestro Arduino es el «C». Viejo conocido de los ingenieros que en alguna asignatura habrán tenido que utilizarlo para desarrollar pequeñas aplicaciones, desde 1972 se ha estado utilizando tanto para desarrollar aplicaciones como para desarrollar software de sistemas e incluso sistemas operativos como Linux.

La idea de este pequeña serie de posts no es la de enseñar a programar ni enseñar un lenguaje de programación, pero vamos a hacer una pequeña introducción a las partes que componen un programa o sketch.

Nuestro programa se dividirá en 5 partes:

  • Inclusión de ficheros de cabecera
    • Al principio de nuestro programa incluiremos las librerías necesarias para poder trabajar con los dispositivos conectados al Arduino
  • Definición de variables globales
    • En esta parte definiremos todas las variables que se emplearán en los diferentes métodos del programa.
  • Método setup()
    • Este método se ejecutará nada más conectar a corriente la placa del Arduino y sirve para configurar los diferentes dispositivos.
  • Método loop()
    • Método que se ejecutará de forma cíclica y continua. Es donde meteremos toda nuestra lógica.
  • Resto de métodos
    • Podemos añadir a nuestro sketch todas las funciones que deseemos y que nos permita tener un programa legible y que podamos modificar de forma sencilla.

Veamos un pequeño ejemplo que vienen con el propio IDE y que nos permite mostrar un mensaje de texto en una pantalla LCD:

// include the library code:
#include <LiquidCrystal.h> 
 
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
 
void setup() {
   // set up the LCD's number of columns and rows:
   lcd.begin(16, 2);
   // Print a message to the LCD.
   lcd.print("hello, world!");
}
 
void loop() {
   // Turn off the blinking cursor:
   lcd.noBlink();
   delay(3000);
   // Turn on the blinking cursor:
   lcd.blink();
   delay(3000);
}

En este programa podemos ver perfectamente las 4 partes principales que comentaba más arriba:

  • Se incluye la librería LiquidCrystal.h para gestionar la pantalla LCD
    #include <LiquidCrystal.h>
  • Definimos la variable «lcd» con los pins que se utilizaran para ser controlado desde el Arduino.
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
  • En el método setup se inicializa la pantalla LCD, y en este ejemplo ya se muestra un mensajes
    lcd.begin(16, 2);
    lcd.print("hello, world!");
  • Por último, en el método loop, se hace parpadear el LCD con un retardo de 3 segundos, de forma indefinida
    lcd.noBlink(); 
    delay(3000);
    lcd.blink(); 
    delay(3000);

Existe un buen número de ejemplos con el propio IDE  que permite jugar de forma fácil y rápida con gran cantidad de hardware que se puede conseguir fácilmente por internet.

Programación del Arduino

Una vez tengamos creado nuestro programa, solo nos falta cargarlo en el Arduino.

Conectaremos nuestra parduinoProgramadorlaca a un USB del PC y seleccionaremos el tipo de Arduino y el puerto COM según hemos visto al principio de este post.

El siguiente paso es ir a la opción del menú superior «Programa» y pulsar sobre «Subir». En este proceso se realizarán varias cosas:

– Se verificará que el programa es sintácticamente correcto.

– Se compilará junto con las librerías que hayamos incluido.

– Si todo ha ido correctamente, y el programa no supera la memoria de nuestro pequeño, se cargará a la placa.

– Se reiniciará el Arduino y empezará a ejecutar nuestro sketch.
Ya hemos visto como crear programas y como cargarlos en nuestro Arduino, en la próxima entrega empezaremos a definir el programa para nuestro medidor de consumo.

 

Previous post

Medidor de consumo con Arduino. Un poco de teoría

Next post

Medidor de consumo. Lectura de la corriente con Arduino

1 Comment

  1. 31 agosto, 2017 at 6:34 am — Responder

    Hola

    Estuve leyendo tu artículo y hay demasiadas información que no sabía que me has enseñado, esta maravilloso..
    te quería devolver el periodo que dedicaste, con unas infinitas gracias, por preparar
    a personas como yo jajaja.

    Adios

Leave a reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *