When most people hear about the Swift programming language, they probably think of developing software for Apple devices. However, MadMachine's SwiftIO implementation brings a stable modern language with embedded microcontrollers. And their SwiftIO Playground is 12 modules with a high-performance i.MX microcontroller to help you learn how to use Swift and SwiftIO for embedded applications.
SwiftIO Playground consists of the hardware, software, and documentation.
The hardware is a large PCB with a dozen peripheral modules connected to a carrier board. That carrier supports an Adafruit-compatible Feather microcontroller board called MadBoard.
MadBoard has an NXP i.MX microcontroller — the same one used by the Teensy 4.x boards. Running at 600 MHz with 32 megabytes of RAM and 8 megabytes of flash, there is plenty of processing power for embedded applications.
The SwiftIO Playground modules include the following:
- TFT LCD
- PWM-controlled LED
- USB-to-serial converter
- Two potentiometers
- Two push buttons
- Piezo buzzer
- Audio speaker
- Real-time clock
- Temperature and humidity sensor
- Color sensor
On the PCB, these modules connect via traces to the carrier board. Or, you can break the modules off, connect via cable, and use them in other projects.
For software, most people are familiar with Swift through OSX and iOS development. Apple originally developed it as a replacement for the aging Objective-C language, the basis of their modern operating systems. Swift supports many modern programming features. It promises to prevent programmer mistakes that lead to application crashes. SwiftIO brings that stability to the embedded world.
SwiftIO is a framework that adapts Swift to microcontrollers. The API is a wrapper for the Zephyr RTOS. You can program it with a VSCode extension. Since Swift and SwitIO may be new to embedded programmers, MadMachine provides extensive tutorials and getting started guides.
Check out the SwiftIO Playground campaign page on Crowd Supply for more information. There you can also sign-up for notifications when the project goes live!