Atelier.

atelier · lecții

Lecția 08 25 min intermediar 3 întrebări quiz

Tag WiFi pentru mașinuță — cum face fiecare Hot Wheels să fie detectabilă

ESP32-C3 SuperMini + LiPo + TP4056 = un tag de 5g pe care îl lipești sub o mașinuță. Emite probe request WiFi pe care VIA îl numără ca pe un telefon.

Ce înveți

  • De ce VIA nu poate detecta mașinuțele Mattel direct (n-au WiFi)
  • Cum construiești un tag mic care emite probe request
  • Cum lipești corect un sistem cu baterie LiPo + încărcător + switch
  • Cum flashezi cod pe ESP32-C3 prin Arduino IDE

De ce e nevoie de tag

VIA din clasa lui Darius numără probe requests WiFi — mesaje pe care le emite telefonul tău la fiecare câteva secunde, întrebând “cunoști vreo rețea WiFi pe aici?”.

Dar la concurs vrei să arăți traficul, nu telefoane judecătorilor. Și mașinuțele Mattel din macheta orașului n-au radio WiFi — sunt doar bucățele de metal și plastic.

Soluția: lipești sub fiecare mașinuță un mic emițător WiFi care face același lucru ca telefonul. VIA nu știe că-i un tag — el vede doar “un telefon”, la fel.

Ce conține tag-ul

3 piese mici + un switch:

  • ESP32-C3 SuperMini — placa mică cu WiFi. Programează prin USB-C.
  • LiPo 500mAh — bateria. Plată, 6×20×40mm.
  • TP4056 BMS — încărcător + protecție. Te oprește să strici LiPo-ul.
  • Slide switch — ON/OFF, ca să nu se descarce noaptea.

Total greutate: ~10g. Intră sub o Hot Wheels fără probleme.

Cum se leagă — 5 lipituri concrete

Schema completă cu cele 4 piese și cele 5 fire. Click pe imagine ca să o mărești dacă pad-urile sunt prea mici.

Schema completă: LiPo + TP4056 + Slide switch + ESP32-C3 cu cele 5 fire

Două culori de fir:

  • Roșu = voltaj pozitiv (B+, OUT+, 5V) — energia care merge spre piese
  • Negru = voltaj zero / masă (B−, OUT−, GND) — drumul de întoarcere

Folosești fir foarte subțire — 28 sau 30 AWG. Mai gros nu intră bine pe pad-urile mici și-i prea greu pentru o mașinuță.

Pașii, în ordine

Lipitura 1 — fir ROȘU, LiPo + → TP4056 B+

Pe LiPo ai deja un JST cu 2 fire (roșu și negru). Lipești firul roșu al JST-ului pe pad-ul B+ al TP4056. Dacă nu vrei să tai JST-ul, lipești un fir scurt direct între pad-ul B+ și firul roșu, sau adaugi un JST mamă pe TP4056.

Lipitura 2 — fir NEGRU, LiPo → TP4056 B−

Aceeași poveste, dar pentru firul negru → pad-ul B−.

Atenție: dacă inversezi + cu aici, arzi TP4056-ul instant. Verifică de 2 ori înainte să dai cositor.

Lipitura 3 — fir ROȘU, TP4056 OUT+ → Switch pin 1

Pe slide switch sunt 3 pini metalici (1, 2, 3 — orientat cu pin 1 spre stânga). Lipești firul de la OUT+ pe pin 1.

Lipitura 4 — fir ROȘU, Switch pin 2 → ESP32-C3 5V

Pin 2 al switch-ului (cel din mijloc) e pinul comun. Lipești firul de la el pe pad-ul 5V al ESP32-C3 SuperMini (pad-ul mare, etichetat „5V” pe spatele plăcii).

Lipitura 5 — fir NEGRU, TP4056 OUT− → ESP32-C3 GND

Singurul fir negru între TP4056 și ESP32 — direct, fără switch. GND-ul nu se oprește niciodată.

Verificare cu multimetru

