Talaan ng mga Nilalaman:

Proyekto ng Arduino: Kontrolin ang Elektronikong Sa Internet Gamit ang Nodejs + SQL Database at Website .: 6 na Hakbang
Proyekto ng Arduino: Kontrolin ang Elektronikong Sa Internet Gamit ang Nodejs + SQL Database at Website .: 6 na Hakbang

Video: Proyekto ng Arduino: Kontrolin ang Elektronikong Sa Internet Gamit ang Nodejs + SQL Database at Website .: 6 na Hakbang

Video: Proyekto ng Arduino: Kontrolin ang Elektronikong Sa Internet Gamit ang Nodejs + SQL Database at Website .: 6 na Hakbang
Video: CS50 2013 - Week 9 2024, Hulyo
Anonim
Arduino Project: Kontrolin ang Elektronikong Sa Internet Gamit ang Nodejs + SQL Database at Website
Arduino Project: Kontrolin ang Elektronikong Sa Internet Gamit ang Nodejs + SQL Database at Website
Arduino Project: Kontrolin ang Elektronikong Sa Internet Gamit ang Nodejs + SQL Database at Website
Arduino Project: Kontrolin ang Elektronikong Sa Internet Gamit ang Nodejs + SQL Database at Website
Arduino Project: Kontrolin ang Elektronikong Sa Internet Gamit ang Nodejs + SQL Database at Website
Arduino Project: Kontrolin ang Elektronikong Sa Internet Gamit ang Nodejs + SQL Database at Website

Proyekto Ni: Mahmed.tech

Ginawa ang Petsa: 14 Hulyo 2017

Antas ng Pinagkakahirapan: Nagsisimula sa ilang kaalaman sa programa.

Kinakailangan sa Hardware:

- Arduino Uno, Nano, Mega (Sa palagay ko ang karamihan sa MCU na may serial na koneksyon ay gagana)

- Single LED at Kasalukuyang paglilimita sa risistor. Gamitin ang calculator na ito kung hindi ka sigurado: Ohms Law Calculator

- 10K Potensyomiter.

Kinakailangan ng Software:

- Arduino IDE

- Node. JS (ito ay isang software sa isang computer, napaka-simpleng i-install)

- MySQL Server (pinakamadaling paraan na nahanap ko ay ang paggamit ng isang murang web hosting. Maaari ka ring makakuha ng mga libreng domain name)

Ginamit ang wika ng Programming at Scripting:

Arduino (Binago C / C ++), JavaScript (Nodejs), PHP, HTML & CSS

Panimula Ang proyektong ito sa isang maikling salita: Pagkontrol ng isang Arduino microcontroller mula sa isang web interface. Samakatuwid kontrolin ang anumang de-koryenteng aparato mula sa kahit saan sa internet. Nais kong maunat ang aking pag-unawa sa pag-program at pag-unlad sa web at kung anong mas mahusay na paraan upang magawa ito kaysa sa paggawa ng isang simple ngunit mabisang proyekto. Ang hardware ay pinapanatili sa isang minimal upang maaari akong mag-focus ng higit sa software. Samakatuwid nagpunta ako sa isang simpleng LED, pag-setup ng palayok. Ang palayok ay magpapadala ng data at tatanggap ang pinangunahan (Liwanag ng PWM). Gamit ang NodeJS ang serial data ay nabasa (potentiometer value) at nakasulat (led brightness). Ang mahirap na bahagi ng proyektong ito ay pagkuha ng data ng pag-input mula sa isang malayuang lokasyon (web server)

Hakbang 1: Lohika ng Software: Arkitektura ng System

Software Logic: System Architecture
Software Logic: System Architecture

Data ng Potensyomiter:

Nagsisimula ito sa Arduino, basahin ang halaga ng palayok ay serial print. Gayunpaman, sa oras na ito gagamitin namin ang Node. JS upang basahin ang halaga. Bubuksan ng NodeJS ang serial na komunikasyon sa parehong port tulad ng Arduino ay konektado at basahin ang naka-print na halaga ng palayok. Pagkatapos ay mai-upload ng NodeJS ang data sa isang remote na database ng SQL, mangyayari ito sa tuwing nai-print ang isang bagong halaga ng palayok. Ang isang webpage ay kumokonekta sa agwat ng SQL database na itinakda at kunin ang halaga ng potensyomiter. Pagkatapos ito ay ipapakita sa webpage.

Led Data:

Para sa pinangunahan ang liwanag ng PWM ay itatakda ng gumagamit sa isang remote na webpage, kaya't ang paglalakbay nito ay nagsisimula sa kabaligtaran na dulo ng spectrum. Ang input data ay nai-save sa isang SQL database, bawat set interval ang database ay naka-check para sa isang pagbabago sa humantong PWM, ito ay tapos na sa pamamagitan ng NodeJS. Kung ang halaga ay naiiba sa nakaraang halaga pagkatapos ang bagong halaga ay ipapadala sa Arduino sa pamamagitan ng isang serial bus. Binabago ng Arduino ang halaga ng output PWM ng humantong upang baguhin ang ningning nito.

Gumagamit ang calculator ng batas ng ohms ng V = IR at P = IV = I²R = V2 / R ng formula Para sa proyektong ito, gagamit ako ng isang asul na humantong. Ito ay mahalaga sapagkat habang tumataas ang dalas ng ilaw ay tumataas din ang boltahe. Dahil ang asul na ilaw ay may mas mataas na dalas kumpara sa isang bagay tulad ng isang pulang humantong. Nangangahulugan ito ng isang mas mataas na boltahe sa unahan. Nakasalalay sa paggawa, uri at sukat na magkakaiba ang saklaw ng pagtatrabaho. Para sa aking pag-set up, gumamit ako ng isang resistor na 220 in sa serye, negatibo sa lupa at positibo sa isang PWM na pin sa isang Arduino. Ang palayok ay konektado sa isang analog pin. Sa 5VCC isang dulo GND ang iba at ang gitnang pin na konektado sa isang analog pin (A0 sa aking kaso).

Hakbang 2: Hakbang 1: Mga Kable ng Hardware

Hakbang 1: Mga Kable sa Hardware
Hakbang 1: Mga Kable sa Hardware

Napakadali nito: Ikonekta lamang ang iyong kasalukuyang naglilimita ng risistor sa serye sa LED siguraduhin na ikaw ay humantong ay tama paraan ng pag-ikot. Ang isang punto ay pupunta sa GND habang ang isang dulo ay pupunta sa Arduino pin. Para sa aking pag-set up, gumamit ako ng pin 12 para sa led at A7 para sa Pot. Wala akong iskema dahil sa napaka-simpleng circuit. Gayunpaman, nakita ko ito sa online (imahe)

Hakbang 3: Hakbang 2: Arduino

