1.SoC: Arduino (System on a Chip) - profs.info.uaic.rovcosmin/pagini/resurse_arduino/Cursuri... ·...
Embed Size (px)
Transcript of 1.SoC: Arduino (System on a Chip) - profs.info.uaic.rovcosmin/pagini/resurse_arduino/Cursuri... ·...

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.
Cosmin Vârlan – Facultatea de Informatică 2016
Apple A5 SoC

SoC – ce conţin
• 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
AMD Am286ZX/LX,
SoC based on80286https://en.wikipedia.org/wiki/System_on_a_chip

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

Cosmin Vârlan – Facultatea de Informatică 2016
https://en.wikipedia.org/wiki/System_on_a_chip

Cosmin Vârlan – Facultatea de Informatică 2016
"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
JTAG = Joint Test Action Group
Realizează verificarea automată a
CHIPului.
La PCuri: Power On Self Testhttps://en.wikipedia.org/wiki/JTAG

Cosmin Vârlan – Facultatea de Informatică 2016
"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
Procesorul de tip ARMRISC = 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/

Cosmin Vârlan – Facultatea de Informatică 2016
"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
Regulator de tensiune – reduce
+/- pentru ca procesorul să
primească o tensiune constantă.

Cosmin Vârlan – Facultatea de Informatică 2016
"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
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.)

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

Software
Elementele hardware descrise trebuie controlate prin
intermediul software. De exemplu, trebuie implementate
standarde cum ar fi cel al comunicării prin USB.
Toate procesoarele 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
Cosmin Vârlan – Facultatea de Informatică 2016
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]

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

Arduino UNO
Cosmin Vârlan – Facultatea de Informatică 2016
Informaţii (complete?) despre Arduino UNO: https://www.arduino.cc/en/Main/ArduinoBoardUno

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ţiileacestuia putând fi utilizate de oricine pentru a-şi creapropriul Arduino, îmbunătăţisau 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
Cosmin Vârlan – Facultatea de Informatică 2016
Portul SPI: ICSP(In-Circuit Serial Programming)

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
Cosmin Vârlan – Facultatea de Informatică 2016
Regulatorul de
tensiune

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
Cosmin Vârlan – Facultatea de Informatică 2016
USB, 5V
Alimentare
externa (7-20V)
Alimentare
externa (7-20V)

Arduino UNO - Alimentare
Deşi este 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
CosminVârlan – Facultatea de Informatică 2016
3.3V

Arduino UNO – putere curent / pin
Pinul de 3.3V
CosminVârlan – Facultatea de Informatică 2016
5V

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
Cosmin Vârlan – Facultatea de Informatică 2016
Pinii digitali (0 - 13)

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
Cosmin Vârlan – Facultatea de Informatică 2016
Pinii Analogici
SCL(serial clock)
SDA(serial data)

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
Cosmin Vârlan – Facultatea de Informatică 2016
AREF

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
Cosmin Vârlan – Facultatea de Informatică 2016
Buton Reset

Arduino UNO - miscelaneous
Cosmin Vârlan – Facultatea de Informatică 2016
Programatorul USB
ATMEGA8U2

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

Arduino UNO - miscelaneous
Cosmin Vârlan – Facultatea de Informatică 2016
Led pin d13

Arduino UNO - miscelaneous
Cosmin Vârlan – Facultatea de Informatică 2016
Led pin TX

Arduino UNO - miscelaneous
Cosmin Vârlan – Facultatea de Informatică 2016
Led pin RX

Cosmin Vârlan

Referinţe
https://
CosminVârlan – Facultatea de Informatică 2016