Sadržaj:
- Korak 1: Softverska logika: Arhitektura sustava
- Korak 2: Korak 1: Ožičenje hardvera
- Korak 3: Korak 2: Arduino
- Korak 4: Korak 3: NodeJS
- Korak 5: Korak 4: web sučelje
- Korak 6: Rezultat
Video: Arduino projekt: Upravljajte elektronikom putem interneta pomoću Nodejs + SQL baze podataka i web stranice .: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:36
Projekt Napisao: Mahmed.tech
Datum nastanka: 14. srpnja 2017
Razina teškoće: Početnik s određenim znanjem programiranja.
Hardverski zahtjevi:
- Arduino Uno, Nano, Mega (mislim da će većina MCU -a sa serijskom vezom raditi)
- Jedan LED i otpornik za ograničavanje struje. Koristite ovaj kalkulator ako niste sigurni: Ohmov kalkulator
- 10K potenciometar.
Softverski zahtjevi:
- Arduino IDE
- Node. JS (ovo je softver na računalu, vrlo jednostavan za instalaciju)
- MySQL poslužitelj (najlakši način koji sam otkrio je korištenje jeftinog web hostinga. Također možete dobiti besplatne nazive domena)
Korišteni jezik programiranja i skriptiranja:
Arduino (izmijenjeni C/C ++), JavaScript (Nodejs), PHP, HTML i CSS
Uvod Ovaj projekt ukratko: Upravljanje Arduino mikrokontrolerom s web sučelja. Stoga kontrolirajte bilo koji električni uređaj s bilo kojeg mjesta na internetu. Htio sam proširiti svoje razumijevanje programiranja i web razvoja i koji je bolji način za to od jednostavnog, ali učinkovitog projekta. Hardver je sveden na minimum pa bih se mogao više usredotočiti na softver. Stoga sam otišao s jednostavnom LED postavkom. Pot će slati podatke, a LED će primati (PWM svjetlina). Pomoću NodeJS -a očitani su serijski podaci (vrijednost potenciometra) i zapisani (svjetlina LED diode). Težak dio ovog projekta bio je unos ulaznih podataka s udaljene lokacije (web poslužitelj)
Korak 1: Softverska logika: Arhitektura sustava
Podaci o potenciometru:
Ovo počinje na Arduinu, vrijednost čitanja je serijski ispis. Međutim, ovaj put ćemo koristiti Node. JS za čitanje vrijednosti. NodeJS će otvoriti serijsku komunikaciju na isti port na koji je spojen Arduino i pročitati ispisanu vrijednost pot. NodeJS će zatim prenijeti podatke u udaljenu SQL bazu podataka, što će se dogoditi svaki put kada se ispiše nova vrijednost pot. Web stranica će se spojiti na postavljeni interval SQL baze podataka i dohvatiti vrijednost potenciometra. To će tada biti prikazano na web stranici.
Led podaci:
Za LED diodu svjetlinu PWM -a će postaviti korisnik na udaljenoj web stranici, tako da njeno putovanje počinje na suprotnom kraju spektra. Ulazni podaci spremaju se u SQL bazu podataka, svaki postavljeni interval u bazi se provjerava ima li promjena u LED PWM -u, to radi NodeJS. Ako se vrijednost razlikuje od prethodne, tada će se nova vrijednost poslati na Arduino putem serijske sabirnice. Arduino mijenja izlaznu PWM vrijednost LED -a kako bi promijenio njegovu svjetlinu.
Kalkulator Ohmskog zakona koristi formule V = IR i P = IV = I²R = V²/R Za ovaj projekt koristit ću plavu LED diodu. To je važno jer s povećanjem frekvencije svjetlosti raste i pad napona. Budući da plavo svjetlo ima veću frekvenciju u odnosu na nešto poput crvenog LED -a. To znači veći napon naprijed. Ovisno o marki, vrsti i veličini, radni raspon će se razlikovati. Za moje postavljanje koristio sam 220 Ω otpornik u seriji, negativan na masu i pozitivan na PWM pin na Arduinu. Lonac je spojen na analogni pin. S 5VCC jedan kraj GND drugi i srednji pin spojen na analogni pin (A0 u mom slučaju).
Korak 2: Korak 1: Ožičenje hardvera
Ovo je vrlo jednostavno: samo spojite svoj trenutni ograničavajući otpornik u seriju sa LED diodom kako biste bili ispravni. Jedan bod će pripasti GND -u, dok će drugi kraj otići na Arduino pin. Za moje postavljanje koristio sam pin 12 za LED i A7 za Pot. Nemam shemu jer je njezin vrlo jednostavan sklop. Međutim, ovo sam pronašao na internetu (slika)
Korak 3: Korak 2: Arduino
Najprije je provjereno rade li led i pot kako rade. To je umanjeno jednostavnim programom gdje vrijednost pot kontrolira LED. Koristio sam funkciju ograničenja za promjenu raspona lonaca od 0 do 1023 na 0 do 255, ali radi i jednostavan /4. Vrijednost lonca izglađena je uzimanjem srednjeg prosjeka od 10 uzastopnih očitanja, to se odnosi na uklanjanje šiljaka. (Međutim, ovo zaglađivanje uzrokovalo je probleme s NodeJS -om pa je to kasnije uklonjeno u projektu - više o tome)
Kod Arduino
Čitanje / pisanje serijskog dijela Sljedeći korak je unos korisničkog unosa putem prozora serijskog monitora koje pruža Arduino ide za postavljanje svjetline. Da biste to učinili, koristi se serial.parseInt () koji uzima cijelu vrijednost i zanemaruje niz. Također, kodu se dodaje provjera grešaka. Važeći raspon vrijednosti PWM -a je 0 - 255, kada korisnik unese> 255 tada dodjeljuje vrijednost 255, a ako korisnik unese vrijednost ili <+/- 5, učinio sam to kako bi čitanje bilo stabilnije jer se radilo o fluktuaciji. Zašto je to veliki problem vezan uz ažuriranje SQL -a, više o tome kasnije.
Korak 4: Korak 3: NodeJS
Neću vam pokazati kako nabaviti ili postaviti i SQL poslužitelj. Postoji mnogo tutoriala vani.
Postoje tri glavna aspekta programa NodeJS:
Čitajte serijske podatke
Zapišite serijske podatke
Ažurirajte SQL bazu podataka
Za uspostavljanje serijskog povezivanja unutar NodeJS -a potrebno je preuzeti modul koji se zove serialport, što se može učiniti pomoću naredbe npm. Otvorite CMD u mapi u kojoj će se držati program NodeJS, instalirajte upisivanjem: npm install serialport Također se mora instalirati SQL modul kako bi se mogao povezati s sql bazom podataka: npm install mysql NodeJS - serijski port Moj prvi korak s NodeJS -om program je trebao čitati ispisane podatke i slati pwm svjetlinu na Arduino. To je učinjeno otvaranjem serijskog povezivanja na istoj brzini prijenosa i priključku. Nakon što sam uspostavio vezu, pročitao sam dolazne poruke i ispisao ih na prozor konzole. Problem se pojavio kada sam pokušao napisati pwm vrijednost za kontrolu svjetline.
Nastavljalo se pojavljivati greške: Port nije otvoren, moje je prvo rješenje bilo pozvati funkciju pisanja kada postoje dolazni podaci. Međutim, ovo je bio loš popravak i bio sam prilično nezadovoljan rješenjem, iako je radilo, slalo bi se samo kad se promijenila vrijednost pot. Primjer koda za serijski modul ne bi funkcionirao niti bi bacio istu pogrešku. Kasnije sam saznao da program pokušava izvršiti funkciju pisanja bez otvaranja porta, što je rezultiralo tom pogreškom. Zaobišao sam ovaj problem pomoću funkcije setInterval ()
NodeJS - MySQLMiblioteka MySQL je korištena (npm install MySQL) za povezivanje sa SQL bazom podataka budući da je poslužitelj na udaljenom mjestu umjesto lokalnog hosta korišten IP adresa poslužitelja.
var con sadrži podatke o vezi u JSON formatu, nakon što je veza uspješno uspostavljena, baza podataka može se postaviti. Dvije funkcije su stvorene jedna za ažuriranje tablice, druga odabirom s parametrima uzimanjem SQL upita. Tablica ažuriranja poziva se kada se primi nova vrijednost potka i upit za provjeru svjetline će se povremeno izvoditi.
Veza NodeJSCode
Korak 5: Korak 4: web sučelje
Web sučelje
Glavna web stranica napisana je na PHP -u jer sam već imao iskustva s mojim bazama podataka CO323 i web modulom na sveučilištu. Za prikaz sql podataka korištena je HTML tablica i obrazac.
PHP SQL pristupni kôd: Veza Pomaknite se do odjeljka web sučelja.
HTML & CSS * Javascript kod web stranice: Veza Pomaknite se do dna
Završna web stranica
Preporučeni:
Meteorološka postaja: ESP8266 s dubokim mirovanjem, SQL, grafički prikaz prema tikvici i plocici: 3 koraka
Meteorološka postaja: ESP8266 s dubokim snom, SQL -om, grafičkim prikazom pomoću boce i plotle: Bilo bi zabavno znati temperaturu, vlažnost ili intenzitet svjetla na vašem balkonu? Znam da bih. Tako sam napravio jednostavnu meteorološku stanicu za prikupljanje takvih podataka. Sljedeći odjeljci su koraci koje sam poduzeo da bih ih izgradio. Počnimo