39 0 140KB
Ministerul Educaţiei, Culturii și Cercetării al Republicii Moldova
Universitatea Tehnică a Moldovei
Departamentul Informatică și Ingineria Sistemelor
Disciplina: Bazele Transmiterii de Date
RAPORT Lucrarea de laborator nr. 5 Tema: Cercetarea interfetelor standard de comunicatii in cod serie. Regim Master-Slave.
A efectuat:
Axenti Alina, st.gr. CR-191
A verificat:
Lasco Victor
Chişinău - 2020
Scopul lucrării: Cercetarea, proiectarea și programarea interfețelor standard de comunicare in cod serie (COM, RS, UART, USART, I2C, SPI ) - Regim Master-Slave. Proiectarea în mediul Proteus sau Fritzing a unui sistem de transfer date în cod serie în baza Kit-ului Arduino UNO, cu interactiune Master-Slave. Dispozitivul Master va genera apeluri catre Slave care va raspunde prin oferirea datelor solicitate. Datele comunicate dintre dispozitive sunt afisate pe Terminal si pe Osciloscop. Initierea uni apel Master este generat de tastarea unui buton. Datele receptionate de Master sunt afișate pe un indicator LCD 2*16 pozitii LM016L. Datele generate de Slave sunt achizitionate de la intrarile Analogice A0-A5 sau de la un set de senzori analogici sau digitali.
Surse și dispozitive tehnice necesare pentru elaborarea lucrării de laborator: 1. Calculator PC 2. Acces la Internet 3. Mediul de proiectare Proteus sau Fritzing 4. Mediul de programare Arduino IDE. 5. Îndrumare electronice pentru utilizarea, proiectarea și programarea sistemelor în baza Kit-ului Arduino UNO. Sarcina tehnică pentru efectuarea lucrării de laborator: 1. Să se instaleze mediul de dezvoltare Arduino IDE și bibliotecile respective; 2. Să se instaleze mediul de dezvoltare Proteus și bibliotecile respective; 3. Să se asambleze schema electrică de principiu (Proteus) a sistemului pentru comunlcare in regim Master-Slave. Datele generate de Slave sunt achizitionate INDRUMAR DE LABORATOR COD: S.03.O.031 DATA: 25.08.2020 PAGINA: 2/10 BAZELE TRANSMITERII DE DATE de la intrarile Analogice A0-A5 sau de la un set de senzori analogici sau digitali. Comunicarea dintre dispozitive este monitorizata de modulul Terminal si sunt afisate si pe Osciloscop. Dispozitivul Master va genera apeluri catre Slave care va raspunde prin oferirea datelor solicitate. Initierea unui apel Master este generat de tastarea unui buton. Datele receptionate de Master sunt afișate pe un indicator LCD 2*16 pozitii LM016L. 4. Să se elaboreze pentru Dispozitivul Slave programul (Arduino IDE) care efectuează achiziția datelor de la setul de senzori sau intrarile A0-A5, si livrarea acestora in raport cu codul receptionat de la dispozitivul Master. 5. Să se elaboreze pentru Dispozitivul Master (Arduino UNO) care va genera comenzi la tastarea unui buton pentru Dispozitivul Slave, primeste datele de la Slave si le afiseaza pe un ecran LCD LM016L;
6. Să se incarce codul HEX al programului elaborat în mediul Proteus pentru testare funcțională; 7. Procesul de simulare sa se înregistreze prin PrintScrean-uri.
Crearea circuitului in Proteus
Plasarea codului sursă pe placa Arduino
Codul sursă in Arduino Master
#include #include byte x = 0; const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
void setup(){ Wire.begin(); lcd.begin(16,2); lcd.print("Pesterean Marin CR-191"); } void loop() { }
Codul sursă in Arduino Slave #include const int sensorPin0=A0; const int sensorPin1=A1; const int sensorPin2=A2; int sensorValue=0; int lastSensorValue1=0; int lastSensorValue2=0; int lastSensorValue3=0; float Vin=5; float Vout=0; float Ref=999;
float R=0; void setup() { Serial.begin(9600); pinMode(A0,INPUT); pinMode(A1,INPUT); pinMode(A2,INPUT); //pinMode(pin9,INPUT); }
void loop() { sensorValue=analogRead(sensorPin0); if(lastSensorValue1!=sensorValue) { Vout=(Vin*sensorValue)/1023; R=Ref*(1/((Vin/Vout)-1)); Serial.println(R); lastSensorValue1=sensorValue; }
sensorValue=analogRead(sensorPin1); if(lastSensorValue2!=sensorValue) { Vout=(Vin*sensorValue)/1023; R=Ref*(1/((Vin/Vout)-1)); Serial.println(R); lastSensorValue2=sensorValue;
}
sensorValue=analogRead(sensorPin2); if(lastSensorValue3!=sensorValue) { Vout=(Vin*sensorValue)/1023; R=Ref*(1/((Vin/Vout)-1)); Serial.println(R); lastSensorValue3=sensorValue; } }
Concluzie : Dupa efectuarea lucrarii de laborator nr.5,lucrind in Arduino am invatat sa scriu corect codul sursa si am realizat sarcinile propuse.