Come costruire un pulsante per fotocamera remoto con Raspberry Pi Pico

Questo semplice tutorial vi aiuterà a costruire uno shutter remoto per la fotocamera del vostro smartphone tramite un Raspberry Pi Pico.

Avatar di Gabriele Scordamaglia

a cura di Gabriele Scordamaglia

Ci serve un telecomando per scattare delle foto da lontano con il nostro smartphone, ma attualmente abbiamo a disposizione tutto tranne che uno shutter effettivo da utilizzare per delle foto di gruppo. La soluzione migliore sembra quindi essere quella di costruirne uno da zero, partendo da un Raspberry Pi Pico e utilizzato un codice in CircuitPython (che consentirà al nostro Pico di trasformarsi in un dispositivo USB).

Lista componenti

Assemblaggio hardware

Non serve nessuna nozione di ingegneria elettronica per mettere insieme i pezzi di questo progetto: utilizzeremo semplicemente un pulsante per connettere due pin GPIO alla pressione dello stesso.

  1. Inserite il Raspberry Pi Pico nella breadboard.
  2. Inserite  il pulsante nella breadboard.
  3. Connettete il pin GPIO 7 del Pico a un piede del pulsante.
  4. Connettete il GND all'altro piede sullo stesso lato in cui avete connesso il GPIO 7.

Installazione di CircuitPython

Prima di poter caricare il codice sulla scheda, dobbiamo effettuare il flash dell'ultima versione di CircuitPython.

  1. Andate su https://circuitpython.org/downloads e cercate la scheda che state utilizzando per il progetto.
  2. Scaricate l'ultima versione (stable) di CircuitPython. Attualmente dovrebbe essere la 6.3.
  3. Mantenete premuto il pulsante BOOTSEL / BOOT sul Pico mentre lo collegate al PC via USB. Dovrebbe apparire un nuovo dispositivo dal nome RPI-RP2.
  4. Copiate il file UF2 su questo dispositivo. Una volta effettuata l'operazione, il drive dovrebbe apparire come CIRCUITPY, confermando la riuscita dell'installazione.
  5. Andate sulla pagine delle librerie CircuitPythonscaricate il bundle per la vostra versione. Se avete scaricato la 6.3, scegliete il bundle per la 6.x.
  6. Estraete il contenuto del bundle in una cartella, poi apritela.
  7. All'interno della cartella troverete una sottocartella libApritela e troverete tutte le librerie per CircuitPython.
  8. Copiate la cartella adafruit_hid nella cartella lib (se non c'è, createla) sul drive CIRCUITPY.

Caricamento del codice

  1. Aprite code.py. Questo codice verrà eseguito a ogni accensione del Raspberry. Eliminate il contenuto del file.
  2. Importate tre librerie: la prima sarà time, tramite le quale gestiremo i ritardi. La seconda, usb_hid, farà in modo che il nostro Pico si comporti come un dispositivo USB. L'ultima, adafruit_hid.mouse, verrà utilizzata per comunicare al nostro smartphone Android che abbiamo collegato un mouse USB.
    import timeimport usb_hidfrom adafruit_hid.mouse import Mouse

  3. Importate altre due librerieBoard, che consentirà la comunicazione con i pin GPIO, e digitalio, utilizzata per settare lo stato dei pin.
    import boardfrom digitalio import DigitalInOut, Direction, Pull

  4. Create un oggetto mouse, utilizzato per simulare i movimenti e i click del mouse.
    mouse = Mouse(usb_hid.devices)

  5. Configurate il pulsante, connesso al GPIO 7 come input, e impostate lo stato come "alto". In questo modo il pin viene settato come "on" (True), e alla pressione del pulsante il circuito viene chiuso in modo da effettuare la connessione tra il GND e il GPIO 7, scattando quindi la foto.
    button = DigitalInOut(board.GP7)button.direction = Direction.INPUTbutton.pull = Pull.UP

  6. Aggiungete una pausa di due secondi al codice e poi programmate il puntatore per farlo muovere lungo l'asse x per 380 pixel (tecnicamente questo dovrebbe spostare il puntatore in corrispondenza del pulsante di scatto sul vostro smartphone, dunque potrebbe richiedere di essere modificato in base al dispositivo che state utilizzando).
    time.sleep(2)mouse.move(x = 380, y = 0)

  7. Create un loop per far girare costantemente il codice.
    while True:if button.value == False:

  8. Imponete la condizione in modo che, alla pressione del pulsante, viene simulato un click con il tasto sinistro del mouse per scattare la foto. Introducete una breve pausa di 0.1 secondi per evitare un doppio click.
    mouse.click(Mouse.LEFT_BUTTON)time.sleep(0.1)

  9. Aggiungete una condizione di else che viene attivata quando il pulsante non è premuto, nella quale viene utilizzato pass per non interrompere l'esecuzione del codice.
    else:pass

  10. Salvate il codice, che verrà lanciato automaticamente dalla scheda. Dopo qualche secondo il puntatore si sposterà sulla destra. A questo punto, premete il pulsante sulla breadboard per scattare una foto.

Codice completo

import timeimport usb_hidfrom adafruit_hid.mouse import Mouseimport boardfrom digitalio import DigitalInOut, Direction, Pull

mouse = Mouse(usb_hid.devices)

button = DigitalInOut(board.GP7)button.direction = Direction.INPUTbutton.pull = Pull.UPtime.sleep(2)mouse.move(x = 380, y = 0)while True:if button.value == False:mouse.click(Mouse.LEFT_BUTTON)time.sleep(0.1)else:pass

Utilizzo dello shutter

  1. Aprite l'app Fotocamera in modalità orizzontale.
  2. Collegate il Rapsberry Pi Pico tramite il cavo USB. Il cursore dovrebbe posizionarsi automaticamente sul pulsante di scatto della fotocamera. Se le coordinate non corrispondono, scollegate il Raspberry e modificate il valore della coordinata x nella linea di codice mouse.move(x = 380, y = 0), aumentandolo o diminuendolo in base alla posizione sul vostro smartphone.
  3. Preparate lo scatto.
  4. Premete il pulsante sulla breadboard per scattare la foto.