0% au considerat acest document util (0 voturi)
34 vizualizări58 pagini

Arduino 5

Încărcat de

Mihail Negoita
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
34 vizualizări58 pagini

Arduino 5

Încărcat de

Mihail Negoita
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd

1.

SoC: Arduino
(System on a Chip)
Facultatea de Informatică – Univ. “Al. I. Cuza” Iaşi
SoC
 Este un sistem complet (de obicei un calculator) construit
într-un singur procesor: toate componentele sistemului
(CPU, RAM, porturi I/O etc.).
 De ex: procesoarele telefoanelor (ARM).
 Consumă puţin curent pentru a funcţiona.

Apple A5 SoC

Cosmin Vârlan – Facultatea de Informatică 2016


AMD Am286ZX/LX,
SoC based on80286

SoC – ce conţin
https://en.wikipedia.org/wiki/System_on_a_chip

• Microcontroller / microprocesor / digital signal


processor (DSP) sau mai multe (MPSoC)
• Blocuri de memorie: ROM, RAM, EEPROM, Flash
• Metode de măsurare a timpului (de ex. oscilatoare)
• Periferice: ceasuri reale (ora corectă), ceasuri ce
menţin timpul de la pornire, power-on-reset
(sesizeaza curentul şi duc sistemul într-o anumită
stare), watch dog timeout (pt erori).

Cosmin Vârlan – Facultatea de Informatică 2016


SoC – ce conţin
• Interfeţe externe: USB, FireWire, Ethernet, USART
(Universal Synchronous/Asynchronous
Receiver/Transmitter – portul serial cel vechi),
SPI (Serial Peripheral Interface)

• Interfeţe ADC / DAC (analog – digital converter şi


invers)
• Circuite pentru managementul tensiunii.

Cosmin Vârlan – Facultatea de Informatică 2016


https://en.wikipedia.org/wiki/System_on_a_chip

Cosmin Vârlan – Facultatea de Informatică 2016


JTAG = Joint Test Action Group

Realizează verificarea automată a


CHIPului.
La PCuri: Power On Self Test
https://en.wikipedia.org/wiki/JTAG

"ARMSoCBlockDiagram" by en:User:Cburnett - Own work in


Inkscape based on en:Image:ARMSoCBlockDiagram.gif.
Licensed under CC BY-SA 3.0 via Commons -
https://commons.wikimedia.org/wiki/File:ARMSoCBlockDiagra
m.svg#/media/File:ARMSoCBlockDiagram.svg

Cosmin Vârlan – Facultatea de Informatică 2016


Procesorul de tip ARM
RISC = Reduced Instruction Set Computing
CISC = Complex Instruction Set Computing
RISC – au low consumption la energie in comparatie cu
CISC care consuma destul de mult. Scopul însă este diferit
şi e ok. Multe companii (precum INTEL) au adus CISC-ul la
nivele de consum foarte mici: Advanced RISC Machine

Citiţi mai multe (dacă vreţi) la:


https://scottiestech.info/2011/11/24/what-is-an-arm-
processor-and-whats-the-big-deal/

"ARMSoCBlockDiagram" by en:User:Cburnett - Own work in


Inkscape based on en:Image:ARMSoCBlockDiagram.gif.
Licensed under CC BY-SA 3.0 via Commons -
https://commons.wikimedia.org/wiki/File:ARMSoCBlockDiagra
m.svg#/media/File:ARMSoCBlockDiagram.svg

Cosmin Vârlan – Facultatea de Informatică 2016


Regulator de tensiune – reduce
+/- pentru ca procesorul să
primească o tensiune constantă.

"ARMSoCBlockDiagram" by en:User:Cburnett - Own work in


Inkscape based on en:Image:ARMSoCBlockDiagram.gif.
Licensed under CC BY-SA 3.0 via Commons -
https://commons.wikimedia.org/wiki/File:ARMSoCBlockDiagra
m.svg#/media/File:ARMSoCBlockDiagram.svg

Cosmin Vârlan – Facultatea de Informatică 2016


ASB = Advanced System Bus
AHB = Advanced High-
performance Bus
APB = Advanced Peripheral Bus

Diverse tipuri de memorie. (EBI=


External Bus Interface, utilizat
pentru a conecta stickuri de ex.)

"ARMSoCBlockDiagram" by en:User:Cburnett - Own work in


Inkscape based on en:Image:ARMSoCBlockDiagram.gif.
Licensed under CC BY-SA 3.0 via Commons -
https://commons.wikimedia.org/wiki/File:ARMSoCBlockDiagra
m.svg#/media/File:ARMSoCBlockDiagram.svg

Cosmin Vârlan – Facultatea de Informatică 2016


Periferal Input / Output

Cosmin Vârlan – Facultatea de Informatică 2016


Application Specific Logic –
ajută la particularizarea
dispozitivului pentru ce are
nevoie să facă cel mai des. De
exemplu un Router ar dori să
poată afla rapid adresle IP a
pachetelor…

Cosmin Vârlan – Facultatea de Informatică 2016


Diverse module:
-Medium Access Control (Eth)
-Universal Synchronous /
Asynchronous Receiver /
Transmitter
-Serial Peripheral Interface
- 2 Wire interface
-Analog to Digital Converters
Etc.

Cosmin Vârlan – Facultatea de Informatică 2016


Controlere pentru tensiune,

oscilatoare, phase-locked loop


(diferenţa între oscilator şi un
clock extern),

controller pentru reset, brownout


(cadere intentionala sau
neintentionala a tensiunii), power
on reset,

Sistem de intreruperi, watchdog


timer, ceas de timp real

Cosmin Vârlan – Facultatea de Informatică 2016


Software
 Elementelehardware descrise trebuie controlate prin
intermediul software. De exemplu, trebuie implementate
standarde cum ar fi cel al comunicării prin USB.

 Toateprocesoarele trebuie verificate (acţiune ce costă


aprox 70% din designul chipului)

 Deseori se folosesc FPGA (Field-programmable gate array)


– Ex: HoMade – FPGA care creeaza core-uri la runtime,
alocând sau dealocând resurse hardware în funcţie de
necesităţi.

Cosmin Vârlan – Facultatea de Informatică 2016


SoC
Avantajele utilizării SoC: consum mic de
energie, costuri de producţie mici, fiabilitate
crescută comparativ cu chipurile pe care le
înlocuiesc [partea cu costurile este discutabilă]

Unde le găsiţi: Telefoane, Televizoare inteligente,


Raspberry Pi, Arduino, Ceasuri Inteligente,
Routere (unele), Chrome Cast (sau asemenea),
Apple TV (A5), etc.

Cosmin Vârlan – Facultatea de Informatică 2016


ATmega 168/328

Cosmin Vârlan – Facultatea de Informatică 2016


AVR
XTAL = crystal = osciloscilator

ADC = Analog / Digital conv.

AREF = analog reference (cât


este voltajul de intrare pe pinii
analogici (default 5V)

http://tronixstuff.com/2013/12/12/
arduino-tutorials-chapter-22-aref-pin/

AVCC = pinul cu care se alimen-


tează din exterior convertorul
Analog / Digital [uneori
convertorul analog/digital
consumă mai mult curent şi
trebuie alimentat separat]

Cosmin Vârlan – Facultatea de Informatică 2016


Microcontroller – Atmega328p
Microcontroller ATmega328
Operating Voltage 5V
Input Voltage (recommended) 7-12V
Input Voltage (limits) 6-20V
14 (of which 6 provide PWM
Digital I/O Pins
output)
Analog Input Pins 6
DC Current per I/O Pin 40 mA
DC Current for 3.3V Pin 50 mA
32 KB (ATmega328) of which
Flash Memory
0.5 KB used by bootloader
SRAM 2 KB (ATmega328)
Comparaţie între diverse
tipuri de procesoare EEPROM 1 KB (ATmega328)
ATMEL: Clock Speed 16 MHz (max 20Mhz)
https://www.arduino.cc/en CPU 8-bit AVR
/Products/Compare
Cosmin Vârlan – Facultatea de Informatică 2016
Arduino UNO

Informaţii (complete?) despre Arduino UNO: https://www.arduino.cc/en/Main/ArduinoBoardUno


Cosmin Vârlan – Facultatea de Informatică 2016
Arduino UNO
 Numele “UNO” (unu în italiană) este dat acestei plăci
pentru a celebra prima versiune a IDE-ului Arduino (care
până de curând (2015) a fost doar în “Beta”.

Cosmin Vârlan – Facultatea de Informatică 2016


Arduino UNO
 La fel ca versiunile anterioare,
Arduino UNO este “Open
Hardware”, specificaţiile
acestuia putând fi utilizate de
oricine pentru a-şi crea
propriul Arduino, îmbunătăţi
sau adapta la propriile nevoi.

 Specificaţiile Arduino Uno le


găsiţi la:
https://www.arduino.cc/en/Main
/ArduinoBoardUno

Cosmin Vârlan – Facultatea de Informatică 2016


Arduino UNO
 Programarea lui
Arduino UNO se
face (standard)
prin intermediul
softului pus la
dispoziţie pe situl
www.arduino.cc

Cosmin Vârlan – Facultatea de Informatică 2016


Arduino UNO
 Asta nu înseamnă că nu se poate şi altfel:

 Pluginul Arduino pentru Eclipse poate fi descărcat de la:


http://eclipse.baeyens.it/
 Informaţii despre instalare: http://forum.arduino.cc/index.php?topic=79595.0

 Altele: WinAVR, Atmel Studio

Cosmin Vârlan – Facultatea de Informatică 2016


Arduino UNO
 De-a lungul timpului, au fost utilizate diverse tipuri de
programatoare.
 Cele mai populare (şi care sunt recunoscute de către
Windows fără a necesita drivere suplimentare) sunt
programatoarele FTDI (asemanatoare cu cele de pe
Arduino UNO: ATMEGA8U2 – programator ISP).
 Versiunile chinezeşti ale Arduino nano au inlocuit FTDI-ul
(care era mai scump) cu programatorul CH340G.

Găsiţi driverele pentru acesta la: http://profs.info.uaic.ro/~vcosmin/files.php?dir=pagini/resurse_arduino


Interesant de vazut şi: https://www.youtube.com/watch?v=Vawhrr4COjI

Cosmin Vârlan – Facultatea de Informatică 2016


Arduino UNO
 Odată instalat (dacă a fost nevoie), ARDUINO-ul va fi
vizibil în device manager ca fiind conectat la un anumit
port X (COM X).

Cosmin Vârlan – Facultatea de Informatică 2016


Arduino UNO
 IDE-ul probabil a detectat şi el portul şi tipul Arduinoului
conectat (Arduino / Genuino UNO). În caz contrar, setaţi
aceste informaţii în meniul Tools->Board şi Tools->Port.
 De asemenea aceste meniuri sunt utile când aveţi mai
multe echipamente Arduino conectate simultan (şi vreţi să
programaţi unul dintre ele).
 Programatorul ce trebuie selectat pentru UNO este
AVRISP mkII.

Cosmin Vârlan – Facultatea de Informatică 2016


Arduino UNO

Cosmin Vârlan – Facultatea de Informatică 2016


Arduino UNO - bootloader
 Integratul ATMEL 328P, creierul lui Arduino UNO, are deja
instalat, în memoria Flash (0.5KB din 32KB), un soft
denumit bootloader. Acesta are rolul de a permite
programarea Arduino-ului utilizând doar un cablu USB.
Acest program se încarca la bootarea Arduino-ului.
 La încărcarea unui program prin USB bootloaderul nu se
va şterge.

Cosmin Vârlan – Facultatea de Informatică 2016


Arduino UNO - bootloader
 Dacă se doreşte eliminiarea bootloaderului (pentru a
câştiga cei 0.5KB din memoria Flash), Arduino poate fi
programat direct prin tehnologia ICSP (denumit şi ISP) –
portul SPI.
 Pentru detalii, accesaţi:
https://www.arduino.cc/en/Hacking/Programmer

A NU SE UTILIZA / TESTA LA FACULTATE !

Cosmin Vârlan – Facultatea de Informatică 2016


Arduino UNO - bootloader
 Pentru rescrierea bootloaderului, se va folosi tot ICSP
(durează aprox 15”).
 Pentru detalii puteţi accesa:
https://www.arduino.cc/en/Hacking/Bootloader?from=Tut
orial.Bootloader
 A NU SE UTILIZA / TESTA LA FACULTATE !
[putem să le reparăm dar nu avem chef]
[dacă faceţi asta acasă, o faceţi pe cont propriu. Aveţi grijă
ce programator folosiţi !]

Cosmin Vârlan – Facultatea de Informatică 2016


Arduino UNO
Portul SPI: ICSP
(In-Circuit Serial Programming)

Cosmin Vârlan – Facultatea de Informatică 2016


Arduino UNO - Safety
 Chiar dacă este mereu conectat (în timp ce îl programaţi)
la USB, nu prea aveţi cum să ardeţi portul USB al
calculatorului (decât dacă vreţi neapărat asta).
Se pot face în schimb shielduri care să ridice tensiunea la
5KV – şi apoi să trimită tensiunea pe TX (vor arde portul
calculatorului) [condensatoare]
 Puteţi în schimb să ardeţi Arduino-ul destul de uşor (aşa
că vă rog FĂRĂ CHEI, MONEZI sau ALTE OBIECTE
METALICE pe masă în timp ce lucraţi cu Arduino. Aveţi
grijă să nu atingeţi de şuruburile cu care sunt prinse
băncile -Atmega 328p e foarte fragil !!!).

Cosmin Vârlan – Facultatea de Informatică 2016


Arduino UNO - Safety
 În cazul în care calculatorul nu “va vede” Arduino-ul, se
poate ca o masură de siguranţă să fi intrat în acţiune (de
fapt este o “siguranţă” automatizată – ce îşi revine când
Arduino nu mai este în scurt) sau aveţi deja ocupat portul
calculatorului (fie s-a blocat IDEul pe acel port fie se face
vreo comunicare etc.)

Cosmin Vârlan – Facultatea de Informatică 2016


Arduino UNO - Alimentare
 Arduino UNO poate opera la voltaje între 5 şi 20V.
 În cazul tensiunilor de sub 7V se poate întâmpla ca la
calcule intense Arduino să devină instabil (spre exemplu
auto-reset).
 În cazul tensiunilor peste 12V se poate întâmpla ca
regulatorul de tensiune să se supraîncălzească (ataşaţi un
radiator altfel puteţi arde întregul sistem).

Cosmin Vârlan – Facultatea de Informatică 2016


Arduino UNO

Regulatorul de
tensiune

Cosmin Vârlan – Facultatea de Informatică 2016


Arduino UNO - Alimentare
 De fapt, procesorul este alimentat la 5V (din acest motiv
îl puteţi alimenta direct de pe portul USB).
 Arduino poate fi alimentat prin:
- portul USB (5V)
- alimentare separata (7-20V)
- pinul vin (7-20V)

Cosmin Vârlan – Facultatea de Informatică 2016


Arduino UNO
USB, 5V

Alimentare
externa (7-20V)

Alimentare
externa (7-20V)

Cosmin Vârlan – Facultatea de Informatică 2016


Arduino UNO - Alimentare
 Deşieste posibil, se poate alimenta prin pinul de 5V sau
de 3.3V dar alimentarea de acest tip trece peste
regulatorul de tensiune şi dacă se greşeşte (chiar şi cu
foarte puţin) voltajul, puteţi arde procesorul.

NERECOMANDAT

Cosmin Vârlan – Facultatea de Informatică 2016


Arduino UNO – putere curent / pin
 Pinul de 3.3V

3.3V

Cosmin Vârlan – Facultatea de Informatică 2016


Arduino UNO – putere curent / pin
 Pinul de 3.3V

5V

Cosmin Vârlan – Facultatea de Informatică 2016


Arduino UNO – curent / pin
 Pinul GROUND este utilizat pentru a scurge curentul
preluat din pinii 5V sau 3.3V.
 Oricare dintre pinii digitali pot fi folosiţi pentru a scurge
curentul (ca şi GROUND) dacă sunt setaţi cu valoarea
LOW sau pentru a putea lua din ei 5V (500mAh !) dacă
sunt setaţi pe HIGH.
 Arduino UNO are o rezistenta pe fiecare dintre pinii
digitali ce ii permite sa scurga prin aceştia până la 40mAh
(standard e 20mAh).Vă rugăm să nu o testaţi (la facultate)
! – nu ştim dacă kinezii nu s-au zgârcit… [pull up resistors]

Cosmin Vârlan – Facultatea de Informatică 2016


Arduino UNO – pinii digitali

Pinii digitali (0 - 13)

Cosmin Vârlan – Facultatea de Informatică 2016


Arduino UNO – pinii digitali
 Anumiţi pini digitali pot îndeplini şi alte roluri decât de a
furniza/scurge tensiune:
- d0: RX (primeşte informaşii trimise prin USB);
- d1: TX (trimite informaţii către USB);
- d2, d3: pot fi utilizaţi pentru a genera întreruperi (identice
cu cele cunoscute deja: execută o funcţie când prin pinul
respectiv se primeşte un voltaj înafara unui interval
indicat);

Cosmin Vârlan – Facultatea de Informatică 2016


Arduino UNO – pinii digitali
- d3, d5, d6, d9, d10, d11: PWM (Pulse Width Modulation) –
permit scrierea de valori analogice (în intervalul 0-1024)
prin transmiterea de tensiuni în intervalul 0-5V;
- d10, d11, d12, d13: emulare SPI prin intermediul unei
biblioteci SPI. Pinii alocati sunt astfel: 10=SS, 11=MOSI,
12=MISO, 13=SCK
- d13: led intern conectat prin rezistenţă

Cosmin Vârlan – Facultatea de Informatică 2016


Arduino UNO – pinii analogici

SCL SDA
(serial clock) (serial data)

Pinii Analogici

Cosmin Vârlan – Facultatea de Informatică 2016


Arduino UNO – pinii analogici
 Pinii analogici (a0-a6) pot citi tensiunea aplicată lor cu
o rezoluţie de 10 biţi [valori între 0 şi 1024].
 analog 4 (sau SDA), analog 5 (sau SCL): suportă
tehnologie TWI (two wire interface – I2C) atunci
când este utilizată biblioteca corespunzătoare
 Tensiunea maximă (default) este de 5V, aceasta putând
fi schimbată prin aplicarea unei tensiuni pinului AREF
(şi utilizarea analogReference() în cod pentru
a seta valoarea pe external) – referinţa va fi curentul
primit prin pinul AREF [între 0-5V !!!]

Cosmin Vârlan – Facultatea de Informatică 2016


Arduino UNO

AREF

Cosmin Vârlan – Facultatea de Informatică 2016


Arduino UNO – programare
 Specificaţiile
limbajului pot fi găsite la adresa:
https://www.arduino.cc/en/Reference/HomePage

 Pe scurt: se foloseşte C/C++ (puteţi scrie OOP).


 Nu există “main” şi, programul executat de Arduino,
asemeni sistemului de operare a unui calculator, nu se
“termină” niciodată – decât când s-a oprit alimentarea.
 În fapt, Arduino funcţionează ca un PC la scară mică.

Cosmin Vârlan – Facultatea de Informatică 2016


Arduino UNO – programare
 Structura unui program este urmatoarea:
- o secţiune pt declararea variablelor (globale)
- o secţiune de setup (ce va fi executată o singură dată)
- o secţiune loop ce va fi executată la nesfârşit

Cosmin Vârlan – Facultatea de Informatică 2016


Arduino UNO – programare
 Vestea bună: pentru fiecare componentă de care aveţi
nevoie în proiectul vostru găsiţi aproape sigur drivere
(biblioteci ce vă uşurează munca cu echipamentul
respectiv).
 Vestea rea: nu vă punctăm ce au făcut alţii :D

Cosmin Vârlan – Facultatea de Informatică 2016


Arduino UNO - miscelaneous

Buton Reset

Cosmin Vârlan – Facultatea de Informatică 2016


Arduino UNO - miscelaneous
Programatorul USB
ATMEGA8U2

Cosmin Vârlan – Facultatea de Informatică 2016


Arduino UNO - miscelaneous

Oscilator 16Khz
(inima arduino-ului)
Cosmin Vârlan – Facultatea de Informatică 2016
Arduino UNO - miscelaneous

Led pin d13

Cosmin Vârlan – Facultatea de Informatică 2016


Arduino UNO - miscelaneous

Led pin TX

Cosmin Vârlan – Facultatea de Informatică 2016


Arduino UNO - miscelaneous

Led pin RX

Cosmin Vârlan – Facultatea de Informatică 2016


Cosmin Vârlan
Referinţe
 https://

Cosmin Vârlan – Facultatea de Informatică 2016

S-ar putea să vă placă și