Skip to content

Latest commit

 

History

History
189 lines (143 loc) · 6.93 KB

README.md

File metadata and controls

189 lines (143 loc) · 6.93 KB

Jessy OS

Jessy OS is an embedded operating system designed for the ESP32 microcontroller. It provides a versatile platform for various IoT and embedded systems projects, with features like a file system, real-time clock support, networking capabilities, user accounts, and JavaScript execution via the embedded Duktape VM.

Features

  • File System: Jessy OS includes its own file system, allowing you to manage and access files on the ESP32 device.
  • Real-Time Clock (RTC): It supports the DS1307 real-time clock via I2C, enabling accurate timekeeping for your applications.
  • User Accounts: You can create and manage multiple user accounts, making it suitable for applications requiring user authentication.
  • Networking: Jessy OS includes networking functionality with a WLAN command for managing Wi-Fi connections and network configurations.
  • JavaScript Support: The embedded Duktape VM allows you to execute JavaScript programs, expanding the range of applications you can build.

Getting Started

Components

Before getting started with Jessy OS, you'll need the following:

  • An ESP32 microcontroller.
  • A compatible SD card adapter module for file system support.
  • A DS1307 real-time clock module connected via I2C.

After gathering the aforementioned components, connect it as follows:

Component ESP32
SD Card
VCC VCC
GND GND
CS GPIO5
MOSI GPIO23
MISO GPIO19
SCK GPIO18
DS1307 RTC
VCC VCC
GND GND
SDA SDA
SCL SCL

Flashing the OS

  1. Clone the Jessy OS repository.

    git clone https://github.com/nthnn/Jessy-OS.git
  2. Open the clone repository via PlatformIO extension on VS Code.

  3. Plug your board in, and then press the upload button on the status bar of VS Code.

  4. Enjoy!

Running

Communication to Jessy OS can be done through UART serial communication, which means, it just needs to be connected to the USB port (e.g. via CH340, PL2302, etc).

  1. Connect the ESP32 (e.g. ESP32 DevKit 1.0) board to USB port.
  2. Open the jsym. Program dedicated for communicating with Jessy OS via UART.
  3. Press the reset button on ESP32 DevKit board.

Documentations

The documentation includes documentation on how Jessy OS works, the available terminal commands, and the JavaScript APIs.

Contributions

Contributions and feedback are all welcome to enhance this library. If you encounter any issues, have suggestions for improvements, or would like to contribute code, please do so.

Issue Reporting

If you encounter a bug, have a feature request, or want to suggest improvements, please open an issue on the GitHub Issue Tracker. Be sure to provide as much detail as possible, including steps to reproduce the issue if applicable.

Pull Requests

If you want to contribute to Jessy OS, follow these steps:

  1. Fork the Jessy OS repository to your GitHub account. And then clone it to your local machine.

    git clone https://github.com/<your username>/Jessy-OS.git
  2. Create a new branch for your changes:

    git checkout -b feature/<your feature name>
  3. You can now make changes to the repository.

  4. Commit your changes:

    git add -A
    git commit -m "Add your meaningful commit message here"
  5. Push your changes to your forked repository:

    git push origin feature/<your feature name>
  6. Create a pull request (PR) from your branch to the main branch of the Jessy OS repository.

  7. Your PR will be reviewed, and any necessary changes will be discussed and implemented.

  8. Once your PR is approved, it will be merged into the main branch, and your contribution will be part of Jessy OS.

Contributors

To-do

  1. Make a GNU's wget-like command.
  2. Bluetooth Low Energy (BLE) functionality and terminal command.
  3. Port any other tiny programming/scripting language other than Duktape's JavaScript.
  4. Scheduling and auto-run tasks on boot-up.
  5. Improve the available APIs on the JavaScript Duktape VM.
  6. Design a customized PCB.

Known Bugs

  1. IO.scan() function produces a bug that causes to desynchronize the Serial UART stream. (See line #50 of src/jessy_io.cpp)
  2. Uninvoked callback for RTC timestamp on files via SdFile::dateTimeCallback() for SD.h. (See line #65 of src/jessy_io.cpp)

License

Copyright 2023 - Nathanne Isip

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.