====== 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 ===
* https://github.com/jjwbruijn/OpenEPaperLink
* http://dmitry.gr/?r=05.Projects&proj=29.%20eInk%20Price%20Tags
===== 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
* **Responsabile**:
* **Membri**:
* **Data inizio**:
* **Data fine**:
* [[https://git.mittelab.org/mittelab/|Repository]]