Innholdsfortegnelse:
- Trinn 1: Programvarelogikk: Systemarkitektur
- Trinn 2: Trinn 1: Maskinvareledninger
- Trinn 3: Trinn 2: Arduino
- Trinn 4: Trinn 3: NodeJS
- Trinn 5: Trinn 4: Webgrensesnittet
- Trinn 6: Resultat
Video: Arduino Project: Kontrollelektronikk over internett ved hjelp av Nodejs + SQL Database & Website .: 6 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:24
Prosjekt Av: Mahmed.tech
Dato laget: 14. juli 2017
Vanskelighetsgrad: Nybegynner med litt programmeringskunnskap.
Krav til maskinvare:
- Arduino Uno, Nano, Mega (jeg tror de fleste MCU med seriell tilkobling vil fungere)
- Enkel LED og strømbegrensende motstand. Bruk denne kalkulatoren hvis du ikke er sikker: Ohms Law Calculator
- 10K potensiometer.
Programvarekrav:
- Arduino IDE
- Node. JS (dette er en programvare på en datamaskin, veldig enkel å installere)
- MySQL Server (den enkleste måten jeg fant er å bruke et billig webhotell. Du kan også få gratis domenenavn)
Programmerings- og skriptspråk som brukes:
Arduino (modifisert C/C ++), JavaScript (Nodejs), PHP, HTML og CSS
Innledning Dette prosjektet i et nøtteskall: Kontroll av en Arduino mikrokontroller fra et webgrensesnitt. Kontroller derfor alle elektriske enheter hvor som helst med internett. Jeg ønsket å utvide forståelsen min for programmering og webutvikling og hvilken bedre måte å gjøre dette på enn å gjøre et enkelt, men effektivt prosjekt. Maskinvaren holdes på et minimum, så jeg kan fokusere mer på programvare. Derfor gikk jeg med en enkel LED, gryteoppsett. Potten sender data og lysdioden mottar (PWM -lysstyrke). Ved bruk av NodeJS ble de serielle dataene lest (potensiometerverdi) og skrevet (LED -lysstyrke). Den vanskelige delen av dette prosjektet var å få inndata fra en ekstern plassering (webserver)
Trinn 1: Programvarelogikk: Systemarkitektur
Potensiometer data:
Dette starter på Arduino, les pot -verdien er seriell utskrift. Denne gangen vil vi imidlertid bruke Node. JS til å lese verdien. NodeJS vil åpne seriell kommunikasjon til samme port som Arduino er koblet til og lese den trykte potten. NodeJS vil deretter laste opp dataene til en ekstern SQL -database, dette vil skje hver gang en ny pottverdi skrives ut. En webside vil koble seg til SQL -databasesettintervallet og hente potensiometerverdien. Dette vil da bli vist på nettsiden.
Ledede data:
For led vil PWM -lysstyrken angis av brukeren på en ekstern webside, så reisen starter i motsatt ende av spekteret. Inndataene lagres i en SQL -database, hvert settintervall databasen kontrolleres for endring i ledet PWM, dette gjøres av NodeJS. Hvis verdien er forskjellig fra den forrige verdien, blir den nye verdien sendt til Arduino via en seriell buss. Arduino endrer output PWM -verdien til ledet for å endre lysstyrken.
Ohms lovkalkulator bruker formelen V = IR og P = IV = I²R = V²/R For dette prosjektet bruker jeg en blå led. Dette er viktig fordi etter hvert som lysfrekvensen øker, øker også spenningsfallet. Siden blått lys har en høyere frekvens sammenlignet med noe som en rød LED. Dette betyr en høyere spenning fremover. Avhengig av merke, type og størrelse vil arbeidsområdet variere. For mitt oppsett brukte jeg en 220 Ω motstand i serie, negativ til bakken og positiv til en PWM -pinne på en Arduino. Gryten var koblet til en analog pin. Med 5VCC den ene enden GND den andre og den midterste pinnen koblet til en analog pin (A0 i mitt tilfelle).
Trinn 2: Trinn 1: Maskinvareledninger
Dette er veldig enkelt: Bare koble din nåværende begrensningsmotstand i serie med LED -en, og sørg for at du blir ledet riktig. Ett poeng går til GND mens en annen ende går til Arduino pin. For oppsettet mitt brukte jeg pin 12 for LED og A7 for Pot. Jeg har ikke en skjematisk siden den veldig enkle kretsen. Imidlertid fant jeg dette på nettet (bilde)
Trinn 3: Trinn 2: Arduino
Først ble ledet og potten sjekket om de fungerte som forventet. Dette var nede med et enkelt program der potten verdien kontrollerer LED. Jeg brukte begrensningsfunksjon for å endre potteområdet fra 0 til 1023 til 0 til 255, men en enkel /4 fungerer også. Pottverdien ble jevnet ut ved å ta gjennomsnittlig gjennomsnitt fra 10 påfølgende målinger, dette er for å fjerne pigger. (Imidlertid forårsaket denne utjevningen problemer med NodeJS, så dette ble fjernet senere på prosjektet - mer om det)
Kode Arduino
Les / skriv serie Det neste trinnet er å ta brukerinngang via de serielle skjermvinduene fra Arduino ideen for å stille inn lysstyrken. For å gjøre dette brukes serial.parseInt () som tar en heltallsverdi og ignorerer strengen. I tillegg blir en feilkontroll lagt til i koden. Det gyldige området for en PWM -verdi er 0 - 255, når en bruker angir> 255, tildeler den verdien 255, og hvis brukeren angir verdi eller <+/- 5 har jeg gjort dette for å gjøre avlesningen mer stabil siden det var svingninger. Hvorfor dette er et stort problem knyttet til oppdatering av SQL, mer om det senere.
Trinn 4: Trinn 3: NodeJS
Jeg skal ikke vise deg hvordan du får eller konfigurerer og SQL -server. Det er tonnevis med opplæringsprogrammer der ute.
Det er 3 hovedaspekter ved NodeJS -programmet:
Les serielle data
Skriv serielle data
Oppdater SQL Database
For å opprette en seriell tilkobling i NodeJS, må en modul som kalles seriellport lastes ned som kan gjøres ved hjelp av npm -kommandoen. Åpne CMD i mappen der NodeJS -programmet skal lagres, installer ved å skrive: npm install serialport Også SQL -modulen må installeres for å kunne koble til SQL -databasen: npm install mysql NodeJS - Serial Port Mitt første trinn med NodeJS programmet var å lese de trykte dataene og sende pwm -lysstyrken til Arduino. Dette ble gjort ved å åpne seriell tilkobling med samme braudrate og port. Når forbindelsen var opprettet, leste jeg innkommende meldinger og skrev den ut på konsollvinduet. Problemet reiste seg da jeg prøvde å skrive pwm -verdien for å kontrollere lysstyrken.
Det fortsatte å kaste feil: Port Not Open, min første løsning var å ringe skrivefunksjonen når det er innkommende data. Dette var imidlertid en dårlig løsning, og jeg var ganske misfornøyd med løsningen, selv om den fungerte, ville den bare sendes når pottverdien ble endret. Eksempelkoden for den serielle modulen ville ikke fungere, og heller ikke kaste den samme feilen. Jeg fant senere ut at programmet prøvde å utføre skrivefunksjonen uten å åpne porten, noe som resulterte i den feilen. Jeg kom rundt dette problemet ved å bruke setInterval () -funksjonen
NodeJS - MySQL MySQL -biblioteket ble brukt (npm install MySQL) for å koble til SQL -databasen siden serveren på en ekstern plassering ble IP -adressen til serveren brukt i stedet for localhost.
var con har tilkoblingsinformasjonen i JSON -format, når tilkoblingen er opprettet, kan databasen etterspørres. Det ble opprettet to funksjoner, en for oppdatering av tabellen, andre valg med parametere som tok SQL -spørringen. Oppdateringstabellen kalles når en ny pottverdi mottas og spørringen om lysstyrkekontroll kjøres med jevne mellomrom.
NodeJSCode Link
Trinn 5: Trinn 4: Webgrensesnittet
Nettgrensesnitt
Hovedsiden ble skrevet i PHP siden jeg allerede hadde noen erfaring fra mine CO323 -databaser og webmodulen ved universitetet. HTML -tabell og -skjema ble brukt til å vise SQL -dataene.
PHP SQL Access Code: Link Bla til webgrensesnittet.
HTML & CSS * Javascript nettside -kode: Lenke Bla til bunnen
Endelig webside
Anbefalt:
Weather Station: ESP8266 With Deep Sleep, SQL, Graphing by Flask & Plotly: 3 Steps
Weather Station: ESP8266 With Deep Sleep, SQL, Graphing by Flask & Plotly: Ville det være morsomt å vite temperatur, fuktighet eller lysintensitet på balkongen din? Jeg vet jeg ville. Så jeg lagde en enkel værstasjon for å samle slike data. De følgende avsnittene er trinnene jeg tok for å bygge en. La oss komme i gang