ACEBOTT ESP32 Smart Car with IR Control

Screenshot 2025-08-28 080437

I got my ACEBOTT ESP32 Smart Car Starter Kit with Mecanum Wheel all wired and so the next challenge was to get it to move. Luckily, the kit comes with an Infra Red Remote control. I therefore wrote this code:

https://github.com/directorcia/Azure/blob/master/Iot/Acebott/Smartcar/irbuttonmap.cpp

To show me what all the buttons on the controller mapped to on the ESP32.

With that complete, I now wrote this code:

https://github.com/directorcia/Azure/blob/master/Iot/Acebott/Smartcar/irmovecontrol.cpp

to get the Smart Car to move by using the IR control. I documented the code here:

https://github.com/directorcia/Azure/blob/master/Iot/Acebott/Smartcar/irmovecontrol.md

The next step will be to run a small web server on the ESP32 and connect to that via local WIFI to move the car.

ACEBOTT ESP32 Smart Car Starter Kit with Mecanum Wheel

Screenshot 2025-08-28 080437

In my on going quest to get a camera working on a robot car and failing with an Arducam, I cam across an existing kit that has an add on extra of a camera. It is the:

ACEBOTT ESP32 Smart Car Starter Kit with Mecanum Wheel

with

ACEBOTT ESP32 Camera Expansion pack for Smart Car

which is going to make achieving my goal much, much easier.

To get the Smart car working you’ll need to nuy some batteries:

1 x CR2025 for the Infra Red Controller

2 x 18650 to the motors and controller board

Assembling the car is pretty straight forward and the kit give you a few spare items for those that you invariably drop on the floor and lose, which is nice. The main challenge I had was with the wiriing. It is always a good idea of take a photo of the components , both sides, BEFORE you assemble them so you can read the pin settings. Case in point, here is the Ultrasonic senor after I had to disassemble it to get the pin settings.

Screenshot 2025-08-28 081429

Hopefully, that saves someone else having to do same.

Here are some more I took of the motor shield board because reading the numbers for the connectors was challenging.

Screenshot 2025-08-28 081600

Screenshot 2025-08-28 081753

With everything finally assembled and powered up I wanted to wire some code to test all the sensors were working correctly. I used this for my tests:

https://github.com/directorcia/Azure/blob/master/Iot/Acebott/Smartcar/diag.cpp

It will flash the LEDs, move the servo for the ultrasonic sensor, test the IR receiver, play tunes on the buzzer and test all the wheels, forwards and backwards for you.

All teh driver files and the instructions can be downloaded here. This will give you everything you need for all the Smartcar kits and add ons.

My next step will be to code the Smartcar so that it moves in response to commands sent to it via the Infra Red controller. Stay tunes.

Mecanum Motion 2 – Arduino Uno R4 Wifi

Video link = https://www.youtube.com/watch?v=DYcEgvdhoOE

A while back I got the chassis with the mecanum wheels being controlled by an adafruit.io dashboard. I have revamped the controller to now be an Arduino Uno R4 WiFi controller with an Adafruit MotorShield V3, once again controller by an adafruit.io dashboard.

The code for this is here:

https://github.com/directorcia/Azure/blob/master/Iot/Arduino%20Uno%20R4%20Wifi/Adafruit-IO/chassis-control.cpp

and the documentation for the code is now at:

https://github.com/directorcia/Azure/wiki/Arduino-Uno-R4-Wifi-Chassis-Control-Script

which saves me having to explain it here.

Arduino Uno R4 Wifi Wheel test

Video URL = https://www.youtube.com/watch?v=Ed9reoDO2EA

Now that I have my Arduino Uno R4 Wifi connected to the Internet and Adafruit.io, the next challenge is to get the wheels turning so to speak.

To do this I need a motor driver and wanted one that would easily connect to the Arduino Uno R4 Wifi without too much soldering. I therefore chose:

adafruit_products_powerjump.jpg

Adafruit Motor/Stepper/Servo Shield for Arduino v2 Kit – v2.3

the instructions for this board are here:

Adafruit Motor Shield V2

and the software library is here:

Adafuit_Motor_Shield_V2_Library

however. it turns out that I should have also bought:

Shield stacking headers for Arduino (R3 Compatible)

but I’ll come back to that.

Screenshot 2025-07-27 084259

With the headers soldered into place, I could then insert the Adafuit Motor Shield directly onto the Arduino Uno R4 Wifi as shown above.

I then uploaded the following code to the Arduino Uno R4 Wifi:

https://github.com/directorcia/Azure/blob/master/Iot/Arduino%20Uno%20R4%20Wifi/Adafruit%20Motor%20Shield%20V3/test-motors.cpp

to test all the motors. The results of this are shown in the video at the top.

Using the ‘vibe’ coding and with thanks to Github Copilot, getting the results I wanted was really easy. It even installed the Adafuit_Motorshield drivers for me as well.

Now I know the shield works along with the all the motors. The next was to be to get the DFRobot 1602 LCD display working on teh Arduino Uno R4 Wifi. It was then I realised that I should have used the:

Shield stacking headers for Arduino (R3 Compatible)

as I now didn’t have an easy way to connect the display. Damm! I’ll need to figure something else out to get the display working with the board. However, I am very pleased that the Adafruit Motor/Stepper/Servo Shield for Arduino v2 Kit – v2.3 works well and all the motors on my chassis are all operational again. I am now back to where I was with the S32 controller over a year ago.

If you haven’t worked out yet, I’m trying to get back to this point:

Mecanum motion

but with a more compact controller and motor driver.

Arduino Uno R4 Wifi Adafruit.io connection

Video URL = https://www.youtube.com/watch?v=VSRVwGGtVZQ

