Tartalomjegyzék:
- 1. lépés: Szoftverlogika: Rendszer architektúra
- 2. lépés: 1. lépés: Hardvervezetékek
- 3. lépés: 2. lépés: Arduino
- 4. lépés: 3. lépés: NodeJS
- 5. lépés: 4. lépés: a webes felület
- 6. lépés: Eredmény
Videó: Arduino projekt: Elektronika vezérlése az interneten a Nodejs + SQL adatbázis és webhely használatával: 6 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:42
Projekt: Mahmed.tech
Készítés dátuma: 2017. július 14
Nehézségi szint: Kezdő némi programozási ismerettel.
Hardverkövetelmény:
- Arduino Uno, Nano, Mega (szerintem a legtöbb MCU soros kapcsolattal működik)
- Egy LED és áramkorlátozó ellenállás. Használja ezt a számológépet, ha nem biztos benne: Ohms Law Calculator
- 10K potenciométer.
Szoftverkövetelmény:
- Arduino IDE
- Node. JS (ez egy szoftver a számítógépen, nagyon egyszerűen telepíthető)
- MySQL szerver (a legegyszerűbb módja az olcsó webtárhely használata. Ingyenes domainneveket is kaphat)
Használt programozási és szkriptnyelv:
Arduino (módosított C/C ++), JavaScript (Nodejs), PHP, HTML és CSS
Ez a projekt dióhéjban: Arduino mikrokontroller vezérlése webes felületről. Ezért vezéreljen minden elektromos eszközt bárhonnan az interneten keresztül. Szerettem volna megérteni a programozást és a webfejlesztést, és mi lenne ennek jobb módja, mint egy egyszerű, de hatékony projekt. A hardver minimális szinten van, így inkább a szoftverekre koncentrálhatok. Ezért egy egyszerű LED, edény beállítással mentem. Az edény adatokat küld, a led pedig fogad (PWM fényerő). A NodeJS használatával a soros adatokat kiolvasták (potenciométer érték) és írták (led fényerő). Ennek a projektnek a bonyolult része a bemeneti adatok beszerzése egy távoli helyről (webszerverről)
1. lépés: Szoftverlogika: Rendszer architektúra
Potenciométer adatok:
Ez az Arduino -nál kezdődik, az olvasási pot értéke soros nyomtatás. Ezúttal azonban a Node. JS -t fogjuk használni az érték olvasásához. A NodeJS megnyitja a soros kommunikációt ugyanahhoz a porthoz, amelyhez az Arduino csatlakozik, és leolvassa a nyomtatott pot értékét. A NodeJS ezután feltölti az adatokat egy távoli SQL adatbázisba, ez történik minden alkalommal, amikor új pot értéket nyomtat. Egy weboldal csatlakozik az SQL adatbázis beállítási intervallumához, és lekéri a potenciométer értékét. Ez akkor megjelenik a weboldalon.
Led adatok:
A ledek esetében a PWM fényerejét a felhasználó egy távoli weboldalon állítja be, így útja a spektrum másik végén kezdődik. A bemeneti adatokat egy SQL adatbázisba menti, minden beállított időközönként ellenőrzi, hogy az adatbázis nem változik -e a led PWM -ben, ezt a NodeJS végzi. Ha az érték eltér az előzőtől, akkor az új értéket soros buszon keresztül elküldi az Arduino -nak. Az Arduino megváltoztatja a led kimeneti PWM értékét, hogy megváltoztassa a fényerőt.
Az Ohms -törvény számológépe a V = IR és P = IV = I²R = V²/R képletet használja ehhez a projekthez kék ledet használok. Ez azért fontos, mert a fényfrekvencia növekedésével a feszültségcsökkenés is növekszik. Mivel a kék fénynek nagyobb a frekvenciája, mint egy piros LED -nek. Ez magasabb előremenő feszültséget jelent. A működési tartomány a gyártótól, típustól és mérettől függően változhat. A beállításhoz 220 Ω -os ellenállást használtam sorba, negatív a földhöz és pozitív az Arduino PWM csapjához. Az edényt analóg tűhöz kötötték. Az 5VCC egyik vége GND, a másik és a középső csap analóg tűhöz van csatlakoztatva (az én esetemben A0).
2. lépés: 1. lépés: Hardvervezetékek
Ez nagyon egyszerű: Csatlakoztassa sorban az áramkorlátozó ellenállást a LED -hez, és győződjön meg arról, hogy a megfelelő irányban vezet. Az egyik pont a GND, míg a másik vég az Arduino csap. A beállításhoz a 12 -es tűt használtam a LED -hez és az A7 -et a Pot -hoz. Nincs vázlatom, mert nagyon egyszerű az áramköre. Viszont ezt találtam a neten (kép)
3. lépés: 2. lépés: Arduino
Először a ledet és az edényt ellenőrizték, hogy a várt módon működnek -e. Ezt egy egyszerű program leállította, ahol a pot értéke vezérli a ledet. A constrain függvénnyel módosítottam a pot tartományt 0 -tól 1023 -ig 0 -ról 255 -re, de az egyszerű /4 is működik. A pot értékét úgy simítottuk ki, hogy 10 egymást követő leolvasásból vettük az átlagot, ez a tüskék eltávolítása. (Ez a simítás azonban problémákat okozott a NodeJS -ben, ezért ezt a projekt későbbi szakaszában eltávolítottuk - bővebben erről)
Arduino kód
A következő lépés az, hogy a felhasználó bevigye az Arduino ide által biztosított soros monitor ablakokat a fényerő beállításához. Ehhez a serial.parseInt () értéket kell használni, amely egész értéket vesz fel, és figyelmen kívül hagyja a karakterláncot. Ezenkívül hibakeresést is hozzáadnak a kódhoz. A PWM érték érvényes tartománya 0 - 255, amikor a felhasználó> 255 értéket ír be, akkor a 255 értéket rendeli hozzá, és ha a felhasználó értéket ad meg, vagy <+/- 5, akkor ezt azért tettem, hogy stabilabb legyen az érték, mivel az ingadozás volt. Miért ez nagy probléma az SQL frissítésével kapcsolatban, erről később.
4. lépés: 3. lépés: NodeJS
Nem fogom megmutatni, hogyan kell beszerezni és beállítani az SQL szervert. Rengeteg oktatóanyag létezik.
A NodeJS programnak három fő aspektusa van:
Olvassa el a soros adatokat
Soros adatok írása
Frissítse az SQL adatbázist
A NodeJS -en belüli soros kapcsolat létrehozásához le kell tölteni a serialport nevű modult, amelyet az npm paranccsal lehet megtenni. Nyissa meg a CMD -t azon a mappán, ahol a NodeJS programot tárolni fogja, és írja be a következőt: npm install serialport Az SQL modult is telepíteni kell, hogy csatlakozni tudjon az sql adatbázishoz: npm install mysql NodeJS - Soros port Az első lépés a NodeJS használatával program a kinyomtatott adatok olvasása és a pwm fényerő elküldése az Arduino számára. Ez úgy történt, hogy megnyitotta a soros csatlakozást ugyanazon a braudráton és porton. Miután létrejött a kapcsolat, elolvastam a bejövő üzeneteket, és kinyomtattam a konzol ablakára. Probléma merült fel, amikor megpróbáltam írni a pwm értéket a fényerő szabályozására.
Folyamatosan hibákat dobott: Port nem nyitott, az első megoldásom az volt, hogy meghívom az írási funkciót, amikor bejövő adatok vannak. Ez azonban rossz javítás volt, és nagyon elégedetlen voltam a megoldással, annak ellenére, hogy működött, csak akkor küldött, amikor az edény értékét megváltoztatták. A soros modul példakódja sem működik, ha ugyanazt a hibát okozza. Később megtudtam, hogy a program megpróbálta végrehajtani az írási funkciót a port megnyitása nélkül, ami ezt a hibát eredményezte. Ezt a problémát a setInterval () függvény segítségével oldottam meg
NodeJS - MySQL A MySQL könyvtárat használtuk (npm install MySQL) az SQL adatbázishoz való csatlakozáshoz, mivel a távoli kiszolgáló a szerver IP -címét használta a localhost helyett.
A var con a kapcsolati információkat JSON formátumban tárolja, miután a kapcsolat sikeresen létrejött, az adatbázis lekérdezhető. 2 függvény jött létre, az egyik a táblázat frissítésére, a másik kiválasztása az SQL lekérdezést felvevő paraméterekkel. A frissítési tábla meghívásra kerül, amikor új pot érték érkezik, és a fényerő -ellenőrző lekérdezés rendszeresen fut.
NodeJSCode Link
5. lépés: 4. lépés: a webes felület
Webes felület
A fő weboldal PHP nyelven íródott, mivel már volt néhány tapasztalatom a CO323 adatbázisokból és az egyetemi webmodulból. Az SQL -adatok megjelenítéséhez HTML táblát és űrlapot használtak.
PHP SQL hozzáférési kód: Link Görgessen a webes felület szakaszhoz.
HTML és CSS * Javascript Webapage Code: Link Görgessen lefelé
Végső weboldal
Ajánlott:
Meteorológiai állomás: ESP8266 Mély alvással, SQL -sel, Flask grafikus ábrázolásával és ábrázolásával: 3 lépés
Meteorológiai állomás: ESP8266 Mély alvás, SQL, Flask & Plotly grafikus ábrázolása: Jó lenne tudni az erkély hőmérsékletét, páratartalmát vagy fényintenzitását? Tudom, hogy megtenném. Ezért készítettem egy egyszerű időjárás -állomást az ilyen adatok gyűjtésére. A következő szakaszok azok a lépések, amelyeket megtettem az egyik felépítéséhez. Kezdjük