KULTUROSFERA

Mini-stația IoT a clasei

Lecția-suport: Programăm funcționalitățile

Termostatul de acasă, brățara care numără pași, senzorul de parcare — toate sunt același animal: un obiect cu senzori, un program care decide și o cale de a anunța. Azi construiești unul. M5GO-ul devine mini-stația IoT a clasei: citește senzorii disponibili, afișează un tablou de bord pe ecran și are un buton de alarmă care schimbă totul în roșu. La finalul laboratorului vei avea programul stației compus în UIFlow și testat pe dispozitiv, plus schema-bloc a unui obiect comunicant desenată de echipa ta — cărămida pentru proiectul de grup.

Ce îți trebuie

  • UIFlow în browser: flow.m5stack.com — programul se compune integral fără dispozitiv. Referință pentru senzori și unități: docs.m5stack.com.
  • M5GO-ul școlii + unitățile de senzori din kitul lui (după dotare: senzor de mediu temperatură/umiditate, PIR de mișcare, senzor de lumină — profesorul anunță la început ce există în cutie). Se conectează la mufele colorate Grove — fiecare unitate în mufa de culoarea potrivită.
  • Cont: nu e necesar. Timp: 10 minute organizare + compunere în paralel, rotații de 5-8 minute la stație, ultimele 20 de minute pentru discuția despre obiecte comunicante.

Anatomia unui obiect comunicant

Înainte de blocuri, harta. Orice obiect „inteligent" — de la termostatul Nest la stația voastră — are aceleași patru etaje:

  1. Percepe: senzori care transformă mărimi fizice în numere (ai făcut exact asta cu microfonul, în laboratorul 8);
  2. Decide: un program cu praguri, condiții, stări;
  3. Acționează: ecran, LED-uri, sunet, un releu care pornește ceva;
  4. Comunică: își trimite datele sau alarma mai departe — către un telefon, un server, alt obiect.

Stația de azi construiește solid etajele 1-3 și simulează etajul 4 (alarma locală ține locul mesajului trimis în rețea — trimiterea reală prin Wi-Fi e o poveste pentru proiectul de grup, dacă echipa o alege). Ține minte distincția: un obiect cu senzori e doar automat; comunicant devine când datele lui pleacă spre altcineva. Aici se leagă totul de „Drumul unui mesaj prin Internet" din modulul 3: alarma stației voastre, într-o versiune reală, ar deveni pachete prin routere.

Tabloul de bord: senzorii pe ecran

Compunerea, în paralel la calculatoarele echipelor:

  1. Interfața întâi. În UIFlow, ecranul M5GO se proiectează vizual: trage pe machetă 3-4 elemente Label — titlul stației (numele echipei), câte o linie pentru fiecare mărime afișată, o linie de stare jos („OK" / „ALARMA"). Aranjează-le lizibil: cine trece pe lângă stație trebuie să înțeleagă totul din doi pași.
  2. Senzorii declarați. Adaugă în proiect unitățile pe care profesorul le-a anunțat (în UIFlow, unitățile se adaugă explicit — butonul de unități/Units, alegi tipul și mufa). Blocurile lor de citire apar în paletă abia după acest pas.
  3. Bucla de achiziție. În bucla principală: citește fiecare senzor într-o variabilă, actualizează label-urile, pauză de 500 ms. Dacă în kit nu există senzor extern disponibil pentru echipa ta, folosește-le pe cele interne (microfonul din laboratorul 8, accelerometrul) — arhitectura programului rămâne identică, iar asta e chiar lecția.
  4. Starea cu decizie. Alege o condiție de „atenție" cu sens fizic — temperatura peste un prag, mișcare detectată, întuneric brusc — și leagă linia de stare de ea: text și culoare de fundal diferite pe cele două ramuri ale unui if/else.

Butonul de alarmă și testul la stație

  1. Alarma manuală. M5GO are trei butoane fizice; UIFlow are blocuri de eveniment „la apăsarea butonului" — exact modelul evenimentelor din Scratch, dar declanșat de un deget pe hardware. La apăsarea butonului A: starea trece pe „ALARMA", LED-urile pe roșu intermitent (buclă scurtă cu pauze), un sunet din difuzor. Butonul B revine la normal.
  2. Gândește stările. Programul tău are acum două stări (normal / alarmă) și două căi de a intra în alarmă: decizia automată a senzorului și apăsarea manuală. Ține-le într-o singură variabilă alarma (adevărat/fals) pe care și senzorul și butonul o setează, iar bucla principală doar o citește — altfel cele două căi se calcă pe picioare. Asta e o decizie de arhitectură, mică dar reală.
  3. La stație (5-8 minute, ca de obicei): încarcă programul cu Run, verifică citirile pe viu (suflă pe senzorul de temperatură, acoperă senzorul de lumină cu palma — valorile trebuie să se miște), declanșează alarma din buton și din condiția de senzor, revino la normal cu B, predă ștafeta.

Dacă nu merge

  • Blocurile senzorului nu apar în paletă: unitatea nu e adăugată în proiect (pasul 2) sau e alt tip decât cel fizic conectat. Adaug-o explicit și verifică mufa aleasă în UIFlow — trebuie să coincidă cu cea reală.
  • Citiri înghețate: aceeași boală ca la laboratorul 8 — citirea în afara buclei. Toate blocurile de citire stau în buclă.
  • Valori absurde (temperatura 0 sau -1 constant): senzorul nu comunică — mufă greșită, cablu neînfipt până la capăt sau unitate declarată pe alt port. Se verifică fizic, la stație, în 30 de secunde.
  • Alarma nu se mai oprește: bucla intermitentă a LED-urilor e infinită și nimic nu mai apucă să citească butonul B. Fă clipirea scurtă (o aprindere-stingere pe trecere prin bucla principală), nu o buclă separată fără ieșire.
  • Butonul pare ignorat: evenimentul de buton e bloc separat, nu se pune în bucla principală. Verifică și că nu ai două evenimente pe același buton — se bat cap în cap.

Misiunea ta

Nivel de bază (obligatoriu): stația funcțională la testul de la stație: tablou de bord cu cel puțin două mărimi reale, stare cu decizie automată, alarmă manuală de pe buton cu revenire.

Extindere: înregistrare minimală — la fiecare declanșare a alarmei, incrementează un contor „alarme azi" afișat pe ecran; plus valorile minime și maxime văzute de la pornire (două variabile actualizate în buclă cu câte un if).

Provocare (pe hârtie, se predă): schema-bloc a stației voastre ca obiect comunicant complet — cele patru etaje, cu etajul 4 proiectat serios: ce date ar pleca, cât de des, către cine, și ce s-ar întâmpla la celălalt capăt. Apoi răspundeți în scris la întrebarea incomodă: ce ar afla despre clasă cineva care interceptează aceste date timp de o săptămână? (Da, și obiectele comunicante au probleme de viață privată — de-asta întrebarea nu e retorică.)

Ai terminat când:

  • stația a trecut testul complet la rotație, în fereastra de timp;
  • variabila unică de alarmă e vizibilă în program și echipa poate explica de ce e una singură;
  • schema-bloc pe patru etaje e desenată și fiecare bloc al programului e mapat pe un etaj;
  • răspunsul la întrebarea de viață privată există și e mai lung de o frază.