Obsah:
- Krok 1: Softwarová logika: Architektura systému
- Krok 2: Krok 1: Hardwarové zapojení
- Krok 3: Krok 2: Arduino
- Krok 4: Krok 3: NodeJS
- Krok 5: Krok 4: Webové rozhraní
- Krok 6: Výsledek
Video: Projekt Arduino: Ovládejte elektroniku přes internet pomocí databáze Nodejs + SQL a webových stránek .: 6 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:22
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
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í
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í
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:
Meteorologická stanice: ESP8266 s hlubokým spánkem, SQL, grafy podle baňky a vykreslování: 3 kroky
Meteorologická stanice: ESP8266 S hlubokým spánkem, SQL, grafy podle Flask & Plotly: Bylo by zábavné znát teplotu, vlhkost nebo intenzitu světla na vašem balkoně? Vím, že bych. Vytvořil jsem tedy jednoduchou meteorologickou stanici pro sběr takových dat. Následující části jsou kroky, které jsem provedl při jejím vytváření. Začněme