blog

Helppo Arduino Nano -projekti: 3 ideaa aloittelijoille

Haluatko oppia arduino-ohjelmointia käytännössä, mutta et tiedä mistä aloittaa? Arduino Nano on erinomainen valinta ensimmäiseksi mikro-ohjaimeksi – se on edullinen, pienikokoinen ja sopii suoraan koekytkentälevylle, eli pääset rakentamaan projekteja ilman juottamista. Tässä artikkelissa rakennamme kolme käytännön Arduino Nano -projektia, jotka opettavat sinulle arduino-ohjelmoinnin perusteet askel askeleelta. Jokainen arduino nano projekti sisältää kytkentäohjeet, valmiin koodin ja selkeän selityksen siitä, miten koodi toimii.

Käytämme kaikissa projekteissa ATmega328P ’Nano’ -ohjainta (9,90 €), joka on varustettu modernilla USB Type-C -liitännällä ja valmiiksi juotetuilla pinneillä. Sama ATmega328P-siru löytyy myös Arduino Unosta, joten kaikki Uno-tutoriaalit toimivat suoraan myös Nanolla.

ATmega328P Nano ohjain
ATmega328P ’Nano’ -ohjain – USB Type-C -liitännällä ja valmiiksi juotetuilla pinneillä

Tarvittavat komponentit

Ennen kuin aloitamme, tarvitset seuraavat komponentit kaikkiin kolmeen projektiin:

  • 1× ATmega328P Nano -ohjainsaatavilla Protocachesta (9,90 €)
  • 1× koekytkentälevy (breadboard)
  • Hyppylankoja – esim. Dupont-hyppylankoja 10 cm uros-uros (3,90 €)
  • 1× LED (mikä tahansa väri, 5 mm)
  • 1× 220 Ω vastus (LED:n virtarajoitus)
  • 1× painonappi (tactile switch)
  • 1× DS18B20-lämpötila-anturi
  • 1× 4,7 kΩ vastus (DS18B20:n pull-up)
  • 1× SG90-servomoottori
  • USB Type-C -kaapeli (Nanon yhdistämiseen tietokoneeseen)
Dupont-hyppylanka 10cm (20kpl) uros-uros
Dupont-hyppylangat 10 cm uros-uros – koekytkentälevyprojekteihin sopiva pituus

Arduino Nano on kooltaan vain 45,6 × 18 mm, ja se mahtuu suoraan koekytkentälevyn keskiuraan. Valmiiksi juotetut pinnirimat tekevät kytkennöistä helppoja – tarvitset vain hyppylankoja komponenttien yhdistämiseen.

Arduino IDE:n asennus ja asetukset

Arduino-ohjelmointi tapahtuu Arduino IDE -kehitysympäristössä. Näin pääset alkuun:

  1. Lataa Arduino IDE osoitteesta arduino.cc/en/software ja asenna se.
  2. Yhdistä Nano tietokoneeseen USB Type-C -kaapelilla.
  3. Avaa Arduino IDE ja valitse Tools → Board → Arduino Nano.
  4. Valitse Tools → Processor → ATmega328P.
  5. Valitse Tools → Port ja valitse COM-portti, joka ilmestyi Nanon yhdistämisen jälkeen.

Vinkki: Protocachen Nano käyttää CH340-USB-sarjamuunninpiiriä. Useimmissa tapauksissa Windows tunnistaa piirin automaattisesti. Jos porttia ei näy, asenna CH340-ajuri erikseen valmistajan sivuilta. Jos koodin lataus epäonnistuu, kokeile vaihtaa prosessoriksi ”ATmega328P (Old Bootloader)”.

Projekti 1: LED-ohjaus painonapilla

Ensimmäinen arduino nano projekti on klassikko: ohjataan LEDiä painonapilla. Joka painalluksella LED syttyy tai sammuu. Tämä projekti opettaa digitaalisen tulon ja lähdön käytön sekä ohjelman perusrakenteen. Se on täydellinen arduino aloittelija -tason harjoitus.

Kytkentä

Aseta Arduino Nano koekytkentälevylle keskiuran päälle. Kytke komponentit seuraavasti:

  • LED: Anodi (pidempi jalka) → D7-pinniin hyppylangalla. Katodi (lyhyempi jalka) → 220 Ω vastuksen kautta GND-kiskoon.
  • Painonappi: Toinen puoli → D2-pinniin. Toinen puoli → GND-kiskoon. Käytämme koodissa INPUT_PULLUP-tilaa, jolloin erillistä ylösvetovastusta ei tarvita.

Koodi

// Projekti 1: LED-ohjaus painonapilla
// LED syttyy/sammuu joka painalluksella

const int BUTTON_PIN = 2;  // Painonappi D2-pinnissä
const int LED_PIN = 7;     // LED D7-pinnissä

bool ledState = false;
bool lastButtonState = HIGH;  // HIGH, koska INPUT_PULLUP
unsigned long lastDebounceTime = 0;
const unsigned long debounceDelay = 50;

void setup() {
  pinMode(LED_PIN, OUTPUT);
  pinMode(BUTTON_PIN, INPUT_PULLUP);  // Sisäinen ylösvetovastus
  Serial.begin(9600);
  Serial.println("Projekti 1: LED-ohjaus painonapilla");
}

void loop() {
  bool reading = digitalRead(BUTTON_PIN);

  if (reading != lastButtonState) {
    lastDebounceTime = millis();
  }

  if ((millis() - lastDebounceTime) > debounceDelay) {
    if (reading == LOW && lastButtonState == HIGH) {
      // Nappia painettiin (LOW, koska INPUT_PULLUP)
      ledState = !ledState;
      digitalWrite(LED_PIN, ledState);
      Serial.print("LED: ");
      Serial.println(ledState ? "PAALLA" : "POIS");
    }
  }

  lastButtonState = reading;
}

Miten koodi toimii?

INPUT_PULLUP aktivoi Nanon sisäisen ylösvetovastuksen, jolloin pinni lukee HIGH kun nappia ei paineta ja LOW kun nappia painetaan. Tämä yksinkertaistaa kytkentää, koska erillistä 10 kΩ vastusta ei tarvita.

Debounce-logiikka on tärkeä osa koodia. Mekaaninen painonappi ”pomppii” painettaessa ja tuottaa useita signaaleja muutamassa millisekunnissa. Ilman debounce-käsittelyä yksi painallus voisi vaihtaa LEDin tilaa useita kertoja. Koodissa odotetaan 50 ms ennen kuin uusi painallus hyväksytään.

Tärkeimmät funktiot tässä projektissa:

  • pinMode() – asettaa pinnin tuloksi tai lähdöksi
  • digitalRead() – lukee painonapin tilan
  • digitalWrite() – ohjaa LEDiä päälle tai pois
  • Serial.println() – tulostaa tietoa sarjamonitoriin debuggausta varten

Projekti 2: Lämpötilan mittaus DS18B20-anturilla

Toinen arduino nano projekti vie sinut anturien maailmaan. DS18B20 on digitaalinen lämpötila-anturi, joka mittaa lämpötilaa -55 °C:sta +125 °C:een ±0,5 °C:n tarkkuudella. Anturi käyttää 1-Wire-protokollaa, joten se tarvitsee vain yhden datapinnin.

Kytkentä

DS18B20-anturissa on kolme jalkaa. Kun katsot anturia tasainen puoli itseäsi kohti, jalat vasemmalta oikealle ovat: GND, DQ (data), VDD (käyttöjännite).

  • VDD (oikea jalka) → Arduinon 5V
  • GND (vasen jalka) → Arduinon GND
  • DQ (keskimmäinen jalka) → Arduinon D3-pinni
  • 4,7 kΩ vastus DQ:n ja 5V:n väliin (pull-up-vastus – pakollinen!)

Tärkeää: Pull-up-vastus on välttämätön 1-Wire-väylän toiminnalle. Ilman sitä anturi ei kommunikoi Nanon kanssa ja saat virheilmoituksia.

Kirjastojen asennus

Tämä projekti vaatii kaksi ulkoista kirjastoa. Asenna ne Arduino IDE:ssä: Sketch → Include Library → Manage Libraries. Hae ja asenna:

  • OneWire (tekijä: Jim Studt)
  • DallasTemperature (tekijä: Miles Burton)

Koodi

// Projekti 2: Lämpötilan mittaus DS18B20-anturilla
// Lukee lämpötilan ja näyttää sarjamonitorissa

#include <OneWire.h>
#include <DallasTemperature.h>

const int SENSOR_PIN = 3;  // DS18B20 data-pinni D3:ssa

OneWire oneWire(SENSOR_PIN);
DallasTemperature sensors(&oneWire);

void setup() {
  Serial.begin(9600);
  sensors.begin();
  Serial.println("Projekti 2: Lampotilamittaus");
  Serial.println("Luetaan DS18B20-anturia...");
  Serial.println("---");
}

void loop() {
  sensors.requestTemperatures();  // Pyydä lämpötilalukema

  float tempC = sensors.getTempCByIndex(0);  // Lue ensimmäinen anturi

  if (tempC == DEVICE_DISCONNECTED_C) {
    Serial.println("Virhe: Anturia ei loydy!");
    delay(2000);
    return;
  }

  Serial.print("Lampotila: ");
  Serial.print(tempC, 1);  // 1 desimaali
  Serial.print(" C  /  ");
  Serial.print(tempC * 9.0 / 5.0 + 32.0, 1);
  Serial.println(" F");

  delay(1000);  // Lue sekunnin välein
}

Miten koodi toimii?

Koodi käyttää kahta kirjastoa: OneWire hoitaa matalan tason kommunikaation anturin kanssa, ja DallasTemperature tarjoaa helppokäyttöiset funktiot lämpötilan lukemiseen.

sensors.requestTemperatures() lähettää käskyn anturille aloittaa mittaus. Tämän jälkeen getTempCByIndex(0) hakee ensimmäisen anturin lukeman celsiusasteina. Virheenkäsittely tarkistaa, onko anturi kytketty – jos ei, ohjelma tulostaa virheilmoituksen.

Tämä projekti opettaa sinulle arduino-ohjelmoinnin tärkeän taidon: ulkoisten kirjastojen käytön. Suurin osa Arduino-projekteista hyödyntää valmiita kirjastoja, jotka yksinkertaistavat monimutkaista kommunikaatiota anturien ja muiden komponenttien kanssa.

Projekti 3: Servomoottorin ohjaus

Kolmas arduino nano projekti tuo mukaan liikkeen. SG90-servomoottori pyörii 0–180 asteen välillä ja sitä ohjataan PWM-signaalilla. Ensin moottori pyyhkäisee automaattisesti edestakaisin, ja sen jälkeen voit ohjata sitä sarjamonitorin kautta.

Kytkentä

SG90-servossa on kolme johtoa:

  • Punainen (VCC) → Arduinon 5V
  • Ruskea/musta (GND) → Arduinon GND
  • Oranssi/keltainen (signaali) → Arduinon D9-pinni (PWM-pinni!)

Huomio: Yksittäisen SG90-servon voi kytkeä suoraan Arduinon 5V-pinniin, koska se kuluttaa noin 100–250 mA. Jos käytät useampaa servoa, tarvitset erillisen 5V-virtalähteen.

Koodi

// Projekti 3: Servomoottorin ohjaus
// Automaattinen pyyhkäisy + sarjamonitoriohjaus

#include <Servo.h>

Servo myServo;
const int SERVO_PIN = 9;  // Käytä PWM-pinniä

void setup() {
  myServo.attach(SERVO_PIN);
  Serial.begin(9600);
  Serial.println("Projekti 3: Servomoottorin ohjaus");
  Serial.println("Pyyhkaistaan 0-180 astetta...");
  Serial.println("Kirjoita kulma (0-180) ohjausta varten.");
  Serial.println("---");

  // Alkupyyhkäisy
  sweepDemo();
}

void sweepDemo() {
  // Pyyhkäise 0 -> 180 astetta
  for (int angle = 0; angle <= 180; angle++) {
    myServo.write(angle);
    delay(15);  // 15 ms per aste = sulava liike
  }
  // Pyyhkäise 180 -> 0 astetta
  for (int angle = 180; angle >= 0; angle--) {
    myServo.write(angle);
    delay(15);
  }
  Serial.println("Pyyhkaisy valmis! Syota kulma (0-180):");
}

void loop() {
  // Tarkista, onko käyttäjä syöttänyt kulman
  if (Serial.available() > 0) {
    int angle = Serial.parseInt();

    if (angle >= 0 && angle <= 180) {
      myServo.write(angle);
      Serial.print("Servo siirretty kulmaan: ");
      Serial.print(angle);
      Serial.println(" astetta");
    } else {
      Serial.println("Virhe: Syota arvo 0-180");
    }
  }
}

Miten koodi toimii?

Servo-kirjasto on Arduinon sisäänrakennettu kirjasto, joten sitä ei tarvitse asentaa erikseen. myServo.attach(9) kytkee servo-olion D9-pinniin, jonka täytyy olla PWM-yhteensopiva. Nanossa PWM-pinnejä ovat D3, D5, D6, D9, D10 ja D11.

sweepDemo()-funktio käyttää for-silmukkaa liikuttamaan servoa asteen kerrallaan 15 ms:n viiveellä. Tämä tuottaa sulavan pyyhkäisyliikkeen. Kun pyyhkäisy on valmis, loop()-funktio odottaa käyttäjän syöttämää kulmaa sarjamonitorista.

Serial.parseInt() lukee kokonaisluvun sarjamonitorista. Koodi tarkistaa, että arvo on välillä 0–180, ja siirtää servon haluttuun kulmaan. Tämä on hyvä esimerkki siitä, miten Arduino voi vastaanottaa komentoja tietokoneelta reaaliajassa.

Mitä seuraavaksi?

Kun olet saanut nämä kolme projektia toimimaan, sinulla on hyvä perusta arduino-ohjelmoinnissa. Tässä muutamia ideoita jatkoprojekteiksi:

  • Yhdistä projektit: Rakenna lämpötilaohjattu servo, joka avaa tuuletusluukun lämpötilan noustessa. Tämä yhdistää projektien 2 ja 3 opit.
  • Lisää näyttö: Kytke OLED-näyttö I2C-väylään (pinnit A4 ja A5) ja näytä lämpötilalukema suoraan näytöllä.
  • Kokeile gyroskooppia: MPU-6050 kiihtyvyysanturi- ja gyroskooppimoduuli (4,90 €) on erinomainen seuraava askel. Sillä voit rakentaa kallistusanturin tai tasapainoindikaattorin.
  • Rakenna robotti: Kahdella servolla ja yksinkertaisella rungolla voit rakentaa pienen kävelevän robotin.
  • Siirry WiFi-projekteihin: ESP32 DevKitC (WROOM-32) -ohjaimella (21,90 €) voit yhdistää projektisi internetiin ja rakentaa esimerkiksi etäluettavan lämpötilamittarin Wi-Fin ja Bluetoothin avulla.

Suositellut tuotteet näihin projekteihin

Yhteenveto: Arduino Nano -projekti on paras tapa oppia

Arduino Nano on erinomainen alusta arduino-ohjelmoinnin oppimiseen. Sen pieni koko, edullinen hinta ja koekytkentälevyyhteensopivuus tekevät siitä täydellisen valinnan aloittelijalle. Näiden kolmen projektin avulla opit digitaalisen tulon ja lähdön käytön, anturien lukemisen, kirjastojen hyödyntämisen ja servomoottorin ohjauksen – taidot, joita tarvitset lähes kaikissa Arduino-projekteissa.

ATmega328P 'Nano' -ohjain on saatavilla Protocachesta hintaan 9,90 €. Hanki samalla hyppylankoja kytkentöjä varten, niin pääset heti rakentamaan ensimmäisen arduino nano -projektisi!

👉 Tutustu koko valikoimaamme Protocachessa – löydät kaikki tarvitsemasi komponentit Arduino-projekteihin nopealla toimituksella Suomessa.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *