@tutorial: Voice controlled 3D printed robot arm

This is a voice recognition module from Geeetech that I’ve just received from Banggood. Once you setup the module, you could say voice commands and it will send a different two byte data for each command using a UART communication.

External Link: https://electronoobs.com/eng_arduino_tut17.php

by: ELECTRONOOBS on 2026-05-30

 If you connect a microcontroller like for example Arduino to it, and receive those bytes trough the RX and TX pins you could control things like motors, lights or any other modules using just your voice. In this tutorial, I will show you how this module works, how to setup it, save the voice commands and use it with Arduino in this robot arm project. So, let’s get started.

This is the voice recognition module from geeetech bought from banggood. When you receive it in the package you will find the module, a small microphone with a 3.5mm mono jack and some female wires. To communicate with this module, we will use these 4 pins. This are the 5V TTL level UART interface with the RX and TX pins. So, the first thing to do is to check the user manual of this device. You could download the manual from a link below.

Scroll down to serial commands. This are all the commands that you could send to the module in a hexadecimal format. So, for example if we send 0x00 trough the UART interface, it will enter the waiting state. Read what each of these commands do. I will only explain the main ones.

But before that we should first establish the serial communication between the module and our computer. You have two options. First is to buy an FTDI module like this one.

The second option is to use the FTDI chip that the Arduino UNO already has. For that you should carefully remove the ATmega chip and connect the UART pins.

Be careful, in a normal uart communications you would connect Tx to RX and Rx to tx pins. But using the pins from the Arduino UNO you should connect Tx with TX and Rx with RX for this part. Later we will connect them normally. If you use the FTDI module just make the normal connection. Also supply 5 volts and ground.

Ok, we have our connection. Now we should send bytes to the module. Using the Arduino monitor that would be impossible because it works in ASCII format. So, you should download the Hterm platform from a link below.

Record youe own voice commands


HTerm, this program is able to send direct bytes to the Arduino. Open the program. Select the used com of the Arduino, in my case is COM3. Select the baud rate of 9600 because that’s the speed that the user manual gives us for stock configuration of this module. Next select ASCII format for the received data in order to understand it, and a newline at CR plus LF in order to have line jump. Also unselect the show newline characters. Down, on the input control select hexadecimal format because that’s the format that we want to send. Now we could send commands.


Before any two bytes command, you should first add the AA characters as the manual tells us. The first command that I will send is AA00 that will put the module in waiting state.


Record the voice groups

Before any two bytes command, you should first add the AA characters as the manual tells us. The first command that I will send is AA00 that will put the module in waiting state. As you can see I received the waiting response as the user manual tells us if the module is in to common mode. To change the mode to compact mode just send AA37. But you should live it in commune mode for now so you could see something you understand while configuring the module.


So, this module could record 3 groups of 5 voice commands. But you could only import one group at a time and that’s the bad thing about this module. So, we have a total of fifteen commands separated in 3 groups. What I want to do is to fill all 3 groups with these commands.

I want to control a servo robot arm. Hello and goodbye will turn on and off the robot arm. Move will put the arm in to moving mode and also import the next group of voice commands. Now we are in the second group. Here we could tell the arm to move left, right, down or up or to make a salute. Each of these commands will import the third group were you could stop the movement of the robot arm and also import once again the first group and close the loop. That’s the bad part of having 15 commands divided in separated groups that you could only import one by one. Finally I want to control the extra two motors of the arm with the pitch command.


So, let’s record our commands.


First send the AA04 command to delete all the groups if you have a new module. Use other commands if you want to delete the groups separately. Now, all the groups are empty. To record your own, you have to send the AA11 command in order to fill the first group with your voice commands. But, before you do that get ready because once you send that data it will start recording. In order to get ready, you should know. The voice command should be maximum 1.3 seconds long. You should speak only but only after the start message. Don’t get confused with the again message. In order to save one command, you should say it two times in the same way. So, lets start. I insert AA11 and press enter. When the start message appears, I say mi first command. If it says again it is ok, that means that the first command was recorded. When the second start appears, I say the same command once again. There you go successful. The first sound command is saved. Now it will jump automatically to the next. I do the same but in this case to show you an example, I say a different sound for the second attempt and it will give me the different error. Now it will start recording the second command once again since the last one was an error. I do the same for all 5 of them till I get the group finished message.

Let’s see the entire process in real time in the photo below. You have to be snappy.


STL files

Ok so now let’s look to the Arduino code. My idea is to create a voice controlled moving robot arm using 5 servo motors. It’s a very simple example. The STL files for the 3D printed parts are in the description ready to download. I’ve printed them using my TronXY x5 3d printer with 2 perimeters, 15% infill and a 0.3 nozzle. The robot arm is very easy to build, using 5 9g servo motors and some sort of a base.


Download: Robot base

Arduino code

So, in the Arduino code in the setup loop I first send the the AA and 00 to put it into waiting mode. Next I send AA and 37 to make sure that it will be in compact mode. Finally, I import the first group by sending the AA 21 command. You should always put the module into waiting mode before sending any command in order to avoid errors. Now in the void loop I will receive two bytes each time I say one of the voice commands. I will be using servos so depending on the received data I will increase or decrease the position angle of the servo and by that moving the arm. I connect the servos to pin 3, 5, 6, 9 and 11 because those are the PWM pins of the Arduino UNO. Remember to add back the ATmega chip and now connect the voice module in the normal way, Rx to Tx and Tx to Rx. Make the connections following this schematic and upload the code.


Now let’s give it a test. The hello should turn it on and light the LED. Goodbye should do just the opposite.

Success, the robot arms is controlled with my voice. Make sure to read the entire user manual and all the commands and play with this module around. Don’t use the serial.print function because that will send just asci format. Use the serial.write to send instructions. Always add a small delay between sent commands like for example 100 milliseconds. Let’s see this other small example controlling some leds. I’ve recorded the voice commands from one to five and this is the result.

So you could control any other thing instead of leds just like this. Makye create 5 digit password to open the door. Or say something and turn on the room light. The choice is yours. That’s it. Now you could build your voice controlled robot or control lights in your room or maybe even open the door using just your voice. Make sure to use commands that are not alike, otherwise you will have the same result for different commands. Always check the links in the description for more information. Read the comments in the code to understand more. Also check the coupon link if you want to buy this module. I hope that you’ve enjoyed this tutorial. If so don’t forget to click the like button like crazy and share the video with your friends. If you have any question just leave it in the comment section below or on my Q&A page. Also, don’t forget to subscribe and watch all of my other great tutorials. If you consider helping my projects, check my new peatron page and help my workshop grow and have more other cool tutorials. Thanks again and see you later guys.

Leave a comment

Please login in order to comment.

Comments

ADVERTISERS
ADVERTISERS
PCBWAY