Kiwi is an open-source mobile voice activated AI robot that combines conversational AI with autonomous navigation.
- Wake-word activation using OpenWakeWord
- Natural language conversations powered by Ollama (Phi-4-mini)
- Speech-to-Text using Groq
- Text-to-Speech using Edge-TTS
- Real-time communication between the robot and backend
- Autonomous obstacle avoidance
- Voice-controlled movement
- Differential drive using two DC motors
- Three ultrasonic sensors for environmental awareness
- ESP32 Dev Module
- INMP441 I2S Microphone
- MAX98357A I2S Audio Amplifier
- Speaker
- Arduino Nano
- L298N Motor Driver
- 2× DC Motors
- 3× HC-SR04 Ultrasonic Sensors
Wake Word
(OpenWakeWord)
│
▼
User Speech
│
▼
ESP32 Records Audio
│
WebSocket
│
▼
Node.js Backend
┌─────────────────────┐
│ Groq Speech-to-Text │
│ Ollama (Phi-4-mini) │
│ Edge-TTS │
└─────────────────────┘
│
▼
ESP32
├── Speaker Output
└── Motion Commands
│
▼
Arduino Nano
│
▼
Drive Motors
firmware/
├── arduino-nano/
│ └── arduino-nano.ino
│
└── esp32/
├── esp32.ino
└── config.example.h
hardware/
└── wiring_diagrams/
├── object_avoider.png
└── voice_assistant.png
software/
├── Kiwi.js
├── Kiwi.py
├── package.json
└── .env.example
- Wake-word activated voice assistant
- Local AI conversations
- Speech recognition
- Natural speech synthesis
- Autonomous obstacle avoidance
- Voice-controlled robot movement
- Distributed architecture using ESP32, Arduino Nano and a host computer
- Standalone operation (no external computer required)
- More movemnet functions
- Animated eyes using a 128×64 OLED display
- Custom wake-word model
- Custom PCB
git clone https://github.com/evanpgibi/Kiwi.git
cd KiwiCopy:
firmware/esp32/config.example.h
to
config.h
and update the Wi-Fi credentials and backend address.
Copy:
software/.env.example
to
.env
and configure the required environment variables.
cd software
npm installnode Kiwi.jsUpload:
firmware/esp32/esp32.inoto the ESP32firmware/arduino-nano/arduino-nano.inoto the Arduino Nano
The wiring diagrams for both subsystems are available in:
hardware/wiring_diagrams/
This project is licensed under the MIT License.
