An Arduino library for driving a Minitel from an ESP32.
Page drawing, geometry, validated text input, and Qt-style Table/Tree views.
Builds on top of the Minitel1B_Hard library.
Report a bug or request a feature
The minitel is a french great-uncle of internet that comes back frequently in retro computing projects. This well documented old machine has a peripheral port from which we can access to screen display and keyboard input, so it can basically be used for any terminal application. The semi-graphic mode also makes GUI development possible with 80x72 resolution and 8 grayscale colors.
MinitelToolkit is a small collection of reusable building blocks for driving a Minitel from an ESP32 over serial. It wraps the lower-level Minitel1B_Hard library with higher-level page/text/geometry helpers, validated text input, and a small Qt-style item-model/item-view layer for scrollable tables and trees on the Minitel's 40x24 screen.
Note
This library is ESP32-only (it uses esp_random() internally) and is only useful with a real Minitel attached.
- Display & page drawing (
ExtendedMinitel) — full-page redraws with title/header, colored text, double-size/blinking/inverted text modes, rectangles and lines. - Validated user input (
UserInputValidator/TextPattern) — constrain a text-entry field to specific character classes (letters, numbers, special characters, spaces) while the user types. - Table & Tree views (
ViewModel/) — a small item-model/item-view layer (TableView/TableViewModel,TreeView/TreeViewModel) for rendering scrollable lists and hierarchies with keyboard-driven cursor navigation, independent of the real Minitel hardware cursor. - Utilities (
Utils/) — math/clamping helpers, string formatting,DateTime/Timespan, and a few other small helpers used throughout the rest of the library.
You need a Minitel connected to an ESP32 over serial (Minitel ESP32 Dongle).
More information about connecting a Minitel to an ESP32 can be found on the Minitel + ESP-32 project page.
- Install software Arduino IDE.
- Add Arduino-ESP32 core to the IDE as described here.
- Install the Minitel1B_Hard library (MinitelToolkit builds on top of it):
- Download the Minitel1B_Hard library as a ZIP file.
- In Arduino IDE, go to Sketch / Include Library / Add .ZIP Library and select your ZIP file.
- Select ESP32 Dev Module in Tools/Board type/ESP32 Arduino (or whichever ESP32 board you're targeting).
MinitelToolkit isn't published on the Arduino Library Manager yet, so install it manually:
- Download or clone this repository.
- Copy (or symlink) the
MinitelToolkitfolder into your Arduino sketchbook'slibraries/folder (typicallyDocuments/Arduino/libraries/on Windows/macOS). - Restart the Arduino IDE.
- Confirm it shows up under Sketch / Include Library, and that Sketch / Examples / MinitelToolkit lists the example sketches below.
#include <MinitelToolkit.h>
ExtendedMinitel minitel;
void setup()
{
minitel.defaultSetup();
minitel.displayNewPage("HELLO", "MinitelToolkit");
minitel.displayString("Hello, Minitel!", 5, 10);
}
void loop() {}A single #include <MinitelToolkit.h> pulls in the whole library (display, validated input, Table/Tree views and utilities). If you'd rather keep your sketch's includes narrow, you can still include the individual headers directly (e.g. #include <Minitel/ExtendedMinitel.h>, #include <ViewModel/TableView.h>).
See Examples below for validated text input and the Table/Tree views.
| Example | Demonstrates | Hardware |
|---|---|---|
| PageDrawingAndGeometry | Page/header drawing, text size & inverted background modes, rectangles & lines, arrow-key navigation | Minitel + ESP32 |
| ValidatedUserInput | Constraining a text field to digits/uppercase letters with UserInputValidator |
Minitel + ESP32 |
| TableView | TableView/TableViewModel rendering a grid with keyboard cursor navigation |
Minitel + ESP32 |
| TreeView | TreeView/TreeViewModel rendering a small two-level hierarchy with keyboard navigation |
Minitel + ESP32 |
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature) - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the GNU General Public License v3.0. See LICENSE for more information.