Cuprins:
- Pasul 1: Logica software: Arhitectura sistemului
- Pasul 2: Pasul 1: Cablare hardware
- Pasul 3: Pasul 2: Arduino
- Pasul 4: Pasul 3: NodeJS
- Pasul 5: Pasul 4: interfața web
- Pasul 6: Rezultat
Video: Proiect Arduino: Electronice de control pe Internet folosind baza de date Nodejs + SQL și site-ul web: 6 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:45
Proiect de: Mahmed.tech
Data realizării: 14 iulie 2017
Nivel de dificultate: Începător cu unele cunoștințe de programare.
Cerințe hardware:
- Arduino Uno, Nano, Mega (cred că majoritatea MCU-urilor cu conexiune serială vor funcționa)
- Rezistor cu limitare de curent și LED unic. Utilizați acest calculator dacă nu sunteți sigur: Calculatorul legii Ohms
- Potențiometru 10K.
Cerințe software:
- ID Arduino
- Node. JS (acesta este un software pe computer, foarte simplu de instalat)
- MySQL Server (cel mai simplu mod pe care l-am găsit este să folosesc o găzduire web ieftină. De asemenea, puteți obține nume de domenii gratuite)
Limbaj de programare și scriptare utilizat:
Arduino (C / C ++ modificat), JavaScript (Nodejs), PHP, HTML și CSS
Introducere Acest proiect pe scurt: Controlul unui microcontroler Arduino de pe o interfață web. Prin urmare, controlați orice dispozitiv electric de oriunde cu internet. Am vrut să-mi extind înțelegerea programării și dezvoltării web și ce modalitate mai bună de a face acest lucru decât să fac un proiect simplu, dar eficient. Hardware-ul este menținut la un nivel minim, așa că m-aș putea concentra mai mult pe software. Prin urmare, am mers cu un LED simplu, configurare pot. Potul va trimite date, iar ledul va primi (luminozitate PWM). Folosind NodeJS datele seriale au fost citite (valoarea potențiometrului) și scrise (luminozitatea ledului). Partea dificilă a acestui proiect a fost obținerea datelor de intrare dintr-o locație la distanță (server web)
Pasul 1: Logica software: Arhitectura sistemului
Date potențometru:
Acest lucru începe de la Arduino, valoarea potului citit este tipărită în serie. Cu toate acestea, de data aceasta vom folosi Node. JS pentru a citi valoarea. NodeJS va deschide comunicarea serială la același port la care este conectat Arduino și va citi valoarea potului imprimat. NodeJS va încărca apoi datele într-o bază de date SQL la distanță, acest lucru se va întâmpla de fiecare dată când se imprimă o nouă valoare pot. O pagină web se va conecta la intervalul setat de baze de date SQL și va prelua valoarea potențiometrului. Acest lucru va fi apoi afișat pe pagina web.
Date Led:
Pentru led, luminozitatea PWM va fi setată de utilizator pe o pagină web la distanță, astfel încât călătoria sa începe la capătul opus al spectrului. Datele de intrare sunt salvate într-o bază de date SQL, la fiecare interval setat în care baza de date este verificată pentru o modificare a LED-ului PWM, acest lucru este realizat de NodeJS. Dacă valoarea este diferită de valoarea anterioară, atunci noua valoare va fi trimisă către Arduino printr-o magistrală serială. Arduino modifică valoarea PWM de ieșire a ledului pentru a-i modifica luminozitatea.
Calculatorul legii Ohms folosește formula V = IR și P = IV = I²R = V² / R Pentru acest proiect, voi folosi un led albastru. Acest lucru este important, deoarece odată cu creșterea frecvenței luminii, crește și căderea de tensiune. Deoarece lumina albastră are o frecvență mai mare în comparație cu ceva de genul unui led roșu. Aceasta înseamnă o tensiune înainte mai mare. În funcție de marcă, tip și dimensiune, intervalul de lucru va varia. Pentru configurarea mea, am folosit un rezistor de 220 Ω în serie, negativ la masă și pozitiv la un pin PWM pe un Arduino. Potul a fost conectat la un pin analogic. Cu 5VCC un capăt GND celălalt și pinul din mijloc conectat la un pin analogic (A0 în cazul meu).
Pasul 2: Pasul 1: Cablare hardware
Acest lucru este foarte simplu: conectați rezistorul curent de limitare în serie cu LED-ul, asigurați-vă că sunteți condus corect. Un punct va merge la GND, în timp ce un alt capăt va merge la pinul Arduino. Pentru configurarea mea, am folosit pinul 12 pentru led și A7 pentru Pot. Nu am o schemă, deoarece circuitul său foarte simplu. Cu toate acestea, am găsit acest lucru online (imagine)
Pasul 3: Pasul 2: Arduino
În primul rând, ledul și potul au fost verificate dacă funcționau așa cum era de așteptat. Acest lucru a fost întrerupt de un program simplu în care valoarea potului controlează ledul. Am folosit funcția de constrângere pentru a schimba gama de poturi de la 0 la 1023 la 0 la 255, dar funcționează și un simplu / 4. Valoarea potului a fost redusă luând media medie din 10 citiri consecutive, aceasta pentru a elimina vârfurile. (Cu toate acestea, această netezire a cauzat probleme cu NodeJS, deci acest lucru a fost eliminat mai târziu în proiect - mai multe despre asta)
Cod Arduino
Citire / Scriere Serial Următorul pas este de a prelua intrarea utilizatorului prin ferestrele monitorului serial furnizate de Arduino ide pentru a seta luminozitatea. Pentru a face acest lucru, se utilizează serial.parseInt () care ia o valoare întreagă și ignoră șirul. De asemenea, la cod se adaugă o verificare a erorilor. Gama validă a unei valori PWM este 0 - 255, când un utilizator introduce> 255, atunci atribuie valoarea 255 și dacă utilizatorul introduce valoare sau <+/- 5 am făcut acest lucru pentru a face citirea mai stabilă, deoarece a fost fluctuație. De ce este o mare problemă legată de actualizarea SQL, mai multe despre asta mai târziu.
Pasul 4: Pasul 3: NodeJS
Nu vă voi arăta cum să obțineți sau să configurați și serverul SQL. Există o mulțime de tutoriale acolo.
Programul NodeJS are 3 aspecte principale:
Citiți datele seriale
Scrieți date de serie
Actualizați baza de date SQL
Pentru a face o conexiune serială în cadrul NodeJS, trebuie descărcat un modul numit serialport care poate fi realizat folosind comanda npm. Deschideți CMD în folderul în care va fi păstrat programul NodeJS, instalați tastând: npm install serialport De asemenea, trebuie instalat modulul SQL pentru a vă putea conecta la baza de date sql: npm install mysql NodeJS - Port serial Primul meu pas cu NodeJS programul era să citească datele tipărite și să trimită luminozitatea pwm către Arduino. Acest lucru a fost realizat prin deschiderea conexiunii seriale la același braudrate și port. Odată ce conexiunea a fost stabilită, am citit mesajele primite și le-am imprimat pe fereastra consolei. Problemă ridicată când am încercat să scriu valoarea pwm pentru a controla luminozitatea.
A continuat să arunce erori: Port Not Open, soluția mea inițială a fost să apelez funcția de scriere atunci când există date primite. Cu toate acestea, aceasta a fost o soluție proastă și am fost destul de nemulțumit de soluție, chiar dacă a funcționat, ar trimite doar atunci când valoarea potului a fost modificată. Exemplul de cod pentru modulul serial nu ar funcționa nici aruncând aceeași eroare. Ulterior am aflat că programul încerca să execute funcția de scriere fără a deschide portul, ceea ce a dus la acea eroare. Am apărut această problemă folosind funcția setInterval ()
NodeJS - MySQL S-a folosit biblioteca MySQL (npm install MySQL) pentru a vă conecta la baza de date SQL, deoarece serverul dintr-o locație la distanță a fost utilizată adresa IP a serverului în loc de localhost.
var con deține informațiile despre conexiune în format JSON, odată ce conexiunea a fost realizată cu succes, baza de date poate fi interogată. Au fost create 2 funcții, una pentru actualizarea tabelului, alta selectând parametrii care iau în interogare SQL. Tabelul de actualizare este apelat când se primește o nouă valoare pot și interogarea verificării luminozității va rula periodic.
NodeJSCode Link
Pasul 5: Pasul 4: interfața web
Interfață web
Pagina principală web a fost scrisă în PHP, deoarece deja aveam ceva experiență din bazele de date CO323 și modulul Web de la universitate. Tabelul și formularul HTML au fost utilizate pentru a afișa datele sql.
Cod de acces SQL SQL: Link Derulați la secțiunea interfeței web.
HTML și CSS * Cod Javascript Webapage: Link Derulați în partea de jos
Pagina web finală
Recomandat:
Stație meteo: ESP8266 Cu somn profund, SQL, graficare prin balon și complot: 3 pași
Stație meteo: ESP8266 Cu Deep Sleep, SQL, Graphing by Flask & Plotly: Ar fi distractiv să știi temperatura, umiditatea sau intensitatea luminii de pe balconul tău? Știu că aș face-o. Așa că am făcut o stație meteo simplă pentru a colecta astfel de date. Următoarele secțiuni sunt pașii pe care i-am făcut pentru a construi unul. Să începem