Conținut principal

IoT și software embedded, de la firmware la aplicație

Dezvoltăm sisteme IoT și software embedded ca un singur lanț, proiectat de aceeași echipă: firmware-ul, legătura radio, cloudul și aplicația de telefon. Rulează în producție într-un muzeu și, ca prototip, pe hardware-ul nostru de raliu.

FIG. 1Muzeul Baia, harta zonelorDate demonstrative
Harta live a zonelor pe planul muzeului: sala de etnografie cu 24 de persoane, sala de istorie cu 14, foaierul cu 5 și sala multifuncțională cu 4, fiecare colorată după ocupare, cu intrările și ieșirile din ultima oră.

Arhitectura unui sistem IoT: cinci straturi, un singur proiect

Cele mai multe defecte IoT apar între straturi, de aceea toate cinci se proiectează împreună.

FIG. 2De la senzor la ecran
Cele cinci straturi ale unui sistem IoT: senzorii alimentează un hub ESP32-S3 (dispozitiv), care comunică prin Bluetooth LE (legătură) cu o aplicație de telefon (gateway), care trimite citirile într-o bază de date din cloud (cloud), citite pe un dashboard (ecran).BLEHTTPSSenzoriGNSS, IMU, roțiHub ESP32-S3C, FreeRTOSAplicațieiOSPreluareDispozitive verificateBaza de dateCitiriDashboardHărți, reluăriDispozitivLegăturăGatewayCloudEcran

Cele cinci straturi, pe larg

Dispozitiv: Firmware
C pe ESP-IDF și FreeRTOS sau o placă de tip Arduino pentru primul prototip.
  • Numărare de impulsuri cu filtru de zgomot
  • Drivere pentru GNSS și senzori inerțiali
  • Jurnal pe card SD care rezistă la pierderea alimentării
Folosit la: Regularity Rally System, prototipul pentru baterii
Legătură: Protocol
Contractul dintre dispozitiv și tot ce urmează după el.
  • Bluetooth Low Energy
  • Împerechere securizată
  • Recuperarea datelor după o întrerupere
Folosit la: Regularity Rally System, prototipul pentru baterii
Gateway: Telefon sau edge
Piesa care face din pachete înregistrări și trimite comenzile înapoi.
  • Bluetooth pe iOS, în fundal
  • Reconectare și scanare din nou
  • Comenzi trimise înapoi la dispozitiv
Folosit la: Prototipul pentru baterii
Cloud: Preluarea datelor
O bază de date în cloud care acceptă ce trimite firmware-ul real.
  • Doar dispozitivele cunoscute sunt acceptate
  • Fiecare citire e păstrată
  • Senzorii noi se adaugă în siguranță
Folosit la: Muzeul Baia
Ecran: Dashboard și aplicație
Locul unde oamenii citesc datele și acționează.
  • Hărți de zone în timp real
  • Intervale orare în ora locală
  • Reluarea unei sesiuni întregi
Folosit la: Muzeul Baia, Regularity Rally System

Fiabilitate pe hardware real

  • Jurnal pe card SD, golit la pierderea alimentării
    Ce rezolvă: Contactul tăiat în mijlocul unei probe
    Proiect: Regularity Rally System
  • Jurnal de recuperare și watchdog în aplicație
    Ce rezolvă: Aplicația închisă de telefon în timpul unei probe
    Proiect: Regularity Rally System
  • Jurnale de sesiune versionate, care se pot relua
    Ce rezolvă: Un bug raportat după cursă, departe de mașină
    Proiect: Regularity Rally System
  • Tratarea resetării contoarelor direct în SQL
    Ce rezolvă: Un contor de vizitatori care repornește de la zero
    Proiect: Muzeul Baia
  • Mesajul brut păstrat la fiecare citire
    Ce rezolvă: O actualizare de firmware care schimbă forma datelor
    Proiect: Muzeul Baia
  • Restaurarea stării Bluetooth și reconectare automată
    Ce rezolvă: Un telefon blocat în buzunar sau ieșit din raza de acțiune
    Proiect: Prototipul de telemetrie pentru baterii

O singură echipă, de la firmware la aplicație

  • Formatul pachetelor se stabilește o singură dată, într-un document după care se testează ambele capete.
  • O citire care arată ciudat pe dashboard are un singur responsabil, de la senzor până la grafic.
  • Uneltele de reluare rulează același cod ca sistemul în funcționare, așa că o problemă văzută pe drum se reproduce la birou.
  • Corecțiile aplicației ajung direct pe telefoane, prin actualizări over-the-air, ca la audioghidul Muzeului Baia încă de la prima versiune.

Proiecte IoT, fiecare în stadiul lui real

Muzeul Baia

În producție

Contoarele alimentează harta zonelor; audioghidul merge offline.

Ocuparea sălilor în timp real, fără identificarea nimănui

Actualizarea ocupării sălilor, fără identificarea nimănui

FIG. 3Audioghid offlineConținut demonstrativ
Ecranul principal al aplicației ghid audio, în română: mesajul că tot conținutul e salvat pentru vizita offline, un buton pentru exponate, scanarea QR și trei exponate din colecție.
Ecranul unui exponat în aplicația ghid audio: ilustrația fălcii de mamut, titlul, playerul de narațiune oprit la 0:08 din 0:13 și textul exponatului în română.

Regularity Rally System

Prototip, cercetare proprie

Distanța de la roți, cu abaterile corectate prin GNSS.

Distanța de la roți, corectată prin GNSS

Eroare de cronometrare pe o probă de test de 3,2 km

Note despre proiect

Placa e rutată și trece verificările de proiectare, dar nu a fost încă fabricată, iar aplicația comunică deocamdată cu un hub simulat.

FIG. 4Ecranul pilotuluiDate de test
Ecranul pilotului în modul întunecat: ON PACE deasupra unei abateri mari, verzi, de plus 0,5 secunde, o bară de toleranță de la minus 2 la plus 2 secunde, următoarea schimbare de viteză, la 55 km/h, peste 3,00 km și sosirea la 9,00 km. Date de test sintetice.

Prototip de telemetrie pentru baterii

NDA

Telemetrie pentru baterii auto, de la firmware prin iPhone până în cloud.

Note despre proiect

Un prototip de validare, pentru uz tehnic. Fără numele clientului, fără capturi de ecran.

Domeniu
Baterii auto, UE
Dispozitiv
Firmware embedded, Bluetooth
Gateway
Aplicație de iPhone
FIG. 5Bucla de telemetrieNDA
Bucla de telemetrie pentru baterii: placa de senzori trimite citirile prin Bluetooth LE către o aplicație iOS nativă, care le sincronizează într-un document din cloud pentru fiecare dispozitiv; comenzile scrise în cloud ajung înapoi la placă prin telefon.NotificareScriereSincronizareComandăPlacă de senzoriBaterie de 12 VAplicație iOSGatewayDocument de dispozitivUnul pe dispozitiv

Întrebări frecvente despre dezvoltarea IoT și embedded

Firmware, cloud și aplicație mobilă de la aceeași echipă

Aceeași echipă scrie totul: firmware-ul dispozitivului în C, preluarea datelor și baza de date, dashboard-ul și aplicația de telefon. Regularity Rally System cuprinde firmware, o placă proprie și o aplicație de iPhone; Muzeul Baia cuprinde contoare de vizitatori, preluare în cloud, o hartă pentru personal și un audioghid.

Proiectare hardware și PCB

Plăcile de prototip se proiectează ca cod: placa de raliu e un netlist SKIDL rutat în KiCad, cu simulări SPICE pentru intrarea de alimentare. Producția de serie și certificarea radio sau de siguranță țin de o etapă ulterioară și implică un producător și un laborator de testare acreditat.

Cipuri, senzori și protocoale

ESP32-S3 pe ESP-IDF și FreeRTOS, plăci Bluetooth de tip Arduino pentru prototipuri timpurii, receptoare GNSS u-blox, senzori inerțiali ST și senzori Hall TI. Legături folosite până acum: Bluetooth LE GATT pe NimBLE și CoreBluetooth și HTTP push de la senzori PoE.

De la prototip la producție

Un prototip dovedește măsurarea și protocolul. Producția adaugă o placă fabricată și testată, o carcasă, certificarea și o cale de actualizare a dispozitivelor pe teren. Hubul de raliu arată unde se află un prototip: placă rutată, firmware care trece testele în CI, punerea în funcțiune încă neîncepută.

Funcționare offline

Dispozitivele și aplicațiile sunt construite să meargă fără conexiune. Hubul de raliu scrie pe un card SD și recuperează datele pe telefon după o întrerupere; audioghidul muzeului își păstrează conținutul pe telefon, așa că vizita merge și fără semnal.

Datele de la dispozitive: unde ajung

Citirile ajung într-o bază de date din cloud, iar doar dispozitivele cunoscute le pot trimite. Contoarele muzeului sunt anonime prin construcție: numără trecerile dintre săli și nu identifică nicio persoană.

Un dispozitiv, firmware-ul și aplicația lui, într-un singur mesaj

Pentru început ajung câteva rânduri despre senzor și cine citește datele.

Studio
Cluj-Napoca, România, UE