Taula de continguts:

Projecte Arduino: Electrònica de control per Internet mitjançant Nodejs + SQL Database i lloc web: 6 passos
Projecte Arduino: Electrònica de control per Internet mitjançant Nodejs + SQL Database i lloc web: 6 passos

Vídeo: Projecte Arduino: Electrònica de control per Internet mitjançant Nodejs + SQL Database i lloc web: 6 passos

Vídeo: Projecte Arduino: Electrònica de control per Internet mitjançant Nodejs + SQL Database i lloc web: 6 passos
Vídeo: CS50 2013 - Week 9 2024, Desembre
Anonim
Projecte Arduino: Electrònica de control per Internet mitjançant Nodejs + base de dades SQL i lloc web
Projecte Arduino: Electrònica de control per Internet mitjançant Nodejs + base de dades SQL i lloc web
Projecte Arduino: Electrònica de control per Internet mitjançant Nodejs + base de dades SQL i lloc web
Projecte Arduino: Electrònica de control per Internet mitjançant Nodejs + base de dades SQL i lloc web
Projecte Arduino: Electrònica de control per Internet mitjançant Nodejs + base de dades SQL i lloc web
Projecte Arduino: Electrònica de control per Internet mitjançant Nodejs + base de dades SQL i lloc web

Projecte de: Mahmed.tech

Data de realització: 14 de juliol de 2017

Nivell de dificultat: principiant amb alguns coneixements de programació.

Requisit de maquinari:

- Arduino Uno, Nano, Mega (crec que la majoria de MCU amb connexió sèrie funcionaran)

- Resistència limitant de corrent i LED únic. Utilitzeu aquesta calculadora si no esteu segur: Calculadora de la llei d’Ohms

Potenciòmetre de 10K.

Requisits de programari:

- ID Arduino

- Node. JS (es tracta d’un programari en un ordinador, molt senzill d’instal·lar)

- MySQL Server (la forma més senzilla que he trobat és fer servir un allotjament web barat. També podeu obtenir noms de domini gratuïts)

Llenguatge de programació i seqüència utilitzat:

Arduino (C / C ++ modificat), JavaScript (Nodejs), PHP, HTML i CSS

Introducció Aquest projecte en poques paraules: controlar un microcontrolador Arduino des d’una interfície web. Per tant, controleu qualsevol dispositiu elèctric des de qualsevol lloc amb Internet. Volia ampliar la meva comprensió de programació i desenvolupament web i quina millor manera de fer-ho que fer un projecte senzill però eficaç. El maquinari es manté al mínim, de manera que em podria centrar més en el programari. Per tant, vaig anar amb un senzill LED, configuració de pot. El pot enviarà dades i el led rebrà (brillantor PWM). Mitjançant NodeJS es van llegir i escriure les dades en sèrie (valor del potenciòmetre) (brillantor del led). La part difícil d’aquest projecte era obtenir dades d’entrada des d’una ubicació remota (servidor web)

Pas 1: lògica de programari: arquitectura del sistema

Lògica de programari: arquitectura de sistemes
Lògica de programari: arquitectura de sistemes

Dades del potenciòmetre:

Això comença a l'Arduino, el valor del pot de lectura és imprès en sèrie. Tanmateix, aquesta vegada utilitzarem Node. JS per llegir el valor. NodeJS obrirà la comunicació serial al mateix port on es connecta l'Arduino i llegirà el valor de la pota impresa. A continuació, NodeJS carregarà les dades a una base de dades SQL remota, això passarà cada vegada que s’imprimeixi un valor de pot nou. Una pàgina web es connectarà a l'interval establert de base de dades SQL i recuperarà el valor del potenciòmetre. Tot seguit, es mostrarà a la pàgina web.

Dades de led:

Per al led, la brillantor PWM serà establerta per l'usuari en una pàgina web remota, de manera que el seu viatge comença a l'extrem oposat de l'espectre. Les dades d'entrada es desen a una base de dades SQL, cada interval de configuració que la base de dades comprova si hi ha un canvi en el LED PWM, això ho fa NodeJS. Si el valor és diferent del valor anterior, el nou valor s'enviarà a l'Arduino mitjançant un bus sèrie. L'Arduino canvia el valor PWM de sortida del led per canviar la seva brillantor.

La calculadora de la llei d’Ohms utilitza la fórmula V = IR i P = IV = I²R = V² / R Per a aquest projecte, faré servir un led blau. Això és important perquè a mesura que augmenta la freqüència de llum, la caiguda de tensió també augmenta. Atès que la llum blava té una freqüència més alta en comparació amb un LED vermell. Això significa una tensió directa més alta. Segons la marca, el tipus i la mida, el rang de treball variarà. Per a la meva configuració, he utilitzat una resistència de 220 Ω en sèrie, negativa a terra i positiva a un pin PWM en un Arduino. El pot estava connectat a un pin analògic. Amb 5VCC un extrem GND l’altre i el pin central connectat a un pin analògic (A0 en el meu cas).

