Final Report Team 13 – The Smart Dashboard CALVIN COLLEGE ENGINEERING DEPARTMENT

advertisement
CALVIN COLLEGE ENGINEERING DEPARTMENT
SENIOR DESIGN PROJECT
Final Report
Team 13 – The Smart Dashboard
Andrew DeZeeuw, Micah Dykstra, Nathan Gelderloos
May 8, 2013
© 2013, Calvin College and Andrew DeZeeuw, Micah Dykstra, Nathan Gelderloos
Executive Summary
The purpose of this senior design project is to design and prototype a set of car safety systems that
an automotive manufacturer could easily install. The team has split the project into three functions:
the rapid deceleration warning, speed limit indicator, and driver awareness sensor.
The goal of the rapid deceleration warning is to warn other cars that the driver is stopping
suddenly and that the other drivers should apply their brakes to avoid an accident. The prototype
of this function was able to prove the functionality of the system by using an accelerometer to
measure deceleration and prototype brake lights to output the pulsed signal.
The goal of the speed limit indicator is to provide an easy way to determine the speed limit on the
current road and display it to the driver to promote safe driving speeds and reduce both incidental
and intentional speeding. The prototype of this function was able to prove the functionality in a
two-mile radius around Calvin College. It uses a GPS to find the location of the vehicle and checks a
database of speed limits to determine and display the proper speed limit.
The goal of the driver awareness sensor is to monitor the driver and determine when the driver is
becoming less aware of the surroundings due to drowsiness. This system will then notify the driver
that corrective action is necessary to prevent possible accidents. The prototype of this function was
able to detect the driver’s face and eyes but was unable to detect blinks computationally. Video
output of light levels for the eyes showed the potential for blink detection, but the noise levels in
the system were too great to quantitatively detect blinks.
Table of Contents
1
Project Introduction ..................................................................................................................................................... 1
1.1
Problem Statement .............................................................................................................................................. 1
1.2
Project ....................................................................................................................................................................... 1
1.3
Team Members...................................................................................................................................................... 1
1.3.1
Andrew DeZeeuw ....................................................................................................................................... 1
1.3.2
Micah Dykstra .............................................................................................................................................. 2
1.3.3
Nathan Gelderloos ...................................................................................................................................... 2
1.4
2
3
4
Report structure ................................................................................................................................................... 2
Project Management ..................................................................................................................................................... 3
2.1
Team Organization .............................................................................................................................................. 3
2.2
Schedule Analysis ................................................................................................................................................. 3
2.2.1
Milestones...................................................................................................................................................... 3
2.2.2
Work Breakdown Schedule .................................................................................................................... 4
2.2.3
Schedule Assessment ................................................................................................................................ 5
2.3
Method of Approach............................................................................................................................................ 6
2.4
Risk............................................................................................................................................................................. 6
System Overview............................................................................................................................................................ 7
3.1
Rapid Deceleration Warning ........................................................................................................................... 7
3.2
Driver Awareness Sensor ................................................................................................................................. 8
3.3
Speed Limit Indicator ......................................................................................................................................... 8
Objectives and Requirements ................................................................................................................................. 10
4.1
Common Objectives and Requirements .................................................................................................... 10
4.1.1
Requirements ............................................................................................................................................. 10
4.1.2
Objectives..................................................................................................................................................... 11
4.2
Speed Limit Indicator ....................................................................................................................................... 11
4.2.1
Requirements ............................................................................................................................................. 11
4.2.2
Objectives..................................................................................................................................................... 12
4.3
Driver Awareness Sensor ............................................................................................................................... 13
4.3.1
Requirements ............................................................................................................................................. 13
i
4.3.2
4.4
Requirements ............................................................................................................................................. 14
4.4.2
Objectives..................................................................................................................................................... 15
Design Norms....................................................................................................................................................... 15
4.5.1
Caring............................................................................................................................................................. 15
4.5.2
Trustworthy ................................................................................................................................................ 15
4.5.3
Transparency ............................................................................................................................................. 16
Rapid Deceleration Warning ................................................................................................................................... 17
5.1
System Design...................................................................................................................................................... 17
5.1.1
Determining Vehicle Deceleration..................................................................................................... 17
5.1.2
Comparing Data......................................................................................................................................... 17
5.1.3
Flashing the Brake Lights ...................................................................................................................... 18
5.2
Hardware System Design ................................................................................................................................ 18
5.2.1
Accelerometer ............................................................................................................................................ 20
5.2.2
Microcontroller.......................................................................................................................................... 23
5.3
6
Rapid Deceleration Warning ......................................................................................................................... 14
4.4.1
4.5
5
Objectives..................................................................................................................................................... 13
Software System Design .................................................................................................................................. 26
5.3.1
Calibrating the Accelerometer ............................................................................................................ 26
5.3.2
Reading and Converting the Acceleration Data ........................................................................... 27
5.3.3
Comparing to Threshold and Signal Output .................................................................................. 27
5.3.4
Noise Consideration ................................................................................................................................ 27
Driver Awareness Sensor ......................................................................................................................................... 28
6.1
System Design...................................................................................................................................................... 28
6.1.1
Determining Prolonged Eye Closure ................................................................................................ 28
6.1.2
Alerting Driver ........................................................................................................................................... 28
6.2
Hardware System Design ................................................................................................................................ 28
6.2.1
Microcontroller.......................................................................................................................................... 30
6.2.2
Camera .......................................................................................................................................................... 31
6.2.3
Speaker ......................................................................................................................................................... 33
6.2.4
Facial Illuminator ..................................................................................................................................... 33
6.2.5
Voltage Regulator ..................................................................................................................................... 34
ii
6.3
7
6.3.1
Vision Library............................................................................................................................................. 35
6.3.2
Operating System ..................................................................................................................................... 36
6.3.3
Initialize System ........................................................................................................................................ 37
6.3.4
Read Image from Camera ...................................................................................................................... 37
6.3.5
Process Faces.............................................................................................................................................. 38
6.3.6
Process Eyes ............................................................................................................................................... 38
6.3.7
Determine Eye State ................................................................................................................................ 39
6.3.8
Determine If Alarm Should Sound ..................................................................................................... 40
Speed Limit Indicator ................................................................................................................................................. 41
7.1
System Design...................................................................................................................................................... 41
7.1.1
Determining Vehicle Location ............................................................................................................. 41
7.1.2
Finding the Speed Limit ......................................................................................................................... 42
7.1.3
Storing the Speed Limits ........................................................................................................................ 42
7.1.4
Outputting the Speed Limit .................................................................................................................. 43
7.2
Hardware System Design ................................................................................................................................ 48
7.2.1
GPS .................................................................................................................................................................. 49
7.2.2
Microcontroller.......................................................................................................................................... 52
7.2.3
Memory......................................................................................................................................................... 52
7.2.4
Outputs ......................................................................................................................................................... 53
7.3
Software System Design .................................................................................................................................. 58
7.3.1
Criteria .......................................................................................................................................................... 59
7.3.2
Alternatives ................................................................................................................................................. 59
7.3.3
Decisions ...................................................................................................................................................... 59
7.4
8
Software System Design .................................................................................................................................. 35
Initial Printed Circuit Board Design ........................................................................................................... 67
Integration and Testing ............................................................................................................................................. 68
8.1
Rapid Deceleration Warning ......................................................................................................................... 68
8.1.1
Testing Method .......................................................................................................................................... 68
8.1.2
Test Results ................................................................................................................................................. 69
8.2
Driver Awareness Sensor ............................................................................................................................... 70
8.2.1
Testing Method .......................................................................................................................................... 70
iii
8.2.2
Test Results ................................................................................................................................................. 71
8.2.3
Current Integration.................................................................................................................................. 72
8.3
9
Speed Limit Indicator ....................................................................................................................................... 73
8.3.1
Testing Method .......................................................................................................................................... 73
8.3.2
Test Results ................................................................................................................................................. 75
8.3.3
Current Integration.................................................................................................................................. 81
Business Plan ................................................................................................................................................................. 83
9.1
Business Strategy ............................................................................................................................................... 83
9.1.1
9.2
Customer ...................................................................................................................................................... 83
Marketing Study.................................................................................................................................................. 83
9.2.1
Competition ................................................................................................................................................ 83
9.2.2
Market Survey ............................................................................................................................................ 83
9.3
Cost Estimate ....................................................................................................................................................... 84
9.3.1
Prototype Budget...................................................................................................................................... 84
9.3.2
Production Budget ................................................................................................................................... 85
9.4
10
Estimated Profits ................................................................................................................................................ 87
Conclusions................................................................................................................................................................ 90
10.1
Accomplishments ............................................................................................................................................... 90
10.2
Missed Goals ......................................................................................................................................................... 90
10.3
Lessons Learned ................................................................................................................................................. 90
10.4
Future Developments ....................................................................................................................................... 91
11
Credits and Acknowledgements ....................................................................................................................... 92
12
References .................................................................................................................................................................. 93
iv
Table of Figures
Figure 1. Project Management Example ........................................................................................................................ 5
Figure 2. Weekly Work Load............................................................................................................................................... 5
Figure 3. RDW System Diagram......................................................................................................................................... 7
Figure 4. DAS System Diagram........................................................................................................................................... 8
Figure 5. SLI System Diagram............................................................................................................................................. 8
Figure 6. Microcontroller Architecture [42]............................................................................................................... 18
Figure 7. RDW Hardware Diagram ................................................................................................................................. 19
Figure 8. Typical Brake Light Circuit ............................................................................................................................. 20
Figure 9. RDW Software Diagram ................................................................................................................................... 26
Figure 10. Noise vs. Output Data Rate – Full Resolution [57] ............................................................................. 27
Figure 11. DAS Hardware Diagram ................................................................................................................................ 29
Figure 12. IR LEDs before filter removal ..................................................................................................................... 33
Figure 13. IR LEDs after filter removal ......................................................................................................................... 33
Figure 14. Facial Illuminator Schematic....................................................................................................................... 34
Figure 15. Facial Illuminator from Driver's Perspective ....................................................................................... 34
Figure 16. Facial Illuminator Close-up.......................................................................................................................... 34
Figure 17. DAS Software Diagram .................................................................................................................................. 37
Figure 18. Initial Eye Detection ....................................................................................................................................... 39
Figure 19. Desired Eye Detection.................................................................................................................................... 39
Figure 20. Eye Locations based on Proportion of Face .......................................................................................... 39
Figure 21. Average Eye Brightness Showing Blinks................................................................................................ 40
Figure 22. Average Eye Brightness with Movement ............................................................................................... 40
Figure 23. Breakdown of Road Types [17] ................................................................................................................. 43
Figure 24. Design 1 with user following 45 mph speed limit.............................................................................. 44
Figure 25. Design 1 with user exceeding 45 mph speed limit ............................................................................ 44
Figure 26. Design 2 with user following 45 mph speed limit.............................................................................. 44
Figure 27. Design 2 with user exceeding 45 mph speed limit ............................................................................ 44
Figure 28. Design 3 with user following 45 mph speed limit.............................................................................. 45
Figure 29. Design 3 with user exceeding 45 mph speed limit ............................................................................ 45
v
Figure 30. Design 4 with user following 45 mph speed limit.............................................................................. 46
Figure 31. Design 4 with user exceeding 45 mph speed limit ............................................................................ 46
Figure 32. Design 5 with user following 45 mph speed limit.............................................................................. 46
Figure 33. Design 5 with user exceeding 45 mph speed limit ............................................................................ 46
Figure 34. Normal Speedometer [18] ........................................................................................................................... 47
Figure 35. Speedometer with Speed Limit of 40 Miles Per Hour [18] ............................................................. 47
Figure 36. SLI Hardware Diagram .................................................................................................................................. 49
Figure 37. Charlieplexing RGB LEDs circuit ............................................................................................................... 54
Figure 38. First Implementation of the LED Display .............................................................................................. 56
Figure 39. Second Implementation of the LED Display ......................................................................................... 56
Figure 40. Third Implementation of the LED Display ............................................................................................ 57
Figure 41. Final Implementation of the LED Display with Servo for Speedometer Arrow..................... 57
Figure 42. SLI Software Diagram .................................................................................................................................... 58
Figure 43. Boxes showing the size of a single part of the database .................................................................. 60
Figure 44. Current vehicle location with the bounding triangle ........................................................................ 63
Figure 45. Bounding triangle with all database points in the area ................................................................... 64
Figure 46. Speed limit data shown for points within the bounding triangle ................................................ 65
Figure 47. Initial PCB Layout. Parts listed in Table 16 ........................................................................................... 67
Figure 48. RDW Scale Model Interior ............................................................................................................................ 68
Figure 49. RDW Scale Model Exterior ........................................................................................................................... 68
Figure 50. Prototype Model............................................................................................................................................... 69
Figure 51. RDW Latency Test ........................................................................................................................................... 69
Figure 52. Display from Final Prototype...................................................................................................................... 73
Figure 53. GPS Accuracy Data for the First Test ....................................................................................................... 76
Figure 54. Second GPS Test, Mapped to Google Maps ............................................................................................ 77
Figure 55. Third GPS Accuracy Test, Mapped to Google Maps ........................................................................... 77
Figure 56. Third GPS Accuracy Test, Close-Up On Downtown Ann Arbor..................................................... 77
Figure 57. Histogram of Timing Data for GPS Extraction ..................................................................................... 78
Figure 58. Histogram of Timing Data for Triangulation ........................................................................................ 79
Figure 59. Histogram of Timing Data for microSD Card Read ............................................................................ 80
Figure 60. MicroSD Card Read for all files within the database based on order the files are stored . 80
vi
Figure 61. Time to read from the microSD card based on location of file ..................................................... 81
Figure 62. Final implementation of the SLI ................................................................................................................ 82
Figure 63. Break-Even Analysis for Year 1 of The Smart Dashboard ............................................................... 88
vii
Table of Tables
Table 1. Signals used in Figure 7 ..................................................................................................................................... 19
Table 2. Accelerometer Alternatives ............................................................................................................................. 22
Table 3. Accelerometer Decision Matrix ...................................................................................................................... 23
Table 4. Microcontroller Alternatives ........................................................................................................................... 24
Table 5. Microcontroller Decision Matrix .................................................................................................................... 25
Table 6. Signals Used in Figure 11 .................................................................................................................................. 29
Table 7. DAS Microcontroller Alternatives ................................................................................................................. 30
Table 8. DAS Microcontroller Decision Matrix .......................................................................................................... 31
Table 9. DAS Camera Alternatives .................................................................................................................................. 32
Table 10. Vision Library Alternatives ........................................................................................................................... 36
Table 11. Survey responses for each design............................................................................................................... 48
Table 12. Signals Used In Figure 36 ............................................................................................................................... 49
Table 13. GPS Alternatives................................................................................................................................................. 51
Table 14. Decision Matrix for GPS Selection............................................................................................................... 51
Table 15. Line Assignments for each RGB LED ......................................................................................................... 55
Table 16. Table of Components for Figure 47 ........................................................................................................... 67
Table 17. Frame Rate Test Results from Kernel Update ....................................................................................... 72
Table 18. Frame Rate Test Results for Overclocking .............................................................................................. 72
Table 19. Frame Rate Test Results from GPU Memory Allocation .................................................................... 72
Table 20. Prototype Budget............................................................................................................................................... 85
Table 21. Expected Variable Costs for the Production Model ............................................................................. 86
Table 22. Expected One-Time Fixed Costs for the Production Model ............................................................. 86
Table 23. Amortized One-Time Costs............................................................................................................................ 86
Table 24. Fixed Annual Costs ............................................................................................................................................ 87
Table 25. Estimated Profits for the Production Model .......................................................................................... 88
viii
1
Project Introduction
1.1
Problem Statement
According to a recent study by the National Highway Traffic Safety Administration, driver
distraction causes 80% of all automotive accidents [1]. However, most of the safety features that
automotive makers are introducing to vehicles today are doing nothing to address this staggering
statistic. In fact, new safety features often go the other way, encouraging more aggressive and
distracted driving because they make drivers feel invincible. More airbags will help to limit the
damage from an accident, but they will not help to prevent the accident from occurring in the first
place. In order to avoid accidents, drivers need to feel more responsibility and pay better attention
to their surroundings.
1.2
Project
The Smart Dashboard team proposes to address this problem by designing and building three
automotive safety functions designed to increase driver alertness and decrease the number of
accidents caused by driver distraction. The first function is a system that flashes (or pulses) the
brake lights of the vehicle when the deceleration of the vehicle is above a certain rate. This should
decrease the frequency of rear-end collisions by alerting the following driver that the vehicle ahead
of them is decelerating rapidly. The second function is a system that finds the speed limit of the
road the vehicle is currently on and displays that information on the speedometer. This should
decrease speeding by displaying to the driver both their speed and the legal limit in the same place.
The third function is a system that monitors the driver for signs of falling asleep. If the system
determines that the driver is falling asleep, the system should issue a warning to the driver so that
the driver can wake up.
1.3
Team Members
The senior design team is comprised of three engineering students in the electrical and computer
concentration.
1.3.1
Andrew DeZeeuw
Andrew is a senior engineering student in the electrical and computer
concentration at Calvin College. Andrew is also planning to minor in mathematics.
He is currently working at Calvin as a grader for the computer science department
and a tutor for calculus. Andrew has had research experience in each of the two
previous summers. In the summer of 2011, he worked in the AOSS department at
the University of Michigan, and in the summer of 2012, he worked in the ECE
department at Carnegie Mellon University. Andrew is involved with various music
groups on campus, from playing percussion in the Calvin Wind Ensemble to leading worship for
Calvin’s chapel services. In addition to music, Andrew also enjoys playing sports recreationally and
follows Michigan football. After graduation, Andrew will attend the University of Michigan in Ann
Arbor, MI, to pursue a Ph. D. in Computer Science and Engineering.
1
1.3.2
Micah Dykstra
Micah is a senior engineering student in the electrical and computer concentration
at Calvin College. He is also pursuing a minor in computer science. Micah is
currently working at Calvin as a grader for a software engineering class. He has
worked as an intern at Shape Corporation in Grand Haven, Michigan in the
summer of 2012. There he gained a greater appreciation for the electrical
engineering design process. Micah especially enjoys writing code and designing
user interfaces for software applications and he hopes that he can apply these
skills to the project. In his free time, Micah also enjoys watching hockey and following the Detroit
Red Wings. Micah has accepted an engineering position with Apex Controls in Hudsonville, MI.
1.3.3
Nathan Gelderloos
Nathan is a senior engineering student in the electrical and computer
concentration at Calvin College. He is also pursuing a computer science minor.
Nathan has worked at GE Aviation Systems in Grand Rapids, MI as an engineering
intern. He has also created a widely used program for scheduling classes at Calvin
College, along with a handful of other colleges. In his free time, he enjoys Ultimate
Frisbee and playing the guitar.
1.4
Report structure
This report explains in detail the project management, system overview, objectives and
requirements, system architectures, integration and initial testing, and business plan.
The project management section (Chapter 2) discusses how the team assigns tasks and operates.
The system overview section (Chapter 3) provides a brief overview of the project and background
information on the project areas. The objectives and requirements section (Chapter 4) contains the
end requirements for the project as well as any objectives that the team should achieve. The system
architecture sections (Chapters 5-7) discuss each function in depth, providing design criteria,
alternatives and decisions at the system, hardware, and software levels. The integration and testing
section (Chapter 8) discusses the testing process for each function and includes test results. The
business plan section (Chapter 9) analyzes the production model, with an anticipated budget for
both the prototype and the production model. The business plan considers the market as a whole,
and identifies competition in the marketplace for our product. The report concludes with a section
(Chapter 10) summarizing the accomplishments of the team and the setbacks faced throughout the
year.
2
2
Project Management
2.1
Team Organization
Each team member is in charge of one function for the project. Micah is in charge of the rapid
deceleration warning, Nathan is in charge of the driver awareness sensor, and Andrew is in charge
of the speed limit indicator. The team expects each member to help with all three functions, but the
majority of their work will be on the function they are leading.
Team meetings provide updates on each function from the member that leads that particular
function. While team meetings were not regularly scheduled, they occurred about once per week
with all team members present. While team members were together, discussing and thinking
through problems occurred frequently. Team members could offer assistance on high-level issues,
although the specific design decisions were fully analyzed by the member in charge of that
particular function.
Micah is the team webmaster, Andrew is the content editor for written documents, and Nathan is
the style editor for written documents. The team uses Google Drive extensively to organize the
team, and allows multiple members to work on the same document on different computers
simultaneously. Each team member has a notebook on Google Drive that is a collection of tests,
code, and written sections that can be accessed by any member at any time. This openness allows
each member to be aware of what the other members are working on and have already
accomplished.
2.2
Schedule Analysis
A large project like this needs a schedule so that the team meets deadlines and continues to make
progress. For the duration of the project, the team gave weekly status reports to their project
advisor, Professor Steve VanderLeest. These updates helped the team realize what each team
member had accomplished and hoped to accomplish in upcoming weeks.
2.2.1
Milestones
The major milestones of this project were software development, prototype construction, and final
testing. These milestones provided the team with motivation to accomplish tasks on time.
2.2.1.1 Software
The first milestone was the development of the software for each of the three functions. The initial
iteration of this process was simply to achieve communication between the different components of
the system. The next step was to test that the software meets the basic requirements of the system.
At this point, the team could integrate the software into a working prototype of the system. The
team had hoped to accomplish initial software development by 1/31/2013.
However, the team fell behind in this area, especially with regard to development of the Driver
Awareness Sensor. The software for this system still does not meet all the requirements. The
3
software for the Rapid Deceleration Warning achieved initial functionality by 2/1/2013 and the
software for the Speed Limit Indicator achieved initial functionality by 2/8/2013. These delays
were difficult for the team to overcome.
2.2.1.2 Prototype
The second milestone was the construction of the prototype for each of the three functions. The
initial iteration of this process was to achieve a simple ‘mock-up’ or bench-top model that provided
a proof of concept. The next step was to build a prototype that resembles the final product in both
aesthetics and its function. The team hoped to be at this stage of the project by 3/31/2013.
The team was not able to construct a working prototype of the Driver Awareness Sensor, although
it was able to demonstrate some functionality by 2/22/2013 and it constructed the infrared LED
display by 3/29/2013. For the Rapid Deceleration Warning, the team constructed an initial scale
model by 2/15/2013, but it took until 4/12/2013 to assemble a working prototype of the system.
The team was able to build and test a basic prototype of the Speed Limit Indicator by 2/22/2013.
However, the team completed the final version of the prototype on 4/12/2013. The time between
constructing initial and final prototypes was longer than the team had expected.
2.2.1.3 Final Testing
The third milestone was the final testing of each of the three functions. At this time, the prototypes
of each of the systems should have been complete. These tests were to ascertain whether the safety
functions met the requirements and objectives. The team hoped to begin final testing by
4/31/2013.
Although the team did not achieve the intended functionality for the Driver Awareness Sensor, they
were able to test some features of the system as early as 4/5/2013. The team was not able to
perform as many tests as it would have liked for the Rapid Deceleration Warning, but they were
able to complete a few requirement driven tests by 5/3/2013. Finally, for the Speed Limit
Indicator, testing began early and often for the crucial components of the system. Final testing was
completed for this system by 4/26/2013, ahead of schedule.
2.2.2
Work Breakdown Schedule
The team initially created a work breakdown schedule to track progress of the project. It was
separated by the major headings of ‘Reports/Presentations’, ‘Design’, and ‘Testing’. Each of the
project functions then further subdivided each of these sections. The original work breakdown
schedule of the project is available at The Smart Dashboard’s website:
http://www.calvin.edu/academic/engineering/2012-13-team13/docs.html.
This system broke down rather quickly, however, as the team did not maintain the schedule over
the course of the project. Instead, the team shifted to Google Drive to manage their project. Figure
1 shows a portion of a Google spreadsheet that the team utilized. From left to right, the spreadsheet
contains weekly information about the date, the hours the team member worked for the week, the
goals they accomplished during the previous week, the goals the still need to accomplish, and the
division of labor throughout the week.
4
Figure 1. Project Management Example
Each member of the team had a section of this spreadsheet. This was very helpful to the team to be
able to keep track of what each team member was working on. The same spreadsheet also
contained a weekly work load chart as shown in Figure 2 so that the team could visually monitor
who was doing what percentage of the total work per week and overall. This encouraged all team
members to contribute to the project.
Figure 2. Weekly Work Load
2.2.3
Schedule Assessment
As of 12/6/2012, the team had logged about 216 hours of work. The team had completed initial
research estimated at 17 hours per function. The team had also completed the feasibility study,
which they estimated to take approximately 130 hours. The team had also completed other
deliverables estimated to take 30 hours. Therefore, the total estimated time for the tasks to be
completed was 201 hours. Compared to the 216 hours of actual work to accomplish these tasks, the
error percentage in these estimates was only about 7%.
As of 4/19/2013, the team had logged about 570 hours of work. The team has completed the
system design and initial prototyping estimated at 43 hours per function. The team has also
completed the initial software estimated at 44 hours per function. Finally, the team had also
5
completed some initial testing estimated at 60 total hours. Therefore, the total estimated time for
those tasks completed was 321 hours. Compared to the 354 hours of actual work to accomplish
these tasks since the last update, the error percentage in these estimates was approximately 9%.
The original work breakdown schedule predicted 627 hours, which included the tasks of printed
circuit board design and construction and enclosure design and construction. However, the team
has logged approximately 730 hours and has accomplished neither of these tasks. The team
obviously underestimated the scope of the project and the amount of work required to take the
project to completion. A breakdown of the completed tasks is available at The Smart Dashboard’s
website: http://www.calvin.edu/academic/engineering/2012-13-team13/docs.html.
2.3
Method of Approach
The team’s method of approach is an iterative process. Each member did initial research and
generated block diagrams for their system. Requirements for the system were determined based on
more in-depth research. Parts were determined through decision matrices, at which point the team
ordered a first round of parts. Initial testing of those parts helped refine the block diagrams and
requirements. That process repeated as the system became more refined with each iteration. The
team members made sure to keep in contact with other team members on decisions made
throughout the project. Each member was aware of the other functions and reviewed the various
decisions that the team made. This helped to expand the knowledge base for the whole function, as
the group has a wide variety of talents and experiences.
2.4
Risk
The bulk of the work for this project is software that will analyze the data given by various sensors.
The risk in this project is limited, so long as the hardware communicates properly with the
microcontroller. The hardware communication is something that can be determined early in the
process. Therefore, the largest hardware risk is going over budget by purchasing too much
hardware that does not communicate with the microcontrollers selected. Once the hardware is
selected and functioning properly, the remainder of the work for this project consists of writing
code. A possible hardware risk is to purchase an underperforming processor. If the processor
cannot keep up with the demands of the software, the design will not work properly. This is
especially an issue with the Driver Awareness Sensor.
The largest software risk is that our software does not do what it is required to do. This is highly
unlikely, given the time that the team will spend developing the software. If this project does not
succeed, it is because the team did not spend enough time on the code, so the software can only
complete a fraction of the overall goals of the project.
There is a risk of the human-machine interface not working properly. If people do not intuitively
understand the function of our design, then the design is useless. The team means for this project to
help people, and this project can only help when people realize how to be helped. Further research
will ensure that the majority of the users will interpret our design properly.
6
3
System Overview
This section gives a brief look at the system architecture for each of the three functions.
3.1
Rapid Deceleration Warning
For a more detailed look at the Rapid Deceleration Warning (RDW) function’s system architecture,
refer to Chapter 5 (Rapid Deceleration Warning). The basic functionality of the RDW is to flash the
brake lights of a vehicle if it is decelerating at a high rate. The RDW system has three distinct
components, as shown in the basic system block diagram given in Figure 3.
Figure 3. RDW System Diagram
The accelerometer reads in values for position and sends that data to the microcontroller. The
microcontroller then processes this data, converting it to usable deceleration data, comparing the
deceleration to a certain threshold, and outputting a pulsed signal at the desired frequency if the
deceleration is above that threshold. This pulsed signal is sent to the brake lights to make them
flash at the same frequency.
7
3.2
Driver Awareness Sensor
The Driver Awareness Sensor (DAS) will alert the driver to unsafe driving conditions due to
drowsiness of the driver. The DAS has three distinct components, as shown in the basic system
block diagram in Figure 4. A camera will send real-time images of the driver’s face to a
microcontroller. The microcontroller will analyze the images for signs of drowsiness and generate
an alert to wake the driver. For a more detailed look at the DAS function’s system architecture, refer
to Chapter 6 (Driver Awareness Sensor).
Figure 4. DAS System Diagram
3.3
Speed Limit Indicator
The basic functionality of the SLI is to display the speed limit for the current road on the
speedometer of the vehicle. The SLI has four distinct components, as shown in the basic system
block diagram given in Figure 5. The microcontroller takes in a GPS coordinate for the vehicle’s
position and uses it to find speed limit in the database. The database is stored in memory connected
to the microcontroller. Once the speed limit is determined, the microcontroller outputs the speed
limit to the display on the speedometer. For a more detailed look at the Speed Limit Indicator (SLI)
function’s system architecture, refer to Chapter 7 (Speed Limit Indicator).
Figure 5. SLI System Diagram
The GPS unit computes position data (latitude, longitude, and altitude), speed and direction and
sends this information to the microcontroller. The microcontroller then analyzes the input values
8
and determines the GPS coordinate of the nearest speed limit sign. The microcontroller then
accesses the speed limit database to determine the speed limit for the particular GPS coordinate.
The microcontroller then outputs a signal to the display on the speedometer.
9
4
Objectives and Requirements
The objectives and requirements for the project are separated by the three functions along with a
section for common objectives and requirements. This section also includes design norms, which
are implied considerations the team imposed upon the design. These considerations are moral
guidelines for the engineering ethics applied throughout the final design.
4.1
Common Objectives and Requirements
Some of the objectives and requirements for this project are common among the three functions.
They are listed in the section below. The objective and requirements specific to each function are
listed in the subsequent sections.
4.1.1
Requirements
4.1.1.1 Power
REQ 4.1.1.1a: The 12-volt battery within the vehicle shall power each safety function.
Explanation: This allows the device to run on standard vehicles produced in the United States and
Europe.
REQ 4.1.1.1b: Each safety function shall be able to function with a power voltage in the range from
9 volts to 15 volts.
Explanation: Batteries do not always operate at 12 volts. The voltage in batteries decreases over
time, while batteries can also be overcharged. A charged battery is generally 12.5 volts without the
engine. When the engine is running, a voltage regulator keeps the voltage between 13.5 and 14.5
volts [36]. Working within 3 volts of the standard allows operation with most battery conditions.
4.1.1.2 Climate
REQ 4.1.1.2a: Each safety function shall be able to operate with a temperature in the range from (20) to 70 degrees Celsius.
Explanation: The components will likely be housed inside the vehicle, so the device needs to
function with all interior temperatures of the vehicle. On startup, temperatures vary wildly, and the
device still should function.
4.1.1.3 Reliability
REQ 4.1.1.3a: Each safety function shall have a minimum lifetime of 15 years.
Explanation: The average lifetime of a personal vehicle on the road today is just under 11 years and
trending upward [2], so 15 years seems like a reasonable minimum lifetime for this device.
REQ 4.1.1.3b: Each safety function shall not interfere with normal vehicle operation if it should fail.
Explanation: The brake lights and speedometer of the vehicle should still operate normally if the
device is not present. This should also remain true if the device has failed yet is still present in the
vehicle.
10
4.1.1.4 System
REQ 4.1.1.4a: Each safety function shall not obstruct the view of the driver.
Explanation: As these functions are meant for driver safety, none of the functions should obstruct
the driver and make their normal operations unsafe.
4.1.1.5 Hardware
REQ 4.1.1.5a: The production model of the system shall operate on one microcontroller.
Explanation: This will keep the cost low enough to market the device, and will increase the
efficiency of the device by putting all of the components on one board.
4.1.2
Objectives
4.1.2.1 Power
OBJ 4.1.2.1a: Each safety function shall draw less than 200 mA from the vehicle’s battery.
Explanation: This is equivalent to 12V * 0.2A = 2.4 watts maximum per device, or approximately 7
watts total. We want to minimize the power consumption, so any value less than 7 watts would also
be acceptable.
4.1.2.2 Cost
OBJ 4.1.2.2a: The total project cost for the prototype shall be below $500.
Explanation: This satisfies the budget requirement as determined by the Senior Design faculty
advisors.
OBJ 4.1.2.2b: The total project cost for the production model will be below $100 per unit when
producing 25,000 units per year.
Explanation: While certain costs increase for production, the total production cost could go down
by using less expensive components purchased in bulk as well as using only one microcontroller.
4.2
Speed Limit Indicator
4.2.1
Requirements
4.2.1.1 System
REQ 4.2.1.1a: The Speed Limit Indicator shall have only the speed display visible to the user.
Explanation: The hardware components will be hidden from the user to ensure driver safety and
device lifetime. There must be some output to the user to tell them the speed limit of the road they
are currently on.
REQ 4.2.1.1b: The Speed Limit Indicator shall display different colors to the user depending on the
vehicle’s speed in comparison to the speed limit.
Explanation: If the driver exceeding the speed limit, the display will show a different color than if
the driver is following the speed limit.
11
4.2.1.2 Hardware
REQ 4.2.1.2a: The Speed Limit Indicator prototype shall contain sufficient memory to hold the
program and a database of local speed limits.
Explanation: For the prototype, only a 2-mile radius around Calvin College will be considered for
mapping purposes. A worst case scenario requires 8 kilobytes (see Sec 7.2.3.1) for 80,000 miles of
road. The memory necessary to hold that data is smaller than the production model.
REQ 4.2.1.2b: The Speed Limit Indicator production model shall contain sufficient memory to hold
a database of the United States speed limits.
Explanation: For the production model, the entire nation’s speed limit signs need to be stored. We
are only considering the United States since they use miles per hour, which is what our output to
the display will be given in.
4.2.1.3 Software
REQ 4.2.1.3a: The Speed Limit Indicator shall identify the speed limit of the road the vehicle is
currently travelling within two seconds of entering that road.
Explanation: This is the basic requirement for this function. The code will take in a GPS coordinate
and find the nearest speed limit then make sure that it is from the road they are currently
travelling. Two seconds accounts for turns onto streets, where the reaction time may be slowed.
REQ 4.2.1.3b: The Speed Limit Indicator production model database shall self-update every week.
Explanation: Speed limits change occasionally, so updates are necessary. However, if the function
were to change based on construction, more frequent updates would be necessary.
REQ 4.2.1.3c: The Speed Limit Indicator shall not change the speed limit if the system is unsure
what road the vehicle is currently travelling.
Explanation: If an unknown value comes in, the function should not change the speed limit. This
situation could occur at intersections or bridges, where the GPS signal is weak or nonexistent. The
function should assume that the vehicle is continuing on the same road until the function is
determines that the vehicle has changed roads.
REQ 4.2.1.3d: The user will have the option to turn off the Speed Limit Indicator function.
Explanation: This function is not necessary for driver safety, although it should improve safety.
However, if the function makes the driver more distracted, the driver should have the option to
turn it off and on as they please.
4.2.2
Objectives
4.2.2.1 System
OBJ 4.2.2.1a: The Speed Limit Indicator’s LED lights shall not be uncomfortable to see for the user.
Explanation: While the LEDs need to be visible to the driver at all times of the day, it must not be
uncomfortable to see, as this would be counterintuitive to the goal of the Speed Limit Indicator.
12
4.3
Driver Awareness Sensor
4.3.1
Requirements
4.3.1.1 System
REQ 4.3.1.1a: The Driver Awareness Sensor shall determine the following symptom of drowsiness:
prolonged eye closure.
Explanation: Prolonged eye closure is one of the primary symptoms of drowsiness [37].
REQ 4.3.1.1b: Prolonged eye closure is defined as the eyes being closed for more than one second.
Explanation: The average blink is between 0.3 and 0.4 seconds [38]. Therefore, one second is much
longer than the average blink. At 60 mph, a vehicle travels 88 feet in one second, which is a
considerable distance not to be paying attention.
REQ 4.3.1.1c: The Driver Awareness Sensor shall generate an audible signal to alert the driver that
they are falling asleep.
REQ 4.3.1.1d: The Driver Awareness Sensor camera shall be located where the camera can gather
accurate data without obstructing the driver’s view.
Explanation: The team intends this device to improve the safety of the driver and the vehicle.
Causing any unnecessary distractions, such as obstructing the driver’s view, would defeat the
purpose of the device and could cause more safety concerns than it addresses.
4.3.1.2 Hardware
REQ 4.3.1.2a: The audible alert shall be a pulsing signal around 90dB.
Explanation: The alert must be loud enough to get the attention of the driver and overcome other
sounds from the environment. This sound level is very high and should be sufficient to get the
attention of most people [39].
4.3.2
Objectives
4.3.2.1 System
OBJ 4.3.2.1a: The Driver Awareness Sensor shall accurately report drowsiness at least 95% of the
time.
Explanation: The ideal case is to report all drowsiness events. However, this is not always possible
due to uncontrollable circumstances. Therefore, the system should be very reliable in general, such
that the user can trust the system to perform as intended.
4.3.2.2 Hardware
OBJ 4.3.2.2a: The Driver Awareness Sensor’s camera enclosure shall be water resistant.
Explanation: While it is unlikely the user will place the camera in a wet environment, if the camera
enclosure is exposed to water, the camera should continue to function properly.
13
4.3.2.3 Software
OBJ 4.3.2.3a: The Driver Awareness Sensor shall signal an alert within two seconds to notify the
driver of drowsiness.
Explanation: This should provide sufficient time for the driver to react before falling asleep as well
as preventing false alarms that could jeopardize the reliability of the system.
4.4
Rapid Deceleration Warning
4.4.1
Requirements
4.4.1.1 System
REQ 4.4.1.1a: The brake lights shall flash only when the vehicle is decelerating greater than 6 m/s2.
Explanation: This is a requirement of the ECE (Economic Commission for Europe) given as ECE
regulation 48 [3].
REQ 4.4.1.1b: The brake lights shall flash at a maximum rate of 4 Hz.
Explanation: This is another requirement of ECE regulation 48 [3]. The minimum rate of flashing is
0 Hz, or normal operation.
REQ 4.4.1.1c: The rapid deceleration warning production model shall comply with the United
States vehicle lighting regulations.
Explanation: Provision S5.5.10 from Federal Motor Vehicle Safety Standard 108 requires that all
lamps, including brake lights, must be steady burning [40]. Therefore, the rapid deceleration
warning system will simulate flashing by pulsing the brake lights from dim to bright so that the
lights are steady burning.
4.4.1.2 Hardware
REQ 4.4.1.2a: The rapid deceleration warning system shall be accurate and precise enough to
measure the deceleration to within 0.1 m/s2.
Explanation: This accuracy is important to make sure that the brake lights flash when they should
and that they do not flash when they should not.
4.4.1.3 Software
REQ 4.4.1.3b: The rapid deceleration warning system shall output a pulsed signal to the brake
lights at the required rate at least 50ms after it detects a deceleration above the required rate.
Explanation: A human is able to process an image astonishingly fast, usually within 150ms [41].
Therefore, a time of 50ms is required to allow the driver to begin processing and reacting to the
flashing stimulus as fast as possible.
14
4.4.2
Objectives
4.4.2.1 System
OBJ 4.4.2.1a: The rapid deceleration warning and its purpose shall be easily recognizable to a
driver behind the vehicle on which the system is installed.
Explanation: If the driver behind the vehicle does not understand why the brake lights are
flashing/pulsing, then there will be no improvement in reaction time and therefore no
improvement over the current operation of brake lights. The team will attempt to meet this
objective through user testing.
OBJ 4.4.2.1b: The Rapid Deceleration Warning shall not be disorienting to a driver behind the
vehicle on which the system is installed.
Explanation: The team will attempt to meet this objective through user testing and research of the
effects of different flashing frequencies.
4.4.2.2 Software
OBJ 4.4.2.2a: The rapid deceleration warning system shall relay the acceleration data to the driver
of the vehicle in some way.
Explanation: Presenting this information to the driver could help them identify and possibly stop
their own aggressive braking. The system could present this data through a screen on the
dashboard that tells the driver their deceleration or a simple LED that flashes/pulses at the same
rate as the brake lights themselves.
OBJ 4.4.2.2b: The rapid deceleration warning system shall read the deceleration data in real time.
Explanation: Real time means that it should operate read in data at the maximum clock speed
allowed by the microcontroller. There should be as little delay as possible between acquiring the
data and reading it into the system.
4.5
Design Norms
The design decisions of the team should not only be objective, but also take into account the impact
on society. This product will operate alongside humans and therefore the team must design it with
consideration for others in mind. The team will focus primarily on developing a product that is
caring, trustworthy, and transparent.
4.5.1
Caring
The team will design this product with care in mind because it is a safety device. Safety devices care
for others by providing an extra layer of safety for all those involved. The team is designing the
product so that the product will not affect normal car operations if the product fails. In this way, we
are caring about the safety of the user.
4.5.2
Trustworthy
It is important that the user can trust this product to accurately assist the driver and not cause a
hindrance. If the driver does not trust that this product will work as designed, there is no reason for
15
anyone to use this product. The team will be designing the product with a high minimum lifetime,
so the users will feel comfortable using the product for the lifetime of their vehicle.
4.5.3
Transparency
The team will design this product to improve the safety of the driver and those in nearby vehicles. If
this device is not intuitive and transparent, it can easily cause more distractions, in which case it
would be better if the driver did not use this device. The team will focus the design on the user, and
the team will perform extensive research to ensure that the product will work in an efficient and
intuitive way.
16
5
Rapid Deceleration Warning
5.1
System Design
There are three main concepts that the RDW system must realize at a system level. The RDW
system must (1) quickly, accurately and consistently find the deceleration of the vehicle that the
system is installed within, (2) compare that deceleration to a certain deceleration threshold, and
(3) output a pulsed signal at the proper frequency if the measured deceleration is greater than this
threshold.
5.1.1
Determining Vehicle Deceleration
An accurate and cost effective way to monitor the deceleration of a vehicle would be to use an
accelerometer. The team briefly considered the alternative method of measuring deceleration by
measuring the depression of the brake pedal itself. However, the team dismissed this alternative
mainly because a brake-actuated system like this would also not work in the case of a collision,
when rapid deceleration can occur without the driver depressing the brake pedal [4].
Most accelerometers offer both an Inter-Integrated Circuit (I2C) and a Serial Peripheral Interface
(SPI) to communicate with a microcontroller. I2C uses a single line for data, while SPI uses two
separate lines for data in and data out. For this reason, I2C is generally considered slightly more
complex to interface with than SPI. I2C also requires additional ‘pull-up’ resistors to pull the single
data line from low to high. Therefore, the team chose SPI because of its overall simplicity.
A one-axis accelerometer, which could measure the acceleration of the vehicle on one plane of
motion, would be sufficient for this system. However, the team decided to choose a three-axis
accelerometer for the prototype system as it would allow for much more flexibility in testing.
Three-axis accelerometers are also much more common and less expensive than their single-axis
counterparts.
5.1.2
Comparing Data
It is necessary for the RDW system to compare the data found by the accelerometer to the
maximum deceleration threshold in real time. The team created software to accomplish this task
and that software is stored and run on a microcontroller. Figure 6 provides a block diagram of a
typical microcontroller architecture. The Data SRAM memory will store the program, which the
team initially estimated to be fewer than 10 KB due to the relative simplicity of the system. The size
of the current integration of the system is approximately 4 KB. The SPI unit will interface with the
accelerometer and the analog comparator will be used to compare the threshold against the
vehicle’s deceleration.
17
Figure 6. Microcontroller Architecture [42]
5.1.3
Flashing the Brake Lights
When the software mentioned above has detected a deceleration value above the maximum
threshold specified by Requirement 4.4.1.1a, it will then use an unused pin of the microcontroller to
output a signal to the brake lights at the frequency specified by Requirement 4.4.1.1b. It is
important that the team meet this requirement because increasing the frequency increases the risk
of unwanted health effects caused by flashing lights. The Epilepsy Foundation reports that “flashing
lights most likely to trigger seizures are between the frequency of 5 to 30 flashes per second
(Hertz)” [55]. Requirement 4.4.1.1c specifies that the system should comply with U.S. vehicle
regulations, one of which restricts the use of flashing lights. Therefore, the team decided to
simulate flashing by using the Pulse Width Modulation (PWM) capabilities of the microcontroller.
This allows the brake light LEDs to switch between bright and dim levels without turning off
completely.
5.2
Hardware System Design
The key pieces of hardware necessary for the RDW system are as follows: an accelerometer and a
microcontroller. Figure 7 shows a basic hardware diagram of the system, which focuses on the
interactions between the selected accelerometer and microcontroller components. The following
sections describe how the team chose these particular components. Table 1 describes the signals
between the components.
18
Figure 7. RDW Hardware Diagram
Table 1. Signals used in Figure 7
Signal
Explanation
GND
Ground
VCC
Power supply for accelerometer (3.3V)
CS
Chip select
SDO
Serial data output
SDI
Serial data input
SCLK
Serial port clock (5 MHz maximum)
D OUT
Data out (from microcontroller)
D IN
Data in (to microcontroller)
5V
Signal from the Voltage Regulator, stepping signal down to 5 volts
B IN
Input from the battery to be stepped down (9-15V, 50 mA max
current)
19
Serial
Peripheral
Interface
(SPI)
Figure 8 shows a more detailed look at the interface between the microcontroller and the
brake lights. The Darlington transistor is necessary to provide the current from the microcontroller
that the brake lights require. A typical brake light circuit draws 15-20A of current [58], so the
transistor needs to be rated for this. The team selected the ECG2541 transistor because it can
handle a maximum collector current of 25A [59]. The microcontroller that the team used only has
an output current of 0.04A per pin, but the transistor has a current gain of 2000, which is more than
enough to provide the necessary amperage. If the RDW system does fail, normal operation will
continue because the system does not receive its power directly from the microcontroller.
Figure 8. Typical Brake Light Circuit
5.2.1
Accelerometer
This section defines the criteria that the team used to select an accelerometer for the Rapid
Deceleration Warning system production and prototype models, as well as the alternatives that the
team considered.
5.2.1.1 Criteria
The weights given to each criterion add up to 100 in every decision for the project. Therefore, they
are represented as percentages of importance for the specific function.
20
Unit Cost [30]
The team gave this criterion a high weight because the team wants to have a very inexpensive
production model. The team expects a yearly sales volume of 25,000 units so the accelerometers
are available at a much lower cost for this bulk purchase.
Breakout Board Cost [25]
The team gave this criterion a high weight because there is a limited prototype budget available and
the breakout board of the accelerometer will be used to build the prototype system.
Bandwidth [15]
Bandwidth is the rate at which accelerometers will output accurate readings. The team desires a
greater bandwidth in order to read the acceleration data as fast as possible so that the delay
between detection and response is as short as possible. A faster bandwidth ensures that the driver
will have as much time as possible to react to the Rapid Deceleration Warning stimulus.
Power Consumption [15]
The team gave this criterion a moderate weight because the team plans to draw power from the
vehicle’s battery for all three safety functions. This will depend largely on the current consumption
of the device.
Output Signal [10]
This is criterion evaluates the difference between analog and digital (I2C/SPI) outputs. Since
software will eventually need to modify the acceleration data, an analog to digital converter would
be required to convert an analog signal to a digital signal. However, since the microcontroller that
the team chose in the next section has a built-in analog to digital converter (ADC), the team decided
to give this criterion a lower weight.
Flexibility [5]
Flexibility takes into consideration the range of acceleration and supply voltage of each alternative.
For instance, an accelerometer with multiple acceleration ranges would receive a higher score. The
team gave this criterion a low priority because each alternative that the team considered fulfills the
acceleration and voltage range requirements for the system.
5.2.1.2 Alternatives
Table 2 shows the accelerometer options that the team considered for this system. The four
accelerometers were compared against each other because they all popular in the field of
electronics. The electronic hobbyist retailer Sparkfun Electronics mentions all four of the
accelerometers in its ‘Accelerometer, Gyro, and IMU Buying Guide’ [56]. The team gathered the unit
cost for each component from the electronic supplier Digikey. The team used SparkFun Electronics
to gather costs of a breakout board for each accelerometer. The team gathered the other
specifications by looking at the datasheet offered by the manufacturer [43]. For the prototype, the
team only considered purchasing breakout boards because they are much easier to use with
breadboards. The temperature ranges for each accelerometer alternative is (-40) to 80 degrees
Celsius.
21
Table 2. Accelerometer Alternatives
BB
Cost
($)
Unit
Cost Output
Signal
($)
Supply
Voltage
(V)
Range
(+/- g)
BW
(Hz)
Current
Draw
(µA)
Manufacturer
Model
Analog
Devices
ADXL335
27.95 2.89 Analog
1.8-3.6
3
0.5-1600
350
Analog
Devices
ADXL345
24.95 3.70 I2C/SPI
2-3.6
2, 4, 8,
16
6.253200
145
Bosch
BMA180
I2C/SPI
1.6-3.6
1, 1.5,
2, 3, 4,
8, 16
10-1200
650
STM
LIS331HH
27.95 2.55 I2C/SPI
2.16-3.6
6, 12,
24
0.5-1000
250
29.95 3.10
5.2.1.3 Decisions
Table 3 shows the decision matrix that the team used to select the accelerometer. The Analog
Devices ADXL345 accelerometer is the clear winner mainly because of its superior power
consumption, breakout board cost, and bandwidth performance.
22
Table 3. Accelerometer Decision Matrix
Priority ADXL335 ADXL345 BMA180 LIS331HH
5.2.2
Unit Cost
30
8
5
7
9
Breakout Board Cost
25
7
8
6
5
Bandwidth
15
5
9
4
3
Power Consumption
15
6
8
3
7
Output Signal
10
5
10
10
10
Flexibility
5
5
7
10
6
Total
655
740
615
675
Microcontroller
This section defines the criteria that the team used to select a microcontroller development board
for the Rapid Deceleration Warning and Speed Limit Indicator system prototype model, as well as
the alternatives that the team considered.
5.2.2.1 Criteria
Cost [20]
The team gave this criterion a high weight because there is a limited prototype budget available and
the development board will be used to build the prototype system.
Ease of SW programming [15]
This criterion mainly considers the programming language used to develop software on the board
as well as the availability of an integrated development environment (IDE). This will largely
depend on the team’s knowledge and familiarity with the language.
Functionality [15]
This criterion considers the ease of use or the ability to use the microcontroller “out of the box”.
One example is that some of the development boards already have built-in voltage regulators and
some require the user to buy and install voltage regulators.
Support Community [15]
This criterion considers the popularity and overall amount of documentation and that exists for a
particular microcontroller development board.
23
Power Consumption [10]
The team gave this criterion a moderate weight because the team plans to draw power from the
vehicle’s battery for all three safety functions. This will depend largely on the current consumption
of the device.
Number of Pins [10]
This is the number of I/O pins that the microcontroller board has available. The RDW and SLI
systems each require five pins for digital input and output. The team has given this a lower priority
because all of the microcontroller options have a sufficient amount available.
Onboard Memory [10]
This is the amount of memory that the microcontroller board has available. The RDW system
requires an estimated 10 KB of memory. The SLI system requires an estimated 20 KB of memory.
The team has given this a lower priority because all of the microcontroller options have a sufficient
amount available.
Clock Speed [5]
A higher clock speed means more instructions of code will be executed per second. Since the team
does not expect the programs for the RDW and SLI systems to be overly complex, a faster clock
speed could provide a small boost in performance.
5.2.2.2 Alternatives
Table 4 shows the microcontroller options that the team considered for this system. All of the
options below are popular microcontroller development boards.
Table 4. Microcontroller Alternatives
Current
Draw
(mA)
Clock
Speed
(MHz)
Number
of Pins
Flash
Memory
RAM
Manufacturer
Model
Cost
($)
Arduino
Uno
30
40
16
20
32KB
2KB
FEZ
Panda II
40
65
72
54
512KB
96KB
Pinguino
PIC32
30
5
80
24
256KB
32KB
PJRC.com
Teensy
2.0
16
15.7
16
25
32KB
2.5KB
Microchip
Ready
for PIC
29
20
16
28
32KB
1.5KB
24
5.2.2.3 Decisions
Table 5 shows the decision matrix that the team used to select the microcontroller. The Pinguino
and Arduino achieved the exact same score. However, the team selected the Arduino Uno as the
winner because team member Andrew DeZeeuw already had access to an Arduino Uno.
Table 5. Microcontroller Decision Matrix
Priority
Arduino
FEZ
Pinguino
Teensy
Microchip
Cost
20
7
4
7
10
7
Ease of SW Programming
15
10
3
9
7
6
Functionality
15
9
5
7
5
9
Support Community
15
10
5
6
2
5
Power Consumption
10
5
4
10
8
7
Number of Pins
10
6
10
7
7
8
Onboard Memory
10
5
9
7
5
5
Clock Speed
5
5
9
10
5
5
Total
760
550
760
635
665
25
5.3
Software System Design
Figure 9 shows a software flow diagram of the RDW system. The software must (1) calibrate the
accelerometer upon start-up, (2) read the raw data from the accelerometer and convert this data to
usable deceleration data, and (3) compare the incoming deceleration to a fixed maximum
deceleration threshold. It must also tell the system to output a pulsed signal to the brake lights if
the current deceleration of the vehicle is greater than this threshold. The system should have no
control timing so that it is constantly running as fast as possible. The current software can be found
on The Smart Dashboard’s website: http://www.calvin.edu/academic/engineering/2012-13team13/docs.html.
Figure 9. RDW Software Diagram
5.3.1
Calibrating the Accelerometer
Most accelerometers need calibration before use. This is done by examining the acceleration
output at a known acceleration and subtracting the offset from the output. On start-up, the vehicle
should not be moving and therefore the acceleration in the horizontal direction should be zero. The
ADXL345 accelerometer has offset registers that contain values that it automatically adds to the
acceleration data and stores in the output data registers. The software first measures 100 data
horizontal acceleration data values and averages them to remove most of the noise. The difference
between this value and the actual value of zero is then written to the offset register. Because the
offset registers are cleared when power is removed, calibration must be performed every time the
26
system starts up. This also ensures that the system meets the accuracy specified by Requirement
4.4.1.2a and is ultimately safe for the end-user.
5.3.2
Reading and Converting the Acceleration Data
The raw, full-resolution, acceleration data is a 13-bit value in twos complement form. The software
reads this value from the appropriate data register. To convert this value to the unit g
(gravitational force), the software first multiples the value by the total g range (in this case 32g) and
then divides it by the number of values represented by 13 bits. The software then converts this
new g value to the unit m/s2 by multiplying the value by the gravitational constant (9.80665 m/s2).
5.3.3
Comparing to Threshold and Signal Output
Now that the data is converted to the proper units, the software compares this value to the
acceleration threshold of -6.5 m/s2 as specified by Requirement 4.4.1.1a. If the value is greater than
this threshold, the software outputs the pulsed signal for a specified time limit. The pulsed signal is
creating by alternating between low and high PWM values separated by a delay of 0.125 seconds to
achieve an overall period of 0.25 seconds, which corresponds to the 4 Hertz frequency specified by
Requirement 4.4.1.1b. Once the time limit is reached, the program returns to the start of the overall
loop.
5.3.4
Noise Consideration
Because of noise, the team could not realistically meet Objective 4.4.2.2b, which states that the
system should read in the acceleration data at the maximum data rate allowed by the
microcontroller. Figure 10 shows how the output data rate affects the output noise of the
accelerometer. The noise increases at a slow rate until approximately 100 Hz at which point the
rate of noise increases significantly. Therefore, the team selected 100 Hz as the data rate for the
accelerometer. As shown in …, this data rate is fast enough to meet Requirement 4.4.1.3a while also
limiting the noise to less than 1.5 least significant bits (LSB). At full resolution, there are 256 LSB/g
so that the noise corresponds to less than 0.06 m/s2, which also fulfills the precision demanded by
Requirement 4.4.1.2a.
Figure 10. Noise vs. Output Data Rate – Full Resolution [57]
27
6
Driver Awareness Sensor
6.1
System Design
There are two main concepts that the DAS must realize at a system level. The DAS must detect
drowsiness due to prolonged eye closure and wake up the driver with an alert.
6.1.1
Determining Prolonged Eye Closure
The primary method of detecting the blinking rate and determining prolonged eye closure is
through video capture and processing. A camera is focused on the subject, capturing at least the
eyes. If the subject is still, this camera can be zoomed in closer than if it needs to allow for
movement of the subject. Most often, the face is included with some background. The software for
the system must then analyze the image and locate the eyes. Once this is done, the eyes are
analyzed further to determine their state, whether open or closed. Performing the analysis on only
the eye region greatly reduces the computations required. Therefore, it is important to accurately
locate the eye region and narrow it down as much as possible.
Other methods for determining prolonged eye closure include mechanical and electrical methods.
The mechanical methods attach to the subject and can sense muscle movements related to the
eyelid closing. The electrical methods attach electrodes to the subject and measure brain waves or
other signals to determine when the eye is closed. Both of these methods would not be appropriate
for this project, as they would require the user to wear some form of mechanism, which would be
intrusive and could possibly cause safety issues.
6.1.2
Alerting Driver
The final concept that the DAS must realize is alerting the driver to their drowsiness and waking
them up. There are many possible methods for providing feedback to the driver, including audible,
visual, and tactile. The audible methods range from an alarm sounding noise to a human issuing a
warning. The tactile methods could include vibration of the steering wheel or seat, or providing an
electric shock. Visual methods range from a simple light or notification to a strobe or blinding light
to get the attention of the driver. From the list of feedback methods, a simple audible warning
consisting of a beeping noise similar to an alarm clock should be the simplest method to implement
while still providing an adequate notification to the driver. The team can implement this with a
speaker connected to the microcontroller.
6.2
Hardware System Design
The pieces of hardware necessary for the DAS are as follows: a camera, a microcontroller, and a
speaker. Figure 11 shows a block diagram of the hardware with expected signal communications.
28
Figure 11. DAS Hardware Diagram
Table 6. Signals Used in Figure 11
Signal
Explanation
From car battery
9V-15V DC
Power from Voltage Regulator
5V, capable of providing at least 700mA
Video from camera
USB 2.0
Power to Facial Illuminator
5V
Audio to speaker
Analog audio signal
The hardware for the Driver Awareness Sensor must possess the ability to capture quality real-time
imagery and process the images to determine driver awareness. The hardware must also be able to
notify the driver of unsafe driving conditions due to the drowsiness of the driver. Additionally, the
hardware must provide an illumination source so that the camera can capture accurate imagery in
varying lighting conditions.
29
6.2.1
Microcontroller
6.2.1.1 Criteria
Cost [25]
This is a very important criterion because the team has a limited budget with which to build the
prototype.
Clock Speed / Instructions per Second [25]
The microcontroller should feature a high clock speed and have a high number of instructions per
second. This is critical for the image processing to determine the state of the driver in real-time.
Availability [20]
The availability of the boards is important to reduce development time as well as cost of
production.
Ease of SW Programming [15]
Ease of software programming is defined as the ability to program the microcontroller “out-of-thebox.” This includes the development environment as well as the programming language knowledge
required to set up the board.
Support Community [10]
This criterion considers the popularity and overall amount of documentation that exists for a
particular microcontroller development board.
Functionality of Development Board [5]
This criterion considers the functionality of the development board relating to how well it
interfaces with the other components. The board should provide a sufficient number of connections
for the other components.
6.2.1.2 Alternatives
Table 7. DAS Microcontroller Alternatives
Board
Cost ($)
CPU
RAM
Other
BeagleBoard [44]
149.00
720 MHz
256 MB
HDMI, S-Video, 1 USB, SC,
Raspberry Pi [45]
35.00+
700 MHz
512 MB
HDMI, RCA, 2 USB, SD, Ethernet
OLinuXino [46]
58.35
1 GHz
512 MB
HDMI, 2 USB, microSD, SATA, Ethernet
Cubieboard [47]
49.00
1 GHz
512 MB
HDMI, 2 USB, SD, Ethernet
30
6.2.1.3 Decisions
Table 8 shows the decision matrix for the microcontroller. The Raspberry Pi is the microcontroller
of choice primarily due to the availability and cost, as the boards are similar in many
characteristics.
Table 8. DAS Microcontroller Decision Matrix
Priority
BeagleBoard
Raspberry Pi
OLinuXino
Cubieboard
Cost
25
2
9
6
7
Clock Speed
25
5
5
9
9
Availability
20
3
10
3
1
Ease of SW
Programming
15
4
8
8
5
Support
Community
10
5
9
7
3
Functionality
of Dev. Board
5
5
7
8
7
Total
370
795
665
560
6.2.2
Camera
6.2.2.1 Criteria
Cost [25]
This is an important criterion because the team has a limited budget with which to build the
prototype.
Ease of Software Programming [20]
The camera should be able to be connected to the microcontroller and set up with minimal effort.
Resolution [10]
The camera should have at least 640x480 resolution in order to provide adequate picture quality.
Higher resolutions would result in better pictures, but would also increase the time required to
process the image.
IR Capable [10]
The camera must be able to sense infrared light in order to take advantage of the facial illuminator.
Some cameras have this capability out of the box and need no modifications, while the team would
need to modify others to allow infrared light.
31
6.2.2.2 Alternatives
There were many similar cameras to choose from. Table 9 provides a sample to show the
similarities. Cameras that caused issues for others [50] when connecting to the Raspberry Pi were
not included in the list.
Table 9. DAS Camera Alternatives
Camera
Cost
Resolution
IR Capable?
Works with RasPi
Logitech C120
$10
640x480
Modify [51]
Yes
Logitech C905
$33
1600x1200
Modify
Yes
HP Webcam HD-2200
$21
1280x720
Modify
Yes
Microsoft LifeCam NX-6000
$20
1280x1024
Modify
Yes
Sony PlayStation Eye
$18
640x480
Modify [52]
Yes
Sunvalleytek Y712 Webcam
$12
1024x768
Yes
Unknown
U19-A Night Vision Webcam
$10
640x480
Yes
Unknown
6.2.2.3 Decisions
The Logitech C120 was primarily chosen for its low cost and because there were tutorials on how to
remove the infrared filter from the camera. It is also verified to work with the Raspberry Pi [62].
6.2.2.4 Implementation
The camera required a small modification to remove the infrared filter. Figure 12 shows the
infrared LEDs before the filter was removed. Though the team designed the LEDs to be at maximum
brightness, the light is only slightly visible. The removal of the infrared filter was straightforward.
The filter was located just above the sensor and securely adhered to the housing. After removing
the housing to protect the sensor, the team removed the filter, though it broke in the process. This
was not a problem because the filter is not required. The infrared LEDs are much brighter without
the filter, as shown in Figure 13.
32
Figure 13. IR LEDs after filter removal
Figure 12. IR LEDs before filter removal
6.2.3
Speaker
Since the Raspberry Pi has an audio out jack, any speakers can be connected in order to produce the
alert for the driver. Due to time constraints, the team did not select a specific speaker, as desktop
speakers would have worked for the prototype.
6.2.4
Facial Illuminator
The team selected 950nm infrared LEDs for the facial illuminator. The team positioned these near
the camera so that they could adequately illuminate the field of view of the camera. The
illumination allows the camera to keep a fast frame rate, instead of slowing due to poor lighting
conditions, as well as providing overall better lighting conditions for the detection software.
The team designed the prototype facial illuminator to run on a 5-volt supply, as that is the same
voltage as the Raspberry Pi supply. With a forward voltage of ~1.5V and max current of 20mA, the
team decided 21 LEDs by placing three LEDs in series and placing seven sets in parallel, as shown in
Figure 14. To obtain the correct forward voltage and current, the team selected a 27-ohm resistor
for each set of LEDs in series. Pin 1 provides +5V, while Pin 2 is connected to ground.
33
Figure 14. Facial Illuminator Schematic
The resulting facial illumination appears as a bright bar of light from the driver’s perspective, as
shown in Figure 15. Figure 16 shows a close up view of the facial illuminator prototype with its
array of LEDs.
Figure 16. Facial Illuminator Close-up
Figure 15. Facial Illuminator from Driver's Perspective
6.2.5
Voltage Regulator
Due to time constraints, the team was unable to determine the correct voltage regulator to use for
integration into a vehicle. For the prototype, the team used a standard AC-DC power adapter
capable of supplying at least 1A at 5V to the RaspberryPi. This allowed the team to test the
prototype without connecting the system to a vehicle.
34
6.3
Software System Design
Figure 17 shows the software flow diagram of the DAS system. The software must read the image
from the camera and process it to determine the state of the driver. If necessary, the software must
alert the driver to wake up. The current software can be found on The Smart Dashboard’s website:
http://www.calvin.edu/academic/engineering/2012-13-team13/docs.html.
6.3.1
Vision Library
In order to save time and avoid reinventing the wheel, the team decided to use a vision library to
assist with the image capturing and processing. Table 10 shows a number of vision libraries and
their original audience and intended uses, as determined from their respective websites. The team
selected OpenCV because it is the most well developed and provides functions for face and eye
detection. Additionally, the team has found many uses of OpenCV for similar projects.
35
Table 10. Vision Library Alternatives
Library
Website
Audience/Use
Language
OpenCV
http://opencv.org/
Provides common infrastructure
for computer vision applications
C, C++,
Python
CellProfiler
http://www.cellprofiler.org
Biologists, for quantitatively
measuring phenotypes from
thousands of images
Python
ImageJ
http://rsb.info.nih.gov/ij/
Image processing using Java
Java
FIGI (Figi Is Just
ImageJ)
http://fifi.sc
Distribution of ImageJ with
bundled plugins to assist
research in life sciences
Java
Endrov
http://www.endrov.net
Designed to address the
shortcomings of ImageJ
Java
Mango (Multiimage Analysis
GUI)
http://ric.uthscsa.edu/
mango/
Viewer for medical research
images
Java
GNU Octave
http://www.gnu.org/
software/octave/
Numerical computations
C++
GemIdent
http://www.gemident.com/
Identifies regions of interest,
specifically with few colors and
small variation
Java
3DSlicer
http://www.slicer.org/
Visualization and image analysis
C++,
Python,
Java, Qt
OsiriX
http://www.osirixviewer.com/
DICOM image processing
software
ObjectiveC
Insight
Segmentation
and Registration
Toolkit
http://www.itk.org/
Image analysis, medical
C++,
Python,
Java
Integrating
Vision Toolkit
http://ivt.sourceforge.net/
Fast and powerful C++ computer
vision library
C++
VIGRA (Vision
with Generic
Algorithms)
http://hci.iwr.uniheidelberg.de/vigra/
Customizable algorithms and
data structures
C++
6.3.2
Operating System
Due to the complexity of this function, the team decided to use an operating system to handle the
low-level system details. The Raspberry Pi website recommends the Linux based OS called
36
Raspbian, as they specifically designed it for the Raspberry Pi [61]. For the prototype, the team also
used the Windows OS for testing, as Python can run on many operating systems.
Figure 17. DAS Software Diagram
6.3.3
Initialize System
This step performs the necessary setup to read images from the camera and process them. This
includes loading the cascade files used for facial and eye detection and setting the camera capture
settings.
6.3.4
Read Image from Camera
This step is relatively simple since the team is utilizing the OpenCV library. A simple function grabs
the frame from the camera and decodes it into a usable form. It then returns an array containing the
RGB image data.
37
6.3.5
Process Faces
In order to process the faces, the program first uses a Haar cascade classifier to detect possible
faces in the frame. The team uses the Haar cascades classifier data provided with OpenCV instead
of creating a custom cascade classifier. The team decided against creating a custom cascade
classifier due to time constraints and due to the unknown improvements that the process may or
may not provide.
The program must then determine if any of the detected rectangles contain the driver’s face and not
other people in the background or a random part of the image that looks like a face. The face
classifiers are reasonably accurate, so they will generally only find the driver, though this must be
checked to ensure accuracy and reliability. To determine the correct face, the algorithm determines
if the face is within a certain distance from the previously found face. If the face is not within the
acceptable area, the distance increments for the next loop. This continues until the face is found
again and the distance is reset.
Once the correct face is determined, the program will average the face rectangle with previously
found faces to smooth the face rectangle. This prevents the face rectangle from jumping around, yet
provides enough accuracy to follow the driver as he or she moves.
6.3.6
Process Eyes
This step proved to be much more difficult than finding the face. The team originally used a similar
Haar cascade classifier for detecting the location of the eyes. However, this was very unreliable and
was very dependent on the person’s face as well as the general lighting conditions. It also often
detected multiple eyes or eyes in locations that are not eyes. Initial attempts are shown in Figure
18. Figure 19 shows the desired action, though this was sporadic.
38
Figure 18. Initial Eye Detection
Figure 19. Desired Eye Detection
After attempting to tweak the settings to obtain better recognition, the team decided to go with a
proportion based approach. After some trial and error, the team determined that the eyes are
generally between 25% and 50% of the height of the face rectangle from the top of the face and
25% to 45% of the width of the face rectangle from the sides, as shown by the orange grid lines in
Figure 20. While this approach still did not always accurately locate the eyes, it was much more
reliable than the first approach.
Figure 20. Eye Locations based on Proportion of Face
6.3.7
Determine Eye State
The team found it very difficult to determine quantitatively the state of eye, whether open or closed.
The initial thought was to determine the state by comparing the average brightness of the eye
region to the previous brightness levels. Since open eyes are generally darker than closed eyes
because the eyelid covers the iris and pupil when the eyes are closed, the average eye brightness
should increase when the eye is closed. Figure 21 shows a graph of the average brightness for each
39
eye over about 10 seconds. The background represents the average brightness as a shade of gray.
The arrows highlight small upticks that occurred from normal blinking. For this sample, the driver
was not moving and the lighting conditions were constant. However, when the driver moves or the
lighting conditions change, it is much more difficult to determine when blinks occur. Figure 22
shows an example of the variance in the brightness of the eyes with only small movements. Due to
time constraints, the team was unable to continue to improve upon this process.
Figure 21. Average Eye Brightness Showing Blinks
Figure 22. Average Eye Brightness with Movement
6.3.8
Determine If Alarm Should Sound
Due to time constraints, the team was unable to implement this step of the function. The team had
planned to connect a speaker to the Raspberry Pi. The system would emit a warning tone to notify
the driver if it determined the length of the blink was more than one second, as specified by
requirement 4.3.1.1b.
40
7
Speed Limit Indicator
7.1
System Design
There are four main concepts that the SLI must realize at a system level. The SLI must (1)
accurately and consistently find the location of the vehicle that the system is installed within, (2)
take that position data and correctly find the road and speed limit for that location, (3) store the
speed limits and roads in an efficient and searchable manner, and (4) output the determined speed
limit to the user via the dashboard.
7.1.1
Determining Vehicle Location
An accurate and cost effective way to monitor the position of a vehicle would be to use a global
positioning system (GPS) device. However, GPS systems do not work well without a clear view of
the sky, which would be a problem in tunnels or other locations where the road is covered. In [6], a
standard is set for accuracy using 50 percent, 68 percent, and 95 percent. For example, the Garmin
eTrex was accurate within 2.7 meters 50 percent of the time, accurate within 3.8 meters 68 percent
of the time, and accurate within 6.7 meters 95 percent of the time. The average accuracy was
approximately 3 meters. This can provide challenges in areas where roads are very close to each
other, such as an urban setting or at intersections. From the software perspective, the code must be
able to handle expected errors and outlier data due to inaccuracies with GPS location data.
Others have attempted to counteract this accuracy problem by using another method in addition to
using a GPS. [7] considered an Inertial Navigation System (INS) implemented as a backup to the
GPS. There would be a control system on board that would determine which value should be used,
with the GPS used primarily if its data is reasonable. An INS system is also considered in [8], and is
tested and compared to other GPS systems being used, including an autonomous GPS system as
well as systems in which there are GPS substations located on the ground nearby. [13] also
considers inertial inputs in addition to GPS inputs, but considers a composite location that takes
into account both GPS data and inertial inputs data. Therefore, they base their location on both
systems all the time, as opposed to picking one system over the other. [11] uses the vehicle’s
odometer and a single-axis gyroscope as a secondary option to the GPS. This is an alternative to
using an inertial system and uses fewer sensors, which is more efficient. This system also uses
certain filters to determine if the information received by the sensors is accurate. [9] also uses invehicle sensors in addition to a GPS. In that case, they use another filter to analyze the information.
The majority of the systems considered receive data from the GPS and other sensors and filter that
data to determine position.
Other works focused on finding the error of the GPS device itself. The coordinates received by the
GPS can be analyzed using various techniques. [12] considers spatial bias techniques over a linear
path, then the system will use only a GPS if the vehicle is involved in a non-linear movement. [10]
follows a similar system, interpolating to find the expected deviations in the GPS readings. Both of
these systems do not have other sensors involved; they find the error by filtering the GPS readings
to determine their veracity.
41
7.1.2
Finding the Speed Limit
Once the microcontroller has received the position data from the GPS, the microcontroller must
analyze the data and find what the speed limit is for that location. In our implementation, GPS
coordinates will be stored for each tenth of a mile of road. While speed limit signs occur less often
than that, the increased resolution will make identifying road easier as there is more data to
compare. The code will identify the segment of road that the vehicle is on then find the speed limit
of that segment of road.
GPS navigation devices on the market today utilize mapping software that will take a GPS location
and find the road nearest to that location by using a map stored on the device. [14] discusses how
that process works. Mapping software is expensive to use or program from scratch, although the
production model may use such software. The team has not determined the exact costs of mapping
software at this time, as the companies found do not offer their databases to the public. There are
some free options available, such as wikispeedia [27]. The stated goal of wikispeedia is to document
the GPS coordinates of every speed limit sign on earth. The wikispeedia group has not
accomplished this goal yet, but future iterations of our design could incorporate this database,
assuming that the number of speed limit signs in the wikispeedia database increases to a sufficient
percentage. Another database is the open street map database. An overlay of the speed limits can be
visualized using itoworld.com. The resolution currently is not sufficient, as the only roads with
speed limits in the database are major roads and highways [28]. Currently, the free options for
speed limit databases do not offer enough detail for the scope of our project. The team will continue
development of the prototype while implementing our own database for the area around Calvin
College. The team will consider the other options given above for the production model of this
function.
7.1.3
Storing the Speed Limits
To store the speed limits, the system should use a nonvolatile storage device. A discussion of the
hardware differences for memory is given in Section 7.2.3. In our system, the speed limit signs are
being held in a database. Therefore, only four pieces of information need to be stored. The speed
limit, the GPS coordinates, and the direction need to be permanently stored and accessible. The
speed limit can be stored in as few as four bits, as the team is currently considering 10 speed limits
to display (see Sec. 7.2.4.2). The longitude and latitude both can be stored as long values, each
generally four bytes in size [15]. Long values allow the controller to do integer computations, which
can be performed faster than floating point operations. The decimal of the GPS coordinate is shifted
so that the full precision of the value can be stored in the long variable. The direction consists of a
value between 0 and 360 degrees. This can be stored in 12 bits, which would be enough to store the
direction with one decimal place stored as well. The value stored would be a multiple of ten greater
than the actual direction. The total space taken up by one data point would be 10 bytes.
With each speed limit location requiring ten bytes of data to be stored, the team needs to estimate
the number of locations that will need to be stored in the United States. According to the Federal
Highway Administration, there are approximately four million miles of roadways in the United
States [16]. Figure 23 shows the breakdown of road types. Approximately 35% of roads in the
42
United States are unpaved local roads, many of which may not even have a speed limit posted. If the
team stores data points for every tenth of a mile on every road in each direction, that would require
memory storage around 800 MB. Many memory options are available in that range.
Figure 23. Breakdown of Road Types [17]
7.1.4
Outputting the Speed Limit
The final concept that the SLI function must realize is to display the speed limit to the user. The
team considered transparency throughout this specific subsection, as displaying the speed limit is
the only part of this function that the user will see. To consider transparency further, we surveyed
the general population to see what ideas were the most transparent and functional. Participants
could rate each design separately on a 5 to 1 scale, from strongly like to strongly dislike.
Participants could also choose to combine multiple designs into their ideal for the final question of
the survey. The team generated five different ideas for displaying the speed limit to a standard
speedometer, which has the speeds in a circular pattern and a speed indication arrow pointing to
the specific speed. Each design is described below, and the results of the survey of 34 people is
analyzed after that.
7.1.4.1 Design 1
The first design only involves the speed indication arrow. The arrow would light green if the user
was following the speed limit and would light red if the user was exceeding the speed limit. The
speed indication arrow is always moving to some extent, so the user’s eyes would naturally be
drawn to this item on the speedometer. The primary issue with this design is that the specific speed
43
limit is not reported to the user. This design could be combined with some of the following designs,
or another way of reporting the exact speed limit could be done. The team feels that the
transparency of the design would be compromised if the user did not know the exact speed limit.
Figure 24 shows this design if the user is following the speed limit (in this case 45 miles per hour),
and Figure 25 shows this design if the user is exceeding the speed limit.
Figure 24. Design 1 with user following 45 mph speed
limit
Figure 25. Design 1 with user exceeding 45 mph speed
limit
7.1.4.2 Design 2
The second design changes the speed indicators around the speedometer as that speed is passed.
The number lights up green if the user is following the speed limit and lights up red if the user is
exceeding the speed limit. This design also does not explicitly state the speed limit, although it is
easier to determine what the speed limit is since multiple indicators are lit up at a time. The team
was hesitant to utilize this design due to the issues with transparency given in the section above.
Figure 26 shows this design if the user is following the speed limit (in this case 45 miles per hour),
and Figure 27 shows this design if the user is exceeding the speed limit.
Figure 27. Design 2 with user exceeding 45 mph speed
limit
Figure 26. Design 2 with user following 45 mph speed
limit
44
7.1.4.3 Design 3
The third design changes the speed indicator around the speedometer that corresponds to the
current speed limit. Again, the indicator lights green if the user is following the speed limit and
lights red if the user is exceeding the speed limit. In this case, an LED is used to show the speed limit
as opposed to simply backlighting the numbers. The second and third design could have been
expanded for both using an LED and backlighting the numbers. This design appears more
transparent to the team, as the explicit speed limit is displayed to the user, as well as whether or
not the user is speeding. Figure 28 shows this design if the user is following the speed limit (in this
case 45 miles per hour), and Figure 29 shows this design if the user is exceeding the speed limit.
Figure 29. Design 3 with user exceeding 45 mph speed
limit
Figure 28. Design 3 with user following 45 mph speed
limit
7.1.4.4 Design 4
The fourth design is a bar along the perimeter of the speedometer that lights up the valid speed
limits for the user. The bar is green, signifying that those speeds are allowed for use. This design
shows no red if the user exceeds the speed limit, although the speed limit is explicitly displayed to
the user. The lack of color change could be a transparency issue, as many devices use the
convention that green is good and red is bad. The colors displayed do not change as the speed
changes, and this static system may be easier to ignore for the user, nullifying the possible benefits
of this system. Figure 30 shows this design if the user is following the speed limit (in this case 45
miles per hour), and Figure 31 shows this design if the user is exceeding the speed limit.
45
Figure 30. Design 4 with user following 45 mph speed
limit
Figure 31. Design 4 with user exceeding 45 mph speed
limit
7.1.4.5 Design 5
The final design is a bar along the perimeter of the speedometer that lights up the ineligible speeds
for the user. The bar is red, signifying that those speeds are not available for user. This design only
shows red to the user, and the colors do not change as the speed changes. This design seems more
preventative in nature, as it is blocking out what is not allowed. The user will be cautious to enter
and remain in the red, and speeding should ideally be reduced. This design has similar
transparency concerns as the fourth design, as the static system may again be easier to ignore.
Figure 32 shows this design if the user is following the speed limit (in this case 45 miles per hour),
and Figure 33 shows this design if the user is exceeding the speed limit.
Figure 32. Design 5 with user following 45 mph speed
limit
Figure 33. Design 5 with user exceeding 45 mph speed
limit
Manu Kumar and Taemie Kim at Stanford University researched driver response to a dynamic
speedometer [18]. Their design displays an orange light for all speeds outside of the speed limit
range, which is nearly identical to the fifth design generated by the team. A speed limit of 40 miles
per hour would show orange lights over all speeds greater than 40 miles per hour. Figure 34 and
Figure 35 show this concept. Their system would also use various visual and audio warnings as the
driver got over a certain threshold over the speed limit. For example, a beeping sound from the
46
dashboard would begin once the driver goes five miles per hour over the speed limit. The amplitude
and frequency of that signal would increase as the driver went faster and faster over the speed
limit. Their results show that drivers have the tendency to decrease their speed when using a
dynamic speedometer. The dynamic speedometer also decreased the number of incidents of
unintentional speeding.
Figure 34. Normal Speedometer [18]
Figure 35. Speedometer with Speed Limit of 40 Miles
Per Hour [18]
7.1.4.6 Survey Results
A survey of 34 participants showed what a group of potential users felt was the most user-friendly
and transparent. Table 11 below shows the number of participants who rated each design, with 5
being strongly like and 1 being strongly dislike. The averages are also listed on that scale. The
weighted average makes the total average equal to three, since more participants voted positively
than negatively.
47
Table 11. Survey responses for each design
Strongly
Like (5)
Like
(4)
No
Opinion
(3)
Dislike
(2)
Strongly
Dislike (1)
Average
Weighted
Average
Design 1
6
20
4
3
1
3.79
3.48
Design 2
5
8
6
15
0
3.09
2.78
Design 3
12
14
1
6
1
3.88
3.50
Design 4
7
11
6
9
1
3.41
3.07
Design 5
2
6
3
18
5
2.47
2.23
Total
32
59
20
51
8
3.33
3.00
Both designs one and three scored quite well, with design four above the total average and design
two below the total average. Interestingly, the fifth design was not well received. This design was
the subject of academic research as shown in Section 7.1.4.5. Their research indicated that their
design reduced both intentional and unintentional speeding. It is possible that the fifth design is
best suited to discourage speeding, although it is not the most user-friendly. The team decided that
transparency and caring were important factors in the decision making process, and the opinions of
these participants was weighed very heavily. The third design easily had the most strong likes,
although the number that both liked and strongly liked that design equaled the number for the first
design. In the open-ended question at the end of the survey, multiple comments suggested a
gradient of color, slowly transitioning from green to red as the user begins to speed. Other
suggestions included using a noise or flashing lights for excessive speeding. The team decided that
those suggested features would be helpful but not necessary to implement for the prototype, and
that the team would consider designing these features if time would allow.
7.1.4.7 Decision
The team selected the third design to implement for the prototype model. When choosing between
the third and the first design, the team chose the third design for its transparency, ease to
implement, and highest average score in the survey. The team could improve this design using
some of the participant suggestions such as a light gradient or noise, although that would be
considered an extra feature that is not necessary to the design of the prototype.
7.2
Hardware System Design
The hardware necessary for the SLI is as follows: a GPS, a microcontroller, memory, and the LED
output. Figure 36 shows a block diagram of the hardware components, and shows the expected
communication between those components. This section currently considers the prototype
48
components only. The team will develop criteria for the production model and include those
decisions in a future report.
Figure 36. SLI Hardware Diagram
Table 12. Signals Used In Figure 36
Signal
Explanation
TTL/RS-232
GPS has option to use either TTL or RS-232 communication
SD
SD Card. Signals include Vcc (3.3V), GND, Data In (MOSI), Data Out (MISO),
CLK, Card Select
5x D OUT
Digital output going to the display, either 0V, 5V, or Hi-Z
5V
Signal from the Voltage Regulator, stepping signal down to 5 volts
B IN
Input from the battery to be stepped down (9-15V, 50 mA max current)
7.2.1
GPS
7.2.1.1 Criteria
The team determined which GPS to use for the prototype based on several criteria. The criteria are
listed below with their weight for the decision matrix. All the devices that we considered had an
internal antenna, so the team could not use that as a design criterion. The sum of the weights is 100.
Cost [30]
The cost is a key criterion, as the team needs to operate under a budget as determined by the Senior
Design class instructors.
Start-Up Time [20]
There are different ways to determine the start-up time of the GPS. Most GPS modules list a hot
start, warm start, and cold start. The most important of those in this instance is the cold start-up
49
time. This is generally between 30 seconds and one minute. The other times are small enough (< 2
sec) that they are not as significant in the operation of the device. Many of the GPS modules
considered had update times of one second. The warm and hot start-up times are approximately
equal to the update rate; therefore, those start-up times may be noticeable but not detrimental to
the overall effect of the function. The team weighted the GPS’s cold start-up time higher within this
criterion than the other start-up times.
Ease in Communication and Software Control [15]
The team should be able to control the GPS easily from the microcontroller. Libraries and
documentation exist to prove compatibility between the GPS and the microcontroller.
Ease in Electrical Interfacing [10]
The GPS must be simple to implement into our prototype. The electrical interface should allow
simple communication between the microcontroller and the GPS.
Power Consumption [10]
Power consumption relates to the amount of current drawn by the device. The GPS should keep the
power consumption relatively low, as the team wants to be good stewards of the electricity in the
system.
Accuracy [10]
This refers to the reported accuracy in adverse conditions, such as areas with obstructions like
trees and buildings. This is important to consider as the code must be able to account for some
inaccuracies in the GPS data.
Number of Channels [5]
The number of channels in the GPS refers to how many satellites the GPS can acquire and read from
at the same time. This value is not very important, as the number of channels on all the devices
considered would be sufficient for this project, albeit with slightly different response times. More
channels does provide a vast array of benefits, as given in [29].
7.2.1.2 Alternatives
Given these criteria, the team considered four GPS modules for the prototype of this project, given
in Table 13. A decision matrix is given in Table 14, with each GPS rated in each criterion on a scale
from one to ten, with ten being the best in that particular area. The final scores are given for each
GPS module, with a percentage of the total possible given as well.
50
Table 13. GPS Alternatives
Cost
# of
Channels
Cold
Start-Up
Time (s)
Voltage
(V)
Power
Use
(mW)
Accuracy
(m)
Temp
Range
(°C)
EM406A
$40
20
42
4.5–6.5
220
10
-40 to
85
Polstar
[20]
10-019
$15
12
50
3.3–5
120
5
-40 to
70
Sparkfun
[21]
Locosys20031
$60
66
35
3–4.2
135
3
-30 to
85
Parallax
[22]
PMB648
$40
20
42
3.3–5
325
5
-20 to
70
GPS
Seller
Model
Number
Futurlec
[19]
Table 14. Decision Matrix for GPS Selection
Priority
EM-406A
Polstar
10-019
Locosys20031
PMB-648
Cost
30
5
10
2
5
Start-Up Time
20
6
2
9
6
Communication and
Software Control
15
7
2
2
9
Electrical Interfacing
10
7
2
2
9
Power Consumption
10
5
9
8
2
Accuracy
10
3
6
8
6
Number of Channels
5
3
2
10
3
Total
540
550
500
590
7.2.1.3 Decisions
All four GPS devices had scores similar to the others, with the Parallax PMB-648 scoring the best.
The PMB-648 is very easy to implement, as documentation exists for connecting it to various
microcontrollers. This is reassuring, as other groups have been able to successfully read data from
this device using a simple microcontroller. The PMB-648 is in the middle price range, which is
reasonable for this project. This decision matrix proves that all of the options would be generally
sufficient for this project, as none of them scored significantly lower than the others. The team
selected the PMB-648 GPS for the benefits given above.
51
7.2.2
Microcontroller
Section 5.2.2 gives a detailed discussion of microcontroller selection. The design criteria all apply to
the SLI as well. The cost remains an important factor as both functions are being designed for the
senior design class. The ease of use is vital to the timely completion of the prototype. The support
community also helps accelerate progress through issues. The power consumption ties directly to
our desire for a positive societal impact, which applies to each function. The number of pins is a
factor as the microcontroller will be shared with the RDW system. The onboard memory
capabilities dictate the scope to which testing can be done without an external memory source. All
of the design criteria apply, so the decision made in Section 5.2.2 applies to the SLI function as well.
Late in the design process, the team discovered that the size of the code written was too large to fit
onto the Arduino Uno selected. The team purchased an Arduino Mega, as the system designed to
that point could be easily ported to the Mega and the Mega has an order of magnitude increase in
onboard memory (256 kB vs. 32 kB). The team learned that the onboard memory criterion
considered in Section 5.2.2.1 should have been a larger weight. In that case, the Pinguino would
have been chosen over the Arduino Uno. The code written was larger than expected, as the code to
control the LED display and the SD card memory were both larger than expected.
7.2.3
Memory
7.2.3.1 Criteria
As discussed in Section 7.1.3, the memory of this system should approximately one gigabyte (800
megabytes is a reasonable estimate). However, the prototype will only store speed limits for a small
area around Calvin College. Therefore, the amount of memory necessary drops by orders of
magnitude. In a worst-case estimate, a grid of roads 300 feet apart would fill the two-mile area
around Calvin College. Assuming a square around Calvin College that is 4 miles per side, this would
result in approximately 80,000 miles of road in the area. Taking data points every tenth of a mile
with ten bytes to store each location, which would take up 8 kilobytes of space. This is an
unreasonably high estimate, but it provides approximate upper bounds for our database. The
memory available on the selected Arduino microcontroller would be enough to do initial testing,
although it may not be enough for the final prototype. The additional memory needs to be able to
interface with a microcontroller very easily and be cost effective. The memory should also be fast
and fit within the temperature range considered in REQ 4.1.1.2a.
7.2.3.2 Alternatives
Many surface mount memory devices are inexpensive and can store great quantities of information.
Unfortunately, they are difficult to implement with a development board. One example is 2 GB of
flash memory sold at DigiKey [23]. The most common memory addition to an Arduino
microcontroller is to use an SD card. Various Arduino shields on the market handle all of the voltage
regulation necessary to interface an Arduino and an SD card. SD cards can be inexpensive as well,
selling for under $10 for 4 GB.
52
7.2.3.3 Decisions
Surface mount devices can be less expensive, but are difficult to use with a microcontroller. The
cost to solder that memory device to a board and then use a microcontroller makes it more difficult
to implement. While an SD card system would cost more (including the cost of an SD shield), it
would be simple to implement and save time without sacrificing too much in terms of cost.
The team chose to use a microSD card and shield for the Arduino. MicroSD cards have sufficient
capacity for our prototype implementation, as the chosen microSD card is 2 gigabytes. The 2
gigabyte microSD cards are the largest microSD cards that use the FAT16 file system, which is
recommended when using the SD library for Arduino. The explicit details for how the microSD card
was utilized for the database is given in Section 7.3.3.5.
7.2.4
Outputs
7.2.4.1 Criteria
The output to the user must be easy to understand and not distract the driver. The team is
considering implementing a single light with two different states, depending on whether the driver
is exceeding the speed limit or following the speed limit.. The output system must be able to display
both conditions.
In addition to the lights to indicate the speed limit, the team implemented a speedometer to
indicate the current speed of the vehicle. For the production model, this would not be necessary, as
the speedometer used in the car normally would be used. This functionality is to make the
prototype’s functionality more clear. The speed of the car would need to be output using the
conventional speed indication arrow.
7.2.4.2 Alternatives
Section 12.1.4 discusses ways in which the system can display the speed limit. RGB LEDs can be
placed at each speed limit (25, 30, 35, 40, 45, 50, 55, 60, 65, 70) around the speedometer, and only
one LED would be lit at any given time. Using the method used by Kumar and Kim, a series of LEDs
again could be used, or perhaps an LED strip of some kind. A seven-segment display could output
the speed limit separate from the speedometer, but another indicator would be necessary to report
a case of speeding to the driver. See Section 7.1.4 for alternatives for displaying the speed limit.
To indicate the speed of the vehicle, the speed data gathered via the GPS can be used to update the
speedometer. This would make the update rate of the speedometer equal to that of the GPS, which
is one second for the GPS selected. A servo is used to control the arrow to indicate the speed. Two
choices of servos were available to the team: (1) continuous and (2) standard. Continuous servos
are controlled by moving clockwise or counterclockwise from their current position, while
standard servos are controlled by moving to a specified angle.
7.2.4.3 Decisions
With our current design, using RGB LEDs makes the most sense. LED strips and seven segment
displays would work better in other designs. Figure 37 shows the circuit for the LED array. The LED
53
array does not need to use a demultiplexer due to the method used, called charlieplexing. This
allows each individual LED to be lit by providing 5V to one lead and ground to another while
applying the high-impedance input state to the other leads. The input state ensures that the current
flowing from that pin is near zero, so no LEDs will be lit except the one specified.
Figure 37. Charlieplexing RGB LEDs circuit
Using common cathode RGB LEDs increases the complexity of the design, as two LEDs share one
cathode pin. The schematic in Figure 37 accounts for this. Table 15 shows the LEDs and the pins to
which they are connected. Each line is connected to a pin of the microcontroller so it can be
properly controlled. The software on the microcontroller can then determine which pins are set to
5V, ground, and input to light the individual LED. The forward voltages of the green and red LEDs
are different, at 3.2V and 2.0V respectively, which means that other LEDs may light. This happens
because there are other current paths that can travel between 5V and ground that are possible if
the forward voltages are not matched. This problem was solved by adding resistors to each line,
thus decreasing the voltage drop possible in each LED. The LEDs will be slightly dimmer, but only
the LED assigned to light will light.
54
Table 15. Line Assignments for each RGB LED
Speed Limit
Red Cathode (+)
Red Anode (-)
Green Cathode (+)
Green Anode (-)
25
2
1
3
1
30
4
1
5
1
35
1
2
3
2
40
4
2
5
2
45
1
3
2
3
50
4
3
5
3
55
1
4
2
4
60
3
4
5
4
65
1
5
2
5
70
3
5
4
5
The first version of the LED display was a charlieplexed circuit using single-color component LEDs.
This was done to show the feasibility of charlieplexing as a concept. The team used a breadboard to
speed up the build of this version, as it was never designed to go on the road and be tested. Figure
38 shows the first version of the LED display.
55
Figure 38. First Implementation of the LED Display
The second version of the LED display used RGB LEDs soldered to a perforated board. This version
could be tested on the road, as it was a standalone model. This display uses the circuit shown in
Figure 37 and tests the feasibility of charlieplexing common-cathode RGB LEDs. Figure 39 shows
this integration, including the wires to connect to the microcontroller.
Figure 39. Second Implementation of the LED Display
The third and final version of the LED display was wired in the same way as the second version of
the LED display. The final version was interfaced with an actual speedometer to give an example of
how the SLI would look in an actual automobile. Diffused RGB LEDs were used for the final version
to increase the viewing angle and decrease the brightness of head-on viewing. Figure 40 shows the
final integration.
56
Figure 40. Third Implementation of the LED Display
The team selected a standard servo over a continuous servo. Standard servos will go to an exact
position, so once the speedometer arrow is calibrated, the servo will output the correct speed every
time after calibration. The servo was mounted to the speedometer for the final version of the LED
display as shown in Figure 41.
Figure 41. Final Implementation of the LED Display with Servo for Speedometer Arrow
57
7.3
Software System Design
The software running on the microcontroller will receive data from the GPS, analyze that data to
find the correct speed limit, and then output that speed limit to the outputs. Figure 42 shows a basic
block diagram for the software system. The update rate of the GPS limits the abilities of the
software. The update rate for the GPS selected is one second. The software will run as fast as
possible given that constraint. The current software can be found on The Smart Dashboard’s
website: http://www.calvin.edu/academic/engineering/2012-13-team13/docs.html.
Figure 42. SLI Software Diagram
58
7.3.1
Criteria
The software needs to manage the following pieces: a database of speed limits with their GPS
coordinates, a GPS that outputs position, velocity, and direction, and an output that consists of an
LED display. The code must tie all three of those pieces together while also providing sufficient
noise reduction and error correction. After the initialization process, the code reads and extracts
the relevant data from the GPS. At that point, a noise filter analyzes the data. If an error exists in the
data, then the code will increment an error counter. If the code recognizes more than three
consecutive errors, then something significant has gone wrong so nothing is output to the user. If
no errors exist in the signal, the code searches for the location in memory. If the data cannot be
mapped to a speed limit, an unknown road counter is incremented. If the code recognizes more
than three consecutive unknown road signals, then the database does not understand where the
vehicle is located. In this case, the code displays nothing to the user. If the data can be mapped to a
speed limit, then the counters for error and unknown roads are reset to zero. If the speed limit is
different from the current value, then a new display pattern is stored. In both cases, the controller
drives the LEDs with the display pattern.
7.3.2
Alternatives
The code to decode the GPS information is standard, as the code takes in data as a character array
then breaks that array down into its various components. There is one major tradeoff to consider
for finding the speed limit: the size of the area to look in and the robustness of the code to analyze
within that area. The software will need to look in an area around the current location, as GPS data
is never exact. As the size of the area increases, it is more likely that other roads will be found and it
will be more difficult to determine what the speed limit is. With a small area, the code does not need
to be as robust, but more data will need to be taken in the database in order to support a small area.
With a larger area, the database can be smaller, although the code to analyze the area will need to
be more complex. This is a tradeoff the team considered when designing the algorithms described
in the following section.
7.3.3
Decisions
For the prototype, the selected Arduino microcontroller supports code in C or C++. The team has
experience with these programming languages, which makes them ideally suited for the prototype.
The team chose to use C++ as the team does have more experience with C++ over C. Arduino has its
own IDE, which takes care of the compiling and loading necessary for the prototype. The database
will be stored on the microSD card in small blocks. Figure 43 shows a sample block in the area
around Calvin College. This allows the data for the block the vehicle is currently in to be stored on
the Arduino itself. This will reduce the amount of memory accesses for the microSD card, which
should improve performance. Testing of this performance is given in Section 8.3.2.3.3. Section
7.3.3.5 offers a detailed explanation of the database interface on the microSD card.
59
Figure 43. Boxes showing the size of a single part of the database
The team has developed algorithms for each block from Figure 42, and the following sections offer
explanations of all the blocks.
7.3.3.1 Initialize Controller/Initialize GPS
These two blocks include all the necessary libraries as well as initialize all the variables necessary
for the code to run. The GPS communicates via TTL serial communication, and is controlled via the
Software Serial library. Global variables are used for the current latitude, longitude, course made
good, and speed. These variables are updated in the extract data block and are used when searching
for location and determining if data needs to be read from the microSD card.
7.3.3.2 Read Data From GPS
The GPS follows standards set by the National Marine Electronics Association (NMEA), specifically
the 0183 protocol. This protocol states that data strings coming in must be comma delimited, and
all strings are made up of ASCII characters [49]. The Parallax GPS selected transmits four of those
GPS strings: (1) GPS fix data ($GPGGA), (2) GPS satellites in view ($GPGSV), (3) GPS dilution of
precision and active satellites ($GPGSA), and (4) recommended minimum specific GPS data
($GPRMC). The string that contains the information relevant to this system is the $GPRMC string. It
contains latitude, longitude, course made good, and speed over ground. This string is the only one
that will be stored by the Arduino, as the string also contains a byte that tells if the string has valid
data or an error has occurred (such as no satellites in range).
60
7.3.3.3 Extract Latitude, Longitude, Direction, Speed Data
Since the GPS strings follow the NMEA 0183 protocol, the data is comma delimited. This allows the
team to extract the relevant information from the string using software. Only the latitude, longitude,
course made good, and speed data are extracted, while the other information within the string is
ignored. The function that extracts the data returns 1 if the function completed properly and the
relevant data was updated, returns 0 if the GPS string found was not the $GPRMC string, and
returns -1 if an error occurred. An error can occur if the GPS does not have the proper satellites in
view, or if the code itself encountered an error extracting the data. These errors are used for the
error-checking block in Section 7.3.3.4.
7.3.3.4 Error-Checking
In this system, the error-checking block is very simple. If the GPS extraction block returns -1, an
error has occurred and the error counter is incremented. Every time the GPS extraction block
returns 1, valid data has been found and the error counter is reset. The error counter is not reset if
the GPS extraction block returns 0, since errors in the relevant $GPRMC string could exist even
though the GPS extraction block found no specific errors and returned 0.
7.3.3.5 Reading from the SD Card
In order to use the database stored on the microSD card, certain conventions were created to allow
data to be collected and used easily. Descriptions of three major factors going into the creation of
the database are given below.
7.3.3.5.1
Naming Conventions
The database on the microSD card is stored in small enough pieces that one piece of the database
could be stored on the Arduino at all times. The FAT16 file system uses a short filename (or 8.3
filename) that limits the size of the name of the file. The file can be named using eight characters,
which can be followed by a period and up to three letters of file extension. In order to minimize the
amount of data points in each file, a naming system needed to be created that allowed minimal area
and distinct file names. To name files, four digits from latitude and longitude are combined to create
the eight character filename. Since latitude ranges from 90 degrees to -90 degrees, the first four
digits can be taken. This yields precision to a hundredth of a degree latitude. However, longitude
ranges from 180 degrees to -180 degrees. Decimal precision to a hundredth of a degree is still
possible, if the values above 100 and below -100 are accounted for in the file extension.
The file extension makes up three letters, and each character helps identify what data is contained
and what location it corresponds to. The first letter corresponds to the latitude. If the latitude is
positive, the first letter of the file extension will be a ‘P’ (for ‘positive’). If the latitude is negative,
then the first letter of the file extension will be an ‘N’ (for ‘negative’). The second letter corresponds
to the longitude. If the longitude is positive and greater than or equal to 100 degrees, the second
letter of the file extension will be a ‘B’ (for ‘big’). If the longitude is positive but less than 100
degrees, the second letter of the file extension will be a ‘P’ (for ‘positive’). If the longitude is
negative and less than or equal to -100 degrees, the second letter of the file extension will be an ‘S’
(for ‘small’). Finally, if the longitude is negative but greater than -100 degrees, the second letter of
61
the file extension will be an ‘N’ (for ‘negative’). The last letter of the file extension corresponds to
the type of data stored in that particular file. Four different files are created at each location. First,
the latitude and longitude are stored together, and the last letter of that file extension will be a ‘G’
(for ‘GPS coordinates’). Second, the course made good data is stored in files where the last letter of
the file extension is a ‘C’ (for ‘course made good’). Third, the speed limits are stored in files where
the last letter of the file extension is an ‘S’ (for ‘speed limit’). Finally, the number of data points
stored for that particular location is stored in files where the last letter of the file extension is a ‘N’
(for ‘number of points’).
For example, at a location with latitude -32.8631234 degrees and longitude 124.8846482 degrees,
the speed limit data would be stored in the file 32862488.NBS. The file extensions are crucial, as the
speed limit data in the file 32862488.PNS would be for the location with latitude 32.86 degrees and
longitude -24.88 degrees. The first location is in western Australia, while the second location is in
the middle of the ocean west of Morocco. The file names are the same, but the file extensions hold
crucial information necessary to being in the right location.
7.3.3.5.2
Box Size
The two boxes shown in Figure 43 correspond to the actual data stored in the bigger box and the
area covered where the GPS will use that particular file. The smaller box corresponds to one
hundredth of a degree in both latitude and longitude. In that particular location, the box is 0.69
miles tall and 0.51 miles wide, yielding a total area of 0.35 square miles. The actual data stored in a
file covers a larger area than the file itself. Due to the method of triangulation for determining
location (see Section 7.3.3.7), a thousandth of a degree buffer surrounds the entire box that the file
covers. In this way, the data points ahead of the driver will still be found even if the vehicle is near a
file boundary and has not changed files yet. In the location used in Figure 43, the larger box is 0.83
miles tall and 0.61 miles wide, yielding a total area of 0.51 miles.
7.3.3.5.3
GPS Data Logging
In order to create the database, a GPS data logging program was written to automatically place the
data into the correct files. This required driving around all of the streets within the database, but
the data collected would not need to be edited in order to be used in the database. Using the Ardino
serial window, the user would enter the speed limit manually as the vehicle went along, but the
course made good, latitude, and longitude data would be automatically stored at a certain interval
(3 seconds). Since manual operation was necessary, the driver of the vehicle did not interact with
the system, and a passenger would operate the data logging code. The code would handle the buffer
zone issues discussed in Section 7.3.3.5.2, so the data would need to be written to a maximum of
four files and a minimum of one file.
7.3.3.6 Overwrite Arduino data with SD data
In order to search for the speed limits in the area, the correct data must be on the Arduino to
decrease latency due to memory reading and writing from the microSD card. Once the position has
been updated via the GPS device, the software checks to see if the files currently loaded on the
Arduino are correct for the current location. If they are not, the Arduino overwrites the current data
62
on the Arduino with the new files from the microSD card. There is a threshold for the largest a file
can be while also being stored on the Arduino. At this point, no files are larger than this threshold,
but further data could push this above the threshold. The largest current file holds 78 speed limits,
while that maximum threshold is set at 500 speed limits. If size of the file on the microSD card is too
large, the data will not copy and an error will occur until the vehicle enters a new area with a file
smaller than the threshold.
7.3.3.7 Search for location
To find the speed limit, the software searches the area around the vehicle’s current location and
decides which of the points in the database best describe the vehicle’s current location. This is done
because GPS coordinates are never exact, especially at the precision to which they are being stored.
The team decided to use a triangle around the vehicle’s current position, shown in Figure 44. The
points within a triangle can be calculated easily using simple algebra, which made it an ideal choice
for the shape to surround the point. The triangle points in the direction that the vehicle is currently
travelling, so the example in Figure 44 shows the vehicle travelling west.
Figure 44. Current vehicle location with the bounding triangle
The code then determines which points in the database are contained within that triangle. In Figure
45, the small circles represent data points stored in the database. The software determines that
63
three of the database points are within the triangle, and performs operations to determine which of
the points are valid for the road the vehicle is currently on.
Figure 45. Bounding triangle with all database points in the area
Figure 46 shows that one of the points is not correct, at 25 miles per hour. The software would first
check if there are any points within the triangle or not. If no points were found within the triangle,
the unknown road counter would be incremented. If any number of points were found within the
triangle, the software would determine if the speed limits all match. If all the speed limits found are
equal, that is determined to be the new speed limit. If differences in speed limit are found, the
software uses the course made good data to determine which points are valid. If the course made
good data from the database is within thirty degrees of the current course made good of the vehicle,
that point is determined to be valid. The value of thirty degrees safeguards against slight errors in
the sensors as well as curvature in the road. If the points within thirty degrees still have different
speed limits, the software decides to set the speed limit as the previous speed limit determined.
This means that merging could result in the previous speed limit being used until the vehicle is
sufficiently far away from the road they merged from, but this situation is more rare than staying on
the same road and another road running parallel to it nearby. In the example given in Figure 46, the
25 miles per hour point is ruled out as it is facing north (or south), while the 30 miles per hour
points are facing east (or west). The speed limit in that situation is determined to be 30 miles per
hour.
64
Figure 46. Speed limit data shown for points within the bounding triangle
7.3.3.8 Error/Unknown Road Counter
The error counter is only incremented if an error occurs with the GPS device, the GPS data
extraction code, or the microSD card code. Each time the code successfully determines the speed
limit, the error counter is set to zero. If the error counter is greater than three, a sufficient number
of errors has occurred and the speed limit that is currently output is incorrect. In this case, the LED
display outputs nothing. A non-zero error counter that is less than or equal to three will not change
what is driven to the LEDs.
The software manages the unknown road counter separately from the error counter. The unknown
road counter is incremented only when the number of points in the database found in the bounding
triangle is equal to zero. If the bounding triangle contains points from the database, the unknown
road counter is set to zero. When the unknown road counter is greater than three, too much time
has passed since finding points in the database, so the vehicle must be outside the range of the
database. In this case, the LED display outputs nothing. A non-zero unknown road counter that is
less than or equal to three will not change what is driven to the LEDs.
7.3.3.9 Output Speed Limit
The LED array is a charlieplexed set of RGB LEDs as described in Section 7.2.4. To light a single LED,
three of the pins are set to be high impedance inputs, while the other two pins are set to 5 volts
65
(high) and ground (low). The pin assignments for the LEDs is given in Section 7.2.4.3 in Table 15.
The software first sets all of the pins to input state to ensure no other LEDs temporarily light while
the switch is being made. A large case statement with all of the pin assignments will set one pin to
output high and one pin to output low based on the pin assignment. Functions exist for specialized
outputs, which consist of outputting error messages and outputting the fact that the GPS has
connected properly. Specialized error messages can be output to the LED array to help debug
specific portions of the code during final testing. Any errors can be quickly identified using this
method.
66
7.4
Initial Printed Circuit Board Design
For the final project in May, the team would like to design a printed circuit board for the prototype
model. Figure 47 shows the initial printed circuit board (PCB) layout, using the components and
dimensions listed in Table 16. This PCB layout includes the parts necessary for all three functions of
The Smart Dashboard. The overall size of the PCB is 1.75 inches x 1.5 inches. This is the minimum
size that the team could be produce. A reasonable estimate is a board that is 2 inches x 2 inches.
Figure 47. Initial PCB Layout. Parts listed in Table 16
Table 16. Table of Components for Figure 47
Component ID
Component
Dimensions (in)
1
Accelerometer
0.2103 x 0.1315
2
GPS
0.5512 x 0.4016
3
Memory
0.4331 x 0.3544
4
Demultiplexer
0.4134 x 0.6182
5
Processor
0.6575 x 0.6575
6
Resistors
0.1260 x 0.0630
7
Connector
0.7481 x 0.6154
The team did not place a high priority on producing a PCB for this project. The team would have
liked to produce a PCB, but the team was occupied with finishing the prototypes completely as they
are described, and no time remained to design and produce an actual PCB. The design of a PCB is
considered in the productions model financials, given in Section 9.3.2.
67
8
Integration and Testing
8.1
Rapid Deceleration Warning
8.1.1
Testing Method
The team continues to prepare a set of tests to prove the performance of the system as described in
the Objectives and Requirements (Chapter 4) and the specific system architecture (Chapter 5). The
tests are described in detail below. This list is not inclusive, as the team continues to iterate through
different tests.
8.1.1.1 Latency Test
This test considers the overall speed of the system. Requirement 4.4.1.3b states that the time
between reading in a deceleration value above the threshold and detecting and outputting the
pulsed signal should be less than 50ms. The time elapsed is measured by taking the time before
and after this section of code. The time elapsed is stored for twenty different runs through the
code.
8.1.1.2 Scale Model Test
This test is qualitative in nature and it considers the operation of the system on a smaller scale. The
team mounted the components of the system (microcontroller, accelerometer) to an RC car, using
component LEDs as miniature brake lights. Figure 48 and Figure 49 show the interior and exterior
of the scale model. The team mounted a small breadboard to the back of the RC car to connect the
microcontroller, accelerometer, and the component LEDs. A 9V battery mounted to the side of the
RC car provided the necessary power. The team also used this model to provide a proof of concept
and support the feasibility of the system.
Figure 48. RDW Scale Model Interior
Figure 49. RDW Scale Model Exterior
68
8.1.1.3 Prototype Test
This test is also mostly qualitative and it considers the operation of the system under real-life
conditions. The team assembled a prototype of the system with an isolated center high mounted
brake light and 9-volt power supply as shown in Figure 50. The team placed the system within an
actual vehicle and examined the response of the brake lights to various acceleration conditions.
Figure 50. Prototype Model
8.1.2
Test Results
8.1.2.1 Latency Test
Time to Detect Rapid
Deceleration (ms)
An important requirement of the system is that it detects a rapid deceleration quickly. Figure 51
shows the data that the team obtained for this test. The time between the start of the main loop and
detecting a rapid deceleration fluctuated between 16 and 20ms over twenty runs. Therefore, the
team can conclude with a reasonable amount of confidence that the system meets Requirement
4.4.1.1b.
RDW Latency Test
25
20
15
10
5
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Run #
Figure 51. RDW Latency Test
69
8.1.2.2 Scale Model Test
The team’s initial design of the system flashed the brake lights of the vehicle only when its
deceleration is above the specified threshold. After examining the operation of the scale model, the
team realized that, since the deceleration is often only above the threshold for a moment, the brake
lights do not flash long enough to be noticeable. Given the project’s design norm of transparency
and objective 4.4.2.1a, the team changed the system to allow the brake lights to flash for a specified
amount of time after the system detects a rapid deceleration (see Section 5.4.3). This gives the
following driver a chance to realize what is happening.
8.1.2.3 Prototype Test
Video of the working prototype is available on the homepage of The Smart Dashboard’s website:
http://www.calvin.edu/academic/engineering/2012-13-team13/. The team realized that they
needed to decrease the deceleration threshold for testing because the required threshold of 6 m/s2
truly only attained in an emergency braking scenario. Therefore, the testing threshold was set to
2.5 m/s2 and the team started testing by braking the car softly, which demonstrated that at a low
deceleration the brake light did not flash. The team then applied the brakes hard and observed that
the time that the light flashed coincided with the time limit specified in software. Finally, the team
applied the brakes hard for a longer period and observed that the light flashed until the
deceleration had dropped below the threshold. This was a successful test in simply demonstrating
the functionality of the system.
8.2
Driver Awareness Sensor
8.2.1
Testing Method
This section details the set of tests that the team wanted to run on the prototype to prove the
performance of the system as described in the Objectives and Requirements (Chapter 4) and the
specific system architecture (Chapter 6). The tests are described in detail below. This list is not
inclusive, as the team continues to iterate through different tests. The team performed most of the
testing during the writing of the software as functionality was added. For example, the team tested
to make sure the system could capture video and process the images from the camera as the team
wrote the code. This process was generally a test to see if it worked or not. If it failed, the team
rewrote the code and iteratively tested until the code performed as desired.
8.2.1.1 Frame Rate Test
This test will determine if the microcontroller can process the frames from the camera at an
acceptable rate. The average blink rate is between 100-400ms [53]. In order to capture a blink in
four frames, the frame rate should be between 10-40 fps. The frame rate can tend towards the
lower frame rates because the blink duration increases as the level of drowsiness increases. The
team will run initial tests to determine how fast the system can grab frames from the camera and
process them into a usable state. The grab() function grabs a raw image from the camera. The
read() function performs the grab() function as well as decodes it to make it usable. These functions
will be run 1000 times and the times averaged to get the results.
70
8.2.1.2 Blink Accuracy Test
This test will determine what percentage of blinks are picked up by the system. If the system can
track an eye blinking consistently, then it will be able to detect someone’s eyes closing for longer
than a standard blink. The team will perform this test on multiple people and the team will analyze
how many blinks were recorded accurately.
8.2.1.3 Lighting Test
This test will analyze face and eye tracking in different lighting conditions. This function must work
in nighttime as well as daytime, so a lighting test is necessary to ensure proper operation. The team
will perform this test with different lighting conditions and record the total time the system
correctly identified the face and eyes.
8.2.2
Test Results
8.2.2.1 Frame Rate Test
This test was run multiple times using different settings on the Raspberry Pi. Initial results were
showing frame rates around 2-3 fps, which is significantly below the acceptable level. After some
research, the team found a kernel update [54] for the Raspberry Pi, which significantly increased
the frame rate. Before the update, the function time was very inconsistent, as well as being slower
than expected. After the update, the function time was much more consistent and significantly
faster.
The team also experimented with overclocking the system and changing the amount of memory
allocated to the GPU. The overclocking made a significant difference while changing the memory
allocation did not make a noticeable difference.
71
Table 17. Frame Rate Test Results from Kernel Update
Scenario
Grab() (ms) Read() (ms)
Initial
369
386
After kernel update
74
90
Removed 20ms wait in code, which was necessary before update
57
73
Table 18. Frame Rate Test Results for Overclocking
Overclock Setting Grab() (ms) Read() (ms)
None – 700MHz
57
73
Modest – 800MHz
53
68
Medium – 900MHz
49
63
High – 950MHz
48
61
Turbo – 1000MHz
34
44
Table 19. Frame Rate Test Results from GPU Memory Allocation
GPU / CPU Memory Split (MB) Grab() (ms) Read() (ms)
16/492
57
72
64/448
57
72
128/384
57
72
256/256
57
72
8.2.2.2 Blink Accuracy Test
The final prototype is unable to detect blinks on its own. Therefore, the team could not perform this
test as desired. However, the graph of the average eye brightness, discussed in section 6.3.7, does
show indication of blinks that can be visually determined by an observer.
8.2.2.3 Lighting Test
Due to time constraints, the team was unable to perform quantitative lighting tests. However, by
observing the variation of caused by differing lighting conditions, the team was able to note that
proper lighting is important for accurately locating the face. Additionally, the average eye
brightness is very dependent on the lighting. When the lighting on the face fluctuates, the graph is
very inconsistent and it is difficult to detect blinks.
8.2.3
Current Integration
The team was able to connect the camera to the RaspberryPi and perform initial testing. The team
configured the final prototype to run from a desktop computer, due to limitations with the
72
RaspberryPi. Figure ### shows display of the final prototype. This display shows the various steps
the team used to determine the blinks of the driver. The team implemented the facial illuminator on
a breadboard and directed the light towards the driver.
Figure 52. Display from Final Prototype
8.3
Speed Limit Indicator
8.3.1
Testing Method
The team continues to prepare a set of tests to prove the performance of the system as described in
the Objectives and Requirements (Chapter 4) and the specific system architecture (Chapter 7). The
tests are described in detail below. This list is not inclusive, as the team continues to iterate through
different tests.
8.3.1.1 GPS Accuracy Test
The team will need to test the GPS for its accuracy in adverse conditions. This can include poor
weather (cloudy/foggy), trees, tall buildings, and tunnels. The team has not created a specific test to
73
accomplish this task. It will come on a future report. The team has tested the GPS for accuracy as a
control in good conditions.
For the first test, the team went to 10 points on Calvin College’s campus, and we took the GPS to
them and recorded the data for latitude and longitude. The team visited the ten points more than
once, to see if the results become more accurate as time goes on. The team entered the longitude
and latitude data into Google Maps to find the error in meters. The approximate error for this test is
one meter, due to the accuracy of Google Maps and the human error involved in walking the GPS
around campus.
A second accuracy test was be run on the road, which is the application of this project. Since this
test is a combination of a speed test and position test, the position was displayed every seven reads.
This retained enough accuracy for a position test while being able to test the speed every output
without the data being cluttered.
A third test involved driving around Ann Arbor, in both country and city roads. This test considered
GPS obstructions in people’s daily commutes, such as tall buildings in downtown and trees in the
country.
8.3.1.2 GPS Velocity Test
The GPS not only reports position data, but velocity data as well. This information will be used to
output a different color LED if the driver is going more than 10 miles per hour over the speed limit.
The consistency of the GPS velocity information should be determined to find how sensitive that
code can be written. The team has not created a specific test to accomplish this task. It will come on
a future report. A quantitative analysis has been done by monitoring the vehicle’s speed and the
output from the GPS from within the car.
The first speed test will look at the speed (in miles per hour) returned by the GPS device. This will
be monitored within the vehicle, as quantitative analysis of the speed would be difficult to achieve.
For an initial test, a qualitative analysis of the speed limit accuracy is enough, especially since this
data is not necessary for the primary function of this device. Further testing is necessary to make a
quantitative assessment of the speed accuracy. Besides the speed limit, the course made good data
was analyzed, as that could be used in the GPS position algorithm. The course made good depicts
which direction you are headed in, as a measure of degrees from north. This data will be analyzed
using a similar quantitative analysis as for the speed data.
8.3.1.3 Latency Test
For the SLI function, multiple blocks of software can be tested for their performance. The GPS
device updates every second, so in a worst-case scenario all possible computations necessary
should be completed in less than one second. To time each section of code, the time is taken before
and after the block of code is executed. The time elapsed is stored for fifty different runs through
the code. Fifty was used as an arbitrary first number, and may be altered if the results seem to be
affected by this value. All of the times will be output as well as the average so that the data can be
74
analyzed. The blocks of software that are considered large enough to be a major burden on
compute time are described below.
8.3.1.3.1
Extracting values from GPS string
This block of code is run immediately after each GPS string received is deemed valid. This code is
run every time the GPS is updated, so this code runs every second. The time for this block of code is
useful to know as it is a guaranteed loss for each run. Subtracting this time from one second would
give the total time allowed by the other sections.
8.3.1.3.2
Triangulation and speed limit identification
The block of code for triangulation and speed limit identification, like the code described in Section
8.3.1.3.1, is run every time the GPS updates the values. However, this code can have widely varying
runtimes, which depend on the number of database points found in the bounding triangle. If there
are many points within the triangle which are different speed limits, the code must go through a
more complex set of commands to find the proper speed limit. Finding the average runtime and the
maximum/minimum runtimes will be helpful for understanding how the code functions.
8.3.1.3.3
MicroSD card
The code necessary to access the microSD card runs only when the vehicle enters a new area that is
described by another file than the one currently stored on the Arduino. In that case, the new files
from the microSD card replace those on the Arduino. The runtime for this code depends on the size
of the file. The team tested the runtime of the code contained within the final prototype design. This
code reads different types (long, int) as well as clearing the old data, so the runtime is more variable
than the other latency testing done on the prototype.
8.3.1.3.4
Servo Updates
As a late addition to the design, a servo was added to display the current speed of the car for the
prototype speedometer. This code has few lines of code to time, as the servo receives a pulse output
from the microcontroller that controls its movement. The bulk of this section is a delay function
that is used to allow the servo to physically move before other items in the code can run. This
makes sure the servo can behave properly and other commands are not written to the servo before
it finishes its first command.
8.3.2
Test Results
8.3.2.1 GPS Accuracy Test
The results are problematic. The average error is approximately 20 meters. The best accuracy was
around 1 meter, but the worst accuracy was about 40 meters. Unfortunately, the 40 meters
measurement was not an outlier. See Figure 53 for all the data taken for this test. Each test has
similar average error, so the GPS does not become more accurate over time.
75
Figure 53. GPS Accuracy Data for the First Test
The average latitude and longitude’s distance from the point was approximately equal to the
average of the distances calculated for each test. This indicates that the GPS was generally incorrect
in the same direction from the expected point. This means that the GPS was more precise than it
was accurate.
The results of this test are not satisfactory for this function. Further testing is necessary to
determine if the GPS module will work properly for this function.
In the second test, the position accuracy improved from the data in the first test. The team placed
the GPS module on the dashboard of a moving vehicle. Figure 54 shows the route taken and the
data collected. The GPS did a much better job of tracking position on the move, even within the
confines of a car on a cloudy day. Looking at the map, it was easy to see which path was taken, and
there was no question as to what road was travelled. This is promising for the Speed Limit Indicator
project, which will rely on computations as opposed to visual analysis. If a visual analysis is quite
simple, a computational method is feasible.
76
Figure 54. Second GPS Test, Mapped to Google Maps
A third qualitative test was done in Ann Arbor, Michigan. This test occurred on city streets and
country roads, to provide a wide array of data. Figure 55 shows the data from the entire test. The
country roads went as smooth as the first test, but the city offered some troubling data. Figure 56
shows a portion of downtown Ann Arbor. An irregularity in the data is clear. The high buildings in
downtown Ann Arbor obstructed the GPS at times. Trees have not had an effect on performance as
far as we can tell, but buildings have a tangible effect.
Figure 56. Third GPS Accuracy Test, Close-Up On Downtown
Ann Arbor
Figure 55. Third GPS Accuracy Test, Mapped to
Google Maps
77
The team determined that the accuracy shown in the above tests is sufficient for the prototype of
the SLI. The software has safeguards to handle bad inputs from the GPS device, such as that shown
in Figure 56. The triangulation method and counters for unknown roads and errors would make the
issues above irrelevant.
8.3.2.2 GPS Velocity Test
The speed and course made good data seemed to be accurate enough for our uses. Relying on a
speedometer of the car for a comparison point, the speed outputted by the GPS was correct with a
few miles per hour. There was no compass to compare with for the course made good data, but it
correctly showed when the vehicle was generally moving north, south, east, and west. The course
made good remained constant within a few degrees when the vehicle was traveling in an
approximately straight line. This is sufficient for the prototype of the SLI. The course made good
data is used for general direction within thirty degrees, so minor perturbations in data should be
inconsequential. The speed data is only used to determine if the RGB LED lights green or red, and
slight errors would not have a large impact, as there is error in the built-in speedometer as well.
8.3.2.3 Latency Test
8.3.2.3.1
Extracting values from GPS string
The team took timing data as the system was operating normally. The time to run through the GPS
extraction function in milliseconds was taken each time it was called up to 50 times. The histogram
of the timing data is given in Figure 57.
25
Frequency
20
15
10
5
0
92
93
94
95
96
97
98
99
Time (ms)
Figure 57. Histogram of Timing Data for GPS Extraction
The time to take in and extract the GPS values took a consistent amount of time, approximately 96
milliseconds. This is valuable information when considering the latency of the entire system, as one
loop of the code can take at most one second to complete to ensure the update rate of 1 Hz for the
78
GPS is possible to have the greatest data resolution. Taking the values necessary from the GPS take
about one tenth of the available time, and it stays consistently in a range from 93 to 98 milliseconds.
8.3.2.3.2
Triangulation and speed limit identification
The triangulation code looks at all the points contained in a triangle around the vehicle and
determines which of those points has the correct speed limit. Timing was done while the system
was operating normally. The timing was taken each time the triangulation code was called, and 50
pieces of timing data were taken. The time is in milliseconds. Figure 58 shows the histogram of the
timing data for triangulation.
35
30
Frequency
25
20
15
10
5
0
0
1
2
Time (ms)
3
4
5
Figure 58. Histogram of Timing Data for Triangulation
The time to run the triangulation code is very small. At most, the triangulation code took 4
milliseconds to run. This block of code is a major concern for fitting a single iteration of the code
under 1 second, as it is quite fast now and could not be updated to be much faster. Both the GPS
extraction code and the triangulation code take about a tenth of a second combined.
8.3.2.3.3
MicroSD card
The microSD card code involves reading the database values from the microSD card to the Arduino
microcontroller. Timing was done while the system was operating normally. Timing data was taken
each time data needed to be copied from the microSD card, which happens much more infrequently
than the GPS extraction code and the triangulation code. The team took 25 data points for the
microSD card timing, and Figure 59 shows a histogram of that data.
79
Frequency
20
18
16
14
12
10
8
6
4
2
0
100 - 200
200 - 300
300 - 400
400 - 500
Time (ms)
500 - 600
600 - 700
700 - 800
Figure 59. Histogram of Timing Data for microSD Card Read
The time to read data from the SD card varied more wildly than the GPS extraction and
triangulation code, although this was expected. The number of data points within each file has an
impact on how long it takes to read that to the Arduino. Fortunately, the highest data points were
still less than 800 milliseconds, which allows the entire software loop to remain under 1 second.
The majority of the time the data took under 400 milliseconds to complete.
The team decided to test the microSD card timing code further. The code to read in the values was
separated from the system and tested over all the files currently in the database. Figure 60 shows
the file size and the time it took to read the data as the location on the microSD card increases. The
overall trend for reading values is increasing even as the file sizes stay nearly constant.
Number of Points or Time (ms)
400
350
300
250
Points
in File
200
150
100
Time to
Read
50
0
1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 64 67
File Number
Figure 60. MicroSD Card Read for all files within the database based on order the files are stored
80
This shows that the time to read values from the microSD card depends on more than just the
number of entries in each file. The team decided to test the location on the microSD card itself. A file
with 20 entries was copied into 100 different files. The team ran the microSD card timing code
using those identical files. Figure 61 shows the results.
180
160
140
Times (ms)
120
100
80
60
40
20
0
1
5
9 13 17 21 25 29 33 37 41 45 49 53 57 61 65 69 73 77 81 85 89 93 97
File Number
Figure 61. Time to read from the microSD card based on location of file
This shows that the time to read values from the microSD card also depends on the location where
the file is stored. It appears that every 16 files, the time to read jumps to another plateau, with an
approximate 10 millisecond jump between plateaus. For the prototype of the SLI, this does not have
a large impact on functionality, although this would impact the design of the database for a
production model with many more points in the database.
8.3.2.3.4
Servo Updates
This timing data was not tested, as the approximate time to run this block of code is known. A delay
function is issued for 200 milliseconds, which accounts for the majority of the time required to fully
update the servo. Since this could mean that one loop of code would exceed one second if all four
major parts were run in one loop, the code to update the servo only runs if no read was made from
the microSD card. This means that the maximum timing for a loop that includes servo updates is
approximately 300 milliseconds, still well under the one second that is required for this system.
8.3.3
Current Integration
The team has the SLI prototype running. The microSD card has a simplified database that is
sufficient for testing in the correct format. The microSD card can be accessed via software as
described in Section 7.3.3.6. The software takes in GPS values once per second and checks the
database on the Arduino to see if any points in the database are within a bounding triangle drawn
around the current point. If so, an algorithm is run that determines which database point is correct
81
and outputs that speed limit to an LED display. A servo controls the pointer of the speedometer to
output the current speed of the vehicle. If sufficient errors are detected, no speed limit will be
output to the LEDs. Figure 62 shows the final integration of the SLI. From left to right, the items
are: (1) GPS module, (2) Arduino Mega with microSD card shield, (3) batteries, (4) prototype
speedometer with LED display.
Figure 62. Final implementation of the SLI
82
9
Business Plan
9.1
Business Strategy
The Smart Dashboard has developed a business strategy to market this project as a profitable
business. All three safety functions will be offered as one product, which will decrease the price per
function. To separate each function into a separate product, each function would duplicate the
microcontroller and memory, which would come to an additional $20 per part. Factoring in the
additional PCB manufacturing and packaging costs, the total costs to manufacture each product
separately would be 33% more than to implement all three within one product as we are doing.
Therefore, it will be easier to enter into the market as the lower variable price helps to offset the
high initial fixed price.
9.1.1
Customer
The Smart Dashboard plans to market this device to car manufacturers as a Tier 1 auto supplier.
Our product will be a luxury package that car manufacturers can add to basic models, such as the
Ford Fusion. The team will design the product to integrate with the current dashboard of a
particular model, so the manufacturer can choose whether to include it in the vehicle. Therefore,
our business is viable in the long term, as each model of car that The Smart Dashboard markets to
will require specific redesigning for that particular model.
9.2
Marketing Study
In order to determine the feasibility of this project in the marketplace, a study of the current
marketplace is necessary. Various car safety functions are currently available, from cars that
monitor the lane markings to detect drift to cars that monitor the car in front of you to detect
possible collisions [24].
9.2.1
Competition
There are no direct competitors that can match all three safety functions. However, competition
does exist from companies that perform one of our functions. GPS devices today do display the
speed limit on certain models, but those are aftermarket devices that would not be integrated into
the vehicle during fabrication. There is an aftermarket product designed to flash a third brake light,
and is designed to comply with all United States regulations [25]. Mercedes-Benz incorporated a
driver awareness device into some of their high-end cars beginning in late 2008 [32]. Other
companies have incorporated similar systems, such as Ford [33], Volkswagen [34], and Volvo [35].
Many of these systems are based on lane departure warnings, but the function provided is similar
enough to ours to be considered direct competition.
9.2.2
Market Survey
Our product is a unique blend of vehicle safety functions not currently offered by any other
manufacturer. The speed limit indicator has demand, even though GPS devices could tell you the
speed limit on a handheld device. “In an age when GPS devices seem to be replacing roadmaps, is it
83
too much to ask for a built-in speed limit indicator? Wouldn't such an option make the roads safer,
in addition to cutting down on driver anxiety?” [26]. Garmin may be trying to satisfy that demand,
as the GPS supplier is looking to become a Tier 1 car supplier. Although initially Garmin would plan
on installing car radios with GPS navigation options, it is possible that Garmin would use these
resources to try to offer a speed limit indicator. A Garmin spokesperson stated that, “We …. are well
positioned to become a tier-one supplier to the automotive industry…We already provide
integrated cockpits for pilots to the aviation industry, and we are dedicated to bringing a similar
level of technology, integration, safety, reliability, and efficiency to the automotive market as a tier
one supplier” [60]. Although Garmin would not be direct competition immediately, they seem to
have the most resources to design a speed limit indicator and be The Smart Dashboard’s main
competitors in the future.
The market is eager for vehicle safety functions in general, and our product offers new safety
functions not currently offered in commercial vehicles. To begin, the team is considering the Ford
Fusion. In 2011, Ford sold approximately 250,000 Ford Fusions in the United States [30]. The team
believes that 10% of those vehicles could have our package installed on them. For one model, we
expect to achieve sales of 25,000 products per year. Our possible market is much greater than one
model of car. We could expand to working with one automaker on all their vehicles or even working
with many automakers.
9.3
Cost Estimate
The cost estimate for this product is different for the prototype and the production model. The
prototype is under a strict budget as defined by the Senior Design class instructors. The prototype
uses development boards in the design process, while the production model will use different parts
that can be soldered to a printed circuit board that will be more efficient in terms of size.
9.3.1
Prototype Budget
The team is developing the prototype to prove the concept of The Smart Dashboard. Table 20 gives
our initial budget estimates for the project. Our team has requested $602 in funds for the entirety of
the project. The components where the actual price is listed as $0 were borrowed from the Calvin
College Engineering Department for the duration of the project.
84
Table 20. Prototype Budget
SLI
RDW
DAS
Item
Est.
Cost
Act.
Cost
Item
Est.
Cost
Act.
Cost
Item
Est.
Cost
Act.
Cost
GPS
$43
$42.58
Accelerometer
$23
$22.95
Raspberry
Pi
$35
$0
Arduino
$50
$58.95
Prototype
Brake Lights
$75
$36.95
Power
Supply
$5
$0
RGB LEDs
$22
$21.12
Arduino Uno
$30
$0
4 GB SD
Card
$10
$0
SD Card
Adapter
$15
$16.45
Shipping
$10
Webcam
$100
$20
SD Card
$5
$3.98
2.1mm to 9V
Connector
$5.25
Outputs
$40
Perf Board
$9
$8
4x 9V Batteries
$10.59
LEDs
$10
$12.99
Small
Breadboard
$6.99
Shipping
$20
Function Total
$82.73
Function
Total
$220
Servo
Function
Total
$144
$164.07
Misc
Replacements
$100
$21.12
Team Total
$602
$297.87
9.3.2
$138
Remaining Budget
$7.95
$27.95
$304.13
Production Budget
The production model budget is split into two sections. The variable costs are similar to the
prototype budget in Section 9.3.1, in that the cost estimate is based per unit. The fixed costs are
incurred at a single point in time or are a yearly cost.
9.3.2.1 Variable Costs
Table 21 shows an estimate of the variable costs for the prototype. The expected cost is
approximately $56 per unit. The team selected an ARM processor for the production model. This
processor operates at 800 MHz, which is above the frequency of the processor on the Raspberry Pi.
The volume of 25,000 annually comes from Section 9.2.2, in which we hope to sell our product for
10% of Ford Fusions sold in the United States each year.
85
Table 21. Expected Variable Costs for the Production Model
Item
Model
Unit
Price
Quantity
Total Cost
Accelerometer
LIS331DLTR
$0.6504
25,000
$16,260
GPS
MAX2741ETI+
$5.77576
25,000
$144,394
GPS Antenna
W3011
$0.702
25,000
$17,550
LEDs
LTST-C19FD1WT
$0.12
250,000
$30,000
Memory
MT29F2G08ABAEAH4:E TR
$3.26808
25,000
$81,702
Microprocessor
AM3703CBP
$16.50
25,000
$412,500
Camera
OVM7690-R20A
$3.614
25,000
$90,350
Resistors
RK73H2BTTDD1001F
$0.003
500,000
$1500
Connector
4-794628-0
$1.71
25,000
$42,750
$20
25,000
$500,000
5% of variable costs
$2.6725
25,000
$66,850.30
Variable Cost Per Unit
$56.15
Total Var.
Cost
$1,403,856.30
PCB / Packaging
Replacements
9.3.2.2 Fixed Costs
Table 22 shows an estimate of the one-time fixed costs for the production model. These include the
design time behind the product and the software suites necessary to design our product.
Table 22. Expected One-Time Fixed Costs for the Production Model
Item
Cost
Notes
Design
$1,000,000
10000 hours, $100 per hour design time
Capital Investment
$150,000
Software Suites
Table 23. Amortized One-Time Costs
One-Time Costs at Year 1
$1,150,000
Year 1
Year 2
Year 3
$164,335
$281,635
$201,135
Table 23 shows the amortized costs for the one-time costs. This uses a 7-year recovery period using
MACRS. The initial design costs can be spread over the young life of the company to reduce the
large debt right at the start. Table 24 shows the fixed annual costs. Yearly costs include salaries of
all employees as well as the costs to rent an office building in Detroit, Michigan. Detroit was chosen
86
for its locality to the automotive companies located in Detroit. All three team members are
residents of the state of Michigan, and would like to keep jobs in Michigan and help stimulate the
economy there.
Table 24. Fixed Annual Costs
9.4
Item
Cost
Notes
Sales Team
$200,000
Two sales staff, $100k/yr including benefits
Management
$500,000
Management team
General Labor
$200,000
Janitor, Secretary, Shipping
Office Rental
$26,000
Ford Building [48]
Utilities
$2,600
~10% of office cost
Research and Development
$30,000
10+% of Gross Margin
Estimated Profits
Table 25 shows a profit estimate for years one through three. As a unique product, the team feels
that selling the product for $105 per unit is reasonable. The 2012 Ford Fusion offered advanced
packages for a navigation system and a rear-sensing camera. These packages cost $1,995 and
$2,940, respectively [31]. Our system provides similar worth to these other packages, so
automakers should be willing to pay $105 per unit to make it worthwhile for them. Our profit
margin is relatively low, but low margins are part of the automobile industry. We expect our
volume of sales to increase every year.
87
Table 25. Estimated Profits for the Production Model
Year 1
Year 2
Year 3
Total Variable Cost
$1,403,856.30
$1,544,241.93
$1,684,627.56
Total Fixed Cost
$1,122,935
$1,240,235
$1,159,735
Total Costs
$2,526,791.30
$2,784,476.93
$2,844,362.56
Selling Quantity
25,000
27,500
30,000
Selling Price
$105
$105
$105
Revenue
$2,625,000
$2,887,500
$3,150,000
Gross Margin
$98,208.70
$103,023.07
$305,637.44
Taxes
$34,373.05
$36,058.07
$106,973.10
Profit
$63,835.66
$66,965.00
$198,664.34
Profit Margin
2.53%
2.40%
6.98%
Our break-even chart for year 1 is given in Figure 63. After the first year, depending on the success
of our product, it should be viable to lower the cost of The Smart Dashboard to market it to other car
manufacturers. Lowering our costs would make it easier to get new contracts across multiple
manufacturers and models, allowing our volume to increase significantly. The extra profits allowed
by selling at a high volume would allow the company to invest in surface mount technology so that
board manufacturing and population could be done in-house. These profits would also allow the
research and development budget to increase, which is necessary to stay current and ahead of our
competitors.
350,000
Units Sold Per Year
300,000
250,000
200,000
150,000
100,000
50,000
0
60
65
70
75
80
85
90
95 100 105 110 115 120 125 130 135 140 145 150
Selling Price ($/unit)
Figure 63. Break-Even Analysis for Year 1 of The Smart Dashboard
88
The financials presented in Table 25 can be considered as a best-case scenario. In that case, all of
the products that the company produces would be sold in that given year. Costs would increase if
the volume is lower than expected, as some parts have volume discounts that would no longer
apply below 25,000 units. A worst-case scenario could be the cause of any number of items. If the
company’s fixed costs are greater than expected (such as office, utilities, unexpected workforce
payments, or greater number of design hours necessary), the break-even chart would be shifted so
that more units would need to be sold to break even at a certain price. If the price to manufacture
one product increases, this would also have an impact on the financial well-being of the company.
These issues could include higher PCB manufacturing and population costs, a higher volume of
replacements, or parts going out of stock that need to be replaced by costlier parts. The company
could survive slight variations in cost estimates early on, although major issues may cause the
company to not be feasible under those specific conditions.
89
10
Conclusions
10.1 Accomplishments
The team produced three car safety features. The Rapid Deceleration Warning was demonstrated in
a scale model and in an actual car under real-life conditions. The Driver Awareness Sensor was able
to find the face and eyes and use the facial illuminator to improve lighting conditions. The Speed
Limit Indicator was able to determine the correct speed limit and display corresponding
information on the speedometer using a GPS, Arduino microcontroller, microSD card, and LED
display. The team generated software that could create and add to a database of speed limits that
works all over the world. The team also implemented the concept using a mockup speedometer.
10.2 Missed Goals
The team was unable to integrate the features into a vehicle, but instead was able to show demos of
how they would work within the vehicle. The team did not design or produce a printed circuit
board that would integrate all three functions on one board. The team never integrated all three
functions into one system, and the software is stand-alone for all three functions. While the team
stayed under budget as a whole, the SLI was over its allotted budget.
10.3 Lessons Learned
The team learned many lessons throughout the year. This section includes some of the major
setbacks.
One of the major setbacks was the increasing complexity of the projects as the year progressed. At
the beginning of the year, it seemed simple to create multiple car safety features. However, as the
year progressed, the amount of work required was greater than expected. Additionally, with each
team member working on a separate function, there was little room for overlap and each member
was increasingly on his own to complete his project. Dividing work across functions was very
difficult, if it ever worked at all.
The team regrets that they did not operate under a stricter schedule. The team should have
updated the initial schedule with new tasks as they became known and estimated their completion
times more precisely. This would have caused less headaches at the end of the year wondering how
much time should be devoted to each task.
Another setback was the realization that the Raspberry Pi might not be powerful enough to process
the imagery. This caused a delay in the formation of the Driver Awareness Sensor software.
Additionally, had the team known that code written and run on a desktop computer could be easily
converted to run on the microcontroller, the team would have started writing the code sooner on a
desktop computer.
For the Speed Limit Indicator, the team initially chose the Arduino Uno. As more complexity was
added to the system, the team realized that the Uno did not have the memory required to hold all of
the code necessary to prototype the function. The team had to purchase an Arduino Mega, as the
90
team was too far along to switch development boards. The team would have considered other
microcontrollers if it was known what the approximate size of the program would be.
10.4 Future Developments
The team considered many options that would be useful additions to this project, but were not
within the scope of what the team could accomplish. The team would have liked to design and build
a printed circuit board. This would be the first step in integrating all three functions into one
design. The software would need to be restructured to run cohesively on one processor, as per
Requirement 4.1.1.5a. For the Speed Limit Indicator, a gradient of changing light could be added to
make the transition from not speeding to speeding less sudden. The team also could add audio
feedback and flashing lights in the case of extreme speeding.
91
11
Credits and Acknowledgements
The team would like to thank Calvin College engineering professor Steven VanderLeest for advising
the team, encouraging professionalism, and demanding a high standard of excellence.
The team would like to thank GE Aviation employee Tim Theriault for consulting with the team and
providing insight into possible hardware and software issues.
The team would like to thank engineering professor Yoon Kim for providing valuable insight and
ideas for the project.
The team would like to thank Bob DeKraker for his help when ordering parts necessary to the
project.
The team would like to thank Phil Jasperse for his help and suggestions when using the metal shop
and its equipment.
The team would like to thank all of the people who have supported the project through social media
sites like Facebook, Twitter, and YouTube.
92
12
References
[1] Weiss, Merkel. "Confronting Driver Distraction." The Futurist 41.1 (2007): 16-7. ProQuest
Business Collection; ProQuest Engineering Collection. Web. 12 Nov. 2012.
[2] http://usatoday30.usatoday.com/money/autos/story/2012-01-17/cars-trucks-agepolk/52613102/1
[3] http://www.unece.org/fileadmin/DAM/trans/main/wp29/wp29regs/r48r6e.pdf
[4] Bloomfield, John and Lynam, Niall. "Deceleration based anti-collision safety light control for
vehicle." US Patent 6411204. 25 June 2002.
[5] cmucam.org
[6] Richard, G. Oderwald, and A. Boucher Britt. "GPS After Selective Availability: How Accurate is
Accurate enough?" Journal of Forestry 101.4 (2003): 24,27,2. ProQuest Engineering Collection. Web.
10 Nov. 2012.
[7] Vicente Milanés, et al. "Autonomous Vehicle Based in Cooperative GPS and Inertial Systems."
Robotica 26.5 (2008): 627-33.ProQuest Engineering Collection. Web. 10 Nov. 2012.
[8] J, E. Naranjo, et al. "GPS and Inertial Systems for High Precision Positioning on Motorways." The
Journal of Navigation 62.2 (2009): 351-63. ProQuest Engineering Collection. Web. 10 Nov. 2012.
[9] Jo, Kichun, Keounyup Chu, and Myoungho Sunwoo. "Interacting Multiple Model Filter-Based
Sensor Fusion of GPS with in-Vehicle Sensors for Real-Time Vehicle Positioning." IEEE Transactions
on Intelligent Transportation Systems 13.1 (2012): 329-43. ProQuest Engineering Collection. Web. 10
Nov. 2012.
[10] Li, Shuo, and Karen Zhu. "Addressing Issues with GPS Data Accuracy and Position Update Rate
for Field Traffic Studies."Institute of Transportation Engineers.ITE Journal 73.2 (2003): 32-7.
ProQuest Business Collection; ProQuest Engineering Collection. Web. 10 Nov. 2012.
[11] Iqbal, Umar, et al. "Experimental Results on an Integrated GPS and Multisensor System for
Land Vehicle Positioning."International Journal of Navigation and Observation (2009)ProQuest
Engineering Collection. Web. 10 Nov. 2012.
[12] Kyrtsos, Christos. ”System and method for providing accurate vehicle positioning using spatial
bias techniques.” Patent 5,555,503. 10 Sep 1996.
[13] Kyrtsos, Christos. ”Vehicle position determination system and method.” Patent 5,375,059. 20
Dec 1994.
[14] http://www.mio.com/technology-gps-mapping-work.htm
[15] http://www.cplusplus.com/doc/tutorial/variables/
93
[16] http://www.artba.org/about/faqs-transportation-general-public/faqs/#9
[17] http://www.artba.org/mediafiles/faqsushighwaysystemcompositionpdf.pdf
[18] Kumar, Manu and Taemie Kim. 2005. “Dynamic speedometer: dashboard redesign to
discourage drivers from speeding.” CHI '05 Extended Abstracts on Human Factors in Computing
Systems (CHI EA '05). Web. 10 Nov. 2012.
[19] http://www.futurlec.com/GPS.shtml
[20] http://salestores.com/polstar1.html?gclid=CNr7q-7CvbMCFe5FMgod5B0AjA
[21] https://www.sparkfun.com/products/8975
[22]
http://www.parallax.com/Store/Sensors/CompassGPS/tabid/173/ProductID/644/List/0/Default.
aspx?SortField=ProductName,ProductName
[23] http://www.digikey.com/product-detail/en/MT29F2G16ABBEAH4:E%20TR/557-1545-1ND/3305283
[24] http://www.safercar.gov/staticfiles/safetytech/st_landing_ca.htm
[25] http://www.pulseprotects.com/
[26] http://electronics.howstuffworks.com/gadgets/automotive/car-speed-limit.htm
[27] http://www.wikispeedia.org/
[28] http://www.itoworld.com/map/41
[29] http://electronics.stackexchange.com/questions/11884/how-many-gps-channels-make-sense
[30] http://media.ford.com/images/10031/Dec11sales.pdf
[31] http://www.cars.com/ford/fusion/2012/standard-equipment/
[32] http://media.daimler.com/dcmedia/0-921-658892-1-1147698-1-0-0-1147922-0-1-11702-00-1-0-0-0-0-0.html?TS=1266506682902
[33] http://media.ford.com/article_print.cfm?article_id=34562
[34] http://www.volkswagen.co.uk/#/new/passat-vii/explore/experience/driver-assistance/
[35] http://www.zercustoms.com/news/Volvo-Driver-Alert-Control-and-Lane-DepartureWarning.html
[36] http://www.carparts.com/classroom/charging.htm
[37] http://www.safeny.ny.gov/drow-ndx.htm
94
[38] http://www.madsci.org/posts/archives/nov98/911697403.Me.r.html
[39] http://home.earthlink.net/~dnitzer/4HaasEaton/Decibel.html
[40] http://www.gpo.gov/fdsys/pkg/CFR-2011-title49-vol6/pdf/CFR-2011-title49-vol6-sec571108.pdf
[41] http://fias.uni-frankfurt.de/~triesch/courses/260object/papers/SpeedOfProcessing.pdf
[42] http://dev.emcelettronica.com/files/u4/Block_Diagram_of_the_AVR_Architecture.jpg
[43] http://www.sparkfun.com/datasheets
[44] http://beagleboard.org/
[45] http://www.raspberrypi.org/
[46] https://www.olimex.com/Products/OLinuXino/A13/A13-OLinuXino/
[47] http://cubieboard.org/
[48] http://www.michigan-commercial-real-estate-properties.com/Detroit-Office-Buildings.htm
[49] http://www.marimsys.com/pages/nmea_codes.htm
[50] http://elinux.org/RPi_VerifiedPeripherals#USB_Webcams
[51] http://www.free-track.net/forum/index.php?showtopic=2219
[52] http://codelaboratories.com/research/view/ps3-eye-disassembly
[53] http://www.wolframalpha.com/input/?i=average+blink+length
[54] http://www.raspberrypi.org/phpBB3/viewtopic.php?p=316916#p316916
[55] http://www.epilepsyfoundation.org/aboutepilepsy/seizures/photosensitivity/
[56] https://www.sparkfun.com/pages/accel_gyro_guide
[57] http://www.analog.com/static/imported-files/data_sheets/ADXL345.pdf
[58] www.procarcare.com/includes/content/resourcecenter/encyclopedia/ch11/11fig16.html
[59] http://www.datasheetarchive.com/ECG2541-datasheet.html
[60] http://www.ceoutlook.com/2012/04/18/garmin-wants-to-be-tier-one-car-audio-supplier/
[61] http://www.raspberrypi.org/wp-content/uploads/2012/12/quick-start-guide-v1.1.pdf
[62] http://elinux.org/RPi_VerifiedPeripherals#USB_Webcams
95
Download