Taula de continguts:
- Pas 1: lògica de programari: arquitectura del sistema
- Pas 2: pas 1: cablejat de maquinari
- Pas 3: Pas 2: Arduino
- Pas 4: pas 3: NodeJS
- Pas 5: pas 4: la interfície web
- Pas 6: resultat
Vídeo: Projecte Arduino: Electrònica de control per Internet mitjançant Nodejs + SQL Database i lloc web: 6 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:15
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
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
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
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:
Estació meteorològica: ESP8266 amb son profund, SQL, gràfic per flascó i gràfic: 3 passos
Estació meteorològica: ESP8266 With Deep Sleep, SQL, Graphing by Flask & Plotly: Seria divertit conèixer la temperatura, la humitat o la intensitat de la llum al balcó? Sé que ho faria. Així que vaig fer una senzilla estació meteorològica per recopilar aquestes dades. Les seccions següents són els passos que vaig fer per crear-ne un. Comencem