With my Arduino Uno R4 Wifi now connected to the Internet, the next step is to get it connected and receiving commands from my Adafruit.io dashboard.

The code for this is here:

https://github.com/directorcia/Azure/blob/master/Iot/Arduino%20Uno%20R4%20Wifi/Adafruit-IO/main.cpp

and as you can see from the video is now working. Thus, when I push a number on the Adafruit.io dashboard it is communicated down to the Arduino Uno R4 and displayed on the matrix.

The interesting thing is that I ma now ‘vibe’ coding solutions with Github Copilot. This means I am not writing the code by hand any more. I tell Copilot what I want it to so and allow it to generate the code for me. This saves me SO MUCH time as I am not an experienced C developer and all I want is to get my project working as fast as possible.

However, this ‘vibe’ coding approach still presents challenges. When I started out with thsi project the code Copilot developed for me used a HTTP connect to Adafruit.io dashboard which ended up being far too slow. I didn’t notice that fact unit a little ways into this. At that pont I had Copilot redo the code and only use MQTT, whcih now works athe speed expected.

‘Vibe’ coding is such a time saver for me with these projects and help me sort out issues faster that I could without it. However, the lesson here is that you need to understand what you are trying to achieve and help the AI understand as well.

Arduino Uno R4 Wifi Internet connection

Screenshot 2025-07-26 071040

After getting the matrix working on the Arduino Uno R4 Wifi, naturally the next step was to get it working and connected to the Internet.

You’ll find the code here:

https://github.com/directorcia/Azure/blob/master/Iot/Arduino%20Uno%20R4%20Wifi/Wifi%20Connect/chk-mrk-connect.cpp

The secret is to include the WiFiS3.h, which the wifi library for the R4. Aside from that, the other thing that I did was move the settings (i.e. network, password, etc) into a io_config.h file to keep them out of the main code.

The end result is that the R4 now successfully connects to my Wifi and then to the internet. Upon success it wil display a check mark on the LED matrix on the device.

Arducam Mega 3MP failed attempt

I returned to my quest of getting the Arducam Mega 3MP working anf have had no luck at all. I have created the following diagnosis program that might help someone else here:

https://github.com/directorcia/Azure/blob/master/Iot/Arducam/3MP/diag.cpp

My latest attempt was with an Arduino R4 WiFi and all I keep getting is connection failures and incorrect reads. I have tried various wiring changes and testing but still no luck at all.

mega

I used the above wiring but to no avail. The code uses pin 10 for CS, which also doesn’t seem to work.

The result indicate it is detected by any reads and writes come back wrong. I have tried all sorts of timing changes to no avail. Thus, I’m going to shelve this for a while and move on with other things.

It really shouldn’t be this hard and I can only think that perhaps the camera has somehow been damaged in all my testing. Perhaps a new one and fresh start is in order?

Arduino Uno R4 Wifi Matrix display

20250518_051525895_iOS

The next controller I’m going to play with is the Arduino Uno R4 Wifi. I really like the ease and compatibility of the Arduinos I have used so far but the lack of WiFi I know will be a major limitation. So it make sense to explore a Wifi Uno.

One of the additional ‘nice’ features of the Arduino Uno R4 Wifi is that it has a LED matrix included on the board. Thus, the starting point is to try and get something to display on there.

First I tried displaying a simple emjoi. The code for this is here:

https://github.com/directorcia/Azure/blob/master/Iot/Arduino%20Uno%20R4%20Wifi/Emoji%20Display/main.cpp

and there are range of emojis to display.

I then uploaded the demo code here:

https://github.com/directorcia/Azure/blob/master/Iot/Arduino%20Uno%20R4%20Wifi/Text%20Display/main.cpp

to display Hello World on the matrix, which all worked as expected as shown on the image above.

The next step after getting something to display on the matrix will be to get the Wifi working.

 

Garage distance sensor V2

image

My initial prototype started back here:

and is now at the point where I am designing version 2.

The biggest change for  version 2 will be the replacement of the 5 individual LEDs and the board they live on with a Keyestudio 40 RGB LED WS2812 Pixel Matrix Shield for Arduino:

The main reasons for this are:

– less soldering is required

– the LEDs are brighter

– there will be a 5 x 8 matrix of LEDS allowing more options

– the shield plugs directly into the controller board

So the circuit diagram will now look like:

The code will, at least initially remain functionally the same but may get enhanced once I have it working.

I have ordered an additional distance sensor and QWIIC LED 4 Digit display but the LED shield is ready to go as you can see in this video:

Video link = https://www.youtube.com/watch?v=49V33TKXt3c

The test code shown in video is here:

https://github.com/directorcia/Azure/blob/master/Iot/Arduino%20Uno%20R3/Garage%20distance/pixel-matrix-test.cpp

I think this LED shield will be a big improvement for the project, so stay tuned for more updates soon.

Robot Arm with Multi Motor Movement

I’ve improved the movement of my robot arm by implementing multi motor movement. This means moving large distances will be more efficient since the arm can take a more direct route. You can see this in the video I created above. You’ll find my code for this routine here:

https://github.com/directorcia/Azure/blob/master/Iot/Arduino%20Uno%20R3/Robot%20Arm/routine2.cpp

This has lead me to go down the rabbit hole of kinematics.

Kinematics is the science of motion without considering forces. For robot arms, it answers questions like:

  • Where should each joint move to place the end-effector at a specific position?

  • What angle should each servo rotate to reach a target point?

There are two primary types:

  • Forward Kinematics – You provide joint angles, and it calculates the end-effector’s position.

  • Inverse Kinematics (IK) – You provide a desired end-effector position, and it calculates the joint angles needed to get there.

I’m going to try and implement kinematics for my arm going forward, so stay tuned for updates.