Etter tre uker med arduino vil jeg skrible sammen noen av erfaringene mine fra den morsomme tiden.
Hva er en Arduino?
En arduino, eller en arduino-kompatibel enhet kjører som regel på en ATMEL-prosessor. Arduino er en IDE (et utviklingsmiljø) for små mikrokontrollere. Det fins også Arduino-kloner, samt det fins porting av Arduino til andre prosessorer som for eksempel esp8266 [Ekstern lenke].
Hva er forskjellen på alle Arduinoene?
Det er mange Arduinoer og kloner i alle former fra rund til avlang, kvadratisk. Noen har mer lagringsplass enn andre, noen har flere digitale og analoge inputs, noen har innebygd motorstyring, noen har mulighet for "shields" (moduler som utvider funksjonaliteten uten å kable noe). I tillegg er det noen som er mer strømsparende enn andre, noen er raskere, noen har dedikert "krystall" for bedre tidtaking, Noen Arduinoer har USB-grensesnitt, andre krever en adapterkabel og har bare seriell innebygd. Noen har dedikert USB-interface, andre ikke.
Hva kan man koble på Arduino?
Man kan koble på veldig mye rart, fargesensorer, små oled-skjermer, lcd-skjermer, trådløs kommunikasjon (WiFi, 868Mhz osv), blåtann, MicroSD-adapter, Avstandsmålere, støvsensorer, barometriske sensorer, forskjellige typer gass-sensorer og mye annet. Det er veldig mye rart man kan koble på Arduino og mange løsninger leveres med ferdige moduler som betyr at man trenger bare å koble opp 4-6 kabler per modul. Mange moduler kobles mot analoge og/eller digitale pinner og 3V3 eller 5V. Noen kobles på i2C bussen som er en buss man kan koble flere enheter på og alle enhetene har da en unik adresse. OLED-skjermer kommer i flere former, der noen av de går på i2C. Det skal sies at i2C bussen er en anelse tregere, men for de fleste bruksområder er den bra nok. I tillegg må man være observant på at hvis man har mange sensorer på i2C, må man endre resistanseverdien for å få nøyaktig signal.
I likhet med en medalje, har også avstandssensoren en bakside. Men denne baksiden vil jeg si er fin å se på :) |
DHT11 er en temperatur og fuktsensor, men et bedre valg er nok storebroren DHT22 som er en anelse mer nøyaktig og koster ca. det samme. De bruker samme biblioteket og det ligger klart i Arduino IDE. |
Eksempelkode for å dimme ledlampe basert på lys i rommet:
int measureLightPin = 5; // Analog pin for lyssensorint ledPin=13; // led pin (innebygget led i Arduinoen)float pwm = 0; // flyttallsvariabel for pulsviddemodulasjon
void setup() {
}
void loop() { // hvert sekund
static unsigned long lastTime = millis();
if (millis() - lastTime >= 1000) {
lastTime = millis();
int l = analogRead(measureLightPin); // les lysnivå (ca. 0-1000)
pwm = (l / 4); // Del på 4 for å få ca 1:1 mellom avlest lys og maks ledlysstyrke (1000/255 = 3,92 ~~ 4)
// dim led etter avlest lys
analogWrite(ledPin, pwm);
}
}
Hvordan er det å jobbe med Arduino?
Det er egentlig veldig enkelt så fremt man velger en av de som har USB-grensesnitt. Maskinen finner drivere selv og Arduino IDE finner riktig COM-port. Man velger så COM-port og velger type arduino. Deretter kan man enten kjøre en av eksempelkodene, definere opp egne pins og teste, åpne konsollet og lese av verdier eller se på LED som dimmes for eksempel.
Man kan også bruke biblioteker fra tredjeparter som Adafruit, Sparkfun og andre. Man kopierer da inn biblotekene enten ved å ta sketch > import zip, eller kopiere de via utforskeren. Hvis man kopierer inn bibliotekene selv, må de legges på: ...\Arduino\libraries\.
Man kan også bruke biblioteker fra tredjeparter som Adafruit, Sparkfun og andre. Man kopierer da inn biblotekene enten ved å ta sketch > import zip, eller kopiere de via utforskeren. Hvis man kopierer inn bibliotekene selv, må de legges på: ...\Arduino\libraries\.
I mange tilfeller ligger bilbioteker på github og har gjerne en -master ending, denne må fjernes fra biblitekenes mappenavn når de legges inn utpakket i libraries-mappen. De fleste bibliotekene har eksempelkode.
Alt i alt gikk det meste fint, det eneste man må være litt observant på er at Arduino Leonardo og Arduino Romeo er spesielle i måten USB virker på. Det er en virtuell ekstra Serial Port, som betyr at vanlig Serial ikke virker ut mot for eksempel XRF trådløs eller eventuell WiFi. Man må da bruke Serial1. Det er jo for det meste uproblematisk, men noen biblioteker er hardkodet for å kjøre mot Serial. Man kan dog skrive om på bibliotekene, man kan kopiere de opp for å lage egne versjoner osv. Så det er egentlig mer en ting å være observant på, enn at det er et problem sånn sett.
Når man har lekt litt med Arduino IDE og sett på litt sensorer, osv. tar det ikke mange sekunder å lage noe. Man kunne i teorien laget et dukkehus med lysstyring, ringeklokke osv. på veldig kort tid! Man kan lage alt mulig annet også. Jeg har en Arduino som kommuniserer med en Rasberry Pi over 868 Mhz (XRF), som sender videre data til Firebase skydatabase. Jeg kommer nok til å skrive litt mer om det prosjektet en annen gang.
Ingen kommentarer:
Legg inn en kommentar