• Nu S-Au Găsit Rezultate

1. Arduino – Introducere

N/A
N/A
Protected

Academic year: 2022

Share "1. Arduino – Introducere"

Copied!
94
0
0

Text complet

(1)

1. Arduino – Introducere

The sad story of Hernando Barragán Facultatea de Informatică – Univ. “Al. I. Cuza” Iaşi

(2)

Arduino / Wiring – scurtă istorie

Cosmin Vârlan – Facultatea de Informatică 2016

Hernando Barragán în 2003 a început un proiect denumit Wiring ca şi disertaţie la IDII (Interaction Design Institute Ivrea), în Italia sub coordonarea lui Massimo Banzi şi a lui Casey Reas (Processing)

Scopul – de a simplifica viaţa celor ce doresc să o facă pe electronişti şi nu au habar despre domeniu.

Lucrarea lui de disertaţie o găsiţi aici (chiar daţi click):

http://people.interactionivrea.org/h.barragan/thesis/thesis _low_res.pdf

Dezvoltarea Wiring a continuat la Universidad de Los Andes în Columbia unde a predat Interaction Design.

https://arduinohistory.github.io/

(3)

Wiring – elementele de bază

Simple integrated development environment (IDE), based on the Processing.org IDE running on Microsoft Windows, Mac OS X, and Linux to create software programs or “sketches”1, with a simple editor

Simple “language” or programming “framework” for microcontrollers

Complete toolchain integration (transparent to user)

Bootloader for easy uploading of programs

Serial monitor to inspect and send data from/to the microcontroller

Open source software

Open source hardware designs based on an Atmel microcontroller

(4)

Primul Wiring – Parallax Javelin Stamp microcontroller

Cosmin Vârlan – Facultatea de Informatică 2016

Dar Parallax era tehnologie proprietară…. 

(5)

Wiring 2.0 – Atmel ARM AT91R40008

(6)

Wiring 3.0 – Atmel Atmega128

Cosmin Vârlan – Facultatea de Informatică 2016

A utilizat doua placi de dezvoltare:

Atmel STK500 cu suport pentru Atmega128 respectiv MAVRIC de la BDMICRO Pentru asta deja exista un uploader de programe uşor

de utilizat (dezvoltat de Brian Dean)

(7)

Wiring 3.0 – Atmel Atmega128

Încă de la această versiune s-a testat varianta finala a

APIului şi a fost scris “Blink” – exemplu care este şi acum în chitul Arduino.

Au fost facute exemple pentru LCDuri, comunicare serială, servomotoare, etc.

În martie 2004 au fost fabricate 25 de PCBuri Wiring (de catre SERP şi plătite de către IDII).

O aceeaşi persoană a lipit toate piesele pe cele 25 de plăci.

(8)

Cosmin Vârlan – Facultatea de Informatică 2016

(9)

Continuarea…

În 2004 Hernando Barragán s-a mutat în Columbia.

IDII au hotărât să mai producă 100 de plăci Wiring pentru cursul de Physical Computing. 10 plăci au fost trimise în Columbia.

În toamna 2004 a început primul curs, proiect coordonat de 4 membri: Massimo Banzi, Heather Martin, Yaniv Steiner, Reto Wettach.

16 Decembrie 2004, Bill Verplank a trimis un email către Hernando Barragán în care scria:

(10)

Cosmin Vârlan – Facultatea de Informatică 2016

[The projects] were wonderful. Everyone had things working. Five of the projects had

motors in them! The most advanced (from two MIT grads - architect and

mathematician) allowed drawing a profile in Proce55ing and feeling it with a wheel/motor run by Wiring…

It is clear that one of the elements of success was [the] use of the Wiring board.

Le puteţi vedea şi voi la adresa: https://arduinohistory.github.io/

(…de unde am şi aceste informaţii).

(11)

Continuarea…

În Mai 2005, Hernando Barragán a contactat Advanced Circuits (USA) care i-au facut 200 de platforme Wiring.

Acestea au fost distribuite. La sfârşitul lui 2005 Wiring era utilizat în majoritatea facultăţilor din lume pentru cursuri similare (Physical Computing).

Totuşi … Wiring avea să moară din cauza costurilor mari de producţie (~60$).

În 2005 Massimo Banzi, David Mellis (student la IDII) şi David Cuartielles au construit o variantă ce avea un microcontroller mai ieftin ATmega8. Atunci au făcut

(12)

Cosmin Vârlan – Facultatea de Informatică 2016

(13)
(14)

Hernando Barragán

Cosmin Vârlan – Facultatea de Informatică 2016

(15)

https://arduinohistory.github.io/

(16)

Specificaţii Arduino

Procesorul funcţionează la 5V.

Limitele recomandate a voltajului pentru Arduino sunt de 7-12V dar poate opera până la 6-20V.

Curentul pentru pinii I/O: 20mA – 40mA

Curentul pentru 3.3V: 50mA

Memorie Flash – utilizată pentru a memora programul ce trebuie rulat (între 32K – 256K)

Memorie SRAM – echivalentul RAM (2K – 8K)

Memorie EEPROM – pentru a reţine informaţii (microHDD: 1K – 4K)

CosminVârlan – Facultatea de Informatică 2016

(17)

Variante de Arduino - UNO

Cel mai popular:

- CPU (ATmega328P): 16Mhz - 32KB Flash (0.5KB bootloader) - 2KB SRAM

- 1KB EEPROM

- 14 pini digitali, 6 PWM

- 6 pini pentru intrări analogice Detalii complete la:

https://www.arduino.cc/en/Main/ArduinoBoardUno

(18)

Variante de Arduino – MEGA

Cosmin Vârlan – Facultatea de Informatică 2016

Un Arduino steroidizat:

- CPU (ATmega1280): 16Mhz -128KB Flash (4KB bootloader) - 8KB SRAM

- 4KB EEPROM

- 54 pini digitali, 15 PWM

- 16 pini pentru intrări analogice Detalii la:

https://www.arduino.cc/en/Main/ArduinoBoardMega

(19)

Variante de Arduino - NANO

Frăţiorul “mai mic” al familiei Arduino:

- CPU: ATmega168 sau Atmega328: 16Mhz - 16 sau 32KB Flash (2KB bootloader)

- 1 sau 2KB SRAM

- 512B sau 1KB EEPROM - 14 pini digitali, 6 PWM

- 8 pini pentru intrări analogice Detalii la:

https://www.arduino.cc/en/Main/ArduinoBoardNano

(20)

Lilypad, Mini, Leonardo, YUN, Lilytiny

Cosmin Vârlan – Facultatea de Informatică 2016

(21)

Lylipad - 

(22)

Arduino

Cosmin Vârlan – Facultatea de Informatică 2016

Pinii digitali sunt utilizaţi pentru a oferi un feedback în lumea reală: aprinde un led, bec, învârti un motoraş, afişa ceva pe un ecran etc.

Pinii digitali de tip PWM (pulse width modulation) sunt utilizaţi pentru a emula un semnal analogic (nu insistăm, vom avea un curs special pentru asta). Fără aşa ceva ledul ar putea fi doar aprins/stins. Cu PWM putem să facem un efect de “fade”.

Pinii analogici sunt utilizaţi pentru a prelua informaţie din mediul înconjurător – dar discretizată (de exemplu, deşi sunt o infinitate de niveluri de la lumină la întuneric,

Arduino vede doar 1024 – totuşi suficiente).

(23)

Fiind Open Source, puteţi să îl construţi

(24)

Cosmin Vârlan – Facultatea de Informatică 2016

(25)

Pentru a interacţiona cu mediul fizic, are

nevoie de o serie de transducers…

(26)

2. Senzori

Facultatea de Informatică – Univ. “Al. I. Cuza” Iaşi

(27)

Senzori (ce pot fi conectaţi la pinii analogici)

Câteva exemple de senzori …

Temperatură, umiditate, barometrici (presiune atmosferică), altitudine, ploaie

Lumină, culoare (RGB)

Sunet, vibraţii

Distanţă [ultrasonic, IR, laser]

Diverse tipuri de gaze

(28)

Senzori (ce pot fi conectaţi la pinii analogici)

Cosmin Vârlan – Facultatea de Informatică 2016

Accelerometri, magnetism (polul nord)

Torsiune, greutate

Amprentă

Umezeală pământ (soil moisture)

Seismic (geophone)

RFID reader

Bătăile inimii

Prezenţă (PIR)

Recunoaştere comenzi vocale (voice recognition)

(29)

Senzori: principiul de funcţionare

Senzorii pasivi nu necesită alimentare cu energie

electrică deoarece, atunci când sunt excitaţi de un stimul extern, produc singuri energie electrică. Prin masurarea cantităţii de energie produsă se poate stabili puterea stimulului aplicat (de exemplu o celulă fotovoltaică va produce mai mult curent când e soare faţă de când e înnourat).

Uneori, curentul produs este foarte mic si pentru a fi

amplificat, si acesti senzori vor fi alimentaţi (dar nu pentru

(30)

Senzori: principiul de funcţionare

Cosmin Vârlan – Facultatea de Informatică 2016

Senzorii activi necesită alimentare cu energie electrică deoarece ei au proprietatea de a-şi mări sau micşora

rezistenţa atunci când stimulul extern este aplicat.

De exemplu, un fotoresistor, atunci când este luminat, îşi poate scădea rezistenţa de la 10kΩ pana la 1kΩ. În funcţie de cât de mare a fost căderea, se poate stabili cantitatea de lumină ce cade pe suprafaţa senzorului. Dacă aveţi un telefon care îşi măreşte luminozitatea în soare, cu

siguranţă utilizează un fotorezistor.

(31)

Senzori - debouncing

Unii senzori se autocalibrează la începutul utilizării (de exemplu pentru a detecta creşterea sau scăderea luminii, trebuie să măsor lumina iniţială şi să o consider drept

reper).

Alţi senzori au nevoie de “debouncing”

deoarece se pot activa chiar şi când stimulul nu este prezent: Dacă avem un senzor de înclinare într-o maşină ce merge pe un drum de ţară…

Pentru siguranţă senzorul este măsurat de mai multe ori

(32)

Senzori - debouncing

Cosmin Vârlan – Facultatea de Informatică 2016

Aceeasi problema poate apare şi la apăsarea unei taste mecanice (mechanical keyboard).

Ideea este că la apăsare, mecanismul nu face un singur contact ci din cauza vibraţiilor produse, în timp de o milisecundă contactul se închide/deschide de mai multe ori.

Debouncing este mecanismul prin care un senzor este citit pentru o perioadă mai îndelungată de timp (de exemplu pt 2ms) şi la sfarşit se decide dacă este ON sau OFF.

De obicei apare la senzorii de tip ON/OFF.

(33)

Programarea

Majoritatea senzorilor au deja biblioteci (eng. libraries) construite de producătorii lor.

Nu ne interesează să programaţi senzorii de la 0. Puteţi lua bibliotecile de oriunde doriţi. Singurul caz în care probabil ar trebui să programaţi un senzor de la 0 ar fi dacă inventaţi voi unul… [mamă ce mi-ar place aşa ceva]

Senzor simplu: sensorValue = analogRead(sensorPin);

(34)

Senzori ce măsoară distanţa

Cosmin Vârlan – Facultatea de Informatică 2016

Laser Fascicul lumină Fascicul IR

Sunet

(35)

Senzor de tip cameră

(36)

Senzor de prezenţă Uşă deschisă (debouncing)

Cosmin Vârlan – Facultatea de Informatică 2016

(37)

Senzori pentru mişcare

Gyro / Accelerometru / Senzori gesturi

(pt obiecte la 25cm distanţă)

(38)

Senzor pentru torsiune / forţă

Cosmin Vârlan – Facultatea de Informatică 2016

(39)

Senzori contractere muşchi :D

(40)

Senzor puls – măsoară numărul bătăilor pe minut

Cosmin Vârlan – Facultatea de Informatică 2016

…sigur cursul de DSFUM vă face inima să “alerge” ;)

(41)

Monitor Inimă (ECG - Electrocardiogramă)

Se bazează pe sunetul creat de inimă. Poate izola şi alte sunete.

PADs

(42)

Senzor EEG (alfa waves, beta waves etc.)

Cosmin Vârlan – Facultatea de Informatică 2016

(43)

Scannere de Potenţiometru

amprentă de tip touch

(44)

Microfon, detector sunet, recunoaştere vocală, knock

Cosmin Vârlan – Facultatea de Informatică 2016

(45)

IR (telecomandă)

(46)

RGB + Gesture

Cosmin Vârlan – Facultatea de Informatică 2016

Senzorul folosit de Samsung Galaxy S5 (recunoaşte gesturi, culoarea (RGB), proximity, măsoară lumina ambientală).

(47)

Senzor de greutate

Ca cel din cântarele de baie. [nu vă apucaţi să le

dezmembraţi după senzori – decât dacă aveţi ciudă pe ele]

(48)

Cosmin Vârlan – Facultatea de Informatică 2016

Lumină, UV Temperaturi mari

Masoara temperaturi foarte mari (-200, 700) cu precizie de 2 grade.

(49)

Temperatură, termometru infraroşu

(50)

Umiditatea solului Cantitate lichid în vas

Cosmin Vârlan – Facultatea de Informatică 2016

(51)

Staţie meteo Shield “weather”

Umiditate Temperatură Viteză, direcţie vânt,

(52)

Senzor de temperatură şi umiditate

Cosmin Vârlan – Facultatea de Informatică 2016

(53)

Senzori presiune atmosferică (din nou)

Poate măsura altitudinea (cu o precizie de 1m) sau cât de tare poţi sufla într-o sticlă :D

(54)

Senzor ploaie Activitate seismică

Cosmin Vârlan – Facultatea de Informatică 2016

…de fapt este un microfon

supersensibil care “ascultă” pământul.

(55)

Geiger Counter – măsoară radiaţiile

(56)

Senzor de curent (neinvaziv)

Cosmin Vârlan – Facultatea de Informatică 2016

(57)

Senzori gaze

Monoxid de carbon MQ3 – alcool în aer GAZ metan (MQ4) Hidrogen (MQ8) LPG (MQ6)

(58)

Senzor optic pentru praf (lumină + măsurătoare)

Cosmin Vârlan – Facultatea de Informatică 2016

(59)

Întrerupător optic

(60)

Cititor cartele magnetice / RFID

Cosmin Vârlan – Facultatea de Informatică 2016

(61)

Scanner cod de bare GPS

(62)

Senzor PH

Cosmin Vârlan – Facultatea de Informatică 2016

(63)

Oxigenul din lichide (măsuraţi dacă o să

moară sau nu peştişorul din acvariu)

(64)

Conductivitatea electrică a unei substanţe

Cosmin Vârlan – Facultatea de Informatică 2016

(65)

Touch Screen

(66)

Deşi nu chiar “senzori”, se conectează la pinii analogici şi:

Cosmin Vârlan – Facultatea de Informatică 2016

(67)

RTC WII Nunchack

Există biblioteci ce facilitează

comunicarea

telecomenzilor Wii cu Arduino.

(68)

Tastaturi şi mouseuri

Cosmin Vârlan – Facultatea de Informatică 2016

Aici trebuie sa îl mai chinuim pe Vlad :D

Nu pun poze cu tastaturi şi mouşi că ştiţi cum arată.

Echipamentele pe PS2 sunt mai uşor de utilizat cu

Arduino (cele pe USB de obicei au moduri diferite de a transmite informaţia şi aceasta este “tradusa” in windows de către un driver specific tastaturii)

https://liudr.wordpress.com/libraries/phi_interfaces/

Pentru tastaturi PS2 aveţi o librarie deja construită:

http://playground.arduino.cc/Main/PS2Keyboard

Şi alt link interesant:

http://playground.arduino.cc/Main/InterfacingWithHardware

Din DEX !

(69)

3. Actuatori

Facultatea de Informatică – Univ. “Al. I. Cuza” Iaşi

(70)

Actuatori

Cosmin Vârlan – Facultatea de Informatică 2016

Pentru a oferi un feedback în lumea reală, Arduino va putea comanda diverse echipamente (mai mult sau mai puţin complexe). Să vedem câteva dintre acestea…

(71)

Actuatori vizuali - Leduri

(72)

Actuatori vizuali – Leduri / VGA out

Cosmin Vârlan – Facultatea de Informatică 2016

(73)

Actuatori vizuali - ecrane

(74)

Actuatoare – Audio (MP3 player)

Cosmin Vârlan – Facultatea de Informatică 2016

(75)

Actuatoare – Audio (Radio) / Buzzer

(76)

Actuatoare – Audio (sintetizator voce)

Cosmin Vârlan – Facultatea de Informatică 2016

(77)

Actuatoare – Reţea (Ethernet / WiFi)

(78)

Actuatoare – Telefonie (GSM shield)

Cosmin Vârlan – Facultatea de Informatică 2016

(79)

Actuatoare – mecanice (Imprimante 3D)

(80)

Actuatori – pentru putere mare - relee

Cosmin Vârlan – Facultatea de Informatică 2016

(81)

4. IDE

Facultatea de Informatică – Univ. “Al. I. Cuza” Iaşi

(82)

Arduino - IDE

(83)

Arduino - IDE

Secţiune de configurări.

Acest cod va fi rulat o singură dată, la început.

(84)

Arduino - IDE

Codul din această secţiune va fi rulat la nesfârşit sau

până când este oprită alimentarea.

(85)

Arduino - IDE

Când compilaţi, aici vă sunt afişate erorile.

(86)

Arduino - IDE

Tipul plăcii Arduino conectată precum şi portul său serial.

(87)

Arduino - IDE

Dacă nu a nimerit tipul plăcii,

(88)

Arduino - IDE

Dacă nu a nimerit portul, îl puteţi schimba din Tools -> Port

(89)

Arduino - IDE

(90)

Arduino trimitere date prin portul serial

Cosmin Vârlan

Baud

(91)

Deschide monitorul serial…

Adică ferastra asta.. :D

Acelasi Baud (9600)

(92)

Cosmin Vârlan

Exemple…

Vă invităm pe voi să descoperiţi ce fac restul meniurilor…

(93)

Arduino API:

https://www.arduino.cc/en/Reference/HomePage

(94)

CosminVârlan – Facultatea de Informatică 2016

Referințe

DOCUMENTE SIMILARE

O stare este mai bună dacă deschide mai multe posibilităţi de câştig până la sfârşitul jocului.. Un exemplu de funcţie

Dacă expresia simbolică depinde de mai mult de o variabilă şi variabila pentru care se face substituţia nu este specificată, substituţia se face pentru variabila

este o soluţie a sistemului (2) dacă şi numai dacă este un vector propriu pentru matricea corespunzator valorii proprii. Matrice fundamentală pentru sisteme de

Dacă expresia simbolică depinde de mai mult de o variabilă şi variabila pentru care se face substituţia nu este specificată, substituţia se face pentru variabila

Versiunea condiţionată a formulei probabilităţii totale - exemplu Exemplu. Se extrage la întâmplare un zar din urnă şi acest zar este aruncat o dată. Dacă se obţine numărul

Pentru producerea razelor X este nevoie de un tub de raze X care este alimentat de circuite electrice adecvate prin intermediul transformatorilor şi în care se produc

Pentru a înţelege, în contextul total, o întindere nenucleară de text ce este descendent pe dreapta al nodului părinte, la secvenţa de unităţi necesară

În acest caz este mai util ca oricând un film de 10-15 min., care prin imagini din viaţa cotidiană şi prin desene animate să pregătească terenul pentru înţelegerea noţiunii