This project presents a small-scale autonomous car(rover) guided on its desired path only using the RFID(Radio-Frequency Identification). This is, from our perspective, an unique concept, you will not find anything quite like this.
The goal of this design is implementation in every vehicle , all connected with the popular IOT(Internet of Things). This will probably be the most efficient safety mechanism ever built and will put a stop to car accidents and injury when fully implemented.
In this phase, we seek your help to spread the word about our concept and bring it closer to realization; what better way is there, than showing you just how to make such a guided system yourself and get convinced of the potential of the design. Even more, we are currently enrolled in the "Digilent Design Contest 2015" and hope to get some feedback there as well.
Step 1: Functional Description
As I said before, this project is currently in development but we have made a safe and functional prototype that you can recreate and successfully test at home. Keep an eye for updates that will be coming as the project evolves.
Motors are driven using a PWM signal generated on the FPGA; the speed of the motors is proportional to the PWM value.
They each possess a hall encoder with 2 sensors in 90 deg. phase shift. Every time a complete roation is detected, a bit is set, telling the fpga that a wheel tuned completely or it travelled approx 19 cm in our case (6 cm wheel diameter).
We can also set and read the direction for each motor individually.
We need this part to communicate wirelessly to our mobile application. This communication is meant to simmulate the IOT. The vhdl module handles the protocol of sending out the current tag values and also receiving important information from the outside. The outside information is processed in real-time using a Finite state machine inside the FPGA.
First of all, if you are not acquainted with RFID technology, learn the basics here.
Tag-Reader functionality : when a tag comes in range of a reader(and they operate on the same frequency) the tag sends back it's pre-coded value (12 bytes).
As seen in the functional sketch, we have two types of readers:
- Recovery readers - their only duty is to keep the vehicle on track.
- Position readers - these readers actually read the tag
Recovery readers :
- In an ideal case , these readers never read a tag.
- This algorithm keeps the vehicle inside the two tag lines.
- It ensures, primarily, that the vehicle does not go off-track.
- If a reader does come in range of a tag,it means that the vehicle is too close to the edge.
- The vehicle automatically steers in the opposite direction of the read tag and avoids danger.
As opposed to the recovery readers, the Position reader must always read the tag that comes along.It is used in :
- Tracking the real-time position of the rover, compared to the tag map, and send it to the IOT.
- The received code gets sent on the FPGA for further processing and control.
- On the FPGA we can prepare and calculate the next turns that need to be made.
- This algorithm helps avoid a recovery reader activation and provide the vehicle with a smooth ride.
The RFID tag placement depends mostly on the readers support arms. If you do print the 3d model we used, they should be placed approx. 5 cm distance from the baseplate, and with 2 cm distance between them.
We also attached the schematic for the connections between the Basys 3 board, RFID Readers, Motor Drivers and Bluetooth Module.
Step 2: Materials
- A FPGA with minimum four peripherial connectors - we used the Basys3 board.
- 4 x RFID readers.
- RFID tags(at least 40).
- 4 x DC motors.
- Motor drivers - we used 2 x dual motor drivers to save space.
- A simple robotic platform made out of : 2 x baseplates, motor mounts;
- A bluetooth transciever to emulate the IOT - we used this.
- 6 x rechargable batteries- any AA,1.2 V rechargeable battery brand will work.
- A standard mobile phone charger - we will use this to power the FPGA board separately
- Some cable connectors- pin cables.
We built the 3d models for reader supports and also a case for the basys:
You can download the .stl files from the above links and print them yourself if you have access to a 3d printer.
Step 3: Build Moving Rover
Now that we have all the components, we can start building the mobile platform a.k.a. rover:
- Screw the motors on the motor mount.
- Screw the mounts on the baseplate.
- Mount the wheels and mobile charger.
- Mount the fpga and connect the drivers to it.
- Connect the motors to the drivers.
- Connect the Bluetooth transciever to one of the pmods.
- Make a project in Vivado using the attached sourcefiles.
- Test using the attached android application.
Step 4: Test the Readers
In this step we will connect the readers to the FPGA's peripherial modules connectors:
- Solder wires to the reader pins , according to the documentation and seen in the pictures.
- Fix the brackets to the baseplate;
- Place the readers on the printed mounting brackets.
This step will require some on-the-spot adjustments.
Step 5: Final Assembly and Testing
After taking the time to complete the motion part , RFID reader part and bluetooth transciever, the final step is to verify the final design and test it.
At this stage we will be using these source files, with all modules connected together and optimized; only the recovery readers functionality was implemented in this version, the others will be implemented as the project developes.
Step 6: Status and Conclusion
In this video you can see what you get after doing all the steps . As i said, this instructable will be updated as we furtherly develop the project.
If you really like this design then fell free to participate in making the first generation RFID-driven prototypes, you might be building the future.