Panama Hitek Logo
Panama Hitek Logo

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.

Javier Brathwaite
Javier Brathwaitehttp://jadasupport.wordpress.com/
Egresado del Colegio de Artes y Oficios Melchor Lasso de la Vega a nivel secundario, donde obtuve un Perito Industrial en Electrónica. Iniciando Estudios Universitarios en la Universidad Tecnológica de Panamá y continuándolos en la Universidad Metropolitana de Educación, Ciencia y Tecnología (UMECIT), obteniendo el título de Técnico en Ingeniería Electrónica y Telecomunicaciones. Actualmente me mantengo en el ámbito de Integración de equipos de seguridad electrónica, sistemas de CCTV, control de acceso, alarmas de intrusión e incendio. Cuento con 14 años de experiencia, iniciando desde el año 2000, desarrollándome en el medio como técnico instalador, soporte técnico, soporte de ventas, diseño e implementación de soluciones, jefe del departamento de ingeniería de proyectos, y actualmente gerente de sistemas de CCTV.

Posts relacionados

22 COMENTARIOS

  1. 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.

  2. 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.

  3. 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

  4. Hola tengo instalado el paquete AppServ en windows 10 y estoy usando un Arduino Mega + una
    Ethernet Shield que leen un sensor de temperatura LM35 y una Fotoresistencia y manda las lecturas a un codigo PHP por el metodo GET a una Base de Datos Mysql, pero los valores no se cargan. El codigo php creo que esta bien por que por la URL si puedo cargar los datos en la tabla, mis dudas estan en el codigo para la Ethernet Shield, Aunque parece que si manda los datos por que al poner la direccion Ip declarada para el Arduino Muestra los valores, que cada que vuelve a cargar la pagina se actualizan o cambian. HELP si me pueden ayudar por favor. Gracias

  5. hola buen dia como seria la coneccion en windows es que tengo que realizar un proyecto y ya namas me falta conectar el arduino con la base de datos del xampp

  6. Hola, estoy haciendo todo como lo indica, pero el mysql lo tengo instalado wn windows, he creado la BBDD y la tabla, paso el codigo al IDE arduino, lo compilo y me da el mismo error, en esta linea,

    IPAddress server_addr(192.168.0.169); /* configuración de MySQL Conector/arduino */Connector my_conn; // referencia de conexion del Conector/arduino

    esa IP es la que tengo puesta en el etherber shiel, no como configurar el conecta arduino para colocarle la IP, necesit su ayuda por favor, es un proyecto de clase.

    • Posiblemente necesites crear un script en PHP para gestionar la comunicación entre tu Arduino y la base de datos. PHP se encarga de la parte difícil y Arduino solo envía y recibe texto

  7. Este es el error que mes da.

    Arduino:1.8.10 Hourly Build 2019/07/23 10:33 (Windows 10), Tarjeta:»Arduino Ethernet»
    prueba:18:86: error: ‘Connector’ does not name a type

    IPAddress server_addr(192, 168, 0, 50);/* configuración de MySQL Conector/arduino */Connector my_conn; // referencia de conexion del Conector/arduino

    ^~~~~~~~~

    C:\Users\Richard\Documents\prueba\prueba.ino: In function ‘void setup()’:

    prueba:27:5: error: ‘my_conn’ was not declared in this scope

    if (my_conn.mysql_connect(server_addr, 3306, user, password)){

    ^~~~~~~

    exit status 1
    ‘Connector’ does not name a type

  8. Hola, utilizando la librería MySQL connector del Dr. Bell es posible conectar sin interfaces Arduino con la base de datos, alguien ha realizado algún tipo de ejemplo interactivo con Arduino y SQL?

DEJA UNA RESPUESTA

Por favor ingrese su comentario!
Por favor ingrese su nombre aquí

Post relacionados