====== 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]]