Înainte să flashezi cod, verifici că alimentarea funcționează:

  1. Conectezi LiPo-ul (dacă nu-i deja).
  2. Switch-ul în poziția ON (slider spre pin 1, contact cu pin 2).
  3. Cu multimetrul măsurând DC volți: + pe pad-ul 5V, pe pad-ul GND.
  4. Așteptat: 3.7–4.2V (depinde cât e încărcată bateria).
  5. Switch în poziția OFF → 0V.

Dacă vezi 0V sau ceva ciudat → vezi tabelul troubleshoot mai jos sau retopește joint-urile care arată mat (lecția 07c-lipire).

Codul firmware (Arduino IDE, ESP32-C3)

#include <WiFi.h>

void setup() {
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFi.disconnect();
  delay(100);
}

void loop() {
  // Scanare WiFi pe canalul 1 (canalul pe care ascultă VIA)
  // Asta emite automat probe requests
  WiFi.scanNetworks(true, true, false, 100, 1);

  // Sleep 2 secunde
  delay(2000);
}

20 de linii. Atât.

Cum flashezi:

  1. Conectezi tag-ul prin USB-C la calculator.
  2. În Arduino IDE: Tools → Board → ESP32C3 Dev Module.
  3. Port: alegi COM-ul nou care apare.
  4. Sketch → Upload.
  5. Deschide Serial Monitor (115200) — ar trebui să vezi mesaje de scanare la fiecare 2 secunde.

Cum testezi: pornește placa VIA N1 lângă tag-ul nou. Pe OLED, contorul “Telefoane:” ar trebui să crească într-o secundă-două.

MAC unic per tag — obligatoriu pentru 3 tag-uri

Dacă faci 3 tag-uri identice cu același cod, VIA le numără pe toate ca pe un singur telefon (același hash de MAC = 1 dispozitiv unic). Asta strică demo-ul — Darius pune 3 mașinuțe pe macheta dar contorul „Telefoane:” rămâne 1.

Fix: schimbi MAC-ul prin cod, înainte de a porni WiFi.

Codul

În setup-ul tagului, înainte de WiFi.mode(WIFI_STA):

#include <esp_wifi.h>

// MAC unic pentru ACEST tag — schimbă ultimul byte între tag-uri
// Tag 1: ..., 0x01
// Tag 2: ..., 0x02
// Tag 3: ..., 0x03
uint8_t MAC_TAG[] = { 0xC0, 0x49, 0xEF, 0x00, 0x00, 0x01 };

void setup() {
  Serial.begin(115200);

  // SCHIMB MAC-UL ÎNAINTE DE WIFI
  WiFi.mode(WIFI_STA);
  esp_wifi_set_mac(WIFI_IF_STA, MAC_TAG);

  WiFi.disconnect();
  delay(100);
}

Cum testezi că merge

În Serial Monitor, după setup adaugi:

Serial.print("MAC actual: ");
Serial.println(WiFi.macAddress());

Ar trebui să vadă: C0:49:EF:00:00:01. Schimbi ultimul byte la fiecare tag, reflashezi, verifici cu Serial.

Atenție: primul byte trebuie să rămână par (cum C0 = 192). MAC-urile cu primul byte impar sunt multicast — WiFi-ul ESP32 le refuză.

Alte provocări

  • Sleep mai adânc — în loc de delay(2000), folosește esp_sleep_enable_timer_wakeup
    • esp_deep_sleep_start. Bateria ține de 10× mai mult.
  • Adaugă un LED indicator — un LED mic care clipește o dată pe transmisie. Așa vezi când tag-ul lucrează fără să te uiți pe Serial Monitor.

Pas următor

Acum poți completa Faza 4.5 din proiectul VIA — construiește 3 tag-uri, lipește-le sub 3 mașinuțe Mattel, și testează că semafoarele le numără când le plimbi prin macheta orașului. Mergi la proiectul VIA →

După lecția asta, poți

  • Construiești un tag WiFi de ~10g care emite probe requests sub orice mașinuță
  • Înțelegi de ce LiPo NU se leagă direct la ESP32 — TP4056 cu BMS e obligatoriu
  • Schimbi MAC-ul ESP32-C3 ca să faci tag-uri unice (3 tag-uri = 3 telefoane, nu 1)
  • Verifici că tag-ul e numărat de VIA înainte să-l lipești sub mașină