Arduino va començar l’any 2006 com un projecte dels estudiants de l’institut IVREA a Itàlia. En aquell temps els estudiants utilitzaven el microcontrolador BASIC Stamp, que costava uns 100 dòlars, per aquest motiu Massimo Banzi i Hernando Barragan van desenvolupar una plataforma més econòmica i de codi lliure. Actualment les plaques d’Arduino es poden adquirir per entre uns 10 i 30 dòlars.
En David Cuartielles, expert en circuits i computadores es va afegir més endavant al “Team Arduino”. Va ajudar a Banzi a millorar la interfície de maquinari, afegint els microcontroladors necessaris per donar suport i memòria al llenguatge de programació per manipular aquesta plataforma.
Les plaques d’Arduino tenen una interfície d’entrada on se li poden connectar perifèrics, aquests aporten informació que el microcontrolador processa. Finalment hi ha una interfície de sortida on també se li connecten perifèrics i aquests reben la informació processada del microcontrolador i actuen en conseqüència.
Arduino té diferents tipus de productes:
- Les plaques de desenvolupament, que és el que l’usuari programa.
- Les “shield” que són plaques que permeten ampliar les funcions de la placa, com ara afegir-li WiFi o Ethernet.
- Els kits, que inclouen una placa i diversos components que permeten, amb una guia pas a pas, realitzar diversos projectes.
- Accessoris, que van des de una pantalla LCD a un adaptador USB mini.
- Finalment una impressora 3D.
Els avantatges d’Arduino en comparació altres plaques programables són:
- El seu baix cost.
- La possibilitat de no només operar amb Windows sinó que també amb Macintosh i Linux.
- El seu entorn es versàtil, ja que es fàcil d’utilitzar pel que el fa accessible a principiants, però també es suficientment potent com perquè professionals puguin realitzar els seus projectes.
- Al ser codi obert hi ha molta informació referent a la programació.
Arduino UNO (https://www.arduino.cc/en/Main/ArduinoBoardUno) és la primera placa que va sortir al mercat i una de les més bàsiques, es basa en un microcontrolador Atmel ATmega328P. Les especificacions bàsiques d’aquesta placa, que és la utilitzada en el projecte, són les següents
Microcontrolador | ATmega328P |
Voltatge de treball | 5V |
Voltatge d’alimentació (recomenat) | 7-12V |
Voltatge d’alimentació (limits9 | 6-20V |
Pins digitals | 14 (dels quals 6 són sortides PWM) |
Pins analògics (entrades) | 6 |
Intensitat per a els pins d’entrada o sortida | 20 mA |
Intensitat per a el pin de 3,3V | 50 mA |
Memòria Flash | 32 KB |
SRAM | 2 KB |
EEPROM | 1 KB |
Velocitat del rellotge | 16 MHz |
LED_BUILTIN | 13 |
Llargada | 68.6 mm |
Amplada | 53.4 mm |
Pes | 25 g |
Per programar la placa d’Arduino s’ha de descarregar el seu programa de la pàgina web.
https://www.arduino.cc/en/Main/Software#
Es programa en C++, a continuació hi ha explicades les diferents parts del programa, els diferents tipus de variables, les estructures bàsiques, les funcions bàsiques, i que són les llibreries, entre d’altres.
A l’obrir un full nou apareixen ja escrites dues funcions, el void setup i el void loop. S’escriu void davant d’una funció que no s’espera que torni cap dada. El setup s’executa només una vegada a l’encendre la placa i dintre s’ha de declarar si els pins utilitzats són d’entrada o de sortida, la velocitat de comunicació entre el port sèrie i la placa, entre d’altres.
El loop és la part del programa que s’anirà repetint constantment i on per tant s’escriuran totes les ordres que es vol que la placa s’executi.
Hi ha molts tipus de variables:A la part superior, abans del setup es declaren les variables globals, són variables que es poden utilitzar a qualsevol part del programa, d’altre manera només es podrien utilitzar en la funció on es declaressin.
- boolean: és un tipus de variable que només pot estar en dos estats, true o false.
- char: aquesta variable emmagatzema un caràcter, el caràcter ha d’anar escrit de la manera següent: ‘A’.
- int: és una variable que serveix per emmagatzemar números.
- string: aquesta variable emmagatzema cadenes de caràcters
- array: un array és un espai de la memòria on es guarden un seguit de variables de manera consecutiva, cada variable té una posició assignada dins el array.
Per poder fer que els diferents elements interactuïn hi ha estructures que ho permeten:
- if (condició): és un condicional que comprova si la condició imposada es compleix, de ser així s’executa el que hi ha a dins del if, en cas contrari no ho fa.
- for (inicialització; condició; increment): a l’arribar al for s’inicialitza una variable a un valor predeterminat i si es compleix la condició s’executa el que hi ha dins, quan s’acaba s’incrementa, i altre cop es comprova si es compleix la condició i així successivament fins que ja no compleixi la condició, el programa segueix el seu curs.
- while (condició): s’executa el que hi ha dins fins que la condició es deixa de complir.
Per fer comparacions entre variables o per assigna’ls-hi un valor s’ha d’utilitzar una sintaxis precisa:
- =: assigna el valor de la dreta en la variable de l’esquerra, aquest valor que es col·loca a la dreta pot ser explícit (escriure directament un nombre) o el valor d’una altre variable o el que retorna una funció.
- +: serveix per sumar dos quantitats, el resultat s’ha de guardar en una variable.
- -: serveix per restar dues quantitats, el resultat s’ha de guardar en una variable.
- *: serveix per multiplicar dues quantitats, el resultat s’ha de guardar en una variable.
- /: serveix per dividir dues quantitats, el resultat s’ha de guardar en una variable.
- ==: compara si el que s’escriu a la dreta i a l’esquerra són iguals.
- !=: compara si el que s’escriu a la dreta i a l’esquerra són diferents.
- <: compara si el que s’escriu a la dreta és més petit que el de l’esquerra.
- >: compara si el que s’escriu a la dreta és més gran que el de l’esquerra.
- <=: compara si el que s’escriu a la dreta és més petit o igual que el de l’esquerra.
- >=: compara si el que s’escriu a la dreta és més gran o igual que el de l’esquerra.
- ++: suma 1 a la variable de la dreta, equival a escriure , sent la variable i: i=i+1.
Per variar l’estat o conèixer l’estat d’un pin s’utilitzen les funcions següents:
- pinMode (pin, mode): aquesta funció serveix per configurar cada tipus de pin, els paràmetres d’entrada són el numero del pin i el mode, que aquest pot ser INPUT (entrada), OUTPUT (sortida) i INPUT_PULUP.
- digitalWrite (pin, estat): modifica l’estat d’un pin digital, els paràmetres d’entrada són el numero de pin i el valor que se li vol introduir, al ser digital els valors només poden ser 0 o 1, també es pot escriure LOW i HIGH respectivament.
- digitalRead (pin): la funció et retorna la lectura del pin desitjat.
- analogWrite (pin, valor): modifica l’estat d’un pin PWM, els pins analògics només poden ser d’entrada, per poder enviar una senyal analògica a un dispositiu extern, hi ha uns pins digitals que també són PWM i permeten la sortida d’informació analògica. Els paràmetres d’entrada són el numero de pin i el valor que se li vol introduir, es poden introduir valors entre 0 i 255.
- analogRead (pin): la funció et retorna la lectura del pin desitjat.
Per fer que el programa s’aturi durat un temps determinat es fa servir:
- delay (milisegons): fa que el programa s’aturi en aquell punt durant un temps determinat, el temps que s’introdueix es fa en milisegons.
Per consultar més expressions visitar:
https://www.arduino.cc/en/Reference/HomePage
Una llibreria és un seguit de codis addicional que fa més senzilla la utilització de sensors, mòduls, etc. Hi ha llibreries que venen instal·lades per defecte quan s’instal·la Arduino, altres es poden descarregar d’internet, i també l’usuari es pot crear les seves pròpies llibreries.
Una llibreria ha de tenir com a mínim dos fitxers. Un que acabi en .h i allà ha d’haver-hi una llista del que fa la llibreria, i un altre fitxer que la seva extensió sigui .cpp que és el fitxer que té el codi en si.
Hi ha dues maneres d’instal·lar una nova llibreria, amb diferents efectes. Es pot copiar el fitxer .cpp i el .h a la carpeta de programa on es vulgui utilitzar la llibreria. En aquest cas s’ha d’incloure d’aquesta manera obligatòriament: #include “nom_de_la_llibreria”. La llibreria només tindrà efecte en aquell programa, i quan s’obri el programa a la pestanya del costat es podran modificar els dos fitxers de la llibreria.
Una altra manera és fer que la llibreria es pugui utilitzar des de qualsevol programa, sempre i quan al principi s’hi inclogui. S’ha de copiar una carpeta amb el nom de la llibreria que inclogui els dos fitxers a la carpeta on s’hagi instal·lat Arduino, i dins d’aquesta a la carpeta de libraries.
Per consultar més detalls de les llibreries: