Conectar Arduino a Base de Datos Mysql

22
61975
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.

0 0 votes
Article Rating
Suscríbete
Notify of
guest

22 Comments
newest
oldest most voted
Inline Feedbacks
View all comments
EJMF
EJMF
3 years ago

Buen día, me podrian ayudar con este procedimiento de conexion para windows??

ivar
ivar
4 years ago

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?

RCASTRO03
RCASTRO03
4 years ago

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

Antony García González
Admin
Reply to  RCASTRO03

Aparentemente no has creado el objeto my_conn. Arriba te hace falta una declaración

Javier Brathwaite
4 years ago
Reply to  RCASTRO03

buenas amigos disculpen , quiero informarles que esta publicacion requiere actualizacion debido a que la libreria ha sido modificada y en su ultima version cambia su metodo de uso en los proyectos

adjunto un link con un codigo que funciona con la libreira actual . este codigo fue un apollo al compañero Felipe el año pasado
https://drive.google.com/drive/folders/1DHYn6sjoCt9e8npAKGNzsYS6S8-IBT4Z?usp=sharing

RCASTRO03
RCASTRO03
4 years ago

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.

Antony García González
Admin
Reply to  RCASTRO03

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

FELIPE
FELIPE
5 years ago

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

FELIPE
FELIPE
5 years ago
Reply to  FELIPE

estoy utilizando un arduino uno con ethernet y rfid y la base de datos en xampp

Jhon Spartan
Jhon Spartan
6 years ago

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… Read more »

Antony García González
Admin
Reply to  Jhon Spartan

Escribe en el foro y postea tu código

HP
HP
5 years ago
Reply to  Jhon Spartan

No te compliques , deja de usar PHP y graba de manera directa.

francisco madero
francisco madero
6 years ago

hola y para winows como sería la instalación?

JADA SUPPORT & SERCICES
JADA SUPPORT & SERCICES
6 years ago

para windows descarga wamp o xamp y pasa a la seccion de registro de usuario desde la web por phpmyadmin

Natividad Hernandez
Natividad Hernandez
7 years ago

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

JADA SUPPORT & SERCICES
JADA SUPPORT & SERCICES
6 years ago

en windows es mas facil solo debes descargar e instalar WAMP server

Edrian
Edrian
7 years ago

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!!!!!

JADA SUPPORT & SERCICES
JADA SUPPORT & SERCICES
6 years ago
Reply to  Edrian
Antony García González
Antony García González
7 years ago

No lo hemos utilizado

Gustavo Patiño Salas
Gustavo Patiño Salas
7 years ago

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
Antony García González
7 years ago

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

GABRIEL GALLO
GABRIEL GALLO
8 years ago

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.