This is an autodidactic project to make an amateur radio module for the Flipper Zero, including software to drive said hardware.
Details
I wanted to make a Flipper Zero module, and one I haven't seen already made is an amateur radio module. Turn your FZ into a Baofeng but less shitty because I put a filter on it!
Components
1×
SA868S-V
2 watt 2-meter band transceiver module
I've been neglecting my electronics and C++ projects because I got a new toy last month: a 3D printer! That's been distracting, but now that a little bit of the newness has worn off I realize I should try to close out some of these projects. First on the list was ordering the Squeaker v0.2 boards that I designed back in October, which I completed this very evening. The second thing to do is to get a basic app written, which I haven't really started yet. Sounds like a good Sunday afternoon project! -JP
I designed the first iteration of this board knowing that I've probably got a lot of things wrong in the design, so I included a few features to help me diagnose what's going on. Unfortunately I got many of those circuits wrong too, womp womp. However, I was able to get the board working both to receive and transmit.
First, the issues: 1) I found that powering the SA868S-V module with 5 V was problematic, leading to the module being locked into transmit unless 5 V was delivered to the PTT pin, and even when PTT was grounded (which should enable transmission) not even a carrier wave was being detected. When I swapped the module to 3.3 V all these issues went away. To make this permanent, I cut the 5 V pin off the board and soldered a botch wire from the 3.3 V pin (which wasn't connected to anything on the board) to the vacant 5 V pin hole.
2) Microphones need electricity to work (derp) and the microphone circuit concept I had in my head was simply incorrect. When designing this board, however, I connected a pin to the microphone in trace via a 0 ohm resistor, which when soldered would act to connect a FZ pin directly to the MIC for transmission of stored audio or digital signals. Another 0 ohm resistor was already in place connecting the microphone in from the TRRS jack to the module, so that was replaced with a 10 uF ceramic 0603 size capacitor, while the previously mentioned 0 ohm resistor was replaced by a 10 kiloohm resistor. Finally, I soldered a botch wire from the 3.3 V pin to the mic pin that sits on the other side of the new 10 K resistor.
3) I didn't know that the TX line in a UART serial connection is held high; this meant that my Tx/Rx LEDs were kinda useless, so I removed those components. Also, the inverter I designed to convert the 1 > Rx, 0 > Tx to an LED that's on when PTT is enabled was a total wash, so it got removed too. I decided that the redesign will use a small NOT gate IC to drive the PTT indicator LED.
(These pictures make this board look way filthier than it actually is, no idea why)
With these solutions in place, I was able to successfully transmit! I redesigned the board to incorporate these changes, and will be ordering it sometime in the near future. Now that I have a working prototype board, however, I'm going to focus on writing the application for the FZ to drive the board and issue commands to the MCU in the SA868 module. That'll take a while because, as I mentioned previously, I don't speak C++ so I'm learning that while I write the app.
The SA8X8 series of modular amateur transceivers power a number of cheap HTs, the Baofeng being the most notorious. Unfortunately, the module lacks filtration that prevents spurious emissions from being broadcast, so they've become the scourge of many griping Elmers on their radio plantations.
I need to get better at programming for hardware, and I believe completing this project will "level me up," so here we are. How to get one of these interfaced with the Flipper Zero?
Well, I conceived of this project when I acquired two SA868S-V modules on AE for ~$8 per. After soldering some leads onto the module and breadboarding it out, I could actually only communicate successfully with the module plugged into my Flipper. I was able to send commands via the UART Terminal application, including tuning it to a frequency and receiving a broadcast on the 2 meter simplex calling frequency from my HT on the other side of the house!
So these modules are straightforward from a hardware and software perspective. That encourages me to think big, and I decided to make a prototype board that will allow me to both use audio in and out via a TRRS LRGM headphone set but also send those signals to the FZ, either to be processed in the unit itself or to hand them off to a connected computer. Also, I put a filter on the thing so less Fuddhunts happening to you because you dared disturb their exchange of Monica Lewinsky jokes.
Let me know if you have any questions on the programming side of things; I'm usually available on Discord to help join in a screen share debugging session or whatever. I've written various Flipper Zero applications and tutorials. https://github.com/jamisonderek/flipper-zero-tutorials is my GitHub and that also links to my YouTube videos.
UART on the Flipper is a little different than the other APIs. I've written some demos and abstraction layer that makes it look more similar, with an alloc pattern, etc. You can find it in the "gpio/uart_demo" folder in my GitHub.
Sometimes, it's nice to have a quick and dirty sample JavaScript as well. You can take a look at applications/system/js_app/examples/apps/Scripts/Examples/bad_uart.js in the Momentum firmware for a nice send/respond UART sample.
Hi Derek, thanks so much for the offer! Your Skeleton app video on YouTube is actually what convinced me I could write a simple program to control this expansion board. Keep up doin' what you're doin' and thanks again for the commentary!
This project sounds amazing!
Let me know if you have any questions on the programming side of things; I'm usually available on Discord to help join in a screen share debugging session or whatever. I've written various Flipper Zero applications and tutorials. https://github.com/jamisonderek/flipper-zero-tutorials is my GitHub and that also links to my YouTube videos.
UART on the Flipper is a little different than the other APIs. I've written some demos and abstraction layer that makes it look more similar, with an alloc pattern, etc. You can find it in the "gpio/uart_demo" folder in my GitHub.
Sometimes, it's nice to have a quick and dirty sample JavaScript as well. You can take a look at applications/system/js_app/examples/apps/Scripts/Examples/bad_uart.js in the Momentum firmware for a nice send/respond UART sample.
I'm excited to see this project come to life!
-CodeAllNight