Philipp Schweizer ha costruito un sistema di sorveglianza per stampanti 3D FDM che si accorge da solo quando una stampa fallisce. Il cuore è un modello di anomaly detection che gira interamente su Arduino UNO Q, accanto alla stampante, senza cloud e senza abbonamento. La scheda guarda il piano di stampa ogni 15 secondi, e quando qualcosa non torna manda una notifica push con foto al telefono e può mettere in pausa la stampante.
Il costo dell’hardware sta tra 125 e 140 euro. Dentro ci sono l’UNO Q nel bundle 4 GB con alimentatore USB-C a circa 88 euro, il UNO Media Carrier a circa 19 euro, la camera IMX219 in formato V2 tra 17 e 30 euro, più 5 euro di PLA, viti e dadi per case e supporto. Il modello quantizzato occupa 3,9 MB e usa circa lo 0,3 percento del tempo di calcolo disponibile con un’immagine ogni 15 secondi.
Moonraker, FOMO-AD e tre allarmi su quattro controlli
Il ciclo di controllo parte da una domanda: la stampante sta lavorando? L’UNO Q lo chiede alla Moonraker API, quindi aspetta la risposta prima di catturare un fotogramma dalla camera IMX219. La camera eroga 632 x 480 pixel, ma il modello FOMO-AD di Edge Impulse lavora su immagini molto più piccole: 96 x 96 pixel nella prima versione, poi 160 x 160 pixel. L’inferenza per immagine richiede 41 ms a 96 x 96 pixel in int8 e 67 ms a 160 x 160 pixel in float32.

Il modello restituisce un punteggio di anomalia. Per evitare che un singolo fotogramma storto faccia scattare tutto, il sistema aspetta che tre degli ultimi quattro controlli superino la soglia. Solo allora parte l’allarme: una matrice LED rossa, una foto di prova con le regioni sospette marcate, un messaggio MQTT verso Home Assistant e, se vuoi, un comando di pausa alla stampante. La pagina di stato è servita sulla porta 7000.
La catena software è tutta in casa. Edge Impulse Studio per il modello, Arduino App Lab con i brick visual_anomaly_detection e web_ui, GStreamer per lo script di cattura frame, l’ingestion API di Edge Impulse per caricare le immagini via curl, Klipper per rendere la stampante connessa in rete. Sul fronte hardware, il modulo fotocamera con sensore Sony IMX219 monta lo stesso sensore del progetto, ma è pensato per Raspberry Pi 5: prima di acquistarlo controlla che cavo e connettore siano compatibili con il carrier, mentre il UNO Media Carrier fa da supporto e da interfaccia per la scheda.
Soglia a 40, F1 score a 1,00 e cinque fallimenti reali
Il primo modello ha usato circa 2.600 immagini normali, raccolte in una settimana di stampe quotidiane, senza nessuna immagine di fallimento. Con la soglia predefinita di 27,3 l’F1 score si è fermato a 0,23. Le immagini normali avevano un punteggio mediano di 26 e il 99 percento stava sotto 33, mentre le immagini di fallimento partivano da 44. Alzando la soglia a 40 l’F1 score è arrivato a 1,00.

Il training ha richiesto cinque minuti. Il secondo modello ha usato circa 2.300 immagini normali e ha rilevato tutte le 20 immagini di fallimento disponibili, tra cui quelle di una stampa con stringing non pianificata. Il primo giorno di funzionamento il sistema ha catturato cinque stampe fallite reali. Un buffer rotante conserva le ultime 2.500 immagini non anomale, pronte per il prossimo riaddestramento.
Per rifare il progetto servono pochi pezzi e un po’ di pazienza nella taratura. La lista della spesa è questa:
- Arduino UNO Q nel bundle 4 GB con alimentatore USB-C da 45 W
- UNO Media Carrier (ASX00083)
- Camera IMX219 in formato V2, versione Arducam NoIR
- Filamento PLA, viti e dadi per case e supporto
- Una stampante con Klipper e Moonraker API raggiungibile
Attenzione a un dettaglio: la Camera Module 3 non è compatibile con il carrier. Se la IMX219 non basta, si può ripiegare su una webcam USB collegata a un hub USB-C. Il montaggio completo, la pagina di stato e il ciclo di riaddestramento sono descritti sul sito del maker Philipp Schweizer, insieme ai passaggi che hanno portato dalla soglia sbagliata al primo allarme affidabile.
Fonte: https://raspberry.tips/en/kuenstliche-intelligenz/edge-ai-arduino-uno-q-print-watchdog
