Overall design and drivetrain
The arduino nano and the multiplexer are placed next to each other while all 16 buttons are also placed right below them. The LEDs and the main power switch is right in between. The car view from the top reminds a sort of a fixed line telephone without the headset. I guess, I could come up with more car-like shape, but for now I am almost happy with what I have. Also, I did not mean to make it look like Cyber Truck. Although one may find some similarity. What makes the whole thing different is the drivetrain, that is a seperate mechanism alltogether. It is only attached to the main body with wire terminals. It is a modular design. This setup allows separate development and design of the drivetrain, allowing caterpillar chain drive or a regular wheel based one. Currently, I have planned and designed both, but only the wheel version is near completion. There is also high possibility of stepper motor based drivetrain being used for better, precise motion control, which is expected of a robot car. But the code only supports DC motor for now.
What I have now is the result of multiple trials and errors, reworks and versions. Originally, the idea was to go with 2 or 4 stepper motors and catepillar or wheels respectively. Two stepper version required caterpillar chain, while 4 motor wheel drive would work as it is without chain. This is because of the turning issue. The car must be able to make more or less calculated, precise turns in order to not deviate from the programmed course too much. Regular front wheels turning setup not cinsidered, but now I think that could work as well. Anyway, the current turning motion is a tank-like in place turn that is performed by wheels of opposing sides turning in opposite directions. We shall see how that works out when the car is complete. I might modify the drivetrain further, if required.
As the title mentions, the main body top part is where all the internals go. All the electronics are attached to the inner side of the main body cover. I will post an update as soon as I comlete the assembly. I placed the arduino exactly where needed to allow programming even with the whole car fully assambled. I thought that will have me develop faster, as the design is nearing its completion. I left three slots for additional buttons I might have to add in future. I am not sure what kind of new ideas I may have later. I come up with many ideas while developing, most of which I trash for the sake of feasibility and completion. Completion is the most important part of any project and I have enough of those still waiting for their hour on my shelves. I hope I will succeed one day to have a series of videos along with their projects finalized and presented in their full glory. Mini console game and stylophone are coming next, God willing.
Source code logic
The logic is straightforward and pretty simple: follow the steps input by the user. But there several problems to be solved in real world testing. I want to decide such variables such as the speed, power, minimum travel distance. But these parameters will most likely change in future. I expect the speed of 2cm/sec is enough, because we are not building a racing RC car. It is a fully programmable tool that allows children to explore and learn patterns, logic and basic programming skills. I believe, this car will be fun to play with. Sound effects and LED indicators work according to the program input by the user. Each unique motion has its own distinct sound and light associated with it. The timing of the turn signals though is more complicated. Let me explain why. Coding turn signals to work at the time of turning would be too easy and unrealistic. You see, in real life we do not turn on winkers at the time of turning, we turn them on as early as possible. I believe, sound effects can be delayed or played at the end of each motion. The sounds are only simple means of step completion confirmation. Turning involves reversing the rotation of motors on the opposite side for a certain amount of seconds or milliseconds. I will have to finetune that and I think that is the most complicated part. Depending on the surface the car is travelling, the amount it may slip and diviate will effect the accuracy of turn motion. A few such imprecise turns and the car will end up going in the wrong direction. I may have to allow the user decide how much to turn. Implementing additional sensors is not really an option with my setup. Arduino nano has its limitations regarding how many sensors or devices you can attach to it. Currently, almost all of its IO ports are occupied with input and output devices.
User Input
There are basically two modes of input: numeric and directional with cancel/confirm marking the limit of maximum steps allowed. I think such limitation is not required.
Possible modifications
I think it will be a nice to have several preset movements, so users can enjoy the car immediately, before learning how to program it. Also, a random movement preset could be a particularly interesting option too.
Specifications
power supply = 3.7V lithium ion battery. 1 x 65850
drivetrain = 2 x DC motors with reduction gear
user input = 16 push buttons. 10 digits, 4 direction, 2 control
