This project is a presentation of my Digilent Design Contest 2016. I hope you enjoy it and it will inspire you to build it or something similar.
Step 1: The 3D Road Mapping Autovehicle
The idea behind this project was the following:
In a road full of holes, bumps and other obstructions, we want to have a smooth, relaxing journey with our car. This problem is, in my opinion, one of the most important things in driving safety as well. The gas mileage is increased, the wear on the transmission, suspension and all the moving parts in the car are, like above stated, susceptible to permanent damage.
This problem can be solved using my idea, which is the 3D road mapping vehicle. The vehicle I am about to present you, is a small scale prototype of what can be implemented in real life. For this, I will be using the following products of Digilent: ChipKIT Pro MX4 micro-controller developing platform, ARTY, the 99$ FPGA, 2 DC motors, 1 PMoD WiFi, 1 PMoD OLED, 1 Motor shield and other miscellaneous parts. I will attach the photos here:
Step 2: The Micro-controller Part
What is implemented as I write this article, is the communication of the micro-controller with the laptop, using the WiFi PMoD that I am using in this project, and the reading part of the i2c bus. The test was made using a LED board that I made myself. When I press a key on the laptop, I send a packet consisting of 4bytes of data. the first two are the action (key pressed or key released) and the other two are the key's code. The software used in the receiving, decoding and interpreting the data received will be attached here. For sending the packets on the TCP protocol, you can use the open-software packet-sender.
Step 3: Implemented on FPGA
The things implemented on FPGA are the following: The i2c communication that I will use to connect the micro-controller to the FPGA board. In the first picture, you can see the simulated wave-forms and after that, the wave-forms obtained from the Waveforms software, using the analog discovery digital oscilloscope.
The code used for the FPGA is the following: (IMPORTANT NOTICE! The i2c core is partial, and uses a specific data and a specific address to be sent. In the final project, it will be changed.)