MaxGraey / m5stamp-c3dev

This is a development board for the M5Stamp C3 (RISC-V/FreeRTOS).

Home Page:https://another.maple4ever.net/archives/2979/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

m5stamp-c3dev

Main Board

This is a development board for the M5Stamp C3 (RISC-V/FreeRTOS).

Hardware

  • External USB-C port for JTAG debugging
  • Support for LCD panel and SD card
  • Selecting a power supply
  • Switch(GPIO9) to enter loader mode
  • Pin headers to expose usable GPIOs to the outside
  • The size is just Japanese business card

Sample Sources Included

AssemblyScript and Wasm3

  • Japanese TrueType font output to LCD - test_freetype.cpp
  • Output PNG images in SD card to LCD - test_tinypng.cpp
  • NTP synchronization via WiFi connection - test_nvs_wifi.cpp
  • Test I2C sensor connection to GPIO 18 and 19 (UNIT ENV III) - test_i2c_gpio1819.cpp
  • WebAssembly execution with Wasm3 (sample analog clock using AssemblyScript) - test_wasm3.cpp
  • Support RGB LED (SK6812)
  • Usage of SPIFFS, which stores TrueType fonts and .wasm binaries (parttool.py and spiffsgen.py tools)
  • Use of NVS (cryptographically enabled key value store) that stores WiFi passwords (nvs_partition_gen.py tool)
  • Building libraries and managing dependencies using the esp-idf build system
  • Visual Studio Code C/C++ Extention configuration and JTAG debugging configuration in conjunction with openocd
  • AssembyScript sharing method between web browser and microcontroller - wasm

This repository contains MIT Licensed PCB data and example programs.

Schematic

Circuit Diagram

#Unit Name Note Where to get it
U1 AE-USB2.0-TYPE-C USB 2.0 Type-C Break out board akizukidenshi.com (JP)
U2 M5STAMP-C3 M5Stamp C3 + M5Stack
+ SWITCH SCIENCE (JP)
U3 KMR-1.8SPI KMR-1.8 SPI marked LCD and SD card interface + amazon.co.jp (1)
+ amazon.co.jp (2)
+ ja.aliexpress.com
R1 - R2 5.2K Resistor Pull-down for USB Power supply -
R3 - R7 10K Resistor SPI pull-up -
JP1 Jumper pin Select external power supply akizukidenshi.com (JP)
SW1 Tact switch for loader mode and utility akizukidenshi.com (JP)
J1 12 Pin header You can use the one that comes with the M5Stamp C3 Mate -

PCB and Gerber data

Example Source

Require

With esp-idf 4.4.1 and arduino-esp32 2.0.4 , DHCP for WiFi did not work correctly. For this reason, We are using esp-idf 4.4.2. But although it is not the correct combination. @see DHCP client failed on 2.0.4 #7068

I (4407) esp_netif_handlers: sta ip: 255.255.255.255, mask: 255.255.255.255, gw: 255.255.255.255

get_idf or (Windows) ESP-IDF 4.4.2 command prompt

# Linux or macOS ->
$ alias get_idf='. $HOME/esp/esp-idf/export.sh'
$ get_idf
# <-

Detecting the Python interpreter
... snip ...
Done! You can now compile ESP-IDF projects.
Go to the project directory and run:

  idf.py build

$ echo ${IDF_PATH}
/home/hiromasa/devel/toolchain/esp/esp-idf

$ riscv32-esp-elf-gcc -v
Using built-in specs.
COLLECT_GCC=riscv32-esp-elf-gcc
... snip ...
gcc version 8.4.0 (crosstool-NG esp-2021r2)

openocd (Optional)

$ openocd
Open On-Chip Debugger  v0.10.0-esp32-20211111 (2021-11-10-21:40)
Licensed under GNU GPL v2
For bug reports, read
        http://openocd.org/doc/doxygen/bugs.html

Build and Execute

git clone and build

git clone --recursive https://github.com/h1romas4/m5stamp-c3dev
cd m5stamp-c3dev
idf.py build flash

Write TypeType font to SPIFFS

parttool.py write_partition --partition-name=font --partition-subtype=spiffs --input resources/spiffs_font.bin

Write WebAssembly(.wasm) to SPIFFS (AssemblyScript Analog Clock)

parttool.py write_partition --partition-name=wasm --partition-subtype=spiffs --input resources/spiffs_wasm.bin

Setup WiFi (Optional)

  1. Change WiFi Setting

nvs_partition.csv: Set own [ssid], [password]

key,type,encoding,value
wifi,namespace,,
ssid,data,string,[ssid]
passwd,data,string,[password]
  1. Create NVS Partation file
python ${IDF_PATH}/components/nvs_flash/nvs_partition_generator/nvs_partition_gen.py generate nvs_partition.csv nvs_partition.bin 0x6000
  1. Write NVS Partation
esptool.py write_flash 0x9000 nvs_partition.bin

Restart M5Stamp C3 (NTP synchronization is performed by pressing the SW1 after the startup logo)

idf.py monitor

Select connected GPIO18 and GPIO19 device

idf.py menuconfig

JTAG debug with Visual Studio Code

  1. Set ESP32_TOOLCHAIN_HOME
$ echo ${ESP32_TOOLCHAIN_HOME}
/home/hiromasa/.espressif/tools/riscv32-esp-elf
  1. Connect the PC to the USB Type-C of the U1
  2. Open the source file in Visual Studio Code.
  3. Run Task "openocd (debug)" @see .vscode/tasks.json
  4. Set a breakpoint in the source code.
  5. Debug Launch (GDB) @see .vscode/launch.json The first time you start the program, it will often fail, so if you get an error, retry.

vscode

Note

  • If the LCD color is inverted.

main/main.cpp

    // If the color is inverted, set to 1.
    tft.invertDisplay(0);
    // tft.invertDisplay(1);
  • Create SPIFFS parteation file
python ${IDF_PATH}/components/spiffs/spiffsgen.py 0x100000 resources/font resources/spiffs_font.bin
python ${IDF_PATH}/components/spiffs/spiffsgen.py 0x10000 resources/wasm resources/spiffs_wasm.bin
  • Change the output destination of the log to U1 Serial/JTAG.(Don't forget to put it back)

Component config → ESP System Settings → Channel for console output

idf.py menuconfig

vscode

AssemblyScript and Wasm3

Build AssemblyScript

cd wasm
npm install

Web Browser Development

npm run asbuild:web
npm run start
# http://localhost:1234/

Build and Flash

npm run asbuild
cd ..
python ${IDF_PATH}/components/spiffs/spiffsgen.py 0x10000 resources/wasm resources/spiffs_wasm.bin
parttool.py write_partition --partition-name=wasm --partition-subtype=spiffs --input resources/spiffs_wasm.bin

Dependencies

Thanks for all the open source.

Name Version License
esp-idf v4.4.2 BSD License
esp32-arduino 2.0.4 LGPL-2.1 License
M5EPD 0.1.4 FreeType Part(The FreeType License)
UNIT_ENV 0.0.5 MIT License
Adafruit_GFX 1.11.3 BSD License
Adafruit_BusIO 1.13.1 MIT License
Adafruit-ST7735-Library 1.9.3 MIT License
Adafruit_NeoPixel 1.10.5 LGPL-3.0 License
tinyPNG 0.11 MIT License
TinyGPSPlus v1.0.3 LGPL
wasm3 master(dc9fa49) MIT License
AsselblyScript 0.20.16 Apache-2.0 License
源真ゴシック - SIL Open Font License 1.1

License

MIT License (includes PCB data and example source)

About

This is a development board for the M5Stamp C3 (RISC-V/FreeRTOS).

https://another.maple4ever.net/archives/2979/

License:MIT License


Languages

Language:Shell 32.4%Language:C++ 32.0%Language:TypeScript 13.2%Language:CMake 8.2%Language:JavaScript 6.5%Language:C 5.8%Language:CSS 1.0%Language:HTML 0.9%