Sisällysluettelo:
- Vaihe 1: Ohjelmistologiikka: Järjestelmäarkkitehtuuri
- Vaihe 2: Vaihe 1: Laitteiston johdotus
- Vaihe 3: Vaihe 2: Arduino
- Vaihe 4: Vaihe 3: NodeJS
- Vaihe 5: Vaihe 4: Web -käyttöliittymä
- Vaihe 6: Tulos
Video: Arduino -projekti: Ohjaa elektroniikkaa Internetin kautta Nodejs + SQL -tietokannan ja verkkosivuston avulla: 6 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:02
Projekti Lähettäjä: Mahmed.tech
Valmistuspäivä: 14. heinäkuuta 2017
Vaikeustaso: Aloittelija, jolla on jonkin verran ohjelmointitietoa.
Laitteistovaatimus:
- Arduino Uno, Nano, Mega (luulen, että useimmat sarjayhteydellä varustetut MCU -laitteet toimivat)
- Yksi LED- ja virranrajoitusvastus. Käytä tätä laskinta, jos et ole varma: Ohmin lain laskin
- 10K potentiometri.
Ohjelmistovaatimus:
- Arduino IDE
- Node. JS (tämä on tietokoneohjelmisto, erittäin helppo asentaa)
- MySQL -palvelin (helpoin tapa, jonka löysin, on halvan webhotellin käyttö. Voit myös saada ilmaisia verkkotunnuksia)
Ohjelmointi- ja komentosarjakieli:
Arduino (muokattu C/C ++), JavaScript (Nodejs), PHP, HTML ja CSS
Johdanto Tämä projekti pähkinänkuoressa: Arduinon mikro -ohjaimen ohjaaminen verkkokäyttöliittymästä. Siksi ohjaa kaikkia sähkölaitteita mistä tahansa Internetin kautta. Halusin laajentaa ymmärrystäni ohjelmoinnista ja verkkokehityksestä ja mikä olisi parempi tapa tehdä tämä kuin tehdä yksinkertainen mutta tehokas projekti. Laitteisto pidetään minimissä, joten voisin keskittyä enemmän ohjelmistoon. Siksi valitsin yksinkertaisen LED -potin asennuksen. Potti lähettää tietoja ja LED vastaanottaa (PWM -kirkkaus). NodeJS: n avulla sarjatiedot luettiin (potentiometrin arvo) ja kirjoitettiin (led -kirkkaus). Tämän hankkeen vaikea osa oli syöttötietojen saaminen etäsijainnista (verkkopalvelin)
Vaihe 1: Ohjelmistologiikka: Järjestelmäarkkitehtuuri
Potentiometrin tiedot:
Tämä alkaa Arduinosta, luku potin arvo on sarjakuva. Tällä kertaa käytämme kuitenkin Node. JS: ää arvon lukemiseen. NodeJS avaa sarjaliikenteen samaan porttiin kuin Arduino on kytketty ja lukee tulostetun potin arvon. NodeJS lähettää tiedot sitten SQL -etätietokantaan, tämä tapahtuu aina, kun uusi potin arvo tulostetaan. Verkkosivu muodostaa yhteyden SQL -tietokannan asetusväliin ja hakee potentiometrin arvon. Tämä näkyy sitten verkkosivulla.
Led -tiedot:
LED -valolle käyttäjä asettaa PWM -kirkkauden etäsivulla, joten sen matka alkaa spektrin vastakkaisesta päästä. Syöttötiedot tallennetaan SQL -tietokantaan, jokainen tietovälin asetettu aikaväli tarkistetaan, onko muutos johtanut PWM, tämän tekee NodeJS. Jos arvo on eri kuin edellinen, uusi arvo lähetetään Arduinolle sarjaväylän kautta. Arduino muuttaa ledin lähtö -PWM -arvoa muuttaakseen sen kirkkautta.
Ohmin lain laskin käyttää kaavan V = IR ja P = IV = I²R = V²/R Tässä projektissa käytän sinistä lediä. Tämä on tärkeää, koska valotaajuuden kasvaessa myös jännitehäviö kasvaa. Koska sinisellä valolla on suurempi taajuus kuin punaisella ledillä. Tämä tarkoittaa korkeampaa etujännitettä. Työalue vaihtelee merkin, tyypin ja koon mukaan. Asennuksessani käytin 220 Ω: n vastusta sarjassa, negatiivinen maahan ja positiivinen PWM -nastaan Arduinossa. Kattila liitettiin analogiseen nastaan. 5VCC: n toinen pää GND ja toinen nasta yhdistetty analogiseen nastaan (A0 minun tapauksessani).
Vaihe 2: Vaihe 1: Laitteiston johdotus
Tämä on hyvin yksinkertaista: Kytke vain nykyinen rajoitusvastu sarjaan LED -valon kanssa ja varmista, että johdot ovat oikein päin. Yksi piste menee GND: lle ja toinen pää Arduino -nastalle. Asennuksessani käytin nastaa 12 ledille ja A7 potille. Minulla ei ole kaavamaista, koska se on hyvin yksinkertainen piiri. Löysin sen kuitenkin netistä (kuva)
Vaihe 3: Vaihe 2: Arduino
Ensinnäkin led ja potti tarkistettiin, jos ne toimivat odotetusti. Tämä tapahtui yksinkertaisella ohjelmalla, jossa potin arvo ohjaa lediä. Käytin rajoitustoimintoa potin vaihtamiseksi 0-1023 0-255, mutta yksinkertainen /4 toimii myös. Potin arvo tasoitettiin ottamalla keskiarvo 10 peräkkäisestä lukemasta, tämä on piikkien poistamiseksi. (Tämä tasoitus aiheutti kuitenkin ongelmia NodeJS: n kanssa, joten tämä poistettiin myöhemmin projektissa - lisää siitä)
Koodi Arduino
Lue / kirjoita sarja Seuraavaksi on otettava käyttäjän kirkkaus käyttöön Arduino ide: n tarjoamien sarjamonitori -ikkunoiden kautta. Tätä varten käytetään serial.parseInt () -arvoa, joka ottaa kokonaisluvun ja jättää huomiotta merkkijonon. Lisäksi koodiin lisätään virheentarkistus. PWM -arvon kelvollinen alue on 0 - 255, kun käyttäjä syöttää arvon> 255, se määrittää arvon 255 ja jos käyttäjä antaa arvon tai <+/- 5, olen tehnyt tämän lukemasta vakaammaksi, koska se oli vaihtelua. Miksi tämä on suuri SQL -päivitykseen liittyvä ongelma, siitä lisää myöhemmin.
Vaihe 4: Vaihe 3: NodeJS
En aio näyttää sinulle kuinka saada tai asentaa ja SQL -palvelin. Siellä on tonnia opetusohjelmia.
NodeJS -ohjelmassa on kolme päätekijää:
Lue sarjatiedot
Kirjoita sarjatietoja
Päivitä SQL -tietokanta
Jos haluat muodostaa sarjayhteyden NodeJS: n sisällä, sarjaportti -niminen moduuli on ladattava, mikä voidaan tehdä käyttämällä npm -komentoa. Avaa CMD kansiossa, jossa NodeJS -ohjelma säilytetään, asenna kirjoittamalla: npm install serialport Myös SQL -moduuli on asennettava voidakseen muodostaa yhteyden SQL -tietokantaan: npm install mysql NodeJS - Sarjaportti Ensimmäinen vaiheeni NodeJS: n kanssa Ohjelma piti lukea tulostetut tiedot ja lähettää pwm -kirkkauden Arduinolle. Tämä tehtiin avaamalla sarjayhteys samaan braudrateen ja porttiin. Kun yhteys oli muodostettu, luin saapuvat viestit ja tulostin ne konsoli -ikkunaan. Ongelma syntyi, kun yritin kirjoittaa pwm -arvon kirkkauden säätämiseksi.
Se heitti jatkuvasti virheitä: Portti ei auki, ensimmäinen ratkaisuni oli soittaa kirjoitustoimintoon, kun saapuvaa dataa on. Tämä oli kuitenkin huono korjaus, ja olin melko tyytymätön ratkaisuun, vaikka se toimisi, se lähettäisi vasta, kun potin arvo muutettiin. Sarjamoduulin esimerkkikoodi ei toimisi, vaikka heittäisivät saman virheen. Myöhemmin huomasin, että ohjelma yritti suorittaa kirjoitustoiminnon avaamatta porttia, mikä johti siihen virheeseen. Olen kiertänyt tämän ongelman käyttämällä setInterval () -toimintoa
NodeJS - MySQL MySQL -kirjastoa käytettiin (npm install MySQL) yhteyden muodostamiseen SQL -tietokantaan, koska etäsijainnilla olevaa palvelinta käytettiin palvelimen IP -osoitetta localhostin sijasta.
var con pitää yhteystiedot JSON -muodossa, kun yhteys on muodostettu onnistuneesti, tietokantaa voidaan hakea. Kaksi toimintoa luotiin, joista toinen päivitti taulukon ja muut valittiin SQL -kyselyn sisältävillä parametreilla. Päivitystaulukko kutsutaan, kun uusi potin arvo vastaanotetaan ja kirkkauden tarkistuskysely suoritetaan säännöllisesti.
SolmuJSCode -linkki
Vaihe 5: Vaihe 4: Web -käyttöliittymä
Web -käyttöliittymä
Pääsivu on kirjoitettu PHP -muodossa, koska minulla oli jo jonkin verran kokemusta CO323 -tietokannoistani ja yliopiston verkkomoduulista. HTML -taulukkoa ja lomaketta käytettiin sql -tietojen näyttämiseen.
PHP SQL Access Code: Link Vieritä web -käyttöliittymä -osioon.
HTML & CSS * Javascript -verkkosivun koodi: Linkki Vieritä alas
Lopullinen verkkosivu
Suositeltava:
Sääasema: ESP8266, jossa on syvä uni, SQL, piirtäminen pulloilla ja piirtämällä: 3 vaihetta
Sääasema: ESP8266 Deep Sleep, SQL, Flask & Plotly -grafiikka: Olisiko hauskaa tietää parvekkeen lämpötila, kosteus tai valon voimakkuus? Tiedän, että olisin. Joten tein yksinkertaisen sääaseman tällaisten tietojen keräämiseksi. Seuraavat osat ovat vaiheita, jotka otin rakentaaksesi yhden. Aloitetaan