Embedded Journeys

Automating Siglent oscilloscope screen captures with SCPI and Python

Automating homelabs with SCPI - No more USB sticks

This post shows the automation of transferring oscilloscope screenshots from the scope to a desktop PC. Where previously a USB stick was used to transfer the images, now, the images are transferred to the desktop immediately after pressing the self-defined hotkey.

Pico 2 USB Data Streaming Reference Implementation (5.1 Mbps)

Gumroad Product Description

This post is the product page for a Raspberry Pico 2 5.1 Mbps Streaming Reference Implementation using TinyUSB. A Python Application is offered for throughput measurements on a Windows Host.

Using the Raspberry Pi Pico 2 as a rudimentary oscilloscope

Exploring ADC sampling, HC-SR04 echo pulses and limitations

In this post, I explore whether the Raspberry Pi Pico 2 can act as a rudimentary oscilloscope. Some theoretical considerations about the Pico 2’s ADC are presented. These are then put to the test through measuring HC-SR04’s echo pulses.

First Time USB Data Streaming from the Raspberry Pico 2W Using TinyUSB

Lessons learned from TinyUSB on the RP2350 and Python's PyUSB

When I read about the presence of the USB controller on the RP2350, I got intrigued if I would be able to stream data from the Pico 2 board. I set out to use TinyUSB on the RP2350 and created a host application in Python to ingest the data. This post is about some of the key insights I gained during the development of a simple datapipeline: from the pico 2W USB device to the Python USB host.

Debugging RP2350: Subtle Differences Between the RISC-V and ARM cores

3 insights that facilitated my Pico 2W multi-core debugging sessions

This all started when I was trying to understand how my RP2350 would react when I wanted to read a memory address like 0x00000000 on the RISC-V and ARM cores. However, this sidetracked me into a deeper understanding of debugging the RP2350 with my Raspberry Pi Debugger Probe! At first, it felt like regular breakpoints were just ignored, if the program even started running at all! My attempts at running RISC-V and ARM cores revealed some subtle debugging behaviour.