Download the Leading ESP32 IoT Platform

The ESP32 microcontroller stands out in the IoT realm with its dual-core 240MHz CPU, integrated WiFi, and extensive GPIOs. The low-cost and breadboard-friendly ESP32 development boards facilitate easy prototyping, allowing seamless integration with many sensors.

However, the true magic unfolds with the Xedge32 IoT platform, which opens up the opportunity to program the ESP32 using the incredibly intuitive Lua programming language. The Xedge32 targets a broad spectrum of users, including those without C code experience.

Making Embedded Development Easier Than Ever!

With the Xedge32, programming embedded systems become accessible to everyone, not just embedded C/C++ experts. It's designed to simplify the development of robust, commercial IoT products, making advanced programming more approachable and affordable.

The Xedge32 opens up microcontroller-based IoT programming to a much wider audience, from seasoned developers to novices. The accessibility of Lua makes diving into microcontroller-based IoT projects easy and fun.

Xedge Lua REPL

Xedge32: AšŸ’Æpercent self-contained ESP32 development environment, empowering you to code directly from any browser.

Install Xedge32 Now Using Your Browser:

To install Xedge32 on your ESP32-S3 or ESP32-WROVER, first connect the ESP32's USB cable to your computer. Then, simply click the 'Install Xedge32' button below:

Ah snap, your browser doesn't work!
Use Google Chrome or Microsoft Edge.
Ah snap, you are not allowed to use this on HTTP!

Upon clicking the above button, a list of devices will appear. Select the device that includes 'serial' in its name. Proceed with the installation wizard. Once installation is complete, reboot the ESP32 by unplugging and then replugging the USB cable. Your ESP32 will now be in access point mode. For guidance on configuring and using Xedge32 in this mode, refer to the ESP32 Access Point Mode documentation. Note: Certain ESP32 models require entering boot mode for proper firmware installation operation. This can be achieved by pressing and holding the boot button while connecting the USB cable. The initial 40 seconds of this video show the exact process for entering boot mode.

What is Xedge32?

Xedge32 is a development platform built upon an advanced IoT toolkit, which constitutes 90% of Xedge's functionality and offers a wide range of IT and OT protocols - referred to as the "north bridge." Xedge32 extends the IoT toolkits' Lua APIs and provides a comprehensive interface to the ESP32's GPIOs, referred to as the "south bridge".

With Xedge32, you can develop a full-fledged solution without diving into C programming. Instead, all device-specific code can be written in the user-friendly Lua language, greatly reducing development time.

Xedge32 goes beyond simple GPIO sampling by fully integrating with ESP32's interrupts, leading to powerful implications for various applications:

  • High-Speed Data Sampling: Sample ADC data (such as speech) at high speeds and stream it directly to a browser, where it can be played back as sound.
  • Image Capturing with ESP32 Cam Board: With an ESP32 cam board, Xedge32 allows for high-rate image sampling. The images can then be rapidly published to an MQTT broker or streamed directly to a browser via WebSockets, turning the received image stream into video-like playback.
  • Industrial Integration: Seamlessly connect traditional Operational Technology (OT) protocols like Modbus and OPC UA to modern IoT protocols such as MQTT, serving as an intelligent bridge in industries where such integration is essential.
  • Telemetry and Remote Control: The ESP32 excels at sampling telemetry data, and Xedge32's suite of IoT protocols simplifies sending this data to cloud services. Furthermore, Xedge32 facilitates the design of remote-controlled device management applications.

Need Ethernet?

Augmenting the ESP32 with Ethernet capabilities is seamless with the W5500 chip, a simple, compact, and low-power Ethernet module. The amalgamation of these components creates a dynamic, networked communication platform that enhances ESP32 beyond its standard Wi-Fi capabilities. But the highlight is that Ethernet capabilities can be effortlessly enabled using the Lua language using the stock firmware.

Includes IoT, Industrial Protocols, and Security

The Xedge32 Development Environment serves as an integral platform for an array of Internet of Things (IoT) protocols. This comprehensive suite is tailored for industrial edge devices, integrating advanced protocols such as MQTT, OPC UA, and Modbus. Additionally, Xedge32 facilitates the creation of web-based device management applications, significantly elevating the standards of device interaction and control. See the IoT Toolkit's Reference Manual for details.

Why use Xedge32?

  • Seamless Transition to Production: Xedge32 is engineered for the smooth creation of commercial products. It offers versatile support for the various aspects of assembling a production-ready product. This ranges from an approach akin to building an embedded system with Linux, involving multiple components, to the ease of embedding your final applications directly into the firmware binary. This flexibility ensures a streamlined path from development to production.
  • Cost-Effective Development: In IoT development, where the expense of designing the secure IoT code, the BSP (board support package), and other hardware-near software can easily reach $500,000, controlling costs is crucial. Xedge32 addresses this challenge by significantly reducing the time and resources needed to develop secure IoT products. This efficiency translates to substantial savings, dramatically lowering the overall development costs.
  • Simplified Development Process: Xedge32 simplifies IoT projects by connecting Lua to ESP32's extensive peripheral features. This integration allows developers to write device-specific code in Lua, a user-friendly language, making the development process faster and more accessible.
  • Speed: We recognize embedded developers' concerns when shifting from traditional C coding to the high-level Lua language. We are confident that Xedge32 will positively surprise you with its impressive speed and efficiency. Furthermore, if you have existing C code that is essential to your project, Xedge32 facilitates seamless integration. You can effortlessly include your C code in your custom Xedge32 build and access it directly from Lua, blending speed with flexibility.
  • Enhanced Security: In the context of IoT, where security is paramount, Xedge32 offers a comprehensive API that facilitates secure IoT design, including easy X.509 certificate management and providing a soft Trusted Platform Module (TPM). This approach in Xedge32 simplifies the development and testing stages, ensuring secure IoT-enabled products can be developed and brought to market more rapidly and securely than traditional methods. Integrating a soft TPM within the Xedge32 environment adds an additional layer of security, crucial for protecting sensitive security keys in IoT applications.
  • Robust IoT Hub Capabilities: The Xedge32 environment, with its plethora of protocols, transforms the ESP32 into a powerful IoT, IT, and OT hub. This capability is essential for managing the interconnected nature of IoT devices and ensuring secure communication and data exchange.
  • Ease of Firmware Updates: Maintaining and updating IoT devices is a significant aspect of ensuring long-term security. Xedge32 facilitates an easy OTA firmware update process, which is crucial for addressing new vulnerabilities and maintaining device security over time.
  • Low-Code Programming: Xedge32 supports low-code programming using Lua, making it accessible to a broader range of developers, including those who may not have deep expertise in traditional embedded C programming. This approach drastically accelerates the development of secure IoT applications.

In conclusion, the Xedge32 development environment is a significant step forward in providing easy-to-use tools for developing secure, efficient, cost-effective IoT products. Its integration with Lua and ESP32, ease of use, and focus on security make it a compelling choice for IoT developers aiming to meet the growing demands of the IoT market.

NodeMCU vs. Xedge32

While NodeMCU has been a go-to option for hobbyists diving into embedded systems using Lua, Xedge32 takes it a step further by catering to both professionals and hobbyists alike. Xedge32 is specifically designed for the ESP32 and offers a robust set of features and protocols that make it suitable for both simple and complex enterprise-level projects.

MicroPython vs. Xedge32

While MicroPython has gained popularity among hobbyists for its ease of use and Python-like syntax, Xedge32, powered by Lua, extends the possibilities much further, especially regarding support for IoT and industrial protocols.Ā This broader support makes Xedge32 not just a tool for hobbyists but a powerful platform for serious IoT applications and industrial projects that require robust, scalable solutions.Ā Since Xedge32Ā is basedĀ on the Barracuda App Server, a more appropriate comparison for Xedge32 is Node.js, which focuses on similar areas of development.Ā See the Barracuda App Server vs. Node.js comparison for details.

Key Differences Between the MicroPython Environment and the Xedge32 Environment

MicroPython and Xedge32 provide development environments for the ESP32 platform, but they differ significantly in functionality, execution, and development workflows.

Integrated Development Environment (IDE)


  • External IDEs: MicroPython typically relies on external Integrated Development Environments (IDEs) such as Thonny, Visual Studio Code, or command-line tools like ampy and rshell.
  • Code Upload: Code is usually uploaded to the ESP32 via a USB serial connection. This involves connecting the ESP32 to a computer and using tools to transfer scripts.
  • Local Editing: Development occurs on a local machine, with files being transferred to the ESP32 for execution.


  • Web-Based Editor: Xedge32 includes a web-based editor that allows code to be edited directly from any web browser. This makes it easy to edit code from any device without additional software.
  • Network Upload: Code is uploaded using HTTP(S) via a network connection, which can be Wi-Fi or Ethernet. This allows for remote development without a physical USB connection to the device.
  • Network Drive: The ESP32 can be mounted as a network drive, enabling the use of any external editor to edit files directly on the device.
  • Remote Editing: Xedge32 allows code editing on devices within remote networks without the need for port forwarding, enhancing ease of access and flexibility.
Program Execution


  • Initialization and Loop: Programs typically start by initializing components (such as Wi-Fi) and then enter a while True loop to keep running. This loop is where the main functionality resides.
  • Single Program Focus: MicroPython is designed to run one main script at a time, making it less suited for running multiple concurrent programs without complex scheduling or multitasking mechanisms.
  • Manual Configuration: Developers must handle configuration and initialization within their scripts.


  • Operating System-Like Functionality: Xedge32 functions more like an operating system, managing resources and multiple programs simultaneously.
  • Event-Driven Programming: Instead of using forever loops, Xedge32 programs are typically designed to be event-driven, responding to system events and triggers.
  • Concurrent Program Management: Xedge32 can manage a large number of programs running in parallel, allowing for better multitasking and resource management.
  • Non-Interference Development: New programs can be developed and deployed without interfering with already running programs, enabling continuous development and deployment.

Getting Started

The following video shows how easy it is to install Xedge32 and how to configure the WiFi settings.

  1. Purchase an ESP32-S3 development board, such as this one; make sure to select N16R8. When purchasing an ESP32s3, the model should be 'N8R8' or 'N16R8', which specifies the flash and RAM size in megabytes. You may also consider getting a breadboard-friendly ESP32s3 such as the XIAO ESP32S3, which you can purchase for $5 at Mouser. You can also use the original ESP32 as long as it includes 4MB PSRAM; however, note that OTA firmware updates are not supported for ESP32.
  2. Flash the firmware using the easy to use web installer or follow the advanced firmware installation instructions.
  3. Start your development journey by following the tutorial Your First Xedge32 Project.


  • Xedge (generic)
  • Xedge32 (ESP32 port with south bridge API)


License Options:

Xedge32 is constructed utilizing components from the Barracuda App Server's amalgamated C Code Library. This library is available under two types of licenses:

  1. The open-source General Public License (GPL):

    A note on the GPL license: In a commercial context, entities can use GPL-licensed software internally without issue. However, suppose you choose to use this license for production. In that case, the distribution of production-ready products incorporating GPL-licensed software must comply with the GPL terms unless you qualify for the exception detailed below.

  2. A commercial license:

    An exception to the GPL license is available for smaller enterprises. This exception allows these businesses to incorporate the GPL-licensed code into their commercial products without the typical GPL restrictions. Refer to the BAS license documentation for details and stipulations. See the license page for qualification details.

Why use an Xedge32-powered ESP32?

In today's landscape, misconceptions, rigid ideas, and biases often cloud our understanding. The article Low-Code and Easy IoT Embedded Systems Programming offers a fresh perspective for those navigating the complexities of MCU-based IoT solutions.

By exploring the capabilities of an Xedge32-powered ESP32, you will gain insights that could lead to more efficient and cost-effective solutions for your organization.

Xedge32 Origin:

Xedge32 initially emerged from a green IoT consulting gig.

Is Lua Capable of Real-Time Performance?

The above video showcases our MQTT 5 stack, entirely implemented in Lua, demonstrating the speed and efficiency of Lua programming. Alongside, it features the Lua LED strip test program, a part of the Xedge32 documentation. Combining an MQTT test program with the LED strip test program highlights Lua's powerful capabilities in real-time processing on a microcontroller.