Friday, January 26, 2024

Raspberry Pi Pico RF transmit

Some great work by Jon Dawson on his 101 Things project "A collection of cool projects to make!". Jon clearly describes how he has built:

  • SDR Receiver
  • SDR Transmitter, including SSB, AM & FM
    • A Class E (and D) power amplifier
  • Multi-effect Guitar unit
Source code is shared on his Github repository

He has a video about the transmitter:


I set up the native C++ build tools for the Raspberry Pi PICO on an Intel Linux machine. I got the FM transmitter working, well it builds, and creates a carrier on 88MHz but the audio I'm streaming it it isn't modulating it for some reason.

There's no comments about how to run this but I deduce that you use a python program to stream a sample wav file over serial to the PICO which should then generate 88Mhz and FM modulate it.

python3 transmit.py Audio_Sample_-_The_Quick_Brown_Fox_Jumps_Over_The_Lazy_Dog.wav 

Available Ports

0 /dev/ttyS0: ttyS0 [PNP0501]

1 /dev/ttyACM0: Pico - Board CDC [USB VID:PID=2E8A:000A SER=E669BCF8E72E682F LOCATION=1-2:1.0]

Select COM port >

1

I did run into a build issue on Intel Linux so I raised a bug report. Jon looked at it overnight and did some updates.

The pico_setup.sh script runs on my machine right up to the point where it tries to install Visual Studio Code. The different samples all now compile. Jon seems to have removed the 19_fm_transmitter example which I was trying to get going.

I have some FST3253 on the way so I can try the transmitter sample.

This work has really driven home to me what a fantastic chip the RP2040 is.

Update

I wrote to Jon about the issues I found and he has updated the code and things are building and working correctly now. If you got the source code early on, do a git pull now and try again.

Here's my version of the board:


And here's some very rough looking AM:


"The quick brown fox..." Here's some sideband:



2 comments:

  1. How 'bad' was the AM Peter? Would you consider it passable for communications use on say 3.6 or 7Mhz? Of course you'd need an amp for the low level AM, and I think it would need to be linear, which kind of makes the whole exercise a bit futile in terms of using an RPiZero as the basis of a simple AM transmitter.

    ReplyDelete
  2. Pretty bad AM. I wouldn't want to amplify it and transmit. There are different versions of the analog switch chip and I think mine is not the fast one.

    ReplyDelete