Kazalo:
- 1. korak: programska logika: sistemska arhitektura
- 2. korak: 1. korak: ožičenje strojne opreme
- 3. korak: 2. korak: Arduino
- 4. korak: 3. korak: NodeJS
- 5. korak: 4. korak: spletni vmesnik
- 6. korak: Rezultat
Video: Arduino Project: Nadzorna elektronika po internetu z uporabo baze podatkov in spletne strani Nodejs + SQL .: 6 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:06
Projekt Avtor: Mahmed.tech
Datum izdelave: 14. julij 2017
Stopnja težavnosti: Začetnik z nekaj znanja programiranja.
Strojna zahteva:
- Arduino Uno, Nano, Mega (mislim, da bo večina MCU s serijsko povezavo delovala)
- Enojni LED in upor za omejevanje toka. Če niste prepričani, uporabite ta kalkulator: kalkulator Ohmovega zakona
- 10K potenciometer.
Zahteve glede programske opreme:
- Arduino IDE
- Node. JS (to je programska oprema v računalniku, zelo enostavna za namestitev)
- MySQL Server (najlažji način, ki sem ga našel, je uporaba poceni spletnega gostovanja. Dobite lahko tudi brezplačna imena domen)
Uporabljen programski in skriptni jezik:
Arduino (spremenjen C/C ++), JavaScript (Nodejs), PHP, HTML in CSS
Uvod Ta projekt na kratko: krmiljenje mikrokrmilnika Arduino s spletnega vmesnika. Zato upravljajte katero koli električno napravo od kjer koli z internetom. Želel sem razširiti svoje razumevanje programiranja in spletnega razvoja ter kakšen boljši način za to kot enostaven, a učinkovit projekt. Strojna oprema je minimalna, zato bi se lahko bolj osredotočil na programsko opremo. Zato sem šel s preprosto LED nastavitvijo v loncu. Posoda bo poslala podatke, LED pa bo prejela (svetlost PWM). Z uporabo NodeJS so bili prebrani serijski podatki (vrednost potenciometra) in zapisani (svetlost LED). Težaven del tega projekta je bil pridobivanje vhodnih podatkov z oddaljene lokacije (spletni strežnik)
1. korak: programska logika: sistemska arhitektura
Podatki o potenciometru:
To se začne pri Arduinu, vrednost branja je serijski tisk. Vendar bomo tokrat za branje vrednosti uporabili Node. JS. NodeJS bo odprl serijsko komunikacijo do istih vrat, na katera je priključen Arduino, in prebral natisnjeno vrednost pot. NodeJS bo nato naložil podatke v oddaljeno bazo podatkov SQL, to se bo zgodilo vsakič, ko se natisne nova vrednost lonca. Spletna stran se bo povezala z nastavljenim intervalom zbirke podatkov SQL in pridobila vrednost potenciometra. Ta bo nato prikazan na spletni strani.
Led podatki:
Za LED diode bo svetlost PWM nastavil uporabnik na oddaljeni spletni strani, zato se njeno potovanje začne na nasprotnem koncu spektra. Vhodni podatki se shranijo v bazo podatkov SQL, v vsakem nastavljenem intervalu se zbirka podatkov preveri glede spremembe v LED PWM, to naredi NodeJS. Če je vrednost drugačna od prejšnje, bo nova vrednost poslana v Arduino prek serijskega vodila. Arduino spremeni izhodno vrednost PWM LED, da spremeni njeno svetlost.
Kalkulator Ohmovega zakona uporablja formule V = IR in P = IV = I²R = V²/R Za ta projekt bom uporabil modro LED. To je pomembno, ker se s povečanjem frekvence svetlobe povečuje tudi padec napetosti. Ker ima modra svetloba višjo frekvenco v primerjavi z nečim, kot je rdeča LED. To pomeni višjo napetost naprej. Delovno območje se razlikuje glede na znamko, vrsto in velikost. Za namestitev sem uporabil 220 Ω upor zaporedoma, negativen na ozemljitev in pozitiven na pin PWM na Arduinu. Lonec je bil priključen na analogni pin. S 5VCC en konec GND drugega in srednji zatič priključen na analogni pin (v mojem primeru A0).
2. korak: 1. korak: ožičenje strojne opreme
To je zelo preprosto: samo zaporedno povežite svoj trenutni omejevalni upor z LED -diodo in se prepričajte, da ste pravilno vodeni. Ena točka bo šla na GND, druga pa na Arduino pin. Za nastavitev sem uporabil pin 12 za LED in A7 za Pot. Nimam sheme, ker je njeno zelo preprosto vezje. Vendar sem to našel na spletu (slika)
3. korak: 2. korak: Arduino
Najprej so preverili led in pot, če delujejo po pričakovanjih. To je znižal preprost program, kjer vrednost lončka nadzoruje led. Uporabil sem funkcijo omejevanja, da spremenim obseg lonca od 0 do 1023 na 0 do 255, vendar deluje tudi preprost /4. Vrednost lonca je bila izravnana tako, da smo vzeli povprečno povprečje iz 10 zaporednih odčitkov, to je za odstranitev konic. (Vendar je to glajenje povzročilo težave z NodeJS, zato je bilo to kasneje v projektu odstranjeno - več o tem)
Koda Arduino
Naslednji korak je vnos uporabnika prek oken serijskega monitorja, ki jih ponuja Arduino ide za nastavitev svetlosti. V ta namen se uporablja serial.parseInt (), ki vzame celoštevilčno vrednost in prezre niz. Kodi je dodano tudi preverjanje napak. Veljavno območje vrednosti PWM je 0 - 255, ko uporabnik vnese> 255, potem dodeli vrednost 255, in če uporabnik vnese vrednost ali <+/- 5, sem to naredil, da je branje bolj stabilno, ker je bilo nihanje. Zakaj je to velik problem, povezan s posodabljanjem SQL, več o tem kasneje.
4. korak: 3. korak: NodeJS
Ne bom vam pokazal, kako dobiti ali nastaviti in strežnik SQL. Obstaja ogromno vaj.
Program NodeJS ima tri glavne vidike:
Preberite serijske podatke
Zapišite serijske podatke
Posodobite zbirko podatkov SQL
Za vzpostavitev serijske povezave znotraj NodeJS je treba prenesti modul, imenovan serialport, kar lahko storite z ukazom npm. Odprite CMD v mapi, kjer bo shranjen program NodeJS, namestite tako, da vnesete: npm install serialport Prav tako je treba namestiti modul SQL, da se lahko poveže z bazo podatkov sql: npm install mysql NodeJS - Serijska vrata Moj prvi korak z NodeJS program je prebral natisnjene podatke in poslal svetlost pwm na Arduino. To je bilo storjeno z odpiranjem serijske povezave na istem spletnem mestu in na vratih. Ko je bila povezava vzpostavljena, sem prebral dohodna sporočila in jih natisnil na okno konzole. Težava se je pojavila, ko sem poskušal zapisati vrednost pwm za nadzor svetlosti.
Neprestano je prikazoval napake: vrata niso odprta, moja začetna rešitev je bila, da pokličem funkcijo pisanja, ko so vhodni podatki. Vendar je bila to slaba rešitev in nisem bil zadovoljen z rešitvijo, čeprav je delovala, bi poslala le, ko bi spremenili vrednost lonca. Primer kode za serijski modul ne bi deloval niti z isto napako. Kasneje sem ugotovil, da program poskuša izvesti funkcijo pisanja, ne da bi odprl vrata, kar je povzročilo to napako. To težavo sem odpravil s funkcijo setInterval ()
NodeJS - MySQL Knjižnica MySQL je bila uporabljena (npm install MySQL) za povezavo z bazo podatkov SQL, saj je bil strežnik na oddaljeni lokaciji namesto localhost uporabljen naslov IP strežnika.
var con vsebuje podatke o povezavi v formatu JSON, potem ko je povezava uspešno vzpostavljena, se lahko zbirka podatkov poizveduje. Ustvarjeni sta bili dve funkciji, ena za posodabljanje tabele, druga izbira s parametri ob upoštevanju poizvedbe SQL. Tabela za posodobitev se pokliče, ko prejmemo novo vrednost lonca in se poizvedba za preverjanje svetlosti občasno izvaja.
Povezava NodeJSCode
5. korak: 4. korak: spletni vmesnik
Spletni vmesnik
Glavna spletna stran je bila napisana v jeziku PHP, saj sem že imel nekaj izkušenj iz svojih baz podatkov CO323 in spletnega modula na univerzi. Tabela & obrazec HTML je bila uporabljena za prikaz podatkov sql.
Koda za dostop PHP SQL: Povezava Pomaknite se do razdelka spletnega vmesnika.
HTML & CSS * Javascript koda spletne strani: Povezava Pomaknite se do dna
Končna spletna stran
Priporočena:
Vremenska postaja: ESP8266 z globokim spanjem, SQL, grafikoniranje po steklenici in ploskvi: 3 koraki
Vremenska postaja: ESP8266 z globokim spanjem, SQL, grafikoniranje s pomočjo steklenice in ploskev: Bi bilo zabavno vedeti temperaturo, vlažnost ali jakost svetlobe na vašem balkonu? Vem, da bi. Zato sem naredil preprosto vremensko postajo za zbiranje takih podatkov. Naslednji razdelki so koraki, ki sem jih naredil za izdelavo enega. Začnimo