Sommario:

Progetto Arduino: controllo dell'elettronica su Internet utilizzando Nodejs + database SQL e sito Web.: 6 passaggi
Progetto Arduino: controllo dell'elettronica su Internet utilizzando Nodejs + database SQL e sito Web.: 6 passaggi

Video: Progetto Arduino: controllo dell'elettronica su Internet utilizzando Nodejs + database SQL e sito Web.: 6 passaggi

Video: Progetto Arduino: controllo dell'elettronica su Internet utilizzando Nodejs + database SQL e sito Web.: 6 passaggi
Video: CCI2016 Azure IoT 2024, Novembre
Anonim
Progetto Arduino: controllo dell'elettronica su Internet utilizzando Nodejs + database SQL e sito web
Progetto Arduino: controllo dell'elettronica su Internet utilizzando Nodejs + database SQL e sito web
Progetto Arduino: controllo dell'elettronica su Internet utilizzando Nodejs + database SQL e sito web
Progetto Arduino: controllo dell'elettronica su Internet utilizzando Nodejs + database SQL e sito web
Progetto Arduino: controllo dell'elettronica su Internet utilizzando Nodejs + database SQL e sito web
Progetto Arduino: controllo dell'elettronica su Internet utilizzando Nodejs + database SQL e sito web

Progetto di: Mahmed.tech

Data di realizzazione: 14 luglio 2017

Livello di difficoltà: Principiante con alcune conoscenze di programmazione.

Requisiti hardware:

- Arduino Uno, Nano, Mega (penso che la maggior parte degli MCU con la connessione seriale funzionerà)

- LED singolo e resistore di limitazione di corrente. Usa questa calcolatrice se non sei sicuro: Calcolatrice di legge di Ohm

- Potenziometro 10K.

Requisiti software:

- Arduino IDE

- Node. JS (questo è un software su un computer, molto semplice da installare)

- MySQL Server (il modo più semplice che ho trovato è usare un web hosting economico. Puoi anche ottenere nomi di dominio gratuiti)

Linguaggio di programmazione e scripting utilizzato:

Arduino (C/C++ modificato), JavaScript (Nodejs), PHP, HTML e CSS

IntroduzioneQuesto progetto in poche parole: Controllo di un microcontrollore Arduino da un'interfaccia web. Quindi controlla qualsiasi dispositivo elettrico da qualsiasi luogo con Internet. Volevo ampliare la mia comprensione della programmazione e dello sviluppo web e quale modo migliore per farlo se non realizzare un progetto semplice ma efficace. L'hardware è ridotto al minimo, quindi ho potuto concentrarmi maggiormente sul software. Quindi sono andato con un semplice LED, configurazione del vaso. Il pot invierà i dati e il led riceverà (luminosità PWM). Utilizzando NodeJS sono stati letti i dati seriali (valore potenziometro) e scritti (luminosità led). La parte difficile di questo progetto è stata ottenere dati di input da una posizione remota (server web)

Fase 1: Logica del software: architettura del sistema

Logica del software: architettura di sistema
Logica del software: architettura di sistema

Dati del potenziometro:

Questo inizia da Arduino, il valore del piatto di lettura è la stampa seriale. Tuttavia, questa volta utilizzeremo Node. JS per leggere il valore. NodeJS aprirà la comunicazione seriale alla stessa porta a cui è connesso Arduino e leggerà il valore del piatto stampato. NodeJS caricherà quindi i dati su un database SQL remoto, questo accadrà ogni volta che viene stampato un nuovo valore del piatto. Una pagina web si collegherà all'intervallo impostato del database SQL e recupererà il valore del potenziometro. Questo verrà quindi visualizzato sulla pagina web.

Dati principali:

Per il led la luminosità PWM sarà impostata dall'utente su una pagina web remota, quindi il suo viaggio inizia all'estremità opposta dello spettro. I dati di input vengono salvati in un database SQL, ogni intervallo impostato il database viene controllato per un cambiamento nel led PWM, questo viene fatto da NodeJS. Se il valore è diverso dal valore precedente, il nuovo valore verrà inviato ad Arduino tramite un bus seriale. L'Arduino cambia il valore PWM di uscita del led per cambiarne la luminosità.

Il calcolatore della legge di Ohm utilizza la formula V = IR e P = IV = I²R = V²/R Per questo progetto, utilizzerò un led blu. Questo è importante perché all'aumentare della frequenza della luce aumenta anche la caduta di tensione. Poiché la luce blu ha una frequenza più alta rispetto a qualcosa come un led rosso. Ciò significa una tensione diretta più elevata. A seconda della marca, del tipo e delle dimensioni, l'intervallo di lavoro varierà. Per la mia configurazione, ho usato un resistore da 220 in serie, negativo a terra e positivo a un pin PWM su un Arduino. Il potenziometro era collegato a un pin analogico. Con 5VCC un'estremità GND l'altra e il pin centrale collegato a un pin analogico (A0 nel mio caso).

Passaggio 2: Passaggio 1: cablaggio hardware

Passaggio 1: cablaggio hardware
Passaggio 1: cablaggio hardware

Questo è molto semplice: basta collegare il resistore di limitazione della corrente in serie con il LED, assicurarsi che il LED sia corretto. Un punto andrà a GND mentre un'altra estremità andrà al pin Arduino. Per la mia configurazione, ho usato il pin 12 per il led e A7 per il Pot. Non ho uno schema poiché il suo circuito molto semplice. Tuttavia, l'ho trovato online (immagine)

Passaggio 3: Passaggio 2: Arduino

Per prima cosa, il led e il piatto sono stati controllati se stavano funzionando come previsto. Questo è stato risolto da un semplice programma in cui il valore del piatto controlla il led. Ho usato la funzione constrain per cambiare l'intervallo di pot da 0 a 1023 a 0 a 255, ma funziona anche un semplice /4. Il valore del piatto è stato livellato prendendo la media di 10 letture consecutive, questo per rimuovere i picchi. (Tuttavia, questo livellamento ha causato problemi con NodeJS, quindi questo è stato rimosso in seguito nel progetto - altro su questo)

Codice Arduino

Lettura/Scrittura seriale Il passaggio successivo consiste nel prendere l'input dell'utente tramite le finestre del monitor seriale fornite dall'ide Arduino per impostare la luminosità. Per fare ciò, viene utilizzato serial.parseInt() che accetta un valore intero e ignora la stringa. Inoltre, al codice viene aggiunto un controllo degli errori. L'intervallo valido di un valore PWM è 0 - 255, quando un utente immette >255, assegna il valore 255 e se l'utente immette un valore o < +/-5 l'ho fatto per rendere la lettura più stabile poiché era una fluttuazione. Perché questo è un grosso problema relativo all'aggiornamento di SQL, ne parleremo più avanti.

Passaggio 4: Passaggio 3: NodeJS

Non ti mostrerò come ottenere o configurare un server SQL. Ci sono tonnellate di tutorial là fuori.

Ci sono 3 aspetti principali del programma NodeJS:

Leggi dati seriali

Scrivi dati seriali

Aggiorna database SQL

Per effettuare una connessione seriale all'interno di NodeJS, è necessario scaricare un modulo chiamato serialport che può essere eseguito utilizzando il comando npm. Aprire CMD sulla cartella in cui verrà conservato il programma NodeJS, installarlo digitando: npm install serialport Anche il modulo SQL deve essere installato per potersi connettere al database sql: npm install mysql NodeJS - Serial Port Il mio primo passo con il NodeJS programma era quello di leggere i dati stampati e inviare la luminosità pwm ad Arduino. Ciò è stato fatto aprendo la connessione seriale alla stessa velocità e porta. Una volta stabilita la connessione, ho letto i messaggi in arrivo e li ho stampati sulla finestra della console. Problema sollevato quando ho provato a scrivere il valore pwm per controllare la luminosità.

Continuava a generare errori: Port Not Open, la mia soluzione iniziale era chiamare la funzione di scrittura quando ci sono dati in arrivo. Tuttavia, questa era una brutta soluzione e non ero abbastanza soddisfatto della soluzione, anche se funzionava, veniva inviata solo quando il valore del piatto veniva modificato. Il codice di esempio per il modulo seriale non funzionerebbe nemmeno generando lo stesso errore. In seguito ho scoperto che il programma stava cercando di eseguire la funzione di scrittura senza aprire la porta, il che ha provocato quell'errore. Ho risolto questo problema usando la funzione setInterval()

NodeJS - MySQLLa libreria MySQL è stata utilizzata (npm install MySQL) per connettersi al database SQL poiché il server in una posizione remota è stato utilizzato l'indirizzo IP del server anziché localhost.

var con contiene le informazioni di connessione in formato JSON, una volta che la connessione è stata effettuata con successo, il database può essere interrogato. Sono state create 2 funzioni una per l'aggiornamento della tabella l'altra selezionando con parametri che prendono in considerazione la query SQL. La tabella di aggiornamento viene chiamata quando viene ricevuto un nuovo valore del potenziometro e la query di controllo della luminosità verrà eseguita periodicamente.

Collegamento NodeJSCode

Passaggio 5: Passaggio 4: l'interfaccia Web

Passaggio 4: l'interfaccia Web
Passaggio 4: l'interfaccia Web

Interfaccia web

La pagina web principale è stata scritta in PHP poiché avevo già un po' di esperienza con i miei database CO323 e il modulo Web all'università. La tabella e il modulo HTML sono stati utilizzati per visualizzare i dati sql.

PHP SQL Access Code: Link Scorrere fino alla sezione dell'interfaccia web.

HTML & CSS * Javascript Codice pagina web: Link Scorri fino in fondo

Pagina web finale

Consigliato: