Epaper-2.9
Grazie ad un firmware alternativo (creato mediante reverse engineering da ###) ed uno scipt python che li comanda è possibile riutilizzare dei cartellini per prezzi da supermercato con schermo e-paper a proprio piacimento. Il protocollo ideato da ### funziona nel seguente modo:
- il Tag si cerca un AP a cui collegarsi ed in caso lo trovi va poi a dormire per 40 s
- al risveglio chiede se ci sono dati nuovi (ed eventualmente invia la propria temperatura e livello batteria)
- se non ci sono nuovi dati continua il loop ogni 40 secondi
- se ci sono nuovi dati al risveglio successivo (non mi è chiaro perchè non lo faccia al giro precedente) lo script python glie li invia ed il Tag procede alla visualizzazione.
Link principali
Materiali
- uno (o più!) ePaper Tag
- Programmatore autocostruito con supporto stampato in 3D e scheda ESP32 Wroom (o Arduino nano)
- Scheda ESP32-C6 da usare come AP (access point / base station per poi comandare i Tag)
Realizzazione programmatore
Stampare i 2 seguenti modelli: il primo è il guscio vero e proprio, il secondo è un blocchetto a scorrimento che serve a bloccare il Tag in posizione, dato che *sicuramente* il dentino stampato nel primo vi si romperà appena a toccarlo o comunque non farà tenuta perchè i pogo-pin spingono abbastanza (forza di uno moltiplicata per 10 pezzi):
https://github.com/atc1441/ZBS_Flasher/blob/main/jig/ZBS243_Pogo_Flasher_main_body.stl https://github.com/atc1441/ZBS_Flasher/blob/main/jig/ZBS243_Pogo_Flasher_latch.stl
Volendo c'è anche il fondo, ma non è strettamente necessario (io me ne sto disegnando uno per lasciare più spazio ai fili che escono dai pogo-pin)
Software
Componenti sw, da sistemare nel seguente ordine, con relativi link diretti alle sottodirectory di github:
1. ZBS_Flasher firmware (io ho usato ESP32_Flasher, c'è anche la versione per Arduino nano) https://github.com/atc1441/ZBS_Flasher/tree/main/ESP32_Flasher
2. ZBS_Flasher script https://github.com/atc1441/ZBS_Flasher/blob/main/zbs_flasher.py
3. zbs243_Tag_FW https://github.com/jjwbruijn/OpenEPaperLink/tree/5b9f8b324edd8777c8c9fd7d866fefef424e218c/zbs243_Tag_FW
4. OpenEPaperLink_esp32_C6_AP https://github.com/jjwbruijn/OpenEPaperLink/tree/5b9f8b324edd8777c8c9fd7d866fefef424e218c/ARM_Tag_FW/OpenEPaperLink_esp32_C6_AP
5. OpenEPaperLink-PyStation https://github.com/jjwbruijn/OpenEPaperLink/tree/5b9f8b324edd8777c8c9fd7d866fefef424e218c/ARM_Tag_FW/cc2531_OEPL/OpenEPaperLink-PyStation
Protocollo dialogo con il flasher
PC→ESP32
Sniffando la seriale ho ricavato questi:
CMD_GET_VERSION = 1
41 54 01 00 AB 35
CMD_RESET_ZBS = 11
41 54 0B 00 AB 3F
Guardando ai sorgenti python con le info sopra ho ipotizzato:
ATcn[…]CC
“AT” è l'inizio (riminiscenza di altri tempi..) c = comando in binario (es comando 11 è 0x0B) n = numero di bytes del comando in binario […] = eventuali bytes del comando CC = 2 bytes di CRC calcolato con 0xAB34 + somma dei bytes dopo “AT”
Accensione
41 54 0D 01 01 AB 43
Spegnimento
41 54 0D 01 00 AB 42
Reset ZBS
41 54 0B 00 AB 3F
Reset ESP
41 54 02 00 AB 36
PassThrough
41 54 32 00 AB 66