Giter Club home page Giter Club logo

esp-clock's Introduction

esp-clock ๐Ÿฆ€

This project was inspired by the rusty-clock project

The initial goal of the project was just to implement clocks with brand new ESP32-C3-RUST-BOARD, but over time, new ideas and more use cases began to appear.

Generally, project is created to demonstrate the capabilities of the new board in the Rust language, but now I've taken the direction to create a monitoring system based on the RUST-BOARD, so ch so you have two possibilites how to run this project:

  • On the RUST-BOARD itself, enabling the esp32c3_rust_board_ili9341 feature, in Cargo.toml file. On-board sensors will be used.
  • Using another chip (list of availible configurations somewhere below), activating the corresponding feature in Cargo.toml file.

You can learn more about RUST-BOARD here


Important : every configuration other than esp32c3_rust_board_ili9341 requires Wi-Fi connection and uses MQTT messaging to revceive data from RUST-BOARD, which is measuring temperature and humidity

MQTT measurements sender is implemented here also by myself and of course it's also for RUST-BOARD since this project is dedicated to it


Hardware

ESP32-C3-RUST-BOARD

The basic use case for this project involves the use of a RUST-BOARD and ILI9341 display.

Used pins

ILI9341 ESP-RUST-BOARD
RST GPIO3
CLK GPIO6
D_C GPIO21
CS GPIO20
MOSI GPIO7

ESP32-ะก3-RUST-BOARD with ILI9341 display

esp-clock_esp-rs-logo

esp-clock_working


Features

  • Enable esp32c3_rust_board_ili9341 feature if you want to use RUST-BOARD and it's on-board sensors with ili9341 display
  • Enable esp32c3_ili9341 if you're using ESP32-C3 board and ili9341 display OR if you want to use RUST-BOARD with MQTT-messaging to receive temperature and humidity from another RUST-BOARD
  • Enable esp32s3_ili9341 if you're using ESP32-S3 board and ili9341 display
  • Enable esp32s2_ili9341 if you're using ESP32-S2 board and ili9341 display
  • Enable esp32s3_usb_otg if you're using ESP32-S3-USB-OTG board and ili9341 display

Warning

Not optimized yet.

  • Enable esp32s2_usb_otg if you're using ESP32-S2-USB-OTG board and ili9341 display

Warning

Not optimized yet.


Important : If you using any configuration with Wi-Fi, it will set time automatically. Also, if you're using esp32c3_rust_board_ili9341 configuration and you want to enable Wi-Fi time setting - just add --features wifi to execution command. Otherwise, you will need to set the time manually at THESE lines of code


Plans

  • Model a box โฐ
  • Make some kind of a monitoring system with the ability to place several sensors(RUST-BOARDS) over the room/building/whatever
  • Optimize project for other targets (ESP32-S3-BOX, ESP32-S2-Kaluga-1, ESP32-S2-HMI-DevKit-1)
  • Grafana integration ๐Ÿ“Š
  • Slint integration ๐Ÿ“Ÿ

Dev Containers

This repository offers Dev Containers supports for:

Note

In order to use Gitpod the project needs to be published in a GitLab, GitHub, or Bitbucket repository.

In order to use GitHub Codespaces the project needs to be published in a GitHub repository and the user needs to be part of the Codespaces beta or have the project under an organization.

If using VS Code or GitHub Codespaces, you can pull the image instead of building it from the Dockerfile by selecting the image property instead of build in .devcontainer/devcontainer.json. Further customization of the Dev Container can be achived, see .devcontainer.json reference.

When using Dev Containers, some tooling to facilitate building, flashing and simulating in Wokwi is also added.

Build

  • Terminal approach:

    scripts/build.sh  [debug | release]
    

    If no argument is passed, release will be used as default

  • UI approach:

    The default build task is already set to build the project, and it can be used in VS Code and Gitpod:

    • From the Command Palette (Ctrl-Shift-P or Cmd-Shift-P) run the Tasks: Run Build Task command.
    • Terminal-> Run Build Task in the menu.
    • With Ctrl-Shift-B or Cmd-Shift-B.
    • From the Command Palette (Ctrl-Shift-P or Cmd-Shift-P) run the Tasks: Run Task command and select Build.
    • From UI: Press Build on the left side of the Status Bar.

Flash

Note

When using GitHub Codespaces, we need to make the ports public, see instructions.

  • Terminal approach:

    • Using flash.sh script:

      scripts/flash.sh [debug | release]
      

      If no argument is passed, release will be used as default

  • UI approach:

    • From the Command Palette (Ctrl-Shift-P or Cmd-Shift-P) run the Tasks: Run Task command and select Build & Flash.
    • From UI: Press Build & Flash on the left side of the Status Bar.
  • Any alternative flashing method from host machine.

Wokwi Simulation

When using a custom Wokwi project, please change the WOKWI_PROJECT_ID in run-wokwi.sh. If no project id is specified, a DevKit for esp32c3 will be used.

Warning

ESP32-S3 is not available in Wokwi

  • Terminal approach:

    scripts/run-wokwi.sh [debug | release]
    

    If no argument is passed, release will be used as default

  • UI approach:

    The default test task is already set to build the project, and it can be used in VS Code and Gitpod:

    • From the Command Palette (Ctrl-Shift-P or Cmd-Shift-P) run the Tasks: Run Test Task command
    • With Ctrl-Shift-, or Cmd-Shift-,

      Note

      This Shortcut is not available in Gitpod by default.

    • From the Command Palette (Ctrl-Shift-P or Cmd-Shift-P) run the Tasks: Run Task command and select Build & Run Wokwi.
    • From UI: Press Build & Run Wokwi on the left side of the Status Bar.

Warning

The simulation will pause if the browser tab is in the background.This may affect the execution, specially when debuging.

Debuging with Wokwi

Wokwi offers debugging with GDB.

  • Terminal approach:

    $HOME/.espressif/tools/riscv32-esp-elf/esp-2021r2-patch3-8.4.0/riscv32-esp-elf/bin/riscv32-esp-elf-gdb target/riscv32imc-esp-espidf/debug/esp_clock -ex "target remote localhost:9333"
    

    Wokwi Blog: List of common GDB commands for debugging.

  • UI approach:

    1. Run the Wokwi Simulation in debug profile
    2. Go to Run and Debug section of the IDE (Ctrl-Shift-D or Cmd-Shift-D)
    3. Start Debugging by pressing the Play Button or pressing F5
    4. Choose the proper user:
      • esp when using VS Code or GitHub Codespaces
      • gitpod when using Gitpod

esp-clock's People

Contributors

playfulfence avatar sergiogasquez avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

esp-clock's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.