Professional Documents
Culture Documents
Raport
Lucrare de laborator nr. 3
Disciplina: Internetul Lucrurilor(IoT)
Tema: Achizitie de informații. Senzori.
Chişinău 2022
Scopul lucrării:
Sa se realizeze o aplicație in baza de MCU care va prelua un semnal de la o sursa de semnal, va
condiționa semnalul, si va afișa parametrul fizic la un terminal (LCD si/sau Serial). Fiecare student va
selecta un senzor fie analogic fie digital (nu binar) din PDF atașat sau: http://www.37sensors.com/
- Sa se achiziționeze semnalul de la senzor;
- Să se condiționeze semnalul implicând filtre digitale și alte metode;
- Să se afișeze datele pe afișor LCD și / sau Serial.
Indicații teoretice
Arduino constă atât într-o placă de circuite programabile fizic ( microcontroler), cât și într-o parte de
software sau pe scurt IDE (Integrated Development Environment) care rulează pe computerul dvs. Acesta
este folosit pentru scrie și încărca codul computerului pe un board fizic.
Placa de dezvoltare Arduino poate interacționa și funcționa cu butoane, LED-uri, motoare, difuzoare,
unități GPS, camere video, internet și chiar poate conlucra cu un smartphone sau un televizor. Această
flexibilitate combinată cu faptul că software-ul Arduino este gratuit, plăcile hardware sunt destul de ieftine,
iar ambele, atât software-ul cât și hardware-ul sunt ușor de învățat și folosit.
MCU este utilizat într-o gamă largă de aplicații, inclusiv mașini de spălat, roboți, drone, radio și controlere
de jocuri. Istoria MCU poate fi urmărită până la invenția tehnologiei MOSFET. În primele zile, MCU era
un circuit integrat semiconductor primitiv cu o unitate de procesor și un modul de memorie.
#include <Adafruit_LiquidCrystal.h>
#define sensor A0
Adafruit_LiquidCrystal lcd(0);
float getTemperature(){
float voltage = (analogRead(sensor) * (1.75 / 358.0));
float temperature = ((voltage*1000) - 500) /10;
return temperature;
}
t=*p;
*p=*q;
*q=t;
}
void setup()
{
pinMode(sensor, INPUT);
Serial.begin(9600);
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("Median = " );
lcd.setCursor(0, 1);
lcd.print("Spices = " );
}
int i = 0;
void loop()
{
float temps[5];
Serial.println("MEASURING...");
if (i < 4){
temps[i] = getTemperature();
}
if (i >= 4){
sw(temps);
temps[4] = getTemperature();
}
float temp1 = weighted_median(temps);
float temp2 = salt_and_pepper(temps);
disp(temp1, temp2);
delay(2000);
i++;
}
Figura 2 – Transformarea umidității în MA și SS de la senzorul umidității pe LCD
#include <Adafruit_LiquidCrystal.h>
#define sensor A0
Adafruit_LiquidCrystal lcd(0);
float getMoisture(){
float voltage = (analogRead(sensor) * (5.0 / 1023.0));
int moisture = map(voltage*100, 0, 428, 0, 100);
Serial.print("Real time moisture = "); Serial.println(moisture);
return moisture;
}
t=*p;
*p=*q;
*q=t;
}
void setup()
{
pinMode(sensor, INPUT);
Serial.begin(9600);
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("Median = " );
lcd.setCursor(0, 1);
lcd.print("Spices = " );
}
int i = 0;
void loop() //funcția pentru masurarea umiditatii
{
float moists[5];
Serial.println("MEASURING...");
if (i < 4){
moists[i] = getMoisture();
}
if (i >= 4){
sw(moists);
moists[4] = getMoisture();
}
float val1 = weighted_median(moists);
float val2 = salt_and_pepper(moists);
disp(val1, val2);
delay(1000);
i++;
}
Concluzie
În această lucrare de laborator am avut de creat o aplicație de tip MCU pentru a prelua un semnal cu
ajutorul unul sensor și de a transforma informația primită în 2 filtre, și de a o afișa pe un LCD. Am folosit
2 senzori: 1 de determinare a temperaturii, și al doilea de determinare al umidității. După care am
transformat datele primile de la sensor în media aritmetică ponderată și în filtrul sare și piper.