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.
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ă:
- Conectezi LiPo-ul (dacă nu-i deja).
- Switch-ul în poziția ON (slider spre pin 1, contact cu pin 2).
- Cu multimetrul măsurând DC volți:
+pe pad-ul5V,−pe pad-ulGND. - Așteptat: 3.7–4.2V (depinde cât e încărcată bateria).
- 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:
- Conectezi tag-ul prin USB-C la calculator.
- În Arduino IDE:
Tools → Board → ESP32C3 Dev Module. - Port: alegi COM-ul nou care apare.
Sketch → Upload.- 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șteesp_sleep_enable_timer_wakeupesp_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ă