Skip to content

Latest commit

 

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Kiwi

Kiwi is an open-source mobile voice activated AI robot that combines conversational AI with autonomous navigation.

Movement

🎥 Demo Video : YouTube

Features

🤖 Voice Assistant

  • 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 Navigation

  • Autonomous obstacle avoidance
  • Voice-controlled movement
  • Differential drive using two DC motors
  • Three ultrasonic sensors for environmental awareness

Hardware

Voice Assistant

  • ESP32 Dev Module
  • INMP441 I2S Microphone
  • MAX98357A I2S Audio Amplifier
  • Speaker

Navigation

  • Arduino Nano
  • L298N Motor Driver
  • 2× DC Motors
  • 3× HC-SR04 Ultrasonic Sensors

Software Architecture

                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

Repository Structure

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

Current Capabilities

  • 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

In Development

  • Standalone operation (no external computer required)
  • More movemnet functions
  • Animated eyes using a 128×64 OLED display
  • Custom wake-word model
  • Custom PCB

Getting Started

Clone the repository

git clone https://github.com/evanpgibi/Kiwi.git
cd Kiwi

Configure the ESP32

Copy:

firmware/esp32/config.example.h

to

config.h

and update the Wi-Fi credentials and backend address.

Configure the backend

Copy:

software/.env.example

to

.env

and configure the required environment variables.

Install dependencies

cd software
npm install

Start the backend

node Kiwi.js

Upload the firmware

Upload:

  • firmware/esp32/esp32.ino to the ESP32
  • firmware/arduino-nano/arduino-nano.ino to the Arduino Nano

Wiring Diagrams

The wiring diagrams for both subsystems are available in:

hardware/wiring_diagrams/

License

This project is licensed under the MIT License.

About

Building a mobile AI assistant with voice control and autonomous movement.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages