AI-powered ESP32 GPIO controller in MicroPython. Control your hardware with natural language via Telegram — powered by Groq AI.
"turn on the light" -> LED ON | Pin 2
"blink 5 times" -> Blink x5 | Pin 2
"pin 4 high" -> GPIO HIGH | Pin 4
Telegram -> Groq AI -> JSON command -> ESP32 GPIO -> Telegram reply
You send a natural language message on Telegram. Groq AI converts it to a JSON hardware command. ESP32 executes it and replies back.
- Natural language GPIO control — English and Hindi both work
- Persistent memory — pin states are saved across reboots
- /status command — see all pin states anytime
- /help command — see all available commands
- WiFi auto-reconnect — bot stays online even if WiFi drops
- Lightweight — runs comfortably on ESP32 with MicroPython
- ESP32 board (ESP32-C3, S3, or C6 recommended)
- MicroPython firmware flashed on ESP32
- Python 3 on your PC (for setup)
- Free Groq API account
- Telegram bot
| What | Where |
|---|---|
| Groq API Key | https://console.groq.com -> API Keys |
| Telegram Bot Token | @BotFather on Telegram |
| Telegram Chat ID | @userinfobot on Telegram |
git clone https://github.com/kritishmohapatra/microclawup
cd microclawuppython setup.pyThis will ask for your credentials and generate microclawup/config.py automatically.
Open Thonny IDE:
- Connect your ESP32
- Upload the entire microclawup/ folder to ESP32
- Upload main.py to the root of ESP32
- Reset ESP32
Your Telegram bot will send "MicroClawUP Online" when ready.
| Command | Result |
|---|---|
| turn on the light | LED ON |
| turn off the light | LED OFF |
| blink 5 times | Blink x5 |
| pin 4 high | GPIO HIGH |
| pin 4 low | GPIO LOW |
| /status | Shows all pin states |
| /help | Shows command list |
Natural language works in English and Hindi — Groq AI understands both!
microclawup saves all pin states to flash storage automatically. Even after a reboot, your ESP32 remembers the last state of every pin.
Use /status anytime to check current pin states:
PIN STATUS
Pin 2: ON
Pin 4: HIGH
Pin 5: LOW
microclawup/
├── main.py
├── setup.py
├── config.example.py
├── .gitignore
└── microclawup/
├── ai.py
├── agent_core.py
├── hal.py
├── telegram.py
├── storage.py
├── wifi.py
└── __init__.py
Tested on:
- ESP32
Default LED pin is 2. Change in your commands or modify hal.py.
MIT — free to use, hack, and share!
Made with love by Kritish Mohapatra
If you find microclawup useful, consider giving it a star on GitHub! It helps others discover the project.
If you want to support development:
