Harjoitus: Etäohjattu valonkatkaisija

Johdanto

Tässä harjoituksessa tehdään valonkatkaisija, jota voi ohjata etänä langattoman verkon kautta.

Harjoituksessa käytetään Node MCU:ta. Se on suosittu avoimen lähdekoodin kehitysalusta, jonka päälle on helppo rakentaa pieniä IOT-laitteita. Voit ajatella Node MCU:ta Arduinona, jolla pääsee nettiin.

Tarvikkeet

OsaKuvaKuvaus
Node MCUMikrokontrolleri, jolla pääsee langattomaan verkkoon.
USB-Micro USB -johtoTietokoneella kirjoitettu ohjelma lähetetään Node MCU:lle USB-johdolla, jonka toisessa päässä on MIcro USB -liitin
Koekytkentälevy
KytkentäjohtojaKytkentöjen tekemiseen koekytkentälevyn kautta.
180-asteen servo-moottoriOttaa asennon välillä 0-180 astetta riippuen syötetystä arvosta. Servossa on kolme johdinta, jotka kytketään piikkiriman avulla digitaaliseen porttiin, 5 voltin jännitteeseen ja maahan. Huom: Maker Kitin servo on väriltään sininen!
PiikkirimaVoit taittaa piikkirimasta kolmen piikin palasen irti ja liittää sen servon johtimien päähän. Näin saat kiinnitettyä servon koekytkentälevyyn. HUOM! Mustaa muoviosaa voi painaa keskemmälle!

Virtapiiri

Toisin kuin Arduinossa, Node MCU:ssa ei ole valmiita koloja, joihin johdon päät voisi upottaa. Tämän sijaan boardissa on piikkimäiset pinnit, joihin kytkennät tulisi tehdä. Helpointa on painaa Node MCU:n pinnit koekytkentälevyyn!

  • Paina Node MCU kiinni koekytkentälevyyn.
  • Kytke servomoottori koekytkentälevyn kautta NodeMCU:hun.
  • Servon signaalijohto (kuvassa keltainen) tulee pinniin D1, virtajohto (punainen) 3V3-pinniin ja maajohdin (musta) GND-pinniin.

Ohjelmointi 1/3 - Boardin asentaminen

Node MCU:ta ohjelmoidaan Arduino IDE:llä, joka soveltuu siis muidenkin boardien kuin Arduinojen ohjelmoimiseen. Ennen varsinaista ohjelmointia sinun tulee kuitenkin kertoa Arduino IDE:lle, minkälaista kontrolleria olet ohjelmoimassa. Seuraa alla olevia ohjeita.

  • Avaa Arduino IDE.
  • Valitse ylhäältä Arduino > Preferences.
  • Kopioi alareunan Additional Boards Manager URLs kohtaan seuraava linkki: http://arduino.esp8266.com/stable/package_esp8266com_index.json
  • Valitse OK tallentaaksesi asetukset.
  • Valitse seuraavaksi yläreunan Tools-valikon Board-kohdasta Boards Manager.
  • Kirjoita Boards Managerin hakukenttään “esp8266”, ja asenna paketti esp8266 by ESP8266 Community (kuvassa alempi)
  • Arduino IDE:n Tools > Boards -valikkoon pitäisi nyt ilmestyä kasa uusia mikrokontrollereita tavallisten Arduino-pohjaisten boardien seuraksi.
  • Valitse täältä boardiksi NodeMCU 1.0 (ESP-12E module).
  • Arduino IDE:llä voi nyt ohjelmoida myös NodeMCU:ta. Jos myöhemmin palaat käyttämään esimerkiksi Arduino Unoa, muista vaihtaa Board takaisin Arduino/Genuino UNOksi!

Ohjelmointi 2/3 - Yhdistäminen Wifiin

Nyt on aika muodostaa yhteys, jolla voit ohjata Node MCU:ta tietokoneellasi langattoman verkon yli!

Vaihda ohjelman yläreunan WiFi credentials -kohtaan (rivit 13 ja 14) tietokoneesi käyttämän langattoman verkon nimi ja salasana. Voit jakaa myös internetin puhelimestasi. Tietokoneen ja NodeMCU:n tulee olla samassa verkossa, jotta ohjaaminen on mahdollista.

Kytke NodeMCU Micro USB -kaapelilla kiinni tietokoneeseen, ja varmista että Tools > Port kohdassa on valittuna jokin portti. Jos valittavaa porttia ei ilmesty, kytke Node MCU irti ja takaisin tietokoneeseen. Voit kokeilla myös eri USB-porttia, jos muu ei auta.

Avaa Tools-valikosta Serial Monitor ja aseta baud rate 115200. Tietoa vaihdetaan tietokoneen ja boardin välillä nyt nopeudella 115200 bittiä sekunnissa, joka on Node MCU:lle sopiva nopeus.

Lähetä ohjelma boardille painamalla Arduino IDE:n Upload-nappia ohjelman vasemmasta yläkulmasta. Ohjelman lataaminen Node MCU:lle kestää yleensä kauemmin kuin Arduinolle, joten jos IDE:n konsoliin ilmestyy pisteitä (….), odota rauhassa. Sinertävän valon pitäisi vilkkua lataamisen aikana.

Kun Arduino IDE ilmoittaa “Done uploading”, avaa Serial Monitor. Jos yhteyden muodostaminen onnistui, Serial Monitoriin pitäisi ilmestyä seuraavanlainen viesti

Jos Serial Monitoriin ei ilmesty mitään tai sinne ilmestyy outoja merkkejä, tarkista seuraavat asiat.

  1. Varmista,että Serial Monitorissa on valittuna oikea nopeus (115200 baudia), joka näkyy yllä olevan kuvan oikeassa alakulmassa.
  2. Irroita Node MCU tietokoneesta ja liitä se eri USB-porttiin. Katso sitten, että Tools > Port -valikosta on valittu oikea portti. Lataa ohjelma uudestaan.
  3. Varmista että vaihdoit koodiin Wifi Credentials -kohtaan oikean langattoman verkon nimen ja salasanan.

Ohjelmointi 3/3: Ohjelman testaus ja muokkaaminen

Kun Serial monitoriin on ilmestynyt viesti “Connected to..:” on Node MCU yhteydessä internettiin.

Nyt on aika muodostaa yhteys, jolla voit ohjata Node MCU:ta tietokoneellasi langattoman verkon yli!

Mene Serial Monitorin antamaan lokaaliin osoitteeseen (yllä kuvassa http://192.168.8.107/). Sinulle tulisi avautua alla oleva sivu, jonka kautta voit ohjailla servomoottoria. Lokaalilla osoitteella (Local Host) tarkoitetaan osoitetta, joka näkyy vain käyttämässäsi langattomassa verkossa oleville tietokoneille. Lisätietoja täällä.

Tehtävä

Klikkaile sivulta löytyviä nappeja. Servon pitäisi liikkua painalluksiesi mukaan.

  • Kokeile myös vaihtaa nettiosoitteen lopun astelukua, esim. Req=0 sijaan voit kirjoittaa Req=45. Servon pitäisi reagoida tähän.

  • Voit muuttaa servon kääntymiskulmia vaihtamalla ohjelman loppupuolen muuttujien btnDeg1, btnDeg2 ja btnDeg arvoja. Samalla voit vaihtaa nappien tekstit vastaaviksi muokkaamalla btnText-muuttujia. Voit etsiä sopivaa astelukua helposti muokkaamalla URLin loppuosaa (/Req=asteluku).

Koodisi siis loi lokaalin nettisivun, josta käsin voit ohjata servoa! Kaikki nettisivun elementteihin liittyvät määrittely löydät kopioimastasi koodista. Tutustu koodiin rauhassa, ja koita päätellä mitä sen osat tekevät.

Koulun verkossa saattaa olla rajoituksia sille, kuka ja miten verkkoon voi kytkeä palvelimia. Jos ohjelman tarjoama URL / IP osoite ei vastaa, kokeile jakaa langaton verkko puhelimestasi. Muista tällöin vaihtaa oman puhelimesi nimi ja salasana koodin Wifi credentials -kohtaan.

Mitä seuraavaksi?

Kun olet saanut yhteyden toimimaan, on etäohjatun valonkatkaisijan projektisi periaatteessa vasta alussa: seuraavaksi tarvitaan mekanismi, jolla moottori todella painaa valonkatkaisijaa silloin, kun annat sille oikean komennon.

Pohdi alla listattuja asioita, mutta älä jää hiomaan harjoitusta loputtomiin. Muista, että sinun tulisi tehdä harjoitus kaikista teemoista, ja voit kehitellä valonkatkaisijaa eteenpäin myös tämän kurssin projektissasi.

Mekanismi?

Pohdi, miten servomoottori voisi painaa valonkatkaisijaa. Voit esimerkiksi teipata moottoriin tikun, joka kääntyessään painaa katkaisijaa. Servomoottorin tulee tällöin olla kiinnitettynä katkaisijan viereen jollain tavalla.

Kokeile pystyykö sama servo painamaan katkaisijaa myös toiseen suuntaan. Kehitä tarvittaessa sopiva lisäosa servon varteen esimerkiksi pahvista, tai 3D-tulostamalla. Sopivia 3D malleja pohjaksi voi hakea Thingiversestä.

Keksi NodeMCU:lle ja servolle sopiva rasia, ja teippaa laite seinään valokatkaisijan viereen. NodeMCU:lle voit antaa virtaa esimerkiksi puhelimeesikin sopivasta powerbankista.

Rele ja NodeMCU

Rele on sähköllä ohjattava kytkin, jonka avulla voit käynnistää monenmoisia sähkölaitteita käyttäen NodeMCU:ta tai Arduinoa. Rele pitää siihen kytkettävien sähkölaitteiden virtapiirin eristettynä mikrokontrollerista, mikä on hyvä juttu: muutoin vieraan virtapiirin jännite tai virta voisi käräyttää pienemmällä jännitteellä toimivan mikrokontrollerin.

Releeseen voi kytkeä esimerkiksi jonkin paristoilla toimivan lelun. Muista, että verkkovirtaa vaativia laitteita ei saa kytkeä releeseen ilman sähköalan ammattilaisen apua!

Esimerkkikoodi jolla releen saa toimimaan WiFin yli

Lisätietoa

Local Host
Lokaalilla palvelimella (Local Host) tarkoitetaan sivuja, jotka näkyvät vain käyttämässäsi langattomassa verkossa oleville tietokoneille. Lisätietoja täällä.
Mistä käytetty koodi oikein putkahti?

Kirjastot ovat koodipaketteja, jotka laajentavat ohjelmointiympäristön toimintoja. Tässä tapauksessa ESP8266-kirjasto asennettiin ja otettiin käyttöön, jotta voidaan laatia langattomassa verkossa toimivia Arduino-sovelluksia.

Kirjastoissa määritellään uusia komentoja, joiden osaaminen ulkoa on aika mahdoton tehtävä. Onneksi kirjastot on tapana dokumentoida hyvin. Voit tutustua kirjaston dokumentaatioon täällä