What is this?
This board is a LoRa transceiver operating at 868 MHz, which is one of the the frequency bands allowed for operation in Europe. It is mainly driven by an RP2350 controlling a Semtech SX1261 via SPI, whose output is further amplified by a TI CC1190. The form factor allows its usage as an M5Stack module by means of both the mechanical interface (4 M3 holes at the corner) and the M-Bus electrical interface.Why did you build this?
The reasons are actually multiple ones. I wanted to experiment with the design of RP2350 based boards, and I had some ideas for microcontroller projects already floating; then, at the time I was lacking a Meshtastic radio for the proper band, so after duly purchasing one I started thinking about how difficult would it be to just go make one myself and adapt the firmware to use it. Since that typically makes use of a Bluetooth enabled micro like the ESP32, I thought to make this adaptable to a M5Stack Core I had lying around, with which I already used a LoRa module in the past. That specific module wasn't particularly user friendly (also I hate AT-based transceivers), so I settled on this present plan.Specifications
Whilst I haven’t exactly followed a plan to a T, I did write down some initial specifications.Functional
- Must be used as a standalone module.
I didn’t want to constrain the board to only work as an M5Stack module, so this implied the following interface requirements:- status LEDs
- USB interface
- power interface
- serial port
- user buttons
- Must be able to act as an RF module seen from the ESP32
Interface
- Must work with the M5 bus.
This both constraints the available serial interfaces, voltages (signals and power) and currents - Must be in a suitable form factor for the M5Stack
- Must expose a debugging interface
Power
- Should consume a low amount of power
RF
- Must operate around the 868 MHz
- If possible, use the newer chipset from semtech
- Must be able to operate in close vicinity with the ESP32 without causing interference
Design choices
Components
MCU
The RP2354A will be used in order to save space, as it sports a large enough internal flash and is contained in a QFN-60 package, which is fine considering there is not much to be usedModem and frontend
In order to reach a higher power output for Lora, the modem from Semtech will be accompanied by a frontend with a PA. The CC1190 from TI was a good candidate both from price and availability standpoint at supplier’s premise. It is able to reach 27dBm max at 3.6V supply and 13dBm input, however given the M-Bus supply it will most likely cap at 25.8dBm with the same input power. For this reason, after fixing the choice to the CC1190, the transceiver has been chosen to be the Semtech SX1261, which is limited in power to max 15 dBm, as opposed as its more powerful counterpart the SX1262. Other modems could be used as well but I’ve often seen low availability of the LR series and also it would be cool to keep the options open for lower bandwith, which the 1261/2 support, as well as lower sensitivity. Another pet peeve regarding the LR series is that the documentation is not as open as the SX series and thus it’s difficult to gauge whether it’s as flexible in using the “raw” LoRa mode as opposed as LoraWAN only (which i’m not presently interested about). Note: It’s most likely possible, given that the reference manual explicitly makes reference to such commands, but it’s presently very intertwined with the github repos, which I think would be a time consuming endavour to self-document and/or reverse engineer.On board regulators
RP235x LDO from USB
This is going to be an optional component (or optionally enabled) in case of interest in using the module as standaloneExternal interfaces (non M-BUS)
RP235x debug port
- SWD
- UART
User interaction
LEDs
- Status-error LEDs
- Power LED
Switches
- Reset button
- Boot...