Curiosity
Lβunico beacon Holyiot con una board definition ZEPHYR ufficiale (holyiot_21014). Stesso nRF52810 del 21011, ma tondo Γ30 Γ 8.4 mm, IP66 (il 21011 Γ¨ rettangolare) β e soprattutto: pulsante, LED e accelerometro sono giΓ mappati nel devicetree, niente reverse engineering.
β Al banco (17/07/2026): firmware Visla flashato sulla board VERA, pulsante OK al primo colpo. A differenza del 25027 (compilato per una board sbagliata, aspettava pressioni fantasma) o del 21011 (board Zephyr assente), qui -b holyiot_21014 e tutto combacia.
π AliExpress β HOLYIOT-21014-B Β· β¬10.99 Β· IP66 Β· recensioni HA: β~6 mesi con una CR2032β
Specs
| SoC | Nordic nRF52810 β Cortex-M4 (no FPU) Β· 192 KB flash / 24 KB RAM |
| Board Zephyr | β
holyiot_21014 (unica della serie) |
| Forma / IP | tondo Γ30 Γ 8.4 mm, 6.5 g Β· IP66 (polvere/spruzzi) |
| Accelerometro | β (LIS2DH nel dump) |
| Pulsante | β
gpio0.31 ACTIVE_HIGH (β οΈ polaritΓ opposta al 25008 P1.13 ACTIVE_LOW) |
| LED | gpio0.29 ACTIVE_LOW |
| Alimentazione | CR2032 |
π Firmware Visla β sulla board giusta (17/07/2026)
ππ 21014-B [C7F134BA] PREMUTO! cnt 1β2
Compilato per la board canonica, niente pin da indovinare:
west build -p -b holyiot_21014 visla-beacon
π» visla-beacon/ β lo stesso identico sorgente del 25008/21011/25027. Device ID C7F134BA dal silicio (hwinfo) β anti-clonazione gratis.
β οΈ RAM al 92% (22.720 / 24.576 B): lo stack BLE di Zephyr riempie quasi tutto. Funziona, ma 1.8 KB liberi β come il 21011, Γ¨ il limite reale del nRF52810 (non la flash).
β Il pulsante ACTIVE_HIGH Γ¨ gestito dal devicetree senza toccare il codice: se lo cablassi a mano con la logica del 25008 (ACTIVE_LOW), impazziresti. Γ il valore di avere la board definition giusta.
π SWD + backup
Found SW-DP with ID 0x2BA01477 β Cortex-M4 (come il 21011)
AP[0]: Core found β APPROTECT non attivo
Backup: backup/holyiot_21014b_stock.bin β 192 KB, 76% pieno (firmware Holyiot = nRF5 SDK classico, come il 21011).
β‘ Gotcha del banco: DIO/CLK invertiti al primo tentativo β VTref buono ma Could not connect. Scambiati β connesso a 4 MHz. Γ lβerrore che si ripete su questi pad minuscoli.
π Bug LED bloccato β il pulsante ACTIVE_HIGH senza pull-down (17/07/2026)
Sintomo (segnalato al banco): premendo il tasto, a volte il LED rosso restava fisso e non tornava normale.
Causa doppia:
- Il pulsante del 21014 Γ¨
ACTIVE_HIGH(gpio0.31) senza pull-down β da rilasciato il pin resta a livello alto (floating) β il firmware lo legge come βsempre premutoβ. - Il primo tentativo di fix (loop che rilegge il pin) credeva a quel pin bugiardo β LED e flag advertising inchiodati a
0x01.
Fix definitivo: il LED non insegue piΓΉ lo stato del pulsante (inaffidabile su un pin floating), ma fa un lampo momentaneo di 150 ms guidato da un timer. Un evento momentaneo non puΓ² restare bloccato. Idem per il flag nellβadvertising.
prima: flag 0x01 FISSO (bloccato) LED sempre rosso
dopo: flag 0x00 a riposo Β· 0x01 solo nell'istante del click Β· LED lampeggia
contatore pulito 1β2β3β4 Β· campanello intatto
β Lezione: Γ¨ lo stesso principio del press_count e del debounce β non fidarsi di un singolo stato/evento, usare qualcosa di robusto. E soprattutto: la polaritΓ del pulsante cambia tra le board Holyiot (25008 ACTIVE_LOW + pull-up Β· 21014 ACTIVE_HIGH senza pull) β un firmware che assume la polaritΓ sbagliata legge il pulsante al contrario. Il devicetree gestisce la logica, ma il pull mancante resta una trappola hardware.
ποΈ La famiglia beacon Holyiot testata da Visla
| Modello | Chip | Forma | Pulsante | Buzzer | Board Zephyr | devID |
|---|---|---|---|---|---|---|
| 25008 | nRF54L15 | tondo | β P1.13 | β | β | 81403C51 |
| 25027 | nRF54L15 | tondo | β | β P1.06 | β | 1D523C82 |
| 21011 | nRF52810 | rettang. | β | β | β | D295C383 |
| 21014-B | nRF52810 | tondo IP66 | β | β | β
holyiot_21014 | C7F134BA |
Quattro modelli, tre chip, un solo firmware Visla β ognuno col suo device ID dal silicio, quando di fabbrica erano tutti cloni (UUID FDA50693-..., Major 10011).
π― Note per Visla
- β La board di riferimento per prototipare in Zephyr sul nRF52810: definizione ufficiale, niente reverse engineering. Se il Tag adottasse un 52810 (improbabile β troppo poca RAM), si partirebbe da qui.
- IP66 β lβunico della serie adatto a un uso non protetto.
- β οΈ Ma per il Tag di produzione resta il nRF54L15 (25008): 1.5 MB flash e 256 KB RAM contro i 192/24 di questo. Il 52810 va bene per un beacon, non per il tracker.