Mercury System is a modular βοΈ hardware + π» software development platform tailored to streamline the creation of embedded, connectivity, and IoT applications π.
It uses a LEGO-like π§© architecture, where interchangeable boards can be combined to build powerful systems without reinventing the wheel.
The hardware is organized into distinct families:
-
π§ Base Board (BB) β the βbrainβ of the system. It hosts the main microcontroller (e.g., PIC18F46J50), handles communication buses (IΒ²C, UART), includes a LiPo battery charging circuit, USB bootloader, real-time clock, EEPROM, LEDs, buttons, and up to 11 GPIOs.
-
π‘ Modem Board (MB) β connects the system to networks or devices. Variants include Wi-Fi, GSM/GPRS, Bluetooth, ZigBee, LoRa, and more. These interface with the BB via a dedicated serial/UART link.
-
ποΈ Slave Board (SB) β modular sensors or actuators, each with local microcontrollers that accept high-level command sets. They connect to the BB via IΒ²C (multidrop) or UART and enable flexible expansions without pin conflicts.
-
π Power Board (PB) β addresses power needs for more demanding setups. Variants support higher current requirements or alternative energy sources like solar or piezo harvesting.
-
π₯οΈ Expansion Board (EB) β supports planar connections of multiple boards and may include peripherals like displays or prototyping areas, offering an alternative to vertical stacking.
-
π‘ Brain-Less Board (BL) β lightweight, cost-effective, controller-free boards for simple sensor or actuator functions that connect directly to BB GPIO
The Mercury System Framework (MSF) is a layered software architecture that abstracts hardware details and provides a clean structure for building embedded and IoT applications.
It is designed to reduce boilerplate, increase portability, and allow developers to focus on application logic instead of low-level device drivers.
- Provides drivers for low-level hardware blocks (GPIOs, timers, ADC, UART, IΒ²C, SPI, β¦).
- Encapsulates device-specific code so that higher layers remain portable.
- Shields developers from MCU hardware differences.
- Example: toggling an LED through HAL instead of directly touching registers.
This layer manages all the shared system resources and services:
- Bus Management β controls communication interfaces (IΒ²C, UART, SPI).
- Peripheral Management (PML) πΆ β provides high-level APIs for Modem Boards and Slave Boards, so you can send commands without worrying about bus protocols.
- System Services (SSL) β‘ β manages power rails, LEDs, buttons, the RTC/RTCC, EEPROM, and the USB terminal.
- Communication Stacks β handles Wi-Fi, Bluetooth, GSM/GPRS, LoRa, or ZigBee modems transparently.
Thanks to SML, the developer can use modem/sensor boards interchangeably without rewriting core code.
Implements a lightweight cooperative RTOS tailored for Mercury projects:
- Scheduler β table-driven, periodic execution model (each task has a defined cycle time).
- Task Management β applications are split into tasks with defined states (
InitializationStateandRunningState). - Timers & Alarms β software timers and alarms for periodic or one-shot operations.
- Event Handling β inter-task communication via events and signals.
- Low Power Support β tasks can be scheduled around power states to extend battery life.
This gives the developer an Arduino-like simplicity (setup/loop) but with more structure, scalability, and multitasking capabilities.
At the top sits the user application, which ties everything together:
- Uses HAL and SML APIs to control hardware and modems.
- Registers tasks in the OSL scheduler to run periodically.
- Implements business logic, e.g., βread temperature sensor every 10s and send via GSMβ.
- Designed to be easily portable across projects by reusing configuration and task code.
- π§© Separation of Concerns β hardware, system services, OS, and application logic are clearly layered.
- π Reusability β code can be reused across different projects and hardware setups.
- π Consistency β same API and coding model, regardless of the hardware used.
- β³ Rapid Prototyping β focus only on high-level logic, while MSF handles drivers, services, and task scheduling.
- π IoT-Ready β built-in support for modem boards means you can connect your project to the internet with minimal code changes.
- π₯ Setup β includes documentation, framework libraries, demos, and tools.
- ποΈ Project Generation β automated scripts create MPLAB X projects linked to the framework.
- βοΈ Configuration β features enabled via
sys_cfg.h(e.g., modem selection, task periods). - π Coding Model β dual-state (
InitializationState/RunningState), similar to Arduinoβssetup()/loop(). - π Deployment β choose between Standalone (direct programming) or Bootloader (USB
.hexflashing).
- π§© High Modularity β easily extend hardware with new boards.
- π Scalability β bus-based expansion for sensors/actuators.
- π Efficient Power Management β built-in LiPo support + external PBs.
- β³ Faster Development β framework abstracts complexity so you focus on logic.
- π π€ π Applications β home automation, robotics, industrial control, IoT devices, test benches, and more.
Mercury System combines scalable modular hardware π§© with a layered software framework ποΈ, enabling developers to move quickly from idea to implementation.
Itβs an IoT-ready platform π that balances flexibility, simplicity, and powerβperfect for makers, engineers, and innovators.