Software apps and online services
Our group is trying to make data acquisition easier, cheaper, and more efficient for those in the racing community. We did this by wiring and coding a temperature sensor that allows us to take the temperature across three points of all four tires on a racecar and outputs them onto a small OLED display.How is it useful?
The device is useful because it allows users to quickly and easily obtain tire temperatures from all four tires immediately after the racecar comes off the track. The users can then use the data obtained from the device in order to conclude how the car is handling and what changes need to be made to allow the car to perform better.Why would someone want it?
This device is appealing in many ways. One being that it is substantially cheaper then a number of the commercial tire temperature sensors (Cheaper by about 25%). The device is also easy to use and anyone can learn how to operate it in a matter of minutes.What makes your solution novel?
Our solution is novel for many reasons. One of those reasons is that it is easy to use. The device only has two buttons/switches, one to power on/off and one to take the temperature. Only having two things to deal with eliminates confusion for the customer as soon as they learn how to use it, which can be done quickly. Our solution is also novel because it can be delivered as plug and play. This device does not take much time to wire, so it could be done during the manufacturing process, unlike other instrumentation devices that require the user to set it up, calibrate, and wire it themselves.
How are you newly acquired IOT skills allowing you to bring such a solution alive?
From the start, none of our team members had ever used an IoT device, nor have we had much coding experience in C/C++. This created a major challenge for us, but we broke down the work to give each of us our own responsibilities of things to learn making it less stressful. We learned how to write the code, what the pins on the Particle Argon mean and do, how to utilize various sensors, and how to publish & subscribe our codes. These things - along with all the other little things we learned throughout - allowed us to bring our project together. We wrote several codes to join three Particle Argons and their respective sensors together. Then we were able to form multiple graphs displaying the data that we acquired.
Our first Particle involves a switch. This switch is used to turn the system on and off. This relatively simple circuit also involved an LED. The purpose of this was to make it clear to the user whether or not the system is on or off. It was also advantageous to us during testing of our codes and circuits to see the LED light up or not. The circuit has one end of the LED connected to pin D2 on the particle. The other end of the LED connects a 220 Ohm resistor to the switch. Then, the switch is connected to the ground pin on the Particle.
Our next Particle is for connecting our OLED display. The pin connections for the display include connecting ground to ground and Vin on the display to 3.3V on the Particle. Additionally, the CLK pin on the display was connected to D1 (SCL), and the DATA pin was connected to D0 (SDA). These connections are designed for the I2C connections as opposed to SPI. I2C is a little bit more simple, and when coding this version worked best for us.
If we had decided to go down the SPI route, we would have to open up the J1 & J2 jumpers on the back. There is a useful video provided by Adafruit explaining how to do that if necessary.
We ultimately decided to connect the OLED display directly to the Particle with the switch to power it. We did so by connecting wires between power and ground between them.
Temperature Sensor & Button
Lastly, we included a temperature sensor to take the measurements. We connected the black wire on the sensor to ground, the red wire to 3.3V, and the yellow wire to D4. We also included a 4.7k Ohm resistor between the yellow and red wires.
On this same circuit, we also included a button. To wire the button, we connected one pin to ground and one to D2.
The purpose of this button is when the button is pressed, the temperature data is taken. Then, through particle.Publish and particle.Subscribe, the data is output to the OLED display to show whatever the most recent temperature taken was.
The temperature would be published as an event which is shown below.
Once everything is connected and running, we need a way to be able to organize our data to show what we want. When taking 3 temperatures per tire, we need to be able to differentiate between the location of each temperature taken and which tire it is for. To do so, we got our data into a Google sheet and created a graph to display the temperatures. Each tire is labeled by a different color (the order being RF, RR, LR, LF). Then, each color has 3 bars which are the different locations of the temperature being taken (from left to right on graph - outside, middle, inside).
As seen, a lot of these temperatures are extremely close to each other or the same. This is because we tested it on a normal car as opposed to a racecar. Also, the car was not driven in a while so there was not a lot of heat applied to the tires. Any changes in temperature came from the sun hitting one side of the car. Ultimately, this just means the data would look a little different if this were a racecar that had just gotten off the track.
Another purpose of our device is to more easily gather other data such as the averages of the temperatures or the spread (difference between the highest and lowest temperatures). Typically, this would be done manually, but we took the data from our Google sheet, wrote formulas in the cells, and could easily output that information as shown in the following two graphs.