Tabla de contenido:

Proyecto Arduino: Controle la electrónica a través de Internet utilizando la base de datos y el sitio web Nodejs + SQL: 6 pasos
Proyecto Arduino: Controle la electrónica a través de Internet utilizando la base de datos y el sitio web Nodejs + SQL: 6 pasos

Video: Proyecto Arduino: Controle la electrónica a través de Internet utilizando la base de datos y el sitio web Nodejs + SQL: 6 pasos

Video: Proyecto Arduino: Controle la electrónica a través de Internet utilizando la base de datos y el sitio web Nodejs + SQL: 6 pasos
Video: Pr#87 - Crear Servidor ESP8266 | Control Arduino por Internet (cualquier sitio del mundo) 2024, Noviembre
Anonim
Proyecto Arduino: Control de la electrónica a través de Internet utilizando la base de datos y el sitio web Nodejs + SQL
Proyecto Arduino: Control de la electrónica a través de Internet utilizando la base de datos y el sitio web Nodejs + SQL
Proyecto Arduino: Control de la electrónica a través de Internet utilizando la base de datos y el sitio web Nodejs + SQL
Proyecto Arduino: Control de la electrónica a través de Internet utilizando la base de datos y el sitio web Nodejs + SQL
Proyecto Arduino: Control de la electrónica a través de Internet utilizando la base de datos y el sitio web Nodejs + SQL
Proyecto Arduino: Control de la electrónica a través de Internet utilizando la base de datos y el sitio web Nodejs + SQL

Proyecto de: Mahmed.tech

Fecha de creación: 14 de julio de 2017

Nivel de dificultad: principiante con algunos conocimientos de programación.

Requisito de hardware:

- Arduino Uno, Nano, Mega (creo que la mayoría de MCU con conexión en serie funcionarán)

- LED único y resistencia limitadora de corriente. Utilice esta calculadora si no está seguro: Calculadora de la ley de Ohm

- Potenciómetro 10K.

Requisito de software:

- IDE de Arduino

- Node. JS (este es un software en una computadora, muy simple de instalar)

- MySQL Server (la forma más fácil que encontré es utilizar un alojamiento web barato. También puede obtener nombres de dominio gratuitos)

Lenguaje de programación y scripting utilizado:

Arduino (C / C ++ modificado), JavaScript (Nodejs), PHP, HTML y CSS

Introducción Este proyecto en pocas palabras: Controlar un microcontrolador Arduino desde una interfaz web. Por lo tanto, controle cualquier dispositivo eléctrico desde cualquier lugar con internet. Quería ampliar mi comprensión de la programación y el desarrollo web y qué mejor manera de hacerlo que con un proyecto simple pero efectivo. El hardware se mantiene al mínimo para poder concentrarme más en el software. Por lo tanto, opté por un LED simple, configuración de olla. La olla enviará datos y el led recibirá (brillo PWM). Usando NodeJS se leyeron los datos en serie (valor del potenciómetro) y se escribieron (brillo del led). La parte difícil de este proyecto fue obtener datos de entrada desde una ubicación remota (servidor web)

Paso 1: Lógica del software: arquitectura del sistema

Lógica del software: arquitectura del sistema
Lógica del software: arquitectura del sistema

Datos del potenciómetro:

Esto comienza en el Arduino, el valor de la olla de lectura es una impresión en serie. Sin embargo, esta vez usaremos Node. JS para leer el valor. NodeJS abrirá la comunicación en serie al mismo puerto al que está conectado el Arduino y leerá el valor de la olla impreso. NodeJS luego cargará los datos a una base de datos SQL remota, esto sucederá cada vez que se imprima un nuevo valor de potenciómetro. Una página web se conectará al intervalo establecido de la base de datos SQL y recuperará el valor del potenciómetro. Esto luego se mostrará en la página web.

Datos LED:

Para el LED, el usuario establecerá el brillo de PWM en una página web remota, por lo que su viaje comienza en el extremo opuesto del espectro. Los datos de entrada se guardan en una base de datos SQL, cada intervalo establecido en la base de datos se verifica en busca de un cambio en el LED PWM, esto lo hace NodeJS. Si el valor es diferente al valor anterior, el nuevo valor se enviará al Arduino a través de un bus serie. El Arduino cambia el valor PWM de salida del led para cambiar su brillo.

La calculadora de la ley de Ohm usa la fórmula V = IR y P = IV = I²R = V² / R Para este proyecto, usaré un LED azul. Esto es importante porque a medida que aumenta la frecuencia de la luz, también aumenta la caída de voltaje. Dado que la luz azul tiene una frecuencia más alta en comparación con algo como un LED rojo. Esto significa un voltaje directo más alto. Dependiendo de la marca, el tipo y el tamaño, el rango de trabajo variará. Para mi configuración, utilicé una resistencia de 220 Ω en serie, negativa a tierra y positiva a un pin PWM en un Arduino. La olla estaba conectada a un pin analógico. Con 5VCC un extremo GND el otro y el pin central conectado a un pin analógico (A0 en mi caso).

Paso 2: Paso 1: cableado de hardware

Paso 1: cableado de hardware
Paso 1: cableado de hardware

Esto es muy simple: simplemente conecte su resistencia limitadora de corriente en serie con el LED y asegúrese de que el LED esté en la dirección correcta. Un punto irá a GND mientras que otro extremo irá al pin Arduino. Para mi configuración, usé el pin 12 para led y A7 para Pot. No tengo un esquema ya que es un circuito muy simple. Sin embargo, encontré esto en línea (imagen)

Paso 3: Paso 2: Arduino

Primero, se revisó el led y el potenciómetro si estaban funcionando como se esperaba. Esto se redujo mediante un programa simple donde el valor del potenciómetro controla el LED. Usé la función de restricción para cambiar el rango del potenciómetro de 0 a 1023 a 0 a 255, pero un simple / 4 también funciona. El valor del bote se suavizó tomando el promedio medio de 10 lecturas consecutivas, esto es para eliminar los picos. (Sin embargo, este suavizado causó problemas con NodeJS, por lo que se eliminó más adelante en el proyecto, más sobre eso)

Código Arduino

Serial de lectura / escritura El siguiente paso es tomar la entrada del usuario a través de las ventanas del monitor serial proporcionadas por Arduino ide para establecer el brillo. Para hacer esto, se usa el serial.parseInt () que toma un valor entero e ignora la cadena. Además, se agrega una verificación de errores al código. El rango válido de un valor PWM es 0-255, cuando un usuario ingresa> 255 entonces asigna el valor 255 y si el usuario ingresa valor o <+/- 5 lo he hecho para que la lectura sea más estable ya que era fluctuación. Por qué este es un gran problema relacionado con la actualización de SQL, más sobre eso más adelante.

Paso 4: Paso 3: NodeJS

No voy a mostrarle cómo obtener o configurar un servidor SQL. Hay toneladas de tutoriales disponibles.

Hay 3 aspectos principales del programa NodeJS:

Leer datos en serie

Escribir datos en serie

Actualizar la base de datos SQL

Para realizar una conexión en serie dentro de NodeJS, se debe descargar un módulo llamado puerto serie, lo cual se puede hacer usando el comando npm. Abra CMD en la carpeta donde se guardará el programa NodeJS, instale escribiendo: npm install serialport Además, el módulo SQL debe estar instalado para poder conectarse a la base de datos sql: npm install mysql NodeJS - Serial Port Mi primer paso con NodeJS El programa era leer los datos impresos y enviar brillo pwm al Arduino. Esto se hizo abriendo la conexión serial a la misma velocidad y puerto. Una vez que se estableció la conexión, leí los mensajes entrantes y los imprimí en la ventana de la consola. Problema surgido cuando intenté escribir el valor de pwm para controlar el brillo.

Seguía arrojando errores: Puerto no abierto, mi solución inicial fue llamar a la función de escritura cuando hay datos entrantes. Sin embargo, esta fue una mala solución y estaba bastante insatisfecho con la solución, aunque funcionó, solo se enviaría cuando se cambiara el valor del bote. El código de ejemplo para el módulo serial tampoco funcionaría arrojando el mismo error. Más tarde descubrí que el programa estaba tratando de ejecutar la función de escritura sin abrir el puerto, lo que resultó en ese error. Encontré este problema usando la función setInterval ()

NodeJS - MySQL Se usó la biblioteca MySQL (npm install MySQL) para conectarse a la base de datos SQL ya que el servidor en una ubicación remota se usó la dirección IP del servidor en lugar de localhost.

var con contiene la información de conexión en formato JSON, una vez que la conexión se ha realizado correctamente, se puede consultar la base de datos. Se crearon 2 funciones una para actualizar la tabla y otra seleccionando con parámetros tomando en la consulta SQL. Se llama a la tabla de actualización cuando se recibe un nuevo valor de potenciómetro y la consulta de verificación de brillo se ejecutará periódicamente.

Enlace NodeJSCode

Paso 5: Paso 4: la interfaz web

Paso 4: la interfaz web
Paso 4: la interfaz web

Interfaz web

La página web principal estaba escrita en PHP ya que yo ya tenía algo de experiencia con mis bases de datos CO323 y el módulo web en la universidad. Se utilizó la tabla y el formulario HTML para mostrar los datos SQL.

Código de acceso PHP SQL: Enlace Desplácese a la sección de la interfaz web.

HTML y CSS * Código de página web Javascript: Enlace Desplácese hasta la parte inferior

Página web final

Recomendado: