AI Powered Robot Using ESP32 and Arduino
by Sorush Moradisani in Circuits > Robots
1334 Views, 11 Favorites, 0 Comments
AI Powered Robot Using ESP32 and Arduino

One day I was struggling with broken derailleur of my bicycle after an offroad crash and suddenly an idea came to my mind. The broken derailleur would make an awesome robot hand. So I gathered a bunch of broken bicycle parts and started the AIBOT project. The AIBOT uses an ESP32-CAM as its main controller and two arduino nanos for its voice and servo movements. Another ESP32 is used for AI interactions.
You can Interface with AIBOT through its application via wifi and of course it has live video streaming . The AIBOT has pre-defined scenarios and gestures like singing, dancing, introducing himself, telling jokes and some other cool stuff. it understands your pre-defined commands (if you talk Persian) and interacts with you vocally.
I made this before AI tech could see and talk (Its using Chatgpt 3.5) so the AI interactions might not be as cool as the new Versions of AI. And also Openai apis are unavailable in Iran so I couldn't work around that area very much but I tested everything and I can tell the codes and everything are working. At this stage you can only talk to AI and it cannot control the robot.
Note! If you are new to diy electronic projects you may want to start with something smaller like this one. This project contains android app development, C++ advanced coding with major complexities, super sensitive electronic parts and complex hardware design so it needs experience with tools and high level of diagnosis as it contains lots of wiring and high voltage interferences.
Tip: It's highly recommended that you read the entire article carefully before purchasing anything as it helps you purchase the parts with more awareness.
Supplies
As the body parts are mainly scraps and old broken stuff you may not be able to find the exact parts but I try to list them anyway and if you couldn't find the exact parts just use your creativity.
So the electronics are listed as below:
1x ESP32-CAM
1x ESP32 NodeMCU (Purchase USB Cable According to your Module)
2x Arduino Nano (Also Purchase USB Cable According to your Module)
1x MicroSD Card Reader
1x SD Card (Lower Capacity Cards are Preferred like 4GB)
5x Lithium ion Battery 18650 3.7V at least 2000 mAh
1x TP4056 Cell Charger Module
1x 3.7V High Voltage Transformer (Kit or Module)
2x Female Pin Header 2.54mm 2 Row 40 Pin Right Angle
2x Male Pin Header 2.54mm 2 Row 40 Pin
2x Male Pin Header 2.54mm 2 Single 40 Pin
4x Female Pin Header 2.54mm Single Row 40 Pin
1x 5V Relay Module
2x 3300uF 16V Capacitor
1x FT232RL Mini USB to TTL Serial Converter Adapter Module 3.3V/5.5V
1x ON/OFF Switch
1x Powerbank Module with 2 USB Outputs
1x Male USB to USB Cable
2x 3Watt Mini Speaker
2x 3Watt Amplifier PAM8403
1x MAX98357 Amplifier
3x RGB LED dip
3x 1k ohm Resistor
2x 9gr Micro Servo (I recommend black ones as the blue ones have some weird and spasmic behaviors)
5x MG996R 180 Degree Servo (Metal Gearbox Recommended)
2x MG996R 360 Degree Servo (Also Metal Gearbox Recommended)
1x Old PC 4 Pin Female Power Socket
1x Old PC 4 Pin Male Power Socket
10x Male JST PH 2-Pin Cable
10x Female JST PH 2-Pin Cable
and at last you need some varnishes and wires (I prefer silicon wires)
Body Parts are:
1x Shimano Altus Broken Derailleur
1x Shimano RD-TX35 Broken Derailleur
2x Softer Spring to Replace Hard Derailleur Springs
5x Pulley Wheel (if Broken Derailleurs didn't have one)
1x Bicycle Chain
1x LED Lamp Heatsink
1x 50cm x 30cm Aluminum or Metal Sheet (1.5mm Thickness for Aluminum 1mm for Metal) I personally recommend sheet metal as they are stronger and solderable.
1x Fusion Gillette Blade Holder
2x Old Bicycle Brake Handle
1x Bicycle Cable and Housing
60x M3 Hex Nut
30x M3 10mm Screw
2x M3 30mm Screw
16x M4 25mm Screw
18x M4 Hex Nut
4x M2 10mm Screw
2x M3 x 10mm Extension Nut
30x M3 x 7mm Washer
12x M4 x 14mm Washer
1x M8 x 40mm Screw
1x M8 Flanged nut
1x M8 x 20mm Washer
2x Triple Head Torch Lighter
1x Speaker Housing (Honestly I don't know what I'm using for mine)
1x 210cm Aluminum Profile 80mm x 9mm
1x 240mm Aluminum U Profile 12mm x 10mm
You will also need a variety of tools:
- Drill with 3mm,4mm and 8mm Bits
- Mini Angle Grinder
- Mini Torch or Torch Lighter
- Soldering Iron
- Soldering Wire and Oil
- Screw Drivers
- Needle-Nose Pliers
- Diagonal jaws
- Multimeter
- Iron Scissors
- Super Glue
- Hot Glue Gun
- Spray Paint
- Iron File
- Zip ties
- Any Grease
- Cutter
- Ruler or Caliper
Chassis and Wheels









We start with servo motor holders. Grab some sheet metal and make holders for 360 degree servos as shown in the picture. As the entire body is a work of improvisation and didn't have any sketch or 3D model I don't mention all the specific measurements and also it's a very long tutorial and I assume you know your way around simple mechanics. Cut 14cm of your 85x9mm profile and install the servos on it as shown in the picture. Now drill two 4mm holes on the chassis by 10mm margin from its edge. I widened the holes so I can adjust the chain stiffness later. Now cut 17cm of the 12x10 U Profile and screw it on the chassis as shown in pics.
Front Wheels:
Front wheels are easy to install. We need two 25mm M4 screws and six M4x14mm washers. Put them together as shown. Now for the fun part cut the U profile to 5mm deep by 10mm margin from both ends and cut the nearest washer to the nut as shown. This way the washer holds the wheels firmly in position but don't tighten the screws too much as it locks the wheels.
Rear Wheels:
As the rear wheels are connected to servos we need two of servo head thingies cut down to their center and rounded reasonably good and put in the center of pulley wheels. If you do it well enough it gets pretty tight but some super glue will guarantee their bond. Once the glue is hardened they are ready to install. It's recommended that you screw the wheels to servo shaft. Servos come with their own shaft screws.
Chains:
Not much to explain here just measure the chains and put them together according to your design and dimensions. also that widened holes on chassis come in handy for adjusting chains. But don't tighten them too much as it puts pressure on servos.
Waist and Chest

















Servo Holder:
In order for robot to look right and left we need a servo rotating it's waist. So grab some sheet metal and make a firm servo stand. I soldered some extra sheets around it for support as it holds considerable amount of weight and needs to be stiff if robot falls or so. Also I made the holder in a way that it mounts on previous chassis screws.
Rotating Mechanism and Servo Shaft Protection:
This part is tricky so pay close attention. I used a broken LED lamp heatsink for the upper part of the waist. As it needs to be connected to the servo shaft I screwed a 6 arm servo head thingy to its center. But we don't want to put all the pressure of upper body on a small plastic thingy, I mean it definitely breaks if robot falls. So we need a mechanism that prevents all kind of wobble and pressure and impacts but also rotates smoothly.
In the first step we need to grab some sheet metal and make a donut that fits into the light heatsink and also doesn't interfere with the servo head thingy at its center. Then we make two stands for the donut and solder them to its corner. Its important that you make the stands in a way that the black servo shaft thingy sits right on the servo shaft. if you are confused just look at the pics they make it easy to understand. Note that for improved stability use at least four M4 screws to connect everything to chassis as these parts should handle considerable weight and impacts.
But how we connect them to each other? In order to make them stay together we use the led pcb board to make a sandwich. the pcb must be screwed to the heatsink without interference with donut holder so it can rotate freely. But before finalizing the montage make sure they are all greased up nicely.
At last you can put everything together and connect them to chassis.
Chest and Waist Connection:
I used the LED light cap for connecting the waist to upper body. Its perfect for our purpose as it screws right in the heatsink and its metal on the other side so we can have a reliable connection. First we need to cut 70mm of the 85x9mm profile for the chest. Then we make a big hole enough to fit the M8 flanged nut in it at the center bottom of the chest. Then we drill the bottom of the light cap with 8mm bit. The M8 screw and washer go inside the cap and from other end connects to the chest.
Important Note! Never make the chest and waist connection too tight as later robot may get stuck to objects while rotating and if you overload the servo shaft it will break its gearbox. That's why the metal gearbox servos are recommended.
The Shoulder Servos:
Now that the chest is connected we can install servos that hold and rotate the arms. I didn't make the servo holders like the ones for the wheels. Instead I used two strips of sheet metal for each servo as shown in pics, one slightly longer to attach the speakers on the chest later. Also use the two M3 x 30mm screws for the top section of servo holders as we're gonna attach the wings and the backpack later.
Servos attach to the chest with some tilt in order to prevent arms from touching the main body.
Speakers:
As I mentioned I don't have a clue what I'm using as speakers case. I found it in a semi-garbage basket and googling it didn't help so again you need to improvise on this one too. We use two 3watt speakers, one for the AI and another for custom scenarios. For now I put the speaker module aside as it's delicate and in the way for montaging other parts. We'll get back to it.
Arms














Derailleurs:
First we need to detach all the pulleys and cage plates until bare derailleur mechanism remains. Then we need to clean them up with some brush and dish washer liquid. When dried we replace their stiff springs with our softer ones so the servos can retract the mechanism. Cut the bicycle housing in two 30cm pieces and connect them to derailleur in the opposite way. The housing is tightened by wire screw and wire gets inserted through the housing hole. This allows servos to retract the mechanism and open the arms.
Arm Holders:
I used a mixture of cardboard and epoxy resin that connects to servo head thingies. It's strong and derailleur end fits right into it. You can use super glue if you don't have access to epoxy resin. As I've broken many servo gearboxes I learned that the arm holders should be tight enough to hold the arms as they should but if the arm gets stuck to anything they shouldn't overload the servo shaft so don't glue them to derailleurs just fit them tightly. This makes repairs and replacements easy too.
Arm Retractor Mechanism:
We made a mechanism for moving the arms up and down. Now we need to make a mechanism that opens and closes them. We place two servos on a unified multipurpose holder and put it on the chassis. I didn't have a sketch or anything for the design so you need to improvise on this one as i did. Servos are tilted so they are not in the way of other components and also it looks cool. Other reason for having servos tilted outwards is that so the wire housings from derailleurs can easily connect to shaft and it allows the housing mount placement easier.
For mounting the dual servo holder to chassis we use rear wheel servo screws as shown. Now we need a mechanism to connect the wire housings to servos. for this part I used a profile corner connector but you can make it with sheet metal. Then you cut a 80mm piece from U profile and drill two 3mm holes on its both sides for wires to get through and mount the profile on the dual servo holder mechanism. You should end up with something like the pictures. Test the wire mechanism with your hands to make sure nothing is stuck or there is not much resistance. If there was too much resistance at the first while pulling the wire just adjust the derailleur screws to make them a little open and that should do the trick.
At last for the wire tips to connect to servo shaft we need to make a nut-washer sandwich and place the wire between them. First you need to drill a 3mm hole on the 2-way servo head thingies and insert an M3 screw in it. The further the hole gets from the shaft, the larger the retraction gets. Then you put the M3 nuts in the screw as mentioned but don't tighten the nuts against the screw as the screw needs to be free for mechanism to work as it should. Just tighten the nuts against each other. As you tighten the nuts from both ends the wire gets fixed and ready to use.
Important Note! NEVER test servos while everything is connected for the first time. It may cause sudden movements and break stuff. If you want to try the mechanisms first disconnect any mechanism and get a hold of the min and max degrees of the servo then connect the mechanism.
Torch Lighters and Firing Mechanism:
On the left hand of robot you can see two triple headed lighters and a micro servo. One of the lighters was broken so I turned it to RGB lighting and the other one is an actual torch. Its a simple mechanism, first you need to cut the whole lighter piezo igniter and replace its wire with your own. You also need to connect another wire to its body metal parts. Leave both wires detached as we get to that in high voltage session. put the lighters and servo together as shown with hot glue gun. Next connect the servo shaft to the gas lever with some sort of wire or very small rod as shown in pics. if there was no good grip point on the gas lever you can solder an M3 washer on it. We'll get to high voltage transformer later as it's a whole other thing. Note that you need to install torches in a way that you can refill them later.
Wings and Backpack





Wings:
The wings on the robot aren't just for cool looks, they also function as protection for the head and all the circuit boards. They are easy to make and have almost no cost. I used the cage plates as wings and connected the old bicycle brake handles to give it a cool aesthetic. They need to be connected with a piece of sheet metal and soldering is the way to go as it's strong and flexible. Finally I had a spare pulley wheel and I found a perfect spot for it.
The Backpack:
The backpack contains servo controllers and some other circuits. I had a Gillette blade holder to spare and it looked really cool for the purpose. So I put some pin headers for two arduino nanos, glued an old PC power supply connector on it and on the bottom section all the jumpers for servos were placed. It really helped with wiring and the looks.
Head and Neck





Neck:
This step is easy! Just grab a small piece of sheet metal and connect the servo handle(I finally know it's name) to it. Use the arm servo holder upper screws to hold it in place. Leave some space on the sheet metal as we're gonna install the SD card reader on it later. You can see the SD card reader holes in the pictures.
Head:
Another easy part, glue a piece of sheet metal to the 9gr micro servo and bend it from the middle. I did this to make the head a little smaller and avoid getting it stuck to other parts while moving. Then grab a female pin header 2.54mm 2 row 40 pin right angle and cut two pieces of eight rows. Now in order to get it right we connect the ESP32-CAM to the inner section of pin headers and the pins should point to each other from inside for cleaner looks. Then while the ESP32-CAM is connected, glue the outer pins to the servo sheet metal. Do not disturb the inner pins as we need to connect wires to them.
Now our robot is completed in the mechanicals and looks pretty cool too.
Power Supplies




We have two separate power supplies, one for the main components and servos and another single cell for the high voltage transformer. They need to be separated because every time you trigger the high voltage transformer it interferes with other electronics and it causes a massive malfunction.
Main Power Supply:
We use four lithium ion 18650 battery cells in parallel for our main power supply. It's a simple connection, just connect the battery positive to powerbank positive with an on/off switch in the middle and connect battery negative straight to powerbank negative. I tried to make a schematic using fritzing but I couldn't find the powerbank module. You may be wondering about the extra modules in the pictures. Well after I programmed some custom scenarios I've noticed when a certain amount of servos and components start at once it causes power shortage and turns off all components. So I added two small modules to provide some extra juice when needed and it worked. But I don't recommend you to do it as it really complicates things and its not very standard. Just buy the powerbank module with the highest amperage and you should be fine.
Now the whole package sits right in the front section of robot on the chassis. I screwed the powerbank module right onto the U profile. Use any glue that you are comfortable with and connect the battery cells to the chassis with some dots. Don't over glue the parts as you may need to upgrade or replace them later.
HV Transformer Power Supply:
Just a single lithium battery cell connected to a TP4056 module. Put it right by the U profile of the retractor mechanism and leave it till we get to the high voltage session.
Power Cord:
Now grab the male USB to USB cord and cut it in the middle. Now connect the other ends to the 4pin PC power socket. The ESP32-CAM module is very power sensitive so we need to dedicate an entire power line just for it otherwise you will experience lots of video streaming disruptions and disconnections. You can also use this power line for the other ESP32 module. The red and black wires with the socket are for the AI ESP32. Use the other power line for all the remaining components. Make sure to connect all the GNDs together as it's essential for the to communicate with each other. I used the two capacitors for the power problem I mentioned earlier but they didn't help very much however they look very cool on the robot so I didn't remove them.
Electronics



ESP32-CAM:
As I mentioned the ESP32-CAM is a very power sensitive module and even when I tried to connect the RGB lights to it, video streaming was very awful. So we don't use any of the ESP32-CAM GPIOs, the module only passes your commands to the main arduino controller through serial communication. Connect everything as shown in the schematics.
Main Arduino:
The main arduino is responsible for processing your commands and executing them. It controls all the servos and high voltage transformer. The main arduino is also a master for the secondary arduino. You can find the connections to each component in the schematics so there's no need for further explanation.
Secondary Arduino:
The secondary arduino is responsible for RGB lights and the robot's voice. It connects to SD card reader via SPI connection.
AI ESP32 NodeMCU:
The actual AI is not reached through the ESP32 NodeMCU. The ESP32 NodeMCU connects to your phone hotspot alongside ESP32-CAM and gets the answers from AI as text, then it converts the answer to audio using text-to-speech api. AI fully understands Persian language but unfortunately I couldn't find a text-to-speech library that supports Persian so I had to set English as default. Also the only way I could connect to AI was through VPN and using a VPN will terminate all local connections and we are using a local hotspot connection to connect to the robot. I hope Openai opens up its services for Iran so I can Improve this section. This hardware is fully capable of direct control through AI.
With all that said, I managed to test the codes and it works perfectly in a non-restricted regions.
High Voltage Transformer:
This is where it gets tricky! But first things first. I bought this high voltage spark generator kit online and it came in a small plastic bag with no names but I'm sure there are similar kits everywhere. You can match the pictures and order yours. At first I tried the black 400kv cylindrical transformers and put it in the back with other components. Big mistake! It interrupted the whole systems at once as it was too noisy and the high voltage wire going alongside other wires was not helping at all. Also another bad idea, connecting the high voltage circuit to the same power source as other components. I mean at that point nothing was working. Finally after some struggling, I used the single battery cell power source just for the high voltage transformer, ordered a small and light HV transformer kit and shortened the sparkler wires as much as I could. Now the robot works perfectly and torch doesn't miss even a single fire blast. Although don't mess with sparkler settings in the main arduino code cause longer sparks may cause some interruptions and are not necessary.
Put Everything Together


Now that you've connected the circuits you can montage the electrical and mechanical parts together. Start with the backpack, put two arduinos alongside each other (vertically or horizontally) on the top side and start wiring the circuits from the back. Then connect the triple male jumpers (you make them using 1 and 2 row male pins) to the main arduino pins and power lines. Then connect them to the old PC 4 pin socket. Install the backpack on the body and connect the RGB and servos and ESP32-CAM to it. Then install sd card reader module on the neck and connect to the secondary arduino. Connect AI ESP32 on the back bottom of the speaker housing alongside MAX98357 amplifier. Install the relay module beside the backpack and connect the high voltage transformer circuits. At last connect the power cord to the powerbank and the backpack. You are now witnessing the final look of the robot. Congratulations!
The Codes


Attaching the source codes in here was a messy way to go as the .zip files are not supported. So I made a GitHub repository and uploaded all the codes in there. Click here to redirect to GitHub. Also it's my first public post on GitHub so if there's something (repo settings or project files) that needs changing just let me know.
First I need to mention there's a ton of tricky small things that you need to do to make the codes work. I'll try to explain them as we go trough it but I may miss some points as I made this project almost two years ago. So if you are making this project and having any issues just let me know.
Note! I've done some experimental codings and some prototype features that are not currently available but their leftover codes might be in there, commented or not commented. I didn't remove them cause they might catch your attention and create some sparks. Just don't let them confuse you.
ESP32-CAM:
In order for the source code to compile without any errors first you need to install ESP32 version 1.0.4 from your boards manager. Then install all the missing libraries. Connect your board to USB to TTL Converter (Wiring diagrams are all over the internet just google it). Connect the GPIO0 to GND to enable boot mode. Choose AI Thinker ESP32-CAM board from tools and then choose Huge APP as your Partition Scheme. If it didn't work try selecting ESP32 Wrover Module as your board. At last enter your wifi credentials, select your COM port and start uploading the sketch.
Note: You may get errors like guru meditation or brownout detector was triggered. They are normally caused by poor quality cable connections or power shortage. In order to get rid of the errors connect the board to external power source and make sure you have good connection. Also it's very important that you connect the ground wire to your system and the power source. I made a Programmer Module for my ESP32-CAM and it really saves me all the hassle for the programming and debugging. It's really simple and I recommend it as you may need to check IPs from serial monitor once in while.
Note: Its recommended that you use the GND pin next to 5V pin for powering the module.
If everything goes as planned now you can test your module. First turn on your phone's hotspot and make sure there is no VPN or proxy is active. Then restart the module after you disconnected the GND from GPIO0 and keep the board connected to serial monitor and set baud rate to 9600. You should see startup notes in the serial monitor. They look like this:
Now go to your phone and paste the IP in your chrome browser. Now you have access to the video streaming and some basic controls as shown in pictures. Remember this panel is just for the test in case you don't have access to the dedicated app. The basic controls obviously don't work and there's two reasons for that:
- Well nothing is connected
- Local IP is hardcoded in the camera_index.h file and your local IP may be different than mine
Read this section if you want to make this web panel work (It's not important):
Originally you should see readings in the serial monitor when you click the web panel buttons, for the second reason I mentioned you need to edit the html file IPs one by one. Open the Unencrypted_UI_html.html file with any text editor and scroll down. You should see some IPs after some scrolling. Replace them with your own IP and select all the text using ctrl+A and copy it. Go to here and paste the entire codes in the INPUT section, then copy the output and replace it with the code in camera_index.h file. Lose the first comma in the text you copied and upload to board. Now each button you click you can see the command through serial monitor. This will work once you programmed the two arduinos.
Guys! This ESP32-CAM section took me months to get right. There are too many variables and I tried to cover them as much as I remember. Just don't get frustrated easily and be patient on this section.
Main Arduino:
The codes on this one were so much that I had to use a second arduino to be able to continue developing. All the custom scenarios and gestures are written in here. I managed to connect 9 servos to it by using two separate servo libraries. I won't explain the codes as this is almost a 4000 line project and it needs a whole other article. But the variables are self-explanatory and the codes are clean.
So to upload the sketch first install all the libraries and select arduino nano from the boards manager. Select COM and click upload. If you had problem with uploading mess around with processor types. I can only program my arduino nanos when the processor is set to ATmega328P Old Bootloader.
Now you can test servo motors with the web panel (If you have changed the IPs) but disconnect or loosen all the mechanisms from servo shafts to prevent any physical damage as the arduino has an Auto Homing Protocol when it starts up. Auto homing protocol sets all the servos to their home positions. after the auto homing is done you can tighten everything back.
Secondary Arduino:
This is pretty straight forward as it's the same part as the last one. Program the module and connect to sockets. Before you proceed to testing you need to prepare your SD card for the sound system. I'm using TMRPCM library to read from SD card and play to PAM8403.
Note: As both arduinos are connected through hardware serial pins, you won't be able to program them whilst they are connected to each other so remove them and program them individually.
SD Card:
The TMRPCM library only accepts a few audio formats. Read their documentations for more information about audio formats and how to convert them. I give you a tip on this one: use audacity software to convert any audio to TMRPCM readable formats. For now just use the .wav files I included in the project directory.
The next step is to repartition the SD card to be able to set its format to FAT16. Repartitioning is only necessary if your SD cards capacity is higher than 4GB. Well the lowest capacity SD card I could find is 16GB. So I connected my SD to my computer and went to device manager. Right click on the SD partition and delete its partition. Then create a New Simple Volume and create a partition with any value less than 4GB. Go to my PC and format the SD card to FAT16. Now your SD card is ready to use, copy the audio files to SD and insert into SD Card reader module
AI ESP32 NodeMCU:
Just enter your wifi credentials and upload the sketch, this part is easy. For testing the sketch you can connect it to your wifi hotspot and turn on your mobile network. If everything is set, you should hear "AI Connected" from the speaker.
Control Panel Application







We're almost done! Just create an application for controlling the robot😅
I developed the app through MIT App Inventor cause I didn't feel like coding anymore. This section needs some explanations... It was my first app in app inventor so I made the UI by simple drag and drops. It looks great on my Black Shark 3 phone but I cannot promise very good looks on your phone as it's not a responsive UI at all. So I figured I can put out the source files for the app and you can customize the UI as you wish. You'll also be able to change the command scenarios and the languages and everything. I made this application on android platform but as far as I know if you have a mac, you can output for IOS platform too. Just let me know if you've done something cool with the app, I'll put my contact info at the end. The .aia file for the application is also on the GitHub page as it's not supported here.
And make sure you replace my AI token with yours in order to get responses from AI. My token is dried up!
First thing to do after installing the app is to go to options and scroll down. Go to wifi setup and enter both ESP32-CAM and ESP32 NodeMCU IPs in the text fields. You can also change their wifi credentials from here. You may need to restart everything but changing the IP usually works right away. Now click the middle button "Start Stream". The video streaming appears in the middle section and you gain control of the robot. The left joypad is for looking left/right and up/down, and the right joypad is for the motors. there are two buttons with hand icon on the screen, clicking them shifts the joypad on their side to hand control pads. You can switch back to their main function by clicking the hand icon again.
Fire and flash light icons are pretty self-explanatory, just don't click the fire button when the hands are in home position as it starts to burn itself. You can test the fire function with the next part. The mic button activates googles speech recognition and it's set to Persian, so try telling robot to "Atish ro Bede" or "Fandak Dari?". That's a lot of new experiences at once guys.🤯 Here's what it should do.
On the Sequences section you can find all sorts of scenarios and functions but I won't spoil them here, just enjoy your craftsmanship.
Options:
So you are familiar with options and most of them are pretty self-explanatory, but some need explanations. When you turn on the Artificial Intelligence, the mic icon gets you access to AI. It also sets the language to English as I mentioned before. Now you can ask AI anything and it talks to you through the robot. Not what I planned originally but that's all I could do under going circumstances.
The Gyroscopic Vision lets you control the robots vision by panning and tilting your phone! I really enjoyed this part. The C button on the main screen is dedicated to this feature and it stands for Calibration. With this button you can reset your phone's gyroscope zero degrees center point at any position you're comfortable with.
There is a voice mode to change the robot's tone but I discontinued this feature as I was happy with its voice. It also used to play Crysis voices as it received a new command from the app, like for example it used to say "navigation marker updated" when you changed the joypad direction or say "mission complete" after some sequences. It was pretty cool but also scared some people and children so I removed it. But I've included the soundtracks in the SD files and also the base codes are still there if you want.
And finally, I know I didn't mentioned the face recognition features at all and there is a good reason for that. Yes you can introduce faces to robot, yes it can detect your face and yes, it says "Hi Daddy" in Persian and waves at you when he recognizes you. But the face recognition on this module is super tacky, unreliable and slow. At first I was going for a fully autonomous robot that interacts with you and follows you using face recognition and AI but it didn't go as planned because of the hardware and region limitations. It's not impossible to do but you need to disable all video streaming features and at the end you'll end up with a spasmic slow robot. However, I left all the face recognition features intact if someone wants to work on that area.
I didn't cover all the options so you can have an adventure full of cool surprises. Just mess around and have some fun.
Final Words

Man that was a long tutorial! Here's a video you can enjoy from the AIBOT. There's more on my Instagram if you want.
I'm aware that I didn't cover every detail and you may need to search stuff once in a while or improvise every now and then but remember, Everyone can make a less challenging project. Overcoming the things that are challenging for others is what makes you stand out.
This thing took me around a year to finish so take your time and enjoy the process. And I need to point out that your robot doesn't need to look exactly like this and with some alterations you can make a much bigger and cooler robot. This platform is very practical for content creation and cosplay as you can write custom scenarios and make a robot assistant. If you have cool ideas contact me maybe we could create even cooler stuff.
Contact Info: