Skip to main content

DeskBuddy Using Xiaozhi Ai

DIY · Electronics · AI
Xiaozhi · AI Desk Buddy

Meet Jason,
my AI Desk Buddy

Talk to Jason, watch his expressions change, read the conversation on his OLED, and check the time, day, and date—all in a compact, battery-powered build.

ESP32-S3Controller
VoiceConversation
OLEDAnimated face
LiPoPortable power
System Overview

How Jason Works

Jason runs Xiaozhi firmware on a XIAO ESP32-S3. It connects over Wi-Fi for AI conversations, while the OLED and speaker bring his responses to life.

01

Speak to Jason

An INMP441 I²S microphone captures your voice for the Xiaozhi assistant.

02

AI Conversation

The ESP32 connects to Wi-Fi and the configured Xiaozhi agent to process and answer.

03

Animated Face

The 1.3-inch OLED shows expressions and conversation text, plus the day, date, and time.

04

Voice Reply

A MAX98357A I²S amplifier drives the 2-watt speaker for Jason’s response.

☁️

Internet required: Xiaozhi’s AI conversations use Wi-Fi. The LiPo battery and boost module make the hardware portable, but the assistant still needs an internet connection.

Bill of Materials

Components Required

These are the parts used in this build. The component links are optional shopping references.

ComponentPurposeLink
Seeed Studio XIAO ESP32-S3Main controllerBuy →
1.3-inch OLED display, I²CFace, text, time and dateBuy →
INMP441 microphone moduleI²S audio inputBuy →
MAX98357A amplifier moduleI²S audio outputBuy →
2-watt speakerVoice outputBuy →
TTP223 touch sensorTouch inputBuy →
5V boost and charging moduleBattery charging and 5V powerBuy →
3.7V LiPo batteryPortable powerBuy →
Mini slide switchMain power switchBuy →
Push buttonBoost module wake controlBuy →
BreadboardInitial testingBuy →
Jumper wiresBreadboard connectionsBuy →
Wiring Reference

Pin Connections

Connect the modules as shown below and use firmware configured for these pin assignments.

ModuleModule pinXIAO / connection
OLEDSDAD4
OLEDSCL / SCKD5
OLEDVCC / GND3V3 / GND
INMP441 micSCKD1
INMP441 micWSD2
INMP441 micSDD3
INMP441 micVDD / GND / L/R3V3 / GND / GND
MAX98357A ampDIND10
MAX98357A ampBCLKD8
MAX98357A ampLRC / LRCLKD9
MAX98357A ampSD MODE / GAIN3V3 / GND
MAX98357A ampVIN / GNDSwitched 5V / GND
Speaker+ / −Amplifier + / −
TTP223 touchI/O / VCC / GNDD0 / 3V3 / GND
3.7V LiPo+ / −Boost B+ / B−
Boost 5V output+ / −Slide switch → XIAO 5V and amp VIN / common GND
Wake push buttonTwo opposite contactsBoost K / battery B−

Before applying power: Check battery polarity and every module pin label. The wake button briefly connects the boost module’s K pad to battery B−.

3D Printed Parts

Buy Enclosure

Give your build a clean finish without the tangle of jumper wires. This compact enclosure is made for Jason’s display and speaker, with a matching front plate that completes the look. Order a printed set or print it yourself from the STL files.

White Jason enclosure on a clean work surface
Jason enclosure body and front plate being assembled by hand
1 / 2
3D Printed Parts

Jason Desk Buddy Enclosure Set

Enclosure body and matching front plate, printed in white PLA.

₹249₹31220% off

Only 9 left in stock

  • Includes enclosure body and front plate

Shipping is quoted in Instagram chat after you share your delivery city. The total is confirmed before payment.

Message to Buy on Instagram →

Instagram may open the app. Messaging does not place an order.

Hello, I want to buy the Jason 3D-printed enclosure. Is it available?

Prefer printing it yourself? Download the STL files.

Firmware

Flash the Code

Flash directly from the Simple Circuits web flasher in a compatible desktop browser; no Arduino IDE installation is needed for this build.

⚡ Web Flasher

Simple Circuits Xiaozhi Desk Buddy

Connect your XIAO ESP32-S3 to your laptop or PC using a data-capable USB cable.

⚡ Flash FirmwareUse desktop Chrome or Edge for the serial connection.
01

Choose the board

Select XIAO ESP32-S3 (or the matching board for your own hardware), then select your time zone.

02

Connect and install

Click Connect & Install Firmware, choose your board’s serial port, and select “Simple Circuits Xiaozhi Desk Buddy.”

03

Wait for completion

Leave the board connected until the installation finishes, then restart it if prompted.

First-Time Setup

Connect Jason to Xiaozhi

Follow the prompts on the OLED after flashing.

01

Connect your phone to Jason

Join the temporary Wi-Fi hotspot created by the ESP32.

02

Give Jason your home Wi-Fi

Open the address shown on the OLED in your phone browser, select your Wi-Fi, and enter its password. The ESP32 then connects to your network.

03

Add the device

Open xiaozhi.me, log in, choose Add Device, and enter the six-digit code shown on the OLED.

04

Configure your agent

Choose your preferred language and voice, then talk to Jason.

Tutorial

Full Video Tutorial

Watch Jason go from breadboard prototype to finished AI desk buddy.

Jason AI Desk Buddy video thumbnailWatch the full build on YouTube
Project Files

Download PCB Files

Want to build Jason on the custom PCB? Open the project folder below to download the PCB files.

Download PCB Files →
Custom PCB

From Breadboard to PCB

The jumper-wire prototype helped test Jason’s firmware. I then designed a compact custom PCB and ordered it from AIVON to make the final assembly cleaner.

Simple Circuits

Jason AI Desk Buddy is a Simple Circuits project. Some component links may be affiliate links. Product availability, shipping, and pricing are confirmed in chat before payment.

Comments

Popular posts from this blog

Solar Tracking System

Dual-Axis Solar Tracking System | Arduino SimpleCircuits Arduino Solar DIY Renewable Energy Project Dual-Axis Solar Tracking System Build a high-performance solar tracker that follows the sun in real-time. Four LDR sensors, an Arduino UNO, and two servo motors — boosting energy capture by up to 40% versus fixed mounts. 40% More Efficient 4 LDR Sensors 2 Servo Axes <300mA Power Draw Finished Build System Overview How the System Works The tracker reads the sky through four LDR sensors placed around the panel, computes intensity deltas, and drives two SG90 servos in a real-time closed loop — keeping the panel perpendicular to sunlight from sunrise to sunset. ...

Arduino Code Car Parking System

 // Created by Simple Circuits  #include <Wire.h>  #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2);    #include <Servo.h>  Servo myservo; int IR1 = 2; int IR2 = 3; int Slot = 4;           //Total number of parking Slots int flag1 = 0; int flag2 = 0; void setup() {   Serial.begin(9600);      lcd.init(); //initialize the lcd     lcd.backlight(); //open the backlight     pinMode(IR1, INPUT); pinMode(IR2, INPUT);    myservo.attach(4); myservo.write(100); lcd.setCursor (0,0); lcd.print("     ARDUINO    "); lcd.setCursor (0,1); lcd.print(" PARKING SYSTEM "); delay (2000); lcd.clear();   } void loop(){  if(digitalRead (IR1) == LOW && flag1==0){ if(Slot>0){flag1=1; if(flag2==0){myservo.write(0); Slot = Slot-1;} }else{ lcd.setCursor (0,0); lcd.print("    SORRY :(    ");   lc...

Arduino Code

 //define Pins #include <Servo.h> Servo servo; int trigPin = 11; int echoPin = 12; // defines variables long duration; int distance; void setup()  {   servo.attach(13);   servo.write(180);  delay(2000);    // Sets the trigPin as an Output pinMode(trigPin, OUTPUT); // Sets the echoPin as an Input  pinMode(echoPin, INPUT); } void loop()  { // Clears the trigPin digitalWrite(trigPin, LOW); delayMicroseconds(2); // Sets the trigPin on HIGH state for 10 micro seconds digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); // Reads the echoPin, returns the sound wave travel time in microseconds duration = pulseIn(echoPin, HIGH); // Calculating the distance distance= duration*0.034/2; // Prints the distance on the Serial Monitor Serial.print("Distance: "); Serial.println(distance); if ( distance <= 25   ) // Change Distance according to Ultrasonic Sensor Placement  { servo.write(180); delay(3000); ...