Pas 2: pas 1: cablejat de maquinari

Pas 1: cablejat de maquinari
Pas 1: cablejat de maquinari

Això és molt senzill: només heu de connectar la resistència limitant actual en sèrie amb el LED i assegureu-vos que el vostre led sigui correcte. Un punt anirà a GND, mentre que un altre extrem serà al pin Arduino. Per a la meva configuració, he utilitzat el pin 12 per a led i A7 per a Pot. No tinc cap esquema ja que és un circuit molt senzill. Tot i això, ho vaig trobar en línia (imatge)

Pas 3: Pas 2: Arduino

En primer lloc, es va comprovar el led i el pot si funcionaven tal i com s’esperava. Això va caure en un senzill programa on el valor pot pot controlar el led. He utilitzat la funció de restricció per canviar el rang de pot de 0 a 1023 a 0 a 255, però també funciona un simple / 4. El valor del pot es va suavitzar prenent la mitjana mitjana de 10 lectures consecutives, és a dir, per eliminar pics. (Tanmateix, aquest suavitzat va causar problemes amb NodeJS, de manera que es va eliminar més endavant en el projecte, més sobre això)

Codi Arduino

Lectura / Escriptura de sèries El següent pas consisteix a fer l’entrada de l’usuari a través de les finestres del monitor sèrie proporcionades per l’Arduino ide per configurar la brillantor. Per fer-ho, s'utilitza el serial.parseInt () que pren un valor enter i ignora la cadena. A més, s’afegeix una comprovació d’errors al codi. L’interval vàlid d’un valor PWM és de 0 a 255, quan un usuari introdueix> 255, assigna el valor 255 i si l’usuari introdueix un valor o <+/- 5 ho he fet per fer la lectura més estable ja que era fluctuació. Per què aquest és un gran problema relacionat amb l’actualització d’SQL, més endavant.

Pas 4: pas 3: NodeJS

No us mostraré com obtenir o configurar el servidor SQL. Hi ha un munt de tutorials per aquí.

El programa NodeJS té tres aspectes principals:

Llegiu dades de sèrie

Escriu dades de sèrie

Actualitzeu la base de dades SQL

Per fer una connexió serial dins de NodeJS, s’ha de descarregar un mòdul anomenat serialport que es pot fer mitjançant l’ordre npm. Obriu CMD a la carpeta on es guardarà el programa NodeJS, instal·leu escrivint: npm install serialport També cal instal·lar el mòdul SQL per poder connectar-vos a la base de dades sql: npm install mysql NodeJS - Port sèrie El meu primer pas amb el NodeJS El programa consistia a llegir les dades impreses i enviar la brillantor de pwm a l’Arduino. Això es va fer obrint la connexió sèrie al mateix port i braudrate. Un cop establerta la connexió, vaig llegir els missatges entrants i els vaig imprimir a la finestra de la consola. Problema plantejat quan vaig intentar escriure el valor pwm per controlar la brillantor.

Va continuar llançant errors: Port Not Open, la meva solució inicial era trucar a la funció d’escriptura quan hi ha dades entrants. Tanmateix, això va ser una mala solució i no estava satisfet amb la solució, tot i que funcionés, només s'enviaria quan es canviés el valor del pot. El codi d'exemple per al mòdul sèrie tampoc funcionaria generant el mateix error. Més tard vaig descobrir que el programa intentava executar la funció d'escriptura sense obrir el port, cosa que va provocar aquest error. He solucionat aquest problema mitjançant la funció setInterval ()

NodeJS - MySQL Es va utilitzar la biblioteca MySQL (npm install MySQL) per connectar-se a la base de dades SQL ja que el servidor en una ubicació remota es va utilitzar l'adreça IP del servidor en lloc de localhost.

var con conté la informació de connexió en format JSON, una vegada que la connexió s'ha realitzat correctament, es pot consultar la base de dades. Es van crear 2 funcions, una per actualitzar la taula, una altra seleccionant amb paràmetres que prenen la consulta SQL. La taula d'actualitzacions es diu quan es rep un valor nou de pot i la consulta de comprovació de la brillantor s'executarà periòdicament.

Enllaç NodeJSCode

Pas 5: pas 4: la interfície web

Pas 4: la interfície web
Pas 4: la interfície web

Interfície web

La pàgina web principal es va escriure en PHP, ja que ja tenia una mica d’experiència de les meves bases de dades CO323 i del mòdul web de la universitat. S'ha utilitzat la taula i el formulari HTML per mostrar les dades sql.

Codi d'accés SQL de PHP: enllaç Desplaceu-vos a la secció d'interfície web.

HTML i CSS * Codi d’aplicació web Javascript: enllaç Desplaçament cap a la part inferior

Pàgina web final

Recomanat: