EigenDama: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
m
scottecs 3d :)
m (scottecs 3d :))
 
(8 versioni intermedie di 2 utenti non mostrate)
Riga 1: Riga 1:
La '''''eigenDama''''' è nostro progetto di stampante 3D. Si tratta di una macchina basata sulla [http://reprap.org/wiki/Prusa_i3 RepRap Prusa i3], un progetto di stampante ''self-replicating''; in particolare, quella costruita ad eigenLab è gemella della variante elaborata presso il FabLab di Genova, la [http://fablabgenova.it/mw/index.php?title=I3_Kodama I3 kodama].
{{Template:Shutdown19June2018}}
 
La '''''eigenDama''''' una stampante 3D. Si tratta di una macchina basata sulla [http://reprap.org/wiki/Prusa_i3 RepRap Prusa i3], un progetto di stampante ''self-replicating''; in particolare, quella costruita ad eigenLab è gemella della variante elaborata presso il FabLab di Genova, la [http://fablabgenova.it/mw/index.php?title=I3_Kodama I3 kodama].
 
Abbiamo scelto questa famiglia di stampanti 3D per le sue caratteristiche di [[OpenSource|apertura]] del software, dell'hardware (per quanto possibile), e dei progetti. Per realizzare eigenDama abbiamo potuto fare affidamento sui progetti condivisi dal FabLab di Genova e da tutta la comunità OpenSource; facciamo altrettanto aprendo al pubblico la cartella sul [[Cloud]] in cui abbiamo accumulato tutte le nostre modifiche ai progetti, eccola qua:
 
https://cloud.eigenlab.org/s/wAK3dsHJ29g7tyw
 
Anche la pagina wiki che stai leggendo ha lo scopo di rendere accessibile a tutti e tutte l'utilizzo e l'appropriazione della stampante 3D che si trova in [[Casottino|casottino]].


[[File:Selfprinting.jpg|miniatura|L'eigenDama nell'atto di ''replicarsi'', mentre stampa il proprio carrello dell'asse X.]]
[[File:Selfprinting.jpg|miniatura|L'eigenDama nell'atto di ''replicarsi'', mentre stampa il proprio carrello dell'asse X.]]
== Manifesto ==
[[File:Scottecs-3d.jpg|miniatura|Anche chi non ha idea di come funzioni la stampa in 3D può venire ad imparare!]]
''Questa stampante è a disposizione di chiunque volesse utilizzarla, senza alcuna limitazione. Eccezion fatta per il seguente requisito: i progetti che passano per questa macchina devono essere rilasciati sotto licenza Open Access.'' [https://eigenlab.org/2017/02/costruiamo-una-stampante-3d/]


== Ingredienti ==
== Ingredienti ==
Riga 23: Riga 35:
* tastatore a effetto Hall (disegnati supporti per fissare la PCB del sensore);
* tastatore a effetto Hall (disegnati supporti per fissare la PCB del sensore);
* blocco dell'ingranaggio regolatore dell'asse Z (irrobustita la struttura aumentando lo spessore delle parti più fragili).
* blocco dell'ingranaggio regolatore dell'asse Z (irrobustita la struttura aumentando lo spessore delle parti più fragili).
Tutti i file sono pubblicati da qualche parte, sul cloud c'è una cartella apposita con i pezzi rifatti.
 
[[File:Blocco z agjuster eigendama.png|miniatura|Pezzi vecchio (viola) e nuovo (arancione) a confronto per il blocco dell'adjuster dell'asse Z.]]
Tutti i file sono pubblicati da qualche parte; sul cloud c'è una [https://cloud.eigenlab.org/s/wAK3dsHJ29g7tyw?path=%2FKodama%20-%20Files%20for%20fabrication%2FPezzi%20rifatti cartella apposita] con i pezzi rifatti.


=== Sensori ===
=== Sensori ===
Riga 51: Riga 65:


=== Buon senso ===
=== Buon senso ===
In realtà il primo e più importante ingrediente è il '''buon senso''': l'eigenDama, così come tante macchine e utensili autocostruiti e non, non è un [https://en.wikipedia.org/wiki/Cotoletta MacBook Pro], ossia non è un oggetto fatto per funzionare ''as is'' in ogni situazione e in ogni condizione sempre nello stesso modo, senza alcun rischio e senza bisogno di interazione con l'utente. Le problematiche nell'utilizzo fanno parte ''by definition'' del funzionamento dello strumento, e l'unico modo per preservarlo è fare attenzione a cosa potrebbe non funzionare.
In realtà il primo e più importante ingrediente è il '''buon senso''': l'eigenDama, così come tante macchine e utensili autocostruiti e non, non è un [https://en.wikipedia.org/wiki/Cotoletta MacBook Pro], ossia non è un oggetto fatto per funzionare ''"as is"'' in ogni situazione e in ogni condizione sempre nello stesso modo, senza alcun rischio e senza bisogno di interazione con l'utente. Le problematiche nell'utilizzo fanno parte ''by definition'' del funzionamento dello strumento, e l'unico modo per preservarlo è fare attenzione a cosa potrebbe non funzionare.


L'altro aspetto molto importante strettamente connesso alla consapevolezza di utilizzo, è la disponibilità ad osservare e cercare di comprendere quale possa essere la causa del malfunzionamento, al fine di suggerire la soluzione del problema e il miglioramento dello strumento.
L'altro aspetto molto importante strettamente connesso alla consapevolezza di utilizzo, è la disponibilità ad osservare e cercare di comprendere quale possa essere la causa del malfunzionamento, al fine di suggerire la soluzione del problema e il miglioramento dello strumento.
Riga 59: Riga 73:


=== Modellazione ===
=== Modellazione ===
Gli oggetti 3D si possono creare e modificare con una pletora di programmi, tra cui scegliere a seconda di gusti ed esigenze personali; l'importante è assicurarsi di poter salvare i file in un formato utilizzabile in fase di [[#Slicing|slicing]] per poter generare il g-code che poi piloterà la macchina per stampare l'oggetto. Lo standard ''de facto'' è il formato [https://en.wikipedia.org/wiki/STL_(file_format) STL], che memorizza la mesh triangolata registrando le posizioni dei vertici e la normale di ogni triangolo; in questo modo ovviamente si perdono le informazioni sulla scala dell'oggetto, ma questo non è un problema perché è uno dei parametri settati in fase di slicing.
Gli oggetti 3D si possono creare e modificare con una pletora di programmi, tra cui scegliere a seconda di gusti ed esigenze personali; l'importante è assicurarsi di poter salvare i file in un formato utilizzabile in fase di [[#Slicing|slicing]] per poter generare il g-code che poi piloterà la macchina per stampare l'oggetto. Lo standard ''de facto'' è il formato [https://en.wikipedia.org/wiki/STL_(file_format) STL], che memorizza la mesh triangolata registrando le posizioni dei vertici e la normale di ogni triangolo; in questo modo ovviamente si perdono le informazioni sulla scala dell'oggetto, ma questo non è un problema perché è uno dei parametri settati in fase di slicing.
 
La traduzione della descrizione geometrica dell'oggetto (il file <code>.stl</code>) nella sequenza di istruzioni dei motori, estrusori etc. perché la stampante realizzi effettivamente l'oggetto (il file <code>.gcode</code>) è compito di uno '''slicer''' (vedi la [[#Slicing|sezione apposita]]).
In fase di modellazione è però importante fare attenzione a che il modello sia effettivamente una ''manifold'', ossia una superficie chiusa senza bordo: alcuni slicer hanno problemi con modelli che non soddisfano questa condizione e potrebbero generare dei G-code corrotti. In tal caso bisogna tornare al modeler e risolvere il problema; alcuni software (come Blender) hanno delle funzioni automatiche di correzione di questi problemi come l'orientazione delle normali dei triangoli della mesh o l'eliminazione dei bordi unidimensionali.


==== OpenSCAD ====
==== OpenSCAD ====
Riga 67: Riga 84:


==== POV-Ray ====
==== POV-Ray ====
Il [http://www.povray.org/ POV] è un raytracer, particolarmente apprezzato dai/le matematici/che. Non supporta direttamente l'export o la [http://www.povray.org/resources/links/3D_Programs/Conversion_Utilities/ conversione] in formato STL, ma ci si può arrivare attraverso passaggi intermedi; stiamo lavorando alla possibilità di una conversione diretta.
Il [http://www.povray.org/ POV] è un raytracer (non libero), particolarmente apprezzato dai/le matematici/che. Non supporta direttamente l'export o la [http://www.povray.org/resources/links/3D_Programs/Conversion_Utilities/ conversione] in formato STL, ma ci si può arrivare attraverso passaggi intermedi; stiamo lavorando alla possibilità di una conversione diretta.


Viceversa, con POV-Ray è possibile renderizzare le singole fette ricavate da un file STL convertito con <code>stl2pov</code>: vedi [https://www.evilmadscientist.com/2007/slicing-stl-files-in-pov-ray/ qui].
Viceversa, con POV-Ray è possibile renderizzare le singole fette ricavate da un file STL convertito con <code>stl2pov</code>: vedi [https://www.evilmadscientist.com/2007/slicing-stl-files-in-pov-ray/ qui].
Riga 77: Riga 94:
Per '''slicing''' si intende il processo di creazione delle "fette" orizzontali dell'oggetto, ossia i vari livelli che vengono stampati progressivamente sovrapposti dalla macchina.  
Per '''slicing''' si intende il processo di creazione delle "fette" orizzontali dell'oggetto, ossia i vari livelli che vengono stampati progressivamente sovrapposti dalla macchina.  


Gli slicer normalmente prendono in input un file STL (vedi [[#Modellazione]]), più eventuali impostazioni specifiche per la macchina o preferenze costruttive per l'oggetto (vedi [[#Profiles]])), e producono in output un file [https://en.wikipedia.org/wiki/G-code G-code] (generalmente nel formato <code>.gcode</code>). Quest'ultimo è un formato standard per le macchine a controllo numerico: nel caso della stampante 3D le caratteristiche costruttive di eigenDama le impongono di procedere per strati sovrapposti, dunque il g-code conterrà le istruzioni per far muovere l'estrusore stampando ogni strato prima di passare al successivo.
Gli slicer normalmente prendono in input un file STL (vedi [[#Modellazione]]), più eventuali impostazioni specifiche per la macchina o preferenze costruttive per l'oggetto (vedi [[#Profiles]]), e producono in output un file [https://en.wikipedia.org/wiki/G-code G-code] (generalmente nel formato <code>.gcode</code>). Quest'ultimo è un formato standard per le macchine a controllo numerico: nel caso della stampante 3D le caratteristiche costruttive di eigenDama le impongono di procedere per strati sovrapposti, dunque il g-code conterrà le istruzioni per far muovere l'estrusore stampando ogni strato prima di passare al successivo.
 
In fase di slicing vanno settati molti parametri che dipendono crucialmente dalle caratteristiche del pezzo che si sta per stampare e dell'utilizzo che se ne farà. Ad esempio, il profilo di default prevede di costruire dei supporti laddove un "tetto" formi un angolo con la verticale maggiore di una certa soglia (opzione ''Support Overhang''), ma per certe applcazioni (ad esempio parti meccaniche molto piccole) i supporti creano delle imprecisioni ed è non solo possibile, ma preferibile, disabilitare la creazione dei supporti.
Un altro parametro che varia molto da pezzo a pezzo è l'''Infill Density'', che regola la percentuale di volume interno che viene effettivamente costruita.


==== Cura ====
==== Cura ====
Al momento i [[#Profiles|profili]] della eigenDama che che abbiamo per Cura sono:
Il [[#Profiles|profilo]] per Cura si trova nella [https://cloud.eigenlab.org/s/wAK3dsHJ29g7tyw?path=%2FCuraProfiles%2FeigenLab%20Profiles cartella condivisa] sul Cloud. Oltre a caricare i profili ricordati di inserire lo start G-code e l'end G-code (vedi anche la sezione apposita). Al momento il bundle contiene due profili:
* uno per la stampa di manufatti con migliori proprietà meccaniche
* uno per la stampa di manufatti con migliori proprietà meccaniche
* un altro per la stampa di oggetti con una migliore risoluzione grafica e accuratezza dei dettagli.
* un altro per la stampa di oggetti con una migliore risoluzione grafica e accuratezza dei dettagli.


==== Slic3r ====
==== Slic3r ====
Convertitore da STL a g-code per stampanti 3D RepRap.
Questo è un convertitore da STL a g-code per stampanti 3D RepRap. Le impostazioni di questo slicer si suddividono in tre gruppi (e possono essere importate/esportate indipendentemente):
* impostazioni proprie della stampante (come le dimensioni del piatto e altre proprietà della macchina);
* impostazioni del materiale (come la temperatura di stampa e altri parametri specifici di ogni materiale di stampa);
* impostazioni di stampa: questi settaggi (come l'infill etc.) dovrebbero essere scelti in base al pezzo e all'uso che se ne farà.
 
Al momento abbiamo un bundle contenente i settaggi per la stampante eigenDama, il materiale ABS, e un settaggio di stampa piuttosto generico, nella solita [https://cloud.eigenlab.org/s/wAK3dsHJ29g7tyw?path=%2Fslic3r cartella condivisa] sul Cloud. Ricordati di aggiungere anche gli start ed end G-code.


=== Pronterface ===
=== Pronterface ===
Riga 91: Riga 116:


=== Arduino IDE ===
=== Arduino IDE ===
Questo software fa stronzo-ca'a. Ciononostante, lo usiamo con installate le librerie builtin, più '''HID''' (versione 1.0.0) e '''LiquidCrystal''' (versione 1.0.4).
Questo software fa stronzo-ca'a.<ref>La IDE è pessima. Chiudendo il programma a volte resta in vita il processo che tiene occupata la seriale: se non sai di questo bug puoi spendere '''ore''' a capire come mai non riesci a parlare con la stampante da altre applicazioni.</ref> Ciononostante, lo usiamo con installate le librerie builtin, più '''HID''' (versione 1.0.0) e '''LiquidCrystal''' (versione 1.0.4).


== HowTo ==
== HowTo ==
Riga 98: Riga 123:
=== Profiles ===
=== Profiles ===
Il '''profilo''' è il set di configurazioni e impostazioni che permettono allo slicer di avere tutte le informazioni necessarie relative alla specifica macchina, in modo da preparare il g-code.
Il '''profilo''' è il set di configurazioni e impostazioni che permettono allo slicer di avere tutte le informazioni necessarie relative alla specifica macchina, in modo da preparare il g-code.
Tra le impostazioni che si può regolare in un profilo c'è lo spessore dei muri, il tipo e la densità di fill-in, se la macchina deve costruire i supporti ove necessario, etc.<ref name="profili-cloud">I profili che stiamo testando per eigenDam si trovano nella relativa [https://cloud.eigenlab.org/s/iEXkRnUei0TpPAb cartella sul cloud].</ref>
Tra le impostazioni che si può regolare in un profilo c'è lo spessore dei muri, il tipo e la densità di fill-in, se la macchina deve costruire i supporti ove necessario, etc. I controlli e settaggi possibili sono un fottiliardo.
 
Puoi cominciare dai profili che stiamo testando e che manteniamo nella [https://cloud.eigenlab.org/s/wAK3dsHJ29g7tyw cartella condivisa].


==== Start ed End g-code ====
==== Start ed End g-code ====
Lo '''start g-code''' e l''''end g-code''' sono porzioni di g-code che vengono eseguite dalla stampante prima e dopo il g-code "principale" generato dallo slicer, rispettivamente. In questo modo si possono eseguire operazioni preliminari o di finitura, forzare o inibire l'esecuzione di calibrature varie, accendere e spengere ventole se necessario etc.
Lo '''start g-code''' e l''''end g-code''' sono porzioni di g-code che vengono eseguite dalla stampante prima e dopo il g-code "principale" generato dallo slicer, rispettivamente. In questo modo si possono eseguire operazioni preliminari o di finitura, forzare o inibire l'esecuzione di calibrature varie, accendere e spengere ventole se necessario etc.
Gli start/end g-code che stiamo testando si trovano sull'[https://cloud.eigenlab.org/s/Mt7Ar33Kvwt57fm eigenCloud]
Gli start/end g-code che stiamo testando si trovano sull'[https://cloud.eigenlab.org/s/wAK3dsHJ29g7tyw eigenCloud] e devi inserirli nel tuo slicer prima di generare un pezzo da stampare con eigenDama.


=== Preparazione ===
=== Preparazione e fasi finali ===
# Accendi la macchina.
# Accendi la macchina.
# '''Tira giù il chiodo del tastatore'''. Se la testina è troppo vicina al piatto per estrarre completamente il chiodo del tastatore, sollevala dal display con <code>Prepare → Move Axis → Move Z → Move 1mm</code> e rotella.
# '''Tira giù il chiodo del tastatore'''. Se la testina è troppo vicina al piatto per estrarre completamente il chiodo del tastatore, sollevala dal display con <code>Prepare → Move Axis → Move Z → Move 1mm</code> e rotella.
# Nebulizza la lacca per capelli sul piatto. Tieni il piatto lontano dalla testina e dalle altre parti di eigenDama per non spruzzare la lacca dove non serve. '''Importante:''' quando una stampa richiede tanto tempo, metti proporzionalmente più lacca.
# Nebulizza la lacca per capelli sul piatto. Tieni il piatto lontano dalla testina e dalle altre parti di eigenDama per non spruzzare la lacca dove non serve. '''Importante:''' quando una stampa richiede tanto tempo, metti proporzionalmente più lacca.
# ... <!-- simboleggia l'intermezzo in cui si stampa -->
# Al termine della stampa, aspetta qualche minuto che si raffreddi. Togli le clip e il vetro e poggialo dove non si rompa; frammezzare un canovaccio tra il vetro e il banco è più che sufficiente. Togli il pezzo dal piatto col taglierino, cominciando dal brim esterno e inserendo la lama al disotto della plastica e facendo leva per sollevare il pezzo.
# '''Pulisci il vetro!''' Se la lacca secca si accumula formando rilievi sul vetro, possono presentarsi imprecisioni di stampa. Gratta via la lacca e i rimasugli di plastica dal vetro usando il taglierino. Nel caso in cui ci sia veramente tanto materiale accumulato, l'alcool l'ammorbidisce e permette di toglierlo con facilità.


=== Bed leveling e stampa ===
== Problemi (''aka'' trabolsciùting) ==
... Supponendo che fin qui sia andato tutto bene, si seleziona col cursore il '''preriscaldamento''' adatto per il materiale che abbiamo scelto. Quando il piatto e l'estrusore hanno raggiunto la giusta temperatura, si sceglie il file <code>.gcode</code> da stampare col cursore: l'eigenDama inizia quindi il '''bed leveling''' ossia una misura precisa dell'inclinazione del piatto per poterla compensare muovendo corrispondentemente l'asse z durante la stampa di uno strato.
La nostra cara amica non perde occasione per palesare i problemi più disparati. Teniamo un diario dei problemi che affrontiamo, sperando che possa risultare utile a chi incontra problemi simili!
 
== Problemi (aka Trabolsciùting) ==
La nostra cara amica non perde occasione per palesare i problemi più disparati. Teniamo un diario dei problemi che affrontiamo, sperando possa risultare utile a chi incontra problemi simili!


=== Lievitazione del Filamento ===
=== Lievitazione del Filamento ===
Riga 121: Riga 148:


In parte questo è sicuramente dovuto all'umidità contenuta nel filamento, ma anche a una temperatura troppo elevata all'interno della guaina, dovuta nel nostro caso alla ventola spenta.  
In parte questo è sicuramente dovuto all'umidità contenuta nel filamento, ma anche a una temperatura troppo elevata all'interno della guaina, dovuta nel nostro caso alla ventola spenta.  
Dopo avere essiccato il filamento in forno ventilato a temperatura di 75° centigradi, si è proceduto anche a inserire nello start g-code il comando per l'accensione della ventola.  
Dopo avere essiccato il filamento in forno ventilato a temperatura di 75° centigradi, si è proceduto anche a inserire nello start g-code il comando per l'accensione della ventola.
 
Ci sono altre lezioni da imparare dalle complicazioni legate alla ventola:
# Alcuni modelli (come la nostra) non hanno un potenziometro che ne regoli la velocità, quindi hanno soltanto due "velocità" possibili: accesa o spenta. Per accendere la ventola dal controller LCD bisogna quindi settare la velocità a 255, mentre nel G-code l'istruzione <code>M106</code> senza argomenti accende per default la ventola di raffreddamento alla velocità massima.<ref name="fan gcode">http://marlinfw.org/docs/gcode/M106.html</ref>
# La sequenza di istruzioni per il '''Pre-heating''' (che tra le altre cose specifica se inizia a riscaldarsi prima l'estrusore e poi l'heatbed o viceversa o insieme, e quando accendere la ventola) dipende fortemente da come si arriva alla fase di pre-heat:
## Se si non si chiede esplicitamente il pre-heating prima di lanciare la stampa, verrà usato il blocco di istruzioni generato dallo slicer (ed è determinato in parte anche dallo start G-code). Alcuni slicer spengono la ventola durante la deposizione dei primi layer, ma questo non dovrebbe impedire che si accenda durante il pre-heating.
## Se si chiede il pre-heating dal controller LCD, verrà usato il blocco di istruzioni nel firmware. 


=== Il bed leveling funesta tuttoquanto ===
=== Il bed leveling funesta tuttoquanto ===
L'abbiamo disabilitato, non so altro per ora.
L'[http://marlinfw.org/docs/features/auto_bed_leveling.html Auto Bed Leveling] (ABL, da non confondere con [http://marlinfw.org/docs/features/unified_bed_leveling.html UBL]) consiste in una misura precisa dell'inclinazione del piatto, per poterla compensare muovendo corrispondentemente l'asse z durante la stampa di uno strato. Per abilitarlo bisogna dare il comando (nello start G-code) <code>G29</code>, rigorosamente ''dopo'' aver fatto Auto-Home (comando <code>G28 [asse o assi]</code>) di tutti gli assi. Al momento nel firmware abbiamo impostato il metodo a griglia con 3x3 punti.
[[File:Gancio+bedlevel2.jpg|miniatura|Una stampa di prova con l'''Auto Bed Leveling'' in cui qualcosa va '''parecchio''' storto, tanto che i singoli strati non aderiscono l'uno sull'altro e il pezzo ha la stessa resistenza meccanica di un Ritonello inzuppato nella birra.]]
 
La rilevazione dell'inclinazione del piatto funziona effettivamente: questo si può testare portando la testina a quota z=0 e muovere lungo il piano orizzontale xy; si osserva che l'asse z compensa l'inclinazione del piatto, e l'estrusore rimane a distanza costante dal vetro.
Ciò nonostante, durante la stampa del pezzo la compensazione data dal ABL fa sì che gli strati di materiale stampato aderiscano male gli uni sugli altri, e compaiono altri difetti che rendono la stampa inservibile.
 
Al momento l'unica soluzione è disabilitare ABL, ma non è un vero problema: abbiamo calibrato precisamente il piatto e l'inclinazione dell'asse x, e anche senza ABL si stampa benissimo.
 
=== Deformazione del fasciame ===
Non abbiamo trattato o abbiamo trattato poco (non lo so, integrare!) il compensato che costituisce tanta parte della stampante 3D... Col sopraggiungere dell'inverno, l'umidità assorbita dal legno e la maggiore differenza di temperatura tra interno ed esterno della stampante, hanno fatto sì che alcuni pezzi di compensato si incurvassero, variando la geometria della macchina in alcuni punti. Così, alcune parti che prima erano separate ora vengono a contatto, addirittura ostacolando i movimenti della macchina.
[[File:Piatto-sbatte-1.jpg|miniatura|Il piatto di compensato sbatte sulla fascetta della barra y.
Piatto-sbatte-2.jpg|Faccia inferiore del piatto "grattata" sulla fascetta.]]


Un problema si è verificato quando il piatto di compensato su cui è fissato l'heatbed si è incurvato al punto da sbattere contro una fascetta sull'asse y, in caso di variazioni ampie di y durante un movimento. In questo frangente il piatto "salta" quando sbatte contro la fascetta, e il pezzo che viene stampato subisce uno sbalzo; senza contare inoltre la sollecitazione (sicuramente deleteria) per la struttura della macchina.
Al momento questo inconvieniente è stato risolto abradendo un po' di compensato in corrispondenza della fascetta. Aspettiamo la stagione asciutta (perché il legno ritorni un po' in forma) per eventualmente smontare la eigenDama e trattare per bene tutti i pezzi di legno.
'''UPDATE:''' Abbiamo tenuto il compensato una notte sotto pressa per farlo tornare piatto, e poi lo abbiamo resinato. Ovvediamo se si mòve ora.


== Note ==
== Note ==
Riga 135: Riga 182:
[[Categoria:Hardware]]
[[Categoria:Hardware]]
[[Categoria:Config]]
[[Categoria:Config]]
[[Categoria:Elettronica]]
509

contributi

Menu di navigazione