Entrambe le parti precedenti la revisione Revisione precedente Prossima revisione | Revisione precedente |
progetti:5p4k:ratcam_v1 [2018/07/25 22:32] – 5p4k | progetti:5p4k:ratcam_v1 [2023/03/13 22:40] (versione attuale) – 5p4k |
---|
{{ :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. |
<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> |
| |
===== 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]]. |
| |
* ''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. |
| |
| |
=== 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 |
| |
=== 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. |
| |
<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> |
| |
| |
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> |