Skip to content

mrvasilyev/grid-board-tab5

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

10 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Grid Board Tab5 - Interactive Touch Display for M5Stack Tab5

An interactive touch-enabled grid display application for the M5Stack Tab5 ESP32-P4 development board. Features animated text messages with emoji support, creating an engaging visual experience on the 5-inch display.

This project is a port of the original Grid Board by Eric Nam (@0015) to the M5Stack Tab5 platform.

Grid Board Tab5 Demo

Features

  • Interactive Touch Grid: 5x9 grid of touch-responsive cells
  • Animated Messages: Smooth text animations with customizable messages
  • Emoji Support: Full Unicode emoji rendering
  • Landscape Orientation: Optimized for horizontal viewing
  • Customizable Messages: Easy to modify display messages

⚠️ Experimental Features (Not Working)

  • ESP32-C6 Wi-Fi Integration: The code includes support for ESP32-C6 wireless module via SDIO, but it's currently non-functional due to firmware and controller issues. This feature is under development.

Hardware Requirements

  • M5Stack Tab5 development board
    • ESP32-P4 main processor (RISC-V 32-bit dual-core 400MHz)
    • 5" IPS TFT Display (1280Γ—720) via MIPI-DSI
    • GT911 multi-touch controller
    • 16MB Flash + 32MB PSRAM
    • ESP32-C6 wireless module (present but not supported in this version)

Software Requirements

  • ESP-IDF v5.4+ (ESP-IDF v5.5 recommended)
  • Python 3.8+
  • esptool.py v4.10+

Quick Start

1. Clone the Repository

git clone https://github.com/yourusername/grid-board-tab5.git
cd grid-board-tab5

2. Set Up ESP-IDF Environment

# Source ESP-IDF environment
source /path/to/esp-idf/export.sh

# Or on macOS with default installation
source ~/esp/esp-idf/export.sh

3. Build the Project

idf.py build

4. Flash to Device

# Flash all components
idf.py -p /dev/cu.usbmodem212301 flash

# Or flash with specific parameters
python -m esptool --chip esp32p4 -b 460800 --before default_reset --after hard_reset \
  write_flash --flash_mode dio --flash_size 16MB --flash_freq 80m \
  0x2000 build/bootloader/bootloader.bin \
  0x10000 build/partition_table/partition-table.bin \
  0x20000 build/grid_board_tab5.bin

5. Monitor Output

idf.py -p /dev/cu.usbmodem212301 monitor

# Or use screen
screen /dev/cu.usbmodem212301 115200

Press Ctrl+] to exit the monitor.

Customizing Messages

Edit the messages array in main/main_simple.cpp:

const char* messages[] = {
    "HELLO WORLD! πŸ‘‹πŸŒ",
    "M5STACK TAB5 πŸš€βœ¨",
    "TOUCH ME! πŸ‘†πŸ˜Š",
    "ESP32-P4 POWER! πŸ’ͺπŸ”₯",
    "FAMILY TOGETHER ❀😊❀"
};

Messages cycle every 30 seconds automatically.

Project Structure

grid-board-tab5/
β”œβ”€β”€ main/
β”‚   β”œβ”€β”€ main_simple.cpp          # Main application entry
β”‚   β”œβ”€β”€ grid_board.cpp           # Grid board UI implementation
β”‚   β”œβ”€β”€ grid_board.h             # Grid board header
β”‚   └── CMakeLists.txt           # Build configuration
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ m5stack_tab5/            # BSP for M5Stack Tab5
β”‚   └── imlib/                   # Image and font libraries
β”œβ”€β”€ build/                        # Build artifacts (generated)
β”œβ”€β”€ partitions.csv               # Partition table configuration
β”œβ”€β”€ sdkconfig                    # Project configuration
β”œβ”€β”€ CMakeLists.txt              # Root build configuration
└── README.md                   # This file

Display Features

Grid System

  • Grid Size: 5 rows Γ— 9 columns (45 cells total)
  • Cell States: Empty, filled, or animated
  • Touch Response: Visual feedback on touch events
  • Animation: Smooth transitions between states

Message Display

  • Text Processing: Automatic character-to-grid mapping
  • Emoji Rendering: Full Unicode support
  • Animation Speed: Configurable delay between characters
  • Cycle Time: 30-second intervals between messages

Known Limitations

ESP32-C6 Wi-Fi Module (Not Working)

⚠️ Note: The ESP32-C6 wireless integration is currently non-functional. The code infrastructure is present but:

  • SDIO communication with C6 module fails to initialize properly
  • Firmware flashing for C6 is problematic
  • The feature is left in the codebase for future development

If you see C6-related initialization errors in the logs, they can be safely ignored:

W (1179) GridBoard_Tab5: C6 communication initialization failed
W (1180) GridBoard_Tab5: ESP32-C6 may not have SDIO slave firmware installed

Touch Calibration

Touch events are processed through the GT911 controller:

// Touch callback in grid_board.cpp
static void touchpad_read(lv_indev_t *indev, lv_indev_data_t *data)
{
    // Touch processing logic
}

Troubleshooting

Common Issues

  1. Partition Table MD5 Error

    E (1115) partition: No MD5 found in partition table
    

    Solution: Use the provided partition table or disable MD5 check in menuconfig.

  2. Display Not Initializing

    • Ensure proper connection to the device
    • Check if bootloader is flashed correctly
    • Verify flash addresses match the partition table
  3. Touch Not Working

    • Check I2C connections (GPIO 31/32)
    • Verify GT911 initialization in logs
    • Ensure display backlight is enabled

Debug Output

Enable verbose logging:

idf.py -p /dev/cu.usbmodem212301 monitor -b 115200

Check for initialization messages:

I (1109) GridBoard_Tab5: Grid Board Demo for M5Stack Tab5 starting...
I (1144) GridBoard_Tab5: Initializing display with landscape orientation
I (1168) GridBoard_Tab5: Starting LVGL task
I (1186) GridBoard_Tab5: Grid board initialized successfully!

Performance Specifications

  • Display Refresh Rate: 60 Hz
  • Touch Sampling Rate: 100 Hz
  • Message Cycle Time: 30 seconds
  • Animation Frame Rate: 100 fps (10ms per frame)
  • Memory Usage: ~200KB RAM + PSRAM

Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines.

Development Setup

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Run tests and verify functionality
  5. Submit a pull request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Credits & Acknowledgments

  • Original Grid Board Project: Eric Nam (@0015) - Creator of the original Grid Board concept and implementation
  • M5Stack for the Tab5 hardware platform
  • Espressif for ESP-IDF framework
  • LVGL for the graphics library
  • Community for testing and feedback

This project is a port/adaptation of Eric Nam's Grid Board to the M5Stack Tab5 platform, adding support for the ESP32-P4's MIPI-DSI display, GT911 touch controller, and ESP32-C6 wireless integration.

Contact

Version History

  • v1.0.0 (2025-08-28)
    • Initial release
    • Full touch grid implementation
    • Emoji support
    • Message cycling
    • ESP32-C6 integration code (non-functional, experimental)

Demo

Grid Board Tab5 Demo

The Grid Board displays animated messages on a 5x9 touch-responsive grid. Messages cycle every 30 seconds with smooth animations and full emoji support.

Device Photo

M5Stack Tab5


Made with ❀️ for the M5Stack community

About

Interactive touch-enabled grid display for M5Stack Tab5 ESP32-P4

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors