
TcMenu is a modular, IoT ready multi level menu library for Raspberry PI, Arduino and mbed supporting many input, display and IoT / remote interfaces. It makes presenting configuration, status and operational information much easier.
Start by building out your systems state represented by menu-items in the Designer UI. Then, run Code Generator which outputs code for the selected board. Finally, compile the code using your favourite IDE and test on your device.
Each menu item represents a state in the system, for example in an amplifier there would be menu items for “volume” and “input”. In a wireless IoT system there could well be items for “SSID” and “Password” and possibly another item for current status. You can also present information such as signal strength as title widgets (small icons on the top-right). The image shown top left presents the ESPAmplifier example.
Menu library core documentation for Arduino
- TcMenu - Getting started, including video & slides
- tcMenu Designer releases page
- Guide to working with Menu Item Types
- Code Generator and plugins guide
- EEPROM integration with menus
- Setting up IO expanders in designer
- Authentication - securing sub-menus and remote connections
- Creating and generating menus using the CLI
- MenuManager and Menu iteration Guide
- Useful helper functions in tcUtil.h
- Embedded library reference documentation
- GitHub Repository - for source and releases
- Major code level differences between library versions
- Arduino library compatibility matrix and build time settings
Specific for Java on Raspberry PI or embedded Linux
We now build the designer application and embedCONTROL for the Raspberry PI, so not only can you make a Raspberry PI embedded application, you can even run designer and embedCONTROL on an RPI as well!
- Creating an embedded Java menu application for RaspberryPI
- Display menu on JavaFX/OpenJDK on Raspberry PI
- Menu In Menu - Embed remote menus into a single app
- Java IoT API reference documentation
- embedCONTROL Core API reference documentation
Display plugins
- Working with display renderers
- Creating and using TitleWidgets and bitmaps
- Themes, properties, grids and icons
- How to define fonts within theme configuration
- Taking over the display
- DfRobot LCD shield driver
- LiquidCrystal / hd44780 display driver
- AdaFruit_GFX driver - ILI9341, ST7735, Nokia5110 etc
- AdaFruit_GFX mbed RTOS for OLED - SSD1306, SH1106
- U8g2 driver - for SSD1306, SH1106 etc
- SSD1306Ascii low memory driver - for SSD1306 on Uno
- TFT_eSPI driver with double buffering
- STM32 LTDC mbed frame buffer with touch
- Customising a display driver
Theme plugins
- OLED/Mono themes both bordered and inverse
- Color themes for most display sizes
- Dark themes for most display sizes
Input plugins
- Rotary encoder, buttons or joystick
- Using a matrix keyboard to control menu
- DfRobot analog pin keypad input
- Resistive touch screen menu integration
- XPT2046 and FT6206 touch screen menu integration
- Capacitive Touch-pad sensor input
Remotely controlling your menu / IoT
Our menu designer can build in IoT capabilities near automatically. Allowing you to remotely monitor and control your device using embedCONTROL, using our Java Remote API on Ethernet2, UipEthernet (ENC28J60), ESP8266-WiFi, ESP32-WiFi, Bluetooth and Serial. Also, you can use our TypeScript/JavaScript API on a few larger boards supporting web-sockets. Other connectors can easily be added.
- embedCONTROL UI for IoT monitoring
- Menu library remote connectivity tutorial
- Remotely control your menu using the Controller App
- IoT monitoring and control using the Java API
- Java IoT API reference documentation
- TagVal protocol documentation
IoT and Remote control plugins
- Serial driver for usb, rs232 and Bluetooth control
- Ethernet driver for Ethernet2 and Uip control
- WiFi driver for ESP32 and ESP8266 control
- Simhub connector for tcMenu using custom serial protocol
- Embedded Java plugin for ethernet/WiFi remote
- Serving up embedCONTROL in a web browser