Skip to content

torresflo/MinitelToolkit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitHub license PRs Welcome GitHub contributors GitHub issues

Minitel Toolkit

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

Table of Contents

Introduction

What the hell is a Minitel?

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.

Features

  • 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.

Getting Started

Prerequisites and dependencies

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.

  1. Install software Arduino IDE.
  2. Add Arduino-ESP32 core to the IDE as described here.
  3. 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.
  4. Select ESP32 Dev Module in Tools/Board type/ESP32 Arduino (or whichever ESP32 board you're targeting).

Installation

MinitelToolkit isn't published on the Arduino Library Manager yet, so install it manually:

  1. Download or clone this repository.
  2. Copy (or symlink) the MinitelToolkit folder into your Arduino sketchbook's libraries/ folder (typically Documents/Arduino/libraries/ on Windows/macOS).
  3. Restart the Arduino IDE.
  4. Confirm it shows up under Sketch / Include Library, and that Sketch / Examples / MinitelToolkit lists the example sketches below.

Usage

#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.

Examples

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

Contributing

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.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature)
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Distributed under the GNU General Public License v3.0. See LICENSE for more information.

About

No description, website, or topics provided.

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors