Prime Day rolled around again two weeks ago and it was a good opportunity to find a toy that I could build for my grandson.
I bought a Freenove Mecanum Wheel 4WD Car Kit for the Raspberry Pi Pico. I was able to get it for $39.96 since I already have an RPi Pico W that I can use with it. It does not come with the Lithium batteries (requires 2 18650s) but I also have those.
I have a Freenove 4WD Car Kit with regular wheels that I use with a RPi 3B+ but I wanted something simpler and lower power plus I wanted to get the mecanum wheels for lateral movement.
The documentation that is available for the car is very good. There is a 170 page Tutorial.pdf that covers the features description and build and assembly of the car. It also contains detailed descriptions of the 18 example Arduino IDE programs that exercise the various car features. These programs are available in the github repo.
The assembly went smoothly as the instructions and accompanying pictures are very clear. I only encountered two problems both related to mounting the mecanum wheels. The first was obvious as one of the 4 wheel coupling adapters shown below did not have sufficient hole clearance to allow the screw to go through and I had to drill it out.
The second problem was less obvious. Mecanum wheels require a particular orientation where the axes of the 45 degree rollers on the wheels want form an "X" when viewed from the top of the car as shown in the following diagram.
During my initial motion tests the car was not moving correctly in diagonal directions. When I rechecked my assembly I realized that I had assembled the opposing wheels incorrectly. You can see that the orientation in the assembly picture below is correct.
What had confused me is that the plastic wheel hubs are marked A-A and B-B but A-A corresponds to the B wheel and B-B corresponds to A wheel in the assembly picture. Just had to remount all of the wheels.
A picture of the completed assembly.
The car has a lot of nice features:
- 8 Neopixels along the sides
- LED Dot Matrix Panel mounted on a front servo (can be swapped for ultrasonic detector)
- 2 Photoresistors in the front for light following
- Line Tracking Module on lower front
- Infrared Sensor for remote control
- Buzzer
- Power switch
- Holder for 2 18650 Lithium batteries underneath between the motors
I wish the IR sensor was in a less obstructed location as I have experienced signal loss when the car is beyond 5 feet or so.
And an expandability issue is that there are only 4 free GPIO pins.
Testing
Mecanum wheel slippage
There is an example program that checks the movement control of the car.
It runs the following sequence of movement with a stop between each move.
Forward
Backward
Turn left
Turn right
Move left
Move right
Move diagonally upward to the left
Move diagonally downward to the right
Move diagonally upward to the right
Move diagonally downward to the left
I tried it first on a hardwood floor and there is considerable wheel slippage visible:
I reran the test on carpet and the results were much better:
I was somewhat surprised that "Move diagonally upward to the left" appeared to be the same as "Move left" and I discovered that was an error in the example program.
Infrared Control
The infrared controller has the following functions:
It was reasonably responsive but I did have some issues with missing commands when the car was further away than 5 feet and pointed toward me due to obstruction of the IR sensor with is mounted adjacent to the Pico socket. I did not video the test.
WiFi Control
Because I am using a Pico W I also have WiFi and BLE connectivity available.
There is a WiFi multifunction example that interacts with an app on a mobile device. The Car can be programmed to be in either AP or station mode. I am using my iPhone so I installed the Freenove iOS app. This app can be used with many different Freenove RC cars.
I am using it in station mode so it acquires an ipaddr on my network.
It works fine but I need to get used to the on screen "joysticks". I'll do a video when I have more time.
BLE Joystick
Since my grandson is only 2 1/2 years old using the IR remote or mobile app are going to be too difficult for him. What I'd really like is a simple joystick controller that could pair over BLE.
There aren't any BLE examples or BLE app included for this car but Freenove has a joystick controller (FNK0028) that is used for a different car. This controller uses an nRF24L01 BLE module.
Unfortunately these are currently unavailable. So I'm going to try a different solution. There are Arduino IDE compatible libraries for PS3 controllers and I'm going to try using a clone controller with the car. Just ordered a couple...