Radio Side Controller Hardware - K7MDL2/IC-705-BLE-Serial-Example GitHub Wiki

General

There are several hardware combinations possible. I support all 3 M5Stack Core Module CPU generations and a few smaller modules like the M5AtomS3 or M5stampS3. You can use a variety of IO modules and/or IO units and bases, some with Li battery inside and/or external 9-24VDC power. You may be able to run on USB power depending on your IO needs. Be aware the radios do not supply USB 5V power out so external power, USB or other source, such as 12V, is required. It is pretty easy to add new or special IO via GPIO or I2C bus. The IO patterns per band are customized in the decoder.h file and can be about anything you want.

There are several options for bottoms, they are usually just a bottom cover with IO pin access, maybe a battery and maybe a mounting system such as screws or DIN rail parts. They usually have no code dependency so you can choose whatever meets your needs. Some are slim and magnetic, others medium with battery and extra IO ports and 9-24VDC and others have proto board inside with edge connectors in a larger size housing. Some have a Grove port or 2. There is a flush frame mounting kit to panel mount your M5Stack.

Usage Scenario example

Using BT you can position this solution at some distance from your radio. A good example is using the 705 as a microwave IF rig with a tripod(s) loaded with transverters and relays, maybe amps also. To keep the wire short and allow for fast wireless setup you can put this stack of modules on the tripod. The IF rig can be comfortably placed on a table or in a camping trailer out of the weather/sun some feet away, only needing 12V and the RF cable leaving the radio, maybe a USB connection to a laptop. The module stack and relay wiring are kept short and self-contained. The CPU choice could be headless if you do not need or want to see the transverter display offset. I envision using BLE mesh or WiFi to network additional modules to give both a local display and a remote decoder relay interface, maybe a winter project. For this scenario I would use a Core2 CPU, 4In/8Out IO module, a base that has mounting holes and supply external 12V to the 4In/8Out module powr connector, or the base coaxial power connector if it has a regulator (many do). Realize the input pins are referenced to ground and Pin 1 of the 8 outputs are connected to Vin, which is usually your external 12V. If no external power is supplied the Vin would be USB if connected and any external equipment with 12V or 24V pullups will start supplying (limited) power through the output MOSFET's protection diodes.

CPU modules:

There are 3 generations of Core "module" controllers - Core Basic, Core2 and CoreS3 (including the CoreS3 SE). They look similar apart from mechanical or touch buttons. There are smaller controllers like the M5Atom, M5Stick, and headless (no screen) versions like the M5Stamp that run the same generations of ESP32 CPU. They all support WiFi which I am not using today.

Bluetooth

The IC-705 supports both Classic BT serial (SPP) and BLE (LE) serial interfaces for the CAT control interface in addition to WAN and USB interfaces. You can run them in parallel which is useful for connecting a computer via USB or WAN for logging, and for digital modes audio/CAT control, letting the BT interface be dedicated to band decoding usage.

For BT interfaces the CoreS3 SE uses the ESP32-S3 chip which only supports BLE. The Core Basic has mechanical buttons which have been a little harder to make the button touches responsive, it supports only Classic BT. The Core2 is just right, responsive touch buttons and supports either BLE or Classic BT. I have found the BT classic interface connects faster and has been a quite reliable connection over many days. BLE is usually slower to connect due to the time it takes for the server advertising process. It seems to have a few other quirks but in general, either works the same, I prefer the BT classic. This won't work if BT Mesh is ever implemented, you would need the ESP32-S3 based controllers.

IO Interfaces

With hardware flexibility comes choices. One consideration for a few users is the Grove connector on the side of the CPU module. It can be used to extend IO via GPIO or i2C bus. You can connect ADC, relays, or digital IO "units" to this Grove port. For the Core Basic version this Grove port is connected to the internal i2c bus that runs things like touch so using it for general IO pins is not a good option. The Core2 and CoreS3 generations the Grove port is separate, often called the external i2c bus. The 1 and 2 relay Grove connected "Units" are GPIO controlled, the 4-Relay Unit and Digital IO extender V2 Unit are i2c controlled. Either type is fine, but you can only use GPIO or i2c, you cannot not mix them. Seems the Core 2 hits all the requirements best. TEH CPU Grove port is labeled Port A. Some IO modules have Grove ports labeled Port B and Port C. See the product info for default IO or i2c pin assignments.

For smaller controller options like the M5AtomS3 and M5stamp, you can use the Grove port also with IO "Units" or your own buffered relay modules. Realize the limits of these GPIO ports - they are 3.3V.

Some IO modules and IO/ADC units can handle more than 3.3V on their input. Consult the product schematics if in doubt, these are opensource hardware and the M5stack website has all the info. The 4In8Out IO module V1.2 has a voltage divider on the 4 inputs, referenced to ground, so they can work with more than 3.3V. I measured 5V on the IC-705 send output jack. This works fine with the 4In8out module and draws only 0.85ma.

Hardware Links

Choose among the list of CPU controllers, IO modules and bases that best fit your needs. There are switches in the code (#defines) to select one or more combos of IO. The CPU type is automatically defined in most cases.

Controllers

M5Stack CoreS3 SE IoT Controller with w/o Battery Bottom (BT5 LE and mesh, no BT Classic) https://shop.m5stack.com/products/m5stack-cores3-se-iot-controller-w-o-battery-bottom

M5Stack Core2 ESP32 IoT Development Kit V1.1 (Recommended - does both 4.x BLE and BT Classic). Comes with a slim battery base. https://shop.m5stack.com/products/m5stack-core2-esp32-iot-development-kit-v1-1

ESP32 Basic Core IoT Development Kit V2.7 - mechanical buttons (BT Classic only) https://shop.m5stack.com/products/esp32-basic-core-lot-development-kit-v2-7

ATOMS3 Dev Kit w/ 0.85-inch Screen https://shop.m5stack.com/products/atoms3-dev-kit-w-0-85-inch-screen

M5StampS3 with 2.54 Header Pin https://shop.m5stack.com/products/m5stamps3-with-2-54-header-pin

M5StampS3 with 1.27 Header Pin (plugs into some Atom bases) https://shop.m5stack.com/products/m5stamps3-with-1-27-header-pin

IO Modules

4-Channel Relay 13.2 Module V1.1 (STM32F030) https://shop.m5stack.com/products/4-channel-relay-13-2-module-v1-1-stm32f030

4IN8OUT Multi-channel DC Drive Module (STM32F030) https://shop.m5stack.com/products/4in8out-multi-channel-dc-drive-module-stm32f030

Proto Pegboard Module - 13.2 https://shop.m5stack.com/products/proto-module-13-2

USB Module with MAX3421E v1.2 (NOTE - I have not got this to work reliably yet!) https://shop.m5stack.com/products/usb-module-with-max3421e-v1-2

IO Units

Extend I/O 2 Unit (STM32F0) https://shop.m5stack.com/products/extend-i-o-unit-2-stm32f0

1 to 3 HUB Expansion Unit https://shop.m5stack.com/products/mini-hub-module

4-Relay Unit (i2c) https://shop.m5stack.com/products/4-relay-unit

2-Channel SPST Relay Unit (GPIO, not i2c) https://shop.m5stack.com/products/2-channel-spst-relay-unit

Bases

Base26 Proto Industrial Board Module v1.1 https://shop.m5stack.com/products/base26-proto-industrial-board-module-v1-1

Base15 Proto Industrial Board Module v1.1 https://shop.m5stack.com/products/base15-proto-industrial-board-module-v1-1

Din Base with 500mAh Battery https://shop.m5stack.com/products/din-base-with-500mah-battery

Battery Bottom 110mAh for M5Stack Basic V1.1 (thin bottom for Core Basic) https://shop.m5stack.com/products/battery-bottom-110mah-for-m5stack-basic-v1-1