Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisione Revisione precedente
Prossima revisione
Revisione precedente
progetti:5p4k:ratcam_v1 [2018/07/25 22:32] 5p4kprogetti:5p4k:ratcam_v1 [2023/03/13 22:40] (versione attuale) 5p4k
Linea 1: Linea 1:
-{{ :progetti:5p4k:ratcamv1_mount.jpg?direct&180|}}+{{ :progetti:5p4k:ratcamv1_assemble_final3.jpg?direct&180|}}
 ====== Ratcam v1 ====== ====== Ratcam v1 ======
 > Ratcam ti permette di controllare la fotocamera del RaspberryPi da un bot di Telegram, e ti allerta in caso di movimento inviando video e foto. > Ratcam ti permette di controllare la fotocamera del RaspberryPi da un bot di Telegram, e ti allerta in caso di movimento inviando video e foto.
Linea 27: Linea 27:
 <list-group> <list-group>
   * **Data inizio:** 13 ott. 2017   * **Data inizio:** 13 ott. 2017
-  * **Data fine:** in corso+  * **Data fine:** sospeso
   * **Stato:** modularizzazione codice   * **Stato:** modularizzazione codice
 </list-group> </list-group>
Linea 52: Linea 52:
  
 ===== Sviluppo del circuito ===== ===== Sviluppo del circuito =====
-{{ :progetti:5p4k:ratcamv1_net.png?direct&200|}}+{{ :progetti:5p4k:ratcamv1_net.png?direct&300|}}
 Ho realizzato il pcb usanto il sapiente aiuto di [[ user:g5pw ]], [[ user:wifasoi ]] e [[ user:ziongate ]] con [[ http://kicad-pcb.org/ | Kicad ]]. Il circuito deve semplicemente alimentare dei LED infrarossi dal pin a 5V del Raspberry Pi. In più, vorrei poterli pilotare da uno dei pin a 3v3 del Raspberry; in questa maniera posso regolare la luminosità usando [[https://en.wikipedia.org/wiki/Pulse-width_modulation | PWM]]. Ho realizzato il pcb usanto il sapiente aiuto di [[ user:g5pw ]], [[ user:wifasoi ]] e [[ user:ziongate ]] con [[ http://kicad-pcb.org/ | Kicad ]]. Il circuito deve semplicemente alimentare dei LED infrarossi dal pin a 5V del Raspberry Pi. In più, vorrei poterli pilotare da uno dei pin a 3v3 del Raspberry; in questa maniera posso regolare la luminosità usando [[https://en.wikipedia.org/wiki/Pulse-width_modulation | PWM]].
  
Linea 63: Linea 63:
   * ''VEML7700-TR'', sensore di luce ambientale nello spettro visibile, quantità: 1.   * ''VEML7700-TR'', sensore di luce ambientale nello spettro visibile, quantità: 1.
   * ''M20-8750342'', connettore a 3 pin, quantità: 1.   * ''M20-8750342'', connettore a 3 pin, quantità: 1.
-  * ''C0805C104Z3VACTU'', condensatore da 0.1 uF, quantità: 2.+  * ''C0805C104Z3VACTU'', condensatore da 0.1 uF, quantità: 1.
   * ''RK73H2ATTDD4701F'', resistenza da 4.7 KOhm, quantità: 2.   * ''RK73H2ATTDD4701F'', resistenza da 4.7 KOhm, quantità: 2.
  
Linea 75: Linea 75:
  
 === Progettazione del PCB === === Progettazione del PCB ===
-{{ :progetti:5p4k:ratcamv1_pcb_front.png?direct&400|}}Volevo disporre i LED in maniera circolare, ma Kicad non ha strumenti adatti; non è possibile disegnare curve con le tracce o con i fill. Per cui ho preso spunto da [[https://forum.kicad.info/t/python-scripting-example-studio-clock/5387|qui]] per disegnare degli elementi circolari con Kicad.+{{ :progetti:5p4k:ratcamv1_pcb_front.png?direct&375|}}Volevo disporre i LED in maniera circolare, ma Kicad non ha strumenti adatti; non è possibile disegnare curve con le tracce o con i fill. Per cui ho preso spunto da [[https://forum.kicad.info/t/python-scripting-example-studio-clock/5387|qui]] per disegnare degli elementi circolari con Kicad.
  
 All'inizio avevo scritto il codice minimo indispensabile per generare tracce circolari, ma mi sono reso conto che per allineare correttamente i componenti e calcolare i fill c'era bisogno di un supporto più estensivo per lavorare in coordinate polari, per cui ho scritto qualche classe per manipolare corde e settori circolari, ed un layer di interfaccia a Kicad più "pythonico" di quello offerto da Kicad. Il set di script è [[https://git.mittelab.org/proj/ratcam-illuminator/tree/master/synthesize|su Gitlab]], consta di All'inizio avevo scritto il codice minimo indispensabile per generare tracce circolari, ma mi sono reso conto che per allineare correttamente i componenti e calcolare i fill c'era bisogno di un supporto più estensivo per lavorare in coordinate polari, per cui ho scritto qualche classe per manipolare corde e settori circolari, ed un layer di interfaccia a Kicad più "pythonico" di quello offerto da Kicad. Il set di script è [[https://git.mittelab.org/proj/ratcam-illuminator/tree/master/synthesize|su Gitlab]], consta di
Linea 94: Linea 94:
  
 === Placement e routing === === Placement e routing ===
-{{ :progetti:5p4k:ratcamv1_pcb_back.png?direct&400|}}+{{ :progetti:5p4k:ratcamv1_pcb_back.png?direct&375|}}
 Segue l'outline dell'algoritmo di placement e routing usato. Segue l'outline dell'algoritmo di placement e routing usato.
  
Linea 134: Linea 134:
 <col md="4"><thumbnail>{{ :progetti:5p4k:ratcamv1_blinking.mp4 |}}<caption>Primo test LED lampeggianti</caption></thumbnail></col> <col md="4"><thumbnail>{{ :progetti:5p4k:ratcamv1_blinking.mp4 |}}<caption>Primo test LED lampeggianti</caption></thumbnail></col>
 <col md="4"><thumbnail>{{ :progetti:5p4k:ratcamv1_mount.jpg?direct&300 |}}<caption>Montaggio con viti M2 e terzo braccio</caption></thumbnail></col> <col md="4"><thumbnail>{{ :progetti:5p4k:ratcamv1_mount.jpg?direct&300 |}}<caption>Montaggio con viti M2 e terzo braccio</caption></thumbnail></col>
 +<col md="4"><thumbnail>{{ :progetti:5p4k:ratcamv1_realpcb_solder_front.jpg?direct&300 |}}<caption>PCB con componenti saldati (fronte)</caption></thumbnail></col>
 +<col md="4"><thumbnail>{{ :progetti:5p4k:ratcamv1_realpcb_solder_back.jpg?direct&300 |}}<caption>PCB con componenti saldati (retro)</caption></thumbnail></col>
 </grid> </grid>
  
Linea 186: Linea 188:
  
 Dal momento che lo userò in Python, ho scritto un controller in Python per il sensore. È disponibile [[https://git.mittelab.org/proj/pyveml7700|qui]]. Ho implementato tutte le funzionalità offerte dal sensore, un apprezzamento alla Vishay che ha rilasciato una [[https://www.vishay.com/docs/84323/designingveml7700.pdf|guida pratica]] su come usarlo. Dal momento che lo userò in Python, ho scritto un controller in Python per il sensore. È disponibile [[https://git.mittelab.org/proj/pyveml7700|qui]]. Ho implementato tutte le funzionalità offerte dal sensore, un apprezzamento alla Vishay che ha rilasciato una [[https://www.vishay.com/docs/84323/designingveml7700.pdf|guida pratica]] su come usarlo.
 +
 +
 +===== Sviluppo del case =====
 +Lo sviluppo del case è stato un processo più semplice del PCB, ma ha richiesto diverse rifiniture. L'idea principale è di avere un case per il Raspberry collegato con uno [[snodo vincolato cavo]] per far scorrere i cavi e il flex. I dettagli sullo snodo vincolato sono nella voce dedicata. Qui alcuni dettagli tecnici:
 +  * L'assemblaggio richiede 12 viti M2 da 1cm.
 +  * Il gap per tutti gli incastri è di 0.2mm in ogni direzione, che ho visto mi permette di stampare con risoluzione da 0.12 a 0.24 e comunque avere un incastro funzionante
 +  * Il gap dello snodo è di 0.3mm perché sia possibile stamparlo in un unico blocco
 +  * Stampato il roof support: in questa maniera crea un blocco di materiale che supporta meglio i punti cavi, come ad esempio gli alloggiamenti per i dadi
 +  * Per stampare il nido d'ape del logo Mittelab e il logo del Raspberry Pi ho dovuto rallentare la velocità di stampa perché aderisse bene al piatto. È sufficiente ridurre i primi layer.
 +  * Supporti ovunque purché partano dal piatto e non dal materiale
 +  * La mia Creality3D CR-10 stampa molto meglio a multipli di 0.4mm.
 +  * Raft per stampare lo snodo.
 +
 +Ho sviluppato prima lo snodo, poi il case dell'illuminatore, poi del Raspberry. Il render è fatto con Blender e il progetto è sviluppato in Rhino.
 +
 +<grid>
 +<col md="6"><thumbnail>{{ :progetti:5p4k:render_case.jpg?direct&400 |}}<caption>Blender render</caption></thumbnail></col>
 +<col md="6"><thumbnail>{{ :progetti:5p4k:render_wireframe_case.png?direct&400 |}}<caption>Wireframe</caption></thumbnail></col>
 +</grid>
 +
 +=== Limitazioni e problemi noti ===
 +  * Lo spazio è poco e i pin header verticali ne consumano molto. Questo introduce una struttura ingombrante per far spazio ai jumper nello snodo.
 +  * Il flex... non è affatto flex. E passa a malapena, ma il volume dello snodo cresce notevolmente se aumento il diametro. Per cui, dal momento che comunque non flette affatto, è stato inciso lungo il senso della lunghezza (ma va?). :-P
 +  * L'illuminatore occupa più spazio in verticale che il case del Raspberry, per cui non appoggia sulla base. Questo comunque non è un problema perché volevo appoggiarlo su una batteria portatile per farlo funzionare senza cavo.
 +
 +=== Istruzioni di assemblaggio ===
 +Incidi il flex a metà usando uno scalpello e un righello metallico come guida. Io ho fissato tutto al piano di lavoro con nastro adesivo per essere sicuro che nulla si muovesse. Assembla il resto come segue:
 +
 +<grid>
 +<col md="4"><thumbnail>{{ :progetti:5p4k:ratcamv1_assemble_00.jpg?direct&400 |}}</thumbnail></col>
 +<col md="4"><thumbnail>{{ :progetti:5p4k:ratcamv1_assemble_01.jpg?direct&400 |}}</thumbnail></col>
 +<col md="4"><thumbnail>{{ :progetti:5p4k:ratcamv1_assemble_02.jpg?direct&400 |}}</thumbnail></col>
 +<col md="4"><thumbnail>{{ :progetti:5p4k:ratcamv1_assemble_03.jpg?direct&400 |}}</thumbnail></col>
 +<col md="4"><thumbnail>{{ :progetti:5p4k:ratcamv1_assemble_04.jpg?direct&400 |}}</thumbnail></col>
 +<col md="4"><thumbnail>{{ :progetti:5p4k:ratcamv1_assemble_05.jpg?direct&400 |}}</thumbnail></col>
 +<col md="4"><thumbnail>{{ :progetti:5p4k:ratcamv1_assemble_06.jpg?direct&400 |}}</thumbnail></col>
 +<col md="4"><thumbnail>{{ :progetti:5p4k:ratcamv1_assemble_07.jpg?direct&400 |}}</thumbnail></col>
 +<col md="4"><thumbnail>{{ :progetti:5p4k:ratcamv1_assemble_final3.jpg?direct&400 |}}</thumbnail></col>            
 +</grid>
  • progetti/5p4k/ratcam_v1.1532557941.txt.gz
  • Ultima modifica: 2018/07/25 22:32
  • da 5p4k