Manipularea Intrărilor și ieșirilor digitale · Pentru extinderea utilizarii si capabilitatilor,...

30
Utilizarea platformei de dezvoltare Intel Galileo - Manipularea Intrărilor și ieșirilor digitale -

Transcript of Manipularea Intrărilor și ieșirilor digitale · Pentru extinderea utilizarii si capabilitatilor,...

Page 1: Manipularea Intrărilor și ieșirilor digitale · Pentru extinderea utilizarii si capabilitatilor, placile Intel®Galileo sunt dotate cu interfete standard de intrare-iesire, mini-

Utilizarea platformei de dezvoltareIntel Galileo

- Manipularea Intrărilor și ieșirilor digitale -

Page 2: Manipularea Intrărilor și ieșirilor digitale · Pentru extinderea utilizarii si capabilitatilor, placile Intel®Galileo sunt dotate cu interfete standard de intrare-iesire, mini-

Arduino - platforma de dezvoltare, microsistem de calcul dedicat, cu arhitectura deschisa, care s-a dezvoltat cu scopul de apermite unor persoane mai putin avizate in domeniul calculatoarelor sa programeze aplicatii simple de monitorizare si control.

• Din punct de vedere “hardware” exista o varietate de modele “oficiale” (Arduino Uno, Arduino Mega si Arduino Leonardo), care ofera utilizatorului posibilitatea de alegere, in functie de aplicatia vizata.

• Exista, de asemenea placi “compatibile Arduino” care au aceleasi caracteristici ca si placile Arduino, uneori cu elemente avansatede functionalitate.

• Software-ul Arduino’s se refera la mediul Arduino IDE (Integrated Development Enivronment), un program utilizat pentru a incarca executabile pe memoria program a placii.

Functiile de baza ale acestor platforme, sunt de a citi valori ale unui set de component hardware recunoscute ca

intrari (butoane, senzori, comutatoare etc) si activarea unui set de elemente hardware – iesiri (LED-uri, motoare, LCD-

uri etc) , prin programarea in mediul specific Arduino.

Page 3: Manipularea Intrărilor și ieșirilor digitale · Pentru extinderea utilizarii si capabilitatilor, placile Intel®Galileo sunt dotate cu interfete standard de intrare-iesire, mini-

Intel® Galileo este prima dintr-o serie de placi de dezvoltare bazate pe arhitectura Intel, compatibile cu Arduino,

construita pentru a facilita dezvoltarea de proiecte.

Galileo este primul dispozitiv care foloseste procesorul Intel® Quark X1000, un procesor relativ nou, din familia x86, pe

32 biti, proiectat sa aiba un consum redus de energie, ideal pentru dispozitivele de mici dimensiuni, ce vor aparea in

viitor. Ruleaza cu frecvente pana la 400Mhz si contine 512 KB SRAM intern.

Pentru extinderea utilizarii si capabilitatilor, placile Intel® Galileo sunt dotate cu interfete standard de intrare-iesire, mini-

PCI Express*, interfata Ethernet 10/100Mb, slot Micro SD, porturi USB si interfata seriala.

Galileo foloseste sistemul de operare Linux, iar aplicatiile pot fi realizate si folosind Arduino. Intel® Galileo reuseste

astfel sa combine capabilitatile avansate oferite de sistemul de operare Linux*, si de ecosistemul sau vast de aplicatii, cu

usurinta de dezvoltare oferita de Arduino.

Intel® Galileo este prima placa de dezvoltare Intel in totalitate Open Source, compatibila atat hardware, cat si software,

aspect important pentru dezvoltatori si in acelasi timp pentru comunitatile de start-up-uri, care doresc sa realizeze

prototipuri de produse.

Page 4: Manipularea Intrărilor și ieșirilor digitale · Pentru extinderea utilizarii si capabilitatilor, placile Intel®Galileo sunt dotate cu interfete standard de intrare-iesire, mini-

Intrari/iesiri digitale

Intrari/iesiri analogice

Conector Ethernet

ProcesorConector

alimentare

+5V

Conector

memorie

µSD

USB client

Buton

Reset

LED

IO13

IO0IO13

A0

A5

Page 5: Manipularea Intrărilor și ieșirilor digitale · Pentru extinderea utilizarii si capabilitatilor, placile Intel®Galileo sunt dotate cu interfete standard de intrare-iesire, mini-
Page 6: Manipularea Intrărilor și ieșirilor digitale · Pentru extinderea utilizarii si capabilitatilor, placile Intel®Galileo sunt dotate cu interfete standard de intrare-iesire, mini-

Platforma de dezvoltare Intel Galileo poate fi utilizată atât ca și microcontroller cât și ca un micro-computer independent integrat (eng. “standalone embedded computing system”), deoarece, poate rula un sistem de operare (ex. Windows 10 IoT, Linux, Windows Compact Embedded - CE);

Facilitatea principală, în acest caz, este că, platforma are rol de server de interfațare (ex. achiziție de date dintr-un proces fizic de la distanță, controlul proceselor de la distanță); În modul microcontroler, platforma Intel Galileo, poate fi programată, dintr-un mediu integrat de dezvoltare (eng. I.D.E. –Integrated Development Environment), sau prin intermediul mediilor de simulare / testare (Matlab Simulink sau LabVIEW);

Limbajul de sintaxă utilizat în majoritatea cazurilor, este de tip C++ sau hibrid „mixed assembly – syntax C”, Wiring;Wiring, este un limbaj hibrid, dedicat în special programării obiectual fizice (eng. hard) deoarece implică sintaxe și mnemonici încetățenite în limbajul tehnic din domeniul electric / electronic (ex. pinMode (); DigitalWrite(); );

Page 7: Manipularea Intrărilor și ieșirilor digitale · Pentru extinderea utilizarii si capabilitatilor, placile Intel®Galileo sunt dotate cu interfete standard de intrare-iesire, mini-

Hardware

•400MHz Quark SoC

•512KB SRAM

•256MB DRAM

•8 MByteFlash

•Micro-SD slot

•Mini-PCI Express slot

•100Mb Ethernet port

•USB Host port

•USB Client Port

Software

•Linux OS on Board

•Intel SW Tools

Procesorul Quark X1000 se concentreaza pe aplicatii „embedded”, in

dispozitive mobile, Internet of Things, vehicule autonome si se vrea o varianta

de procesoare bazate pe arhitectura x86, dar cu consum mic de putere.

-arhitectura x86, folosita in mod uzual in computere personale, cu sistem de

operare Windows, rapide si puternice.

Procesoarele ARM, pe de alta parte, sunt folosite la scara mare in elemente

electronice portabile, cu eficienta energetica mai mare.

Diferenta dintre arhitecturile ARM si x86 se refera la dimensiunea setului de

instructiuni. ARM este o arhitectura de tip RISC (Reduced Instruction Set

Computing, cu set de instructiuni mai mic, mai simplu), iar procesoarele x86

sunt CISC (Complex Instruction Set Computing,set de instructiuni mai

complex, mai mare).

Page 8: Manipularea Intrărilor și ieșirilor digitale · Pentru extinderea utilizarii si capabilitatilor, placile Intel®Galileo sunt dotate cu interfete standard de intrare-iesire, mini-

Sisteme cu microprocesoare• Limbajul de sintaxă utilizat în majoritatea cazurilor, este de tip C++ sau hibrid „mixed assembly – syntax C”, Wiring;

• Wiring limbaj hibrid, dedicat în special programării “hard” deoarece implică sintaxe și mnemonici

încetățenite în limbajul tehnic din domeniul electric / electronic (ex. pinMode (); DigitalWrite(); );

• Limbajul Wiring, stă la baza programării platformelor Arduino, dar și Intel Galileo, și se regăsește atât

sub forma Arduino IDE, cât și sub forma unui compilator, compatibil cu Microsoft Visual Studio/Visual

Basic;

• Acest limbaj a fost dezvoltat de comunitatea Open Source, și funcționează în mod nativ pe platformele

de tip Unix/Linux;

• Pentru funcționarea compilatorului din limbaj Wiring în limbaj de asamblare, apoi în cod mașină, în

sistemul de operare Windows, este necesară virtualizarea unui sistem de operare de tip Linux numit

CygWig rulat într-o așa zisă „mașină virtuală” în fundal, odată cu mediul Arduino IDE în Linux, are

loc compilarea mai rapid!

Page 9: Manipularea Intrărilor și ieșirilor digitale · Pentru extinderea utilizarii si capabilitatilor, placile Intel®Galileo sunt dotate cu interfete standard de intrare-iesire, mini-

Sisteme cu microprocesoare

• În baza limbajului Wiring s-au concretizat mai multe medii de programare cu compilatoare specifice platformelor destinate:

• Arduino I.D.E. – familia Atmega – Atmel;• Energia I.D.E. – familiile C, MSP, etc. – Texas Instruments;• MP I.D.E. – familia Microchip / ChipKit;• LeafLabs I.D.E. – familia Maple și Maple FPGA;• Processing I.D.E. – familia RaspberryPI, Arduino;• Wiring I.D.E. – toate platformele;

În baza limbajului Wiring s-au concretizat mai multe medii de programare cu compilatoare specifice

platformelor destinate:

• Arduino I.D.E. – familia Atmega – Atmel;

• Energia I.D.E. – familiile C, MSP, etc. – Texas Instruments;

• MP I.D.E. – familia Microchip / ChipKit;

• LeafLabs I.D.E. – familia Maple și Maple FPGA;

• Processing I.D.E. – familia RaspberryPI, Arduino;

• Wiring I.D.E. – toate platformele;

Page 10: Manipularea Intrărilor și ieșirilor digitale · Pentru extinderea utilizarii si capabilitatilor, placile Intel®Galileo sunt dotate cu interfete standard de intrare-iesire, mini-

Alimentarea platformei Galileo

Intel Galileo poate fi alimentata prin USB (pe portul client), dar Intel recomanda alimentarea

prin adaptorul specific, cu 5 V cc. Folosirea unui adaptor nepotrivit va duce la arderea placii.

Important! Inainte de cuplarea cablului USB placa trebuie alimentata, folosind adaptorul din dotare. Nu este

permisa cuplarea altor tensiuni la placa (inclusiv prin USB) pe durata cat placa nu este alimentata.

Page 11: Manipularea Intrărilor și ieșirilor digitale · Pentru extinderea utilizarii si capabilitatilor, placile Intel®Galileo sunt dotate cu interfete standard de intrare-iesire, mini-

Bloc de comentarii

Comentariu

Declarare variabila

Bucla executata o singura data - include

initializarile necesare pentru executia programului

Bucla executata in mod continuu- secventa de

operatii executate intr-o bucla infinita; efectueaza repetitiv

operatii de citire semnale, procesare si generare de comenzi

- biblioteca de functii (proceduri) prin intermediul carora

programatorul poate sa acceseze: semnale digitale de

intrare/iesire, semnale analogice de intare si de iesire, interfete

seriale, sau alte interfete care pot fi atasate placii Arduino.

- exemple de programare (din meniu: File->Examples).

Page 12: Manipularea Intrărilor și ieșirilor digitale · Pentru extinderea utilizarii si capabilitatilor, placile Intel®Galileo sunt dotate cu interfete standard de intrare-iesire, mini-

Sisteme cu microprocesoare

• Structura unui program scris în Wiring este similară cu structura unui program scris în

sintaxă standard C, spre exemplu:

Sintaxa limbajului Wiring

#include <stdio.h>int main(){

// printf() displays the string inside quotation

printf("Hello, World!");return 0;

}

void setup() {//LED_BUILTIN as an output.pinMode(LED_BUILTIN, OUTPUT);

}void loop() {digitalWrite(LED_BUILTIN, HIGH);delay(1000);digitalWrite(LED_BUILTIN, LOW);delay(1000);

}

SINTAXA „C” STANDARD: SINTAXA „WIRING”:

Page 13: Manipularea Intrărilor și ieșirilor digitale · Pentru extinderea utilizarii si capabilitatilor, placile Intel®Galileo sunt dotate cu interfete standard de intrare-iesire, mini-

Initializarea comunicatiei seriale

- Citire si/sau scriere:

Serial.begin(baudrate)

Serial.begin(9600);//deschide comunicarea pe serial cu 9600bauds/s

‘’Serial write’’ – pentru afisarea de caractere pe portul serial:

` Serial.print(val) sau Serial.print(val,format)

‘’Serial read’’:

Serial.read() – returneaza un byte citit

Serial.available() – returneaza numarul de bytes

Page 14: Manipularea Intrărilor și ieșirilor digitale · Pentru extinderea utilizarii si capabilitatilor, placile Intel®Galileo sunt dotate cu interfete standard de intrare-iesire, mini-

Senzori / dispozitive de intrare

Analogice: senzor de sunet, de temperatura, de lumina

Digitale: butoane, senzor de proximitate

Actuatoare / dispozitive de iesire: LED. LCD, Servo, contactoare etc

Intrari/iesiri digitale:

- 14 pini I/O, configurabili, 6 se pot folosi pentru PWM (3,5,6,9,10,11)

- pot lucra la 3.3 V si 5 V, max 10mA/25mA

- se configureaza ca intrari/iesiri cu sintaxa:

pinMode(pin,mode) – exemplu: pinMode(13,OUTPUT);//seteaza pinul 13 ca iesire

- configurarea pinilor ca HIGH sau LOW:

Exemplu: digitalWrite(4,LOW);//0V pe pinul 4

digitalWrite(11,HIGH);//5V pe pinul 11

-Pinii configurati ca intrari pot fi cititi:

digitalRead(8);//returneaza valoarea de pe pinul 8

Page 15: Manipularea Intrărilor și ieșirilor digitale · Pentru extinderea utilizarii si capabilitatilor, placile Intel®Galileo sunt dotate cu interfete standard de intrare-iesire, mini-

Intrari/iesiri analogice:

- 6 intrari analogice (pinii A0-A5)

- convertorul A/D - AD7298, 12 biti

- masoara 0 – 5 V si rezolutia este limitata la 10 biti, in mod implicit

- 1024 unitatila 5 V=4.9 mV pe unitate

- citirea unui nivel de tensiune atasat unui pin analog:

analogRead(pin)//citeste valoarea pinului analogic

- alinierea (‘’mapping’’) valorilor la alte game de tensiune:

map(Valoare, fromLow, fromHigh, toLow, toHigh)

- PWM – tehnica de obtinere a unor semnale analogice cu mijloace digitale

Page 16: Manipularea Intrărilor și ieșirilor digitale · Pentru extinderea utilizarii si capabilitatilor, placile Intel®Galileo sunt dotate cu interfete standard de intrare-iesire, mini-

Exemplu simplu de program cu LED-ul incorporat.

// semnalul de intrare/iesire digitala - IO13, pe cele mai multe placi Arduino are conectat un LED.

Page 17: Manipularea Intrărilor și ieșirilor digitale · Pentru extinderea utilizarii si capabilitatilor, placile Intel®Galileo sunt dotate cu interfete standard de intrare-iesire, mini-

• Spre deosebire de limbajul standard „C”, limbajul Wiring întrebuințează câteva funcții specifice aspectelor fizice (ex): void setup() – buclă pentru inițializare;

void loop() – buclă de execuție infinită (ech: while (1));

pinMode() – stabilirea rolului unui pin (intrare / ieșire);

DigitalWrite() – stabilrea stării logice a ieșirii digitale;

DigitalRead() – preluarea stării logice a intrării digitale;

Serial.begin(baud) – inițializarea comunicației serial;

Serial.println(„Afișează!”) – afișare text în consola serială;

Spre deosebire de limbajul standard „C”, limbajul Wiring întrebuințează câteva funcții specifice

aspectelor fizice:

Page 18: Manipularea Intrărilor și ieșirilor digitale · Pentru extinderea utilizarii si capabilitatilor, placile Intel®Galileo sunt dotate cu interfete standard de intrare-iesire, mini-

Aplicatii propuse• Considerând aceste aspecte, se propun următoarele aplicații:

1. Semnalizare intermitentă cu o diodă electroluminiscentă LED;\

2. Semnalizare intermitentă cu două LED-uri;

+ aplicatia studentilor

3. Monitorizarea stării unui contact electric;

4. Direcționarea stării contactului înspre diodă;

5. Auto-reținere simplă;

6. Semnalizare cu 8 LED-uri

7. Comanda temporizată unui contact de forță / putere (releu analogic);

Page 19: Manipularea Intrărilor și ieșirilor digitale · Pentru extinderea utilizarii si capabilitatilor, placile Intel®Galileo sunt dotate cu interfete standard de intrare-iesire, mini-

1. Semnalizare intermitentă cu o diodă electroluminiscentă LED;

Blinking LED – activarea/dezactivarea unui LED, cu intarziere de o

secunda, repetate in bucla infinita

• Elemente hardware necesare:

• 1x Breadboard

• 1x Galileo

• 1x LED

• 1x rezistenta 330Ω

• 2x conexiuni cu pini

! Partea negativa a LED-ului este reprezentata de piciorul mai scurt, marcat cu margineaplatizata.

Page 20: Manipularea Intrărilor și ieșirilor digitale · Pentru extinderea utilizarii si capabilitatilor, placile Intel®Galileo sunt dotate cu interfete standard de intrare-iesire, mini-
Page 21: Manipularea Intrărilor și ieșirilor digitale · Pentru extinderea utilizarii si capabilitatilor, placile Intel®Galileo sunt dotate cu interfete standard de intrare-iesire, mini-

2. Semnalizare intermitentă cu două LED-uri;

Page 22: Manipularea Intrărilor și ieșirilor digitale · Pentru extinderea utilizarii si capabilitatilor, placile Intel®Galileo sunt dotate cu interfete standard de intrare-iesire, mini-

3. Monitorizarea stării unui contact electric;

Page 23: Manipularea Intrărilor și ieșirilor digitale · Pentru extinderea utilizarii si capabilitatilor, placile Intel®Galileo sunt dotate cu interfete standard de intrare-iesire, mini-

4. Direcționarea stării contactului înspre diodă;

Page 24: Manipularea Intrărilor și ieșirilor digitale · Pentru extinderea utilizarii si capabilitatilor, placile Intel®Galileo sunt dotate cu interfete standard de intrare-iesire, mini-

5. Auto-reținere simplă

Page 25: Manipularea Intrărilor și ieșirilor digitale · Pentru extinderea utilizarii si capabilitatilor, placile Intel®Galileo sunt dotate cu interfete standard de intrare-iesire, mini-

6. Semnalizare cu 8 LED-uri

Cand sunt mai multe variabile de definit in setup(), se foloseste matrice de valori intregi, pe care, in

exemplul de fata, le numim ledPins, cu 8 elemente:

int ledPins[] = {2,3,4,5,6,7,8,9};

ulterior, referirea la elementele din matrice, se face prin pozitia acestora. Primul element are pozitia 0, al

doilea pozitia 1 etc.

digitalWrite(ledPins[0], HIGH);//LED-ul 2, adica de pe pozitia 0, este activ

- Folosirea buclelor de tip “for”

for(conditie initiala, conditie principala, conditie de continuare)

{

}

Page 26: Manipularea Intrărilor și ieșirilor digitale · Pentru extinderea utilizarii si capabilitatilor, placile Intel®Galileo sunt dotate cu interfete standard de intrare-iesire, mini-
Page 27: Manipularea Intrărilor și ieșirilor digitale · Pentru extinderea utilizarii si capabilitatilor, placile Intel®Galileo sunt dotate cu interfete standard de intrare-iesire, mini-
Page 28: Manipularea Intrărilor și ieșirilor digitale · Pentru extinderea utilizarii si capabilitatilor, placile Intel®Galileo sunt dotate cu interfete standard de intrare-iesire, mini-

Activarea aleatoare a LED-urilor

Page 29: Manipularea Intrărilor și ieșirilor digitale · Pentru extinderea utilizarii si capabilitatilor, placile Intel®Galileo sunt dotate cu interfete standard de intrare-iesire, mini-

7. Comanda temporizată unui contact de forță / putere (releu analogic);

Page 30: Manipularea Intrărilor și ieșirilor digitale · Pentru extinderea utilizarii si capabilitatilor, placile Intel®Galileo sunt dotate cu interfete standard de intrare-iesire, mini-