Obsah:

Projekt Arduino: Ovládejte elektroniku přes internet pomocí databáze Nodejs + SQL a webových stránek .: 6 kroků
Projekt Arduino: Ovládejte elektroniku přes internet pomocí databáze Nodejs + SQL a webových stránek .: 6 kroků

Video: Projekt Arduino: Ovládejte elektroniku přes internet pomocí databáze Nodejs + SQL a webových stránek .: 6 kroků

Video: Projekt Arduino: Ovládejte elektroniku přes internet pomocí databáze Nodejs + SQL a webových stránek .: 6 kroků
Video: 1. Q Light Controller + Začínáme s QLC +. Přístroje a funkce 2024, Prosinec
Anonim
Projekt Arduino: Ovládejte elektroniku přes internet pomocí databáze Nodejs + SQL a webových stránek
Projekt Arduino: Ovládejte elektroniku přes internet pomocí databáze Nodejs + SQL a webových stránek
Projekt Arduino: Ovládejte elektroniku přes internet pomocí databáze Nodejs + SQL a webových stránek
Projekt Arduino: Ovládejte elektroniku přes internet pomocí databáze Nodejs + SQL a webových stránek
Projekt Arduino: Ovládejte elektroniku přes internet pomocí databáze Nodejs + SQL a webových stránek
Projekt Arduino: Ovládejte elektroniku přes internet pomocí databáze Nodejs + SQL a webových stránek

Projekt: Mahmed.tech

Datum výroby: 14. července 2017

Úroveň obtížnosti: Začátečník s trochou znalostí programování.

Hardwarový požadavek:

- Arduino Uno, Nano, Mega (myslím, že většina MCU se sériovým připojením bude fungovat)

- Jedna LED a odpor omezující proud. Pokud si nejste jisti, použijte tuto kalkulačku: Ohms Law Calculator

- 10K potenciometr.

Softwarový požadavek:

- Arduino IDE

- Node. JS (toto je software na počítači, instalace je velmi jednoduchá)

- Server MySQL (nejjednodušší způsob, jaký jsem našel, je použití levného webhostingu. Můžete také získat bezplatná jména domén)

Použitý programovací a skriptovací jazyk:

Arduino (upravený C/C ++), JavaScript (Nodejs), PHP, HTML a CSS

Úvod Tento projekt v kostce: Ovládání mikrokontroléru Arduino z webového rozhraní. Ovládejte tedy jakékoli elektrické zařízení odkudkoli pomocí internetu. Chtěl jsem rozšířit své znalosti o programování a vývoji webu a o tom, jak to udělat lépe, než dělat jednoduchý, ale účinný projekt. Hardware je udržován na minimu, takže jsem se mohl více soustředit na software. Proto jsem šel s jednoduchým nastavením LED, pot. Pot odešle data a LED bude přijímat (jas PWM). Pomocí NodeJS byla přečtena sériová data (hodnota potenciometru) a zapsána (jas LED). Obtížnou součástí tohoto projektu bylo získání vstupních dat ze vzdáleného umístění (webový server)

Krok 1: Softwarová logika: Architektura systému

Softwarová logika: Architektura systému
Softwarová logika: Architektura systému

Data potenciometru:

Začíná to na Arduinu, hodnota čtení potu je sériový tisk. Tentokrát však ke čtení hodnoty použijeme Node. JS. NodeJS otevře sériovou komunikaci na stejný port, ke kterému je připojeno Arduino, a přečte vytištěnou hodnotu potu. NodeJS poté nahraje data do vzdálené databáze SQL, což se stane pokaždé, když se vytiskne nová hodnota potu. Webová stránka se připojí k intervalu nastavení databáze SQL a načte hodnotu potenciometru. Poté se zobrazí na webové stránce.

LED data:

Pro LED bude jas PWM nastaven uživatelem na vzdálené webové stránce, takže jeho cesta začíná na opačném konci spektra. Vstupní data se ukládají do databáze SQL, v každém nastaveném intervalu se databáze kontroluje na změnu v LED PWM, provádí to NodeJS. Pokud se hodnota liší od předchozí hodnoty, bude nová hodnota odeslána do Arduina přes sériovou sběrnici. Arduino mění výstupní PWM hodnotu LED, aby změnil její jas.

Ohmová kalkulačka zákona používá vzorec V = IR a P = IV = I²R = V²/R Pro tento projekt budu používat modrou LED. To je důležité, protože s rostoucí frekvencí světla se zvyšuje i pokles napětí. Protože modré světlo má vyšší frekvenci ve srovnání s něčím jako červená LED. To znamená vyšší dopředné napětí. V závislosti na značce, typu a velikosti se pracovní rozsah bude lišit. Pro mé nastavení jsem použil 220 Ω odpor v sérii, záporný k zemi a kladný k PWM pinu na Arduinu. Hrnec byl připojen k analogovému pinu. S 5VCC jeden konec GND druhý a střední pin připojen k analogovému kolíku (v mém případě A0).

Krok 2: Krok 1: Hardwarové zapojení

Krok 1: Hardwarové zapojení
Krok 1: Hardwarové zapojení

To je velmi jednoduché: Stačí zapojit váš omezovač odporu do série s LED a ujistit se, že jste vedli správně. Jeden bod půjde na GND, zatímco jiný konec půjde na pin Arduino. Pro mé nastavení jsem použil pin 12 pro LED a A7 pro Pot. Schéma nemám, protože jeho velmi jednoduchý obvod. Našel jsem to však online (obrázek)

Krok 3: Krok 2: Arduino

Nejprve byla zkontrolována LED a pot, zda fungují podle očekávání. To byl způsoben jednoduchým programem, kde hodnota pot kontroluje LED. Použil jsem funkci omezení pro změnu rozsahu hrnce 0 až 1023 až 0 až 255, ale funguje také jednoduchý /4. Hodnota potu byla vyhlazena průměrným průměrem z 10 po sobě jdoucích měření, což má odstranit hroty. (Toto vyhlazení však způsobilo problémy s NodeJS, takže toto bylo později v projektu odstraněno - více o tom)

Kód Arduino

Sériové čtení / zápis Dalším krokem je nastavení jasu pomocí uživatelského vstupu přes okna sériového monitoru poskytovaná Arduino ide. K tomu se používá serial.parseInt (), která má celočíselnou hodnotu a ignoruje řetězec. Do kódu je také přidána kontrola chyb. Platný rozsah hodnoty PWM je 0 - 255, když uživatel zadá> 255, pak přiřadí hodnotu 255 a pokud uživatel zadá hodnotu nebo <+/- 5, provedl jsem to, aby bylo čtení stabilnější, protože se jednalo o fluktuaci. Proč je to velký problém související s aktualizací SQL, více o tom později.

Krok 4: Krok 3: NodeJS

Nebudu vám ukazovat, jak získat nebo nastavit a SQL server. Existuje spousta návodů.

Program NodeJS má 3 hlavní aspekty:

Přečtěte si sériová data

Zapište sériová data

Aktualizujte databázi SQL

Pro sériové připojení v rámci NodeJS je třeba stáhnout modul s názvem serialport, který lze provést pomocí příkazu npm. Otevřete CMD ve složce, kde bude uložen program NodeJS, nainstalujte zadáním: npm install serialport Také musí být nainstalován modul SQL, aby se mohl připojit k databázi sql: npm install mysql NodeJS - sériový port Můj první krok s NodeJS program měl přečíst tištěná data a odeslat jas pwm do Arduina. To bylo provedeno otevřením sériového připojení na stejném braudrate a portu. Jakmile bylo spojení navázáno, přečetl jsem si příchozí zprávy a vytiskl je do okna konzoly. Problém nastal, když jsem se pokusil zapsat hodnotu pwm pro ovládání jasu.

Stále to vyvolávalo chyby: Port Not Open, moje původní řešení bylo zavolat funkci write, když jsou příchozí data. Nicméně to byla špatná oprava a já jsem byl s řešením docela nespokojený, přestože fungoval, odeslal by se pouze při změně hodnoty potu. Příklad kódu pro sériový modul by nefungoval ani při vyvolání stejné chyby. Později jsem zjistil, že se program pokouší spustit funkci zápisu bez otevření portu, což vedlo k této chybě. K tomuto problému jsem přišel pomocí funkce setInterval ()

NodeJS - MySQL K připojení k databázi SQL byla použita knihovna MySQL (npm install MySQL), protože server ve vzdáleném umístění používal místo localhost IP adresu serveru.

var con uchovává informace o připojení ve formátu JSON, po úspěšném navázání připojení může být databáze dotazována. Byly vytvořeny 2 funkce, jedna pro aktualizaci tabulky, další výběr pomocí parametrů přijímajících dotaz SQL. Aktualizační tabulka se zavolá, když je přijata nová hodnota potu a periodicky se spustí dotaz na kontrolu jasu.

Odkaz na NodeJSCode

Krok 5: Krok 4: Webové rozhraní

Krok 4: Webové rozhraní
Krok 4: Webové rozhraní

Webové rozhraní

Hlavní web byl napsán v PHP, protože už jsem měl nějaké zkušenosti s databázemi CO323 a webovým modulem na univerzitě. K zobrazení dat sql byla použita html tabulka a formulář.

PHP SQL přístupový kód: Odkaz Přejděte do sekce webového rozhraní.

HTML & CSS * Kód webové stránky Javascript: Odkaz Přejděte dolů

Závěrečná webová stránka

Doporučuje: