Innehållsförteckning:

Arduino Project: Control Electronics Over the Internet Using Nodejs + SQL Database & Website .: 6 Steps
Arduino Project: Control Electronics Over the Internet Using Nodejs + SQL Database & Website .: 6 Steps

Video: Arduino Project: Control Electronics Over the Internet Using Nodejs + SQL Database & Website .: 6 Steps

Video: Arduino Project: Control Electronics Over the Internet Using Nodejs + SQL Database & Website .: 6 Steps
Video: 🔴How to send sensor Data from Arduino UNO to MySQL Server(PHPMYADMIN) Offline (No internet)? 2024, November
Anonim
Arduino Project: Control Electronics Over the Internet Using Nodejs + SQL Database & Website
Arduino Project: Control Electronics Over the Internet Using Nodejs + SQL Database & Website
Arduino Project: Control Electronics Over the Internet Using Nodejs + SQL Database & Website
Arduino Project: Control Electronics Over the Internet Using Nodejs + SQL Database & Website
Arduino Project: Control Electronics Over the Internet Using Nodejs + SQL Database & Website
Arduino Project: Control Electronics Over the Internet Using Nodejs + SQL Database & Website

Projekt av: Mahmed.tech

Datum gjord: 14 juli 2017

Svårighetsgrad: Nybörjare med viss programmeringskunskap.

Hårdvarukrav:

- Arduino Uno, Nano, Mega (jag tror att de flesta MCU med seriell anslutning kommer att fungera)

- Enstaka LED och strömbegränsande motstånd. Använd den här miniräknaren om du inte är säker: Ohms Law Calculator

- 10K Potentiometer.

Programvarukrav:

- Arduino IDE

- Node. JS (detta är en programvara på en dator, mycket enkel att installera)

- MySQL Server (enklaste sättet jag hittade är att använda ett billigt webbhotell. Du kan också få gratis domännamn)

Programmerings- och skriptspråk som används:

Arduino (modifierad C/C ++), JavaScript (Nodejs), PHP, HTML och CSS

IntroduktionDetta projekt i ett nötskal: Styrning av en Arduino -mikrokontroller från ett webbgränssnitt. Styr därför alla elektriska enheter var som helst med internet. Jag ville sträcka min förståelse för programmering och webbutveckling och vilket bättre sätt att göra detta än att göra ett enkelt men effektivt projekt. Hårdvaran hålls på ett minimum så att jag kan fokusera mer på programvara. Därför gick jag med en enkel LED, krukappsättning. Potten skickar data och lysdioden tar emot (PWM -ljusstyrka). Med hjälp av NodeJS lästes seriell data (potentiometervärde) och skrevs (LED -ljusstyrka). Den svåra delen av detta projekt var att få inmatningsdata från en fjärrplats (webbserver)

Steg 1: Programvarulogik: Systemarkitektur

Programvarulogik: Systemarkitektur
Programvarulogik: Systemarkitektur

Potentiometerdata:

Detta börjar på Arduino, läs potten är serietryck. Den här gången kommer vi dock att använda Node. JS för att läsa värdet. NodeJS öppnar seriell kommunikation till samma port som Arduino är ansluten till och läser det tryckta krukvärdet. NodeJS kommer sedan att ladda upp data till en fjärr SQL -databas, detta kommer att hända varje gång ett nytt pottvärde skrivs ut. En webbsida kommer att ansluta till SQL -databasuppsättningsintervallet och hämta potentiometervärdet. Detta kommer då att visas på webbsidan.

Leddata:

För LED kommer PWM -ljusstyrkan att ställas in av användaren på en fjärrsida, så dess resa börjar i motsatt ände av spektrumet. Inmatningsdata sparas i en SQL -databas, varje uppsättningsintervall som databasen kontrolleras för att ändra PWM -led, detta görs av NodeJS. Om värdet skiljer sig från det tidigare värdet skickas det nya värdet till Arduino via en seriell buss. Arduino ändrar PWM -värdet på ledningen för att ändra dess ljusstyrka.

Ohms lagkalkylator använder formeln V = IR och P = IV = I²R = V²/R För detta projekt kommer jag att använda en blå lysdiod. Detta är viktigt eftersom spänningsfallet också ökar när ljusfrekvensen ökar. Eftersom blått ljus har en högre frekvens jämfört med något som en röd lysdiod. Detta innebär en högre framspänning. Beroende på märke, typ och storlek kommer arbetsområdet att variera. För min installation använde jag ett 220 Ω motstånd i serie, negativt till jord och positivt till ett PWM -stift på en Arduino. Grytan var ansluten till en analog stift. Med 5VCC ena änden GND den andra och mittstiftet ansluten till en analog stift (A0 i mitt fall).

Steg 2: Steg 1: Hårdvarukablar

Steg 1: Hårdvarukablar
Steg 1: Hårdvarukablar

Detta är väldigt enkelt: Anslut bara ditt nuvarande begränsningsmotstånd i serie med lysdioden, se till att din ledning är rätt. En punkt går till GND medan en annan ände går till Arduino pin. För min installation använde jag stift 12 för LED och A7 för Pot. Jag har inte en schematisk sedan dess mycket enkla krets. Jag hittade dock detta online (bild)

Steg 3: Steg 2: Arduino

Först kontrollerades LED och potten om de fungerade som förväntat. Detta var nere med ett enkelt program där potten värdet styr LED. Jag använde begränsningsfunktionen för att ändra potten från 0 till 1023 till 0 till 255, men en enkel /4 fungerar också. Pottvärdet utjämnades genom att ta medelvärdet från 10 på varandra följande avläsningar, detta för att ta bort spikar. (Denna utjämning orsakade emellertid problem med NodeJS så detta togs bort senare i projektet - mer om det)

Kod Arduino

Läs / skriv seriellt Nästa steg är att ta användarinmatning via de seriella bildskärmsfönstren från Arduino ide för att ställa in ljusstyrkan. För att göra detta används serial.parseInt () som tar ett heltal och ignorerar strängen. Dessutom läggs ett felkontroll till koden. Det giltiga intervallet för ett PWM -värde är 0 - 255, när en användare anger> 255 tilldelar det värdet 255 och om användaren anger värde eller <+/- 5 har jag gjort detta för att göra avläsningen mer stabil eftersom det var fluktuationer. Varför detta är ett stort problem relaterat till SQL -uppdatering, mer om det senare.

Steg 4: Steg 3: NodeJS

Jag kommer inte att visa dig hur du får eller ställer in och SQL -server. Det finns massor av handledning där ute.

Det finns tre huvudaspekter för NodeJS -programmet:

Läs seriedata

Skriv seriell data

Uppdatera SQL Database

För att göra en seriell anslutning inom NodeJS måste en modul som heter serialport laddas ner som kan göras med kommandot npm. Öppna CMD i mappen där NodeJS -programmet ska sparas, installera genom att skriva: npm installera seriellport SQL -modulen måste också installeras för att kunna ansluta till SQL -databasen: npm installera mysql NodeJS - Serial Port Mitt första steg med NodeJS programmet var att läsa utskrivna data och skicka pwm -ljusstyrka till Arduino. Detta gjordes genom att öppna seriell anslutning vid samma braudrate och port. När anslutningen upprättades läste jag inkommande meddelanden och skrev ut det på konsolfönstret. Problemet uppstod när jag försökte skriva pwm -värdet för att styra ljusstyrkan.

Det fortsatte att kasta fel: Port Not Open, min första lösning var att ringa skrivfunktionen när det finns inkommande data. Men det här var en dålig lösning och jag var ganska missnöjd med lösningen, även om det fungerade skulle det bara skicka när krukvärdet ändrades. Exempelkoden för seriemodulen fungerar inte heller med samma fel. Jag fick senare reda på att programmet försökte köra skrivfunktionen utan att öppna porten, vilket resulterade i det felet. Jag kom runt detta problem med funktionen setInterval ()

NodeJS - MySQL MySQL -biblioteket användes (npm install MySQL) för att ansluta till SQL -databasen eftersom servern på en avlägsen plats användes serverns IP -adress istället för localhost.

var con har anslutningsinformationen i JSON -format, när anslutningen har lyckats kan databasen ställa frågor. 2 funktioner skapades en för uppdatering av tabellen andra val med parametrar som tar in SQL -frågan. Uppdateringstabellen anropas när ett nytt pottvärde tas emot och frågan om kontroll av ljusstyrka körs regelbundet.

NodeJSCode Link

Steg 5: Steg 4: webbgränssnittet

Steg 4: webbgränssnittet
Steg 4: webbgränssnittet

Webbgränssnitt

Huvudwebbsidan skrevs i PHP eftersom jag redan hade en del erfarenhet från mina CO323 -databaser och webbmodulen vid universitetet. HTML -tabell och -formulär användes för att visa SQL -data.

PHP SQL -åtkomstkod: Länk Bläddra till avsnittet webbgränssnitt.

HTML & CSS * Javascript webbsidekod: Länk Bläddra till botten

Sista webbsidan

Rekommenderad: