Directional Driver Hazard Advisory System
Transcript of Directional Driver Hazard Advisory System
DIRECTIONAL DRIVER HAZARD
ADVISORY SYSTEM
ECE 445 Final Report, Spring 2017
Ben Moore and Vasil Pendavinji
Team: 24
TA: Yuchen He
May 2017
ii
Abstract
Our project is a device that can be mounted to a vehicle to facilitate the receiving and sending of data
packets over an Infrared channel between drivers on the same road. This allows drivers to communicate
potential road hazards through manual entry or automatic sending triggered by sensor data. Infrared is
used to keep the device independent of additional infrastructure and directional to only inform affected
drivers. We use a lens to extend the IR Range to a point suitable for road applications (up to speeds of
~35 mph) and designed a communication control flow to improve the safety and reliability potential of
the device.
iii
Table of Contents 1. Introduction .............................................................................................................................................. 1
1.1 Objective ............................................................................................................................................. 1
1.2 Background ......................................................................................................................................... 1
1.3 General Design .................................................................................................................................... 2
2 Design ......................................................................................................................................................... 3
2.1 Communication ................................................................................................................................... 3
2.2 Microcontroller ................................................................................................................................... 4
2.3 Input .................................................................................................................................................... 5
2.4 Output ................................................................................................................................................. 6
2.5 Power .................................................................................................................................................. 7
2.6 Software .............................................................................................................................................. 7
3. Design Verification .................................................................................................................................. 10
3.1 Communication ................................................................................................................................. 10
3.2 Microcontroller ................................................................................................................................. 11
3.3 Input .................................................................................................................................................. 11
3.4 Output ............................................................................................................................................... 12
3.5 Power ................................................................................................................................................ 12
3.6 Software ............................................................................................................................................ 12
4. Costs ........................................................................................................................................................ 14
4.1 Parts .................................................................................................................................................. 14
4.2 Labor ................................................................................................................................................. 14
5. Conclusion ............................................................................................................................................... 15
5.1 Accomplishments .............................................................................................................................. 15
5.2 Safety and Ethics ............................................................................................................................... 15
5.3 Future Work ...................................................................................................................................... 15
6. Additional Figures ................................................................................................................................... 17
References .................................................................................................................................................. 19
Appendix A Requirement and Verification Table ....................................................................................... 20
Appendix B Code Snippets .......................................................................................................................... 24
Appendix C Additional Data ........................................................................................................................ 26
1
1. Introduction
1.1 Objective
Even with self-driving cars on the horizon, there is still more that we can do to make driving safer with
technology for human operators. In the United States, there were 35,092 fatalities and 2.44 million
injuries from motor vehicle accidents in 2015 [1]. This makes it one of the leading causes of death in the
United States [2]. With some of the top causes of most accidents being distracted driving, reckless
driving, and hazardous conditions on the road [3], a driver can benefit from increased awareness and
information about the road and nearby drivers.
Our project aims to augment driver awareness of the road by using motion data from sensors within a
car to detect and directionally communicate hazards to nearby cars. This information will propagate
from car to car using IR transmitters and receivers to keep drivers informed of potential advisories
through audio cues. Some hazards, like rapid deceleration or hard swerves could be automatically
detected which would send a propagating notification backwards to advise other drivers. In addition to
those automatically detected, the passenger can put up advisories for less immediate hazards, such as
road obstructions, dangerous road conditions, or recent accidents.
In this report, we will explore the general design of our project, dive deeper into all our specific
components, and how we assessed and verified their requirements within the project through testing.
Following that we will review the success that we found with our device, both in fulfilling all
requirements that we originally laid out as well as meeting major technical objectives such as the
maximum IR range and IMU Hazard Detection. Lastly, we will discuss the safety considerations of our
project and work that we can do for improvements in the future.
1.2 Background
Currently most new vehicles on the road today already come equipped with additional sensors to
attempt to keep the driver more alert and aware of unsafe driver behavior or road conditions. Sensors
like blind spot sensors, lane departure sensors [4] and backup cameras greatly help driver awareness,
but are limited to the immediate area around the car. Given that hazards that can be detected by one
car can affect several behind it, our system propagates and shares information to ensure all drivers are
aware.
Other technologies that work to provide a similar sharing of information are mobile apps like Waze and
CB radio (an old-school approach). Our system differentiates itself in that responds to hazards like
unsafe braking automatically, unlike Waze which relies solely on crowdsourcing for data. Also, our
system is directional, meaning a notification will be propagated directionally as to only notify drivers
who would be affected by that notification. It is also worth noting that because every system can
communicate with any another system independently, it requires no internet connection or backend
system to operate.
2
1.3 General Design
We decided to compartmentalize our project into functional components (As seen below in Figure 1).
See Figure 13 for a schematic of our design and Figure 14 for our board design. Each block represents an
individual function, contributing in a different way to the goal of the project. The Input block represents
the two user inputs to our system: passenger button inputs, and IMU readings. The output block
represents the two ways in which we will communicate with the driver and passenger: the speaker and
LCD. The communication block represents communication between devices. Each component is
controlled by a microcontroller. Finally, the power block provides suitable power to each block.
Figure 1
3
2 Design
2.1 Communication
Each device has both an IR receiver and transmitter for the purpose of communication. Communication
is a critical component of our project. We spent a lot of time carefully selecting and integrating our
components to achieve range which IR is not normally capable of. We chose IR specifically because it
provides a number of benefits to our application. IR is directional, which was a key feature that we
wanted our device to have. Directional communication allows us to communicate hazards only to users
who need to know about them. IR also allows our product to operate without any additional
infrastructure, such as cell tower or GPS access. Alternative communication media such as RF or the
internet would force us to give up these benefits.
2.1.1 IR Receiver
Our IR receiver is an off the shelf product manufactured by Vishay Semiconductors model no.
TSOP38338. It has a number of characteristics that make it well suited to our project. It has a field of
view of 45° which allows to have directionality in our communication. Additionally, it has noise filtering
capabilities built in, which is important for our application since we have to deal with a lot of
environmental IR radiation. Alternatively, we could have designed our own IR receiver, but the
TSOP38338 met all our requirements and saved us a lot of time over rolling our own circuit. Figure 2
shows the internal design of the IR receiver.
Figure 2: TSOP38338 Schematic (from manufacturer datasheet)[5]
2.1.2 IR Transmitter
The IR transmitter consists of two components: a high-powered IR LED and a plano-convex lens which
focuses the light emitted by the LED into a beam, allowing us to transmit at ranges greater than would
be possible with the bare LED. The lens must be paired with the LED so that given the LED’s angle of half
intensity, with the LED at the lens’s focal point, the lens spans the most intense part of the LED’s light, as
is illustrated by Figure 3. The relationship between the lens’s diameter D, the LED’s angle of half
intensity a, and the focal length f is expressed by Equation 1. Alternatively, we could have used an IR
specific MCU dedicated to transmission purposes. This would have freed up CPU cycles on our main
MCU but would have also added to the cost and complexity of our system. Additionally, we made a
change to our design from its initial form. We initially had a 100Ω resistor in series with our LED, but
after doing some reading on designs people have used this LED in, it turns out that in IR communication,
4
the duty cycle of the signal is low enough that you can run the LED without a resistor without burning it
out. This allows it to draw more current and transmit at a higher intensity, greatly increasing its range.
Figure 4 shows the manufacturer’s recommended circuit for our chosen receiver.
𝑓(𝐷, 𝑎) =𝐷
2tan(𝑎) (1)
Figure 3
Figure 4: TSOP38338 Recommended Circuit (from manufacturer datasheet)[5]
2.2 Microcontroller
We used the Atmega 1284 to control our circuit. This microcontroller wound up being very well suited to
our project. It had ample I/O pins for everything that we needed, with pins to spare so there is plenty of
room to grow. Additionally, the support for SPI and I2C made communicating with our SPI and I2C
devices (our LCD controller communicates over SPI and our IMU communicates over I2C) relatively
simple. The onboard timers allow us to perform modulation of the transmitter signal without the need
for any additional hardware. Finally, the biggest benefit that the Atmega 1284’s architecture is fairly
similar to the to the AVR parts used by Arduino, so we were able to use the Arduino core (see Figure 5
for pin mappings) with our microcontroller. This had two benefits to us: it allowed us to use the Arduino
libraries and development environment which are well documented and easy to use, and it also allowed
us to write code that could be tested on Arduino hardware which has features that our device does not,
such as a serial out for logging purposes. The Atmega1284 wound up being a safe choice for our project
5
is it is very feature packed, but we found that we did not need all the pinouts and features that it has
available so in future iterations we would consider using a simpler and cheaper microcontroller.
Figure 5: Atmega1284 Arduino Pin Mappings [6]
2.3 Input
Overall, we wanted the user to have minimal input into our system as to minimize its distractive
potential on the road. For most of our hazards we are relying on data from the IMU combined with our
Hazard Detection algorithm to automatically detect and trigger a propagating message. With other
hazards that we believe can benefit from manual entry from the user, we have designed a pad of 5
buttons for the user to interact with.
2.3.1 IMU
When making our design decisions as to what sensors to put onto our device for the automatic
detection of messages, our priority was for an accelerometer. We chose to use the MPU9255 as it had
not only a 3-axis accelerometer, but also a 3-axis gyroscope and 3-axis digital compass that we could use
for more data when we added detection of other hazards in the future. The IMU communicated with
our ATMEGA 1284 on I2C interface, and could be sampled at a rate much higher than our required
100Hz. Figure 6 contains IMU with its pins in our circuit schematic.
6
Figure 6: IMU Schematic
2.3.2 Buttons
We decided on a strip of 5 buttons for manual entry of other preset hazards to keep the user
interactions with our device extremely simple. Other things we considered were touchscreens or
number pads, yet those would require more attention to the device than we wanted. One of our only
requirements was that we wanted to be sure that they gave a tactile push as a user could be sure that
they had triggered a message without looking at their input.
2.4 Output
2.4.1 Speaker
We decided to use a speaker to interface with the driver because it follows the standards of many other
driver-awareness tools currently implemented into vehicles like blind-spot sensors or lane departure
sensors which use auditory notifications for the driver. Because we only wanted to vary the duration
and volume of the speaker, the “Large Piezo 3kHz Alarm” that we picked was a smart choice because we
simply had to run a voltage (3.3-18V) through it to produce the sound we wanted. We set out a sound
goal of at least 70 dB which we believed would be plenty to alert the driver with the ambient noise in a
car as well as music playing at an average volume.
2.4.2 LCD
The LCD we wound up using is a part out of the Nokia 5110. We chose this display because it is compact,
high contrast, and cheap. The display is driven by the PCD8544 controller which allows us to update the
entire framebuffer relatively easily. The controller communicates with our microcontroller over the SPI
protocol, so running the display Is simple given our choice of microcontroller. The display has a
Resolution of 84x48 pixels which allows us to display rich and easily distinguished icons as well as text.
Alternatively, we could have used a higher resolution display, but we would not have found much
benefit in more pixels given that the 84x48 resolution was sufficient to display both icons and text.
7
2.5 Power
2.5.1 Cigarette Lighter Adapter
The cigarette lighter adapter is the most common power connection found in cars in the US, so we
decided to use it as the source of power for our device. This has the benefit of giving us access to a lot of
power if we need it, since the car should be able to supply ample current if it either has charge in its
battery or is running. Alternatively, we could have used a USB connector to power our device, but those
are less common in older cars while the cigarette lighter is ubiquitous. We could have also used a
battery, but that would have complicated both our design and the use of our product since the user
would need to worry about charging the battery.
2.5.2 Voltage Regulator
Given that our device can run off a car’s 12V supply, power consumption is not a huge concern, but we
did do our best to keep it to a minimum since it is desirable to keep heat dissipation low. We used the
Texas Instruments LM1086IT-3.3, a linear regulator, for simplicity. The regulator’s simulated
characteristics can be seen in Figure 7.
2.6 Software
Our project relies on two important software implementations. The IR Message Protocol which
describes the way that the message data is formatted, sent, and propagated from IR Transmitter to
receiver, and the IMU Hazard Detection algorithm which is focused on detection of dangerous braking
patterns. These two components are described in more detail below.
2.6.1 IR Message Protocol
Our send and receive protocol is an at-least-once protocol. When a vehicle wants to alert other drivers
of an advisory the transmitter will spam a message continuously for 3 seconds which allows us to
combat the relatively high packet loss rate while also delivering vehicles who come into range of the
transmitter while sending. We have set a reasonable packet loss rate of around 47%, at a worst case
Figure 7: Voltage Regulator Simulation
8
following distance of 100ft. Under worst case conditions, where a driver in front of you begins breaking
hard, a car going 55mph, which is the speed limit on most US highways in urban environments, will
travel 100ft in 1.24s. With a driver reaction time of 1s [7], that leaves us 0.24s to transmit our message
for a driver to notice it before having driven 100ft. In 0.24s, with a message length of 50ms, we can send
at most 4 full messages. Since we would like to successfully alert the driver at least 95% of the time, the
chance of a message failing 4 times in a row must be less than 5%. With a packet loss rate of 47%, the
chance of 4 messages in a row being lost is 4.9%. Additionally, we have two parity bits (one for each half
of the message). If an error is detected (see Figure 15 in Appendix B), the packet will be thrown out. Our
protocol models the Sony IR protocol [8]. The code that creates packets can be found in Figure 16 in
Appendix B. We use pulse width encoding of data, so a 1 bit has a different pulse width than a 0 bit (see
Figure 9). Messages have 5 components, a header, a 4-bit message ID, a 4-bit hops to live field, a 6-bit
message field, and two bits for parity checking (seen in Figure 8). The message ID is a unique identifier
for each message and is used to suppress repeated messages. Hops to live is used for relaying and
propagating messages. When a message is received with a positive hops-to-live field, its hops to live
field is decremented and then it is sent backwards by the receiver. The message field is where the type
of message is encoded. We currently have 5 messages which can be sent: 1. Hard braking 2. Accident
ahead 3. Obstruction ahead 4. Ice/snow ahead 5. Rain ahead. Given the fact that we allocated 6 bits for
this field, we could potentially add more message types in the future.
Figure 9: Modulated Signal [8]
2.6.2 IMU Hazard Detection
Our IMU Hazard Detection algorithm uses the accelerometer data from the IMU in the X axis to
determine if a vehicle is braking at an unsafe rate. Firstly, we set an unsafe deceleration threshold that
will be used to trigger the message send, which we set at 0.8g or 7.98 m/s2. According to sources we
researched [7], under ideal conditions skilled drivers can achieve 1g deceleration, however on a public
road this is not realistic. Then we determined that we will sample the IMU at a rate of 100Hz which is
well within the range of being able to detect extreme decelerations. Using the readings from the
accelerometer, we will be keeping a time moving average of the last 10 readings. We selected the last
Figure 8: Message Format
9
10 readings as a compromise between the amount of smoothing we could do to counteract the noise
from the IMU sensor and our reaction time to the start of rapid deceleration, which with a sampling of
100 Hz will be 100ms. Finally, to determine whether to send a propagating hazard notification, we test
that if at any point that average moved higher than our set safe braking threshold of 7.98 m/s2 (See
Equation 2). Once we hit this threshold, the vehicle will send a message alerting other cars to brake
immediately.
𝑆𝑇+𝑆𝑇−1+⋯+𝑆𝑇−8+𝑆𝑇−9
10< 7.98𝑚/𝑠2 (2)
10
3. Design Verification
3.1 Communication
To verify our IR transmitter and receiver, we performed several tests, both indoors and outdoors. For
the outdoor tests, we set our device up on a sidewalk (see Figure 10) on a sunny day (which we believe
to be worst case conditions barring precipitation or inclement weather). The first test we ran was a
range test. We measured 100ft between our IR receiver and transmitter using measuring tape for the
first test. We then transmitted 50 packets from our device and printed out the results on the other
device. We repeated this test for 125ft and 150ft. We then looked at the number of packets that were
successfully received vs. the number of packets sent to determine the packet loss rate for each test.
Finally, we repeated the range tests with the receiver at various distances off-center from the
transmitter to determine the radius of the signal at each distance. We performed the same test, sending
several packets and counting how many were received. Any test with a packet loss rate of less than 47%
were deemed successful. The results for each of these tests can be found in Table 1.
Table 1
Test Packets Sent
Packets Successfully Received
Packet Loss Rate (%)
100ft centered 50 50 0
125ft centered 50 50 0
150ft centered 10 0 100
100ft, 4ft off center 10 10 0
100ft, 6ft off center 10 1 90
125ft, 2ft off center 10 9 10
125ft, 4ft off center 10 0 100
11
Figure 10: Testing Setup
3.2 Microcontroller
To verify our microcontroller block, we first verified the power requirement. To do this, we had to
connect our Arduino ISP programmer (which operates on 5V logic) to a logic converter in order to bring
the logic levels down to 3.3V. We then connected the MCU to our test setup with 3.3V powering it. We
programmed the MCU with simple code that is meant to blink an LED and verified that it did in fact
cause the LED to blink. We then repeated this procedure for each of the 16 I/O pins to verify their
output functionality. Then we connected buttons to the pins in input mode to verify their input
functionality. To test the PWM functionality, we varied the effective voltage on the LED which produced
the expected dimming functionality. Finally, to test the I2C functionality, we connected our IMU to the
I2C pins and verified that we could read from it. See Figure 5 for pin mappings.
3.3 Input
The main requirements for the Input Block as seen in Table 3 in Appendix A, that we needed to test
were for the range and sampling rate of the IMU. Our set requirements were that the range needed to
be at least 2g and the sampling rate would be at least 100 Hz. To verify this first requirement, we
followed the procedure and simply induced these ranges through accelerating the IMU quickly along the
Y axis. This experiment is seen Figure 17 in Appendix C, where we can confirm our ability to measure up
to 2g along the preset axis. Secondly, we did a sampling test by simply counting the number of samples
that we could receive in a certain amount of time. During our test, we read from the IMU 201 times
within 1000ms, thereby yielding a sampling rate of 201Hz, well beyond our requirement. This data is
seen graphed in Figure 18 in Appendix C.
12
3.4 Output
The main verification needed for the speaker was the dB minimum that our device required to
effectively notify the driver. As we needed above 70dB, we originally set out to run the speaker at 12V.
However even at 1 meter at 12V, the speaker produced a tone > 100 dB. As this was too loud for our
purposes, we attempted to run the speaker at 3.3V like the rest of the circuit and still hit above 70 dB.
We used an iPhone decibel meter at 1 meter away to measure the alarm (Figure 19 in Appendix C), and
could achieve a max reading of > 84.7dB. Also seen is an average of 73.4 dB even with the alarm only
periodically being sounded.
To verify our LCD, we connected it to our prototype and loaded several images on it. We first loaded an
icon with 84x48 resolution to verify that we were successfully addressing every pixel in the framebuffer.
We then loaded a black image and then a white image to verify that we could display both black and
white pixels.
3.5 Power
To verify our power requirement, we connected the entire circuit to an ammeter, powered it up, and
loaded the MCU with code that runs the speaker and transmitter constantly. We found that the power
draw for the entire circuit was under 20mA, well below our requirement. You can see the reading in
Figure 11 below.
Figure 11: Current Draw
3.6 Software
3.6.1 IR Message Protocol
To verify the first software requirement, we wrote a test program that measures the amount of time it
takes our prototype to send 1000 messages. We wanted to test the worst-case scenario, so we had our
prototype send messages all 1’s, since a binary 1 takes longer to send with our pulse width encoding
scheme. The test wound up taking 32.3 seconds to send 1000 messages (see Figure 12), which means it
took 32.3ms on average for each message, well below the target 50ms. We then wrote a test program
to verify our error detection. This program would send messages with flipped bits to our prototype,
which succeeded in detecting and discarding the erroneous messages while accepting and displaying the
13
correct messages. Lastly, we wrote a test program that spams messages with the same message ID. We
could verify that our prototype only displays the message once, discarding the repeat messages.
Figure 12: 1000 Message Test
3.6.2 IMU Hazard Detection
To verify our IMU Hazard Detection Algorithm, we attempted to induce rapid deceleration by braking in
one of our personal vehicles. For our personal safety and the wellbeing of the car, we did lower the
threshold to 0.6g as opposed to 0.8g which is what our design calls for. We ran several trials and used an
iPhone application that we wrote to record the raw accelerometer values of our phones to compare
against the positive or negative readings that we observed from our device. As seen in Figure 20 in
Appendix C, we received a positive reading from our device and can see graphically that we recorded
deceleration of greater than 0.6g for a period of greater than 100ms which confirms the positive output
of our device. In another trial seen in Figure 21 in Appendix C, we received a negative reading from our
device and in the graph, we can see that we never reached the threshold of 0.6g which confirms the
negative output of our device. We ran 6 trials in total, and in each the iPhone data confirmed the output
from our device.
14
4. Costs
4.1 Parts
A breakdown of the cost of our prototype is shown in Table 2 below.
Table 2 Parts Costs
Part Vendor Quantity Cost (Prototype)
Cost (Bulk)
IR Receiver Vishay Semiconductor TSOP38338
Digikey 5 $5.60 $2.05
IR Transmitter Vishay Semiconductor TSAL6100
Digikey 1 $0.57 $0.13
User Input Buttons 4Pin DIP Micro PCB tactile Push Button
Amazon 5 $5.29 $5.29
IMU XYG-Module Inertial Measurement Unit MPU9255
Amazon 1 $21.96 $21.96
Microcontroller Microchip Technology ATMEGA1284-PU
Digikey 1 $5.15 $4.27
LCD Display Nokia 5110 Graphic LCD 84x48
Sparkfun 1 $9.95 $8.96
Speaker Large Piezo 3KHz Alarm
Sparkfun 1 $2.95
$2.66
Voltage Regulator Texas Instruments LM1086IT-3.3/NOPB
Digikey 1 $1.67 $0.82
12V Power ROHS Car Adapter Plug PRT-11474
Sparkfun 1 $0.50 $0.50
Transistors STMicroelectronics STN3NF06L
Digikey 2 $0.43
$0.36
Resistors (x4 10K, x1 10. X1 100), Capacitors (.33µF, .1 µF)
Digikey 8 $0.05 $0.03
PCB 100x100mm 2 Layer PCB Way 1 $10.00 $10.00
Total $64.12 $57.03
4.2 Labor
The second cost is our development cost, which we will estimate at $30 per hour, 10 hours per week,
and 16 weeks of development each for the two members of our group. (See Equation 3)
$30
ℎ𝑟∗10ℎ𝑟
𝑤𝑒𝑒𝑘∗ 16𝑤𝑒𝑒𝑘𝑠 ∗ 2 = $9600(3)
With our $9600 of development cost and 2 x $64.12 (the prototype cost of our board), we estimate our
total cost to be $9728.24. (See Equation 4)
$9600 + (2 ∗ $64.12) = $9728.24(4)
15
5. Conclusion
5.1 Accomplishments
In the end, our project met all the objectives and high-level requirements that we set out to fulfill at the
beginning of the semester including everything we detailed in our original design document. Major
technical objectives that were achieved included long range directional IR communication of at least
100ft with line of sight during the day which we exceeded when we achieved ranges of greater than
125ft. We also maintained a packet loss less than our predetermined 47%, usually achieving all or none
in terms of packets within the ranges that we tested. Finally, our IMU Hazard Detection could
determine whether a vehicles deceleration exceeded our preset safe value and reacted by sending a
message to alert trailing drivers. Overall this allowed for the automatic detection and directional
communication of hazards that our project set out to accomplish.
5.2 Safety and Ethics
Working on a project that involves inherently involves a lot of safety considerations that we researched
and implemented into our design. Firstly, we followed the example of existing driving awareness tools
(i.e. blind spot sensors, lane departure sensors, etc.) and limited the driver interacting with our device to
the auditory notifications and icons displayed on the screen to minimize driver distraction. The input
buttons are only to be used by a front seat passenger which is reinforced with a warning message that is
displayed on the device’s startup. We also attempted to mitigate false positives with several error
checking techniques and false negatives with redundancies built in to our transmissions. At the same
time, we limited the spamming potential with an at-most-once delivery behavior on the receiving end,
as well as software timeouts to limit the amount of sends during a specified time from one device.
Another risk factor that we made sure to mitigate is IR radiation. Though some IR sources such as IR
lasers can cause damage to the eyes, the TSAL6100 LED that we used is safe for the naked eye.
According to semiconductor manufacturer Vishay Intertechnology Inc., “nearly all LEDs are far below the
Exempt limits.” [9]
Our safety risks and mitigations follow the IEEE code of ethics first point, “to accept responsibility in
making decisions consistent with the safety, health, and welfare of the public, and to disclose promptly
factors that might endanger the public or the environment” [10]. We believe that the benefits provided
through increased driver awareness outweigh the potential risk of driver distraction given our
distraction mitigation techniques.
5.3 Future Work
To continue expanding on the progress we made creating and iterating on this project, we have outlined
several paths that we can explore to enhance our device. Firstly, we would like to have more real-world
testing with actual vehicles on the road which was difficult during this semester both for safety and
logistical difficulties. Secondly, we would like to improve the overall range and versatility or our IR
communication. A range of 300ft would allow our device to communicate even for vehicles following
the 3 second rule at speeds up to 65 mph, which would cover much of the U.S. road infrastructure. Also,
16
we would still like our IR communication to work through several weather conditions like fog, rain, etc.
and different angles to account for roads of different elevations and curvature.
19
References [1] US Department of Transportation, ‘2015 Motor Vehicle Crashes’, 2016. [Online].
Available: https://crashstats.nhtsa.dot.gov/Api/Public/ViewPublication/812318
[2] Centers for Disease Control and Prevention, ‘Health, United States 2015’, 2016. [Online].
Available: https://www.cdc.gov/nchs/data/hus/hus15.pdf#019
[3] Law Offices of Michael Pines, APC, ‘Top 25 Causes of Car Accidents’, 2016. [Online].
Available: https://seriousaccidents.com/legal-advice/top-causes-of-car-accidents/
[4] Mercedes-Benz Luxury Cars, ‘Active Blind Spot Assist’, 2016. [Online].
Available: https://www.mbusa.com/mercedes/technology/
[5] Mouser, ‘IR Receiver Modules for Remote Control Systems’, 2017. [Online].
Available: http://www.mouser.com/ds/2/427/tsop381-542565.pdf
[6] Protoneer, ‘The Unofficial Arduino Pinout Diagram’, 2017. [Online].
Available: http://blog.protoneer.co.nz/wp-content/uploads/2013/05/atmega1284_pinout.png
[7] NACTO, ‘Vehicle Stopping Distance and Time’, 2017. [Online].
Available: http://nacto.org/docs/usdg/vehicle_stopping_distance_and_time_upenn.pdf
[8] SB Projects, ‘Sony SIRC Protocol’, 2017. [Online].
Available: http://www.sbprojects.com/knowledge/ir/sirc.php
[9] Vishay Semiconductors, ‘Eye Safety Risk Assessment of Infrared Emitting Diodes’, 2015. [Online].
Available: http://www.vishay.com/docs/81935/eyesafe.pdf
[10] Institute of Electrical and Electronics Engineers, ‘IEEE Code of Ethics’, 2017. [Online]. Available:
http://www.ieee.org/about/corporate/governance/p7-8.html
20
Appendix A Requirement and Verification Table Table 3 System Requirements and Verifications
Block Requirements Verification Verification status
(Y or N)
Communication Must be able to correctly receive a message from 0-100ft during daylight and night with good visibility and with optics.
1. Place IR Receiver and lens assembly exactly 100ft downrange from IR Transmitter (Once at night and once during the day).
2. Send message with random data.
3. Ensure message was received correctly.
Y
Must be able to correctly receive a message from 0-30ft during daylight and night with good visibility and without optics.
1. Place IR Receiver and lens assembly exactly 30ft downrange from IR Transmitter (Once at night and once during the day).
2. Send message with random data.
3. Ensure message was received correctly.
Y
Must maintain at most a 47% packet loss rate at a 16-bit message size.
1. Place IR Receiver exactly 100ft downrange from IR Transmitter.
2. Send 50 messages with predefined data.
3. Ensure at least 53% of the messages were received by comparing sent and received.
Y
Must have a field of view between 25° and 180°.
1. Place IR Receiver exactly 10ft downrange from IR Transmitter.
2. Move the IR Transmitter 2.22ft in a perpendicular direction, creating a ~12.5°angle.
3. Send a message and ensure that it was received.
Y
Must be able to transmit one message of size 16 bits in under 50ms
1. Write program to transmit/receive 1000 messages.
2. Run program and use profiling tool on the
Y
21
Table 3 System Requirements and Verifications
receiving side to time how long it takes.
Input Buttons must be momentary and be tactile so the User knows it is pushed.
1. Press button. 2. Should feel a sharp, tactile
click. 3. Check continuity of
electrical path through button (there should be continuity).
4. Release button. 5. Check continuity of
electrical path through button (there should be no continuity).
y
IMU must be able to measure acceleration/deceleration from +60 ft/s2 to -60 ft/s2 in X and Y axes.
1. Connect IMU to MCU. 2. Start measurement of
acceleration in all axes. 3. Move MCU 1ft in less than
120 ms. 4. Verify that the acceleration
reading is over 60ft/s2 5. Move MCU 1ft in less than
240 ms. 6. Verify that the acceleration
reading is over 30ft/s2 7. Repeat for each axis.
Y
IMU must be able to measure at a resolution of 0.1 ft/s2 [15] and maintain a sample rate of 100Hz.
1. Connect IMU to MCU. 2. Start measurement of
acceleration in all axes. 3. Leave IMU static. 4. Compare accuracy of
measurement of gravitational acceleration to 32.2ft/s2.
5. Verify that at least 100 distinct samples were collected in 1 second.
Y
IMU must be able to communicate on I2C interface and draw less than 10mA at 3.3V.
1. Connect to I2C driver. 2. Connect ammeter. 3. Start measurement. 4. Measure current. 5. Place IMU on surface
parallel to ground, do not move IMU.
6. Verify that one axis of data reads gravitational
Y
22
Table 3 System Requirements and Verifications
acceleration and that the others read 0.
Microcontroller Must have sufficient IO pins to talk to 5 IR receivers, 1 LED, an I2C bus (2 pins), 5 buttons (3 pins), speaker (1 pin), and display (5 pins) (16 total). Must have PWM for at least 2 pins.
1. Verify that MCU has at least 16 I/O pins.
2. Drive each pin high and low and read from each pin.
3. Write high and low to each pin and verify output using a multimeter.
4. Verify that MCU has at least two PWM capable pins.
Y
Must work with a 3.3V power source and consume less than 100mA.
1. Connect MCU to 3.3V source and ammeter.
2. Measure current. 3. Load MCU with program. 4. Verify output of program.
Y
Output LCD must be larger than 1” and be able to display at least a 64*48 resolution black and white icon.
1. Load icon onto display and verify that entire icon is visible
2. Connect to controller and load driver.
3. Load black and white image onto screen.
4. Verify that there are black and white pixels.
Y
LCD must draw less than 500ma with a 3.3V source when display is on with backlight on.
1. Connect ammeter and measure current.
Y
Speaker must be at least 50-70 dB and be able to produce a tone at 3kHz.
1. Connect to 12v source. 2. Measure volume with
decibel meter. 3. Measure frequency of
sound emitted with a spectrum analyzer.
Y
Speaker must work with a 3.3V or 12V power source at less than 50mA.
1. Connect to 3.3v source. 2. Connect ammeter 3. Leave connected for 2
minutes. 4. Verify that a tone is
emitted and that the unit is not hot.
5. Measure current.
Y
Power Voltage regulator must be 1. Connect to bench power Y
23
Table 3 System Requirements and Verifications
able to take an input of 12V±10% and output 3.3V±10% and must be able to output 0-1A.
supply and voltmeter. Vary input voltage and measure input and output voltages.
2. Connect to bench power supply and wire a potentiometer in series.
3. Connect ammeter. 4. Turn potentiometer to
maximum resistance. 5. Lower resistance until the
ammeter reads 1A.
Circuit must draw less than 3.755±1W
1. Connect circuit to power supply and ammeter.
2. Start circuit operation. 3. Measure current draw of
circuit.
Y
Software IR message protocol notifies user only once when receiving the same message more than once.
1. Spam messages with varying message IDs.
2. Verify that only one notification is made to the user for each message ID.
Y
In case of single flipped bit, data should be rejected by IR message protocol.
1. Send messages with no error.
2. Verify that message is accepted.
3. Send messages with error. 4. Verify that message is not
accepted.
Y
Data that crosses acceleration threshold triggers a message send event.
1. Provide simulated IMU input that contains a fake hard braking event.
2. Verify that the function that sends a message is called.
Y
Pressing a button sends a message for the corresponding advisory.
1. Press a button on one unit. 2. Verify that the correct
advisory is set on the other unit.
3. Repeat for each button.
Y
Displays a different icon for each advisory.
1. A. Simulate receiving a message for each type of advisory.
Y