Abstract
Starmoon is an open-source Internet of Things (IoT) project. A conversational, AI device + software framework for companionship, entertainment, education, healthcare, IoT applications, and DIY robotics. Built with Python, NextJS, Arduino, ESP32, LLMs (GPT-4o), Deepgram STT and Azure TTS 🤖. ElatoAI builds on many of the ideas explored in Starmoon, with improved WiFi and 2-way voice AI audio reliability, global availability, and production-ready architecture. It is built using TypeScript, ESP32, OpenAI API. Key capabilities include: Cost-effective: Assemble the device yourself with affordable off-the-shelf components; Voice-enabled emotional intelligence: Understand and analyze insights in your emotions through your conversations in real time; Open-source: Fully open-source, you can deploy Starmoon locally and self-host to ensure the privacy of your data. The complete source code is publicly available on GitHub under the GNU General Public License v3.0, making it a useful reference for students building an Internet of Things (IoT) mini project or final-year project.
1. Introduction
ElatoAI builds on many of the ideas explored in Starmoon, with improved WiFi and 2-way voice AI audio reliability, global availability, and production-ready architecture.
Starmoon is an affordable, compact AI-enabled device, you can take anywhere and converse with. It can understand your emotions and respond with empathy, offering supportive conversations and personalized learning assistance.
2. Objective
A conversational, AI device + software framework for companionship, entertainment, education, healthcare, IoT applications, and DIY robotics. Built with Python, NextJS, Arduino, ESP32, LLMs (GPT-4o), Deepgram STT and Azure TTS 🤖
This project demonstrates how TypeScript, ESP32, OpenAI API can be applied to a real-world Internet of Things (IoT) problem.
3. Key Features / Modules
- Cost-effective: Assemble the device yourself with affordable off-the-shelf components.
- Voice-enabled emotional intelligence: Understand and analyze insights in your emotions through your conversations in real time.
- Open-source: Fully open-source, you can deploy Starmoon locally and self-host to ensure the privacy of your data.
- Compact device: Only slightly larger than an Apple Watch, you can carry the device anywhere.
- Reduced screen time: A myriad of AI companions are screen-based, and our intention is to give your eyes a rest.
4. Technology Stack
- Step 0: Follow the below Pin Configuration to set up the the ESP32 device
- Step 1: If you use normal ESP32-S3 chip, otherwise you can skip this step:
- please go to Config.h and uncomment the USE_NORMAL_ESP32_S3 line and comment the USE_XIAO_ESP32_DEVKIT line.
- Then, go to platformio.ini and uncomment the [env:esp32-s3-devkitm-1] block and comment the [env:seeed_xiao_esp32s3] line.
- Step 2: Click PlatformIO Icon in VScode left sidebar
- Click "Pick a folder"
- Select the location of the firmware folder in the current project.
- Step 3: Build the firmware
5. System Requirements
General requirements for this technology stack — check the README for exact versions.
- Node.js (LTS) and npm / yarn / pnpm
- VS Code or any code editor
- Git (to clone the repository)
6. Installation & Setup
git clone https://github.com/StarmoonAI/Starmoon.git
cd Starmoon- Step 0: Follow the below Pin Configuration to set up the the ESP32 device
- Step 1: If you use normal ESP32-S3 chip, otherwise you can skip this step:
- please go to Config.h and uncomment the USE_NORMAL_ESP32_S3 line and comment the USE_XIAO_ESP32_DEVKIT line.
- Then, go to platformio.ini and uncomment the [env:esp32-s3-devkitm-1] block and comment the [env:seeed_xiao_esp32s3] line.
- Step 2: Click PlatformIO Icon in VScode left sidebar
- Click "Pick a folder"
- Select the location of the firmware folder in the current project.
- Step 3: Build the firmware
// ----------------- Pin Definitions -----------------
// Define which board you are using (uncomment one)
#define USE_NORMAL_ESP32_S3
// #define USE_XIAO_ESP32_DEVKIT
// #define USE_XIAO_ESP32
// #define USE_NORMAL_ESP32
// #define USE_ESP32_S3_WHITE_CASE; [env:seeed_xiao_esp32s3]
; platform = espressif32
; board = seeed_xiao_esp32s3
; framework = arduino
; monitor_speed = 115200
[env:esp32-s3-devkitm-1]
platform = espressif32
board = esp32-s3-devkitm-1
framework = arduino
monitor_speed = 115200Full setup instructions are in the project README.
7. Future Enhancements
Suggested extensions you can add to make this your own project.
- Add a mobile dashboard using Blynk or Firebase
- Store readings in a cloud database for history charts
- Add alerts via SMS / Telegram when thresholds are crossed
8. Viva / Review Questions
Common questions examiners ask for projects in this domain.
- Which microcontroller / board and sensors are used and why?
- How does the device send data (Wi-Fi, MQTT, HTTP, Bluetooth)?
- Where is the sensor data stored and visualised?
- How is power consumption managed?
- How would you secure the device and its communication?
9. Source Code & License
This project is developed by StarmoonAI and published on GitHub under the GNU General Public License v3.0. Please follow the license terms and credit the original author when you use or modify this code.
Want to build this as your internship project?
Work on an Internet of Things (IoT) project like this with mentor guidance, weekly reviews and an internship certificate from Training Trains, Erode — online or offline.
Apply for Internet of Things (IoT) Internship