Arduino Nano 33 IoT -kortti tarjoaa erinomaisen alustan erilaisten IoT-sovellusten kehittämiseen, ja siinä on sisäänrakennettuna useita sensoreita, kuten kiihtyvyysanturi ja gyroskooppi. Tämä luku käsittelee OLED-näytön käyttöä yhdessä gyroskoopin anturin kanssa, ja se opastaa ohjelman kirjoittamisessa, joka lukee gyroskoopin dataa ja näyttää sen OLED-näytöllä.
Ensimmäiseksi on tärkeää asettaa Arduino-ympäristö valmiiksi ja avata esimerkkikoodi, joka löytyy polusta File ➤ Examples ➤ Adafruit_SSD1306 ➤ ssd1306_128x64_i2c. Tämä esimerkkikoodi on perusta OLED-näytön ohjaamiseen I2C-protokollalla. Avaa tämä ohjelma, ja sen pitäisi tuottaa koodia, joka näkyy näytöllä, kuten kuvassa 3-12.
Seuraavaksi muokataan ohjelmaa niin, että se käyttää oikeaa I2C-osoitetta OLED-näytölle. Aiemmin määritettiin, että OLED-näytön I2C-osoite on 0x3C, joten vaihda tämä osoite koodin display.begin()-komennossa, kuten kuvassa 3-12. Kun ohjelma on valmis, voit kääntää ja ladata sen Arduino Nano 33 IoT -kortille. Tällöin pitäisi näkyä muotoja OLED-näytöllä, kuten kuvassa 3-13. Jos näyttö ei reagoi, tarkista ensin I2C-osoite ja varmista, että näyttö on 128x64 pikselin kokoinen.
Kun OLED-näyttö toimii, voidaan edetä seuraavaan vaiheeseen eli gyroskoopin sensoriin. Tämän tehtävän suorittamiseksi luomme ohjelman, joka lukee gyroskoopin dataa ja näyttää sen OLED-näytöllä. Aluksi on avattava uusi Arduino-projekti ja lisättävä tarvittavat kirjastot OLED-näytön ja gyroskoopin anturin ohjaamiseen:
Määrittelemme OLED-näytön koon, joka tässä esimerkissä on 128x64 pikseliä. Voit muuttaa koon vastaamaan omaa OLED-moduuliasi. Tämän jälkeen määrittelemme OLED-näytön ja gyroskoopin alustuskomennot, kuten:
Seuraavaksi aloitamme setup()-funktion määrittämisen, jossa aloitamme sarjaliikenteen, gyroskoopin alustan ja OLED-näytön. Tämä vaihe varmistaa, että kaikki laitteet ovat kunnolla alustettuja. Jos alustus epäonnistuu, ohjelma jää odottamaan virheilmoitusta:
Kun setup() on määritetty, voimme siirtyä loop()-funktioon, joka lukee gyroskoopin datan ja näyttää sen OLED-näytöllä. Gyroskoopin datan lukeminen tapahtuu IMU.gyroscopeAvailable()- ja IMU.readGyroscope()-toimintojen avulla. Näin saamme X-, Y- ja Z-akselin arvot, jotka sitten tulostetaan OLED-näytölle:
Ohjelman suorituksen jälkeen näet gyroskoopin sensoridatan OLED-näytöllä, kuten kuvassa 3-14. Voit myös tarkastella dataa sarjaterminaalissa. Tämä vaihe mahdollistaa sen, että gyroskoopin arvot näkyvät jatkuvasti reaaliaikaisesti.
Tämän jälkeen kannattaa testata ohjelma ja nähdä, kuinka se reagoi gyroskoopin liikkeisiin. Kun data on näkyvissä OLED-näytöllä, voit hyödyntää sen esimerkiksi robottien liikkeiden seuraamiseen, kenttätestien tekemiseen tai jopa lisätä sen osaksi suurempaa IoT-sovellusta.
Endtext
Kuinka yhdistää Arduino Nano 33 IoT WiFi-verkkoon ja käyttää NTP-palvelinta
Arduino Nano 33 IoT -moduulin avulla voidaan helposti yhdistää laite WiFi-verkkoon ja käyttää erilaisia verkkopalveluja, kuten NTP (Network Time Protocol) -palvelimia. Tämä mahdollistaa Arduino-laitteiden tarkan ajan hakemisen verkosta, mikä on erityisen tärkeää monissa sovelluksissa, kuten aikaleimaamisessa ja aikarajoitteisissa prosesseissa. Tässä luvussa tarkastellaan, miten Arduino voi yhdistää WiFi-verkkoon ja käyttää verkkosivustoja sekä NTP-palvelimia.
Ohjelmointi Arduino Nano 33 IoT:llä aloitetaan määrittelemällä WiFi-yhteys. Ensimmäinen askel on luoda ohjelma, joka skannaa saatavilla olevat WiFi-verkot ja tulostaa niiden tiedot sarjaportin kautta. Esimerkiksi seuraava koodinpätkä skannaa lähellä olevat WiFi-verkot ja tulostaa niiden nimet, signaalin voimakkuuden (RSSI) ja salausmenetelmän:
Tämän jälkeen voidaan määrittää LED-lamppu, joka vilkkuu skannauksen aikana ja sammuu skannauksen päätyttyä. Tämä antaa käyttäjälle visuaalisen palautteen skannauksen etenemisestä. Skannauksen jälkeen ohjelma viivästyy 15 sekunnin ajan, ennen kuin uusi skannaus aloitetaan.
Kun WiFi-verkot on skannattu, voidaan valita tietty WiFi-verkko, johon Arduino yhdistetään. Tämä vaatii verkon SSID:n (verkon nimen) ja mahdollisen salasanan, jos verkko on suojattu. Arduino yhdistää määritettyyn verkkoon ja tulostaa yhteyden tilan sarjaporttiin. Yhteyden muodostaminen tapahtuu seuraavalla tavalla:
Kun Arduino on yhdistetty verkkoon, voidaan siirtyä seuraavaan vaiheeseen, eli verkkosivuston, kuten Google, tavoittamiseen. Tämä onnistuu käyttämällä WiFiClient-objektia, joka mahdollistaa yhteyden muodostamisen palvelimeen ja HTTP-pyyntöjen lähettämisen. Seuraava koodiesimerkki näyttää, kuinka Arduino lähettää HTTP GET -pyynnön Googlelle:
Verkkosivuston hakeminen onnistuu ja tulokset tulostetaan sarjaporttiin.
Toinen mielenkiintoinen sovellus on ajankäyttö, ja tässä yhteydessä käytämme NTP (Network Time Protocol) -palvelinta, joka mahdollistaa tarkan ajan hakemisen internetistä. NTP-pyyntöjä varten käytämme WiFiUDP-kirjastoa. Tällöin Arduino voi yhdistää NTP-palvelimeen ja vastaanottaa UTC-aikavyöhykkeen mukaisen tarkan ajan.
Esimerkki NTP-koodista on seuraava:
NTP-palvelimen kanssa kommunikointi tapahtuu UDP-protokollan avulla, ja pyyntöjen lähettäminen ja vastaanottaminen hoidetaan Udp-objektin kautta. Tämän jälkeen saamme tarkan ajan, joka voidaan tulostaa sarjaporttiin.
Tällainen ohjelma on hyödyllinen, jos halutaan, että Arduino laite osaa käsitellä aikaa ilman, että se tarvitsee sisäistä kelloa.
On tärkeää huomata, että WiFi-yhteyksien ja NTP-palvelimien käyttö vaatii tarkan ohjelmoinnin ja huolellisen virheiden käsittelyn. Esimerkiksi jos WiFi-yhteys epäonnistuu, ohjelma tulisi pysäyttää ja palauttaa virheilmoitus käyttäjälle. Tärkeää on myös varmistaa, että NTP-palvelimelle lähetettävä pyyntö on oikein muotoiltu ja että laite osaa käsitellä palvelimelta saatuja aikavastauksia.
Lopuksi, vaikka tässä on käsitelty vain WiFi-yhteyksiä ja NTP-palvelinta, on hyvä ymmärtää, että nämä ovat vain pieni osa Arduino Nano 33 IoT:n mahdollisuuksia. Tämä laite pystyy liittämään monenlaisiin verkkosovelluksiin, jotka voivat sisältää kaiken IoT-sovelluksista ajastettuihin tehtäviin ja etävalvontaan. Laitteen käytettävyys ja sovellettavuus ovat lähes rajattomat, ja tarkka ohjelmointi voi avata monia mahdollisuuksia tulevaisuudessa.
Miten luoda yhteys NTP-palvelimeen ja käyttää WiFi-yhteyttä Arduino Nano 33 IoT:ssä
Arduino Nano 33 IoT on tehokas alusta IoT-sovellusten kehittämiseen, ja sen avulla voidaan helposti muodostaa yhteys verkkoon sekä lähettää ja vastaanottaa tietoa eri palvelimilta. Tämä esimerkki käsittelee NTP-palvelimen (Network Time Protocol) käyttämistä ajan synkronointiin ja yksinkertaisen IoT-sovelluksen luomista, jossa ohjataan LED-valoja verkkosivun kautta.
Ohjelmoinnin alussa luomme yhteyden WiFi-verkkoon ja otamme käyttöön UDP-protokollan, joka on välttämätön NTP-pakettien lähettämiseksi ja vastaanottamiseksi. Tämä mahdollistaa sen, että Arduino Nano 33 IoT voi kommunikoida internetissä olevien palvelimien kanssa ja synkronoida kellonajan.
Arduino-ohjelmointi alkaa perusasetuksilla. Aluksi määritellään NTP-palvelimen IP-osoite, pakettikoko ja tarvittavat muuttujat. Tässä käytetään esimerkiksi NTP-palvelimen osoitetta 129.6.15.28, ja määritellään, että NTP-paketti on 48 tavun kokoinen. Kun ohjelma käynnistyy, avataan sarjaportti ja WiFi-yhteys.
Ohjelman setup()-funktiossa aluksi käynnistetään sarjaportti ja tarkistetaan WiFi-moduulin yhteys. Mikäli WiFi-yhteyttä ei saada muodostettua, ohjelma pysähtyy virheilmoitukseen. Tämän jälkeen WiFi-verkkoon yhdistetään määrittelemällä SSID ja salasana. Kun yhteys on muodostettu, käynnistetään UDP-protokolla.
Seuraavaksi ohjelma siirtyy loop()-funktioon, jossa lähetämme NTP-paketin ja odotamme palvelimen vastausta. Kun palvelin vastaa, paketti luetaan ja tallennetaan packetBuffer-muuttujaan. NTP-palvelimelta saatu data käsitellään ja muutetaan Unix-ajanmuotoon. Tämä mahdollistaa sen, että voimme näyttää tarkan UTC-ajan.
NTP-paketin lähettäminen ja vastaanottaminen toteutetaan sendNTPpacket()-funktiossa, jossa määritellään kaikki tarvittavat arvot pakettiin. Tämä paketti lähetetään NTP-palvelimelle porttiin 123.
WiFi-statuksen tulostaminen voidaan tehdä printWifiStatus()-funktiolla, jossa näytetään nykyinen SSID, IP-osoite ja signaalin vahvuus.
Kun NTP-aika on saatu ja se on muunnettu Unix-ajaksi, voimme esittää sen käyttäjälle selkeästi. Tämä on erityisen tärkeää IoT-sovelluksissa, joissa tarkka aikaleima voi olla elintärkeä monille toiminnoille.
Seuraavaksi voidaan siirtyä yksinkertaisen IoT-sovelluksen rakentamiseen. Tässä esimerkissä voidaan ohjata LED-valoja verkon kautta käyttämällä HTTP-pyyntöjä. Tämän toteuttamiseksi luodaan yksinkertainen web-palvelin, joka odottaa saapuvia GET-pyyntöjä ja ohjaa LED-valot niiden mukaan. Tämä on hyvä aloitusprojekti, jossa yhdistyvät verkko- ja laitteistotoiminnot.
On tärkeää muistaa, että tällaisissa sovelluksissa on otettava huomioon myös turvallisuus, erityisesti kun IoT-laitteet altistetaan internetiin. Yksinkertaisilla protokollilla ja salaamattomilla yhteyksillä voi olla vakavia turvallisuusriskejä, joten on suositeltavaa ottaa käyttöön vahvat salausmenetelmät ja autentikointi.
Mikä on lohikäärme ja miksi se on eri kulttuureissa niin merkittävä olento?
Miten varmistamme tekoälyn käyttäytymisen eettisyyden ja turvallisuuden?
Miksi oikeus ja lainsäädäntö voivat olla pelinappuloita henkilökohtaisessa ja liiketoiminnallisessa valtapelissä?

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский