Constructing an autonomous navigation system responsive to GPS and Tilt Compass feedback to form and track trajectories to a given location. Low power, and observant system.
Show list of your objectives. This section includes the high level details of your project. You can write about the various sensors or peripherals you used to get your project completed.
Table 1. Schedule
Week#
|
Date
|
Tasks
|
Actual
|
1
|
10/8
|
Decide on boat hull based on the amount of devices
we planned to us.
Purchased motor, servo, and battery accordingly
|
Completed
Brushed DC motor powered by Electronic
Speed controller was purchased.
|
2
|
11/4
|
Intercept the pwm signals issued by a remote
control for steering and speed throttling. Decode
these signals over time to identify which values produce
what kind of effect to the driving system.
|
Completed
Using a logic analyzer did not work the way we planned
An oscilloscope was used but only to prove that this
was not necessary since the motor and servo reacts to
PWM as any other motor or servo.
|
3
|
11/25
|
Make separate compass, gps, and pwm tasks
|
Completed
These tasks are a simple tasks demoing the functionality
|
4
|
12/02
|
Link separate task outputs together using navigation task.
|
Completed
Debug the steering and motor control commands issued
by the state of the navigation task state machine.
|
5
|
12/16
|
Revise gps task to give only needed information and use
all task outputs in the navigation task
|
Completed
Buggy and needs to check for invalid information using checksum
|
6
|
12/20
|
Update the wiki page
|
Completed
Clean up exceptions in the land demo program
|
Parts List & Cost
- SJ One Board | $80.00
- Tilt Corrected Compass | $30.00
- GPS | $50.00
- 7.2V 2600mAH Battery (included w/hull)
- 5V 5200mAH Battery | $13.00
- Hull | $155.00
- DC Motor (included w/hull)
- Servo (included w/hull)
- Electronic Speed Controller (included w/hull)
Design & Implementation
The design section can go over your hardware and software design. Organize this section using sub-sections that go over your design and implementation.
Hardware Design
Considerations for our hardware include power consumption and usefulness in a water scenario.
The root of this project where sensor input is analyzed and output signals are distributed
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback
needed to make adjustments.
Hardware Interface
I2C
I2C was used to communicate to and from the SJ One board to the tilt adjusted compass. This protocol allows numerous sensors to be connect to a single wire to all devices for transmitting and receiving address and data information. This is possible because of synchronization of a clock signal and a pull-up resistor used in setting up the data/address bus. The disadvantage with this choice is speed since it can only transfer a max of 100KHz.
For our design we use our SJ One board as the master and the compass as the slave device. It is only enabled if it receives it's address from the master. Through out the operation of protocol a slave and master are under constant bidirectional communication. Using a byte or more to communicate what is desired in the form of an slave address, byte address and a quantity for receiving or transferring data. This continuous process follows a state machines for both the slave and master devices. Below Fig 5. describes for example a basic sequence of states that the slave can go through for receiving and transmitting data to a master. If at any point during transmission a data packet is invalid the transmission can abort and require exception handling.
SPI
A full duplex communication protocol characterized by the single unidirectional input and output lines between master(s) and slave(s).
UART
PWM
ADC
Software Design
Show your software design. For example, if you are designing an MP3 Player, show the tasks that you are using, and what they are doing at a high level. Do not show the details of the code. For example, do not show exact code, but you may show psuedocode and fragments of code. Keep in mind that you are showing DESIGN of your software, not the inner workings of it.
Implementation
This section includes implementation, but again, not the details, just the high level. For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash. You can include sub-sections for each of your component implementation.
Testing & Technical Challenges
The test plan includes unit testing, and integration testing. After writing the code for each task we used each method of each task class as the starting point. Before, during and after development any referenced class endured it's own unit testing. For example the classes which control communication protocols were heavily tested to ensure that data was not corrupted during transit. During higher level unit testing erroneous was output but testing had to be done on the classes used. By adding print statements to the data before and after packaging and transferring data. Following the results that tasks worked independently using black box testing the tasks were tested using integration testing. This area remains to this moment an area requiring further tests. In the following subsections, detailed descriptions and solutions faced in this project will be explained.
GPS Issue #1
Issue:
GPS data is sent constantly from the GPS module through UART without the need for a command.
Full messages referred to as NMEA sentences are received by the module and read by the
microcontroller. They do not always arrive in their entirety or represent accurate data.
Solution: To counter act this problem a checksum value is included in the sentence and is
useful for checking the values of he payload checksum value for the specific data in the
message.
GPS Issue #2
Issue:
Coordinates in the NMEA sentences are off by more than +/- 5 meters.
Solution:
GPS Issue #3
Issue:
NMEA messages that represent the recommended minimum specific are around 67 characters can
overflow the local RX FIFO used with UART. Since the FIFO is 16 bytes long an interrupt is
activated when the receiving buffer is not empty to store enough values to
Solution: To counter act this problem a checksum value is included in the sentence and is
useful for checking the values of he payload checksum value for the specific data in the
message.
Conclusion
Conclude your project here. You can recap your testing and problems. You should address the "so what" part here to indicate what you ultimately learnt from this project. How has this project increased your knowledge?
Project Video
Upload a video of your project and post the link here.
Project Source Code
References
Acknowledgement
Any acknowledgement that you may wish to provide can be included here.
References Used
GPS module DataSheet
NMEA Decoding
GPS Recommended Minimum Specifics Parsing
SJ One board MCU Datasheet
SJ One board Introduction
Appendix
You can list the references you used.