Obsah:
- Krok 1: Softvérová logika: Architektúra systému
- Krok 2: Krok 1: Hardvérové zapojenie
- Krok 3: Krok 2: Arduino
- Krok 4: Krok 3: NodeJS
- Krok 5: Krok 4: Webové rozhranie
- Krok 6: Výsledok
Video: Projekt Arduino: Ovládajte elektroniku cez internet pomocou databázy Nodejs + SQL a webovej stránky .: 6 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:59
Autor projektu: Mahmed.tech
Dátum vyhotovenia: 14. júla 2017
Úroveň obtiažnosti: Začiatočník s trochou znalostí programovania.
Hardvérová požiadavka:
- Arduino Uno, Nano, Mega (myslím, že väčšina MCU so sériovým pripojením bude fungovať)
- Jedna dióda LED a odpor obmedzujúci prúd. Ak si nie ste istí, použite túto kalkulačku: Ohms Calculator
- 10K potenciometer.
Požiadavka na softvér:
- Arduino IDE
- Node. JS (toto je softvér na počítači, ktorého inštalácia je veľmi jednoduchá)
- Server MySQL (najľahšie som zistil, že používam lacný webhosting. Môžete tiež získať bezplatné názvy domén)
Použitý programovací a skriptovací jazyk:
Arduino (upravený C/C ++), JavaScript (Nodejs), PHP, HTML a CSS
Úvod Tento projekt v skratke: Ovládanie mikrokontroléra Arduino z webového rozhrania. Ovládajte preto akékoľvek elektrické zariadenie odkiaľkoľvek s internetom. Chcel som rozšíriť svoje znalosti o programovaní a vývoji webu a o tom, ako to urobiť lepšie, ako urobiť jednoduchý, ale efektívny projekt. Hardvér je udržiavaný na minime, aby som sa mohol viac zamerať na softvér. Preto som išiel s jednoduchým nastavením LED, hrnca. Hrniec pošle údaje a LED dióda prijme (jas PWM). Pomocou NodeJS boli sériové údaje načítané (hodnota potenciometra) a zapísané (jas LED). Náročnou súčasťou tohto projektu bolo získanie vstupných údajov zo vzdialeného umiestnenia (webový server)
Krok 1: Softvérová logika: Architektúra systému
Údaje potenciometra:
Začína sa to pri Arduine, hodnota čítačky je sériová tlač. Na prečítanie hodnoty však tentokrát použijeme Node. JS. NodeJS otvorí sériovú komunikáciu na rovnakom porte, ku ktorému je pripojené Arduino, a načíta hodnotu vytlačeného potu. NodeJS potom nahrá údaje do vzdialenej databázy SQL, čo sa stane vždy, keď sa vytlačí nová hodnota potu. Webová stránka sa pripojí k intervalu nastavenia databázy SQL a získa hodnotu potenciometra. Potom sa to zobrazí na webovej stránke.
LED dáta:
Pre LED diódy nastaví jas PWM používateľ na vzdialenej webovej stránke, takže jeho cesta začína na opačnom konci spektra. Vstupné údaje sa ukladajú do databázy SQL, každý nastavený interval, v ktorom sa v databáze kontroluje zmena LED PWM, to robí NodeJS. Ak je hodnota odlišná od predchádzajúcej hodnoty, nová hodnota bude odoslaná do Arduina prostredníctvom sériovej zbernice. Arduino zmení výstupnú hodnotu PWM LED, aby zmenil jej jas.
Ohmová kalkulačka zákona používa vzorec V = IR a P = IV = I²R = V²/R Pre tento projekt budem používať modrú diódu. To je dôležité, pretože so zvyšujúcou sa frekvenciou svetla sa zvyšuje aj pokles napätia. Pretože modré svetlo má vyššiu frekvenciu v porovnaní s niečím ako červené LED. To znamená vyššie napätie vpred. V závislosti od značky, typu a veľkosti sa pracovný rozsah bude líšiť. Na svoje nastavenie som použil sériový odpor 220 Ω, záporný voči zemi a pozitívny pre kolík PWM na Arduine. Hrniec bol pripojený k analógovému kolíku. S 5VCC jeden koniec GND druhý a stredný pin pripojený k analógovému kolíku (v mojom prípade A0).
Krok 2: Krok 1: Hardvérové zapojenie
Je to veľmi jednoduché: Stačí zapojiť obmedzovač prúdu do série s LED diódou a uistiť sa, že ste viedli správne. Jeden bod pôjde na GND, zatiaľ čo druhý koniec pôjde na pin Arduino. Na svoje nastavenie som použil pin 12 pre LED a A7 pre Pot. Nemám schému, pretože je to veľmi jednoduchý obvod. Našiel som to však online (obrázok)
Krok 3: Krok 2: Arduino
Najprv sa skontrolovalo, či led a hrniec fungujú podľa očakávania. To sa znížilo jednoduchým programom, kde hodnota potu riadi LED. Použil som funkciu constrain na zmenu rozsahu potu od 0 do 1023 až 0 do 255, ale funguje aj jednoduchý /4. Hodnota hrnca bola vyhladená odčítaním priemerného priemeru z 10 po sebe nasledujúcich meraní, aby sa odstránili hroty. (Toto vyhladenie však spôsobilo problémy s NodeJS, takže toto bolo neskôr v projekte odstránené - viac o tom)
Kód Arduino
Sériové čítanie / zápis Ďalším krokom je nastavenie jasu pomocou vstupu užívateľa cez okná sériového monitora, ktoré poskytuje Arduino ide. Na tento účel sa použije serial.parseInt (), ktorý má celočíselnú hodnotu a reťazec ignoruje. Do kódu je tiež pridaná kontrola chýb. Platný rozsah hodnoty PWM je 0 - 255, keď používateľ zadá> 255, potom priradí hodnotu 255 a ak používateľ zadá hodnotu alebo <+/- 5, urobil som to, aby bolo čítanie stabilnejšie, pretože išlo o fluktuáciu.. Prečo je to veľký problém spojený s aktualizáciou SQL, o tom neskôr.
Krok 4: Krok 3: NodeJS
Nebudem vám ukazovať, ako získať alebo nastaviť server SQL. Existuje veľa návodov.
Program NodeJS má tri hlavné aspekty:
Prečítajte si sériové údaje
Napíšte sériové údaje
Aktualizujte databázu SQL
Na sériové pripojenie v rámci NodeJS je potrebné stiahnuť modul s názvom serialport, ktorý je možné vykonať pomocou príkazu npm. Otvorte CMD v priečinku, kde bude uložený program NodeJS, nainštalujte ho zadaním: npm install serialport Tiež je potrebné nainštalovať modul SQL, aby sa bolo možné pripojiť k databáze sql: npm install mysql NodeJS - sériový port Môj prvý krok s NodeJS program mal prečítať vytlačené údaje a poslať jas pwm do Arduina. To sa uskutočnilo otvorením sériového pripojenia na rovnakom braudrate a porte. Keď bolo pripojenie nadviazané, prečítal som si prichádzajúce správy a vytlačil ich do okna konzoly. Problém nastal, keď som sa pokúsil napísať hodnotu pwm na ovládanie jasu.
Stále to vyvolávalo chyby: Port nie je otvorený, moje pôvodné riešenie bolo zavolať funkciu zápisu, keď sú prichádzajúce údaje. Bola to však zlá oprava a nebol som s týmto riešením celkom spokojný, aj keď fungoval, odoslal by sa iba vtedy, ak sa zmení hodnota banku. Príkladový kód pre sériový modul by nefungoval ani pri vyvolaní rovnakej chyby. Neskôr som zistil, že sa program pokúša vykonať funkciu zápisu bez otvorenia portu, čo viedlo k tejto chybe. Na tento problém som prišiel pomocou funkcie setInterval ()
NodeJS - MySQL Na pripojenie k databáze SQL bola použitá knižnica MySQL (npm install MySQL), pretože server vo vzdialenom umiestnení namiesto localhost použil IP adresu servera.
var con uchováva informácie o pripojení vo formáte JSON, po úspešnom nadviazaní spojenia sa môže databázu dotazovať. Boli vytvorené 2 funkcie, jedna na aktualizáciu tabuľky, ďalší výber pomocou parametrov preberajúcich dotaz SQL. Aktualizačná tabuľka sa vyvolá po prijatí novej hodnoty potu a periodicky sa spustí dotaz na kontrolu jasu.
Odkaz na NodeJSCode
Krok 5: Krok 4: Webové rozhranie
Webové rozhranie
Hlavná webová stránka bola napísaná v PHP, pretože som už mal určité skúsenosti s databázami CO323 a webovým modulom na univerzite. Na zobrazenie údajov sql bola použitá html tabuľka a formulár.
Prístupový kód PHP PHP: Odkaz Prejdite do sekcie webového rozhrania.
HTML & CSS * Kód webovej stránky Javascript: Odkaz Posuňte sa nadol
Záverečná webová stránka
Odporúča:
Meteorologická stanica: ESP8266 s hlbokým spánkom, SQL, grafy podľa banky a vykresľovania: 3 kroky
Meteorologická stanica: ESP8266 S hlbokým spánkom, SQL, grafy podľa banky a grafu: Bolo by zábavné poznať teplotu, vlhkosť alebo intenzitu svetla na vašom balkóne? Viem, že by som. Vytvoril som teda jednoduchú meteorologickú stanicu na zhromažďovanie takýchto údajov. Nasledujúce sekcie predstavujú kroky, ktoré som vykonal pri jej zostavení. Začnime