Esta pagina se ve mejor con JavaScript habilitado

Osciloscopio casero con RaspberryPi pico.

 ·  🎃 kr0m

Si eres aficionado a la electrónica, tarde o temprano será necesario realizar mediciones mas avanzadas de las que permite un multimetro convencional, en estos casos un osciloscopio resulta muy útil ya que nos permite visualizar el tipo de señal en un medio, duración y niveles de voltaje, en este artículo vamos a montar nuestro osciloscopio casero por un precio irrisorio(4.5€ aprox) mediante una RaspberryPi pico y algo de hardware adicional.

Los componentes necesarios son:


Las especificaciones técnicas de nuestro osciloscopio serán:

Voltage: 24V
Max. Sampling Rate: 500kS/s (shared between channels)
Max. Analog bandwidth: 150kHz
Time/Div: 5us - 20secs
Memory depth depends on sampling rate. It ranges between 2kpts (shared between channels) and 20kpts in Run mode and up to 100kpts for Single shot captures.
Auto and Normal triggering
Cursors
X-Y Mode
FFT

En cuanto al firmware vamos a utilizar Scoppy: https://github.com/fhdm-dev/scoppy
Podemos bajar la imagen para RaspberryPi pico del siguiente enlace: https://github.com/fhdm-dev/scpdl1/raw/master/a/v15/scoppy-pico-v15.uf2

El proceso de carga del firmware es muy sencillo, tan solo debemos seguir los siguientes pasos:

  • Conectar el cable USB al PC.
  • Presionar el botón BOOTSEL de la la RaspberryPi pico y sin soltarlo conectar el cable Micro-USB.
  • Se reconocerá como una unidad de almacenamiento: Si utilizamos Windows simplemente montará la unidad automáticamente donde debemos copiar el fichero scoppy-pico-v15.uf2 y acto seguido expulsar la unidad.
usb_msc_auto_quirk: UQ_MSC_NO_GETMAXLUN set for USB mass storage device Raspberry Pi RP2 Boot (0x2e8a:0x0003)
ugen0.5: <Raspberry Pi RP2 Boot> at usbus0
umass0 on uhub0
umass0: <Raspberry Pi RP2 Boot, class 0/0, rev 1.10/1.00, addr 6> on usbus0
umass0:  SCSI over Bulk-Only; quirks = 0x0100
umass0:9:0: Attached to scbus9
da0 at umass-sim0 bus 0 scbus9 target 0 lun 0
da0: <RPI RP2 3> Removable Direct Access SCSI-2 device
da0: Serial Number E0C9125B0D9B
da0: 1.000MB/s transfers
da0: 128MB (262144 512 byte sectors)
da0: quirks=0x2<NO_6_BYTE>

Podemos visualizar el dispositivo:

camcontrol devlist

<RPI RP2 3>                        at scbus9 target 0 lun 0 (da0,pass6)
  • Montamos la unidad:

    mount -t msdos /dev/da0s1 /mnt/aux

  • Copiamos el firmware

    cp /home/kr0m/scoppy-pico-v15.uf2 /mnt/aux/

  • Desmontamos

    umount /mnt/aux


El esquema electrónico es el siguiente:

Debemos tener en cuenta que la RaspberryPi pico permite medir dos canales de forma simultánea, pero el software Scoppy solo nos permite utilizar uno de forma gratuita, si deseamos hacer uso de los dos debemos pagar por la app, así que yo me conformaré con un canal y solo realizaré las soldaduras del CH1, parte izquierda en azul del esquema.

Una vez montado todo quedará del siguiente modo:

En caunto a los cables de muestreo, tal como vienen de Aliexpress llevan conector para multímetro, tuve que cortar el cable y soldarlos a los conectores banana.


El teléfono móvil actuará a modeo de pantalla de visualización de datos, para ello debemos instalar la app Scoppy .

Una vez instalada, comprobamos que la conexión USB esté OK:

USB: OK

Además debemos configurar el rango de voltaje:

CH1 -> Configure voltage range(s)...
Min. Voltage: 0
Max. Voltage: 24
USB -> Connected device -> Firmware settings -> Channels -> Channel 1
Min. Voltage: 0
Max. Voltage: 24

Reiniciamos la RaspberryPi pico desconectando y conectando de nuevo el cable USB.
A partir de aquí no hay que hacer nada mas, ya podremos realizar mediciones, el firmware scoopy por defecto genera una señal de test en el io22 para poder testear el correcto funcionamiento.

Podemos ver todo el proceso en este video:

Si te ha gustado el artículo puedes invitarme a un RedBull aquí