Sunteți pe pagina 1din 6

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 <Wire.h>
#include <LiquidCrystal.h>
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 <Wire.h>
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.

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