All Projects → davetcc → Tcmenu

davetcc / Tcmenu

Licence: apache-2.0
TcMenu is a full feature menu system for Arduino, mbed and ESP, it's modular enough to support different input types, displays and also has the concept of remote control built in.

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Tcmenu

Arduinomenu
Arduino generic menu/interactivity system
Stars: ✭ 520 (+566.67%)
Mutual labels:  arduino, iot, menu
Device Os
Device OS (Firmware) for Particle Devices
Stars: ✭ 976 (+1151.28%)
Mutual labels:  arduino, iot
Hugo Esp8266
Hugo is a 4-button ESP8266 Wi-Fi Remote, Arduino compatible and simple to use.
Stars: ✭ 77 (-1.28%)
Mutual labels:  arduino, remote-control
Gem
Good Enough Menu for Arduino
Stars: ✭ 54 (-30.77%)
Mutual labels:  arduino, menu
Easyntpclient
Library to read time from Network Time Protocol (NTP) servers.
Stars: ✭ 20 (-74.36%)
Mutual labels:  arduino, iot
Badusb botnet
👥😈 Infect a pc with badusb and establish a connection through telegram.
Stars: ✭ 32 (-58.97%)
Mutual labels:  arduino, remote-control
Bleeper
Library to manage your firmware configurations written in C++
Stars: ✭ 54 (-30.77%)
Mutual labels:  arduino, iot
Send altitude cocoos
IoT program for Arduino Uno / STM32 Blue Pill (libopencm3) that reads BME280 temperature + humidity + altitude sensors, via I2C or SPI with DMA and multitasking. Sends sensor data to Sigfox via Wisol Sigfox module on UART. Runs on cocoOS task scheduling library http://www.cocoos.net
Stars: ✭ 24 (-69.23%)
Mutual labels:  arduino, iot
Parse Sdk Arduino
The Arduino SDK for the Parse Platform
Stars: ✭ 59 (-24.36%)
Mutual labels:  arduino, iot
Devkit Sdk
Arduino library and package for the MXChip IoT DevKit
Stars: ✭ 62 (-20.51%)
Mutual labels:  arduino, iot
Mysensors
MySensors library and examples
Stars: ✭ 1,150 (+1374.36%)
Mutual labels:  arduino, iot
Esp8266 Wifi Relay
simple sketch of using ESP8266WebServer to switch relays on GPIO pins. It serves a simple website with toggle buttons for each relay
Stars: ✭ 13 (-83.33%)
Mutual labels:  arduino, iot
Esp8266 thing dev
An all-in-one development board for the ESP8266 including an FTDI FT231X for USB programming.
Stars: ✭ 11 (-85.9%)
Mutual labels:  arduino, iot
Sming
Sming - Open Source framework for high efficiency native ESP8266 development
Stars: ✭ 1,197 (+1434.62%)
Mutual labels:  arduino, iot
Iot cloudcloud
Stars: ✭ 26 (-66.67%)
Mutual labels:  arduino, iot
Iotz
compile things easy 🚀
Stars: ✭ 39 (-50%)
Mutual labels:  arduino, iot
Serial Studio
Multi-purpose serial data visualization & processing program
Stars: ✭ 1,168 (+1397.44%)
Mutual labels:  arduino, iot
Sitewhere
SiteWhere is an industrial strength open-source application enablement platform for the Internet of Things (IoT). It provides a multi-tenant microservice-based infrastructure that includes device/asset management, data ingestion, big-data storage, and integration through a modern, scalable architecture. SiteWhere provides REST APIs for all system functionality. SiteWhere provides SDKs for many common device platforms including Android, iOS, Arduino, and any Java-capable platform such as Raspberry Pi rapidly accelerating the speed of innovation.
Stars: ✭ 788 (+910.26%)
Mutual labels:  arduino, iot
Coapnet
CoAPnet is a high performance .NET library for CoAP based communication. It provides a CoAP client and a CoAP server. It also has DTLS support out of the box.
Stars: ✭ 23 (-70.51%)
Mutual labels:  arduino, iot
Tasmota Irhvac
Home Assistant platform for controlling IR Air Conditioners via Tasmota IRHVAC command and compatible harware
Stars: ✭ 58 (-25.64%)
Mutual labels:  iot, remote-control

tcMenu - A menu system for Arduino and mbed with IoT capabilities

A menu system for Arduino and mbed that is modular enough to support different input methods, display modules and remote control methods. TcMenu is more than just an Arduino menu library, think of it as a framework for building IoT applications that includes the ability to render menus locally onto a display.

Initially, you can use the menu designer UI that is packaged with every release, and available for both Windows, MacOS and Linux. The designer UI takes care of building the core menu code and putting any callback functions into your sketch file. Think of the designer like a form designer in the desktop domain. Furthermore, It's non destructive on the sketch file, so can be round tripped during development.

Questions, community forum and support

You can get help from the community forum, there are also support and consultancy options available from TheCodersCorner.

Installation and documentation

Nearly all users should probably choose the designer UI package; it's available for Windows and MacOS and includes all the embedded libraries. The designer UI will copy all the required libraries into place for you. However, should you wish to go it alone, the embedded libraries are in the embedded directory in the above repository, and can be copied directly into the Arduino/libraries folder.

Windows 10:

For Windows 10 you can directly obtain from the Windows store using the following link: [https://www.microsoft.com/store/productId/9NHJNH9BCNJN]

Any MacOS from High Sierra onwards

For any MacOS from High Sierra onwards, obtain directly from the Mac App Store: [https://apps.apple.com/gb/app/tcmenu-designer/id1527782002?mt=12]

Windows 7, 8 and Linux

Get the latest TcMenu Designer release, it's available as an executable for Windows 7. There is a Debian package for Linux now available in late BETA test

Documentation

UI user guide, getting started and other documentation

Full API embedded documentation

Generating a menu from the UI for the impatient

If you don't want to read the above documentation this gives a very quick start. Open the tcMenu Designer UI to start with and ensure the embedded libraries are up to date.

Load the EMF file from an example closest to the hardware you have. You'll see the menu tree structure on the left, and the details for each menu when selected on the right. Below the menu tree are buttons that manage items in the menu tree.

Once you've arranged your menu using the UI how you'd like it, choose Code -> ID & Eeprom analyser from the menu to check that you've not got any overlapping ranges, then choose Code -> Generate from the menu, choose appropriate hardware arrangements and hit generate.

The Generator is capable of round trip development too - most of the code is offloaded into associated CPP and Header files.

TcMenu still supports Uno with LiquidCrystal dfRobot shield or Ssd1306Ascii

We try to keep Uno viable for tcMenu. However, there are limitations to what we can do. You can run a full menu on an Uno, but it's unlikely that the remote Ethernet support will fit. For anything that includes remote control support, we recommend at least 64K of flash memory. We store the menu items in static RAM where it's supported by the hardware, to further reduce memory on the board.

Input and display technologies

Support for rotary encoders, digital/analog joysticks and touch buttons

We fully support rotary encoder based input with no need for any additional components in many cases. You can even connect your rotary encoder on a PCF8574 or MCP23017. Further, we even support more than one encoder.

You can configure 3 or more buttons to work like a digital joystick using button based rotary encoder emulation (Up, Down and OK buttons with optional left and right) on either board pins, i2c expander, shift register. DfRobot analog input style buttons. Either DfRobot, or other analog ladder (configurable in code).

We also support the ESP32 touch pad interface, allowing up to 9 touch buttons to be used for menu input, they currently configure as per digital joystick.

Support for matrix keyboards

Matrix Keyboards of configurable size and key combination. Pre-canned options for 4x3 and 4x4 layouts. Most of the core functions work with a matrix keyboard.

Support for touch screens

From 2.0 onwards we'll support touch screen interfaces. We have built the support so that we can add many devices later, but to start with we will support resistive touch screens using 4 inputs, and the STM32 BSP provided touch screen interface.

Drawing to LiquidCrystal (i2c or direct)

We have a fork LiquidCrystal for 20x4 or 16x2 displays - can be either directly connected, over an i2c sheild (PCF8574, MCP23017) or on a shift register. Our version of the library integrates better with task manager, yielding frequently.

Adafruit_GFX integration for many displays

Most libraries that are compatible with Adafruit_GFX will work with tcMenu, we've tested with the following TFT's ILI9341, ST7735 and also Nokia 5110 display. We even have a quick start option that helps you get started with this option.

For mbed RTOS 5/6 we have a custom Adafruit_GFX OLED driver https://github.com/davetcc/Adafruit-GFX-mbed-fork that supports SSD1306, SH1106.

U8G2 integration for mono display

We can render onto most buffered displays using this library. Tested with OLED devices such as SSD1306 and SH1106. We can even provide a custom I2C byte function that yields to task manager frequently, making it work better with task manager, and correctly yield on ESP boards too.

TFTeSPI and STM32 LTDC framebuffer integration

From 2.0 onwards we'll support TFTeSPI and STM32 LTDC framebuffer based BSP functions to provide very high performance display rendering, we've tested with these two options on both ESP32 and STM32F429, the results were highly impressive.

No local input or display techonologies

Should your app not need any local display or input technologies, you can set up tcMenu so that it does not have local input or display, or you could have a single switch or LED on the device and manage it manually. In this case you'd use the below IoT support to manage the device remotely.

Remote IoT support on Ethernet, WiFi, Serial and Bluetooth/BLE

This menu library provides complete IoT remote control, presently over serial and ethernet. We've tested the serial support with both USB serial and Bluetooth, both work acceptably well. The full menu structure is sent over the wire and the Java API provides it as a tree that can be manipulated. There is also a defined protocol for other languages. In addition to this the menu can be programatically manipulated very easily on the device.

  • RS232 endpoint that supports full control of the menu items using a Java API - example app included.
  • Ethernet endpoint that supports either Ethernet2 library or UipEthernet.
  • Ethernet endpoint for mbed that supports the mbed socket implementation.
  • ESP8266 and ESP32 based WiFi both supported.

Ready built remote control for tcMenu - embedCONTROL

[https://www.thecoderscorner.com/products/arduino-libraries/tc-menu/tcmenu-remote-connection-arduino-desktop/]

Accessing TcMenu remotely using an API

Java / JVM API

There is a java API for accessing the menu remotely, source includes JavaDoc to help getting started. There is an example JavaFX UI built with it within the above Repo. Include the following into your maven build file:

    <dependency>
        <groupId>com.thecoderscorner.tcmenu</groupId>
        <artifactId>tcMenuJavaAPI</artifactId>
        <version>1.3.3</version>
    </dependency>

Coming Soon C# / .NET API

We are currently quite far along on a C# port of the API. There's an issue in the issue track for the port and we'll let you know when it's further along.

Loading and saving menu items

tcMenu can also save menu item state to EEPROM storage. On AVR that will generally be internal EEPROM, on 32 bit boards generally an AT24 i2c EEPROM.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].