Skip to content

Latest commit

 

History

History
377 lines (276 loc) · 15.6 KB

README.md

File metadata and controls

377 lines (276 loc) · 15.6 KB


ESP32 MPY-Jama



🔸 Welcome to ESP32 MPY-Jama, a powerful and versatile cross-platform tool, designed to simplify your development with Espressif's ESP32 microcontrollers and MicroPython.

🔸 The lightweight IDE, file manager, terminal, and real-time dashboards provide all the essential features you need to develop your IoT projects quickly and efficiently on MacOS, Windows, and Linux.

🔸 With startup settings and customizable features, this tool can adapt to your workflow and preferences, making your coding experience seamless and enjoyable.

MacOS on arm64   ▪️   MacOS on Intel x86/64   ▪️   Windows 64-bits

             

To make it work under Linux 🐧 click here!



📑  Table of contents



🚀  Features

  • User-friendly graphical interface for easy use
  • Connect to multiple ESP32 board types
  • Lightweight IDE for easy programming
  • Terminal access for streamlined command execution
  • Pinout diagrams for popular board types
  • Easy installation of in-line modules with PyPI or MIP
  • Flash file system browser for easy file access
  • Native file tranfers and management
  • Real-time visualization of GPIO states
  • Access to important system information
  • Configuration of Wi-Fi and Ethernet network interfaces
  • SD card support for external storage
  • Simplified flash firmware updates
  • Advanced external component testing features
  • Control and manipulate peripherals such as LEDs strips, MP3 players, etc
  • Quick testing of IOs in digital or analog mode
  • Customizable features for an extensible development
  • Persistent configurations on boards if required
  • Real-time memory and temperature monitoring


⚙️  Real-time system dashboard

Access all important system information, adjust the MCU frequency, monitor the current status of the set GPIOs, check startup configuration options and display the various partitions of the flash memory.
The startup options allow you to save your configurations on the board, so that you can always maintain them after each reboot.


🌐  Real-time networks dashboard

Configure and display information about Wi-Fi connection and access point interfaces, set up a board with an integrated Ethernet PHY interface and verify that the Internet connection is available.
It is also possible to act on the state of the network interfaces, including the one for BLE.


📡  Wi-Fi in 2 clicks

Quickly connect your device to available Wi-Fi networks and set up an access point with ease.
The authentication options and the maximum number of clients are adjustable.

   



🖥️  Lightweight integrated IDE

Develop your MicroPython programs and libraries and test them directly using the lightweight IDE.
Also, a terminal is usable in the same window with the management of the history of your commands like a shell.
Manage and transfer content from the device's flash memory or SD card.


In the code editor, common keyboard shortcuts such as save, undo, search or move line blocks are available.
Tips: leave the mouse on a file to display its full name and size, or double-click on the tab bar to create one more quickly.

Use Espressif's pinout diagrams for the GPIOs, which are available on most boards:


🎛️  Embedded Jama Funcs

Jama Funcs are small dedicated functions that run on your device to perform a specific task.
They can be used to quickly test the functionality of the ESP32 or external modules and are designed to be easily configured.

Choose a Jama Func from those proposed, then configure its parameters directly in the graphical interface before executing it on your device:

When executing a Jama Func, a window with a terminal opens up, allowing you to view its output:

It is of course possible to develop your own Jama Funcs in order to import them into the interface and thus facilitate their use by implementing integrated parameters.
You can find a full template in MicroPython directly in the software or by clicking on this link.

The following table lists all the Jama Funcs already included in ESP32 MPY-Jama:

        Jama Func         Description
1-Wire Devices Scan Initializes a 1-Wire bus on a single GPIO and finds all the family IDs and serial numbers of slave devices.
ADC Reader Simple level and voltage reader on a GPIO using an analog-to-digital converter (ADC). You can specify the dB applied attenuation and the bits resolution.
BLE Scan Initializes the Bluetooth Low Energy radio and scans BLE devices via advertising data.
BLE iBeacon Initializes the Bluetooth Low Energy radio and simulates an Apple iBeacon object. The advertising message broadcasts an UUID corresponding to "B.JAMA-FUNC.TEST" in binary with the short name "MPY-Jama" while the iBeacon is the response to an active scanner. The iBeacon (Apple beacon format) data are: Major = 123 / Minor = 456 / TX at 1 meter = -55 dB
DAC Output Set a GPIO output to a specific voltage using digital-to-analog converter (DAC).
GPIO Input Simple reader of low/high voltage signals on a GPIO (pin) input. You can enable an internal pull resistor or not.
GPIO Output Set a GPIO (pin) output to ON or OFF.
I2C Slaves Scan Initializes an I2C bus on two GPIO and scans it to find all the addresses of I2C slaves. You can choose the bus identifier, the SCL and SDA GPIO as well as the frequency in MHz.
KT403A MP3 Player For MP3 modules based on KT403A chipset like DFPlayer, Grove-MP3 v2 and more. You will be able to connect your board via an UART bus, play all the sound files in loop from the intended storage source (microSD, USB, flash memory), adjust the volume but also choose an audio EQ effect (normal, pop, rock, jazz, classic, bass). Info: KT403A supports MP3 & WAV audio formats on FAT16 or FAT32 files system, 32 GB max for microSD.
LEDs - DotStar RGB Strip Try your DotStar RGB LEDs via SPI bus, compatible with strips APA102, SK9822, and more. You can choose the number of LEDs as well as the bus connectivity settings and the lighting in full power or in fading rainbow. The embedded library can be found via the link below.
LEDs - NeoPixel RBG(+W/Y) Strip Try your NeoPixel RGB(+W/Y) LEDs via only one GPIO, compatible with strips WS2812(B), SK6812, ADAxxxx, APA106, FLORA and more. You can choose the number as well as the type of LEDs like RGB or RGB+W/Y, the frequency, and the lighting in full power or in fading rainbow. The NeoPixel library was coded by Damien P. George.
Magnet Sensor Allows to test the hall sensor of the ESP32 chip with detection of the two magnetic poles after automatic calibration.
Max Threads Returns the maximum number of possible threads to create with the configurable stack size.
Memory Check This little tool simply allows you to allocate a maximum amount of memory on your chip in order to force the writing on almost all the available slots.
NTP Time Sync This tool synchronizes the UTC date and time from an NTP server. You can choose the NTP server host to connect to.
PWM & Lighting Uses a PWM on a GPIO and varies its duty cycle to make a led flash smoothly from 0 to 3.3V.
PWM & Servo Motor Uses a PWM on a GPIO and drives a servo motor by varying its duty cycle. Several options are available to configure the servo motor, such as pulse frequency, pulse width and rotation time.
UART Test Initializes an UART bus on two GPIO, sends or not a custom command and receives data from the bus. You can choose bus identifier, baud rate, bits per character, parity, stop bits and TX/RX GPIO
Wi-Fi Scan Performs a detailed scan of the wireless access points.

You are welcome to share your own Jama Funcs! 😉



📁  SD card support

If an SD card is available on the board, activate it and mount the corresponding file system.
A reformatting of all content is also possible.


⚡  Firmware upgrade

Take advantage of the Espressif esptool to connect the device in bootloader mode and easily load new binary images.
Additionally, the tool allows you to completely erase the device for a full reset.


🛠️  Build & Run

  • Required dependencies

    pyWebView (Check out on GitHub):

    python -m pip install pywebview

    pySerial (Check out on GitHub):

    python -m pip install pyserial
  • Run application

    Just use python:

    python src/app.py


🐧  Linux version instructions

This describes how to clone the repository and how to run from source. In the third step you will find instructions how to create a binary from source. All st eps have been tested on Ubuntu 22.04, but should work with little changes on similar distributions as well.

  • Installation

    First, First, make sure you have all the required files:

    # clone the repository:
    git clone https://github.com/jczic/ESP32-MPY-Jama
    
    # install python modules requirements:
    sudo apt install libcairo2-dev libgirepository1.0-dev python3-pyqt5 python3-pyqt5.qtwebengine python3-pyqt5.qtwebchannel libqt5webkit5-dev gir1.2-webkit2-4.0
    
    # initialize python venv:
    cd ESP32-MPY-Jama
    python3 -m venv venv
    
    . venv/bin/activate
    
    pip3 install wheel setuptools
    pip3 install pyserial pywebview[qt] pycairo PyGObject pyinstaller
  • Running from source

    When you executed all steps listed under "Installation" you may run directly from sources by executing these steps:

    cd ESP32-MPY-Jama
    . venv/bin/activate
    python3 src/app.py

    In case of an issue with the initialization of the graphical user interface, it is possible to force the desired interface by using the argument --gui (or -g) followed by qt or gtk.

    # example:
    python3 src/app.py -g gtk
  • Building executable

    Execute the steps listed under "Installation" and then continue like this:

    cd ESP32-MPY-Jama
    ./create_binary.sh

    When the script finishes you should end up with a "esp32-mpy-jama" executable in the "dist" subfolder.



😉  Author

Jean-Christophe Bos (:fr:)



👍  Special thanks to



✴️  License