LL1 IoT ECiobanu [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

Ministerul Educaţiei, Culturii și Cercetării al Republicii Moldova Universitatea Tehnică a Moldovei Departamentul Ingineria Software și Automatică

RAPORT Lucrare de laborator Nr. 1 Disciplina: Internetul lucrurilor(IoT) Tema: Interacțiunea cu utilizatorul

A efectuat:

st.gr. TI-192, Ciobanu Ecaterina

A verificat :

asist.univ. Lupan Cristian

Chișinău 2022

Scopul lucrării: Realizarea aplicațiilor pentru interacțiune cu utilizatorul simplă Buton-Led și clasica Keypad-LCD utilizând librăria STDIO pentru a facilita interacțiunea clasică cu funcții de tip scanf(..) și printf(..). Enunțul problemei: 1. Să se proiecteze o aplicație de tip MCU care ar schimba starea unui LED la detectarea apăsării pe buton. 2. Să se proiecteze o aplicație în baza de MCU care ar recepționa comenzi de la terminal prin interfața serială pentru a seta starea uni LED. - led on pentru a aprinde și led off pentru stingere, sistemul trebuie să răspundă cu mesaje text despre confirmarea comenzii. - pentru schimbul de text prin terminal a se utiliza librăria STDIO 3. Să se proiecteze o aplicație în baza MCU pentru detectarea unui cod de la tastatura 4x4, să verifice codul și să afișeze un mesaj la un LCD. -

pentru cod valid să se aprindă un led de culoare vrede, pentru cod invalid, un led de culoare roșie.

-

A se utiliza STDIO pentru scanarea tastaturii și afișarea la LCD.

Introducere: Arduino este o platformă electronică open-source bazată pe hardware și software ușor de utilizat. Plăcile Arduino sunt capabile să citească intrări - lumină pe un senzor, un deget pe un buton sau un mesaj Twitter - și să le transforme într-o ieșire - activând un motor, pornind un LED, publicând ceva online. Puteți spune plăcii dvs. ce să facă trimițând un set de instrucțiuni microcontrolerului de pe placă. Pentru a face acest lucru, utilizați limbajul de programare Arduino (bazat pe Cablare) și Software-ul Arduino (IDE), bazat pe Procesare. Arduino s-a născut la Ivrea Interaction Design Institute ca un instrument ușor de prototipare rapidă, destinat studenților fără cunoștințe în electronică și programare. De îndată ce a ajuns la o comunitate mai largă, placa Arduino a început să se schimbe pentru a se adapta la noile nevoi și provocări, diferențiându-și oferta de la plăci simple pe 8 biți la produse pentru aplicații IoT, purtabile, imprimare 3D și medii încorporate.

Materiale și metode: Materiale utilizate: -

Diodă led;

-

Placă breadBoard;

-

Tastieră 4x4;

-

Rezisttoare;

-

Ecran LCD 16x2 I2C;

-

Buton;

-

Arduino UNO R3.

Rezultate obținute: Listing-ul programului pentru sarcina 1: #define LED_PIN 8 #define BUTTON_PIN 7 byte lastButtonState = LOW; byte ledState = LOW; void setup() { pinMode(LED_PIN, OUTPUT); pinMode(BUTTON_PIN, OUTPUT); } void loop() { byte buttonState = digitalRead(BUTTON_PIN); if (buttonState != lastButtonState) { lastButtonState = buttonState; if (buttonState == LOW) { ledState = (ledState == HIGH) ? LOW : HIGH; digitalWrite(LED_PIN, ledState); } } }

Fig. 1 Aprinderea led-ului la apăsarea butonului

Fig. 2 Stingerea led-ului când butonul nu este apăsat

Listing-ul programului pentru sarcina 2: #define LED_PIN 8 int state = 0; void setup() { pinMode(LED_PIN, OUTPUT); Serial.begin(9600); } void loop() { String c = Serial.readString(); if (c == "led on") { state = 1;

Serial.println("led on"); } else if (c == "led off") { state = 0; Serial.println("led off"); } digitalWrite(LED_PIN, state); }

Fig. 3 Rezultatele obținute În figura 3 se observă aprinderea led-ului când la terminal se scrie comanda led on.

Fig. 4

În figura 4 led-ul se schimbă la comanda led off scrisă în terminal. Listing-ul programului pentru sarcina 3: #include #include #include #define RED_LED 13 #define GREEN_LED 12 const byte numRows = 4; const byte numCols = 4; String cod; int stateRED = 0; int stateGREEN = 0; LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x20, 16, 2); char keymap[numRows][numCols]= { { '1', '2', '3', 'A'}, { '4', '5', '6', 'B'}, { '7', '8', '9', 'C'}, { '*', '0', '#', 'D'} }; byte rowPins[numRows] = { 9, 8, 7, 6 }; byte colPins[numCols] = { 5, 4, 3, 2 }; Keypad myKeypad = Keypad(makeKeymap(keymap), rowPins, colPins, numRows, numCols); void setup() { pinMode(RED_LED, OUTPUT); pinMode(GREEN_LED, OUTPUT); lcd.begin(16, 2); lcd.init(); lcd.backlight(); lcd.print("Password:"); Serial.begin(9600); } void loop() { char keypressed = myKeypad.getKey(); if (keypressed != NO_KEY) { Serial.println(keypressed); lcd.print(keypressed); if (keypressed != '#') { cod += keypressed; Serial.println(cod); } else if (keypressed == '#')

{ if (cod == "1234") { lcd.clear(); Serial.println("Correct"); cod = ""; stateRED = 0; stateGREEN = 1; lcd.print("Correct"); } else if (cod != "1234") { lcd.clear(); Serial.println("Wrong"); cod = ""; stateRED = 1; stateGREEN = 0; lcd.print("Wrong"); } digitalWrite(RED_LED, stateRED); digitalWrite(GREEN_LED, stateGREEN); } } }

Fig. 5 Schema circuitului pentru sarcina 3

Fig. 6 Afișarea mesajui Correct la ecran-ul LCD și aprinderea led-ului verde când parola introdusă este corectă

Fig. 7 Afișarea mesajului Wrong și aprinderea led-ului roșu când codul introdus este greșit

Concluzie: Efectuând această lucrare de laborator am realizat aplicații în baza de MCU, prima pentru a schimba starea unui led la apăsarea unui buton, a doua pentru a schimba starea unui led, recepționând comenzi de la terminal, a treia pentru a detecta un cod de la tastiera 4x4, care verifică un cod și afișează la un LCD un mesaj cu răspuns, parolă corectă sau greșită.