Conectar Arduino a Base de Datos Mysql

En esta Publicación  les mostrare como conectar nuestro Arduino a una base de datos MySQL de manera directa sin necesidad de utilizar PHP u otros métodos conocidos. Para ello utilizaremos el MySQL Conector /Arduino.

En Panama Hitek ya se ha escrito bastante sobre MySQL:

En esta ocasión, sin embargo, vamos a publicar cómo lograr la conexión entre un Arduino y MySQL. MySQL Conector/Arduino nos permite conectar nuestros proyectos y almacenar datos directamente a un servidor MySQL. Con ello podemos almacenar data de sensores que a diario utilizamos en nuestros proyectos como los de Temperatura, Humedad, Proximidad, Voltajes, luces de tipo digital y analógicos. Todo esto sin utilizar un equipo intermedio o servicio web como PHP  u otros métodos web conocidos.

Con el acceso directo a un servidor de MySQL podemos almacenar y adquirir datos de nuestros proyectos desde las tablas en el servidor manteniendo la conexión del Arduino a la base de datos embebida en nuestra placa.

El Conector fue desarrollado por  Dr. Charles Bell, Senior Software Developer, MySQL Utilities Team Lead.

Detalles sobre la licencia:  The library is open source, licensed as GPLv2, and owned by Oracle Corporation. Thus, any modifications to the library that you intend to share must meet the GPLv2 license. Open Source (Copyright (c) 2012, 2015 Oracle and/or its affiliates. All rights

Que necesitamos

  1. Servidor Msql instalado (windows/Linux/Mac) (Para Windows ver: Creación de bases de datos MySQL con Xampp)
  2. MySQL Conector/Arduino
  3. Arduino Uno/ Mega

 

Primer Paso Instalación de MySQL

Iniciamos con la instalación de MySQ. En este paso me enfocaré en la instalación dentro de sistema operativo Linux, enfocado en distribución derivada de Debian, Raspbian, basándome en Software/Hardware open source.

Luego explicare como instalar en Windows.

Instalación de servidor LAMP (Linux, Apache, MySQL, PHP)

Ingresamos en la consola de comando de Linux. Recordar que al utilizar el comando sudo nos pedirá la contraseña de root para ejecutar con privilegios de administrador.

  • Actualizamos los repositorios

  • Actualizamos los paquetes

  • Ahora instalamos Apache

  • Instalamos MySQL

  • Durante la instalación se te solicitara una contraseña para el usuario "root" de MySQL. Este usuario contiene los privilegios de administración de nuestro servidor MySQL (no confundir con el usuario “root” de Linux). OJO: apuntar esta contraseña y continuar con la instalación.
  • Luego creamos la base de datos propia de MySQL para su estructura de directorio

  • Instalamos PHP

  • Después de instalar todo realizamos una prueba. Creamos el siguiente archivo llamado info.php:

  • Se abrirá el editor de texto "nano". Todo sale en blanco ahora escribimos lo siguiente

  • Cerramos con la tecla "ctrl + x" aceptamos con "Y"  y le damos enter.
  • Visitamos esta pagina desde nuestro navegador"http://dirección_IP_del_servidor/info.php"
  • Debe salir un mensaje como el de la imagen.info.php_

Ahora instalamos el administrador de base datos phpMyAdmin que nos permite tener un entrono visual para el manejo de nuestra base de datos.

  • Nos preguntara que servidor web estamos utilizando elegimos Apache2.  Le damos Yes. Cuando nos consulte si queremos configurar la base de datos por"phpmyadmin dbconfig-common". Ingresamos la contraseña que establecimos para el usuario"root" en la instalación de MySQL.
  • Agregamos PHPMyAdmin a  la configuración de Apache

  • Agregamos PHPMyAdmin al archivo de configuracion apache2.conf. 

  • Reiniciamos el servidor Apache

  • Accedemos al la consola de phpmyadmin "http://dirección_IP_del_servidor/phpmyadmin".
  • Utilizamos el nombre de usuario y la contraseña de"root".

Segundo Paso

Descargamos el conector de MySQL y su manual en PDF (ingles) desde este enlace DESCARGA. Continuamos con la instalación del conector copiando los archivos descargados dentro de la carpeta "/Arduino/Libraries/"

Configuración del servidor de MySQL para la conexión con el Arduino 

Se debe preparar el servidor de MySQL, de modo que nuestro Arduino pueda conectarse a el. Comenzamos configurando el usuario de modo que el mismo pueda acceder a la base datos de diferentes modos: local o remoto.

Nota: es importante verificar que nuestro usuario tenga tanto acceso remoto como acceso via ethernet por medio de la direccion IP de nuestro servidor de MySQL. De no poder establecer conexión con la base de datos sera imposible que nuestro Arduino establezca haga lo mismo.

Iniciamos con la Creación del Usuario

ingresamos a la consola de phpmyadmin desde nuestro explorador  de manera local.

utilizamos el usuario “root” y la “contraseña de root que asignamos en la instalacion”.

"http://localhost/phpmyadmin/index.php"

phpmyadminlogin

Debemos crear un usuario para conectar el Arduino. No se recomienda el uso del usuario root.

Para facilitar la creacion de usuarios y ahorrarnos la creacion de los mismo por medio de codigo, lo explicare utilizando la interfase web de PHPMyAdmin.

Ingresamos en la opción Users.
add user generalPodemos notar que el usuario root esta creado repetidas veces. En la columna Host de usuarios el usuario root mantiene lo siguiente: al conectarse a la base de datos se establece conexión utilizando el nombre de usuario y la dirección desde donde el usuario se esta conectando.

Por ejemplo si utilizamos root para conectarnos a la base de datos desde la consola de SQL Plus estaremos iniciando sesion de la siguiente forma:

root@localhost

Si lo utilizamos de manera remota seria:

root@ip_del_equipo_ remoto

Por eso el usuario root tiene difrentes host.

  • % = cualquier direccion ip puede establecer conexion a la base de datos con el usuario root
  • 127.0.0.1 = este es el ip interno o local host
  • localhost = conexion desde el servidor.
  • 192.168.1.105 = IP del Arduino con el cual se conectara a la base de datos.

Ahora debemos crear un 3 usuarios iguales con los mismo privilegios. Le damos click a Add usser.

add user

 

El usuario debe tener las siguientes opciones:

add user 2

Los 3 usuarios con la misma contraseña:

  1. Con opción any host
  2. Con opción local
  3. Con opción Use text field e ingresamos el IP de nuestro Arduino.
Atención:

Esta parte es importante y me dio problemas con el servidor LAMP. El servidor WAMP me funciono sin complicaciones.

Debemos probar conectarnos a la base de datos desde el usuario creado para nuestro Arduino. La prueba la podemos realizar desde otro computador o desde el nuestro de la siguente manera:

Abrimos terminal y escribimos:

Nos solicitara el password

SQL tets

Si todo va bien ingresa a la consola de SQL plus. Para salir de la consola SQL plus escribimos \q y salimos.

Llo importante es poder ingresar por medio del IP de nuestra tarjeta de red ya sea la ethernet o la inalámbrica. Si no podemos acceder desde el IP, verificamos el acceso por localhost.

Podemos verificar el IP de nuestro PC escribiendo en consola ipconfig. Nos muestra las interfaces y sus configuraciones IP.ip ifconfig

Ahora explico el tipico problema que es que nuestro servidor MySQL esta configurado para aceptar conexiones locales. Debemos modificar el archivo de configuración.

Observemos la imagen donde trato de ingresar por medio del IP del servidor y me devuelve un error. Luego acceso al archivo de configuración, realizo los cambios y listo! Se conecta!.

 

errores

Si observamos como se resolvió el problema de conexión, después del ultimo intento que devuelve el error 2003 (111).

Vemos que estoy en consola dentro del directorio mi directorio”javi@javi-Inspiron-1420:~$ cd ..
Con “cd .. ” salí del directorio donde me encontraba y quede en el directorio home. Al volver a repetir el comando salí del directorio home y regrese a la raíz principal .

Luego con “cd etc/mysql/” ingreso dentro del archivo MySQL donde esta el archivo de configuración que debemos editar. Para ello:

mycnf

En bind-address ingresamos el IP de nuestra interfaz de red, ya sea la física o la inalambrica.

Luego detenemos el servidor MySQL

Lo iniciamos con

O bien solo lo reiniciamos  (por experiencia es mejor detener e iniciar).

Ahora nos conectamos con el IP de la interfaz.

Configuracion del Sketch

      • Ahora le cargamos el sketch con la configuracion inicial, la cual sera solamente la conexion del arduno con la base de datos.



 

Conectar el arduino a la red y realizar la prueba de conexión. 

Al conectar el Arduino al puerto USB y tratar de programar o acceder a la consola serial nos devuelve un error de acceso al puerto el cual se corrige cambiando los atributos de acceso al puerto desde la consola de comando.

Digitamos

ide error

serial atributos

arduino conect

Debe salir el mensaje de conexión. Cabe mencionar que existen limitantes por lo que se recomienda leer el manual adjunto al Conector MySQL/Arduino. De tener algún problema o duda estamos para apoyarles.

Saludos

Javier A. Brathwaite V.

¿Te gustó? ¡Comparte!Share on LinkedInShare on FacebookTweet about this on TwitterEmail this to someoneShare on RedditShare on TumblrShare on Google+Pin on PinterestBuffer this page
  • GABRIEL GALLO

    buenas días amig@, quisiera que me ayudaran, estoy haciendo un prototipo de SAE y me toco el area de telemetria , ya tengo montado el arduino con mi esp8266 ya hice pruebas con comando AT, me salio muy bien el pero el problema es que que estoy utilizando el programa intouch quiero mandar aunque sea un dato para que se muestre en mi intouch, he probado con el protocolo modbus y no me funciono. en este caso que podria hacer gracias.

  • Gustavo Patiño Salas

    Buenas noches, compañero estoy iniciando un nuevo proyecto con arduino y java; pero anteriormente ya he trabajado con comunicación serial y desarrolle un proyecto que funciono perfectamente. En este nuevo caso quiero hacer la comunicación por ethernet pero tengo unas dudas y me gustaría poder despejarlas con su ayuda ya que es notable que tienen experiecia en estos temas.

    • Antony García González

      Qué método usará para conectarse a ethernet?

  • Antony García González

    No lo hemos utilizado

  • Edrian

    Un saludo, me gustaria saber cuales librerias son necesarias a parte de la de mysql_connector y donde me las puedo bajar, por favor aiiuuudaaa!!!!!

  • Natividad Hernandez

    Buen día, antes que nada gracias por el aporte, quisiera saber si ya cuenta con el método de instalación y puesta en marcha en windows?? y donde subirá esa información. Saludos