Una, ang led and pot ay nasuri kung gumagana ang mga ito tulad ng inaasahan. Ito ay binaba ng isang simpleng programa kung saan kinokontrol ng halaga ng palayok ang led. Ginamit ko ang pagpipigil sa pagpapaandar upang baguhin ang saklaw ng palayok ng 0 hanggang 1023 hanggang 0 hanggang 255, ngunit ang isang simple / 4 ay gumagana rin. Ang halaga ng palayok ay naayos sa pamamagitan ng pagkuha ng average na average mula sa 10 magkakasunod na pagbasa, ito ay upang alisin ang mga spike. (Gayunpaman, ang paglambot na ito ay sanhi ng mga isyu sa NodeJS kaya't natanggal ito sa paglaon sa proyekto - higit pa rito)

Code Arduino

Basahin / Isulat ang Serial Ang susunod na hakbang ay ang kumuha ng input ng gumagamit sa pamamagitan ng mga serial monitor windows na ibinigay ng Arduino ide upang maitakda ang ningning. Upang gawin ito, ginagamit ang serial.parseInt () na tumatagal ng isang halaga ng integer at hindi pinapansin ang string. Gayundin, idinagdag ang isang error sa pagsuri sa code. Ang wastong saklaw ng isang halagang PWM ay 0 - 255, kapag ang isang gumagamit ay pumasok> 255 pagkatapos ay itinalaga nito ang halagang 255 at kung ang gumagamit ay nagpasok ng halaga o <+/- 5 nagawa ko ito upang gawing mas matatag ang pagbabasa mula nang ito ay nagbagu-bago. Bakit ito ay isang malaking problema na nauugnay sa pag-update ng SQL, higit pa sa paglaon.

Hakbang 4: Hakbang 3: NodeJS

Hindi ko ipapakita sa iyo kung paano makakuha o mag-set up at SQL server. Mayroong tone-toneladang mga tutorial doon.

Mayroong 3 pangunahing aspeto sa programa ng NodeJS:

Basahin ang Serial Data

Sumulat ng Serial Data

I-update ang SQL Database

Upang makagawa ng isang serial na kumonekta sa loob ng NodeJS, ang isang module na tinatawag na serialport ay kailangang ma-download na maaaring gawin gamit ang utos ng npm. Buksan ang CMD sa folder kung saan itatago ang programa ng NodeJS, i-install sa pamamagitan ng pagta-type: npm install serialport Gayundin ang module ng SQL ay dapat na mai-install upang maikonekta sa sql database: i-install ang MySQL NodeJS - Serial Port Ang aking unang hakbang sa NodeJS Ang programa ay basahin ang naka-print na data at ipadala ang maliwanag na ilaw sa Arduino. Ginawa ito sa pamamagitan ng pagbubukas ng serial connect sa parehong braudrate at port. Kapag naitatag ang koneksyon binasa ko ang mga papasok na mensahe at nai-print ito sa window ng console. Nagtaas ng problema nang sinubukan kong isulat ang pwm na halaga upang makontrol ang liwanag.

Patuloy itong nagtatapon ng mga error: Port Not Open, ang aking paunang solusyon ay tawagan ang function ng pagsulat kapag mayroong papasok na data. Gayunpaman ito ay isang masamang pag-aayos at medyo hindi ako nasiyahan sa solusyon, kahit na gumana ito ay magpapadala lamang kapag binago ang halaga ng palayok. Ang halimbawa ng code para sa serial module ay hindi gagana alinman sa pagkahagis ng parehong error. Nang maglaon nalaman kong sinusubukan ng programa na ipatupad ang function ng pagsulat nang hindi binubuksan ang port, na nagresulta sa error na iyon. Napunta ako sa problemang ito sa pamamagitan ng paggamit ng setInterval () function

NodeJS - MySQLAng MySQL library ay ginamit (npm i-install ang MySQL) upang kumonekta sa SQL database dahil ang server sa isang malayong lokasyon ang IP address ng server ay ginamit sa halip na localhost.

Hawak ng var con ang impormasyon ng koneksyon sa format na JSON, sa sandaling ang koneksyon ay matagumpay na nagawa, ang database ay maaaring magtanong sa kama. Ang 2 pagpapaandar ay nilikha isa para sa pag-update ng talahanayan iba pang pagpili sa mga parameter na kumukuha sa query ng SQL. Ang talahanayan ng pag-update ay tinawag kapag ang isang bagong halaga ng palayok ay natanggap at ang query sa pag-check ng brightness ay tatakbo pana-panahon.

Link ng NodeJSCode

Hakbang 5: Hakbang 4: ang Web Interface

Hakbang 4: ang Web Interface
Hakbang 4: ang Web Interface

Interface sa Web

Ang pangunahing webpage ay nakasulat sa PHP dahil mayroon na akong ilang karanasan mula sa aking CO323 Databases at sa Web module sa unibersidad. Ginamit ang talahanayan at form ng html upang maipakita ang data ng sql.

PHP SQL Access Code: Link Mag-scroll sa seksyon ng web interface.

HTML & CSS * Javascript Webapage Code: Link Mag-scroll sa ibaba

Pangwakas na Webpage

Inirerekumendang: