<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://socialledge.com/sjsu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=146+user3</id>
		<title>Embedded Systems Learning Academy - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://socialledge.com/sjsu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=146+user3"/>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php/Special:Contributions/146_user3"/>
		<updated>2026-05-10T13:13:52Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.27.1</generator>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34646</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34646"/>
				<updated>2016-12-22T03:11:17Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Software Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) =&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
Peripheral goals include&lt;br /&gt;
* Logging to SD card using SPI&lt;br /&gt;
* Analog to Digital Converter reading of Temperature sensor&lt;br /&gt;
* Reading and controlling GPS using UART&lt;br /&gt;
* Reading compass measurements using UART&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
GPS control, compass, AD converting, Navigation Algorithm&lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
Servo control, compass, power management&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
Motor Control, power management, logging to SD card&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued &lt;br /&gt;
by a remote control for steering&lt;br /&gt;
and speed throttling. Decode &lt;br /&gt;
these signals over time to identify&lt;br /&gt;
which values produce what kind of &lt;br /&gt;
effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work&lt;br /&gt;
the way we planned. An oscilloscope&lt;br /&gt;
was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and&lt;br /&gt;
servo reacts to PWM as any other motor&lt;br /&gt;
or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing &lt;br /&gt;
the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together &lt;br /&gt;
using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control &lt;br /&gt;
commands issued by the state of the &lt;br /&gt;
navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed&lt;br /&gt;
information and use all task outputs&lt;br /&gt;
in the navigation task.&lt;br /&gt;
| In Progress&lt;br /&gt;
Buggy and needs to check for invalid &lt;br /&gt;
information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| In Progress&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Parts List &amp;amp; Cost =&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
= Design &amp;amp; Implementation =&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
== Hardware Design ==&lt;br /&gt;
Considerations for our hardware include power consumption and usefulness in a water scenario.&lt;br /&gt;
The root of this project where sensor input is analyzed and output signals are distributed&lt;br /&gt;
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity&lt;br /&gt;
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback &lt;br /&gt;
needed to make adjustments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Project_Hardware_Overview_ANSOTAS.jpg|450px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Interface ==&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Best_Case_Scenario_State_Diagrams-_Angel_H.png|500px|thumb|center|Fig 5. I2C Slave State Machine Diagram]]&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
A full duplex communication protocol characterized by the single unidirectional input and output lines between master(s) and slave(s).&lt;br /&gt;
Our project utilizes SPI to transmit and receive data for logging on the external SD card and interface with the compass. The plan is to use a form of serial communication for it's speed and ability to use GPIO for enabling the devices' chip select.&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
Communicating between the compass and GPS module support UART however would not be able to use the same TX and RX since there is no protection from connecting outputs from these devices. This form of communication is asynchronous which means the unidirectional data lines can be flooded with data to a particular device and does not require addressing to occur through those lines. &lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
Extra considerations had to be noted for software driver which handles data to the microcontroller from the sensor. As the 16-byte receiving FIFO &lt;br /&gt;
is flooded with bytes to be read an interrupt is needed to clear the FIFO of it's items and store them in a safe place. This is necessary in order to completely read a message which on average is 70 characters or bytes long.&lt;br /&gt;
&lt;br /&gt;
[[File:Communication_diagram.JPG | 350px | thumb | center | Fig 8. Peripheral Communication Layout]]&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
Building tasks dedicated for controlling each sensor is the first step to our design approach. &lt;br /&gt;
&lt;br /&gt;
* GPS_task&lt;br /&gt;
* Compass_task&lt;br /&gt;
&lt;br /&gt;
A few tasks are used to schedule and communicate data between the tasks would be the following edited libraries. &lt;br /&gt;
&lt;br /&gt;
* Terminal Task&lt;br /&gt;
* Navigation Algorithm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot; line&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class navigation_task : public scheduler_task&lt;br /&gt;
{&lt;br /&gt;
    public:&lt;br /&gt;
        navigation_task(uint8_t priority);	///&amp;lt; Constructor&lt;br /&gt;
        datalog dl, dl2;&lt;br /&gt;
&lt;br /&gt;
        bool run(void *p)&lt;br /&gt;
        {&lt;br /&gt;
        	xSemaphoreGive(xSemaphoreGPS);&lt;br /&gt;
        	xQueueReceive(printtoSDcard, &amp;amp;dl, 1000);&lt;br /&gt;
        	xSemaphoreGive(xSemaphoreTemp);&lt;br /&gt;
        	xQueueReceive(printtoSDcard, &amp;amp;dl2, 1000);&lt;br /&gt;
        	dl.temp = dl2.temp;&lt;br /&gt;
        	string s= &amp;quot;&amp;quot;;&lt;br /&gt;
        	s += dl.time +','+dl.latitude +','+ dl.dirNS + ',' + dl.longitude + ',' + dl.dirEW + ',' + dl.temp + '\n';&lt;br /&gt;
        	char s2 [35] = {0};&lt;br /&gt;
        	for(int temp = 0; temp &amp;lt; 35 || temp &amp;lt; s.length(); temp++)&lt;br /&gt;
        		s2[temp] = s.at(temp);&lt;br /&gt;
        	Storage::append(&amp;quot;1:log.txt&amp;quot;, &amp;amp;s2 , 35, 0);&lt;br /&gt;
        	return true;&lt;br /&gt;
        }&lt;br /&gt;
        bool init()&lt;br /&gt;
        {&lt;br /&gt;
        	return true;&lt;br /&gt;
        }&lt;br /&gt;
    private:&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== PWM and Compass ===&lt;br /&gt;
1. Initialize UART3&lt;br /&gt;
&lt;br /&gt;
2. Set up PWM port and refresh rate&lt;br /&gt;
&lt;br /&gt;
3. Send byte containing 0x13 to Compass&lt;br /&gt;
&lt;br /&gt;
4. Read both bytes in receiving holding register&lt;br /&gt;
&lt;br /&gt;
5. Calculate the duty cycle percent&lt;br /&gt;
&lt;br /&gt;
6. Set PWM duty cycle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Analog/Digital Converter and SPI ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[File:Tempreadings.jpg | thumb|400px|left| Fig. 2 Output for the temperature sensor]]&lt;br /&gt;
|1. Initialize SPI&lt;br /&gt;
&lt;br /&gt;
2. CS the device&lt;br /&gt;
&lt;br /&gt;
3. Send 0x01 0x80 0x00 as byte transfers&lt;br /&gt;
&lt;br /&gt;
4. Run ThermometerRead() with retrieved value&lt;br /&gt;
|-&lt;br /&gt;
|[[File:SPI-ADconvert.jpg | thumb|400px|left| Fig. 3 Schematic for A/D converter]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:UpperTierHardwareBase.png|thumb|400px|center| Fig. 3 Top of the base]]&lt;br /&gt;
[[File:BottomTierHardwareStack.png|thumb|400px|center| Fig. 4 Bottom of the base]]&lt;br /&gt;
[[File:Servogif-2.gif |thumb|400px|center| Fig. 9 Servo movement is proportional to the compass direction]]&lt;br /&gt;
&lt;br /&gt;
= Testing &amp;amp; Technical Challenges =&lt;br /&gt;
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 for treating as a unit under test. 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.&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #1 ===&lt;br /&gt;
Issue: &lt;br /&gt;
GPS data is sent constantly from the GPS module through UART without the need for a command.&lt;br /&gt;
Full messages referred to as NMEA sentences are received by the module and read by the &lt;br /&gt;
microcontroller. They do not always arrive in their entirety or represent accurate data. &lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #2 ===&lt;br /&gt;
Issue: &lt;br /&gt;
Coordinates in the NMEA sentences are off by more than +/- 5 meters. &lt;br /&gt;
&lt;br /&gt;
[[File:Gps_map.jpg | 300px |thumb|center| Fig 6. Expected longitude and latitude for testing]]&lt;br /&gt;
&lt;br /&gt;
[[File:Gpscapture.JPG | 300px |thumb|center| Fig 7. Actual longitude and latitude coordinates at testing site]]&lt;br /&gt;
&lt;br /&gt;
Solution: &lt;br /&gt;
Following extensive research there is the possibility of configuring known reference geographical locations with the X,Y,Z and (longitude,latitude) coordinate that the GPS module is preloaded with for comparing to. However this did not help as much as making sure we used the WAAS feature which allows the GPS to get feedback from federal ground references for calculating how off satellites are in their pinning a location. &lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #3 ===&lt;br /&gt;
Issue: &lt;br /&gt;
NMEA messages that represent the recommended minimum specific are around 67 characters can &lt;br /&gt;
overflow the local RX FIFO used with UART. Since the FIFO is 16 bytes long the FIFO runs the list of running out of space for storing &lt;br /&gt;
items so an interrupt is used for sensing when data populates the queue. &lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
This project provided several lessons in the values of through unit testing of each of our tasks, and integration testing of all the parts. Complications arose during the formation of our final higher level navigation task which analyzes the readings from our sensors to send commands for the system to reach the same starting GPS location. &lt;br /&gt;
&lt;br /&gt;
From an organizational standpoint if more effort was taken to separate our initialization of our peripherals and our few operations for each sensor the unit testing would be more effective at catching bugs. As we observed in our issues during testing data was invalid which can hinder the pools of data being collected. &lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
[[https://www.youtube.com/watch?v=VUk6K8lpmnQ Video Proof of Concept]]&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://github.com/angeeeeelh/cmpe-146-demo-fall2016/ Github Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Acknowledgements for code and lab instruction to Preetpal Kang. &lt;br /&gt;
&lt;br /&gt;
In addition, theory of embedded microcontroller design is for Prof. Haluk Ozmek.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
[http://cdn.sparkfun.com/datasheets/Sensors/GPS/Venus/638/doc/AN0003_v1.4.19.pdf GPS module DataSheet]&lt;br /&gt;
&lt;br /&gt;
[http://aprs.gids.nl/nmea/ NMEA Decoding]&lt;br /&gt;
&lt;br /&gt;
[http://www.doctormonk.com/2012/05/sparkfun-venus-gps-and-arduino.html GPS Recommended Minimum Specifics Parsing]&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/LPC1769_68_67_66_65_64_63.pdf SJ One board MCU Datasheet]&lt;br /&gt;
&lt;br /&gt;
[http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board SJ One board Introduction]&lt;br /&gt;
&lt;br /&gt;
[https://cdn-shop.adafruit.com/datasheets/MCP3008.pdf MCP3004 A/D converter Datasheet]&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
N/A&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34606</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34606"/>
				<updated>2016-12-22T02:13:17Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Analog/Digital Converter and SPI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) =&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
Peripheral goals include&lt;br /&gt;
* Logging to SD card using SPI&lt;br /&gt;
* Analog to Digital Converter reading of Temperature sensor&lt;br /&gt;
* Reading and controlling GPS using UART&lt;br /&gt;
* Reading compass measurements using UART&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
GPS control, compass, AD converting, Navigation Algorithm&lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
Servo control, compass, power management&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
Motor Control, power management, logging to SD card&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued &lt;br /&gt;
by a remote control for steering&lt;br /&gt;
and speed throttling. Decode &lt;br /&gt;
these signals over time to identify&lt;br /&gt;
which values produce what kind of &lt;br /&gt;
effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work&lt;br /&gt;
the way we planned. An oscilloscope&lt;br /&gt;
was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and&lt;br /&gt;
servo reacts to PWM as any other motor&lt;br /&gt;
or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing &lt;br /&gt;
the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together &lt;br /&gt;
using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control &lt;br /&gt;
commands issued by the state of the &lt;br /&gt;
navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed&lt;br /&gt;
information and use all task outputs&lt;br /&gt;
in the navigation task.&lt;br /&gt;
| In Progress&lt;br /&gt;
Buggy and needs to check for invalid &lt;br /&gt;
information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| In Progress&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Parts List &amp;amp; Cost =&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
= Design &amp;amp; Implementation =&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
== Hardware Design ==&lt;br /&gt;
Considerations for our hardware include power consumption and usefulness in a water scenario.&lt;br /&gt;
The root of this project where sensor input is analyzed and output signals are distributed&lt;br /&gt;
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity&lt;br /&gt;
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback &lt;br /&gt;
needed to make adjustments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Project_Hardware_Overview_ANSOTAS.jpg|450px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Interface ==&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Best_Case_Scenario_State_Diagrams-_Angel_H.png|500px|thumb|center|Fig 5. I2C Slave State Machine Diagram]]&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
A full duplex communication protocol characterized by the single unidirectional input and output lines between master(s) and slave(s).&lt;br /&gt;
Our project utilizes SPI to transmit and receive data for logging on the external SD card and interface with the compass. The plan is to use a form of serial communication for it's speed and ability to use GPIO for enabling the devices' chip select.&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
Communicating between the compass and GPS module support UART however would not be able to use the same TX and RX since there is no protection from connecting outputs from these devices. This form of communication is asynchronous which means the unidirectional data lines can be flooded with data to a particular device and does not require addressing to occur through those lines. &lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
Extra considerations had to be noted for software driver which handles data to the microcontroller from the sensor. As the 16-byte receiving FIFO &lt;br /&gt;
is flooded with bytes to be read an interrupt is needed to clear the FIFO of it's items and store them in a safe place. This is necessary in order to completely read a message which on average is 70 characters or bytes long.&lt;br /&gt;
&lt;br /&gt;
[[File:Communication_diagram.JPG | 350px | thumb | center | Fig 8. Peripheral Communication Layout]]&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
Building tasks dedicated for controlling each sensor is the first step to our design approach. &lt;br /&gt;
&lt;br /&gt;
* GPS_task&lt;br /&gt;
* Compass_task&lt;br /&gt;
&lt;br /&gt;
A few tasks are used to schedule and communicate data between the tasks would be the following edited libraries. &lt;br /&gt;
&lt;br /&gt;
* Terminal Task&lt;br /&gt;
* Navigation Algorithm&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== PWM and Compass ===&lt;br /&gt;
1. Initialize UART3&lt;br /&gt;
&lt;br /&gt;
2. Set up PWM port and refresh rate&lt;br /&gt;
&lt;br /&gt;
3. Send byte containing 0x13 to Compass&lt;br /&gt;
&lt;br /&gt;
4. Read both bytes in receiving holding register&lt;br /&gt;
&lt;br /&gt;
5. Calculate the duty cycle percent&lt;br /&gt;
&lt;br /&gt;
6. Set PWM duty cycle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Analog/Digital Converter and SPI ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[File:Tempreadings.jpg | thumb|400px|left| Fig. 2 Output for the temperature sensor]]&lt;br /&gt;
|1. Initialize SPI&lt;br /&gt;
&lt;br /&gt;
2. CS the device&lt;br /&gt;
&lt;br /&gt;
3. Send 0x01 0x80 0x00 as byte transfers&lt;br /&gt;
&lt;br /&gt;
4. Run ThermometerRead() with retrieved value&lt;br /&gt;
|-&lt;br /&gt;
|[[File:SPI-ADconvert.jpg | thumb|400px|left| Fig. 3 Schematic for A/D converter]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:UpperTierHardwareBase.png|thumb|400px|center| Fig. 3 Top of the base]]&lt;br /&gt;
[[File:BottomTierHardwareStack.png|thumb|400px|center| Fig. 4 Bottom of the base]]&lt;br /&gt;
[[File:Servogif-2.gif |thumb|400px|center| Fig. 9 Servo movement is proportional to the compass direction]]&lt;br /&gt;
&lt;br /&gt;
= Testing &amp;amp; Technical Challenges =&lt;br /&gt;
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 for treating as a unit under test. 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.&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #1 ===&lt;br /&gt;
Issue: &lt;br /&gt;
GPS data is sent constantly from the GPS module through UART without the need for a command.&lt;br /&gt;
Full messages referred to as NMEA sentences are received by the module and read by the &lt;br /&gt;
microcontroller. They do not always arrive in their entirety or represent accurate data. &lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #2 ===&lt;br /&gt;
Issue: &lt;br /&gt;
Coordinates in the NMEA sentences are off by more than +/- 5 meters. &lt;br /&gt;
&lt;br /&gt;
[[File:Gps_map.jpg | 300px |thumb|center| Fig 6. Expected longitude and latitude for testing]]&lt;br /&gt;
&lt;br /&gt;
[[File:Gpscapture.JPG | 300px |thumb|center| Fig 7. Actual longitude and latitude coordinates at testing site]]&lt;br /&gt;
&lt;br /&gt;
Solution: &lt;br /&gt;
Following extensive research there is the possibility of configuring known reference geographical locations with the X,Y,Z and (longitude,latitude) coordinate that the GPS module is preloaded with for comparing to. However this did not help as much as making sure we used the WAAS feature which allows the GPS to get feedback from federal ground references for calculating how off satellites are in their pinning a location. &lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #3 ===&lt;br /&gt;
Issue: &lt;br /&gt;
NMEA messages that represent the recommended minimum specific are around 67 characters can &lt;br /&gt;
overflow the local RX FIFO used with UART. Since the FIFO is 16 bytes long the FIFO runs the list of running out of space for storing &lt;br /&gt;
items so an interrupt is used for sensing when data populates the queue. &lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
This project provided several lessons in the values of through unit testing of each of our tasks, and integration testing of all the parts. Complications arose during the formation of our final higher level navigation task which analyzes the readings from our sensors to send commands for the system to reach the same starting GPS location. &lt;br /&gt;
&lt;br /&gt;
From an organizational standpoint if more effort was taken to separate our initialization of our peripherals and our few operations for each sensor the unit testing would be more effective at catching bugs. As we observed in our issues during testing data was invalid which can hinder the pools of data being collected. &lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
[[https://www.youtube.com/watch?v=VUk6K8lpmnQ Video Proof of Concept]]&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://github.com/angeeeeelh/cmpe-146-demo-fall2016/ Github Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Acknowledgements for code and lab instruction to Preetpal Kang. &lt;br /&gt;
&lt;br /&gt;
In addition, theory of embedded microcontroller design is for Prof. Haluk Ozmek.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
[http://cdn.sparkfun.com/datasheets/Sensors/GPS/Venus/638/doc/AN0003_v1.4.19.pdf GPS module DataSheet]&lt;br /&gt;
&lt;br /&gt;
[http://aprs.gids.nl/nmea/ NMEA Decoding]&lt;br /&gt;
&lt;br /&gt;
[http://www.doctormonk.com/2012/05/sparkfun-venus-gps-and-arduino.html GPS Recommended Minimum Specifics Parsing]&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/LPC1769_68_67_66_65_64_63.pdf SJ One board MCU Datasheet]&lt;br /&gt;
&lt;br /&gt;
[http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board SJ One board Introduction]&lt;br /&gt;
&lt;br /&gt;
[https://cdn-shop.adafruit.com/datasheets/MCP3008.pdf MCP3004 A/D converter Datasheet]&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
N/A&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34593</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34593"/>
				<updated>2016-12-22T00:42:53Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Analog/Digital Converter and SPI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) =&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
Peripheral goals include&lt;br /&gt;
* Logging to SD card using SPI&lt;br /&gt;
* Analog to Digital Converter reading of Temperature sensor&lt;br /&gt;
* Reading and controlling GPS using UART&lt;br /&gt;
* Reading compass measurements using UART&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
GPS control, compass, AD converting, Navigation Algorithm&lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
Servo control, compass, power management&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
Motor Control, power management, logging to SD card&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued &lt;br /&gt;
by a remote control for steering&lt;br /&gt;
and speed throttling. Decode &lt;br /&gt;
these signals over time to identify&lt;br /&gt;
which values produce what kind of &lt;br /&gt;
effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work&lt;br /&gt;
the way we planned. An oscilloscope&lt;br /&gt;
was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and&lt;br /&gt;
servo reacts to PWM as any other motor&lt;br /&gt;
or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing &lt;br /&gt;
the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together &lt;br /&gt;
using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control &lt;br /&gt;
commands issued by the state of the &lt;br /&gt;
navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed&lt;br /&gt;
information and use all task outputs&lt;br /&gt;
in the navigation task.&lt;br /&gt;
| In Progress&lt;br /&gt;
Buggy and needs to check for invalid &lt;br /&gt;
information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| In Progress&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Parts List &amp;amp; Cost =&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
= Design &amp;amp; Implementation =&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
== Hardware Design ==&lt;br /&gt;
Considerations for our hardware include power consumption and usefulness in a water scenario.&lt;br /&gt;
The root of this project where sensor input is analyzed and output signals are distributed&lt;br /&gt;
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity&lt;br /&gt;
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback &lt;br /&gt;
needed to make adjustments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Project_Hardware_Overview_ANSOTAS.jpg|450px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Interface ==&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Best_Case_Scenario_State_Diagrams-_Angel_H.png|500px|thumb|center|Fig 5. I2C Slave State Machine Diagram]]&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
A full duplex communication protocol characterized by the single unidirectional input and output lines between master(s) and slave(s).&lt;br /&gt;
Our project utilizes SPI to transmit and receive data for logging on the external SD card and interface with the compass. The plan is to use a form of serial communication for it's speed and ability to use GPIO for enabling the devices' chip select.&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
Communicating between the compass and GPS module support UART however would not be able to use the same TX and RX since there is no protection from connecting outputs from these devices. This form of communication is asynchronous which means the unidirectional data lines can be flooded with data to a particular device and does not require addressing to occur through those lines. &lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
Extra considerations had to be noted for software driver which handles data to the microcontroller from the sensor. As the 16-byte receiving FIFO &lt;br /&gt;
is flooded with bytes to be read an interrupt is needed to clear the FIFO of it's items and store them in a safe place. This is necessary in order to completely read a message which on average is 70 characters or bytes long.&lt;br /&gt;
&lt;br /&gt;
[[File:Communication_diagram.JPG | 350px | thumb | center | Fig 8. Peripheral Communication Layout]]&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
Building tasks dedicated for controlling each sensor is the first step to our design approach. &lt;br /&gt;
&lt;br /&gt;
* GPS_task&lt;br /&gt;
* Compass_task&lt;br /&gt;
&lt;br /&gt;
A few tasks are used to schedule and communicate data between the tasks would be the following edited libraries. &lt;br /&gt;
&lt;br /&gt;
* Terminal Task&lt;br /&gt;
* Navigation Algorithm&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== PWM and Compass ===&lt;br /&gt;
1. Initialize UART3&lt;br /&gt;
&lt;br /&gt;
2. Set up PWM port and refresh rate&lt;br /&gt;
&lt;br /&gt;
3. Send byte containing 0x13 to Compass&lt;br /&gt;
&lt;br /&gt;
4. Read both bytes in receiving holding register&lt;br /&gt;
&lt;br /&gt;
5. Calculate the duty cycle percent&lt;br /&gt;
&lt;br /&gt;
6. Set PWM duty cycle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Analog/Digital Converter and SPI ===&lt;br /&gt;
1. Initialize SPI&lt;br /&gt;
&lt;br /&gt;
2. CS the device&lt;br /&gt;
&lt;br /&gt;
3. Send 0x01 0x80 0x00 as byte transfers&lt;br /&gt;
&lt;br /&gt;
4. Run ThermometerRead() with retrieved value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Tempreadings.jpg | thumb|400px|left| Fig. 2 Output for the temperature sensor]]]&lt;br /&gt;
[[File:UpperTierHardwareBase.png|thumb|400px|center| Fig. 3 Top of the base]]&lt;br /&gt;
[[File:BottomTierHardwareStack.png|thumb|400px|center| Fig. 4 Bottom of the base]]&lt;br /&gt;
[[File:Servogif-2.gif |thumb|400px|center| Fig. 9 Servo movement is proportional to the compass direction]]&lt;br /&gt;
&lt;br /&gt;
= Testing &amp;amp; Technical Challenges =&lt;br /&gt;
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 for treating as a unit under test. 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.&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #1 ===&lt;br /&gt;
Issue: &lt;br /&gt;
GPS data is sent constantly from the GPS module through UART without the need for a command.&lt;br /&gt;
Full messages referred to as NMEA sentences are received by the module and read by the &lt;br /&gt;
microcontroller. They do not always arrive in their entirety or represent accurate data. &lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #2 ===&lt;br /&gt;
Issue: &lt;br /&gt;
Coordinates in the NMEA sentences are off by more than +/- 5 meters. &lt;br /&gt;
&lt;br /&gt;
[[File:Gps_map.jpg | 300px |thumb|center| Fig 6. Expected longitude and latitude for testing]]&lt;br /&gt;
&lt;br /&gt;
[[File:Gpscapture.JPG | 300px |thumb|center| Fig 7. Actual longitude and latitude coordinates at testing site]]&lt;br /&gt;
&lt;br /&gt;
Solution: &lt;br /&gt;
Following extensive research there is the possibility of configuring known reference geographical locations with the X,Y,Z and (longitude,latitude) coordinate that the GPS module is preloaded with for comparing to. However this did not help as much as making sure we used the WAAS feature which allows the GPS to get feedback from federal ground references for calculating how off satellites are in their pinning a location. &lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #3 ===&lt;br /&gt;
Issue: &lt;br /&gt;
NMEA messages that represent the recommended minimum specific are around 67 characters can &lt;br /&gt;
overflow the local RX FIFO used with UART. Since the FIFO is 16 bytes long the FIFO runs the list of running out of space for storing &lt;br /&gt;
items so an interrupt is used for sensing when data populates the queue. &lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
This project provided several lessons in the values of through unit testing of each of our tasks, and integration testing of all the parts. Complications arose during the formation of our final higher level navigation task which analyzes the readings from our sensors to send commands for the system to reach the same starting GPS location. &lt;br /&gt;
&lt;br /&gt;
From an organizational standpoint if more effort was taken to separate our initialization of our peripherals and our few operations for each sensor the unit testing would be more effective at catching bugs. As we observed in our issues during testing data was invalid which can hinder the pools of data being collected. &lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
[[https://www.youtube.com/watch?v=VUk6K8lpmnQ Video Proof of Concept]]&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://github.com/angeeeeelh/cmpe-146-demo-fall2016/ Github Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Acknowledgements for code and lab instruction to Preetpal Kang. &lt;br /&gt;
&lt;br /&gt;
In addition, theory of embedded microcontroller design is for Prof. Haluk Ozmek.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
[http://cdn.sparkfun.com/datasheets/Sensors/GPS/Venus/638/doc/AN0003_v1.4.19.pdf GPS module DataSheet]&lt;br /&gt;
&lt;br /&gt;
[http://aprs.gids.nl/nmea/ NMEA Decoding]&lt;br /&gt;
&lt;br /&gt;
[http://www.doctormonk.com/2012/05/sparkfun-venus-gps-and-arduino.html GPS Recommended Minimum Specifics Parsing]&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/LPC1769_68_67_66_65_64_63.pdf SJ One board MCU Datasheet]&lt;br /&gt;
&lt;br /&gt;
[http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board SJ One board Introduction]&lt;br /&gt;
&lt;br /&gt;
[https://cdn-shop.adafruit.com/datasheets/MCP3008.pdf MCP3004 A/D converter Datasheet]&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
N/A&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34592</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34592"/>
				<updated>2016-12-22T00:42:27Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Analog/Digital Converter and SPI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) =&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
Peripheral goals include&lt;br /&gt;
* Logging to SD card using SPI&lt;br /&gt;
* Analog to Digital Converter reading of Temperature sensor&lt;br /&gt;
* Reading and controlling GPS using UART&lt;br /&gt;
* Reading compass measurements using UART&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
GPS control, compass, AD converting, Navigation Algorithm&lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
Servo control, compass, power management&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
Motor Control, power management, logging to SD card&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued &lt;br /&gt;
by a remote control for steering&lt;br /&gt;
and speed throttling. Decode &lt;br /&gt;
these signals over time to identify&lt;br /&gt;
which values produce what kind of &lt;br /&gt;
effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work&lt;br /&gt;
the way we planned. An oscilloscope&lt;br /&gt;
was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and&lt;br /&gt;
servo reacts to PWM as any other motor&lt;br /&gt;
or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing &lt;br /&gt;
the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together &lt;br /&gt;
using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control &lt;br /&gt;
commands issued by the state of the &lt;br /&gt;
navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed&lt;br /&gt;
information and use all task outputs&lt;br /&gt;
in the navigation task.&lt;br /&gt;
| In Progress&lt;br /&gt;
Buggy and needs to check for invalid &lt;br /&gt;
information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| In Progress&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Parts List &amp;amp; Cost =&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
= Design &amp;amp; Implementation =&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
== Hardware Design ==&lt;br /&gt;
Considerations for our hardware include power consumption and usefulness in a water scenario.&lt;br /&gt;
The root of this project where sensor input is analyzed and output signals are distributed&lt;br /&gt;
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity&lt;br /&gt;
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback &lt;br /&gt;
needed to make adjustments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Project_Hardware_Overview_ANSOTAS.jpg|450px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Interface ==&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Best_Case_Scenario_State_Diagrams-_Angel_H.png|500px|thumb|center|Fig 5. I2C Slave State Machine Diagram]]&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
A full duplex communication protocol characterized by the single unidirectional input and output lines between master(s) and slave(s).&lt;br /&gt;
Our project utilizes SPI to transmit and receive data for logging on the external SD card and interface with the compass. The plan is to use a form of serial communication for it's speed and ability to use GPIO for enabling the devices' chip select.&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
Communicating between the compass and GPS module support UART however would not be able to use the same TX and RX since there is no protection from connecting outputs from these devices. This form of communication is asynchronous which means the unidirectional data lines can be flooded with data to a particular device and does not require addressing to occur through those lines. &lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
Extra considerations had to be noted for software driver which handles data to the microcontroller from the sensor. As the 16-byte receiving FIFO &lt;br /&gt;
is flooded with bytes to be read an interrupt is needed to clear the FIFO of it's items and store them in a safe place. This is necessary in order to completely read a message which on average is 70 characters or bytes long.&lt;br /&gt;
&lt;br /&gt;
[[File:Communication_diagram.JPG | 350px | thumb | center | Fig 8. Peripheral Communication Layout]]&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
Building tasks dedicated for controlling each sensor is the first step to our design approach. &lt;br /&gt;
&lt;br /&gt;
* GPS_task&lt;br /&gt;
* Compass_task&lt;br /&gt;
&lt;br /&gt;
A few tasks are used to schedule and communicate data between the tasks would be the following edited libraries. &lt;br /&gt;
&lt;br /&gt;
* Terminal Task&lt;br /&gt;
* Navigation Algorithm&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== PWM and Compass ===&lt;br /&gt;
1. Initialize UART3&lt;br /&gt;
&lt;br /&gt;
2. Set up PWM port and refresh rate&lt;br /&gt;
&lt;br /&gt;
3. Send byte containing 0x13 to Compass&lt;br /&gt;
&lt;br /&gt;
4. Read both bytes in receiving holding register&lt;br /&gt;
&lt;br /&gt;
5. Calculate the duty cycle percent&lt;br /&gt;
&lt;br /&gt;
6. Set PWM duty cycle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Analog/Digital Converter and SPI ===&lt;br /&gt;
1. Initialize SPI&lt;br /&gt;
&lt;br /&gt;
2. CS the device&lt;br /&gt;
&lt;br /&gt;
3. Send 0x01 0x80 0x00 as byte transfers&lt;br /&gt;
&lt;br /&gt;
4. Run ThermometerRead() with retrieved value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Tempreadings.jpg | thumb|400px|center| Fig. 2 Output for the temperature sensor]]]&lt;br /&gt;
[[File:UpperTierHardwareBase.png|thumb|400px|center| Fig. 3 Top of the base]]&lt;br /&gt;
[[File:BottomTierHardwareStack.png|thumb|400px|center| Fig. 4 Bottom of the base]]&lt;br /&gt;
[[File:Servogif-2.gif |thumb|400px|center| Fig. 9 Servo movement is proportional to the compass direction]]&lt;br /&gt;
&lt;br /&gt;
= Testing &amp;amp; Technical Challenges =&lt;br /&gt;
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 for treating as a unit under test. 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.&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #1 ===&lt;br /&gt;
Issue: &lt;br /&gt;
GPS data is sent constantly from the GPS module through UART without the need for a command.&lt;br /&gt;
Full messages referred to as NMEA sentences are received by the module and read by the &lt;br /&gt;
microcontroller. They do not always arrive in their entirety or represent accurate data. &lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #2 ===&lt;br /&gt;
Issue: &lt;br /&gt;
Coordinates in the NMEA sentences are off by more than +/- 5 meters. &lt;br /&gt;
&lt;br /&gt;
[[File:Gps_map.jpg | 300px |thumb|center| Fig 6. Expected longitude and latitude for testing]]&lt;br /&gt;
&lt;br /&gt;
[[File:Gpscapture.JPG | 300px |thumb|center| Fig 7. Actual longitude and latitude coordinates at testing site]]&lt;br /&gt;
&lt;br /&gt;
Solution: &lt;br /&gt;
Following extensive research there is the possibility of configuring known reference geographical locations with the X,Y,Z and (longitude,latitude) coordinate that the GPS module is preloaded with for comparing to. However this did not help as much as making sure we used the WAAS feature which allows the GPS to get feedback from federal ground references for calculating how off satellites are in their pinning a location. &lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #3 ===&lt;br /&gt;
Issue: &lt;br /&gt;
NMEA messages that represent the recommended minimum specific are around 67 characters can &lt;br /&gt;
overflow the local RX FIFO used with UART. Since the FIFO is 16 bytes long the FIFO runs the list of running out of space for storing &lt;br /&gt;
items so an interrupt is used for sensing when data populates the queue. &lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
This project provided several lessons in the values of through unit testing of each of our tasks, and integration testing of all the parts. Complications arose during the formation of our final higher level navigation task which analyzes the readings from our sensors to send commands for the system to reach the same starting GPS location. &lt;br /&gt;
&lt;br /&gt;
From an organizational standpoint if more effort was taken to separate our initialization of our peripherals and our few operations for each sensor the unit testing would be more effective at catching bugs. As we observed in our issues during testing data was invalid which can hinder the pools of data being collected. &lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
[[https://www.youtube.com/watch?v=VUk6K8lpmnQ Video Proof of Concept]]&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://github.com/angeeeeelh/cmpe-146-demo-fall2016/ Github Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Acknowledgements for code and lab instruction to Preetpal Kang. &lt;br /&gt;
&lt;br /&gt;
In addition, theory of embedded microcontroller design is for Prof. Haluk Ozmek.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
[http://cdn.sparkfun.com/datasheets/Sensors/GPS/Venus/638/doc/AN0003_v1.4.19.pdf GPS module DataSheet]&lt;br /&gt;
&lt;br /&gt;
[http://aprs.gids.nl/nmea/ NMEA Decoding]&lt;br /&gt;
&lt;br /&gt;
[http://www.doctormonk.com/2012/05/sparkfun-venus-gps-and-arduino.html GPS Recommended Minimum Specifics Parsing]&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/LPC1769_68_67_66_65_64_63.pdf SJ One board MCU Datasheet]&lt;br /&gt;
&lt;br /&gt;
[http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board SJ One board Introduction]&lt;br /&gt;
&lt;br /&gt;
[https://cdn-shop.adafruit.com/datasheets/MCP3008.pdf MCP3004 A/D converter Datasheet]&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
N/A&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34590</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34590"/>
				<updated>2016-12-22T00:39:35Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* GPS Issue #3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) =&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
Peripheral goals include&lt;br /&gt;
* Logging to SD card using SPI&lt;br /&gt;
* Analog to Digital Converter reading of Temperature sensor&lt;br /&gt;
* Reading and controlling GPS using UART&lt;br /&gt;
* Reading compass measurements using UART&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
GPS control, compass, AD converting, Navigation Algorithm&lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
Servo control, compass, power management&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
Motor Control, power management, logging to SD card&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued &lt;br /&gt;
by a remote control for steering&lt;br /&gt;
and speed throttling. Decode &lt;br /&gt;
these signals over time to identify&lt;br /&gt;
which values produce what kind of &lt;br /&gt;
effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work&lt;br /&gt;
the way we planned. An oscilloscope&lt;br /&gt;
was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and&lt;br /&gt;
servo reacts to PWM as any other motor&lt;br /&gt;
or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing &lt;br /&gt;
the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together &lt;br /&gt;
using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control &lt;br /&gt;
commands issued by the state of the &lt;br /&gt;
navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed&lt;br /&gt;
information and use all task outputs&lt;br /&gt;
in the navigation task.&lt;br /&gt;
| In Progress&lt;br /&gt;
Buggy and needs to check for invalid &lt;br /&gt;
information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| In Progress&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Parts List &amp;amp; Cost =&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
= Design &amp;amp; Implementation =&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
== Hardware Design ==&lt;br /&gt;
Considerations for our hardware include power consumption and usefulness in a water scenario.&lt;br /&gt;
The root of this project where sensor input is analyzed and output signals are distributed&lt;br /&gt;
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity&lt;br /&gt;
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback &lt;br /&gt;
needed to make adjustments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Project_Hardware_Overview_ANSOTAS.jpg|450px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Interface ==&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Best_Case_Scenario_State_Diagrams-_Angel_H.png|500px|thumb|center|Fig 5. I2C Slave State Machine Diagram]]&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
A full duplex communication protocol characterized by the single unidirectional input and output lines between master(s) and slave(s).&lt;br /&gt;
Our project utilizes SPI to transmit and receive data for logging on the external SD card and interface with the compass. The plan is to use a form of serial communication for it's speed and ability to use GPIO for enabling the devices' chip select.&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
Communicating between the compass and GPS module support UART however would not be able to use the same TX and RX since there is no protection from connecting outputs from these devices. This form of communication is asynchronous which means the unidirectional data lines can be flooded with data to a particular device and does not require addressing to occur through those lines. &lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
Extra considerations had to be noted for software driver which handles data to the microcontroller from the sensor. As the 16-byte receiving FIFO &lt;br /&gt;
is flooded with bytes to be read an interrupt is needed to clear the FIFO of it's items and store them in a safe place. This is necessary in order to completely read a message which on average is 70 characters or bytes long.&lt;br /&gt;
&lt;br /&gt;
[[File:Communication_diagram.JPG | 350px | thumb | center | Fig 8. Peripheral Communication Layout]]&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
Building tasks dedicated for controlling each sensor is the first step to our design approach. &lt;br /&gt;
&lt;br /&gt;
* GPS_task&lt;br /&gt;
* Compass_task&lt;br /&gt;
&lt;br /&gt;
A few tasks are used to schedule and communicate data between the tasks would be the following edited libraries. &lt;br /&gt;
&lt;br /&gt;
* Terminal Task&lt;br /&gt;
* Navigation Algorithm&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== PWM and Compass ===&lt;br /&gt;
1. Initialize UART3&lt;br /&gt;
&lt;br /&gt;
2. Set up PWM port and refresh rate&lt;br /&gt;
&lt;br /&gt;
3. Send byte containing 0x13 to Compass&lt;br /&gt;
&lt;br /&gt;
4. Read both bytes in receiving holding register&lt;br /&gt;
&lt;br /&gt;
5. Calculate the duty cycle percent&lt;br /&gt;
&lt;br /&gt;
6. Set PWM duty cycle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Analog/Digital Converter and SPI ===&lt;br /&gt;
1. Initialize SPI&lt;br /&gt;
&lt;br /&gt;
2. CS the device&lt;br /&gt;
&lt;br /&gt;
3. Send 0x01 0x80 0x00 as byte transfers&lt;br /&gt;
&lt;br /&gt;
4. Run ThermometerRead() with retrieved value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:UpperTierHardwareBase.png|thumb|400px|center| Fig. 3 Top of the base]]&lt;br /&gt;
[[File:BottomTierHardwareStack.png|thumb|400px|center| Fig. 4 Bottom of the base]]&lt;br /&gt;
[[File:Servogif-2.gif |thumb|400px|center| Fig. 9 Servo movement is proportional to the compass direction]]&lt;br /&gt;
&lt;br /&gt;
= Testing &amp;amp; Technical Challenges =&lt;br /&gt;
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 for treating as a unit under test. 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.&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #1 ===&lt;br /&gt;
Issue: &lt;br /&gt;
GPS data is sent constantly from the GPS module through UART without the need for a command.&lt;br /&gt;
Full messages referred to as NMEA sentences are received by the module and read by the &lt;br /&gt;
microcontroller. They do not always arrive in their entirety or represent accurate data. &lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #2 ===&lt;br /&gt;
Issue: &lt;br /&gt;
Coordinates in the NMEA sentences are off by more than +/- 5 meters. &lt;br /&gt;
&lt;br /&gt;
[[File:Gps_map.jpg | 300px |thumb|center| Fig 6. Expected longitude and latitude for testing]]&lt;br /&gt;
&lt;br /&gt;
[[File:Gpscapture.JPG | 300px |thumb|center| Fig 7. Actual longitude and latitude coordinates at testing site]]&lt;br /&gt;
&lt;br /&gt;
Solution: &lt;br /&gt;
Following extensive research there is the possibility of configuring known reference geographical locations with the X,Y,Z and (longitude,latitude) coordinate that the GPS module is preloaded with for comparing to. However this did not help as much as making sure we used the WAAS feature which allows the GPS to get feedback from federal ground references for calculating how off satellites are in their pinning a location. &lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #3 ===&lt;br /&gt;
Issue: &lt;br /&gt;
NMEA messages that represent the recommended minimum specific are around 67 characters can &lt;br /&gt;
overflow the local RX FIFO used with UART. Since the FIFO is 16 bytes long the FIFO runs the list of running out of space for storing &lt;br /&gt;
items so an interrupt is used for sensing when data populates the queue. &lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
This project provided several lessons in the values of through unit testing of each of our tasks, and integration testing of all the parts. Complications arose during the formation of our final higher level navigation task which analyzes the readings from our sensors to send commands for the system to reach the same starting GPS location. &lt;br /&gt;
&lt;br /&gt;
From an organizational standpoint if more effort was taken to separate our initialization of our peripherals and our few operations for each sensor the unit testing would be more effective at catching bugs. As we observed in our issues during testing data was invalid which can hinder the pools of data being collected. &lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
[[https://www.youtube.com/watch?v=VUk6K8lpmnQ Video Proof of Concept]]&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://github.com/angeeeeelh/cmpe-146-demo-fall2016/ Github Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Acknowledgements for code and lab instruction to Preetpal Kang. &lt;br /&gt;
&lt;br /&gt;
In addition, theory of embedded microcontroller design is for Prof. Haluk Ozmek.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
[http://cdn.sparkfun.com/datasheets/Sensors/GPS/Venus/638/doc/AN0003_v1.4.19.pdf GPS module DataSheet]&lt;br /&gt;
&lt;br /&gt;
[http://aprs.gids.nl/nmea/ NMEA Decoding]&lt;br /&gt;
&lt;br /&gt;
[http://www.doctormonk.com/2012/05/sparkfun-venus-gps-and-arduino.html GPS Recommended Minimum Specifics Parsing]&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/LPC1769_68_67_66_65_64_63.pdf SJ One board MCU Datasheet]&lt;br /&gt;
&lt;br /&gt;
[http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board SJ One board Introduction]&lt;br /&gt;
&lt;br /&gt;
[https://cdn-shop.adafruit.com/datasheets/MCP3008.pdf MCP3004 A/D converter Datasheet]&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
N/A&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34581</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34581"/>
				<updated>2016-12-21T23:54:10Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Acknowledgement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) =&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
Peripheral goals include&lt;br /&gt;
* Logging to SD card using SPI&lt;br /&gt;
* Analog to Digital Converter reading of Temperature sensor&lt;br /&gt;
* Reading and controlling GPS using UART&lt;br /&gt;
* Reading compass measurements using UART&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
GPS control, compass, AD converting, Navigation Algorithm&lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
Servo control, compass, power management&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
Motor Control, power management, logging to SD card&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued &lt;br /&gt;
by a remote control for steering&lt;br /&gt;
and speed throttling. Decode &lt;br /&gt;
these signals over time to identify&lt;br /&gt;
which values produce what kind of &lt;br /&gt;
effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work&lt;br /&gt;
the way we planned. An oscilloscope&lt;br /&gt;
was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and&lt;br /&gt;
servo reacts to PWM as any other motor&lt;br /&gt;
or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing &lt;br /&gt;
the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together &lt;br /&gt;
using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control &lt;br /&gt;
commands issued by the state of the &lt;br /&gt;
navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed&lt;br /&gt;
information and use all task outputs&lt;br /&gt;
in the navigation task.&lt;br /&gt;
| In Progress&lt;br /&gt;
Buggy and needs to check for invalid &lt;br /&gt;
information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| In Progress&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Parts List &amp;amp; Cost =&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
= Design &amp;amp; Implementation =&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
== Hardware Design ==&lt;br /&gt;
Considerations for our hardware include power consumption and usefulness in a water scenario.&lt;br /&gt;
The root of this project where sensor input is analyzed and output signals are distributed&lt;br /&gt;
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity&lt;br /&gt;
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback &lt;br /&gt;
needed to make adjustments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Project_Hardware_Overview_ANSOTAS.jpg|450px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Interface ==&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Best_Case_Scenario_State_Diagrams-_Angel_H.png|500px|thumb|center|Fig 5. I2C Slave State Machine Diagram]]&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
A full duplex communication protocol characterized by the single unidirectional input and output lines between master(s) and slave(s).&lt;br /&gt;
Our project utilizes SPI to transmit and receive data for logging on the external SD card and interface with the compass. The plan is to use a form of serial communication for it's speed and ability to use GPIO for enabling the devices' chip select.&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
Communicating between the compass and GPS module support UART however would not be able to use the same TX and RX since there is no protection from connecting outputs from these devices. This form of communication is asynchronous which means the unidirectional data lines can be flooded with data to a particular device and does not require addressing to occur through those lines. &lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
Extra considerations had to be noted for software driver which handles data to the microcontroller from the sensor. As the 16-byte receiving FIFO &lt;br /&gt;
is flooded with bytes to be read an interrupt is needed to clear the FIFO of it's items and store them in a safe place. This is necessary in order to completely read a message which on average is 70 characters or bytes long.&lt;br /&gt;
&lt;br /&gt;
[[File:Communication_diagram.JPG | 350px | thumb | center | Fig 8. Peripheral Communication Layout]]&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
Building tasks dedicated for controlling each sensor is the first step to our design approach. &lt;br /&gt;
&lt;br /&gt;
* GPS_task&lt;br /&gt;
* Compass_task&lt;br /&gt;
&lt;br /&gt;
A few tasks are used to schedule and communicate data between the tasks would be the following edited libraries. &lt;br /&gt;
&lt;br /&gt;
* Terminal Task&lt;br /&gt;
* Navigation Algorithm&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== PWM and Compass ===&lt;br /&gt;
1. Initialize UART3&lt;br /&gt;
&lt;br /&gt;
2. Set up PWM port and refresh rate&lt;br /&gt;
&lt;br /&gt;
3. Send byte containing 0x13 to Compass&lt;br /&gt;
&lt;br /&gt;
4. Read both bytes in receiving holding register&lt;br /&gt;
&lt;br /&gt;
5. Calculate the duty cycle percent&lt;br /&gt;
&lt;br /&gt;
6. Set PWM duty cycle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Analog/Digital Converter and SPI ===&lt;br /&gt;
1. Initialize SPI&lt;br /&gt;
&lt;br /&gt;
2. CS the device&lt;br /&gt;
&lt;br /&gt;
3. Send 0x01 0x80 0x00 as byte transfers&lt;br /&gt;
&lt;br /&gt;
4. Run ThermometerRead() with retrieved value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:UpperTierHardwareBase.png|thumb|400px|center| Fig. 3 Top of the base]]&lt;br /&gt;
[[File:BottomTierHardwareStack.png|thumb|400px|center| Fig. 4 Bottom of the base]]&lt;br /&gt;
[[File:Servogif-2.gif |thumb|400px|center| Fig. 9 Servo movement is proportional to the compass direction]]&lt;br /&gt;
&lt;br /&gt;
= Testing &amp;amp; Technical Challenges =&lt;br /&gt;
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 for treating as a unit under test. 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.&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #1 ===&lt;br /&gt;
Issue: &lt;br /&gt;
GPS data is sent constantly from the GPS module through UART without the need for a command.&lt;br /&gt;
Full messages referred to as NMEA sentences are received by the module and read by the &lt;br /&gt;
microcontroller. They do not always arrive in their entirety or represent accurate data. &lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #2 ===&lt;br /&gt;
Issue: &lt;br /&gt;
Coordinates in the NMEA sentences are off by more than +/- 5 meters. &lt;br /&gt;
&lt;br /&gt;
[[File:Gps_map.jpg | 300px |thumb|center| Fig 6. Expected longitude and latitude for testing]]&lt;br /&gt;
&lt;br /&gt;
[[File:Gpscapture.JPG | 300px |thumb|center| Fig 7. Actual longitude and latitude coordinates at testing site]]&lt;br /&gt;
&lt;br /&gt;
Solution: &lt;br /&gt;
Following extensive research there is the possibility of configuring known reference geographical locations with the X,Y,Z and (longitude,latitude) coordinate that the GPS module is preloaded with for comparing to. However this did not help as much as making sure we used the WAAS feature which allows the GPS to get feedback from federal ground references for calculating how off satellites are in their pinning a location. &lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #3 ===&lt;br /&gt;
Issue: &lt;br /&gt;
NMEA messages that represent the recommended minimum specific are around 67 characters can &lt;br /&gt;
overflow the local RX FIFO used with UART. Since the FIFO is 16 bytes long an interrupt is &lt;br /&gt;
activated when the receiving buffer is not empty to store enough values to&lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
This project provided several lessons in the values of through unit testing of each of our tasks, and integration testing of all the parts. Complications arose during the formation of our final higher level navigation task which analyzes the readings from our sensors to send commands for the system to reach the same starting GPS location. &lt;br /&gt;
&lt;br /&gt;
From an organizational standpoint if more effort was taken to separate our initialization of our peripherals and our few operations for each sensor the unit testing would be more effective at catching bugs. As we observed in our issues during testing data was invalid which can hinder the pools of data being collected. &lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
[[https://www.youtube.com/watch?v=VUk6K8lpmnQ Video Proof of Concept]]&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://github.com/angeeeeelh/cmpe-146-demo-fall2016/ Github Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Acknowledgements for code and lab instruction to Preetpal Kang. &lt;br /&gt;
&lt;br /&gt;
In addition, theory of embedded microcontroller design is for Prof. Haluk Ozmek.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
[http://cdn.sparkfun.com/datasheets/Sensors/GPS/Venus/638/doc/AN0003_v1.4.19.pdf GPS module DataSheet]&lt;br /&gt;
&lt;br /&gt;
[http://aprs.gids.nl/nmea/ NMEA Decoding]&lt;br /&gt;
&lt;br /&gt;
[http://www.doctormonk.com/2012/05/sparkfun-venus-gps-and-arduino.html GPS Recommended Minimum Specifics Parsing]&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/LPC1769_68_67_66_65_64_63.pdf SJ One board MCU Datasheet]&lt;br /&gt;
&lt;br /&gt;
[http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board SJ One board Introduction]&lt;br /&gt;
&lt;br /&gt;
[https://cdn-shop.adafruit.com/datasheets/MCP3008.pdf MCP3004 A/D converter Datasheet]&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
N/A&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34580</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34580"/>
				<updated>2016-12-21T23:52:50Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Testing &amp;amp; Technical Challenges */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) =&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
Peripheral goals include&lt;br /&gt;
* Logging to SD card using SPI&lt;br /&gt;
* Analog to Digital Converter reading of Temperature sensor&lt;br /&gt;
* Reading and controlling GPS using UART&lt;br /&gt;
* Reading compass measurements using UART&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
GPS control, compass, AD converting, Navigation Algorithm&lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
Servo control, compass, power management&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
Motor Control, power management, logging to SD card&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued &lt;br /&gt;
by a remote control for steering&lt;br /&gt;
and speed throttling. Decode &lt;br /&gt;
these signals over time to identify&lt;br /&gt;
which values produce what kind of &lt;br /&gt;
effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work&lt;br /&gt;
the way we planned. An oscilloscope&lt;br /&gt;
was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and&lt;br /&gt;
servo reacts to PWM as any other motor&lt;br /&gt;
or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing &lt;br /&gt;
the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together &lt;br /&gt;
using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control &lt;br /&gt;
commands issued by the state of the &lt;br /&gt;
navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed&lt;br /&gt;
information and use all task outputs&lt;br /&gt;
in the navigation task.&lt;br /&gt;
| In Progress&lt;br /&gt;
Buggy and needs to check for invalid &lt;br /&gt;
information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| In Progress&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Parts List &amp;amp; Cost =&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
= Design &amp;amp; Implementation =&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
== Hardware Design ==&lt;br /&gt;
Considerations for our hardware include power consumption and usefulness in a water scenario.&lt;br /&gt;
The root of this project where sensor input is analyzed and output signals are distributed&lt;br /&gt;
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity&lt;br /&gt;
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback &lt;br /&gt;
needed to make adjustments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Project_Hardware_Overview_ANSOTAS.jpg|450px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Interface ==&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Best_Case_Scenario_State_Diagrams-_Angel_H.png|500px|thumb|center|Fig 5. I2C Slave State Machine Diagram]]&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
A full duplex communication protocol characterized by the single unidirectional input and output lines between master(s) and slave(s).&lt;br /&gt;
Our project utilizes SPI to transmit and receive data for logging on the external SD card and interface with the compass. The plan is to use a form of serial communication for it's speed and ability to use GPIO for enabling the devices' chip select.&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
Communicating between the compass and GPS module support UART however would not be able to use the same TX and RX since there is no protection from connecting outputs from these devices. This form of communication is asynchronous which means the unidirectional data lines can be flooded with data to a particular device and does not require addressing to occur through those lines. &lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
Extra considerations had to be noted for software driver which handles data to the microcontroller from the sensor. As the 16-byte receiving FIFO &lt;br /&gt;
is flooded with bytes to be read an interrupt is needed to clear the FIFO of it's items and store them in a safe place. This is necessary in order to completely read a message which on average is 70 characters or bytes long.&lt;br /&gt;
&lt;br /&gt;
[[File:Communication_diagram.JPG | 350px | thumb | center | Fig 8. Peripheral Communication Layout]]&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
Building tasks dedicated for controlling each sensor is the first step to our design approach. &lt;br /&gt;
&lt;br /&gt;
* GPS_task&lt;br /&gt;
* Compass_task&lt;br /&gt;
&lt;br /&gt;
A few tasks are used to schedule and communicate data between the tasks would be the following edited libraries. &lt;br /&gt;
&lt;br /&gt;
* Terminal Task&lt;br /&gt;
* Navigation Algorithm&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== PWM and Compass ===&lt;br /&gt;
1. Initialize UART3&lt;br /&gt;
&lt;br /&gt;
2. Set up PWM port and refresh rate&lt;br /&gt;
&lt;br /&gt;
3. Send byte containing 0x13 to Compass&lt;br /&gt;
&lt;br /&gt;
4. Read both bytes in receiving holding register&lt;br /&gt;
&lt;br /&gt;
5. Calculate the duty cycle percent&lt;br /&gt;
&lt;br /&gt;
6. Set PWM duty cycle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Analog/Digital Converter and SPI ===&lt;br /&gt;
1. Initialize SPI&lt;br /&gt;
&lt;br /&gt;
2. CS the device&lt;br /&gt;
&lt;br /&gt;
3. Send 0x01 0x80 0x00 as byte transfers&lt;br /&gt;
&lt;br /&gt;
4. Run ThermometerRead() with retrieved value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:UpperTierHardwareBase.png|thumb|400px|center| Fig. 3 Top of the base]]&lt;br /&gt;
[[File:BottomTierHardwareStack.png|thumb|400px|center| Fig. 4 Bottom of the base]]&lt;br /&gt;
[[File:Servogif-2.gif |thumb|400px|center| Fig. 9 Servo movement is proportional to the compass direction]]&lt;br /&gt;
&lt;br /&gt;
= Testing &amp;amp; Technical Challenges =&lt;br /&gt;
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 for treating as a unit under test. 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.&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #1 ===&lt;br /&gt;
Issue: &lt;br /&gt;
GPS data is sent constantly from the GPS module through UART without the need for a command.&lt;br /&gt;
Full messages referred to as NMEA sentences are received by the module and read by the &lt;br /&gt;
microcontroller. They do not always arrive in their entirety or represent accurate data. &lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #2 ===&lt;br /&gt;
Issue: &lt;br /&gt;
Coordinates in the NMEA sentences are off by more than +/- 5 meters. &lt;br /&gt;
&lt;br /&gt;
[[File:Gps_map.jpg | 300px |thumb|center| Fig 6. Expected longitude and latitude for testing]]&lt;br /&gt;
&lt;br /&gt;
[[File:Gpscapture.JPG | 300px |thumb|center| Fig 7. Actual longitude and latitude coordinates at testing site]]&lt;br /&gt;
&lt;br /&gt;
Solution: &lt;br /&gt;
Following extensive research there is the possibility of configuring known reference geographical locations with the X,Y,Z and (longitude,latitude) coordinate that the GPS module is preloaded with for comparing to. However this did not help as much as making sure we used the WAAS feature which allows the GPS to get feedback from federal ground references for calculating how off satellites are in their pinning a location. &lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #3 ===&lt;br /&gt;
Issue: &lt;br /&gt;
NMEA messages that represent the recommended minimum specific are around 67 characters can &lt;br /&gt;
overflow the local RX FIFO used with UART. Since the FIFO is 16 bytes long an interrupt is &lt;br /&gt;
activated when the receiving buffer is not empty to store enough values to&lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
This project provided several lessons in the values of through unit testing of each of our tasks, and integration testing of all the parts. Complications arose during the formation of our final higher level navigation task which analyzes the readings from our sensors to send commands for the system to reach the same starting GPS location. &lt;br /&gt;
&lt;br /&gt;
From an organizational standpoint if more effort was taken to separate our initialization of our peripherals and our few operations for each sensor the unit testing would be more effective at catching bugs. As we observed in our issues during testing data was invalid which can hinder the pools of data being collected. &lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
[[https://www.youtube.com/watch?v=VUk6K8lpmnQ Video Proof of Concept]]&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://github.com/angeeeeelh/cmpe-146-demo-fall2016/ Github Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Acknowledgements for code and lab instruction is for Preetpal Kang. &lt;br /&gt;
&lt;br /&gt;
In addition, theory of embedded microcontroller design is for Prof. Haluk Ozmek.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
[http://cdn.sparkfun.com/datasheets/Sensors/GPS/Venus/638/doc/AN0003_v1.4.19.pdf GPS module DataSheet]&lt;br /&gt;
&lt;br /&gt;
[http://aprs.gids.nl/nmea/ NMEA Decoding]&lt;br /&gt;
&lt;br /&gt;
[http://www.doctormonk.com/2012/05/sparkfun-venus-gps-and-arduino.html GPS Recommended Minimum Specifics Parsing]&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/LPC1769_68_67_66_65_64_63.pdf SJ One board MCU Datasheet]&lt;br /&gt;
&lt;br /&gt;
[http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board SJ One board Introduction]&lt;br /&gt;
&lt;br /&gt;
[https://cdn-shop.adafruit.com/datasheets/MCP3008.pdf MCP3004 A/D converter Datasheet]&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
N/A&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34473</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34473"/>
				<updated>2016-12-21T15:04:58Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) =&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
Peripheral goals include&lt;br /&gt;
* Logging to SD card using SPI&lt;br /&gt;
* Analog to Digital Converter reading of Temperature sensor&lt;br /&gt;
* Reading and controlling GPS using UART&lt;br /&gt;
* Reading compass measurements using UART&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
GPS control, compass, AD converting, Navigation Algorithm&lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
Servo control, compass, power management&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
Motor Control, power management, logging to SD card&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued &lt;br /&gt;
by a remote control for steering&lt;br /&gt;
and speed throttling. Decode &lt;br /&gt;
these signals over time to identify&lt;br /&gt;
which values produce what kind of &lt;br /&gt;
effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work&lt;br /&gt;
the way we planned. An oscilloscope&lt;br /&gt;
was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and&lt;br /&gt;
servo reacts to PWM as any other motor&lt;br /&gt;
or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing &lt;br /&gt;
the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together &lt;br /&gt;
using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control &lt;br /&gt;
commands issued by the state of the &lt;br /&gt;
navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed&lt;br /&gt;
information and use all task outputs&lt;br /&gt;
in the navigation task.&lt;br /&gt;
| In Progress&lt;br /&gt;
Buggy and needs to check for invalid &lt;br /&gt;
information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| In Progress&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Parts List &amp;amp; Cost =&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
= Design &amp;amp; Implementation =&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
== Hardware Design ==&lt;br /&gt;
Considerations for our hardware include power consumption and usefulness in a water scenario.&lt;br /&gt;
The root of this project where sensor input is analyzed and output signals are distributed&lt;br /&gt;
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity&lt;br /&gt;
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback &lt;br /&gt;
needed to make adjustments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Project_Hardware_Overview_ANSOTAS.jpg|450px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Interface ==&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Best_Case_Scenario_State_Diagrams-_Angel_H.png|500px|thumb|center|Fig 5. I2C Slave State Machine Diagram]]&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
A full duplex communication protocol characterized by the single unidirectional input and output lines between master(s) and slave(s).&lt;br /&gt;
Our project utilizes SPI to transmit and receive data for logging on the external SD card and interface with the compass. The plan is to use a form of serial communication for it's speed and ability to use GPIO for enabling the devices' chip select.&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
Communicating between the compass and GPS module support UART however would not be able to use the same TX and RX since there is no protection from connecting outputs from these devices. This form of communication is asynchronous which means the unidirectional data lines can be flooded with data to a particular device and does not require addressing to occur through those lines. &lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
Extra considerations had to be noted for software driver which handles data to the microcontroller from the sensor. As the 16-byte receiving FIFO &lt;br /&gt;
is flooded with bytes to be read an interrupt is needed to clear the FIFO of it's items and store them in a safe place. This is necessary in order to completely read a message which on average is 70 characters or bytes long.&lt;br /&gt;
&lt;br /&gt;
[[File:Communication_diagram.JPG | 350px | thumb | center | Fig 8. Peripheral Communication Layout]]&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
Building tasks dedicated for controlling each sensor is the first step to our design approach. &lt;br /&gt;
&lt;br /&gt;
* GPS_task&lt;br /&gt;
* Compass_task&lt;br /&gt;
&lt;br /&gt;
A few tasks are used to schedule and communicate data between the tasks would be the following edited libraries. &lt;br /&gt;
&lt;br /&gt;
* Terminal Task&lt;br /&gt;
* Navigation Algorithm&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== PWM and Compass ===&lt;br /&gt;
1. Initialize UART3&lt;br /&gt;
&lt;br /&gt;
2. Set up PWM port and refresh rate&lt;br /&gt;
&lt;br /&gt;
3. Send byte containing 0x13 to Compass&lt;br /&gt;
&lt;br /&gt;
4. Read both bytes in receiving holding register&lt;br /&gt;
&lt;br /&gt;
5. Calculate the duty cycle percent&lt;br /&gt;
&lt;br /&gt;
6. Set PWM duty cycle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Analog/Digital Converter and SPI ===&lt;br /&gt;
1. Initialize SPI&lt;br /&gt;
&lt;br /&gt;
2. CS the device&lt;br /&gt;
&lt;br /&gt;
3. Send 0x01 0x80 0x00 as byte transfers&lt;br /&gt;
&lt;br /&gt;
4. Run ThermometerRead() with retrieved value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:UpperTierHardwareBase.png|thumb|400px|center| Fig. 3 Top of the base]]&lt;br /&gt;
[[File:BottomTierHardwareStack.png|thumb|400px|center| Fig. 4 Bottom of the base]]&lt;br /&gt;
[[File:Servogif-2.gif |thumb|400px|center| Fig. 9 Servo movement is proportional to the compass direction]]&lt;br /&gt;
&lt;br /&gt;
= Testing &amp;amp; Technical Challenges =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #1 ===&lt;br /&gt;
Issue: &lt;br /&gt;
GPS data is sent constantly from the GPS module through UART without the need for a command.&lt;br /&gt;
Full messages referred to as NMEA sentences are received by the module and read by the &lt;br /&gt;
microcontroller. They do not always arrive in their entirety or represent accurate data. &lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #2 ===&lt;br /&gt;
Issue: &lt;br /&gt;
Coordinates in the NMEA sentences are off by more than +/- 5 meters. &lt;br /&gt;
&lt;br /&gt;
[[File:Gps_map.jpg | 300px |thumb|center| Fig 6. Expected longitude and latitude for testing]]&lt;br /&gt;
&lt;br /&gt;
[[File:Gpscapture.JPG | 300px |thumb|center| Fig 7. Actual longitude and latitude coordinates at testing site]]&lt;br /&gt;
&lt;br /&gt;
Solution: &lt;br /&gt;
Following extensive research there is the possibility of configuring known reference geographical locations with the X,Y,Z and (longitude,latitude) coordinate that the GPS module is preloaded with for comparing to. However this did not help as much as making sure we used the WAAS feature which allows the GPS to get feedback from federal ground references for calculating how off satellites are in their pinning a location. &lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #3 ===&lt;br /&gt;
Issue: &lt;br /&gt;
NMEA messages that represent the recommended minimum specific are around 67 characters can &lt;br /&gt;
overflow the local RX FIFO used with UART. Since the FIFO is 16 bytes long an interrupt is &lt;br /&gt;
activated when the receiving buffer is not empty to store enough values to&lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
This project provided several lessons in the values of through unit testing of each of our tasks, and integration testing of all the parts. Complications arose during the formation of our final higher level navigation task which analyzes the readings from our sensors to send commands for the system to reach the same starting GPS location. &lt;br /&gt;
&lt;br /&gt;
From an organizational standpoint if more effort was taken to separate our initialization of our peripherals and our few operations for each sensor the unit testing would be more effective at catching bugs. As we observed in our issues during testing data was invalid which can hinder the pools of data being collected. &lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
[[https://www.youtube.com/watch?v=VUk6K8lpmnQ Video Proof of Concept]]&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://github.com/angeeeeelh/cmpe-146-demo-fall2016/ Github Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Acknowledgements for code and lab instruction is for Preetpal Kang. &lt;br /&gt;
&lt;br /&gt;
In addition, theory of embedded microcontroller design is for Prof. Haluk Ozmek.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
[http://cdn.sparkfun.com/datasheets/Sensors/GPS/Venus/638/doc/AN0003_v1.4.19.pdf GPS module DataSheet]&lt;br /&gt;
&lt;br /&gt;
[http://aprs.gids.nl/nmea/ NMEA Decoding]&lt;br /&gt;
&lt;br /&gt;
[http://www.doctormonk.com/2012/05/sparkfun-venus-gps-and-arduino.html GPS Recommended Minimum Specifics Parsing]&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/LPC1769_68_67_66_65_64_63.pdf SJ One board MCU Datasheet]&lt;br /&gt;
&lt;br /&gt;
[http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board SJ One board Introduction]&lt;br /&gt;
&lt;br /&gt;
[https://cdn-shop.adafruit.com/datasheets/MCP3008.pdf MCP3004 A/D converter Datasheet]&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34471</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34471"/>
				<updated>2016-12-21T14:43:24Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) =&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
Peripheral goals include&lt;br /&gt;
* Logging to SD card using SPI&lt;br /&gt;
* Analog to Digital Converter reading of Temperature sensor&lt;br /&gt;
* Reading and controlling GPS using UART&lt;br /&gt;
* Reading compass measurements using UART&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
GPS control, compass, AD converting, Navigation Algorithm&lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
Servo control, compass, power management&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
Motor Control, power management, logging to SD card&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued &lt;br /&gt;
by a remote control for steering&lt;br /&gt;
and speed throttling. Decode &lt;br /&gt;
these signals over time to identify&lt;br /&gt;
which values produce what kind of &lt;br /&gt;
effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work&lt;br /&gt;
the way we planned. An oscilloscope&lt;br /&gt;
was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and&lt;br /&gt;
servo reacts to PWM as any other motor&lt;br /&gt;
or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing &lt;br /&gt;
the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together &lt;br /&gt;
using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control &lt;br /&gt;
commands issued by the state of the &lt;br /&gt;
navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed&lt;br /&gt;
information and use all task outputs&lt;br /&gt;
in the navigation task.&lt;br /&gt;
| In Progress&lt;br /&gt;
Buggy and needs to check for invalid &lt;br /&gt;
information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| In Progress&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Parts List &amp;amp; Cost =&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
= Design &amp;amp; Implementation =&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
== Hardware Design ==&lt;br /&gt;
Considerations for our hardware include power consumption and usefulness in a water scenario.&lt;br /&gt;
The root of this project where sensor input is analyzed and output signals are distributed&lt;br /&gt;
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity&lt;br /&gt;
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback &lt;br /&gt;
needed to make adjustments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Project_Hardware_Overview_ANSOTAS.jpg|450px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Interface ==&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Best_Case_Scenario_State_Diagrams-_Angel_H.png|500px|thumb|center|Fig 5. I2C Slave State Machine Diagram]]&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
A full duplex communication protocol characterized by the single unidirectional input and output lines between master(s) and slave(s).&lt;br /&gt;
Our project utilizes SPI to transmit and receive data for logging on the external SD card and interface with the compass. The plan is to use a form of serial communication for it's speed and ability to use GPIO for enabling the devices' chip select.&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
Communicating between the compass and GPS module support UART however would not be able to use the same TX and RX since there is no protection from connecting outputs from these devices. This form of communication is asynchronous which means the unidirectional data lines can be flooded with data to a particular device and does not require addressing to occur through those lines. &lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
Extra considerations had to be noted for software driver which handles data to the microcontroller from the sensor. As the 16-byte receiving FIFO &lt;br /&gt;
is flooded with bytes to be read an interrupt is needed to clear the FIFO of it's items and store them in a safe place. This is necessary in order to completely read a message which on average is 70 characters or bytes long.&lt;br /&gt;
&lt;br /&gt;
[[File:Communication_diagram.JPG | 350px | thumb | center | Fig 8. Peripheral Communication Layout]]&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
Building tasks dedicated for controlling each sensor is the first step to our design approach. &lt;br /&gt;
&lt;br /&gt;
* GPS_task&lt;br /&gt;
* Compass_task&lt;br /&gt;
&lt;br /&gt;
A few tasks are used to schedule and communicate data between the tasks would be the following edited libraries. &lt;br /&gt;
&lt;br /&gt;
* Terminal Task&lt;br /&gt;
* Navigation Algorithm&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== PWM and Compass ===&lt;br /&gt;
1. Initialize UART3&lt;br /&gt;
&lt;br /&gt;
2. Set up PWM port and refresh rate&lt;br /&gt;
&lt;br /&gt;
3. Send byte containing 0x13 to Compass&lt;br /&gt;
&lt;br /&gt;
4. Read both bytes in receiving holding register&lt;br /&gt;
&lt;br /&gt;
5. Calculate the duty cycle percent&lt;br /&gt;
&lt;br /&gt;
6. Set PWM duty cycle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Analog/Digital Converter and SPI ===&lt;br /&gt;
&lt;br /&gt;
[[File:UpperTierHardwareBase.png|thumb|400px|center| Fig. 3 Top of the base]]&lt;br /&gt;
[[File:BottomTierHardwareStack.png|thumb|400px|center| Fig. 4 Bottom of the base]]&lt;br /&gt;
[[File:Servogif-2.gif |thumb|400px|center| Fig. 9 Servo movement is proportional to the compass direction]]&lt;br /&gt;
&lt;br /&gt;
= Testing &amp;amp; Technical Challenges =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #1 ===&lt;br /&gt;
Issue: &lt;br /&gt;
GPS data is sent constantly from the GPS module through UART without the need for a command.&lt;br /&gt;
Full messages referred to as NMEA sentences are received by the module and read by the &lt;br /&gt;
microcontroller. They do not always arrive in their entirety or represent accurate data. &lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #2 ===&lt;br /&gt;
Issue: &lt;br /&gt;
Coordinates in the NMEA sentences are off by more than +/- 5 meters. &lt;br /&gt;
&lt;br /&gt;
[[File:Gps_map.jpg | 300px |thumb|center| Fig 6. Expected longitude and latitude for testing]]&lt;br /&gt;
&lt;br /&gt;
[[File:Gpscapture.JPG | 300px |thumb|center| Fig 7. Actual longitude and latitude coordinates at testing site]]&lt;br /&gt;
&lt;br /&gt;
Solution: &lt;br /&gt;
Following extensive research there is the possibility of configuring known reference geographical locations with the X,Y,Z and (longitude,latitude) coordinate that the GPS module is preloaded with for comparing to. However this did not help as much as making sure we used the WAAS feature which allows the GPS to get feedback from federal ground references for calculating how off satellites are in their pinning a location. &lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #3 ===&lt;br /&gt;
Issue: &lt;br /&gt;
NMEA messages that represent the recommended minimum specific are around 67 characters can &lt;br /&gt;
overflow the local RX FIFO used with UART. Since the FIFO is 16 bytes long an interrupt is &lt;br /&gt;
activated when the receiving buffer is not empty to store enough values to&lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
This project provided several lessons in the values of through unit testing of each of our tasks, and integration testing of all the parts. Complications arose during the formation of our final higher level navigation task which analyzes the readings from our sensors to send commands for the system to reach the same starting GPS location. &lt;br /&gt;
&lt;br /&gt;
From an organizational standpoint if more effort was taken to separate our initialization of our peripherals and our few operations for each sensor the unit testing would be more effective at catching bugs. As we observed in our issues during testing data was invalid which can hinder the pools of data being collected. &lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
[[https://www.youtube.com/watch?v=VUk6K8lpmnQ Video Proof of Concept]]&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://github.com/angeeeeelh/cmpe-146-demo-fall2016/ Github Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Acknowledgements for code and lab instruction is for Preetpal Kang. &lt;br /&gt;
&lt;br /&gt;
In addition, theory of embedded microcontroller design is for Prof. Haluk Ozmek.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
[http://cdn.sparkfun.com/datasheets/Sensors/GPS/Venus/638/doc/AN0003_v1.4.19.pdf GPS module DataSheet]&lt;br /&gt;
&lt;br /&gt;
[http://aprs.gids.nl/nmea/ NMEA Decoding]&lt;br /&gt;
&lt;br /&gt;
[http://www.doctormonk.com/2012/05/sparkfun-venus-gps-and-arduino.html GPS Recommended Minimum Specifics Parsing]&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/LPC1769_68_67_66_65_64_63.pdf SJ One board MCU Datasheet]&lt;br /&gt;
&lt;br /&gt;
[http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board SJ One board Introduction]&lt;br /&gt;
&lt;br /&gt;
[https://cdn-shop.adafruit.com/datasheets/MCP3008.pdf MCP3004 A/D converter Datasheet]&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34468</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34468"/>
				<updated>2016-12-21T14:05:42Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* References Used */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) =&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
Peripheral goals include&lt;br /&gt;
* Logging to SD card using SPI&lt;br /&gt;
* Analog to Digital Converter reading of Temperature sensor&lt;br /&gt;
* Reading and controlling GPS using UART&lt;br /&gt;
* Reading compass measurements using UART&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
GPS control, compass, AD converting, Navigation Algorithm&lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
Servo control, compass, power management&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
Motor Control, power management, logging to SD card&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued &lt;br /&gt;
by a remote control for steering&lt;br /&gt;
and speed throttling. Decode &lt;br /&gt;
these signals over time to identify&lt;br /&gt;
which values produce what kind of &lt;br /&gt;
effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work&lt;br /&gt;
the way we planned. An oscilloscope&lt;br /&gt;
was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and&lt;br /&gt;
servo reacts to PWM as any other motor&lt;br /&gt;
or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing &lt;br /&gt;
the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together &lt;br /&gt;
using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control &lt;br /&gt;
commands issued by the state of the &lt;br /&gt;
navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed&lt;br /&gt;
information and use all task outputs&lt;br /&gt;
in the navigation task.&lt;br /&gt;
| In Progress&lt;br /&gt;
Buggy and needs to check for invalid &lt;br /&gt;
information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| In Progress&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Parts List &amp;amp; Cost =&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
= Design &amp;amp; Implementation =&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
== Hardware Design ==&lt;br /&gt;
Considerations for our hardware include power consumption and usefulness in a water scenario.&lt;br /&gt;
The root of this project where sensor input is analyzed and output signals are distributed&lt;br /&gt;
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity&lt;br /&gt;
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback &lt;br /&gt;
needed to make adjustments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Project_Hardware_Overview_ANSOTAS.jpg|450px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Interface ==&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Best_Case_Scenario_State_Diagrams-_Angel_H.png|500px|thumb|center|Fig 5. I2C Slave State Machine Diagram]]&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
A full duplex communication protocol characterized by the single unidirectional input and output lines between master(s) and slave(s).&lt;br /&gt;
Our project utilizes SPI to transmit and receive data for logging on the external SD card and interface with the compass. The plan is to use a form of serial communication for it's speed and ability to use GPIO for enabling the devices' chip select.&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
Communicating between the compass and GPS module support UART however would not be able to use the same TX and RX since there is no protection from connecting outputs from these devices. This form of communication is asynchronous which means the unidirectional data lines can be flooded with data to a particular device and does not require addressing to occur through those lines. &lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
Extra considerations had to be noted for software driver which handles data to the microcontroller from the sensor. As the 16-byte receiving FIFO &lt;br /&gt;
is flooded with bytes to be read an interrupt is needed to clear the FIFO of it's items and store them in a safe place. This is necessary in order to completely read a message which on average is 70 characters or bytes long.&lt;br /&gt;
&lt;br /&gt;
[[File:Communication_diagram.JPG | 350px | thumb | center | Fig 8. Peripheral Communication Layout]]&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
Building tasks dedicated for controlling each sensor is the first step to our design approach. &lt;br /&gt;
&lt;br /&gt;
* GPS_task&lt;br /&gt;
* Compass_task&lt;br /&gt;
&lt;br /&gt;
A few tasks are used to schedule and communicate data between the tasks would be the following edited libraries. &lt;br /&gt;
&lt;br /&gt;
* Terminal Task&lt;br /&gt;
* Navigation Algorithm&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:UpperTierHardwareBase.png|thumb|400px|center| Fig. 3 Top of the base]]&lt;br /&gt;
[[File:BottomTierHardwareStack.png|thumb|400px|center| Fig. 4 Bottom of the base]]&lt;br /&gt;
&lt;br /&gt;
= Testing &amp;amp; Technical Challenges =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #1 ===&lt;br /&gt;
Issue: &lt;br /&gt;
GPS data is sent constantly from the GPS module through UART without the need for a command.&lt;br /&gt;
Full messages referred to as NMEA sentences are received by the module and read by the &lt;br /&gt;
microcontroller. They do not always arrive in their entirety or represent accurate data. &lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #2 ===&lt;br /&gt;
Issue: &lt;br /&gt;
Coordinates in the NMEA sentences are off by more than +/- 5 meters. &lt;br /&gt;
&lt;br /&gt;
[[File:Gps_map.jpg | 300px |thumb|center| Fig 6. Expected longitude and latitude for testing]]&lt;br /&gt;
&lt;br /&gt;
[[File:Gpscapture.JPG | 300px |thumb|center| Fig 7. Actual longitude and latitude coordinates at testing site]]&lt;br /&gt;
&lt;br /&gt;
Solution: &lt;br /&gt;
Following extensive research there is the possibility of configuring known reference geographical locations with the X,Y,Z and (longitude,latitude) coordinate that the GPS module is preloaded with for comparing to. However this did not help as much as making sure we used the WAAS feature which allows the GPS to get feedback from federal ground references for calculating how off satellites are in their pinning a location. &lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #3 ===&lt;br /&gt;
Issue: &lt;br /&gt;
NMEA messages that represent the recommended minimum specific are around 67 characters can &lt;br /&gt;
overflow the local RX FIFO used with UART. Since the FIFO is 16 bytes long an interrupt is &lt;br /&gt;
activated when the receiving buffer is not empty to store enough values to&lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
This project provided several lessons in the values of through unit testing of each of our tasks, and integration testing of all the parts. Complications arose during the formation of our final higher level navigation task which analyzes the readings from our sensors to send commands for the system to reach the same starting GPS location. &lt;br /&gt;
&lt;br /&gt;
From an organizational standpoint if more effort was taken to separate our initialization of our peripherals and our few operations for each sensor the unit testing would be more effective at catching bugs. As we observed in our issues during testing data was invalid which can hinder the pools of data being collected. &lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
[[https://www.youtube.com/watch?v=VUk6K8lpmnQ Video Proof of Concept]]&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://github.com/angeeeeelh/cmpe-146-demo-fall2016/ Github Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Acknowledgements for code and lab instruction is for Preetpal Kang. &lt;br /&gt;
&lt;br /&gt;
In addition, theory of embedded microcontroller design is for Prof. Haluk Ozmek.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
[http://cdn.sparkfun.com/datasheets/Sensors/GPS/Venus/638/doc/AN0003_v1.4.19.pdf GPS module DataSheet]&lt;br /&gt;
&lt;br /&gt;
[http://aprs.gids.nl/nmea/ NMEA Decoding]&lt;br /&gt;
&lt;br /&gt;
[http://www.doctormonk.com/2012/05/sparkfun-venus-gps-and-arduino.html GPS Recommended Minimum Specifics Parsing]&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/LPC1769_68_67_66_65_64_63.pdf SJ One board MCU Datasheet]&lt;br /&gt;
&lt;br /&gt;
[http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board SJ One board Introduction]&lt;br /&gt;
&lt;br /&gt;
[https://cdn-shop.adafruit.com/datasheets/MCP3008.pdf MCP3004 A/D converter Datasheet]&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34466</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34466"/>
				<updated>2016-12-21T13:57:29Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Hardware Interface */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) =&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
Peripheral goals include&lt;br /&gt;
* Logging to SD card using SPI&lt;br /&gt;
* Analog to Digital Converter reading of Temperature sensor&lt;br /&gt;
* Reading and controlling GPS using UART&lt;br /&gt;
* Reading compass measurements using UART&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
GPS control, compass, AD converting, Navigation Algorithm&lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
Servo control, compass, power management&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
Motor Control, power management, logging to SD card&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued &lt;br /&gt;
by a remote control for steering&lt;br /&gt;
and speed throttling. Decode &lt;br /&gt;
these signals over time to identify&lt;br /&gt;
which values produce what kind of &lt;br /&gt;
effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work&lt;br /&gt;
the way we planned. An oscilloscope&lt;br /&gt;
was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and&lt;br /&gt;
servo reacts to PWM as any other motor&lt;br /&gt;
or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing &lt;br /&gt;
the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together &lt;br /&gt;
using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control &lt;br /&gt;
commands issued by the state of the &lt;br /&gt;
navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed&lt;br /&gt;
information and use all task outputs&lt;br /&gt;
in the navigation task.&lt;br /&gt;
| In Progress&lt;br /&gt;
Buggy and needs to check for invalid &lt;br /&gt;
information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| In Progress&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Parts List &amp;amp; Cost =&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
= Design &amp;amp; Implementation =&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
== Hardware Design ==&lt;br /&gt;
Considerations for our hardware include power consumption and usefulness in a water scenario.&lt;br /&gt;
The root of this project where sensor input is analyzed and output signals are distributed&lt;br /&gt;
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity&lt;br /&gt;
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback &lt;br /&gt;
needed to make adjustments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Project_Hardware_Overview_ANSOTAS.jpg|450px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Interface ==&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Best_Case_Scenario_State_Diagrams-_Angel_H.png|500px|thumb|center|Fig 5. I2C Slave State Machine Diagram]]&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
A full duplex communication protocol characterized by the single unidirectional input and output lines between master(s) and slave(s).&lt;br /&gt;
Our project utilizes SPI to transmit and receive data for logging on the external SD card and interface with the compass. The plan is to use a form of serial communication for it's speed and ability to use GPIO for enabling the devices' chip select.&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
Communicating between the compass and GPS module support UART however would not be able to use the same TX and RX since there is no protection from connecting outputs from these devices. This form of communication is asynchronous which means the unidirectional data lines can be flooded with data to a particular device and does not require addressing to occur through those lines. &lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
Extra considerations had to be noted for software driver which handles data to the microcontroller from the sensor. As the 16-byte receiving FIFO &lt;br /&gt;
is flooded with bytes to be read an interrupt is needed to clear the FIFO of it's items and store them in a safe place. This is necessary in order to completely read a message which on average is 70 characters or bytes long.&lt;br /&gt;
&lt;br /&gt;
[[File:Communication_diagram.JPG | 350px | thumb | center | Fig 8. Peripheral Communication Layout]]&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
Building tasks dedicated for controlling each sensor is the first step to our design approach. &lt;br /&gt;
&lt;br /&gt;
* GPS_task&lt;br /&gt;
* Compass_task&lt;br /&gt;
&lt;br /&gt;
A few tasks are used to schedule and communicate data between the tasks would be the following edited libraries. &lt;br /&gt;
&lt;br /&gt;
* Terminal Task&lt;br /&gt;
* Navigation Algorithm&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:UpperTierHardwareBase.png|thumb|400px|center| Fig. 3 Top of the base]]&lt;br /&gt;
[[File:BottomTierHardwareStack.png|thumb|400px|center| Fig. 4 Bottom of the base]]&lt;br /&gt;
&lt;br /&gt;
= Testing &amp;amp; Technical Challenges =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #1 ===&lt;br /&gt;
Issue: &lt;br /&gt;
GPS data is sent constantly from the GPS module through UART without the need for a command.&lt;br /&gt;
Full messages referred to as NMEA sentences are received by the module and read by the &lt;br /&gt;
microcontroller. They do not always arrive in their entirety or represent accurate data. &lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #2 ===&lt;br /&gt;
Issue: &lt;br /&gt;
Coordinates in the NMEA sentences are off by more than +/- 5 meters. &lt;br /&gt;
&lt;br /&gt;
[[File:Gps_map.jpg | 300px |thumb|center| Fig 6. Expected longitude and latitude for testing]]&lt;br /&gt;
&lt;br /&gt;
[[File:Gpscapture.JPG | 300px |thumb|center| Fig 7. Actual longitude and latitude coordinates at testing site]]&lt;br /&gt;
&lt;br /&gt;
Solution: &lt;br /&gt;
Following extensive research there is the possibility of configuring known reference geographical locations with the X,Y,Z and (longitude,latitude) coordinate that the GPS module is preloaded with for comparing to. However this did not help as much as making sure we used the WAAS feature which allows the GPS to get feedback from federal ground references for calculating how off satellites are in their pinning a location. &lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #3 ===&lt;br /&gt;
Issue: &lt;br /&gt;
NMEA messages that represent the recommended minimum specific are around 67 characters can &lt;br /&gt;
overflow the local RX FIFO used with UART. Since the FIFO is 16 bytes long an interrupt is &lt;br /&gt;
activated when the receiving buffer is not empty to store enough values to&lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
This project provided several lessons in the values of through unit testing of each of our tasks, and integration testing of all the parts. Complications arose during the formation of our final higher level navigation task which analyzes the readings from our sensors to send commands for the system to reach the same starting GPS location. &lt;br /&gt;
&lt;br /&gt;
From an organizational standpoint if more effort was taken to separate our initialization of our peripherals and our few operations for each sensor the unit testing would be more effective at catching bugs. As we observed in our issues during testing data was invalid which can hinder the pools of data being collected. &lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
[[https://www.youtube.com/watch?v=VUk6K8lpmnQ Video Proof of Concept]]&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://github.com/angeeeeelh/cmpe-146-demo-fall2016/ Github Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Acknowledgements for code and lab instruction is for Preetpal Kang. &lt;br /&gt;
&lt;br /&gt;
In addition, theory of embedded microcontroller design is for Prof. Haluk Ozmek.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
[http://cdn.sparkfun.com/datasheets/Sensors/GPS/Venus/638/doc/AN0003_v1.4.19.pdf GPS module DataSheet]&lt;br /&gt;
&lt;br /&gt;
[http://aprs.gids.nl/nmea/ NMEA Decoding]&lt;br /&gt;
&lt;br /&gt;
[http://www.doctormonk.com/2012/05/sparkfun-venus-gps-and-arduino.html GPS Recommended Minimum Specifics Parsing]&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/LPC1769_68_67_66_65_64_63.pdf SJ One board MCU Datasheet]&lt;br /&gt;
&lt;br /&gt;
[http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board SJ One board Introduction]&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34453</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34453"/>
				<updated>2016-12-21T13:35:51Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Testing &amp;amp; Technical Challenges */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) =&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
Peripheral goals include&lt;br /&gt;
* Logging to SD card using SPI&lt;br /&gt;
* Analog to Digital Converter reading of Temperature sensor&lt;br /&gt;
* Reading and controlling GPS using UART&lt;br /&gt;
* Reading compass measurements using UART&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
GPS control, compass, AD converting, Navigation Algorithm&lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
Servo control, compass, power management&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
Motor Control, power management, logging to SD card&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued &lt;br /&gt;
by a remote control for steering&lt;br /&gt;
and speed throttling. Decode &lt;br /&gt;
these signals over time to identify&lt;br /&gt;
which values produce what kind of &lt;br /&gt;
effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work&lt;br /&gt;
the way we planned. An oscilloscope&lt;br /&gt;
was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and&lt;br /&gt;
servo reacts to PWM as any other motor&lt;br /&gt;
or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing &lt;br /&gt;
the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together &lt;br /&gt;
using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control &lt;br /&gt;
commands issued by the state of the &lt;br /&gt;
navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed&lt;br /&gt;
information and use all task outputs&lt;br /&gt;
in the navigation task.&lt;br /&gt;
| In Progress&lt;br /&gt;
Buggy and needs to check for invalid &lt;br /&gt;
information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| In Progress&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Parts List &amp;amp; Cost =&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
= Design &amp;amp; Implementation =&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
== Hardware Design ==&lt;br /&gt;
Considerations for our hardware include power consumption and usefulness in a water scenario.&lt;br /&gt;
The root of this project where sensor input is analyzed and output signals are distributed&lt;br /&gt;
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity&lt;br /&gt;
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback &lt;br /&gt;
needed to make adjustments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Project_Hardware_Overview_ANSOTAS.jpg|450px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Interface ==&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Best_Case_Scenario_State_Diagrams-_Angel_H.png|500px|thumb|center|Fig 5. I2C Slave State Machine Diagram]]&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
A full duplex communication protocol characterized by the single unidirectional input and output lines between master(s) and slave(s).&lt;br /&gt;
Our project utilizes SPI to transmit and receive data for logging on the external SD card and interface with the compass. The plan is to use a form of serial communication for it's speed and ability to use GPIO for enabling the devices' chip select.&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
Communicating between the compass and GPS module support UART however would not be able to use the same TX and RX since there is no protection from connecting outputs from these devices. This form of communication is asynchronous which means the unidirectional data lines can be flooded with data to a particular device and does not require addressing to occur through those lines. &lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
Extra considerations had to be noted for software driver which handles data to the microcontroller from the sensor. As the 16-byte receiving FIFO &lt;br /&gt;
is flooded with bytes to be read an interrupt is needed to clear the FIFO of it's items and store them in a safe place. This is necessary in order to completely read a message which on average is 70 characters or bytes long.&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
Building tasks dedicated for controlling each sensor is the first step to our design approach. &lt;br /&gt;
&lt;br /&gt;
* GPS_task&lt;br /&gt;
* Compass_task&lt;br /&gt;
&lt;br /&gt;
A few tasks are used to schedule and communicate data between the tasks would be the following edited libraries. &lt;br /&gt;
&lt;br /&gt;
* Terminal Task&lt;br /&gt;
* Navigation Algorithm&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:UpperTierHardwareBase.png|thumb|400px|center| Fig. 3 Top of the base]]&lt;br /&gt;
[[File:BottomTierHardwareStack.png|thumb|400px|center| Fig. 4 Bottom of the base]]&lt;br /&gt;
&lt;br /&gt;
= Testing &amp;amp; Technical Challenges =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #1 ===&lt;br /&gt;
Issue: &lt;br /&gt;
GPS data is sent constantly from the GPS module through UART without the need for a command.&lt;br /&gt;
Full messages referred to as NMEA sentences are received by the module and read by the &lt;br /&gt;
microcontroller. They do not always arrive in their entirety or represent accurate data. &lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #2 ===&lt;br /&gt;
Issue: &lt;br /&gt;
Coordinates in the NMEA sentences are off by more than +/- 5 meters. &lt;br /&gt;
&lt;br /&gt;
[[File:Gps_map.jpg | 300px |thumb|center| Fig 6. Expected longitude and latitude for testing]]&lt;br /&gt;
&lt;br /&gt;
[[File:Gpscapture.JPG | 300px |thumb|center| Fig 7. Actual longitude and latitude coordinates at testing site]]&lt;br /&gt;
&lt;br /&gt;
Solution: &lt;br /&gt;
Following extensive research there is the possibility of configuring known reference geographical locations with the X,Y,Z and (longitude,latitude) coordinate that the GPS module is preloaded with for comparing to. However this did not help as much as making sure we used the WAAS feature which allows the GPS to get feedback from federal ground references for calculating how off satellites are in their pinning a location. &lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #3 ===&lt;br /&gt;
Issue: &lt;br /&gt;
NMEA messages that represent the recommended minimum specific are around 67 characters can &lt;br /&gt;
overflow the local RX FIFO used with UART. Since the FIFO is 16 bytes long an interrupt is &lt;br /&gt;
activated when the receiving buffer is not empty to store enough values to&lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
This project provided several lessons in the values of through unit testing of each of our tasks, and integration testing of all the parts. Complications arose during the formation of our final higher level navigation task which analyzes the readings from our sensors to send commands for the system to reach the same starting GPS location. &lt;br /&gt;
&lt;br /&gt;
From an organizational standpoint if more effort was taken to separate our initialization of our peripherals and our few operations for each sensor the unit testing would be more effective at catching bugs. As we observed in our issues during testing data was invalid which can hinder the pools of data being collected. &lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
[[https://www.youtube.com/watch?v=VUk6K8lpmnQ Video Proof of Concept]]&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://github.com/angeeeeelh/cmpe-146-demo-fall2016/ Github Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Acknowledgements for code and lab instruction is for Preetpal Kang. &lt;br /&gt;
&lt;br /&gt;
In addition, theory of embedded microcontroller design is for Prof. Haluk Ozmek.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
[http://cdn.sparkfun.com/datasheets/Sensors/GPS/Venus/638/doc/AN0003_v1.4.19.pdf GPS module DataSheet]&lt;br /&gt;
&lt;br /&gt;
[http://aprs.gids.nl/nmea/ NMEA Decoding]&lt;br /&gt;
&lt;br /&gt;
[http://www.doctormonk.com/2012/05/sparkfun-venus-gps-and-arduino.html GPS Recommended Minimum Specifics Parsing]&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/LPC1769_68_67_66_65_64_63.pdf SJ One board MCU Datasheet]&lt;br /&gt;
&lt;br /&gt;
[http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board SJ One board Introduction]&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34440</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34440"/>
				<updated>2016-12-21T13:06:38Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Schedule */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) =&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
Peripheral goals include&lt;br /&gt;
* Logging to SD card using SPI&lt;br /&gt;
* Analog to Digital Converter reading of Temperature sensor&lt;br /&gt;
* Reading and controlling GPS using UART&lt;br /&gt;
* Reading compass measurements using UART&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
GPS control, compass, AD converting, Navigation Algorithm&lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
Servo control, compass, power management&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
Motor Control, power management, logging to SD card&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued &lt;br /&gt;
by a remote control for steering&lt;br /&gt;
and speed throttling. Decode &lt;br /&gt;
these signals over time to identify&lt;br /&gt;
which values produce what kind of &lt;br /&gt;
effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work&lt;br /&gt;
the way we planned. An oscilloscope&lt;br /&gt;
was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and&lt;br /&gt;
servo reacts to PWM as any other motor&lt;br /&gt;
or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing &lt;br /&gt;
the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together &lt;br /&gt;
using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control &lt;br /&gt;
commands issued by the state of the &lt;br /&gt;
navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed&lt;br /&gt;
information and use all task outputs&lt;br /&gt;
in the navigation task.&lt;br /&gt;
| In Progress&lt;br /&gt;
Buggy and needs to check for invalid &lt;br /&gt;
information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| In Progress&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Parts List &amp;amp; Cost =&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
= Design &amp;amp; Implementation =&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
== Hardware Design ==&lt;br /&gt;
Considerations for our hardware include power consumption and usefulness in a water scenario.&lt;br /&gt;
The root of this project where sensor input is analyzed and output signals are distributed&lt;br /&gt;
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity&lt;br /&gt;
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback &lt;br /&gt;
needed to make adjustments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Project_Hardware_Overview_ANSOTAS.jpg|450px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Interface ==&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Best_Case_Scenario_State_Diagrams-_Angel_H.png|500px|thumb|center|Fig 5. I2C Slave State Machine Diagram]]&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
A full duplex communication protocol characterized by the single unidirectional input and output lines between master(s) and slave(s).&lt;br /&gt;
Our project utilizes SPI to transmit and receive data for logging on the external SD card and interface with the compass. The plan is to use a form of serial communication for it's speed and ability to use GPIO for enabling the devices' chip select.&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
Communicating between the compass and GPS module support UART however would not be able to use the same TX and RX since there is no protection from connecting outputs from these devices. This form of communication is asynchronous which means the unidirectional data lines can be flooded with data to a particular device and does not require addressing to occur through those lines. &lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
Extra considerations had to be noted for software driver which handles data to the microcontroller from the sensor. As the 16-byte receiving FIFO &lt;br /&gt;
is flooded with bytes to be read an interrupt is needed to clear the FIFO of it's items and store them in a safe place. This is necessary in order to completely read a message which on average is 70 characters or bytes long.&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
Building tasks dedicated for controlling each sensor is the first step to our design approach. &lt;br /&gt;
&lt;br /&gt;
* GPS_task&lt;br /&gt;
* Compass_task&lt;br /&gt;
&lt;br /&gt;
A few tasks are used to schedule and communicate data between the tasks would be the following edited libraries. &lt;br /&gt;
&lt;br /&gt;
* Terminal Task&lt;br /&gt;
* Navigation Algorithm&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:UpperTierHardwareBase.png|thumb|400px|center| Fig. 3 Top of the base]]&lt;br /&gt;
[[File:BottomTierHardwareStack.png|thumb|400px|center| Fig. 4 Bottom of the base]]&lt;br /&gt;
&lt;br /&gt;
= Testing &amp;amp; Technical Challenges =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #1 ===&lt;br /&gt;
Issue: &lt;br /&gt;
GPS data is sent constantly from the GPS module through UART without the need for a command.&lt;br /&gt;
Full messages referred to as NMEA sentences are received by the module and read by the &lt;br /&gt;
microcontroller. They do not always arrive in their entirety or represent accurate data. &lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #2 ===&lt;br /&gt;
Issue: &lt;br /&gt;
Coordinates in the NMEA sentences are off by more than +/- 5 meters. &lt;br /&gt;
&lt;br /&gt;
Solution: &lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #3 ===&lt;br /&gt;
Issue: &lt;br /&gt;
NMEA messages that represent the recommended minimum specific are around 67 characters can &lt;br /&gt;
overflow the local RX FIFO used with UART. Since the FIFO is 16 bytes long an interrupt is &lt;br /&gt;
activated when the receiving buffer is not empty to store enough values to&lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
This project provided several lessons in the values of through unit testing of each of our tasks, and integration testing of all the parts. Complications arose during the formation of our final higher level navigation task which analyzes the readings from our sensors to send commands for the system to reach the same starting GPS location. &lt;br /&gt;
&lt;br /&gt;
From an organizational standpoint if more effort was taken to separate our initialization of our peripherals and our few operations for each sensor the unit testing would be more effective at catching bugs. As we observed in our issues during testing data was invalid which can hinder the pools of data being collected. &lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
[[https://www.youtube.com/watch?v=VUk6K8lpmnQ Video Proof of Concept]]&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://github.com/angeeeeelh/cmpe-146-demo-fall2016/ Github Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Acknowledgements for code and lab instruction is for Preetpal Kang. &lt;br /&gt;
&lt;br /&gt;
In addition, theory of embedded microcontroller design is for Prof. Haluk Ozmek.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
[http://cdn.sparkfun.com/datasheets/Sensors/GPS/Venus/638/doc/AN0003_v1.4.19.pdf GPS module DataSheet]&lt;br /&gt;
&lt;br /&gt;
[http://aprs.gids.nl/nmea/ NMEA Decoding]&lt;br /&gt;
&lt;br /&gt;
[http://www.doctormonk.com/2012/05/sparkfun-venus-gps-and-arduino.html GPS Recommended Minimum Specifics Parsing]&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/LPC1769_68_67_66_65_64_63.pdf SJ One board MCU Datasheet]&lt;br /&gt;
&lt;br /&gt;
[http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board SJ One board Introduction]&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34439</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34439"/>
				<updated>2016-12-21T13:05:26Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Schedule */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) =&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
Peripheral goals include&lt;br /&gt;
* Logging to SD card using SPI&lt;br /&gt;
* Analog to Digital Converter reading of Temperature sensor&lt;br /&gt;
* Reading and controlling GPS using UART&lt;br /&gt;
* Reading compass measurements using UART&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
GPS control, compass, AD converting, Navigation Algorithm&lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
Servo control, compass, power management&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
Motor Control, power management, logging to SD card&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued &lt;br /&gt;
by a remote control for steering&lt;br /&gt;
and speed throttling. Decode &lt;br /&gt;
these signals over time to identify&lt;br /&gt;
which values produce what kind of &lt;br /&gt;
effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work&lt;br /&gt;
the way we planned. An oscilloscope&lt;br /&gt;
was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and&lt;br /&gt;
servo reacts to PWM as any other motor&lt;br /&gt;
or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing &lt;br /&gt;
the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together &lt;br /&gt;
using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control &lt;br /&gt;
commands issued by the state of the &lt;br /&gt;
navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed&lt;br /&gt;
information and use all task outputs&lt;br /&gt;
in the navigation task.&lt;br /&gt;
| In Progress&lt;br /&gt;
Buggy and needs to check for invalid &lt;br /&gt;
information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| In Progress&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|-}&lt;br /&gt;
&lt;br /&gt;
= Parts List &amp;amp; Cost =&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
= Design &amp;amp; Implementation =&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
== Hardware Design ==&lt;br /&gt;
Considerations for our hardware include power consumption and usefulness in a water scenario.&lt;br /&gt;
The root of this project where sensor input is analyzed and output signals are distributed&lt;br /&gt;
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity&lt;br /&gt;
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback &lt;br /&gt;
needed to make adjustments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Project_Hardware_Overview_ANSOTAS.jpg|450px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Interface ==&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Best_Case_Scenario_State_Diagrams-_Angel_H.png|500px|thumb|center|Fig 5. I2C Slave State Machine Diagram]]&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
A full duplex communication protocol characterized by the single unidirectional input and output lines between master(s) and slave(s).&lt;br /&gt;
Our project utilizes SPI to transmit and receive data for logging on the external SD card and interface with the compass. The plan is to use a form of serial communication for it's speed and ability to use GPIO for enabling the devices' chip select.&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
Communicating between the compass and GPS module support UART however would not be able to use the same TX and RX since there is no protection from connecting outputs from these devices. This form of communication is asynchronous which means the unidirectional data lines can be flooded with data to a particular device and does not require addressing to occur through those lines. &lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
Extra considerations had to be noted for software driver which handles data to the microcontroller from the sensor. As the 16-byte receiving FIFO &lt;br /&gt;
is flooded with bytes to be read an interrupt is needed to clear the FIFO of it's items and store them in a safe place. This is necessary in order to completely read a message which on average is 70 characters or bytes long.&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
Building tasks dedicated for controlling each sensor is the first step to our design approach. &lt;br /&gt;
&lt;br /&gt;
* GPS_task&lt;br /&gt;
* Compass_task&lt;br /&gt;
&lt;br /&gt;
A few tasks are used to schedule and communicate data between the tasks would be the following edited libraries. &lt;br /&gt;
&lt;br /&gt;
* Terminal Task&lt;br /&gt;
* Navigation Algorithm&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:UpperTierHardwareBase.png|thumb|400px|center| Fig. 3 Top of the base]]&lt;br /&gt;
[[File:BottomTierHardwareStack.png|thumb|400px|center| Fig. 4 Bottom of the base]]&lt;br /&gt;
&lt;br /&gt;
= Testing &amp;amp; Technical Challenges =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #1 ===&lt;br /&gt;
Issue: &lt;br /&gt;
GPS data is sent constantly from the GPS module through UART without the need for a command.&lt;br /&gt;
Full messages referred to as NMEA sentences are received by the module and read by the &lt;br /&gt;
microcontroller. They do not always arrive in their entirety or represent accurate data. &lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #2 ===&lt;br /&gt;
Issue: &lt;br /&gt;
Coordinates in the NMEA sentences are off by more than +/- 5 meters. &lt;br /&gt;
&lt;br /&gt;
Solution: &lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #3 ===&lt;br /&gt;
Issue: &lt;br /&gt;
NMEA messages that represent the recommended minimum specific are around 67 characters can &lt;br /&gt;
overflow the local RX FIFO used with UART. Since the FIFO is 16 bytes long an interrupt is &lt;br /&gt;
activated when the receiving buffer is not empty to store enough values to&lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
This project provided several lessons in the values of through unit testing of each of our tasks, and integration testing of all the parts. Complications arose during the formation of our final higher level navigation task which analyzes the readings from our sensors to send commands for the system to reach the same starting GPS location. &lt;br /&gt;
&lt;br /&gt;
From an organizational standpoint if more effort was taken to separate our initialization of our peripherals and our few operations for each sensor the unit testing would be more effective at catching bugs. As we observed in our issues during testing data was invalid which can hinder the pools of data being collected. &lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
[[https://www.youtube.com/watch?v=VUk6K8lpmnQ Video Proof of Concept]]&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://github.com/angeeeeelh/cmpe-146-demo-fall2016/ Github Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Acknowledgements for code and lab instruction is for Preetpal Kang. &lt;br /&gt;
&lt;br /&gt;
In addition, theory of embedded microcontroller design is for Prof. Haluk Ozmek.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
[http://cdn.sparkfun.com/datasheets/Sensors/GPS/Venus/638/doc/AN0003_v1.4.19.pdf GPS module DataSheet]&lt;br /&gt;
&lt;br /&gt;
[http://aprs.gids.nl/nmea/ NMEA Decoding]&lt;br /&gt;
&lt;br /&gt;
[http://www.doctormonk.com/2012/05/sparkfun-venus-gps-and-arduino.html GPS Recommended Minimum Specifics Parsing]&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/LPC1769_68_67_66_65_64_63.pdf SJ One board MCU Datasheet]&lt;br /&gt;
&lt;br /&gt;
[http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board SJ One board Introduction]&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34438</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34438"/>
				<updated>2016-12-21T13:02:59Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Hardware Interface */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) =&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
Peripheral goals include&lt;br /&gt;
* Logging to SD card using SPI&lt;br /&gt;
* Analog to Digital Converter reading of Temperature sensor&lt;br /&gt;
* Reading and controlling GPS using UART&lt;br /&gt;
* Reading compass measurements using UART&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
GPS control, compass, AD converting, Navigation Algorithm&lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
Servo control, compass, power management&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
Motor Control, power management, logging to SD card&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued by a remote&lt;br /&gt;
control for steering and speed throttling. Decode&lt;br /&gt;
these signals over time to identify which values produce&lt;br /&gt;
what kind of effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work the way we planned&lt;br /&gt;
An oscilloscope was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and servo reacts to &lt;br /&gt;
PWM as any other motor or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control commands issued&lt;br /&gt;
by the state of the navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed information and use&lt;br /&gt;
all task outputs in the navigation task&lt;br /&gt;
| Completed&lt;br /&gt;
Buggy and needs to check for invalid information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| Completed&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|-}&lt;br /&gt;
&lt;br /&gt;
= Parts List &amp;amp; Cost =&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
= Design &amp;amp; Implementation =&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
== Hardware Design ==&lt;br /&gt;
Considerations for our hardware include power consumption and usefulness in a water scenario.&lt;br /&gt;
The root of this project where sensor input is analyzed and output signals are distributed&lt;br /&gt;
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity&lt;br /&gt;
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback &lt;br /&gt;
needed to make adjustments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Project_Hardware_Overview_ANSOTAS.jpg|450px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Interface ==&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Best_Case_Scenario_State_Diagrams-_Angel_H.png|500px|thumb|center|Fig 5. I2C Slave State Machine Diagram]]&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
A full duplex communication protocol characterized by the single unidirectional input and output lines between master(s) and slave(s).&lt;br /&gt;
Our project utilizes SPI to transmit and receive data for logging on the external SD card and interface with the compass. The plan is to use a form of serial communication for it's speed and ability to use GPIO for enabling the devices' chip select.&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
Communicating between the compass and GPS module support UART however would not be able to use the same TX and RX since there is no protection from connecting outputs from these devices. This form of communication is asynchronous which means the unidirectional data lines can be flooded with data to a particular device and does not require addressing to occur through those lines. &lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
Extra considerations had to be noted for software driver which handles data to the microcontroller from the sensor. As the 16-byte receiving FIFO &lt;br /&gt;
is flooded with bytes to be read an interrupt is needed to clear the FIFO of it's items and store them in a safe place. This is necessary in order to completely read a message which on average is 70 characters or bytes long.&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
Building tasks dedicated for controlling each sensor is the first step to our design approach. &lt;br /&gt;
&lt;br /&gt;
* GPS_task&lt;br /&gt;
* Compass_task&lt;br /&gt;
&lt;br /&gt;
A few tasks are used to schedule and communicate data between the tasks would be the following edited libraries. &lt;br /&gt;
&lt;br /&gt;
* Terminal Task&lt;br /&gt;
* Navigation Algorithm&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:UpperTierHardwareBase.png|thumb|400px|center| Fig. 3 Top of the base]]&lt;br /&gt;
[[File:BottomTierHardwareStack.png|thumb|400px|center| Fig. 4 Bottom of the base]]&lt;br /&gt;
&lt;br /&gt;
= Testing &amp;amp; Technical Challenges =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #1 ===&lt;br /&gt;
Issue: &lt;br /&gt;
GPS data is sent constantly from the GPS module through UART without the need for a command.&lt;br /&gt;
Full messages referred to as NMEA sentences are received by the module and read by the &lt;br /&gt;
microcontroller. They do not always arrive in their entirety or represent accurate data. &lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #2 ===&lt;br /&gt;
Issue: &lt;br /&gt;
Coordinates in the NMEA sentences are off by more than +/- 5 meters. &lt;br /&gt;
&lt;br /&gt;
Solution: &lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #3 ===&lt;br /&gt;
Issue: &lt;br /&gt;
NMEA messages that represent the recommended minimum specific are around 67 characters can &lt;br /&gt;
overflow the local RX FIFO used with UART. Since the FIFO is 16 bytes long an interrupt is &lt;br /&gt;
activated when the receiving buffer is not empty to store enough values to&lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
This project provided several lessons in the values of through unit testing of each of our tasks, and integration testing of all the parts. Complications arose during the formation of our final higher level navigation task which analyzes the readings from our sensors to send commands for the system to reach the same starting GPS location. &lt;br /&gt;
&lt;br /&gt;
From an organizational standpoint if more effort was taken to separate our initialization of our peripherals and our few operations for each sensor the unit testing would be more effective at catching bugs. As we observed in our issues during testing data was invalid which can hinder the pools of data being collected. &lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
[[https://www.youtube.com/watch?v=VUk6K8lpmnQ Video Proof of Concept]]&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://github.com/angeeeeelh/cmpe-146-demo-fall2016/ Github Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Acknowledgements for code and lab instruction is for Preetpal Kang. &lt;br /&gt;
&lt;br /&gt;
In addition, theory of embedded microcontroller design is for Prof. Haluk Ozmek.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
[http://cdn.sparkfun.com/datasheets/Sensors/GPS/Venus/638/doc/AN0003_v1.4.19.pdf GPS module DataSheet]&lt;br /&gt;
&lt;br /&gt;
[http://aprs.gids.nl/nmea/ NMEA Decoding]&lt;br /&gt;
&lt;br /&gt;
[http://www.doctormonk.com/2012/05/sparkfun-venus-gps-and-arduino.html GPS Recommended Minimum Specifics Parsing]&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/LPC1769_68_67_66_65_64_63.pdf SJ One board MCU Datasheet]&lt;br /&gt;
&lt;br /&gt;
[http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board SJ One board Introduction]&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34436</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34436"/>
				<updated>2016-12-21T12:52:21Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Project Video */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) =&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
Peripheral goals include&lt;br /&gt;
* Logging to SD card using SPI&lt;br /&gt;
* Analog to Digital Converter reading of Temperature sensor&lt;br /&gt;
* Reading and controlling GPS using UART&lt;br /&gt;
* Reading compass measurements using UART&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
GPS control, compass, AD converting, Navigation Algorithm&lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
Servo control, compass, power management&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
Motor Control, power management, logging to SD card&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued by a remote&lt;br /&gt;
control for steering and speed throttling. Decode&lt;br /&gt;
these signals over time to identify which values produce&lt;br /&gt;
what kind of effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work the way we planned&lt;br /&gt;
An oscilloscope was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and servo reacts to &lt;br /&gt;
PWM as any other motor or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control commands issued&lt;br /&gt;
by the state of the navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed information and use&lt;br /&gt;
all task outputs in the navigation task&lt;br /&gt;
| Completed&lt;br /&gt;
Buggy and needs to check for invalid information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| Completed&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|-}&lt;br /&gt;
&lt;br /&gt;
= Parts List &amp;amp; Cost =&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
= Design &amp;amp; Implementation =&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
== Hardware Design ==&lt;br /&gt;
Considerations for our hardware include power consumption and usefulness in a water scenario.&lt;br /&gt;
The root of this project where sensor input is analyzed and output signals are distributed&lt;br /&gt;
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity&lt;br /&gt;
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback &lt;br /&gt;
needed to make adjustments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Project_Hardware_Overview_ANSOTAS.jpg|450px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Interface ==&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Best_Case_Scenario_State_Diagrams-_Angel_H.png|500px|thumb|center|Fig 5. I2C Slave State Machine Diagram]]&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
A full duplex communication protocol characterized by the single unidirectional input and output lines between master(s) and slave(s).&lt;br /&gt;
Our project utilizes SPI to transmit and receive data for logging on the external SD card and interface with the compass. The plan is to use a form of serial communication for it's speed and ability to use GPIO for enabling the devices' chip select.&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PWM ===&lt;br /&gt;
&lt;br /&gt;
=== ADC ===&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
Building tasks dedicated for controlling each sensor is the first step to our design approach. &lt;br /&gt;
&lt;br /&gt;
* GPS_task&lt;br /&gt;
* Compass_task&lt;br /&gt;
&lt;br /&gt;
A few tasks are used to schedule and communicate data between the tasks would be the following edited libraries. &lt;br /&gt;
&lt;br /&gt;
* Terminal Task&lt;br /&gt;
* Navigation Algorithm&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:UpperTierHardwareBase.png|thumb|400px|center| Fig. 3 Top of the base]]&lt;br /&gt;
[[File:BottomTierHardwareStack.png|thumb|400px|center| Fig. 4 Bottom of the base]]&lt;br /&gt;
&lt;br /&gt;
= Testing &amp;amp; Technical Challenges =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #1 ===&lt;br /&gt;
Issue: &lt;br /&gt;
GPS data is sent constantly from the GPS module through UART without the need for a command.&lt;br /&gt;
Full messages referred to as NMEA sentences are received by the module and read by the &lt;br /&gt;
microcontroller. They do not always arrive in their entirety or represent accurate data. &lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #2 ===&lt;br /&gt;
Issue: &lt;br /&gt;
Coordinates in the NMEA sentences are off by more than +/- 5 meters. &lt;br /&gt;
&lt;br /&gt;
Solution: &lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #3 ===&lt;br /&gt;
Issue: &lt;br /&gt;
NMEA messages that represent the recommended minimum specific are around 67 characters can &lt;br /&gt;
overflow the local RX FIFO used with UART. Since the FIFO is 16 bytes long an interrupt is &lt;br /&gt;
activated when the receiving buffer is not empty to store enough values to&lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
This project provided several lessons in the values of through unit testing of each of our tasks, and integration testing of all the parts. Complications arose during the formation of our final higher level navigation task which analyzes the readings from our sensors to send commands for the system to reach the same starting GPS location. &lt;br /&gt;
&lt;br /&gt;
From an organizational standpoint if more effort was taken to separate our initialization of our peripherals and our few operations for each sensor the unit testing would be more effective at catching bugs. As we observed in our issues during testing data was invalid which can hinder the pools of data being collected. &lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
[[https://www.youtube.com/watch?v=VUk6K8lpmnQ Video Proof of Concept]]&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://github.com/angeeeeelh/cmpe-146-demo-fall2016/ Github Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Acknowledgements for code and lab instruction is for Preetpal Kang. &lt;br /&gt;
&lt;br /&gt;
In addition, theory of embedded microcontroller design is for Prof. Haluk Ozmek.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
[http://cdn.sparkfun.com/datasheets/Sensors/GPS/Venus/638/doc/AN0003_v1.4.19.pdf GPS module DataSheet]&lt;br /&gt;
&lt;br /&gt;
[http://aprs.gids.nl/nmea/ NMEA Decoding]&lt;br /&gt;
&lt;br /&gt;
[http://www.doctormonk.com/2012/05/sparkfun-venus-gps-and-arduino.html GPS Recommended Minimum Specifics Parsing]&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/LPC1769_68_67_66_65_64_63.pdf SJ One board MCU Datasheet]&lt;br /&gt;
&lt;br /&gt;
[http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board SJ One board Introduction]&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34429</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34429"/>
				<updated>2016-12-21T12:44:08Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Conclusion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) =&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
Peripheral goals include&lt;br /&gt;
* Logging to SD card using SPI&lt;br /&gt;
* Analog to Digital Converter reading of Temperature sensor&lt;br /&gt;
* Reading and controlling GPS using UART&lt;br /&gt;
* Reading compass measurements using UART&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
GPS control, compass, AD converting, Navigation Algorithm&lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
Servo control, compass, power management&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
Motor Control, power management, logging to SD card&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued by a remote&lt;br /&gt;
control for steering and speed throttling. Decode&lt;br /&gt;
these signals over time to identify which values produce&lt;br /&gt;
what kind of effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work the way we planned&lt;br /&gt;
An oscilloscope was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and servo reacts to &lt;br /&gt;
PWM as any other motor or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control commands issued&lt;br /&gt;
by the state of the navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed information and use&lt;br /&gt;
all task outputs in the navigation task&lt;br /&gt;
| Completed&lt;br /&gt;
Buggy and needs to check for invalid information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| Completed&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|-}&lt;br /&gt;
&lt;br /&gt;
= Parts List &amp;amp; Cost =&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
= Design &amp;amp; Implementation =&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
== Hardware Design ==&lt;br /&gt;
Considerations for our hardware include power consumption and usefulness in a water scenario.&lt;br /&gt;
The root of this project where sensor input is analyzed and output signals are distributed&lt;br /&gt;
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity&lt;br /&gt;
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback &lt;br /&gt;
needed to make adjustments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Project_Hardware_Overview_ANSOTAS.jpg|450px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Interface ==&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Best_Case_Scenario_State_Diagrams-_Angel_H.png|500px|thumb|center|Fig 5. I2C Slave State Machine Diagram]]&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
A full duplex communication protocol characterized by the single unidirectional input and output lines between master(s) and slave(s).&lt;br /&gt;
Our project utilizes SPI to transmit and receive data for logging on the external SD card and interface with the compass. The plan is to use a form of serial communication for it's speed and ability to use GPIO for enabling the devices' chip select.&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PWM ===&lt;br /&gt;
&lt;br /&gt;
=== ADC ===&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
Building tasks dedicated for controlling each sensor is the first step to our design approach. &lt;br /&gt;
&lt;br /&gt;
* GPS_task&lt;br /&gt;
* Compass_task&lt;br /&gt;
&lt;br /&gt;
A few tasks are used to schedule and communicate data between the tasks would be the following edited libraries. &lt;br /&gt;
&lt;br /&gt;
* Terminal Task&lt;br /&gt;
* Navigation Algorithm&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:UpperTierHardwareBase.png|thumb|400px|center| Fig. 3 Top of the base]]&lt;br /&gt;
[[File:BottomTierHardwareStack.png|thumb|400px|center| Fig. 4 Bottom of the base]]&lt;br /&gt;
&lt;br /&gt;
= Testing &amp;amp; Technical Challenges =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #1 ===&lt;br /&gt;
Issue: &lt;br /&gt;
GPS data is sent constantly from the GPS module through UART without the need for a command.&lt;br /&gt;
Full messages referred to as NMEA sentences are received by the module and read by the &lt;br /&gt;
microcontroller. They do not always arrive in their entirety or represent accurate data. &lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #2 ===&lt;br /&gt;
Issue: &lt;br /&gt;
Coordinates in the NMEA sentences are off by more than +/- 5 meters. &lt;br /&gt;
&lt;br /&gt;
Solution: &lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #3 ===&lt;br /&gt;
Issue: &lt;br /&gt;
NMEA messages that represent the recommended minimum specific are around 67 characters can &lt;br /&gt;
overflow the local RX FIFO used with UART. Since the FIFO is 16 bytes long an interrupt is &lt;br /&gt;
activated when the receiving buffer is not empty to store enough values to&lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
This project provided several lessons in the values of through unit testing of each of our tasks, and integration testing of all the parts. Complications arose during the formation of our final higher level navigation task which analyzes the readings from our sensors to send commands for the system to reach the same starting GPS location. &lt;br /&gt;
&lt;br /&gt;
From an organizational standpoint if more effort was taken to separate our initialization of our peripherals and our few operations for each sensor the unit testing would be more effective at catching bugs. As we observed in our issues during testing data was invalid which can hinder the pools of data being collected. &lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
[https://www.youtube.com/watch?v=VUk6K8lpmnQ]&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://github.com/angeeeeelh/cmpe-146-demo-fall2016/ Github Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Acknowledgements for code and lab instruction is for Preetpal Kang. &lt;br /&gt;
&lt;br /&gt;
In addition, theory of embedded microcontroller design is for Prof. Haluk Ozmek.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
[http://cdn.sparkfun.com/datasheets/Sensors/GPS/Venus/638/doc/AN0003_v1.4.19.pdf GPS module DataSheet]&lt;br /&gt;
&lt;br /&gt;
[http://aprs.gids.nl/nmea/ NMEA Decoding]&lt;br /&gt;
&lt;br /&gt;
[http://www.doctormonk.com/2012/05/sparkfun-venus-gps-and-arduino.html GPS Recommended Minimum Specifics Parsing]&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/LPC1769_68_67_66_65_64_63.pdf SJ One board MCU Datasheet]&lt;br /&gt;
&lt;br /&gt;
[http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board SJ One board Introduction]&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34422</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34422"/>
				<updated>2016-12-21T12:10:50Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Acknowledgement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) =&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
Peripheral goals include&lt;br /&gt;
* Logging to SD card using SPI&lt;br /&gt;
* Analog to Digital Converter reading of Temperature sensor&lt;br /&gt;
* Reading and controlling GPS using UART&lt;br /&gt;
* Reading compass measurements using UART&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
GPS control, compass, AD converting, Navigation Algorithm&lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
Servo control, compass, power management&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
Motor Control, power management, logging to SD card&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued by a remote&lt;br /&gt;
control for steering and speed throttling. Decode&lt;br /&gt;
these signals over time to identify which values produce&lt;br /&gt;
what kind of effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work the way we planned&lt;br /&gt;
An oscilloscope was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and servo reacts to &lt;br /&gt;
PWM as any other motor or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control commands issued&lt;br /&gt;
by the state of the navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed information and use&lt;br /&gt;
all task outputs in the navigation task&lt;br /&gt;
| Completed&lt;br /&gt;
Buggy and needs to check for invalid information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| Completed&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|-}&lt;br /&gt;
&lt;br /&gt;
= Parts List &amp;amp; Cost =&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
= Design &amp;amp; Implementation =&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
== Hardware Design ==&lt;br /&gt;
Considerations for our hardware include power consumption and usefulness in a water scenario.&lt;br /&gt;
The root of this project where sensor input is analyzed and output signals are distributed&lt;br /&gt;
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity&lt;br /&gt;
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback &lt;br /&gt;
needed to make adjustments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Project_Hardware_Overview_ANSOTAS.jpg|450px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Interface ==&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Best_Case_Scenario_State_Diagrams-_Angel_H.png|500px|thumb|center|Fig 5. I2C Slave State Machine Diagram]]&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
A full duplex communication protocol characterized by the single unidirectional input and output lines between master(s) and slave(s).&lt;br /&gt;
Our project utilizes SPI to transmit and receive data for logging on the external SD card and interface with the compass. The plan is to use a form of serial communication for it's speed and ability to use GPIO for enabling the devices' chip select.&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PWM ===&lt;br /&gt;
&lt;br /&gt;
=== ADC ===&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
Building tasks dedicated for controlling each sensor is the first step to our design approach. &lt;br /&gt;
&lt;br /&gt;
* GPS_task&lt;br /&gt;
* Compass_task&lt;br /&gt;
&lt;br /&gt;
A few tasks are used to schedule and communicate data between the tasks would be the following edited libraries. &lt;br /&gt;
&lt;br /&gt;
* Terminal Task&lt;br /&gt;
* Navigation Algorithm&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:UpperTierHardwareBase.png|thumb|400px|center| Fig. 3 Top of the base]]&lt;br /&gt;
[[File:BottomTierHardwareStack.png|thumb|400px|center| Fig. 4 Bottom of the base]]&lt;br /&gt;
&lt;br /&gt;
= Testing &amp;amp; Technical Challenges =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #1 ===&lt;br /&gt;
Issue: &lt;br /&gt;
GPS data is sent constantly from the GPS module through UART without the need for a command.&lt;br /&gt;
Full messages referred to as NMEA sentences are received by the module and read by the &lt;br /&gt;
microcontroller. They do not always arrive in their entirety or represent accurate data. &lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #2 ===&lt;br /&gt;
Issue: &lt;br /&gt;
Coordinates in the NMEA sentences are off by more than +/- 5 meters. &lt;br /&gt;
&lt;br /&gt;
Solution: &lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #3 ===&lt;br /&gt;
Issue: &lt;br /&gt;
NMEA messages that represent the recommended minimum specific are around 67 characters can &lt;br /&gt;
overflow the local RX FIFO used with UART. Since the FIFO is 16 bytes long an interrupt is &lt;br /&gt;
activated when the receiving buffer is not empty to store enough values to&lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Acknowledgements for code and lab instruction is for Preetpal Kang. &lt;br /&gt;
&lt;br /&gt;
In addition, theory of embedded microcontroller design is for Prof. Haluk Ozmek.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
[http://cdn.sparkfun.com/datasheets/Sensors/GPS/Venus/638/doc/AN0003_v1.4.19.pdf GPS module DataSheet]&lt;br /&gt;
&lt;br /&gt;
[http://aprs.gids.nl/nmea/ NMEA Decoding]&lt;br /&gt;
&lt;br /&gt;
[http://www.doctormonk.com/2012/05/sparkfun-venus-gps-and-arduino.html GPS Recommended Minimum Specifics Parsing]&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/LPC1769_68_67_66_65_64_63.pdf SJ One board MCU Datasheet]&lt;br /&gt;
&lt;br /&gt;
[http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board SJ One board Introduction]&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34419</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34419"/>
				<updated>2016-12-21T12:06:20Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Objectives &amp;amp; Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) =&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
Peripheral goals include&lt;br /&gt;
* Logging to SD card using SPI&lt;br /&gt;
* Analog to Digital Converter reading of Temperature sensor&lt;br /&gt;
* Reading and controlling GPS using UART&lt;br /&gt;
* Reading compass measurements using UART&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
GPS control, compass, AD converting, Navigation Algorithm&lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
Servo control, compass, power management&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
Motor Control, power management, logging to SD card&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued by a remote&lt;br /&gt;
control for steering and speed throttling. Decode&lt;br /&gt;
these signals over time to identify which values produce&lt;br /&gt;
what kind of effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work the way we planned&lt;br /&gt;
An oscilloscope was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and servo reacts to &lt;br /&gt;
PWM as any other motor or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control commands issued&lt;br /&gt;
by the state of the navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed information and use&lt;br /&gt;
all task outputs in the navigation task&lt;br /&gt;
| Completed&lt;br /&gt;
Buggy and needs to check for invalid information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| Completed&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|-}&lt;br /&gt;
&lt;br /&gt;
= Parts List &amp;amp; Cost =&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
= Design &amp;amp; Implementation =&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
== Hardware Design ==&lt;br /&gt;
Considerations for our hardware include power consumption and usefulness in a water scenario.&lt;br /&gt;
The root of this project where sensor input is analyzed and output signals are distributed&lt;br /&gt;
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity&lt;br /&gt;
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback &lt;br /&gt;
needed to make adjustments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Project_Hardware_Overview_ANSOTAS.jpg|450px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Interface ==&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Best_Case_Scenario_State_Diagrams-_Angel_H.png|500px|thumb|center|Fig 5. I2C Slave State Machine Diagram]]&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
A full duplex communication protocol characterized by the single unidirectional input and output lines between master(s) and slave(s).&lt;br /&gt;
Our project utilizes SPI to transmit and receive data for logging on the external SD card and interface with the compass. The plan is to use a form of serial communication for it's speed and ability to use GPIO for enabling the devices' chip select.&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PWM ===&lt;br /&gt;
&lt;br /&gt;
=== ADC ===&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
Building tasks dedicated for controlling each sensor is the first step to our design approach. &lt;br /&gt;
&lt;br /&gt;
* GPS_task&lt;br /&gt;
* Compass_task&lt;br /&gt;
&lt;br /&gt;
A few tasks are used to schedule and communicate data between the tasks would be the following edited libraries. &lt;br /&gt;
&lt;br /&gt;
* Terminal Task&lt;br /&gt;
* Navigation Algorithm&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:UpperTierHardwareBase.png|thumb|400px|center| Fig. 3 Top of the base]]&lt;br /&gt;
[[File:BottomTierHardwareStack.png|thumb|400px|center| Fig. 4 Bottom of the base]]&lt;br /&gt;
&lt;br /&gt;
= Testing &amp;amp; Technical Challenges =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #1 ===&lt;br /&gt;
Issue: &lt;br /&gt;
GPS data is sent constantly from the GPS module through UART without the need for a command.&lt;br /&gt;
Full messages referred to as NMEA sentences are received by the module and read by the &lt;br /&gt;
microcontroller. They do not always arrive in their entirety or represent accurate data. &lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #2 ===&lt;br /&gt;
Issue: &lt;br /&gt;
Coordinates in the NMEA sentences are off by more than +/- 5 meters. &lt;br /&gt;
&lt;br /&gt;
Solution: &lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #3 ===&lt;br /&gt;
Issue: &lt;br /&gt;
NMEA messages that represent the recommended minimum specific are around 67 characters can &lt;br /&gt;
overflow the local RX FIFO used with UART. Since the FIFO is 16 bytes long an interrupt is &lt;br /&gt;
activated when the receiving buffer is not empty to store enough values to&lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
[http://cdn.sparkfun.com/datasheets/Sensors/GPS/Venus/638/doc/AN0003_v1.4.19.pdf GPS module DataSheet]&lt;br /&gt;
&lt;br /&gt;
[http://aprs.gids.nl/nmea/ NMEA Decoding]&lt;br /&gt;
&lt;br /&gt;
[http://www.doctormonk.com/2012/05/sparkfun-venus-gps-and-arduino.html GPS Recommended Minimum Specifics Parsing]&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/LPC1769_68_67_66_65_64_63.pdf SJ One board MCU Datasheet]&lt;br /&gt;
&lt;br /&gt;
[http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board SJ One board Introduction]&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34411</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34411"/>
				<updated>2016-12-21T11:45:49Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Software Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) =&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
GPS control&lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
Servo control&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
Motor Control&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued by a remote&lt;br /&gt;
control for steering and speed throttling. Decode&lt;br /&gt;
these signals over time to identify which values produce&lt;br /&gt;
what kind of effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work the way we planned&lt;br /&gt;
An oscilloscope was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and servo reacts to &lt;br /&gt;
PWM as any other motor or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control commands issued&lt;br /&gt;
by the state of the navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed information and use&lt;br /&gt;
all task outputs in the navigation task&lt;br /&gt;
| Completed&lt;br /&gt;
Buggy and needs to check for invalid information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| Completed&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|-}&lt;br /&gt;
&lt;br /&gt;
= Parts List &amp;amp; Cost =&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
= Design &amp;amp; Implementation =&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
== Hardware Design ==&lt;br /&gt;
Considerations for our hardware include power consumption and usefulness in a water scenario.&lt;br /&gt;
The root of this project where sensor input is analyzed and output signals are distributed&lt;br /&gt;
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity&lt;br /&gt;
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback &lt;br /&gt;
needed to make adjustments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Project_Hardware_Overview_ANSOTAS.jpg|450px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Interface ==&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Best_Case_Scenario_State_Diagrams-_Angel_H.png|500px|thumb|center|Fig 5. I2C Slave State Machine Diagram]]&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
A full duplex communication protocol characterized by the single unidirectional input and output lines between master(s) and slave(s).&lt;br /&gt;
Our project utilizes SPI to transmit and receive data for logging on the external SD card and interface with the compass. The plan is to use a form of serial communication for it's speed and ability to use GPIO for enabling the devices' chip select.&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PWM ===&lt;br /&gt;
&lt;br /&gt;
=== ADC ===&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
Building tasks dedicated for controlling each sensor is the first step to our design approach. &lt;br /&gt;
&lt;br /&gt;
* GPS_task&lt;br /&gt;
* Compass_task&lt;br /&gt;
&lt;br /&gt;
A few tasks are used to schedule and communicate data between the tasks would be the following edited libraries. &lt;br /&gt;
&lt;br /&gt;
* Terminal Task&lt;br /&gt;
* Navigation Algorithm&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:UpperTierHardwareBase.png|thumb|400px|center| Fig. 3 Top of the base]]&lt;br /&gt;
[[File:BottomTierHardwareStack.png|thumb|400px|center| Fig. 4 Bottom of the base]]&lt;br /&gt;
&lt;br /&gt;
= Testing &amp;amp; Technical Challenges =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #1 ===&lt;br /&gt;
Issue: &lt;br /&gt;
GPS data is sent constantly from the GPS module through UART without the need for a command.&lt;br /&gt;
Full messages referred to as NMEA sentences are received by the module and read by the &lt;br /&gt;
microcontroller. They do not always arrive in their entirety or represent accurate data. &lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #2 ===&lt;br /&gt;
Issue: &lt;br /&gt;
Coordinates in the NMEA sentences are off by more than +/- 5 meters. &lt;br /&gt;
&lt;br /&gt;
Solution: &lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #3 ===&lt;br /&gt;
Issue: &lt;br /&gt;
NMEA messages that represent the recommended minimum specific are around 67 characters can &lt;br /&gt;
overflow the local RX FIFO used with UART. Since the FIFO is 16 bytes long an interrupt is &lt;br /&gt;
activated when the receiving buffer is not empty to store enough values to&lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
[http://cdn.sparkfun.com/datasheets/Sensors/GPS/Venus/638/doc/AN0003_v1.4.19.pdf GPS module DataSheet]&lt;br /&gt;
&lt;br /&gt;
[http://aprs.gids.nl/nmea/ NMEA Decoding]&lt;br /&gt;
&lt;br /&gt;
[http://www.doctormonk.com/2012/05/sparkfun-venus-gps-and-arduino.html GPS Recommended Minimum Specifics Parsing]&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/LPC1769_68_67_66_65_64_63.pdf SJ One board MCU Datasheet]&lt;br /&gt;
&lt;br /&gt;
[http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board SJ One board Introduction]&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34410</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34410"/>
				<updated>2016-12-21T11:38:28Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* SPI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) =&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
GPS control&lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
Servo control&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
Motor Control&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued by a remote&lt;br /&gt;
control for steering and speed throttling. Decode&lt;br /&gt;
these signals over time to identify which values produce&lt;br /&gt;
what kind of effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work the way we planned&lt;br /&gt;
An oscilloscope was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and servo reacts to &lt;br /&gt;
PWM as any other motor or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control commands issued&lt;br /&gt;
by the state of the navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed information and use&lt;br /&gt;
all task outputs in the navigation task&lt;br /&gt;
| Completed&lt;br /&gt;
Buggy and needs to check for invalid information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| Completed&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|-}&lt;br /&gt;
&lt;br /&gt;
= Parts List &amp;amp; Cost =&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
= Design &amp;amp; Implementation =&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
== Hardware Design ==&lt;br /&gt;
Considerations for our hardware include power consumption and usefulness in a water scenario.&lt;br /&gt;
The root of this project where sensor input is analyzed and output signals are distributed&lt;br /&gt;
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity&lt;br /&gt;
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback &lt;br /&gt;
needed to make adjustments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Project_Hardware_Overview_ANSOTAS.jpg|450px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Interface ==&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Best_Case_Scenario_State_Diagrams-_Angel_H.png|500px|thumb|center|Fig 5. I2C Slave State Machine Diagram]]&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
A full duplex communication protocol characterized by the single unidirectional input and output lines between master(s) and slave(s).&lt;br /&gt;
Our project utilizes SPI to transmit and receive data for logging on the external SD card and interface with the compass. The plan is to use a form of serial communication for it's speed and ability to use GPIO for enabling the devices' chip select.&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PWM ===&lt;br /&gt;
&lt;br /&gt;
=== ADC ===&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:UpperTierHardwareBase.png|thumb|400px|center| Fig. 3 Top of the base]]&lt;br /&gt;
[[File:BottomTierHardwareStack.png|thumb|400px|center| Fig. 4 Bottom of the base]]&lt;br /&gt;
&lt;br /&gt;
= Testing &amp;amp; Technical Challenges =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #1 ===&lt;br /&gt;
Issue: &lt;br /&gt;
GPS data is sent constantly from the GPS module through UART without the need for a command.&lt;br /&gt;
Full messages referred to as NMEA sentences are received by the module and read by the &lt;br /&gt;
microcontroller. They do not always arrive in their entirety or represent accurate data. &lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #2 ===&lt;br /&gt;
Issue: &lt;br /&gt;
Coordinates in the NMEA sentences are off by more than +/- 5 meters. &lt;br /&gt;
&lt;br /&gt;
Solution: &lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #3 ===&lt;br /&gt;
Issue: &lt;br /&gt;
NMEA messages that represent the recommended minimum specific are around 67 characters can &lt;br /&gt;
overflow the local RX FIFO used with UART. Since the FIFO is 16 bytes long an interrupt is &lt;br /&gt;
activated when the receiving buffer is not empty to store enough values to&lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
[http://cdn.sparkfun.com/datasheets/Sensors/GPS/Venus/638/doc/AN0003_v1.4.19.pdf GPS module DataSheet]&lt;br /&gt;
&lt;br /&gt;
[http://aprs.gids.nl/nmea/ NMEA Decoding]&lt;br /&gt;
&lt;br /&gt;
[http://www.doctormonk.com/2012/05/sparkfun-venus-gps-and-arduino.html GPS Recommended Minimum Specifics Parsing]&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/LPC1769_68_67_66_65_64_63.pdf SJ One board MCU Datasheet]&lt;br /&gt;
&lt;br /&gt;
[http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board SJ One board Introduction]&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34406</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34406"/>
				<updated>2016-12-21T11:29:27Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* My Issue #1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) =&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
GPS control&lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
Servo control&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
Motor Control&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued by a remote&lt;br /&gt;
control for steering and speed throttling. Decode&lt;br /&gt;
these signals over time to identify which values produce&lt;br /&gt;
what kind of effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work the way we planned&lt;br /&gt;
An oscilloscope was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and servo reacts to &lt;br /&gt;
PWM as any other motor or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control commands issued&lt;br /&gt;
by the state of the navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed information and use&lt;br /&gt;
all task outputs in the navigation task&lt;br /&gt;
| Completed&lt;br /&gt;
Buggy and needs to check for invalid information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| Completed&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|-}&lt;br /&gt;
&lt;br /&gt;
= Parts List &amp;amp; Cost =&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
= Design &amp;amp; Implementation =&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
== Hardware Design ==&lt;br /&gt;
Considerations for our hardware include power consumption and usefulness in a water scenario.&lt;br /&gt;
The root of this project where sensor input is analyzed and output signals are distributed&lt;br /&gt;
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity&lt;br /&gt;
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback &lt;br /&gt;
needed to make adjustments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Project_Hardware_Overview_ANSOTAS.jpg|450px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Interface ==&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Best_Case_Scenario_State_Diagrams-_Angel_H.png|500px|thumb|center|Fig 5. I2C Slave State Machine Diagram]]&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
A full duplex communication protocol characterized by the single unidirectional input and output lines between master(s) and slave(s). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PWM ===&lt;br /&gt;
&lt;br /&gt;
=== ADC ===&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:UpperTierHardwareBase.png|thumb|400px|center| Fig. 3 Top of the base]]&lt;br /&gt;
[[File:BottomTierHardwareStack.png|thumb|400px|center| Fig. 4 Bottom of the base]]&lt;br /&gt;
&lt;br /&gt;
= Testing &amp;amp; Technical Challenges =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #1 ===&lt;br /&gt;
Issue: &lt;br /&gt;
GPS data is sent constantly from the GPS module through UART without the need for a command.&lt;br /&gt;
Full messages referred to as NMEA sentences are received by the module and read by the &lt;br /&gt;
microcontroller. They do not always arrive in their entirety or represent accurate data. &lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #2 ===&lt;br /&gt;
Issue: &lt;br /&gt;
Coordinates in the NMEA sentences are off by more than +/- 5 meters. &lt;br /&gt;
&lt;br /&gt;
Solution: &lt;br /&gt;
&lt;br /&gt;
=== GPS Issue #3 ===&lt;br /&gt;
Issue: &lt;br /&gt;
NMEA messages that represent the recommended minimum specific are around 67 characters can &lt;br /&gt;
overflow the local RX FIFO used with UART. Since the FIFO is 16 bytes long an interrupt is &lt;br /&gt;
activated when the receiving buffer is not empty to store enough values to&lt;br /&gt;
&lt;br /&gt;
Solution: To counter act this problem a checksum value is included in the sentence and is &lt;br /&gt;
useful for checking the values of he payload checksum value for the specific data in the &lt;br /&gt;
message.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
[http://cdn.sparkfun.com/datasheets/Sensors/GPS/Venus/638/doc/AN0003_v1.4.19.pdf GPS module DataSheet]&lt;br /&gt;
&lt;br /&gt;
[http://aprs.gids.nl/nmea/ NMEA Decoding]&lt;br /&gt;
&lt;br /&gt;
[http://www.doctormonk.com/2012/05/sparkfun-venus-gps-and-arduino.html GPS Recommended Minimum Specifics Parsing]&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/LPC1769_68_67_66_65_64_63.pdf SJ One board MCU Datasheet]&lt;br /&gt;
&lt;br /&gt;
[http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board SJ One board Introduction]&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34350</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34350"/>
				<updated>2016-12-21T09:24:19Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Testing &amp;amp; Technical Challenges */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) =&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
GPS control&lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
Servo control&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
Motor Control&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued by a remote&lt;br /&gt;
control for steering and speed throttling. Decode&lt;br /&gt;
these signals over time to identify which values produce&lt;br /&gt;
what kind of effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work the way we planned&lt;br /&gt;
An oscilloscope was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and servo reacts to &lt;br /&gt;
PWM as any other motor or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control commands issued&lt;br /&gt;
by the state of the navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed information and use&lt;br /&gt;
all task outputs in the navigation task&lt;br /&gt;
| Completed&lt;br /&gt;
Buggy and needs to check for invalid information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| Completed&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|-}&lt;br /&gt;
&lt;br /&gt;
= Parts List &amp;amp; Cost =&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
= Design &amp;amp; Implementation =&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
== Hardware Design ==&lt;br /&gt;
Considerations for our hardware include power consumption and usefulness in a water scenario.&lt;br /&gt;
The root of this project where sensor input is analyzed and output signals are distributed&lt;br /&gt;
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity&lt;br /&gt;
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback &lt;br /&gt;
needed to make adjustments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Project_Hardware_Overview_ANSOTAS.jpg|450px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Interface ==&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Best_Case_Scenario_State_Diagrams-_Angel_H.png|500px|thumb|center|Fig 5. I2C Slave State Machine Diagram]]&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
A full duplex communication protocol characterized by the single unidirectional input and output lines between master(s) and slave(s). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PWM ===&lt;br /&gt;
&lt;br /&gt;
=== ADC ===&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:UpperTierHardwareBase.png|thumb|400px|center| Fig. 3 Top of the base]]&lt;br /&gt;
[[File:BottomTierHardwareStack.png|thumb|400px|center| Fig. 4 Bottom of the base]]&lt;br /&gt;
&lt;br /&gt;
= Testing &amp;amp; Technical Challenges =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== My Issue #1 ===&lt;br /&gt;
Discuss the issue and resolution.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
[http://cdn.sparkfun.com/datasheets/Sensors/GPS/Venus/638/doc/AN0003_v1.4.19.pdf GPS module DataSheet]&lt;br /&gt;
&lt;br /&gt;
[http://aprs.gids.nl/nmea/ NMEA Decoding]&lt;br /&gt;
&lt;br /&gt;
[http://www.doctormonk.com/2012/05/sparkfun-venus-gps-and-arduino.html GPS Recommended Minimum Specifics Parsing]&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/LPC1769_68_67_66_65_64_63.pdf SJ One board MCU Datasheet]&lt;br /&gt;
&lt;br /&gt;
[http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board SJ One board Introduction]&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34198</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34198"/>
				<updated>2016-12-21T04:04:13Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Hardware Interface */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) =&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
GPS control&lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
Servo control&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
Motor Control&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued by a remote&lt;br /&gt;
control for steering and speed throttling. Decode&lt;br /&gt;
these signals over time to identify which values produce&lt;br /&gt;
what kind of effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work the way we planned&lt;br /&gt;
An oscilloscope was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and servo reacts to &lt;br /&gt;
PWM as any other motor or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control commands issued&lt;br /&gt;
by the state of the navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed information and use&lt;br /&gt;
all task outputs in the navigation task&lt;br /&gt;
| Completed&lt;br /&gt;
Buggy and needs to check for invalid information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| Completed&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|-}&lt;br /&gt;
&lt;br /&gt;
= Parts List &amp;amp; Cost =&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
= Design &amp;amp; Implementation =&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
== Hardware Design ==&lt;br /&gt;
Considerations for our hardware include power consumption and usefulness in a water scenario.&lt;br /&gt;
The root of this project where sensor input is analyzed and output signals are distributed&lt;br /&gt;
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity&lt;br /&gt;
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback &lt;br /&gt;
needed to make adjustments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Project_Hardware_Overview_ANSOTAS.jpg|450px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Interface ==&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Best_Case_Scenario_State_Diagrams-_Angel_H.png|500px|thumb|center|Fig 5. I2C Slave State Machine Diagram]]&lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
A full duplex communication protocol characterized by the single unidirectional input and output lines between master(s) and slave(s). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PWM ===&lt;br /&gt;
&lt;br /&gt;
=== ADC ===&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:UpperTierHardwareBase.png|thumb|400px|center| Fig. 3 Top of the base]]&lt;br /&gt;
[[File:BottomTierHardwareStack.png|thumb|400px|center| Fig. 4 Bottom of the base]]&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
Describe the challenges of your project.  What advise would you give yourself or someone else if your project can be started from scratch again?&lt;br /&gt;
Make a smooth transition to testing section and described what it took to test your project.&lt;br /&gt;
&lt;br /&gt;
Include sub-sections that list out a problem and solution, such as:&lt;br /&gt;
&lt;br /&gt;
=== My Issue #1 ===&lt;br /&gt;
Discuss the issue and resolution.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
[http://cdn.sparkfun.com/datasheets/Sensors/GPS/Venus/638/doc/AN0003_v1.4.19.pdf GPS module DataSheet]&lt;br /&gt;
&lt;br /&gt;
[http://aprs.gids.nl/nmea/ NMEA Decoding]&lt;br /&gt;
&lt;br /&gt;
[http://www.doctormonk.com/2012/05/sparkfun-venus-gps-and-arduino.html GPS Recommended Minimum Specifics Parsing]&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/LPC1769_68_67_66_65_64_63.pdf SJ One board MCU Datasheet]&lt;br /&gt;
&lt;br /&gt;
[http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board SJ One board Introduction]&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34185</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34185"/>
				<updated>2016-12-21T03:28:26Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) =&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
GPS control&lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
Servo control&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
Motor Control&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued by a remote&lt;br /&gt;
control for steering and speed throttling. Decode&lt;br /&gt;
these signals over time to identify which values produce&lt;br /&gt;
what kind of effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work the way we planned&lt;br /&gt;
An oscilloscope was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and servo reacts to &lt;br /&gt;
PWM as any other motor or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control commands issued&lt;br /&gt;
by the state of the navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed information and use&lt;br /&gt;
all task outputs in the navigation task&lt;br /&gt;
| Completed&lt;br /&gt;
Buggy and needs to check for invalid information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| Completed&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|-}&lt;br /&gt;
&lt;br /&gt;
= Parts List &amp;amp; Cost =&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
= Design &amp;amp; Implementation =&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
== Hardware Design ==&lt;br /&gt;
Considerations for our hardware include power consumption and usefulness in a water scenario.&lt;br /&gt;
The root of this project where sensor input is analyzed and output signals are distributed&lt;br /&gt;
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity&lt;br /&gt;
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback &lt;br /&gt;
needed to make adjustments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Project_Hardware_Overview_ANSOTAS.jpg|450px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Interface ==&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PWM ===&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:UpperTierHardwareBase.png|thumb|400px|center| Fig. 3 Top of the base]]&lt;br /&gt;
[[File:BottomTierHardwareStack.png|thumb|400px|center| Fig. 4 Bottom of the base]]&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
Describe the challenges of your project.  What advise would you give yourself or someone else if your project can be started from scratch again?&lt;br /&gt;
Make a smooth transition to testing section and described what it took to test your project.&lt;br /&gt;
&lt;br /&gt;
Include sub-sections that list out a problem and solution, such as:&lt;br /&gt;
&lt;br /&gt;
=== My Issue #1 ===&lt;br /&gt;
Discuss the issue and resolution.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
[http://cdn.sparkfun.com/datasheets/Sensors/GPS/Venus/638/doc/AN0003_v1.4.19.pdf GPS module DataSheet]&lt;br /&gt;
&lt;br /&gt;
[http://aprs.gids.nl/nmea/ NMEA Decoding]&lt;br /&gt;
&lt;br /&gt;
[http://www.doctormonk.com/2012/05/sparkfun-venus-gps-and-arduino.html GPS Recommended Minimum Specifics Parsing]&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/LPC1769_68_67_66_65_64_63.pdf SJ One board MCU Datasheet]&lt;br /&gt;
&lt;br /&gt;
[http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board SJ One board Introduction]&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34184</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34184"/>
				<updated>2016-12-21T03:26:16Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) =&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
GPS control&lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
Servo control&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
Motor Control&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued by a remote&lt;br /&gt;
control for steering and speed throttling. Decode&lt;br /&gt;
these signals over time to identify which values produce&lt;br /&gt;
what kind of effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work the way we planned&lt;br /&gt;
An oscilloscope was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and servo reacts to &lt;br /&gt;
PWM as any other motor or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control commands issued&lt;br /&gt;
by the state of the navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed information and use&lt;br /&gt;
all task outputs in the navigation task&lt;br /&gt;
| Completed&lt;br /&gt;
Buggy and needs to check for invalid information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| Completed&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|-}&lt;br /&gt;
&lt;br /&gt;
= Parts List &amp;amp; Cost =&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
= Design &amp;amp; Implementation =&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
== Hardware Design ==&lt;br /&gt;
Considerations for our hardware include power consumption and usefulness in a water scenario.&lt;br /&gt;
The root of this project where sensor input is analyzed and output signals are distributed&lt;br /&gt;
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity&lt;br /&gt;
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback &lt;br /&gt;
needed to make adjustments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Project_Hardware_Overview_ANSOTAS.jpg|450px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Interface ==&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PWM ===&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:UpperTierHardwareBase.png|thumb|300px|left| Fig. 3 Top of the base]]&lt;br /&gt;
[[File:BottomTierHardwareStack.png|thumb|300px|left| Fig. 4 Bottom of the base]]&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
Describe the challenges of your project.  What advise would you give yourself or someone else if your project can be started from scratch again?&lt;br /&gt;
Make a smooth transition to testing section and described what it took to test your project.&lt;br /&gt;
&lt;br /&gt;
Include sub-sections that list out a problem and solution, such as:&lt;br /&gt;
&lt;br /&gt;
=== My Issue #1 ===&lt;br /&gt;
Discuss the issue and resolution.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
[http://cdn.sparkfun.com/datasheets/Sensors/GPS/Venus/638/doc/AN0003_v1.4.19.pdf GPS module DataSheet]&lt;br /&gt;
&lt;br /&gt;
[http://aprs.gids.nl/nmea/ NMEA Decoding]&lt;br /&gt;
&lt;br /&gt;
[http://www.doctormonk.com/2012/05/sparkfun-venus-gps-and-arduino.html GPS Recommended Minimum Specifics Parsing]&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/LPC1769_68_67_66_65_64_63.pdf SJ One board MCU Datasheet]&lt;br /&gt;
&lt;br /&gt;
[http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board SJ One board Introduction]&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34173</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34173"/>
				<updated>2016-12-21T02:32:43Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* = Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) =&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
GPS control&lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
Servo control&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
Motor Control&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued by a remote&lt;br /&gt;
control for steering and speed throttling. Decode&lt;br /&gt;
these signals over time to identify which values produce&lt;br /&gt;
what kind of effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work the way we planned&lt;br /&gt;
An oscilloscope was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and servo reacts to &lt;br /&gt;
PWM as any other motor or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control commands issued&lt;br /&gt;
by the state of the navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed information and use&lt;br /&gt;
all task outputs in the navigation task&lt;br /&gt;
| Completed&lt;br /&gt;
Buggy and needs to check for invalid information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| Completed&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|-}&lt;br /&gt;
&lt;br /&gt;
= Parts List &amp;amp; Cost =&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
= Design &amp;amp; Implementation =&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
== Hardware Design ==&lt;br /&gt;
Considerations for our hardware include power consumption and usefulness in a water scenario.&lt;br /&gt;
The root of this project where sensor input is analyzed and output signals are distributed&lt;br /&gt;
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity&lt;br /&gt;
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback &lt;br /&gt;
needed to make adjustments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Project_Hardware_Overview_ANSOTAS.jpg|450px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Interface ==&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PWM ===&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
Describe the challenges of your project.  What advise would you give yourself or someone else if your project can be started from scratch again?&lt;br /&gt;
Make a smooth transition to testing section and described what it took to test your project.&lt;br /&gt;
&lt;br /&gt;
Include sub-sections that list out a problem and solution, such as:&lt;br /&gt;
&lt;br /&gt;
=== My Issue #1 ===&lt;br /&gt;
Discuss the issue and resolution.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
[http://cdn.sparkfun.com/datasheets/Sensors/GPS/Venus/638/doc/AN0003_v1.4.19.pdf GPS module DataSheet]&lt;br /&gt;
&lt;br /&gt;
[http://aprs.gids.nl/nmea/ NMEA Decoding]&lt;br /&gt;
&lt;br /&gt;
[http://www.doctormonk.com/2012/05/sparkfun-venus-gps-and-arduino.html GPS Recommended Minimum Specifics Parsing]&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/LPC1769_68_67_66_65_64_63.pdf SJ One board MCU Datasheet]&lt;br /&gt;
&lt;br /&gt;
[http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board SJ One board Introduction]&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34172</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34172"/>
				<updated>2016-12-21T02:31:58Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) =&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
GPS control&lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
Servo control&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
Motor Control&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued by a remote&lt;br /&gt;
control for steering and speed throttling. Decode&lt;br /&gt;
these signals over time to identify which values produce&lt;br /&gt;
what kind of effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work the way we planned&lt;br /&gt;
An oscilloscope was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and servo reacts to &lt;br /&gt;
PWM as any other motor or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control commands issued&lt;br /&gt;
by the state of the navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed information and use&lt;br /&gt;
all task outputs in the navigation task&lt;br /&gt;
| Completed&lt;br /&gt;
Buggy and needs to check for invalid information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| Completed&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|-}&lt;br /&gt;
&lt;br /&gt;
= Parts List &amp;amp; Cost =&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
= Design &amp;amp; Implementation =&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
== Hardware Design ==&lt;br /&gt;
Considerations for our hardware include power consumption and usefulness in a water scenario.&lt;br /&gt;
The root of this project where sensor input is analyzed and output signals are distributed&lt;br /&gt;
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity&lt;br /&gt;
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback &lt;br /&gt;
needed to make adjustments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Project_Hardware_Overview_ANSOTAS.jpg|450px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Interface ==&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PWM ===&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
Describe the challenges of your project.  What advise would you give yourself or someone else if your project can be started from scratch again?&lt;br /&gt;
Make a smooth transition to testing section and described what it took to test your project.&lt;br /&gt;
&lt;br /&gt;
Include sub-sections that list out a problem and solution, such as:&lt;br /&gt;
&lt;br /&gt;
=== My Issue #1 ===&lt;br /&gt;
Discuss the issue and resolution.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
[http://cdn.sparkfun.com/datasheets/Sensors/GPS/Venus/638/doc/AN0003_v1.4.19.pdf GPS module DataSheet]&lt;br /&gt;
&lt;br /&gt;
[http://aprs.gids.nl/nmea/ NMEA Decoding]&lt;br /&gt;
&lt;br /&gt;
[http://www.doctormonk.com/2012/05/sparkfun-venus-gps-and-arduino.html GPS Recommended Minimum Specifics Parsing]&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/LPC1769_68_67_66_65_64_63.pdf SJ One board MCU Datasheet]&lt;br /&gt;
&lt;br /&gt;
[http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board SJ One board Introduction]&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34171</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34171"/>
				<updated>2016-12-21T02:31:40Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Parts List &amp;amp; Cost */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
GPS control&lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
Servo control&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
Motor Control&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued by a remote&lt;br /&gt;
control for steering and speed throttling. Decode&lt;br /&gt;
these signals over time to identify which values produce&lt;br /&gt;
what kind of effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work the way we planned&lt;br /&gt;
An oscilloscope was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and servo reacts to &lt;br /&gt;
PWM as any other motor or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control commands issued&lt;br /&gt;
by the state of the navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed information and use&lt;br /&gt;
all task outputs in the navigation task&lt;br /&gt;
| Completed&lt;br /&gt;
Buggy and needs to check for invalid information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| Completed&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|-}&lt;br /&gt;
&lt;br /&gt;
= Parts List &amp;amp; Cost =&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
= Design &amp;amp; Implementation =&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
== Hardware Design ==&lt;br /&gt;
Considerations for our hardware include power consumption and usefulness in a water scenario.&lt;br /&gt;
The root of this project where sensor input is analyzed and output signals are distributed&lt;br /&gt;
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity&lt;br /&gt;
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback &lt;br /&gt;
needed to make adjustments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Project_Hardware_Overview_ANSOTAS.jpg|450px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Interface ==&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PWM ===&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
Describe the challenges of your project.  What advise would you give yourself or someone else if your project can be started from scratch again?&lt;br /&gt;
Make a smooth transition to testing section and described what it took to test your project.&lt;br /&gt;
&lt;br /&gt;
Include sub-sections that list out a problem and solution, such as:&lt;br /&gt;
&lt;br /&gt;
=== My Issue #1 ===&lt;br /&gt;
Discuss the issue and resolution.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
[http://cdn.sparkfun.com/datasheets/Sensors/GPS/Venus/638/doc/AN0003_v1.4.19.pdf GPS module DataSheet]&lt;br /&gt;
&lt;br /&gt;
[http://aprs.gids.nl/nmea/ NMEA Decoding]&lt;br /&gt;
&lt;br /&gt;
[http://www.doctormonk.com/2012/05/sparkfun-venus-gps-and-arduino.html GPS Recommended Minimum Specifics Parsing]&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/LPC1769_68_67_66_65_64_63.pdf SJ One board MCU Datasheet]&lt;br /&gt;
&lt;br /&gt;
[http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board SJ One board Introduction]&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34170</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34170"/>
				<updated>2016-12-21T02:30:44Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Hardware Interface */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
GPS control&lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
Servo control&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
Motor Control&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued by a remote&lt;br /&gt;
control for steering and speed throttling. Decode&lt;br /&gt;
these signals over time to identify which values produce&lt;br /&gt;
what kind of effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work the way we planned&lt;br /&gt;
An oscilloscope was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and servo reacts to &lt;br /&gt;
PWM as any other motor or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control commands issued&lt;br /&gt;
by the state of the navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed information and use&lt;br /&gt;
all task outputs in the navigation task&lt;br /&gt;
| Completed&lt;br /&gt;
Buggy and needs to check for invalid information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| Completed&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|-}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
= Design &amp;amp; Implementation =&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
== Hardware Design ==&lt;br /&gt;
Considerations for our hardware include power consumption and usefulness in a water scenario.&lt;br /&gt;
The root of this project where sensor input is analyzed and output signals are distributed&lt;br /&gt;
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity&lt;br /&gt;
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback &lt;br /&gt;
needed to make adjustments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Project_Hardware_Overview_ANSOTAS.jpg|450px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Interface ==&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PWM ===&lt;br /&gt;
&lt;br /&gt;
== Software Design ==&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
Describe the challenges of your project.  What advise would you give yourself or someone else if your project can be started from scratch again?&lt;br /&gt;
Make a smooth transition to testing section and described what it took to test your project.&lt;br /&gt;
&lt;br /&gt;
Include sub-sections that list out a problem and solution, such as:&lt;br /&gt;
&lt;br /&gt;
=== My Issue #1 ===&lt;br /&gt;
Discuss the issue and resolution.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
[http://cdn.sparkfun.com/datasheets/Sensors/GPS/Venus/638/doc/AN0003_v1.4.19.pdf GPS module DataSheet]&lt;br /&gt;
&lt;br /&gt;
[http://aprs.gids.nl/nmea/ NMEA Decoding]&lt;br /&gt;
&lt;br /&gt;
[http://www.doctormonk.com/2012/05/sparkfun-venus-gps-and-arduino.html GPS Recommended Minimum Specifics Parsing]&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/LPC1769_68_67_66_65_64_63.pdf SJ One board MCU Datasheet]&lt;br /&gt;
&lt;br /&gt;
[http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board SJ One board Introduction]&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34169</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34169"/>
				<updated>2016-12-21T02:29:30Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Design &amp;amp; Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
GPS control&lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
Servo control&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
Motor Control&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued by a remote&lt;br /&gt;
control for steering and speed throttling. Decode&lt;br /&gt;
these signals over time to identify which values produce&lt;br /&gt;
what kind of effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work the way we planned&lt;br /&gt;
An oscilloscope was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and servo reacts to &lt;br /&gt;
PWM as any other motor or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control commands issued&lt;br /&gt;
by the state of the navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed information and use&lt;br /&gt;
all task outputs in the navigation task&lt;br /&gt;
| Completed&lt;br /&gt;
Buggy and needs to check for invalid information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| Completed&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|-}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
= Design &amp;amp; Implementation =&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
== Hardware Design ==&lt;br /&gt;
Considerations for our hardware include power consumption and usefulness in a water scenario.&lt;br /&gt;
The root of this project where sensor input is analyzed and output signals are distributed&lt;br /&gt;
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity&lt;br /&gt;
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback &lt;br /&gt;
needed to make adjustments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Project_Hardware_Overview_ANSOTAS.jpg|450px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
= Hardware Interface =&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PWM ===&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
Describe the challenges of your project.  What advise would you give yourself or someone else if your project can be started from scratch again?&lt;br /&gt;
Make a smooth transition to testing section and described what it took to test your project.&lt;br /&gt;
&lt;br /&gt;
Include sub-sections that list out a problem and solution, such as:&lt;br /&gt;
&lt;br /&gt;
=== My Issue #1 ===&lt;br /&gt;
Discuss the issue and resolution.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
[http://cdn.sparkfun.com/datasheets/Sensors/GPS/Venus/638/doc/AN0003_v1.4.19.pdf GPS module DataSheet]&lt;br /&gt;
&lt;br /&gt;
[http://aprs.gids.nl/nmea/ NMEA Decoding]&lt;br /&gt;
&lt;br /&gt;
[http://www.doctormonk.com/2012/05/sparkfun-venus-gps-and-arduino.html GPS Recommended Minimum Specifics Parsing]&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/LPC1769_68_67_66_65_64_63.pdf SJ One board MCU Datasheet]&lt;br /&gt;
&lt;br /&gt;
[http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board SJ One board Introduction]&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34164</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34164"/>
				<updated>2016-12-21T02:26:58Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* References Used */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
GPS control&lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
Servo control&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
Motor Control&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued by a remote&lt;br /&gt;
control for steering and speed throttling. Decode&lt;br /&gt;
these signals over time to identify which values produce&lt;br /&gt;
what kind of effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work the way we planned&lt;br /&gt;
An oscilloscope was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and servo reacts to &lt;br /&gt;
PWM as any other motor or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control commands issued&lt;br /&gt;
by the state of the navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed information and use&lt;br /&gt;
all task outputs in the navigation task&lt;br /&gt;
| Completed&lt;br /&gt;
Buggy and needs to check for invalid information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| Completed&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|-}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
Considerations for our hardware include power consumption and usefulness in a water scenario.&lt;br /&gt;
The root of this project where sensor input is analyzed and output signals are distributed&lt;br /&gt;
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity&lt;br /&gt;
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback &lt;br /&gt;
needed to make adjustments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Project_Hardware_Overview_ANSOTAS.jpg|300px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
= Hardware Interface =&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PWM ===&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
Describe the challenges of your project.  What advise would you give yourself or someone else if your project can be started from scratch again?&lt;br /&gt;
Make a smooth transition to testing section and described what it took to test your project.&lt;br /&gt;
&lt;br /&gt;
Include sub-sections that list out a problem and solution, such as:&lt;br /&gt;
&lt;br /&gt;
=== My Issue #1 ===&lt;br /&gt;
Discuss the issue and resolution.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
[http://cdn.sparkfun.com/datasheets/Sensors/GPS/Venus/638/doc/AN0003_v1.4.19.pdf GPS module DataSheet]&lt;br /&gt;
&lt;br /&gt;
[http://aprs.gids.nl/nmea/ NMEA Decoding]&lt;br /&gt;
&lt;br /&gt;
[http://www.doctormonk.com/2012/05/sparkfun-venus-gps-and-arduino.html GPS Recommended Minimum Specifics Parsing]&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/LPC1769_68_67_66_65_64_63.pdf SJ One board MCU Datasheet]&lt;br /&gt;
&lt;br /&gt;
[http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board SJ One board Introduction]&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34161</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34161"/>
				<updated>2016-12-21T02:19:30Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Hardware Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
GPS control&lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
Servo control&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
Motor Control&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued by a remote&lt;br /&gt;
control for steering and speed throttling. Decode&lt;br /&gt;
these signals over time to identify which values produce&lt;br /&gt;
what kind of effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work the way we planned&lt;br /&gt;
An oscilloscope was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and servo reacts to &lt;br /&gt;
PWM as any other motor or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control commands issued&lt;br /&gt;
by the state of the navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed information and use&lt;br /&gt;
all task outputs in the navigation task&lt;br /&gt;
| Completed&lt;br /&gt;
Buggy and needs to check for invalid information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| Completed&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|-}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
Considerations for our hardware include power consumption and usefulness in a water scenario.&lt;br /&gt;
The root of this project where sensor input is analyzed and output signals are distributed&lt;br /&gt;
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity&lt;br /&gt;
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback &lt;br /&gt;
needed to make adjustments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Project_Hardware_Overview_ANSOTAS.jpg|300px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
= Hardware Interface =&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PWM ===&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
Describe the challenges of your project.  What advise would you give yourself or someone else if your project can be started from scratch again?&lt;br /&gt;
Make a smooth transition to testing section and described what it took to test your project.&lt;br /&gt;
&lt;br /&gt;
Include sub-sections that list out a problem and solution, such as:&lt;br /&gt;
&lt;br /&gt;
=== My Issue #1 ===&lt;br /&gt;
Discuss the issue and resolution.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34160</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34160"/>
				<updated>2016-12-21T02:17:01Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Team Members &amp;amp; Responsibilities */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
GPS control&lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
Servo control&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
Motor Control&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued by a remote&lt;br /&gt;
control for steering and speed throttling. Decode&lt;br /&gt;
these signals over time to identify which values produce&lt;br /&gt;
what kind of effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work the way we planned&lt;br /&gt;
An oscilloscope was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and servo reacts to &lt;br /&gt;
PWM as any other motor or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control commands issued&lt;br /&gt;
by the state of the navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed information and use&lt;br /&gt;
all task outputs in the navigation task&lt;br /&gt;
| Completed&lt;br /&gt;
Buggy and needs to check for invalid information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| Completed&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|-}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
Considerations for our hardware include power consumption and usefulness in a water scenario.&lt;br /&gt;
The root of this project where sensor input is analyzed and output signals are distributed&lt;br /&gt;
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity&lt;br /&gt;
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback &lt;br /&gt;
needed to make adjustments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Project_Hardware_Overview_ANSOTAS.jpg|200px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
= Hardware Interface =&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PWM ===&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
Describe the challenges of your project.  What advise would you give yourself or someone else if your project can be started from scratch again?&lt;br /&gt;
Make a smooth transition to testing section and described what it took to test your project.&lt;br /&gt;
&lt;br /&gt;
Include sub-sections that list out a problem and solution, such as:&lt;br /&gt;
&lt;br /&gt;
=== My Issue #1 ===&lt;br /&gt;
Discuss the issue and resolution.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34157</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=34157"/>
				<updated>2016-12-21T02:13:09Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Hardware Interface */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
**  &lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
**&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
**  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued by a remote&lt;br /&gt;
control for steering and speed throttling. Decode&lt;br /&gt;
these signals over time to identify which values produce&lt;br /&gt;
what kind of effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work the way we planned&lt;br /&gt;
An oscilloscope was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and servo reacts to &lt;br /&gt;
PWM as any other motor or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control commands issued&lt;br /&gt;
by the state of the navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed information and use&lt;br /&gt;
all task outputs in the navigation task&lt;br /&gt;
| Completed&lt;br /&gt;
Buggy and needs to check for invalid information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| Completed&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|-}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
Considerations for our hardware include power consumption and usefulness in a water scenario.&lt;br /&gt;
The root of this project where sensor input is analyzed and output signals are distributed&lt;br /&gt;
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity&lt;br /&gt;
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback &lt;br /&gt;
needed to make adjustments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Project_Hardware_Overview_ANSOTAS.jpg|200px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
= Hardware Interface =&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
=== SPI ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PWM ===&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
Describe the challenges of your project.  What advise would you give yourself or someone else if your project can be started from scratch again?&lt;br /&gt;
Make a smooth transition to testing section and described what it took to test your project.&lt;br /&gt;
&lt;br /&gt;
Include sub-sections that list out a problem and solution, such as:&lt;br /&gt;
&lt;br /&gt;
=== My Issue #1 ===&lt;br /&gt;
Discuss the issue and resolution.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=33991</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=33991"/>
				<updated>2016-12-21T01:03:46Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Hardware Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
**  &lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
**&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
**  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued by a remote&lt;br /&gt;
control for steering and speed throttling. Decode&lt;br /&gt;
these signals over time to identify which values produce&lt;br /&gt;
what kind of effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work the way we planned&lt;br /&gt;
An oscilloscope was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and servo reacts to &lt;br /&gt;
PWM as any other motor or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control commands issued&lt;br /&gt;
by the state of the navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed information and use&lt;br /&gt;
all task outputs in the navigation task&lt;br /&gt;
| Completed&lt;br /&gt;
Buggy and needs to check for invalid information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| Completed&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|-}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
Considerations for our hardware include power consumption and usefulness in a water scenario.&lt;br /&gt;
The root of this project where sensor input is analyzed and output signals are distributed&lt;br /&gt;
is the SJ One board. Using the FreeRTOS OS an autonomous system can adjust its velocity&lt;br /&gt;
and direction by controlling the motor and servo. GPS and Tilt compass provides the feedback &lt;br /&gt;
needed to make adjustments. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Project_Hardware_Overview_ANSOTAS.jpg|200px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
In this section, you can describe how your hardware communicates, such as which BUSes used.  You can discuss your driver implementation here, such that the '''Software Design''' section is isolated to talk about high level workings rather than inner working of your project.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
Describe the challenges of your project.  What advise would you give yourself or someone else if your project can be started from scratch again?&lt;br /&gt;
Make a smooth transition to testing section and described what it took to test your project.&lt;br /&gt;
&lt;br /&gt;
Include sub-sections that list out a problem and solution, such as:&lt;br /&gt;
&lt;br /&gt;
=== My Issue #1 ===&lt;br /&gt;
Discuss the issue and resolution.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=33880</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=33880"/>
				<updated>2016-12-21T00:30:21Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Schedule */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
**  &lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
**&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
**  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
Table 1. Schedule&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued by a remote&lt;br /&gt;
control for steering and speed throttling. Decode&lt;br /&gt;
these signals over time to identify which values produce&lt;br /&gt;
what kind of effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work the way we planned&lt;br /&gt;
An oscilloscope was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and servo reacts to &lt;br /&gt;
PWM as any other motor or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control commands issued&lt;br /&gt;
by the state of the navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed information and use&lt;br /&gt;
all task outputs in the navigation task&lt;br /&gt;
| Completed&lt;br /&gt;
Buggy and needs to check for invalid information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| Completed&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|-}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
Discuss your hardware design here.  Show detailed schematics, and the interface here.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
In this section, you can describe how your hardware communicates, such as which BUSes used.  You can discuss your driver implementation here, such that the '''Software Design''' section is isolated to talk about high level workings rather than inner working of your project.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
Describe the challenges of your project.  What advise would you give yourself or someone else if your project can be started from scratch again?&lt;br /&gt;
Make a smooth transition to testing section and described what it took to test your project.&lt;br /&gt;
&lt;br /&gt;
Include sub-sections that list out a problem and solution, such as:&lt;br /&gt;
&lt;br /&gt;
=== My Issue #1 ===&lt;br /&gt;
Discuss the issue and resolution.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=33878</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=33878"/>
				<updated>2016-12-21T00:29:33Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Schedule */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
**  &lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
**&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
**  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued by a remote&lt;br /&gt;
control for steering and speed throttling. Decode&lt;br /&gt;
these signals over time to identify which values produce&lt;br /&gt;
what kind of effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work the way we planned&lt;br /&gt;
An oscilloscope was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and servo reacts to &lt;br /&gt;
PWM as any other motor or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control commands issued&lt;br /&gt;
by the state of the navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed information and use&lt;br /&gt;
all task outputs in the navigation task&lt;br /&gt;
| Completed&lt;br /&gt;
Buggy and needs to check for invalid information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| Completed&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|-}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
Discuss your hardware design here.  Show detailed schematics, and the interface here.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
In this section, you can describe how your hardware communicates, such as which BUSes used.  You can discuss your driver implementation here, such that the '''Software Design''' section is isolated to talk about high level workings rather than inner working of your project.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
Describe the challenges of your project.  What advise would you give yourself or someone else if your project can be started from scratch again?&lt;br /&gt;
Make a smooth transition to testing section and described what it took to test your project.&lt;br /&gt;
&lt;br /&gt;
Include sub-sections that list out a problem and solution, such as:&lt;br /&gt;
&lt;br /&gt;
=== My Issue #1 ===&lt;br /&gt;
Discuss the issue and resolution.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=33872</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=33872"/>
				<updated>2016-12-21T00:27:51Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Schedule */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
**  &lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
**&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
**  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
Show a simple table or figures that show your scheduled as planned before you started working on the project.  Then in another table column, write down the actual schedule so that readers can see the planned vs. actual goals.  The point of the schedule is for readers to assess how to pace themselves if they are doing a similar project.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Tasks&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Decide on boat hull based on the amount of devices&lt;br /&gt;
we planned to us.&lt;br /&gt;
Purchased motor, servo, and battery accordingly&lt;br /&gt;
| Completed&lt;br /&gt;
Brushed DC motor powered by Electronic&lt;br /&gt;
Speed controller was purchased.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 11/4&lt;br /&gt;
| Intercept the pwm signals issued by a remote&lt;br /&gt;
control for steering and speed throttling. Decode&lt;br /&gt;
these signals over time to identify which values produce&lt;br /&gt;
what kind of effect to the driving system.&lt;br /&gt;
| Completed&lt;br /&gt;
Using a logic analyzer did not work the way we planned&lt;br /&gt;
An oscilloscope was used but only to prove that this&lt;br /&gt;
was not necessary since the motor and servo reacts to &lt;br /&gt;
PWM as any other motor or servo. &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 11/25&lt;br /&gt;
| Make separate compass, gps, and pwm tasks &lt;br /&gt;
| Completed&lt;br /&gt;
These tasks are a simple tasks demoing the functionality &lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 12/02&lt;br /&gt;
| Link separate task outputs together using navigation task. &lt;br /&gt;
| Completed&lt;br /&gt;
Debug the steering and motor control commands issued&lt;br /&gt;
by the state of the navigation task state machine.&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 12/16&lt;br /&gt;
| Revise gps task to give only needed information and use&lt;br /&gt;
all task outputs in the navigation task&lt;br /&gt;
| Completed&lt;br /&gt;
Buggy and needs to check for invalid information using checksum&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 6&lt;br /&gt;
| 12/20&lt;br /&gt;
| Update the wiki page&lt;br /&gt;
| Completed&lt;br /&gt;
Clean up exceptions in the land demo program&lt;br /&gt;
|-&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
Discuss your hardware design here.  Show detailed schematics, and the interface here.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
In this section, you can describe how your hardware communicates, such as which BUSes used.  You can discuss your driver implementation here, such that the '''Software Design''' section is isolated to talk about high level workings rather than inner working of your project.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
Describe the challenges of your project.  What advise would you give yourself or someone else if your project can be started from scratch again?&lt;br /&gt;
Make a smooth transition to testing section and described what it took to test your project.&lt;br /&gt;
&lt;br /&gt;
Include sub-sections that list out a problem and solution, such as:&lt;br /&gt;
&lt;br /&gt;
=== My Issue #1 ===&lt;br /&gt;
Discuss the issue and resolution.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=32767</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=32767"/>
				<updated>2016-12-20T06:23:14Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Parts List &amp;amp; Cost */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
**  &lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
**&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
**  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
Show a simple table or figures that show your scheduled as planned before you started working on the project.  Then in another table column, write down the actual schedule so that readers can see the planned vs. actual goals.  The point of the schedule is for readers to assess how to pace themselves if they are doing a similar project.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Task list&lt;br /&gt;
| Completed?  Problems Encountered?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
* SJ One Board | $80.00&lt;br /&gt;
* Tilt Corrected Compass | $30.00&lt;br /&gt;
* GPS | $50.00&lt;br /&gt;
* 7.2V 2600mAH Battery (included w/hull)&lt;br /&gt;
* 5V 5200mAH Battery | $13.00&lt;br /&gt;
* Hull | $155.00&lt;br /&gt;
* DC Motor (included w/hull)&lt;br /&gt;
* Servo (included w/hull)&lt;br /&gt;
* Electronic Speed Controller (included w/hull)&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
Discuss your hardware design here.  Show detailed schematics, and the interface here.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
In this section, you can describe how your hardware communicates, such as which BUSes used.  You can discuss your driver implementation here, such that the '''Software Design''' section is isolated to talk about high level workings rather than inner working of your project.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
Describe the challenges of your project.  What advise would you give yourself or someone else if your project can be started from scratch again?&lt;br /&gt;
Make a smooth transition to testing section and described what it took to test your project.&lt;br /&gt;
&lt;br /&gt;
Include sub-sections that list out a problem and solution, such as:&lt;br /&gt;
&lt;br /&gt;
=== My Issue #1 ===&lt;br /&gt;
Discuss the issue and resolution.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=29261</id>
		<title>F16: Autonomous Nautical System</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=F16:_Autonomous_Nautical_System&amp;diff=29261"/>
				<updated>2016-11-10T21:26:16Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: Created page with &amp;quot;=== Grading Criteria === &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt; *  How well is Software &amp;amp; Hardware Design described? *  How well can this report be used to reproduce this project? *  Code Quali...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Grading Criteria ===&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;&lt;br /&gt;
*  How well is Software &amp;amp; Hardware Design described?&lt;br /&gt;
*  How well can this report be used to reproduce this project?&lt;br /&gt;
*  Code Quality&lt;br /&gt;
*  Overall Report Quality:&lt;br /&gt;
**  Software Block Diagrams&lt;br /&gt;
**  Hardware Block Diagrams&lt;br /&gt;
**:  Schematic Quality&lt;br /&gt;
**  Quality of technical challenges and solutions adopted.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autonomous Nautical Systems for Ocean Transit and Survey (ANSOTAS) ==&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
*  Angel Hernandez-Perez&lt;br /&gt;
**  &lt;br /&gt;
*  Fayek Wahhab&lt;br /&gt;
**&lt;br /&gt;
*  Abraham Carrillo&lt;br /&gt;
**  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
Show a simple table or figures that show your scheduled as planned before you started working on the project.  Then in another table column, write down the actual schedule so that readers can see the planned vs. actual goals.  The point of the schedule is for readers to assess how to pace themselves if they are doing a similar project.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Actual&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 10/8&lt;br /&gt;
| Task list&lt;br /&gt;
| Completed?  Problems Encountered?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
Give a simple list of the cost of your project broken down by components.  Do not write long stories here.&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
The design section can go over your hardware and software design.  Organize this section using sub-sections that go over your design and implementation.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
Discuss your hardware design here.  Show detailed schematics, and the interface here.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
In this section, you can describe how your hardware communicates, such as which BUSes used.  You can discuss your driver implementation here, such that the '''Software Design''' section is isolated to talk about high level workings rather than inner working of your project.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
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.  &lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
Describe the challenges of your project.  What advise would you give yourself or someone else if your project can be started from scratch again?&lt;br /&gt;
Make a smooth transition to testing section and described what it took to test your project.&lt;br /&gt;
&lt;br /&gt;
Include sub-sections that list out a problem and solution, such as:&lt;br /&gt;
&lt;br /&gt;
=== My Issue #1 ===&lt;br /&gt;
Discuss the issue and resolution.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Conclude your project here.  You can recap your testing and problems.  You should address the &amp;quot;so what&amp;quot; part here to indicate what you ultimately learnt from this project.  How has this project increased your knowledge?&lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_S2016/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
List any references used in project.&lt;br /&gt;
&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
You can list the references you used.&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=Realtime_OS_on_Embedded_Systems&amp;diff=29260</id>
		<title>Realtime OS on Embedded Systems</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=Realtime_OS_on_Embedded_Systems&amp;diff=29260"/>
				<updated>2016-11-10T21:01:41Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /*  Fall 2016 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Program History ==&lt;br /&gt;
My contribution in Embedded System courses started with CmpE146.  This course teaches students on how to write UART, SPI, and I2C Drivers and interface their drivers to peripherals.  There are about 8 weekly labs in which students not only write drivers, but also learn the core of Real-time Operating Systems including threading (tasks), and inter-task communication using Queues and Semaphores.  FreeRTOS is the operating system used with C/C++ Compiler based on GNU.&lt;br /&gt;
&lt;br /&gt;
When the course was started by Dr. Ozemek @ SJSU (sometime before 2005), not many resources were out there.  Still, with helpful guidance from Dr. Ozemek, interesting projects were created.  This is when I started to help out in Embedded System Courses, and by collecting and sharing knowledge, we've raised the bar at SJSU!  &lt;br /&gt;
&lt;br /&gt;
There have been many great projects at SJSU, but since no one knew about them, the hard work went to a waste for anyone but the creator.  But now we've got the infrastructure to share the projects, which turn out as great references for future students.  Here is my project that started around 2007, and turned into Bachelor's Senior Design Project: &amp;lt;br/&amp;gt;&lt;br /&gt;
[http://www.youtube.com/watch?v=QEadXdRl3ws&amp;amp;feature=plcp YouTube Video of Self-Navigating Car]&lt;br /&gt;
&lt;br /&gt;
As of 2013, I have broadened my contribution to other embedded system courses like CmpE240, CmpE243 and CmpE244.&lt;br /&gt;
&lt;br /&gt;
== Lab Assignments ==&lt;br /&gt;
This article contains laboratory assignments and resources.  The assignments are under construction as we move towards SJ-One development board.&lt;br /&gt;
*  [[Embedded System Tutorial GPIO | Lesson 1 : GPIO]]&lt;br /&gt;
*  [[Embedded System Tutorial UART | Lesson 2 : UART]]&lt;br /&gt;
*  [[Embedded System Tutorial SPI  | Lesson 3 : SPI]]&lt;br /&gt;
*  [[Embedded System I2C Tutorial  | Lesson 4 : I2C]]&lt;br /&gt;
*  [[Embedded System Tutorial Interrupts | Lesson 5 : Interrupts]]&lt;br /&gt;
*  [[Embedded System Tutorial FreeRTOS | Lesson 6 : FreeRTOS Tasks]]&lt;br /&gt;
*  [[Embedded System Tutorial File I/O | Lesson 7 : FreeRTOS Application Programming]]&lt;br /&gt;
&lt;br /&gt;
==Other reference articles==&lt;br /&gt;
*  [[Bitmasking Tutorial]] (+ GPIO Example)&lt;br /&gt;
*  [[ LPC17xx Memory Map &amp;amp; Interrupts]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR/&amp;gt;&lt;br /&gt;
== Senior Design Projects ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR/&amp;gt;&lt;br /&gt;
== Semester Projects ==&lt;br /&gt;
Every semester, students are given about 7-10 weeks to complete their projects.  During this short time-span, students form groups, order parts, and begin working on their projects.  The work performed during the semester is documented at this Wiki.&lt;br /&gt;
&lt;br /&gt;
Here is the list of Preet's documented projects:&amp;lt;BR/&amp;gt;&lt;br /&gt;
*  [[Preet's Relay Controller Project]]&lt;br /&gt;
*  [[Nordic Low Powered Mesh Network stack]]&lt;br /&gt;
*  [http://www.youtube.com/watch?v=QEadXdRl3ws&amp;amp;feature=plcp Senior Design Project (MS-CmpE) Video]&lt;br /&gt;
&lt;br /&gt;
Here is another resource for good project references :&lt;br /&gt;
[http://people.ece.cornell.edu/land/courses/ece4760/FinalProjects/ Cornell EE476 Projects]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR/&amp;gt;&lt;br /&gt;
&amp;lt;HR&amp;gt;&lt;br /&gt;
=== Appendix ===&lt;br /&gt;
=== [[Fall 2016 | Fall 2016]] ===&lt;br /&gt;
&lt;br /&gt;
CMPE146:&lt;br /&gt;
* Add Your Group on Here, then follow the link to add more to your template *&lt;br /&gt;
* [[F16: Autonomous Secure Delivery]]&lt;br /&gt;
* [[F16: Autonomous Nautical System]]&lt;br /&gt;
&lt;br /&gt;
=== [[Spring 2016 | Spring 2016]] ===&lt;br /&gt;
*  [[S16: Fantastic Four]]&lt;br /&gt;
*  [[S16: Simpsons]]&lt;br /&gt;
*  [[S16: Mars 1]]&lt;br /&gt;
*  [[S16: OpenSJ Bluz]]&lt;br /&gt;
*  [[S16: Motion Copy Bot]]&lt;br /&gt;
*  [[S16: Biker Assist]]&lt;br /&gt;
*  [[S16: Helios]]&lt;br /&gt;
*  [[S16: Sound Buddy]]&lt;br /&gt;
*  [[S16: Warriors]]&lt;br /&gt;
*  [[S16: Expendables]]&lt;br /&gt;
*  [[S16: Ahava]]&lt;br /&gt;
*  [[S16: Number 1]]&lt;br /&gt;
*  [[S16: SkyNet]]&lt;br /&gt;
*  [[S16: SmartDoorLock]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cmpe 146:&lt;br /&gt;
*  [[S16: Camera Gimbal]]&lt;br /&gt;
*  [[S16: Laser Harp]]&lt;br /&gt;
*  &amp;lt;strike&amp;gt;[[S16: Laser Cutter Motor Controller]]&amp;lt;/strike&amp;gt;&lt;br /&gt;
*  [[S16: Sprinkler]]&lt;br /&gt;
*  [[S16: The Jatrick Car]]&lt;br /&gt;
*  [[S16: Dan]]&lt;br /&gt;
*  [[S16: Robolamp]]&lt;br /&gt;
*  [[S16: Pinball]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;HR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [[Fall 2015 | Fall 2015]] ===&lt;br /&gt;
&lt;br /&gt;
CmpE146:&lt;br /&gt;
* [[F15: Autonomous Mobile]]&lt;br /&gt;
* [[F15: Car Report]]&lt;br /&gt;
* [[F15: Electronic Piano]]&lt;br /&gt;
* [[F15: Doorknock over Bluetooth]]&lt;br /&gt;
* [[F15: Smart Car]]&lt;br /&gt;
* [[F15: Plant Control]]&lt;br /&gt;
* [[F15: Laser Security System]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;HR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [[CmpE244 Spring 2015 | Spring 2015]] ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
* [[S15: Quadcopter - It flies]]&lt;br /&gt;
* [[S15: Remote Learner]]&lt;br /&gt;
* [[S15: Protocol Interface: I2C - CAN Bridge]]&lt;br /&gt;
* [[S15: Vision RC Car]]&lt;br /&gt;
* [[S15: SJeight Octocopter]]&lt;br /&gt;
* [[S15: Swarm Robots]]&lt;br /&gt;
* [[S15: Smart Sparta Parking System]]&lt;br /&gt;
* [[S15: Touch Navigator]]&lt;br /&gt;
* [[S15: Wizard's Chess System]]&lt;br /&gt;
* [[S15: Bug Rider]]&lt;br /&gt;
* [[S15: Real Time Brake Assist (RTBA)]]&lt;br /&gt;
* [[S15: Wireless Mesh Network]]&lt;br /&gt;
* [[S15: Wireless Power Transfer System]]&lt;br /&gt;
* [[S15: Drone]]&lt;br /&gt;
* [[S15: Tree Node using Google Protocol Buffers]]&lt;br /&gt;
* [[S15: Multi-media Car]]&lt;br /&gt;
* [[S15: Hand Gesture Recognition using IR Sensors]]&lt;br /&gt;
* [[S15: CAN controlled RGB LED cubes]]&lt;br /&gt;
* [[S15: Rubik's Cube Solver]]&lt;br /&gt;
* [[S15: RFID Security Box]]&lt;br /&gt;
* [[S15: Automated Meeting Room Reservation]]&lt;br /&gt;
* [[S15: Patient Buddy System (PBS)]]&lt;br /&gt;
&lt;br /&gt;
CmpE146:&lt;br /&gt;
* [[S15: Hovercopter]]&lt;br /&gt;
* [[S15: Triclops: Smart RC Car]]&lt;br /&gt;
* [[S15: Connect Four - Robotic Player]]&lt;br /&gt;
* [[S15: Self-Balancing Robot]]&lt;br /&gt;
* [[S15: MP3 Player with Graphic Equalizer Display]]&lt;br /&gt;
* [[S15: Motion-Controlled RC Car]]&lt;br /&gt;
* [[S15: MENL (Monster Encounter Night Light) ]]&lt;br /&gt;
* [[S15: Tilt Motion Controlled LED Alarm Clock]]&lt;br /&gt;
* [[S15: Alarm Based Coffee Maker]]&lt;br /&gt;
&lt;br /&gt;
=== [[CmpE244 Spring 2014 | Spring 2014]] ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
*  Senior Project: [[Project Advising: Remote Security System]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
* [[S14: Quadcopter]]&lt;br /&gt;
* [[S14: Smart Weather Clock]]&lt;br /&gt;
* [[S14: Divine WINd]]&lt;br /&gt;
* [[S14: Data Acquisition using CAN bus]]&lt;br /&gt;
* [[S14: E-Ink Display for Shopping Tags]]&lt;br /&gt;
* [[S14: Spectrum Analyzer for Audio Frequency Signals]]&lt;br /&gt;
* [[S14: CAN Firmware Uploader]]&lt;br /&gt;
* [[S14: Asset Management and Location System]]&lt;br /&gt;
* [[S14: Location  Tracker]]&lt;br /&gt;
* [[S14:  Androbot]]&lt;br /&gt;
* [[S14: Virtual Dog]]&lt;br /&gt;
* [[S14: Android based Automation]]&lt;br /&gt;
* [[S14: FaceTime Robo]]&lt;br /&gt;
* [[S14: Wireless Control Car]]&lt;br /&gt;
* [[S14: Power Efficient Security Door System for Light-rail using CAN Bus]]&lt;br /&gt;
* [[S14: Android based home monitoring system]]&lt;br /&gt;
* [[S14: Need For Speed]]&lt;br /&gt;
&lt;br /&gt;
CmpE146&lt;br /&gt;
* [[S14: Hyperintelligent NFC Locker of the Future]]&lt;br /&gt;
* [[S14: Smart Planter]]&lt;br /&gt;
* [[S14: Modular Security System]]&lt;br /&gt;
* [[S14: Autonomous Control System]]&lt;br /&gt;
* [[S14: Anti-Crash Car]]&lt;br /&gt;
* [[S14: Tricopter]]&lt;br /&gt;
&lt;br /&gt;
=== [[CmpE240 Fall 2013 | Fall 2013]] ===&lt;br /&gt;
&lt;br /&gt;
* [[F13: POV Display]]&lt;br /&gt;
* [[F13: Line Following Robot]]&lt;br /&gt;
* [[F13: LED Display]]&lt;br /&gt;
* [[F13: Bulb Ramper]]&lt;br /&gt;
* [[F13: Garage Parking Assistant]]&lt;br /&gt;
* [[F13: Quadcopter]]&lt;br /&gt;
* [[F13: BarkMaster2000]]&lt;br /&gt;
* [[F13: Remote Control Car]]&lt;br /&gt;
* [[F13: Obstacle Avoidance Robot]]&lt;br /&gt;
* [[F13: Vehicle On Board Diagnostics]]&lt;br /&gt;
&lt;br /&gt;
=== [[CmpE146 Spring 2013 | Spring 2013]] ===&lt;br /&gt;
&lt;br /&gt;
* [[S13: 2D Plotter]]&lt;br /&gt;
* [[S13: Smart Cube]]&lt;br /&gt;
* [[S13: Garage Parking Aid]]&lt;br /&gt;
* [[S13: Smart Security]]&lt;br /&gt;
* [[S13: Door Alarm System]]&lt;br /&gt;
* [[S13: Solar Panel Tracker]]&lt;br /&gt;
&lt;br /&gt;
=== [[CmpE146 Fall 2012|Fall 2012]] ===&lt;br /&gt;
&lt;br /&gt;
* [[F12: Evil Watchdog]]&lt;br /&gt;
* [[F12: Smart Bulb]]&lt;br /&gt;
* [[F12: All Your Base are Belong to You]]&lt;br /&gt;
* [[F12: Android Controlled MP3]]&lt;br /&gt;
* [[F12: Unified Wireless Health Monitoring System]]&lt;br /&gt;
* [[F12: OBD-II Android Monitor]]&lt;br /&gt;
* [[F12: Self-Driving GPS Following Car]]&lt;br /&gt;
* [[F12: Android Door Lock]]&lt;br /&gt;
&lt;br /&gt;
=== [[CmpE146 Spring 2012|Spring 2012]] ===&lt;br /&gt;
*  [[S12: FreeRTOS based QuadCopter]]&lt;br /&gt;
*  [[S12: Web-based MP3 Player]]&lt;br /&gt;
*  [[S12: Self Drive Car]]&lt;br /&gt;
*  [[S12: VAndroid]]&lt;br /&gt;
*  [[S12: Traffic Light Sensing Vehicle]]&lt;br /&gt;
*  [[S12: Sound Reader]]&lt;br /&gt;
*  [[S12: Remote Controlled MP3 Player]]&lt;br /&gt;
*  [[S12: Android Controlled Robot]]&lt;br /&gt;
*  [[S12: Eyes-Free GPS]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Handy References ==&lt;br /&gt;
*  [[Sample Project Report]]&lt;br /&gt;
*  [[Project Proposal Guidelines]]&lt;br /&gt;
*  [[CmpE146 Lab. Resources]]&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=S15:_Motion-Controlled_RC_Car&amp;diff=17721</id>
		<title>S15: Motion-Controlled RC Car</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=S15:_Motion-Controlled_RC_Car&amp;diff=17721"/>
				<updated>2015-05-27T03:37:36Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Motion-Controlled RC Car ==&lt;br /&gt;
&lt;br /&gt;
[[File:S15_146_G3_IMG_RCcar.jpg|800px|center]]&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
The Motion-Controlled RC Car will allow inexperienced users to drive a high-performance RC vehicle. This is accomplished with a tilt controller, which is more intuitive than a traditional RC transmitter, and a slip-limiting system that will reduce the potential for crashes.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
High performance RC vehicles can be difficult to control because of their immense power and are typically expensive to repair. The goal of this project is to create both a wireless tilt controller and a traction control system for a high-performance RC car. From an engineering standpoint, the project can be broken into three major objectives.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Nordic wireless communication&lt;br /&gt;
&lt;br /&gt;
2. Measurement of front and rear axle speed&lt;br /&gt;
&lt;br /&gt;
3. Pulse-width modulated control of motor and servo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
*  Shangming Wang - Mesh Communication, Report writing, testing &lt;br /&gt;
&lt;br /&gt;
*  Daniel Khawaja - Wheel speed capture, RC car maintenance, PWM&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Start Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| End Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Status&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Completion Date&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 0&lt;br /&gt;
| 4/10&lt;br /&gt;
| 4/24&lt;br /&gt;
| Obtain Hall sensors&lt;br /&gt;
| Not Completed&lt;br /&gt;
| ---&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 4/20&lt;br /&gt;
| 4/27&lt;br /&gt;
| Find PWM parameters, Test mesh communication&lt;br /&gt;
| Completed  &lt;br /&gt;
| PWM: 4/27  Mesh: 5/4&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 4/27&lt;br /&gt;
| 5/4&lt;br /&gt;
| Implement PWM control, Finalize mesh communication, Obtain photo interrupters&lt;br /&gt;
| Completed&lt;br /&gt;
| PWM: 5/4    Mesh: 5/13  Photo: 5/14&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 5/4&lt;br /&gt;
| 5/11&lt;br /&gt;
| Implement motion control, Modify RC for 2wd and mount wheel speed sensors&lt;br /&gt;
| Completed&lt;br /&gt;
| Motion: 5/13     Modification: 5/15&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 5/11&lt;br /&gt;
| 5/18&lt;br /&gt;
| Finish wheel speed capture, Test and polish traction control parameters&lt;br /&gt;
| Completed&lt;br /&gt;
| Capture: 5/23     T.C.: 5/25&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 5/18&lt;br /&gt;
| 5/25&lt;br /&gt;
| Implement extra features&lt;br /&gt;
| Not Completed&lt;br /&gt;
| ---&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! width=&amp;quot;30&amp;quot; align=&amp;quot;center&amp;quot;|Qty&lt;br /&gt;
! width=&amp;quot;350&amp;quot; align=&amp;quot;center&amp;quot;|Description&lt;br /&gt;
! width=&amp;quot;60&amp;quot; align=&amp;quot;center&amp;quot;|Total Cost&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|50||Jumper Wires||align=&amp;quot;right&amp;quot;|$3.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1||Prototype Board||align=&amp;quot;right&amp;quot;|$1.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1||Turnigy 500mAh Battery||align=&amp;quot;right&amp;quot;|$40.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|2||Wireless Antenna||align=&amp;quot;right&amp;quot;|$6.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1||Remote Control Car||align=&amp;quot;right&amp;quot;|$150.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|2||SJOne Board||align=&amp;quot;right&amp;quot;|$160.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|2||Motorola MOC7821 Photo Interrupter||align=&amp;quot;right&amp;quot;|$4.00&lt;br /&gt;
|-&lt;br /&gt;
| ||Total Cost '''||align=&amp;quot;right&amp;quot;|$364'''&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
&lt;br /&gt;
[[File:S15_146_G3_IMG_1.png|400px|center]]&lt;br /&gt;
&lt;br /&gt;
A high-level schematic of the electronics involved in this project&lt;br /&gt;
&lt;br /&gt;
Our hardware design began with connecting the Sj-One board with the servo and motor controller controller that were built into the model car.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interfaces ===&lt;br /&gt;
The Transmitting Module used the following interfaces:&lt;br /&gt;
* [http://www.socialledge.com/sjsu/index.php?title=Embedded_System_I2C_Tutorial I2C Bus]&lt;br /&gt;
** Used for reading the orientation value from accelerometer sensor &lt;br /&gt;
*[http://www.socialledge.com/sjsu/index.php?title=Embedded_System_Tutorial_SPI SPI Bus]&lt;br /&gt;
** Used for transmit commands from Nordic wireless sensor to receiving board&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Receiving Interface used the following interfaces:&lt;br /&gt;
*[http://www.socialledge.com/sjsu/index.php?title=Embedded_System_Tutorial_SPI SPI Bus]&lt;br /&gt;
** Used for receive commands from Nordic wireless sensor from transmitting board&lt;br /&gt;
*[http://www.socialledge.com/sjsu/index.php?title=Embedded_System_Tutorial_GPIO GPIO]&lt;br /&gt;
** Used to read the axle speed from the front and rear &lt;br /&gt;
** Used to pass PWM signal to the motor and the servo&lt;br /&gt;
&lt;br /&gt;
=== SJOne ===&lt;br /&gt;
[[File:S15_146_G3_IMG_SJOne.png|center]]&lt;br /&gt;
&lt;br /&gt;
Our project used two [http://http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board SJOne boards], both running FreeRTOS. For our project we used the built-in Nordic Wireless system, Accelerometer, GPIO, and PWM functions.&lt;br /&gt;
&lt;br /&gt;
=== Servo, Motor &amp;amp; Motor Controller ===&lt;br /&gt;
[[File:S15_146_g3_pwmInterfacedElectronics.jpg|460px|center]]&lt;br /&gt;
&lt;br /&gt;
The servo used in this project was a Futaba S3004 and the motor, already built into the model car, was a Leopard Hobby 3300Kv brushless motor. The Castle Sidewinder 3 motor controller and the Futaba servo were both controlled using pulse widths ranging from 1 to 2miliseconds. A width of 1.5 miliseconds was  a 0% signal, 1 milisecond was -100%, and 2 miliseconds  was +100%.  The motor controller included a 5v regulated output, so it was used to power all the electronics on the vehicle.&lt;br /&gt;
&lt;br /&gt;
=== Photo Interrupter ===&lt;br /&gt;
[[File:S15_146_G3_IMG_photoInt.png|200px|center]]&lt;br /&gt;
&lt;br /&gt;
The photo interrupters we chose were the Motorola MOC7821. These devices contain an infrared LED and an infrared-controlled transistor. When the gap between the LED and the sensor is open the transistor turns on and allows current to flow. When an object passes through the space between the LED and the sensor the transistor turns off and behaves like an open circuit.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Transmitting Module'''&lt;br /&gt;
&lt;br /&gt;
The transmitter first reads the accelerometer data in both the x and y directions and encodes them in an integer. That integer is sent to the vehicle using the Nordic Wireless system. &lt;br /&gt;
&lt;br /&gt;
 [[File:S15_146_G3_IMG_flowchart_transmit.png|200px|center]]&lt;br /&gt;
&lt;br /&gt;
'''Receiving Module'''&lt;br /&gt;
&lt;br /&gt;
The SJ One board on the vehicle, waiting to receive data, accepts the integer. The vehicle reads the wheel speeds at the front and rear axle.  This is done by reading the signal from the photo interrupters many times in a row and incrementing a counter each time the signal transitions between high and low. One counter holds the number of transitions read from the front axle and the other counter holds the number of transitions at the rear axle and the task determines if the vehicle is in a low traction situation based on the two counter values. The car then translates the encoded command using one of two throttle maps, based on the traction situation, and uses that to set motor speed and servo angle.&lt;br /&gt;
&lt;br /&gt;
 [[File:S15_146_G3_IMG_flowchart_receive.png|500px|center]]&lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
'''Accelerometer'''&lt;br /&gt;
&lt;br /&gt;
The built-in sensor that reads the tilt direction of the SJ One board.&lt;br /&gt;
&lt;br /&gt;
*Step 1: Initialize accelerometer sensor.&lt;br /&gt;
&lt;br /&gt;
*Step 2: Read X and Y axis from the sensor and get the orientation of the board.&lt;br /&gt;
               &lt;br /&gt;
 Read X value:&lt;br /&gt;
 Function                   X-axis Range&lt;br /&gt;
  Forward                 -200 &amp;lt;= x &amp;lt; 200&lt;br /&gt;
  Left                    -500 &amp;lt;= x &amp;lt; -200&lt;br /&gt;
  Right                    200 &amp;lt;= x &amp;lt; 500&lt;br /&gt;
  Hard Left                  x &amp;gt;= 500&lt;br /&gt;
  Hard Right                 x &amp;lt;= -500&lt;br /&gt;
 &lt;br /&gt;
 Read Y value:             &lt;br /&gt;
 Num  Speed                 Y-axis Range                    &lt;br /&gt;
  0    7.5                 -150 &amp;lt;= y &amp;lt; 150&lt;br /&gt;
  1    7.9                  150 &amp;lt;= y &amp;lt; 250&lt;br /&gt;
  2    8.3                  250 &amp;lt;= y &amp;lt; 400&lt;br /&gt;
  3    8.7                  400 &amp;lt;= y &amp;lt; 550&lt;br /&gt;
  4    9.1                  550 &amp;lt;= y &amp;lt; 700&lt;br /&gt;
  5    9.5                  700 &amp;lt;= y &amp;lt; 850&lt;br /&gt;
  6    9.9                    y &amp;gt;= 850&lt;br /&gt;
&lt;br /&gt;
*Step 3: Encode the function and speed number as a single integer and pass them to the wireless task.&lt;br /&gt;
      &lt;br /&gt;
&lt;br /&gt;
'''Nordic Wireless''' (nRF24L01).&lt;br /&gt;
&lt;br /&gt;
The Nordic wireless sensor is built-in on SJOne Board. It used to send and receive data from one SJOne to other. For our project, it is used to send an encoded x and y tilt of the control board to the board on the vehicle. The following steps were taken to implement the Nordic wireless system&lt;br /&gt;
&lt;br /&gt;
*Step 1: Configure the wireless node address and wireless channel number in sys_config.h file. (Make sure both boards have the same channel)&lt;br /&gt;
&lt;br /&gt;
*Step 2: Used mesh_set_node_address() function to set both sending and receiving address. In our project, the car address is set to 300.&lt;br /&gt;
&lt;br /&gt;
*Step 3: On the sending side, it used wireless_send(addr, protocol, data, size of data, max_hops) function to send the data from SJOne board.&lt;br /&gt;
&lt;br /&gt;
*Step 4: On the receiving side, it used wireless_get_rx_pkt() function to catch the data coming from the wireless.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Photo Interrupters''' (MOC7821).&lt;br /&gt;
&lt;br /&gt;
[[File:S15_146_G3_IMG_motor.png|500px|left]]                     [[File:S15_146_G3_IMG_servo.png|460px|center]]&lt;br /&gt;
&lt;br /&gt;
The photo interrupters are used to monitor wheel rotation. An interrupter was mounted around a disk attached to the output of each differential. In the photos above the rear wheel speed sensor assembly and the front wheel speed sensor assembly are on the left and right, respectively. Notches were cut into the disks so that as they spun the outputs of the interrupters would rise and fall. The SJ One board monitored these signals using its GPIO inputs and counted the rising edges over a set period of time to determine the speed of the axle. Being a rear-drive vehicle, the rear axle rotates faster than the front in a slip condition, and the program responds by reducing throttle.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
&lt;br /&gt;
=== Issue #1 ===&lt;br /&gt;
The first issue that we ran into involved our implementation of the Nordic wireless system. During the early stages of the project, we wrote and tested our features in separate C or C++ programs. Using the provided libraries and functions, we designed transmitting and receiving programs to test the wireless. During testing, the first packet sent without issue, but any following packets took up to 30 seconds to send. This is because the libraries and functions that we were relying on were designed to be used within the structured FreeRTOS environment. Using them without the work that FreeRTOS does in the background causes them to misbehave.&lt;br /&gt;
&lt;br /&gt;
=== Issue #2 ===&lt;br /&gt;
The Motorola MOC7821 photo interrupters that we purchased had very little documentation. We found information about the sensor side of the part, but nothing about the LEDs that make up the infrared emitters. Two of the interrupter's LEDs burnt out before we found the correct dropout voltage and amperage. We recommend that future students obtain access to a variable power supply and test the LEDs by slowly increasing voltage from zero until the dropout voltage is found. &lt;br /&gt;
&lt;br /&gt;
=== Issue #3 ===&lt;br /&gt;
This issue was never resolved. Our initial design goal was to implement the timer's capture system so that the rising edges of the photo interrupters' signals could be counted without consuming CPU cycles. The initialization process seemed straightforward but any time we attempted to modify the lower 4 bits of the Counter Control Register it caused an error that triggered a reboot of the system. After many hours of research and guessing no solution was found so we made our own function that, at the price of many CPU cycles, used the GPIO pins to accomplish the same goal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Any project of this type will encounter roadblocks such as these. These issues, as well as many smaller bugs, were discovered and resolved using frequent testing. Each task was broken down into as small of a block as we could devise a test for. For example, the photo interrupters were tested in four stages. First we tested the sensor side using an infrared television remote. Once we knew the sensor was working we tested the LEDs using an infrared sensitive camera. The whole package was then tested on a bread board, and finally tested again once installed on the model car. &lt;br /&gt;
&lt;br /&gt;
This multi-tiered testing approach was also applied to our software design process. Testing was an integral part of our design and frequent testing helped us to catch bugs sooner and solve them faster by shrinking the amount of code that could be contributing to the problem.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
Though this project was ultimately successful, it was a struggle. Poor planning coupled with an injury from a car accident and an untrustworthy online retailer all pushed the timeline for the project. We were severely behind schedule and were able to successfully complete the project by abandoning the &amp;quot;capture&amp;quot; peripheral and placing the load on the CPU by using the GPIO pins. This project taught a lesson in proper scheduling and planning. &lt;br /&gt;
&lt;br /&gt;
However, that was not the only lesson. In our implementation we were forced to execute, in a best case situation, over 500 lines of code in between each command between the transmitter and the receiver. The delay that the extra code caused in the controlling of the vehicle was barely noticeable, and helped us to see just how blazingly fast modern micro controllers actually are. The thought of a micro controller being slower and &amp;quot;less capable&amp;quot; than a computer is, in most cases, incorrect. &lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_SJSU_S2015/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
http://www.nxp.com/documents/user_manual/UM10360.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.socialledge.com/sjsu/images/d/de/2012SJOneBoardSchematic.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.datasheetspdf.com/PDF/MOC7821/613725/1&lt;br /&gt;
&lt;br /&gt;
http://www.socialledge.com/sjsu/index.php?title=PWM_Motor_Controller_Interface&lt;br /&gt;
&lt;br /&gt;
http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board&lt;br /&gt;
&lt;br /&gt;
http://www.socialledge.com/sjsu/index.php?title=Low_Powered_Mesh_Network_stack&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=S15:_Motion-Controlled_RC_Car&amp;diff=17718</id>
		<title>S15: Motion-Controlled RC Car</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=S15:_Motion-Controlled_RC_Car&amp;diff=17718"/>
				<updated>2015-05-27T03:36:32Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Hardware Interfaces */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Motion-Controlled RC Car ==&lt;br /&gt;
&lt;br /&gt;
[[File:S15_146_G3_IMG_RCcar.jpg|800px|center]]&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
The Motion-Controlled RC Car will allow inexperienced users to drive a high-performance RC vehicle. This is accomplished with a tilt controller, which is more intuitive than a traditional RC transmitter, and a slip-limiting system that will reduce the potential for crashes.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
High performance RC vehicles can be difficult to control because of their immense power and are typically expensive to repair. The goal of this project is to create both a wireless tilt controller and a traction control system for a high-performance RC car. From an engineering standpoint, the project can be broken into three major objectives.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Nordic wireless communication&lt;br /&gt;
&lt;br /&gt;
2. Measurement of front and rear axle speed&lt;br /&gt;
&lt;br /&gt;
3. Pulse-width modulated control of motor and servo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
*  Shangming Wang - Mesh Communication, Report writing, testing &lt;br /&gt;
&lt;br /&gt;
*  Daniel Khawaja - Wheel speed capture, RC car maintenance, PWM&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Start Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| End Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Status&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Completion Date&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 0&lt;br /&gt;
| 4/10&lt;br /&gt;
| 4/24&lt;br /&gt;
| Obtain Hall sensors&lt;br /&gt;
| Not Completed&lt;br /&gt;
| ---&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 4/20&lt;br /&gt;
| 4/27&lt;br /&gt;
| Find PWM parameters, Test mesh communication&lt;br /&gt;
| Completed  &lt;br /&gt;
| PWM: 4/27  Mesh: 5/4&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 4/27&lt;br /&gt;
| 5/4&lt;br /&gt;
| Implement PWM control, Finalize mesh communication, Obtain photo interrupters&lt;br /&gt;
| Completed&lt;br /&gt;
| PWM: 5/4    Mesh: 5/13  Photo: 5/14&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 5/4&lt;br /&gt;
| 5/11&lt;br /&gt;
| Implement motion control, Modify RC for 2wd and mount wheel speed sensors&lt;br /&gt;
| Completed&lt;br /&gt;
| Motion: 5/13     Modification: 5/15&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 5/11&lt;br /&gt;
| 5/18&lt;br /&gt;
| Finish wheel speed capture, Test and polish traction control parameters&lt;br /&gt;
| Completed&lt;br /&gt;
| Capture: 5/23     T.C.: 5/25&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 5/18&lt;br /&gt;
| 5/25&lt;br /&gt;
| Implement extra features&lt;br /&gt;
| Not Completed&lt;br /&gt;
| ---&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! width=&amp;quot;30&amp;quot; align=&amp;quot;center&amp;quot;|Qty&lt;br /&gt;
! width=&amp;quot;350&amp;quot; align=&amp;quot;center&amp;quot;|Description&lt;br /&gt;
! width=&amp;quot;60&amp;quot; align=&amp;quot;center&amp;quot;|Total Cost&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|50||Jumper Wires||align=&amp;quot;right&amp;quot;|$3.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1||Prototype Board||align=&amp;quot;right&amp;quot;|$1.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1||Turnigy 500mAh Battery||align=&amp;quot;right&amp;quot;|$40.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|2||Wireless Antenna||align=&amp;quot;right&amp;quot;|$6.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1||Remote Control Car||align=&amp;quot;right&amp;quot;|$150.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|2||SJOne Board||align=&amp;quot;right&amp;quot;|$160.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|2||Motorola MOC7821 Photo Interrupter||align=&amp;quot;right&amp;quot;|$4.00&lt;br /&gt;
|-&lt;br /&gt;
| ||Total Cost '''||align=&amp;quot;right&amp;quot;|$364'''&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
&lt;br /&gt;
[[File:S15_146_G3_IMG_1.png|400px|center]]&lt;br /&gt;
&lt;br /&gt;
A high-level schematic of the electronics involved in this project&lt;br /&gt;
&lt;br /&gt;
Our hardware design began with connecting the Sj-One board with the servo and motor controller controller that were built into the model car.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interfaces ===&lt;br /&gt;
The Transmitting Module used the following interfaces:&lt;br /&gt;
* [http://www.socialledge.com/sjsu/index.php?title=Embedded_System_I2C_Tutorial I2C Bus]&lt;br /&gt;
** Used for reading the orientation value from accelerometer sensor &lt;br /&gt;
*[http://www.socialledge.com/sjsu/index.php?title=Embedded_System_Tutorial_SPI SPI Bus]&lt;br /&gt;
** Used for transmit commands from Nordic wireless sensor to receiving board&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Receiving Interface used the following interfaces:&lt;br /&gt;
*[http://www.socialledge.com/sjsu/index.php?title=Embedded_System_Tutorial_SPI SPI Bus]&lt;br /&gt;
** Used for receive commands from Nordic wireless sensor from transmitting board&lt;br /&gt;
*[http://www.socialledge.com/sjsu/index.php?title=Embedded_System_Tutorial_GPIO GPIO]&lt;br /&gt;
** Used to read the axle speed from the front and rear &lt;br /&gt;
** Used to pass PWM signal to the motor and the servo&lt;br /&gt;
&lt;br /&gt;
=== SJOne ===&lt;br /&gt;
[[File:S15_146_G3_IMG_SJOne.png|center]]&lt;br /&gt;
&lt;br /&gt;
Our project used two [http://http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board SJOne boards], both running FreeRTOS. For our project we used the built-in Nordic Wireless system, Accelerometer, GPIO, and PWM functions.&lt;br /&gt;
&lt;br /&gt;
=== Servo, Motor &amp;amp; Motor Controller ===&lt;br /&gt;
[[File:S15_146_g3_pwmInterfacedElectronics.jpg|460px|center]]&lt;br /&gt;
&lt;br /&gt;
The servo used in this project was a Futaba S3004 and the motor, already built into the model car, was a Leopard Hobby 3300Kv brushless motor. The Castle Sidewinder 3 motor controller and the Futaba servo were both controlled using pulse widths ranging from 1 to 2miliseconds. A width of 1.5 miliseconds was  a 0% signal, 1 milisecond was -100%, and 2 miliseconds  was +100%.  The motor controller included a 5v regulated output, so it was used to power all the electronics on the vehicle.&lt;br /&gt;
&lt;br /&gt;
=== Photo Interrupter ===&lt;br /&gt;
[[File:S15_146_G3_IMG_photoInt.png|200px|center]]&lt;br /&gt;
&lt;br /&gt;
The photo interrupters we chose were the Motorola MOC7821. These devices contain an infrared LED and an infrared-controlled transistor. When the gap between the LED and the sensor is open the transistor turns on and allows current to flow. When an object passes through the space between the LED and the sensor the transistor turns off and behaves like an open circuit.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Transmitting Module'''&lt;br /&gt;
&lt;br /&gt;
The transmitter first reads the accelerometer data in both the x and y directions and encodes them in an integer. That integer is sent to the vehicle using the Nordic Wireless system. &lt;br /&gt;
&lt;br /&gt;
 [[File:S15_146_G3_IMG_flowchart_transmit.png|200px|center]]&lt;br /&gt;
&lt;br /&gt;
'''Receiving Module'''&lt;br /&gt;
&lt;br /&gt;
The SJ One board on the vehicle, waiting to receive data, accepts the integer. The vehicle reads the wheel speeds at the front and rear axle.  This is done by reading the signal from the photo interrupters many times in a row and incrementing a counter each time the signal transitions between high and low. One counter holds the number of transitions read from the front axle and the other counter holds the number of transitions at the rear axle and the task determines if the vehicle is in a low traction situation based on the two counter values. The car then translates the encoded command using one of two throttle maps, based on the traction situation, and uses that to set motor speed and servo angle.&lt;br /&gt;
&lt;br /&gt;
 [[File:S15_146_G3_IMG_flowchart_receive.png|500px|center]]&lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
'''Accelerometer'''&lt;br /&gt;
&lt;br /&gt;
The built-in sensor that reads the tilt direction of the SJ One board.&lt;br /&gt;
&lt;br /&gt;
*Step 1: Initialize accelerometer sensor.&lt;br /&gt;
&lt;br /&gt;
*Step 2: Read X and Y axis from the sensor and get the orientation of the board.&lt;br /&gt;
               &lt;br /&gt;
 Read X value:&lt;br /&gt;
 Function                   X-axis Range&lt;br /&gt;
  Forward                 -200 &amp;lt;= x &amp;lt; 200&lt;br /&gt;
  Left                    -500 &amp;lt;= x &amp;lt; -200&lt;br /&gt;
  Right                    200 &amp;lt;= x &amp;lt; 500&lt;br /&gt;
  Hard Left                  x &amp;gt;= 500&lt;br /&gt;
  Hard Right                 x &amp;lt;= -500&lt;br /&gt;
 &lt;br /&gt;
 Read Y value:             &lt;br /&gt;
 Num  Speed                 Y-axis Range                    &lt;br /&gt;
  0    7.5                 -150 &amp;lt;= y &amp;lt; 150&lt;br /&gt;
  1    7.9                  150 &amp;lt;= y &amp;lt; 250&lt;br /&gt;
  2    8.3                  250 &amp;lt;= y &amp;lt; 400&lt;br /&gt;
  3    8.7                  400 &amp;lt;= y &amp;lt; 550&lt;br /&gt;
  4    9.1                  550 &amp;lt;= y &amp;lt; 700&lt;br /&gt;
  5    9.5                  700 &amp;lt;= y &amp;lt; 850&lt;br /&gt;
  6    9.9                    y &amp;gt;= 850&lt;br /&gt;
&lt;br /&gt;
*Step 3: Encode the function and speed number as a single integer and pass them to the wireless task.&lt;br /&gt;
      &lt;br /&gt;
&lt;br /&gt;
'''Nordic Wireless''' (nRF24L01).&lt;br /&gt;
&lt;br /&gt;
The Nordic wireless sensor is built-in on SJOne Board. It used to send and receive data from one SJOne to other. For our project, it is used to send an encoded x and y tilt of the control board to the board on the vehicle. The following steps were taken to implement the Nordic wireless system&lt;br /&gt;
&lt;br /&gt;
*Step 1: Configure the wireless node address and wireless channel number in sys_config.h file. (Make sure both boards have the same channel)&lt;br /&gt;
&lt;br /&gt;
*Step 2: Used mesh_set_node_address() function to set both sending and receiving address. In our project, the car address is set to 300.&lt;br /&gt;
&lt;br /&gt;
*Step 3: On the sending side, it used wireless_send(addr, protocol, data, size of data, max_hops) function to send the data from SJOne board.&lt;br /&gt;
&lt;br /&gt;
*Step 4: On the receiving side, it used wireless_get_rx_pkt() function to catch the data coming from the wireless.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Photo Interrupters''' (MOC7821).&lt;br /&gt;
&lt;br /&gt;
[[File:S15_146_G3_IMG_motor.png|500px|left]]                     [[File:S15_146_G3_IMG_servo.png|460px|center]]&lt;br /&gt;
&lt;br /&gt;
The photo interrupters are used to monitor wheel rotation. An interrupter was mounted around a disk attached to each differential. In the photos above the rear wheel speed sensor assembly and the front wheel speed sensor assembly are on the left and right, respectively. Notches were cut into the disks so that as they spun the outputs of the interrupters would rise and fall. The SJ One board monitored these signals using its GPIO inputs and counted the rising edges over a set period of time to determine the speed of the axle. Being a rear-drive vehicle, the rear axle rotates faster than the front in a slip condition, and the program responds by reducing throttle.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
&lt;br /&gt;
=== Issue #1 ===&lt;br /&gt;
The first issue that we ran into involved our implementation of the Nordic wireless system. During the early stages of the project, we wrote and tested our features in separate C or C++ programs. Using the provided libraries and functions, we designed transmitting and receiving programs to test the wireless. During testing, the first packet sent without issue, but any following packets took up to 30 seconds to send. This is because the libraries and functions that we were relying on were designed to be used within the structured FreeRTOS environment. Using them without the work that FreeRTOS does in the background causes them to misbehave.&lt;br /&gt;
&lt;br /&gt;
=== Issue #2 ===&lt;br /&gt;
The Motorola MOC7821 photo interrupters that we purchased had very little documentation. We found information about the sensor side of the part, but nothing about the LEDs that make up the infrared emitters. Two of the interrupter's LEDs burnt out before we found the correct dropout voltage and amperage. We recommend that future students obtain access to a variable power supply and test the LEDs by slowly increasing voltage from zero until the dropout voltage is found. &lt;br /&gt;
&lt;br /&gt;
=== Issue #3 ===&lt;br /&gt;
This issue was never resolved. Our initial design goal was to implement the timer's capture system so that the rising edges of the photo interrupters' signals could be counted without consuming CPU cycles. The initialization process seemed straightforward but any time we attempted to modify the lower 4 bits of the Counter Control Register it caused an error that triggered a reboot of the system. After many hours of research and guessing no solution was found so we made our own function that, at the price of many CPU cycles, used the GPIO pins to accomplish the same goal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Any project of this type will encounter roadblocks such as these. These issues, as well as many smaller bugs, were discovered and resolved using frequent testing. Each task was broken down into as small of a block as we could devise a test for. For example, the photo interrupters were tested in four stages. First we tested the sensor side using an infrared television remote. Once we knew the sensor was working we tested the LEDs using an infrared sensitive camera. The whole package was then tested on a bread board, and finally tested again once installed on the model car. &lt;br /&gt;
&lt;br /&gt;
This multi-tiered testing approach was also applied to our software design process. Testing was an integral part of our design and frequent testing helped us to catch bugs sooner and solve them faster by shrinking the amount of code that could be contributing to the problem.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
Though this project was ultimately successful, it was a struggle. Poor planning coupled with an injury from a car accident and an untrustworthy online retailer all pushed the timeline for the project. We were severely behind schedule and were able to successfully complete the project by abandoning the &amp;quot;capture&amp;quot; peripheral and placing the load on the CPU by using the GPIO pins. This project taught a lesson in proper scheduling and planning. &lt;br /&gt;
&lt;br /&gt;
However, that was not the only lesson. In our implementation we were forced to execute, in a best case situation, over 500 lines of code in between each command between the transmitter and the receiver. The delay that the extra code caused in the controlling of the vehicle was barely noticeable, and helped us to see just how blazingly fast modern micro controllers actually are. The thought of a micro controller being slower and &amp;quot;less capable&amp;quot; than a computer is, in most cases, incorrect. &lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_SJSU_S2015/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
http://www.nxp.com/documents/user_manual/UM10360.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.socialledge.com/sjsu/images/d/de/2012SJOneBoardSchematic.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.datasheetspdf.com/PDF/MOC7821/613725/1&lt;br /&gt;
&lt;br /&gt;
http://www.socialledge.com/sjsu/index.php?title=PWM_Motor_Controller_Interface&lt;br /&gt;
&lt;br /&gt;
http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board&lt;br /&gt;
&lt;br /&gt;
http://www.socialledge.com/sjsu/index.php?title=Low_Powered_Mesh_Network_stack&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=S15:_Motion-Controlled_RC_Car&amp;diff=17716</id>
		<title>S15: Motion-Controlled RC Car</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=S15:_Motion-Controlled_RC_Car&amp;diff=17716"/>
				<updated>2015-05-27T03:33:50Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* SJOne */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Motion-Controlled RC Car ==&lt;br /&gt;
&lt;br /&gt;
[[File:S15_146_G3_IMG_RCcar.jpg|800px|center]]&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
The Motion-Controlled RC Car will allow inexperienced users to drive a high-performance RC vehicle. This is accomplished with a tilt controller, which is more intuitive than a traditional RC transmitter, and a slip-limiting system that will reduce the potential for crashes.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
High performance RC vehicles can be difficult to control because of their immense power and are typically expensive to repair. The goal of this project is to create both a wireless tilt controller and a traction control system for a high-performance RC car. From an engineering standpoint, the project can be broken into three major objectives.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Nordic wireless communication&lt;br /&gt;
&lt;br /&gt;
2. Measurement of front and rear axle speed&lt;br /&gt;
&lt;br /&gt;
3. Pulse-width modulated control of motor and servo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
*  Shangming Wang - Mesh Communication, Report writing, testing &lt;br /&gt;
&lt;br /&gt;
*  Daniel Khawaja - Wheel speed capture, RC car maintenance, PWM&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Start Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| End Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Status&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Completion Date&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 0&lt;br /&gt;
| 4/10&lt;br /&gt;
| 4/24&lt;br /&gt;
| Obtain Hall sensors&lt;br /&gt;
| Not Completed&lt;br /&gt;
| ---&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 4/20&lt;br /&gt;
| 4/27&lt;br /&gt;
| Find PWM parameters, Test mesh communication&lt;br /&gt;
| Completed  &lt;br /&gt;
| PWM: 4/27  Mesh: 5/4&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 4/27&lt;br /&gt;
| 5/4&lt;br /&gt;
| Implement PWM control, Finalize mesh communication, Obtain photo interrupters&lt;br /&gt;
| Completed&lt;br /&gt;
| PWM: 5/4    Mesh: 5/13  Photo: 5/14&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 5/4&lt;br /&gt;
| 5/11&lt;br /&gt;
| Implement motion control, Modify RC for 2wd and mount wheel speed sensors&lt;br /&gt;
| Completed&lt;br /&gt;
| Motion: 5/13     Modification: 5/15&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 5/11&lt;br /&gt;
| 5/18&lt;br /&gt;
| Finish wheel speed capture, Test and polish traction control parameters&lt;br /&gt;
| Completed&lt;br /&gt;
| Capture: 5/23     T.C.: 5/25&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 5/18&lt;br /&gt;
| 5/25&lt;br /&gt;
| Implement extra features&lt;br /&gt;
| Not Completed&lt;br /&gt;
| ---&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! width=&amp;quot;30&amp;quot; align=&amp;quot;center&amp;quot;|Qty&lt;br /&gt;
! width=&amp;quot;350&amp;quot; align=&amp;quot;center&amp;quot;|Description&lt;br /&gt;
! width=&amp;quot;60&amp;quot; align=&amp;quot;center&amp;quot;|Total Cost&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|50||Jumper Wires||align=&amp;quot;right&amp;quot;|$3.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1||Prototype Board||align=&amp;quot;right&amp;quot;|$1.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1||Turnigy 500mAh Battery||align=&amp;quot;right&amp;quot;|$40.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|2||Wireless Antenna||align=&amp;quot;right&amp;quot;|$6.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1||Remote Control Car||align=&amp;quot;right&amp;quot;|$150.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|2||SJOne Board||align=&amp;quot;right&amp;quot;|$160.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|2||Motorola MOC7821 Photo Interrupter||align=&amp;quot;right&amp;quot;|$4.00&lt;br /&gt;
|-&lt;br /&gt;
| ||Total Cost '''||align=&amp;quot;right&amp;quot;|$364'''&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
&lt;br /&gt;
[[File:S15_146_G3_IMG_1.png|400px|center]]&lt;br /&gt;
&lt;br /&gt;
A high-level schematic of the electronics involved in this project&lt;br /&gt;
&lt;br /&gt;
Our hardware design began with connecting the Sj-One board with the servo and motor controller controller that were built into the model car.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interfaces ===&lt;br /&gt;
The Transmitting Module used the following interfaces:&lt;br /&gt;
* I2C Bus&lt;br /&gt;
** Used for reading the orientation value from accelerometer sensor &lt;br /&gt;
*SPI Bus&lt;br /&gt;
** Used for transmit commands from Nordic wireless sensor to receiving board&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Receiving Interface used the following interfaces:&lt;br /&gt;
*SPI Bus&lt;br /&gt;
** Used for receive commands from Nordic wireless sensor from transmitting board&lt;br /&gt;
*GPIO&lt;br /&gt;
** Used to read the axle speed from the front and rear &lt;br /&gt;
** Used to passing PWM signal to the motor and the servo&lt;br /&gt;
&lt;br /&gt;
=== SJOne ===&lt;br /&gt;
[[File:S15_146_G3_IMG_SJOne.png|center]]&lt;br /&gt;
&lt;br /&gt;
Our project used two [http://http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board SJOne boards], both running FreeRTOS. For our project we used the built-in Nordic Wireless system, Accelerometer, GPIO, and PWM functions.&lt;br /&gt;
&lt;br /&gt;
=== Servo, Motor &amp;amp; Motor Controller ===&lt;br /&gt;
[[File:S15_146_g3_pwmInterfacedElectronics.jpg|460px|center]]&lt;br /&gt;
&lt;br /&gt;
The servo used in this project was a Futaba S3004 and the motor, already built into the model car, was a Leopard Hobby 3300Kv brushless motor. The Castle Sidewinder 3 motor controller and the Futaba servo were both controlled using pulse widths ranging from 1 to 2miliseconds. A width of 1.5 miliseconds was  a 0% signal, 1 milisecond was -100%, and 2 miliseconds  was +100%.  The motor controller included a 5v regulated output, so it was used to power all the electronics on the vehicle.&lt;br /&gt;
&lt;br /&gt;
=== Photo Interrupter ===&lt;br /&gt;
[[File:S15_146_G3_IMG_photoInt.png|200px|center]]&lt;br /&gt;
&lt;br /&gt;
The photo interrupters we chose were the Motorola MOC7821. These devices contain an infrared LED and an infrared-controlled transistor. When the gap between the LED and the sensor is open the transistor turns on and allows current to flow. When an object passes through the space between the LED and the sensor the transistor turns off and behaves like an open circuit.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Transmitting Module'''&lt;br /&gt;
&lt;br /&gt;
The transmitter first reads the accelerometer data in both the x and y directions and encodes them in an integer. That integer is sent to the vehicle using the Nordic Wireless system. &lt;br /&gt;
&lt;br /&gt;
 [[File:S15_146_G3_IMG_flowchart_transmit.png|200px|center]]&lt;br /&gt;
&lt;br /&gt;
'''Receiving Module'''&lt;br /&gt;
&lt;br /&gt;
The SJ One board on the vehicle, waiting to receive data, accepts the integer. The vehicle reads the wheel speeds at the front and rear axle.  This is done by reading the signal from the photo interrupters many times in a row and incrementing a counter each time the signal transitions between high and low. One counter holds the number of transitions read from the front axle and the other counter holds the number of transitions at the rear axle and the task determines if the vehicle is in a low traction situation based on the two counter values. The car then translates the encoded command using one of two throttle maps, based on the traction situation, and uses that to set motor speed and servo angle.&lt;br /&gt;
&lt;br /&gt;
 [[File:S15_146_G3_IMG_flowchart_receive.png|500px|center]]&lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
'''Accelerometer'''&lt;br /&gt;
&lt;br /&gt;
The built-in sensor that reads the tilt direction of the SJ One board.&lt;br /&gt;
&lt;br /&gt;
*Step 1: Initialize accelerometer sensor.&lt;br /&gt;
&lt;br /&gt;
*Step 2: Read X and Y axis from the sensor and get the orientation of the board.&lt;br /&gt;
               &lt;br /&gt;
 Read X value:&lt;br /&gt;
 Function                   X-axis Range&lt;br /&gt;
  Forward                 -200 &amp;lt;= x &amp;lt; 200&lt;br /&gt;
  Left                    -500 &amp;lt;= x &amp;lt; -200&lt;br /&gt;
  Right                    200 &amp;lt;= x &amp;lt; 500&lt;br /&gt;
  Hard Left                  x &amp;gt;= 500&lt;br /&gt;
  Hard Right                 x &amp;lt;= -500&lt;br /&gt;
 &lt;br /&gt;
 Read Y value:             &lt;br /&gt;
 Num  Speed                 Y-axis Range                    &lt;br /&gt;
  0    7.5                 -150 &amp;lt;= y &amp;lt; 150&lt;br /&gt;
  1    7.9                  150 &amp;lt;= y &amp;lt; 250&lt;br /&gt;
  2    8.3                  250 &amp;lt;= y &amp;lt; 400&lt;br /&gt;
  3    8.7                  400 &amp;lt;= y &amp;lt; 550&lt;br /&gt;
  4    9.1                  550 &amp;lt;= y &amp;lt; 700&lt;br /&gt;
  5    9.5                  700 &amp;lt;= y &amp;lt; 850&lt;br /&gt;
  6    9.9                    y &amp;gt;= 850&lt;br /&gt;
&lt;br /&gt;
*Step 3: Encode the function and speed number as a single integer and pass them to the wireless task.&lt;br /&gt;
      &lt;br /&gt;
&lt;br /&gt;
'''Nordic Wireless''' (nRF24L01).&lt;br /&gt;
&lt;br /&gt;
The Nordic wireless sensor is built-in on SJOne Board. It used to send and receive data from one SJOne to other. For our project, it is used to send an encoded x and y tilt of the control board to the board on the vehicle. The following steps were taken to implement the Nordic wireless system&lt;br /&gt;
&lt;br /&gt;
*Step 1: Configure the wireless node address and wireless channel number in sys_config.h file. (Make sure both boards have the same channel)&lt;br /&gt;
&lt;br /&gt;
*Step 2: Used mesh_set_node_address() function to set both sending and receiving address. In our project, the car address is set to 300.&lt;br /&gt;
&lt;br /&gt;
*Step 3: On the sending side, it used wireless_send(addr, protocol, data, size of data, max_hops) function to send the data from SJOne board.&lt;br /&gt;
&lt;br /&gt;
*Step 4: On the receiving side, it used wireless_get_rx_pkt() function to catch the data coming from the wireless.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Photo Interrupters''' (MOC7821).&lt;br /&gt;
&lt;br /&gt;
[[File:S15_146_G3_IMG_motor.png|500px|left]]                     [[File:S15_146_G3_IMG_servo.png|460px|center]]&lt;br /&gt;
&lt;br /&gt;
The photo interrupters are used to monitor wheel rotation. An interrupter was mounted around a disk attached to each differential. In the photos above the rear wheel speed sensor assembly and the front wheel speed sensor assembly are on the left and right, respectively. Notches were cut into the disks so that as they spun the outputs of the interrupters would rise and fall. The SJ One board monitored these signals using its GPIO inputs and counted the rising edges over a set period of time to determine the speed of the axle. Being a rear-drive vehicle, the rear axle rotates faster than the front in a slip condition, and the program responds by reducing throttle.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
&lt;br /&gt;
=== Issue #1 ===&lt;br /&gt;
The first issue that we ran into involved our implementation of the Nordic wireless system. During the early stages of the project, we wrote and tested our features in separate C or C++ programs. Using the provided libraries and functions, we designed transmitting and receiving programs to test the wireless. During testing, the first packet sent without issue, but any following packets took up to 30 seconds to send. This is because the libraries and functions that we were relying on were designed to be used within the structured FreeRTOS environment. Using them without the work that FreeRTOS does in the background causes them to misbehave.&lt;br /&gt;
&lt;br /&gt;
=== Issue #2 ===&lt;br /&gt;
The Motorola MOC7821 photo interrupters that we purchased had very little documentation. We found information about the sensor side of the part, but nothing about the LEDs that make up the infrared emitters. Two of the interrupter's LEDs burnt out before we found the correct dropout voltage and amperage. We recommend that future students obtain access to a variable power supply and test the LEDs by slowly increasing voltage from zero until the dropout voltage is found. &lt;br /&gt;
&lt;br /&gt;
=== Issue #3 ===&lt;br /&gt;
This issue was never resolved. Our initial design goal was to implement the timer's capture system so that the rising edges of the photo interrupters' signals could be counted without consuming CPU cycles. The initialization process seemed straightforward but any time we attempted to modify the lower 4 bits of the Counter Control Register it caused an error that triggered a reboot of the system. After many hours of research and guessing no solution was found so we made our own function that, at the price of many CPU cycles, used the GPIO pins to accomplish the same goal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Any project of this type will encounter roadblocks such as these. These issues, as well as many smaller bugs, were discovered and resolved using frequent testing. Each task was broken down into as small of a block as we could devise a test for. For example, the photo interrupters were tested in four stages. First we tested the sensor side using an infrared television remote. Once we knew the sensor was working we tested the LEDs using an infrared sensitive camera. The whole package was then tested on a bread board, and finally tested again once installed on the model car. &lt;br /&gt;
&lt;br /&gt;
This multi-tiered testing approach was also applied to our software design process. Testing was an integral part of our design and frequent testing helped us to catch bugs sooner and solve them faster by shrinking the amount of code that could be contributing to the problem.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
Though this project was ultimately successful, it was a struggle. Poor planning coupled with an injury from a car accident and an untrustworthy online retailer all pushed the timeline for the project. We were severely behind schedule and were able to successfully complete the project by abandoning the &amp;quot;capture&amp;quot; peripheral and placing the load on the CPU by using the GPIO pins. This project taught a lesson in proper scheduling and planning. &lt;br /&gt;
&lt;br /&gt;
However, that was not the only lesson. In our implementation we were forced to execute, in a best case situation, over 500 lines of code in between each command between the transmitter and the receiver. The delay that the extra code caused in the controlling of the vehicle was barely noticeable, and helped us to see just how blazingly fast modern micro controllers actually are. The thought of a micro controller being slower and &amp;quot;less capable&amp;quot; than a computer is, in most cases, incorrect. &lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_SJSU_S2015/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
http://www.nxp.com/documents/user_manual/UM10360.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.socialledge.com/sjsu/images/d/de/2012SJOneBoardSchematic.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.datasheetspdf.com/PDF/MOC7821/613725/1&lt;br /&gt;
&lt;br /&gt;
http://www.socialledge.com/sjsu/index.php?title=PWM_Motor_Controller_Interface&lt;br /&gt;
&lt;br /&gt;
http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board&lt;br /&gt;
&lt;br /&gt;
http://www.socialledge.com/sjsu/index.php?title=Low_Powered_Mesh_Network_stack&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=S15:_Motion-Controlled_RC_Car&amp;diff=17709</id>
		<title>S15: Motion-Controlled RC Car</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=S15:_Motion-Controlled_RC_Car&amp;diff=17709"/>
				<updated>2015-05-27T03:15:09Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* SJOne */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Motion-Controlled RC Car ==&lt;br /&gt;
&lt;br /&gt;
[[File:S15_146_G3_IMG_RCcar.jpg|800px|center]]&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
The Motion-Controlled RC Car will allow inexperienced users to drive a high-performance RC vehicle. This is accomplished with a tilt controller, which is more intuitive than a traditional RC transmitter, and a slip-limiting system that will reduce the potential for crashes.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
High performance RC vehicles can be difficult to control because of their immense power and are typically expensive to repair. The goal of this project is to create both a wireless tilt controller and a traction control system for a high-performance RC car. From an engineering standpoint, the project can be broken into three major objectives.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Nordic wireless communication&lt;br /&gt;
&lt;br /&gt;
2. Measurement of front and rear axle speed&lt;br /&gt;
&lt;br /&gt;
3. Pulse-width modulated control of motor and servo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
*  Shangming Wang - Mesh Communication, Report writing, testing &lt;br /&gt;
&lt;br /&gt;
*  Daniel Khawaja - Wheel speed capture, RC car maintenance, PWM&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Start Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| End Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Status&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Completion Date&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 0&lt;br /&gt;
| 4/10&lt;br /&gt;
| 4/24&lt;br /&gt;
| Obtain Hall sensors&lt;br /&gt;
| Not Completed&lt;br /&gt;
| ---&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 4/20&lt;br /&gt;
| 4/27&lt;br /&gt;
| Find PWM parameters, Test mesh communication&lt;br /&gt;
| Completed  &lt;br /&gt;
| PWM: 4/27  Mesh: 5/4&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 4/27&lt;br /&gt;
| 5/4&lt;br /&gt;
| Implement PWM control, Finalize mesh communication, Obtain photo interrupters&lt;br /&gt;
| Completed&lt;br /&gt;
| PWM: 5/4    Mesh: 5/13  Photo: 5/14&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 5/4&lt;br /&gt;
| 5/11&lt;br /&gt;
| Implement motion control, Modify RC for 2wd and mount wheel speed sensors&lt;br /&gt;
| Completed&lt;br /&gt;
| Motion: 5/13     Modification: 5/15&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 5/11&lt;br /&gt;
| 5/18&lt;br /&gt;
| Finish wheel speed capture, Test and polish traction control parameters&lt;br /&gt;
| Completed&lt;br /&gt;
| Capture: 5/23     T.C.: 5/25&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 5/18&lt;br /&gt;
| 5/25&lt;br /&gt;
| Implement extra features&lt;br /&gt;
| Not Completed&lt;br /&gt;
| ---&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! width=&amp;quot;30&amp;quot; align=&amp;quot;center&amp;quot;|Qty&lt;br /&gt;
! width=&amp;quot;350&amp;quot; align=&amp;quot;center&amp;quot;|Description&lt;br /&gt;
! width=&amp;quot;60&amp;quot; align=&amp;quot;center&amp;quot;|Total Cost&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|50||Jumper Wires||align=&amp;quot;right&amp;quot;|$3.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1||Prototype Board||align=&amp;quot;right&amp;quot;|$1.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1||Turnigy 500mAh Battery||align=&amp;quot;right&amp;quot;|$40.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|2||Wireless Antenna||align=&amp;quot;right&amp;quot;|$6.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1||Remote Control Car||align=&amp;quot;right&amp;quot;|$150.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|2||SJOne Board||align=&amp;quot;right&amp;quot;|$160.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|2||Motorola MOC7821 Photo Interrupter||align=&amp;quot;right&amp;quot;|$4.00&lt;br /&gt;
|-&lt;br /&gt;
| ||Total Cost '''||align=&amp;quot;right&amp;quot;|$364'''&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
&lt;br /&gt;
[[File:S15_146_G3_IMG_1.png|400px|center]]&lt;br /&gt;
&lt;br /&gt;
A high-level schematic of the electronics involved in this project&lt;br /&gt;
&lt;br /&gt;
Our hardware design began with connecting the Sj-One board with the servo and motor controller controller that were built into the model car.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interfaces ===&lt;br /&gt;
The Transmitting Module used the following interfaces:&lt;br /&gt;
* I2C Bus&lt;br /&gt;
** Used for reading the orientation value from accelerometer sensor &lt;br /&gt;
*SPI Bus&lt;br /&gt;
** Used for transmit commands from Nordic wireless sensor to receiving board&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Receiving Interface used the following interfaces:&lt;br /&gt;
*SPI Bus&lt;br /&gt;
** Used for receive commands from Nordic wireless sensor from transmitting board&lt;br /&gt;
*GPIO&lt;br /&gt;
** Used to read the axle speed from the front and rear &lt;br /&gt;
** Used to passing PWM signal to the motor and the servo&lt;br /&gt;
&lt;br /&gt;
=== SJOne ===&lt;br /&gt;
[[File:S15_146_G3_IMG_SJOne.png|center]]&lt;br /&gt;
&lt;br /&gt;
The SJOne board is running FreeRTOS. It has Nordic Wireless sensor, Accelerometer sensor, and PWM built-in functions for communicate two boards wirelessly and provide power signal to control the external motor.&lt;br /&gt;
&lt;br /&gt;
=== Servo, Motor &amp;amp; Motor Controller ===&lt;br /&gt;
[[File:S15_146_g3_pwmInterfacedElectronics.jpg|460px|center]]&lt;br /&gt;
&lt;br /&gt;
The servo used in this project was a Futaba S3004 and the motor, already built into the model car, was a Leopard Hobby 3300Kv brushless motor. The Castle Sidewinder 3 motor controller and the Futaba servo were both controlled using pulse widths ranging from 1 to 2miliseconds. A width of 1.5 miliseconds was  a 0% signal, 1 milisecond was -100%, and 2 miliseconds  was +100%.  The motor controller included a 5v regulated output, so it was used to power all the electronics on the vehicle.&lt;br /&gt;
&lt;br /&gt;
=== Photo Interrupter ===&lt;br /&gt;
[[File:S15_146_G3_IMG_photoInt.png|200px|center]]&lt;br /&gt;
&lt;br /&gt;
The photo interrupters we chose were the Motorola MOC7821. These devices contain an infrared LED and an infrared-controlled transistor. When the gap between the LED and the sensor is open the transistor turns on and allows current to flow. When an object passes through the space between the LED and the sensor the transistor turns off and behaves like an open circuit.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Transmitting Module'''&lt;br /&gt;
&lt;br /&gt;
The transmitter first reads the accelerometer data in both the x and y directions and encodes them in an integer. That integer is sent to the vehicle using the Nordic Wireless system. &lt;br /&gt;
&lt;br /&gt;
 [[File:S15_146_G3_IMG_flowchart_transmit.png|200px|center]]&lt;br /&gt;
&lt;br /&gt;
'''Receiving Module'''&lt;br /&gt;
&lt;br /&gt;
The SJ One board on the vehicle, waiting to receive data, accepts the integer. The vehicle reads the wheel speeds at the front and rear axle.  This is done by reading the signal from the photo interrupters many times in a row and incrementing a counter each time the signal transitions between high and low. One counter holds the number of transitions read from the front axle and the other counter holds the number of transitions at the rear axle and the task determines if the vehicle is in a low traction situation based on the two counter values. The car then translates the encoded command using one of two throttle maps, based on the traction situation, and uses that to set motor speed and servo angle.&lt;br /&gt;
&lt;br /&gt;
 [[File:S15_146_G3_IMG_flowchart_receive.png|500px|center]]&lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
'''Accelerometer'''&lt;br /&gt;
&lt;br /&gt;
The built-in sensor that reads the tilt direction of the SJ One board.&lt;br /&gt;
&lt;br /&gt;
*Step 1: Initialize accelerometer sensor.&lt;br /&gt;
&lt;br /&gt;
*Step 2: Read X and Y axis from the sensor and get the orientation of the board.&lt;br /&gt;
               &lt;br /&gt;
 Read X value:&lt;br /&gt;
 Function                   X-axis Range&lt;br /&gt;
  Forward                 -200 &amp;lt;= x &amp;lt; 200&lt;br /&gt;
  Left                    -500 &amp;lt;= x &amp;lt; -200&lt;br /&gt;
  Right                    200 &amp;lt;= x &amp;lt; 500&lt;br /&gt;
  Hard Left                  x &amp;gt;= 500&lt;br /&gt;
  Hard Right                 x &amp;lt;= -500&lt;br /&gt;
 &lt;br /&gt;
 Read Y value:             &lt;br /&gt;
 Num  Speed                 Y-axis Range                    &lt;br /&gt;
  0    7.5                 -150 &amp;lt;= y &amp;lt; 150&lt;br /&gt;
  1    7.9                  150 &amp;lt;= y &amp;lt; 250&lt;br /&gt;
  2    8.3                  250 &amp;lt;= y &amp;lt; 400&lt;br /&gt;
  3    8.7                  400 &amp;lt;= y &amp;lt; 550&lt;br /&gt;
  4    9.1                  550 &amp;lt;= y &amp;lt; 700&lt;br /&gt;
  5    9.5                  700 &amp;lt;= y &amp;lt; 850&lt;br /&gt;
  6    9.9                    y &amp;gt;= 850&lt;br /&gt;
&lt;br /&gt;
*Step 3: Encode the function and speed number as a single integer and pass them to the wireless task.&lt;br /&gt;
      &lt;br /&gt;
&lt;br /&gt;
'''Nordic Wireless''' (nRF24L01).&lt;br /&gt;
&lt;br /&gt;
The Nordic wireless sensor is built-in on SJOne Board. It used to send and receive data from one SJOne to other. For our project, it is used to send an encoded x and y tilt of the control board to the board on the vehicle. The following steps were taken to implement the Nordic wireless system&lt;br /&gt;
&lt;br /&gt;
*Step 1: Configure the wireless node address and wireless channel number in sys_config.h file. (Make sure both boards have the same channel)&lt;br /&gt;
&lt;br /&gt;
*Step 2: Used mesh_set_node_address() function to set both sending and receiving address. In our project, the car address is set to 300.&lt;br /&gt;
&lt;br /&gt;
*Step 3: On the sending side, it used wireless_send(addr, protocol, data, size of data, max_hops) function to send the data from SJOne board.&lt;br /&gt;
&lt;br /&gt;
*Step 4: On the receiving side, it used wireless_get_rx_pkt() function to catch the data coming from the wireless.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Photo Interrupters''' (MOC7821).&lt;br /&gt;
&lt;br /&gt;
[[File:S15_146_G3_IMG_motor.png|500px|left]]                     [[File:S15_146_G3_IMG_servo.png|460px|center]]&lt;br /&gt;
&lt;br /&gt;
The photo interrupters are used to monitor wheel rotation. An interrupter was mounted around a disk attached to each differential. In the photos above the rear wheel speed sensor assembly and the front wheel speed sensor assembly are on the left and right, respectively. Notches were cut into the disks so that as they spun the outputs of the interrupters would rise and fall. The SJ One board monitored these signals using its GPIO inputs and counted the rising edges over a set period of time to determine the speed of the axle. Being a rear-drive vehicle, the rear axle rotates faster than the front in a slip condition, and the program responds by reducing throttle.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
&lt;br /&gt;
=== Issue #1 ===&lt;br /&gt;
The first issue that we ran into involved our implementation of the Nordic wireless system. During the early stages of the project, we wrote and tested our features in separate C or C++ programs. Using the provided libraries and functions, we designed transmitting and receiving programs to test the wireless. During testing, the first packet sent without issue, but any following packets took up to 30 seconds to send. This is because the libraries and functions that we were relying on were designed to be used within the structured FreeRTOS environment. Using them without the work that FreeRTOS does in the background causes them to misbehave.&lt;br /&gt;
&lt;br /&gt;
=== Issue #2 ===&lt;br /&gt;
The Motorola MOC7821 photo interrupters that we purchased had very little documentation. We found information about the sensor side of the part, but nothing about the LEDs that make up the infrared emitters. Two of the interrupter's LEDs burnt out before we found the correct dropout voltage and amperage. We recommend that future students obtain access to a variable power supply and test the LEDs by slowly increasing voltage from zero until the dropout voltage is found. &lt;br /&gt;
&lt;br /&gt;
=== Issue #3 ===&lt;br /&gt;
This issue was never resolved. Our initial design goal was to implement the timer's capture system so that the rising edges of the photo interrupters' signals could be counted without consuming CPU cycles. The initialization process seemed straightforward but any time we attempted to modify the lower 4 bits of the Counter Control Register it caused an error that triggered a reboot of the system. After many hours of research and guessing no solution was found so we made our own function that, at the price of many CPU cycles, used the GPIO pins to accomplish the same goal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Any project of this type will encounter roadblocks such as these. These issues, as well as many smaller bugs, were discovered and resolved using frequent testing. Each task was broken down into as small of a block as we could devise a test for. For example, the photo interrupters were tested in four stages. First we tested the sensor side using an infrared television remote. Once we knew the sensor was working we tested the LEDs using an infrared sensitive camera. The whole package was then tested on a bread board, and finally tested again once installed on the model car. &lt;br /&gt;
&lt;br /&gt;
This multi-tiered testing approach was also applied to our software design process. Testing was an integral part of our design and frequent testing helped us to catch bugs sooner and solve them faster by shrinking the amount of code that could be contributing to the problem.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
Though this project was ultimately successful, it was a struggle. Poor planning coupled with an injury from a car accident and an untrustworthy online retailer all pushed the timeline for the project. We were severely behind schedule and were able to successfully complete the project by abandoning the &amp;quot;capture&amp;quot; peripheral and placing the load on the CPU by using the GPIO pins. This project taught a lesson in proper scheduling and planning. &lt;br /&gt;
&lt;br /&gt;
However, that was not the only lesson. In our implementation we were forced to execute, in a best case situation, over 500 lines of code in between each command between the transmitter and the receiver. The delay that the extra code caused in the controlling of the vehicle was barely noticeable, and helped us to see just how blazingly fast modern micro controllers actually are. The thought of a micro controller being slower and &amp;quot;less capable&amp;quot; than a computer is, in most cases, incorrect. &lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_SJSU_S2015/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
http://www.nxp.com/documents/user_manual/UM10360.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.socialledge.com/sjsu/images/d/de/2012SJOneBoardSchematic.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.datasheetspdf.com/PDF/MOC7821/613725/1&lt;br /&gt;
&lt;br /&gt;
http://www.socialledge.com/sjsu/index.php?title=PWM_Motor_Controller_Interface&lt;br /&gt;
&lt;br /&gt;
http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board&lt;br /&gt;
&lt;br /&gt;
http://www.socialledge.com/sjsu/index.php?title=Low_Powered_Mesh_Network_stack&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=S15:_Motion-Controlled_RC_Car&amp;diff=17704</id>
		<title>S15: Motion-Controlled RC Car</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=S15:_Motion-Controlled_RC_Car&amp;diff=17704"/>
				<updated>2015-05-27T03:10:11Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Photo Interrupter */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Motion-Controlled RC Car ==&lt;br /&gt;
&lt;br /&gt;
[[File:S15_146_G3_IMG_RCcar.jpg|800px|center]]&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
The Motion-Controlled RC Car will allow inexperienced users to drive a high-performance RC vehicle. This is accomplished with a tilt controller, which is more intuitive than a traditional RC transmitter, and a slip-limiting system that will reduce the potential for crashes.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
High performance RC vehicles can be difficult to control because of their immense power and are typically expensive to repair. The goal of this project is to create both a wireless tilt controller and a traction control system for a high-performance RC car. From an engineering standpoint, the project can be broken into three major objectives.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Nordic wireless communication&lt;br /&gt;
&lt;br /&gt;
2. Measurement of front and rear axle speed&lt;br /&gt;
&lt;br /&gt;
3. Pulse-width modulated control of motor and servo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
*  Shangming Wang - Mesh Communication, Report writing, testing &lt;br /&gt;
&lt;br /&gt;
*  Daniel Khawaja - Wheel speed capture, RC car maintenance, PWM&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Start Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| End Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Status&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Completion Date&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 0&lt;br /&gt;
| 4/10&lt;br /&gt;
| 4/24&lt;br /&gt;
| Obtain Hall sensors&lt;br /&gt;
| Not Completed&lt;br /&gt;
| ---&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 4/20&lt;br /&gt;
| 4/27&lt;br /&gt;
| Find PWM parameters, Test mesh communication&lt;br /&gt;
| Completed  &lt;br /&gt;
| PWM: 4/27  Mesh: 5/4&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 4/27&lt;br /&gt;
| 5/4&lt;br /&gt;
| Implement PWM control, Finalize mesh communication, Obtain photo interrupters&lt;br /&gt;
| Completed&lt;br /&gt;
| PWM: 5/4    Mesh: 5/13  Photo: 5/14&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 5/4&lt;br /&gt;
| 5/11&lt;br /&gt;
| Implement motion control, Modify RC for 2wd and mount wheel speed sensors&lt;br /&gt;
| Completed&lt;br /&gt;
| Motion: 5/13     Modification: 5/15&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 5/11&lt;br /&gt;
| 5/18&lt;br /&gt;
| Finish wheel speed capture, Test and polish traction control parameters&lt;br /&gt;
| Completed&lt;br /&gt;
| Capture: 5/23     T.C.: 5/25&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 5/18&lt;br /&gt;
| 5/25&lt;br /&gt;
| Implement extra features&lt;br /&gt;
| Not Completed&lt;br /&gt;
| ---&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! width=&amp;quot;30&amp;quot; align=&amp;quot;center&amp;quot;|Qty&lt;br /&gt;
! width=&amp;quot;350&amp;quot; align=&amp;quot;center&amp;quot;|Description&lt;br /&gt;
! width=&amp;quot;60&amp;quot; align=&amp;quot;center&amp;quot;|Total Cost&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|50||Jumper Wires||align=&amp;quot;right&amp;quot;|$3.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1||Prototype Board||align=&amp;quot;right&amp;quot;|$1.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1||Turnigy 500mAh Battery||align=&amp;quot;right&amp;quot;|$40.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|2||Wireless Antenna||align=&amp;quot;right&amp;quot;|$6.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1||Remote Control Car||align=&amp;quot;right&amp;quot;|$150.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|2||SJOne Board||align=&amp;quot;right&amp;quot;|$160.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|2||Motorola MOC7821 Photo Interrupter||align=&amp;quot;right&amp;quot;|$4.00&lt;br /&gt;
|-&lt;br /&gt;
| ||Total Cost '''||align=&amp;quot;right&amp;quot;|$364'''&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
&lt;br /&gt;
[[File:S15_146_G3_IMG_1.png|400px|center]]&lt;br /&gt;
&lt;br /&gt;
A high-level schematic of the electronics involved in this project&lt;br /&gt;
&lt;br /&gt;
Our hardware design began with connecting the Sj-One board with the servo and motor controller controller that were built into the model car.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interfaces ===&lt;br /&gt;
The Transmitting Module used the following interfaces:&lt;br /&gt;
* I2C Bus&lt;br /&gt;
** Used for reading the orientation value from accelerometer sensor &lt;br /&gt;
*SPI Bus&lt;br /&gt;
** Used for transmit commands from Nordic wireless sensor to receiving board&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Receiving Interface used the following interfaces:&lt;br /&gt;
*SPI Bus&lt;br /&gt;
** Used for receive commands from Nordic wireless sensor from transmitting board&lt;br /&gt;
*GPIO&lt;br /&gt;
** Used to read the axle speed from the front and rear &lt;br /&gt;
** Used to passing PWM signal to the motor and the servo&lt;br /&gt;
&lt;br /&gt;
=== SJOne ===&lt;br /&gt;
[[File:S15_146_G3_IMG_SJOne.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Servo, Motor &amp;amp; Motor Controller ===&lt;br /&gt;
[[File:S15_146_g3_pwmInterfacedElectronics.jpg|460px|center]]&lt;br /&gt;
&lt;br /&gt;
The servo used in this project was a Futaba S3004 and the motor, already built into the model car, was a Leopard Hobby 3300Kv brushless motor. The Castle Sidewinder 3 motor controller and the Futaba servo were both controlled using pulse widths ranging from 1 to 2miliseconds. A width of 1.5 miliseconds was  a 0% signal, 1 milisecond was -100%, and 2 miliseconds  was +100%.  The motor controller included a 5v regulated output, so it was used to power all the electronics on the vehicle.&lt;br /&gt;
&lt;br /&gt;
=== Photo Interrupter ===&lt;br /&gt;
[[File:S15_146_G3_IMG_photoInt.png|200px|center]]&lt;br /&gt;
&lt;br /&gt;
The photo interrupters we chose were the Motorola MOC7821. These devices contain an infrared LED and an infrared-controlled transistor. When the gap between the LED and the sensor is open the transistor turns on and allows current to flow. When an object passes through the space between the LED and the sensor the transistor turns off and behaves like an open circuit.&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Transmitting Module'''&lt;br /&gt;
&lt;br /&gt;
The transmitter first reads the accelerometer data in both the x and y directions and encodes them in an integer. That integer is sent to the vehicle using the Nordic Wireless system. &lt;br /&gt;
&lt;br /&gt;
 [[File:S15_146_G3_IMG_flowchart_transmit.png|200px|center]]&lt;br /&gt;
&lt;br /&gt;
'''Receiving Module'''&lt;br /&gt;
&lt;br /&gt;
The SJ One board on the vehicle, waiting to receive data, accepts the integer. The vehicle reads the wheel speeds at the front and rear axle.  This is done by reading the signal from the photo interrupters many times in a row and incrementing a counter each time the signal transitions between high and low. One counter holds the number of transitions read from the front axle and the other counter holds the number of transitions at the rear axle and the task determines if the vehicle is in a low traction situation based on the two counter values. The car then translates the encoded command using one of two throttle maps, based on the traction situation, and uses that to set motor speed and servo angle.&lt;br /&gt;
&lt;br /&gt;
 [[File:S15_146_G3_IMG_flowchart_receive.png|500px|center]]&lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
'''Accelerometer'''&lt;br /&gt;
&lt;br /&gt;
The built-in sensor that reads the tilt direction of the SJ One board.&lt;br /&gt;
&lt;br /&gt;
*Step 1: Initialize accelerometer sensor.&lt;br /&gt;
&lt;br /&gt;
*Step 2: Read X and Y axis from the sensor and get the orientation of the board.&lt;br /&gt;
               &lt;br /&gt;
 Read X value:&lt;br /&gt;
 Function                   X-axis Range&lt;br /&gt;
  Forward                 -200 &amp;lt;= x &amp;lt; 200&lt;br /&gt;
  Left                    -500 &amp;lt;= x &amp;lt; -200&lt;br /&gt;
  Right                    200 &amp;lt;= x &amp;lt; 500&lt;br /&gt;
  Hard Left                  x &amp;gt;= 500&lt;br /&gt;
  Hard Right                 x &amp;lt;= -500&lt;br /&gt;
 &lt;br /&gt;
 Read Y value:             &lt;br /&gt;
 Num  Speed                 Y-axis Range                    &lt;br /&gt;
  0    7.5                 -150 &amp;lt;= y &amp;lt; 150&lt;br /&gt;
  1    7.9                  150 &amp;lt;= y &amp;lt; 250&lt;br /&gt;
  2    8.3                  250 &amp;lt;= y &amp;lt; 400&lt;br /&gt;
  3    8.7                  400 &amp;lt;= y &amp;lt; 550&lt;br /&gt;
  4    9.1                  550 &amp;lt;= y &amp;lt; 700&lt;br /&gt;
  5    9.5                  700 &amp;lt;= y &amp;lt; 850&lt;br /&gt;
  6    9.9                    y &amp;gt;= 850&lt;br /&gt;
&lt;br /&gt;
*Step 3: Encode the function and speed number as a single integer and pass them to the wireless task.&lt;br /&gt;
      &lt;br /&gt;
&lt;br /&gt;
'''Nordic Wireless''' (nRF24L01).&lt;br /&gt;
&lt;br /&gt;
The Nordic wireless sensor is built-in on SJOne Board. It used to send and receive data from one SJOne to other. For our project, it is used to send an encoded x and y tilt of the control board to the board on the vehicle. The following steps were taken to implement the Nordic wireless system&lt;br /&gt;
&lt;br /&gt;
*Step 1: Configure the wireless node address and wireless channel number in sys_config.h file. (Make sure both boards have the same channel)&lt;br /&gt;
&lt;br /&gt;
*Step 2: Used mesh_set_node_address() function to set both sending and receiving address. In our project, the car address is set to 300.&lt;br /&gt;
&lt;br /&gt;
*Step 3: On the sending side, it used wireless_send(addr, protocol, data, size of data, max_hops) function to send the data from SJOne board.&lt;br /&gt;
&lt;br /&gt;
*Step 4: On the receiving side, it used wireless_get_rx_pkt() function to catch the data coming from the wireless.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Photo Interrupters''' (MOC7821).&lt;br /&gt;
&lt;br /&gt;
[[File:S15_146_G3_IMG_motor.png|500px|left]]                     [[File:S15_146_G3_IMG_servo.png|460px|center]]&lt;br /&gt;
&lt;br /&gt;
The photo interrupters are used to monitor wheel rotation. An interrupter was mounted around a disk attached to each differential. In the photos above the rear wheel speed sensor assembly and the front wheel speed sensor assembly are on the left and right, respectively. Notches were cut into the disks so that as they spun the outputs of the interrupters would rise and fall. The SJ One board monitored these signals using its GPIO inputs and counted the rising edges over a set period of time to determine the speed of the axle. Being a rear-drive vehicle, the rear axle rotates faster than the front in a slip condition, and the program responds by reducing throttle.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
&lt;br /&gt;
=== Issue #1 ===&lt;br /&gt;
The first issue that we ran into involved our implementation of the Nordic wireless system. During the early stages of the project, we wrote and tested our features in separate C or C++ programs. Using the provided libraries and functions, we designed transmitting and receiving programs to test the wireless. During testing, the first packet sent without issue, but any following packets took up to 30 seconds to send. This is because the libraries and functions that we were relying on were designed to be used within the structured FreeRTOS environment. Using them without the work that FreeRTOS does in the background causes them to misbehave.&lt;br /&gt;
&lt;br /&gt;
=== Issue #2 ===&lt;br /&gt;
The Motorola MOC7821 photo interrupters that we purchased had very little documentation. We found information about the sensor side of the part, but nothing about the LEDs that make up the infrared emitters. Two of the interrupter's LEDs burnt out before we found the correct dropout voltage and amperage. We recommend that future students obtain access to a variable power supply and test the LEDs by slowly increasing voltage from zero until the dropout voltage is found. &lt;br /&gt;
&lt;br /&gt;
=== Issue #3 ===&lt;br /&gt;
This issue was never resolved. Our initial design goal was to implement the timer's capture system so that the rising edges of the photo interrupters' signals could be counted without consuming CPU cycles. The initialization process seemed straightforward but any time we attempted to modify the lower 4 bits of the Counter Control Register it caused an error that triggered a reboot of the system. After many hours of research and guessing no solution was found so we made our own function that, at the price of many CPU cycles, used the GPIO pins to accomplish the same goal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Any project of this type will encounter roadblocks such as these. These issues, as well as many smaller bugs, were discovered and resolved using frequent testing. Each task was broken down into as small of a block as we could devise a test for. For example, the photo interrupters were tested in four stages. First we tested the sensor side using an infrared television remote. Once we knew the sensor was working we tested the LEDs using an infrared sensitive camera. The whole package was then tested on a bread board, and finally tested again once installed on the model car. &lt;br /&gt;
&lt;br /&gt;
This multi-tiered testing approach was also applied to our software design process. Testing was an integral part of our design and frequent testing helped us to catch bugs sooner and solve them faster by shrinking the amount of code that could be contributing to the problem.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
Though this project was ultimately successful, it was a struggle. Poor planning coupled with an injury from a car accident and an untrustworthy online retailer all pushed the timeline for the project. We were severely behind schedule and were able to successfully complete the project by abandoning the &amp;quot;capture&amp;quot; peripheral and placing the load on the CPU by using the GPIO pins. This project taught a lesson in proper scheduling and planning. &lt;br /&gt;
&lt;br /&gt;
However, that was not the only lesson. In our implementation we were forced to execute, in a best case situation, over 500 lines of code in between each command between the transmitter and the receiver. The delay that the extra code caused in the controlling of the vehicle was barely noticeable, and helped us to see just how blazingly fast modern micro controllers actually are. The thought of a micro controller being slower and &amp;quot;less capable&amp;quot; than a computer is, in most cases, incorrect. &lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_SJSU_S2015/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
http://www.nxp.com/documents/user_manual/UM10360.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.socialledge.com/sjsu/images/d/de/2012SJOneBoardSchematic.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.datasheetspdf.com/PDF/MOC7821/613725/1&lt;br /&gt;
&lt;br /&gt;
http://www.socialledge.com/sjsu/index.php?title=PWM_Motor_Controller_Interface&lt;br /&gt;
&lt;br /&gt;
http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board&lt;br /&gt;
&lt;br /&gt;
http://www.socialledge.com/sjsu/index.php?title=Low_Powered_Mesh_Network_stack&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=S15:_Motion-Controlled_RC_Car&amp;diff=17703</id>
		<title>S15: Motion-Controlled RC Car</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=S15:_Motion-Controlled_RC_Car&amp;diff=17703"/>
				<updated>2015-05-27T03:07:13Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Design &amp;amp; Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Motion-Controlled RC Car ==&lt;br /&gt;
&lt;br /&gt;
[[File:S15_146_G3_IMG_RCcar.jpg|800px|center]]&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
The Motion-Controlled RC Car will allow inexperienced users to drive a high-performance RC vehicle. This is accomplished with a tilt controller, which is more intuitive than a traditional RC transmitter, and a slip-limiting system that will reduce the potential for crashes.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
High performance RC vehicles can be difficult to control because of their immense power and are typically expensive to repair. The goal of this project is to create both a wireless tilt controller and a traction control system for a high-performance RC car. From an engineering standpoint, the project can be broken into three major objectives.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Nordic wireless communication&lt;br /&gt;
&lt;br /&gt;
2. Measurement of front and rear axle speed&lt;br /&gt;
&lt;br /&gt;
3. Pulse-width modulated control of motor and servo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
*  Shangming Wang - Mesh Communication, Report writing, testing &lt;br /&gt;
&lt;br /&gt;
*  Daniel Khawaja - Wheel speed capture, RC car maintenance, PWM&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Start Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| End Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Status&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Completion Date&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 0&lt;br /&gt;
| 4/10&lt;br /&gt;
| 4/24&lt;br /&gt;
| Obtain Hall sensors&lt;br /&gt;
| Not Completed&lt;br /&gt;
| ---&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 4/20&lt;br /&gt;
| 4/27&lt;br /&gt;
| Find PWM parameters, Test mesh communication&lt;br /&gt;
| Completed  &lt;br /&gt;
| PWM: 4/27  Mesh: 5/4&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 4/27&lt;br /&gt;
| 5/4&lt;br /&gt;
| Implement PWM control, Finalize mesh communication, Obtain photo interrupters&lt;br /&gt;
| Completed&lt;br /&gt;
| PWM: 5/4    Mesh: 5/13  Photo: 5/14&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 5/4&lt;br /&gt;
| 5/11&lt;br /&gt;
| Implement motion control, Modify RC for 2wd and mount wheel speed sensors&lt;br /&gt;
| Completed&lt;br /&gt;
| Motion: 5/13     Modification: 5/15&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 5/11&lt;br /&gt;
| 5/18&lt;br /&gt;
| Finish wheel speed capture, Test and polish traction control parameters&lt;br /&gt;
| Completed&lt;br /&gt;
| Capture: 5/23     T.C.: 5/25&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 5/18&lt;br /&gt;
| 5/25&lt;br /&gt;
| Implement extra features&lt;br /&gt;
| Not Completed&lt;br /&gt;
| ---&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! width=&amp;quot;30&amp;quot; align=&amp;quot;center&amp;quot;|Qty&lt;br /&gt;
! width=&amp;quot;350&amp;quot; align=&amp;quot;center&amp;quot;|Description&lt;br /&gt;
! width=&amp;quot;60&amp;quot; align=&amp;quot;center&amp;quot;|Total Cost&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|50||Jumper Wires||align=&amp;quot;right&amp;quot;|$3.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1||Prototype Board||align=&amp;quot;right&amp;quot;|$1.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1||Turnigy 500mAh Battery||align=&amp;quot;right&amp;quot;|$40.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|2||Wireless Antenna||align=&amp;quot;right&amp;quot;|$6.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1||Remote Control Car||align=&amp;quot;right&amp;quot;|$150.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|2||SJOne Board||align=&amp;quot;right&amp;quot;|$160.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|2||Motorola MOC7821 Photo Interrupter||align=&amp;quot;right&amp;quot;|$4.00&lt;br /&gt;
|-&lt;br /&gt;
| ||Total Cost '''||align=&amp;quot;right&amp;quot;|$364'''&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
&lt;br /&gt;
[[File:S15_146_G3_IMG_1.png|400px|center]]&lt;br /&gt;
&lt;br /&gt;
A high-level schematic of the electronics involved in this project&lt;br /&gt;
&lt;br /&gt;
Our hardware design began with connecting the Sj-One board with the servo and motor controller controller that were built into the model car.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interfaces ===&lt;br /&gt;
The Transmitting Module used the following interfaces:&lt;br /&gt;
* I2C Bus&lt;br /&gt;
** Used for reading the orientation value from accelerometer sensor &lt;br /&gt;
*SPI Bus&lt;br /&gt;
** Used for transmit commands from Nordic wireless sensor to receiving board&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Receiving Interface used the following interfaces:&lt;br /&gt;
*SPI Bus&lt;br /&gt;
** Used for receive commands from Nordic wireless sensor from transmitting board&lt;br /&gt;
*GPIO&lt;br /&gt;
** Used to read the axle speed from the front and rear &lt;br /&gt;
** Used to passing PWM signal to the motor and the servo&lt;br /&gt;
&lt;br /&gt;
=== SJOne ===&lt;br /&gt;
[[File:S15_146_G3_IMG_SJOne.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Servo, Motor &amp;amp; Motor Controller ===&lt;br /&gt;
[[File:S15_146_g3_pwmInterfacedElectronics.jpg|460px|center]]&lt;br /&gt;
&lt;br /&gt;
The servo used in this project was a Futaba S3004 and the motor, already built into the model car, was a Leopard Hobby 3300Kv brushless motor. The Castle Sidewinder 3 motor controller and the Futaba servo were both controlled using pulse widths ranging from 1 to 2miliseconds. A width of 1.5 miliseconds was  a 0% signal, 1 milisecond was -100%, and 2 miliseconds  was +100%.  The motor controller included a 5v regulated output, so it was used to power all the electronics on the vehicle.&lt;br /&gt;
&lt;br /&gt;
=== Photo Interrupter ===&lt;br /&gt;
[[File:S15_146_G3_IMG_photoInt.png|200px|center]]&lt;br /&gt;
&lt;br /&gt;
The photo interrupters we chose were the Motorola MOC7821. These devices contain an infrared LED and an infrared-controlled transistor. When the gap between the LED and the sensor is open the transistor turns on and allows current to flow, when an object passes through the space between the LED and the sensor the transistor turns off and behaves like an open circuit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Transmitting Module'''&lt;br /&gt;
&lt;br /&gt;
The transmitter first reads the accelerometer data in both the x and y directions and encodes them in an integer. That integer is sent to the vehicle using the Nordic Wireless system. &lt;br /&gt;
&lt;br /&gt;
 [[File:S15_146_G3_IMG_flowchart_transmit.png|200px|center]]&lt;br /&gt;
&lt;br /&gt;
'''Receiving Module'''&lt;br /&gt;
&lt;br /&gt;
The SJ One board on the vehicle, waiting to receive data, accepts the integer. The vehicle reads the wheel speeds at the front and rear axle.  This is done by reading the signal from the photo interrupters many times in a row and incrementing a counter each time the signal transitions between high and low. One counter holds the number of transitions read from the front axle and the other counter holds the number of transitions at the rear axle and the task determines if the vehicle is in a low traction situation based on the two counter values. The car then translates the encoded command using one of two throttle maps, based on the traction situation, and uses that to set motor speed and servo angle.&lt;br /&gt;
&lt;br /&gt;
 [[File:S15_146_G3_IMG_flowchart_receive.png|500px|center]]&lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
'''Accelerometer'''&lt;br /&gt;
&lt;br /&gt;
The built-in sensor that reads the tilt direction of the SJ One board.&lt;br /&gt;
&lt;br /&gt;
*Step 1: Initialize accelerometer sensor.&lt;br /&gt;
&lt;br /&gt;
*Step 2: Read X and Y axis from the sensor and get the orientation of the board.&lt;br /&gt;
               &lt;br /&gt;
 Read X value:&lt;br /&gt;
 Function                   X-axis Range&lt;br /&gt;
  Forward                 -200 &amp;lt;= x &amp;lt; 200&lt;br /&gt;
  Left                    -500 &amp;lt;= x &amp;lt; -200&lt;br /&gt;
  Right                    200 &amp;lt;= x &amp;lt; 500&lt;br /&gt;
  Hard Left                  x &amp;gt;= 500&lt;br /&gt;
  Hard Right                 x &amp;lt;= -500&lt;br /&gt;
 &lt;br /&gt;
 Read Y value:             &lt;br /&gt;
 Num  Speed                 Y-axis Range                    &lt;br /&gt;
  0    7.5                 -150 &amp;lt;= y &amp;lt; 150&lt;br /&gt;
  1    7.9                  150 &amp;lt;= y &amp;lt; 250&lt;br /&gt;
  2    8.3                  250 &amp;lt;= y &amp;lt; 400&lt;br /&gt;
  3    8.7                  400 &amp;lt;= y &amp;lt; 550&lt;br /&gt;
  4    9.1                  550 &amp;lt;= y &amp;lt; 700&lt;br /&gt;
  5    9.5                  700 &amp;lt;= y &amp;lt; 850&lt;br /&gt;
  6    9.9                    y &amp;gt;= 850&lt;br /&gt;
&lt;br /&gt;
*Step 3: Encode the function and speed number as a single integer and pass them to the wireless task.&lt;br /&gt;
      &lt;br /&gt;
&lt;br /&gt;
'''Nordic Wireless''' (nRF24L01).&lt;br /&gt;
&lt;br /&gt;
The Nordic wireless sensor is built-in on SJOne Board. It used to send and receive data from one SJOne to other. For our project, it is used to send an encoded x and y tilt of the control board to the board on the vehicle. The following steps were taken to implement the Nordic wireless system&lt;br /&gt;
&lt;br /&gt;
*Step 1: Configure the wireless node address and wireless channel number in sys_config.h file. (Make sure both boards have the same channel)&lt;br /&gt;
&lt;br /&gt;
*Step 2: Used mesh_set_node_address() function to set both sending and receiving address. In our project, the car address is set to 300.&lt;br /&gt;
&lt;br /&gt;
*Step 3: On the sending side, it used wireless_send(addr, protocol, data, size of data, max_hops) function to send the data from SJOne board.&lt;br /&gt;
&lt;br /&gt;
*Step 4: On the receiving side, it used wireless_get_rx_pkt() function to catch the data coming from the wireless.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Photo Interrupters''' (MOC7821).&lt;br /&gt;
&lt;br /&gt;
[[File:S15_146_G3_IMG_motor.png|500px|left]]                     [[File:S15_146_G3_IMG_servo.png|460px|center]]&lt;br /&gt;
&lt;br /&gt;
The photo interrupters are used to monitor wheel rotation. An interrupter was mounted around a disk attached to each differential. In the photos above the rear wheel speed sensor assembly and the front wheel speed sensor assembly are on the left and right, respectively. Notches were cut into the disks so that as they spun the outputs of the interrupters would rise and fall. The SJ One board monitored these signals using its GPIO inputs and counted the rising edges over a set period of time to determine the speed of the axle. Being a rear-drive vehicle, the rear axle rotates faster than the front in a slip condition, and the program responds by reducing throttle.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
&lt;br /&gt;
=== Issue #1 ===&lt;br /&gt;
The first issue that we ran into involved our implementation of the Nordic wireless system. During the early stages of the project, we wrote and tested our features in separate C or C++ programs. Using the provided libraries and functions, we designed transmitting and receiving programs to test the wireless. During testing, the first packet sent without issue, but any following packets took up to 30 seconds to send. This is because the libraries and functions that we were relying on were designed to be used within the structured FreeRTOS environment. Using them without the work that FreeRTOS does in the background causes them to misbehave.&lt;br /&gt;
&lt;br /&gt;
=== Issue #2 ===&lt;br /&gt;
The Motorola MOC7821 photo interrupters that we purchased had very little documentation. We found information about the sensor side of the part, but nothing about the LEDs that make up the infrared emitters. Two of the interrupter's LEDs burnt out before we found the correct dropout voltage and amperage. We recommend that future students obtain access to a variable power supply and test the LEDs by slowly increasing voltage from zero until the dropout voltage is found. &lt;br /&gt;
&lt;br /&gt;
=== Issue #3 ===&lt;br /&gt;
This issue was never resolved. Our initial design goal was to implement the timer's capture system so that the rising edges of the photo interrupters' signals could be counted without consuming CPU cycles. The initialization process seemed straightforward but any time we attempted to modify the lower 4 bits of the Counter Control Register it caused an error that triggered a reboot of the system. After many hours of research and guessing no solution was found so we made our own function that, at the price of many CPU cycles, used the GPIO pins to accomplish the same goal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Any project of this type will encounter roadblocks such as these. These issues, as well as many smaller bugs, were discovered and resolved using frequent testing. Each task was broken down into as small of a block as we could devise a test for. For example, the photo interrupters were tested in four stages. First we tested the sensor side using an infrared television remote. Once we knew the sensor was working we tested the LEDs using an infrared sensitive camera. The whole package was then tested on a bread board, and finally tested again once installed on the model car. &lt;br /&gt;
&lt;br /&gt;
This multi-tiered testing approach was also applied to our software design process. Testing was an integral part of our design and frequent testing helped us to catch bugs sooner and solve them faster by shrinking the amount of code that could be contributing to the problem.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
Though this project was ultimately successful, it was a struggle. Poor planning coupled with an injury from a car accident and an untrustworthy online retailer all pushed the timeline for the project. We were severely behind schedule and were able to successfully complete the project by abandoning the &amp;quot;capture&amp;quot; peripheral and placing the load on the CPU by using the GPIO pins. This project taught a lesson in proper scheduling and planning. &lt;br /&gt;
&lt;br /&gt;
However, that was not the only lesson. In our implementation we were forced to execute, in a best case situation, over 500 lines of code in between each command between the transmitter and the receiver. The delay that the extra code caused in the controlling of the vehicle was barely noticeable, and helped us to see just how blazingly fast modern micro controllers actually are. The thought of a micro controller being slower and &amp;quot;less capable&amp;quot; than a computer is, in most cases, incorrect. &lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_SJSU_S2015/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
http://www.nxp.com/documents/user_manual/UM10360.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.socialledge.com/sjsu/images/d/de/2012SJOneBoardSchematic.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.datasheetspdf.com/PDF/MOC7821/613725/1&lt;br /&gt;
&lt;br /&gt;
http://www.socialledge.com/sjsu/index.php?title=PWM_Motor_Controller_Interface&lt;br /&gt;
&lt;br /&gt;
http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board&lt;br /&gt;
&lt;br /&gt;
http://www.socialledge.com/sjsu/index.php?title=Low_Powered_Mesh_Network_stack&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=S15:_Motion-Controlled_RC_Car&amp;diff=17702</id>
		<title>S15: Motion-Controlled RC Car</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=S15:_Motion-Controlled_RC_Car&amp;diff=17702"/>
				<updated>2015-05-27T03:06:38Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: Undo revision 17695 by 146 user3 (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Motion-Controlled RC Car ==&lt;br /&gt;
&lt;br /&gt;
[[File:S15_146_G3_IMG_RCcar.jpg|800px|center]]&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
The Motion-Controlled RC Car will allow inexperienced users to drive a high-performance RC vehicle. This is accomplished with a tilt controller, which is more intuitive than a traditional RC transmitter, and a slip-limiting system that will reduce the potential for crashes.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
High performance RC vehicles can be difficult to control because of their immense power and are typically expensive to repair. The goal of this project is to create both a wireless tilt controller and a traction control system for a high-performance RC car. From an engineering standpoint, the project can be broken into three major objectives.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Nordic wireless communication&lt;br /&gt;
&lt;br /&gt;
2. Measurement of front and rear axle speed&lt;br /&gt;
&lt;br /&gt;
3. Pulse-width modulated control of motor and servo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
*  Shangming Wang - Mesh Communication, Report writing, testing &lt;br /&gt;
&lt;br /&gt;
*  Daniel Khawaja - Wheel speed capture, RC car maintenance, PWM&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Start Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| End Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Status&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Completion Date&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 0&lt;br /&gt;
| 4/10&lt;br /&gt;
| 4/24&lt;br /&gt;
| Obtain Hall sensors&lt;br /&gt;
| Not Completed&lt;br /&gt;
| ---&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 4/20&lt;br /&gt;
| 4/27&lt;br /&gt;
| Find PWM parameters, Test mesh communication&lt;br /&gt;
| Completed  &lt;br /&gt;
| PWM: 4/27  Mesh: 5/4&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 4/27&lt;br /&gt;
| 5/4&lt;br /&gt;
| Implement PWM control, Finalize mesh communication, Obtain photo interrupters&lt;br /&gt;
| Completed&lt;br /&gt;
| PWM: 5/4    Mesh: 5/13  Photo: 5/14&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 5/4&lt;br /&gt;
| 5/11&lt;br /&gt;
| Implement motion control, Modify RC for 2wd and mount wheel speed sensors&lt;br /&gt;
| Completed&lt;br /&gt;
| Motion: 5/13     Modification: 5/15&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 5/11&lt;br /&gt;
| 5/18&lt;br /&gt;
| Finish wheel speed capture, Test and polish traction control parameters&lt;br /&gt;
| Completed&lt;br /&gt;
| Capture: 5/23     T.C.: 5/25&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 5/18&lt;br /&gt;
| 5/25&lt;br /&gt;
| Implement extra features&lt;br /&gt;
| Not Completed&lt;br /&gt;
| ---&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! width=&amp;quot;30&amp;quot; align=&amp;quot;center&amp;quot;|Qty&lt;br /&gt;
! width=&amp;quot;350&amp;quot; align=&amp;quot;center&amp;quot;|Description&lt;br /&gt;
! width=&amp;quot;60&amp;quot; align=&amp;quot;center&amp;quot;|Total Cost&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|50||Jumper Wires||align=&amp;quot;right&amp;quot;|$3.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1||Prototype Board||align=&amp;quot;right&amp;quot;|$1.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1||Turnigy 500mAh Battery||align=&amp;quot;right&amp;quot;|$40.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|2||Wireless Antenna||align=&amp;quot;right&amp;quot;|$6.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1||Remote Control Car||align=&amp;quot;right&amp;quot;|$150.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|2||SJOne Board||align=&amp;quot;right&amp;quot;|$160.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|2||Motorola MOC7821 Photo Interrupter||align=&amp;quot;right&amp;quot;|$4.00&lt;br /&gt;
|-&lt;br /&gt;
| ||Total Cost '''||align=&amp;quot;right&amp;quot;|$364'''&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
&lt;br /&gt;
[[File:S15_146_G3_IMG_1.png|400px|center]]&lt;br /&gt;
&lt;br /&gt;
A high-level schematic of the electronics involved in this project&lt;br /&gt;
&lt;br /&gt;
Our hardware design began with connecting the Sj-One board with the servo and motor controller controller that were built into the model car.&lt;br /&gt;
&lt;br /&gt;
=== SJOne ===&lt;br /&gt;
[[File:S15_146_G3_IMG_SJOne.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Servo, Motor &amp;amp; Motor Controller ===&lt;br /&gt;
[[File:S15_146_g3_pwmInterfacedElectronics.jpg|460px|center]]&lt;br /&gt;
&lt;br /&gt;
The servo used in this project was a Futaba S3004 and the motor, already built into the model car, was a Leopard Hobby 3300Kv brushless motor. The Castle Sidewinder 3 motor controller and the Futaba servo were both controlled using pulse widths ranging from 1 to 2miliseconds. A width of 1.5 miliseconds was  a 0% signal, 1 milisecond was -100%, and 2 miliseconds  was +100%.  The motor controller included a 5v regulated output, so it was used to power all the electronics on the vehicle.&lt;br /&gt;
&lt;br /&gt;
=== Photo Interrupter ===&lt;br /&gt;
[[File:S15_146_G3_IMG_photoInt.png|200px|center]]&lt;br /&gt;
&lt;br /&gt;
The photo interrupters we chose were the Motorola MOC7821. These devices contain an infrared LED and an infrared-controlled transistor. When the gap between the LED and the sensor is open the transistor turns on and allows current to flow, when an object passes through the space between the LED and the sensor the transistor turns off and behaves like an open circuit.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
The Transmitting Module used the following interfaces:&lt;br /&gt;
* I2C Bus&lt;br /&gt;
** Used for reading the orientation value from accelerometer sensor &lt;br /&gt;
*SPI Bus&lt;br /&gt;
** Used for transmit commands from Nordic wireless sensor to receiving board&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Receiving Interface used the following interfaces:&lt;br /&gt;
*SPI Bus&lt;br /&gt;
** Used for receive commands from Nordic wireless sensor from transmitting board&lt;br /&gt;
*GPIO&lt;br /&gt;
** Used to read the axle speed from the front and rear &lt;br /&gt;
** Used to passing PWM signal to the motor and the servo&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Transmitting Module'''&lt;br /&gt;
&lt;br /&gt;
The transmitter first reads the accelerometer data in both the x and y directions and encodes them in an integer. That integer is sent to the vehicle using the Nordic Wireless system. &lt;br /&gt;
&lt;br /&gt;
 [[File:S15_146_G3_IMG_flowchart_transmit.png|200px|center]]&lt;br /&gt;
&lt;br /&gt;
'''Receiving Module'''&lt;br /&gt;
&lt;br /&gt;
The SJ One board on the vehicle, waiting to receive data, accepts the integer. The vehicle reads the wheel speeds at the front and rear axle.  This is done by reading the signal from the photo interrupters many times in a row and incrementing a counter each time the signal transitions between high and low. One counter holds the number of transitions read from the front axle and the other counter holds the number of transitions at the rear axle and the task determines if the vehicle is in a low traction situation based on the two counter values. The car then translates the encoded command using one of two throttle maps, based on the traction situation, and uses that to set motor speed and servo angle.&lt;br /&gt;
&lt;br /&gt;
 [[File:S15_146_G3_IMG_flowchart_receive.png|500px|center]]&lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
'''Accelerometer'''&lt;br /&gt;
&lt;br /&gt;
The built-in sensor that reads the tilt direction of the SJ One board.&lt;br /&gt;
&lt;br /&gt;
*Step 1: Initialize accelerometer sensor.&lt;br /&gt;
&lt;br /&gt;
*Step 2: Read X and Y axis from the sensor and get the orientation of the board.&lt;br /&gt;
               &lt;br /&gt;
 Read X value:&lt;br /&gt;
 Function                   X-axis Range&lt;br /&gt;
  Forward                 -200 &amp;lt;= x &amp;lt; 200&lt;br /&gt;
  Left                    -500 &amp;lt;= x &amp;lt; -200&lt;br /&gt;
  Right                    200 &amp;lt;= x &amp;lt; 500&lt;br /&gt;
  Hard Left                  x &amp;gt;= 500&lt;br /&gt;
  Hard Right                 x &amp;lt;= -500&lt;br /&gt;
 &lt;br /&gt;
 Read Y value:             &lt;br /&gt;
 Num  Speed                 Y-axis Range                    &lt;br /&gt;
  0    7.5                 -150 &amp;lt;= y &amp;lt; 150&lt;br /&gt;
  1    7.9                  150 &amp;lt;= y &amp;lt; 250&lt;br /&gt;
  2    8.3                  250 &amp;lt;= y &amp;lt; 400&lt;br /&gt;
  3    8.7                  400 &amp;lt;= y &amp;lt; 550&lt;br /&gt;
  4    9.1                  550 &amp;lt;= y &amp;lt; 700&lt;br /&gt;
  5    9.5                  700 &amp;lt;= y &amp;lt; 850&lt;br /&gt;
  6    9.9                    y &amp;gt;= 850&lt;br /&gt;
&lt;br /&gt;
*Step 3: Encode the function and speed number as a single integer and pass them to the wireless task.&lt;br /&gt;
      &lt;br /&gt;
&lt;br /&gt;
'''Nordic Wireless''' (nRF24L01).&lt;br /&gt;
&lt;br /&gt;
The Nordic wireless sensor is built-in on SJOne Board. It used to send and receive data from one SJOne to other. For our project, it is used to send an encoded x and y tilt of the control board to the board on the vehicle. The following steps were taken to implement the Nordic wireless system&lt;br /&gt;
&lt;br /&gt;
*Step 1: Configure the wireless node address and wireless channel number in sys_config.h file. (Make sure both boards have the same channel)&lt;br /&gt;
&lt;br /&gt;
*Step 2: Used mesh_set_node_address() function to set both sending and receiving address. In our project, the car address is set to 300.&lt;br /&gt;
&lt;br /&gt;
*Step 3: On the sending side, it used wireless_send(addr, protocol, data, size of data, max_hops) function to send the data from SJOne board.&lt;br /&gt;
&lt;br /&gt;
*Step 4: On the receiving side, it used wireless_get_rx_pkt() function to catch the data coming from the wireless.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Photo Interrupters''' (MOC7821).&lt;br /&gt;
&lt;br /&gt;
[[File:S15_146_G3_IMG_motor.png|500px|left]]                     [[File:S15_146_G3_IMG_servo.png|460px|center]]&lt;br /&gt;
&lt;br /&gt;
The photo interrupters are used to monitor wheel rotation. An interrupter was mounted around a disk attached to each differential. In the photos above the rear wheel speed sensor assembly and the front wheel speed sensor assembly are on the left and right, respectively. Notches were cut into the disks so that as they spun the outputs of the interrupters would rise and fall. The SJ One board monitored these signals using its GPIO inputs and counted the rising edges over a set period of time to determine the speed of the axle. Being a rear-drive vehicle, the rear axle rotates faster than the front in a slip condition, and the program responds by reducing throttle.&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
&lt;br /&gt;
=== Issue #1 ===&lt;br /&gt;
The first issue that we ran into involved our implementation of the Nordic wireless system. During the early stages of the project, we wrote and tested our features in separate C or C++ programs. Using the provided libraries and functions, we designed transmitting and receiving programs to test the wireless. During testing, the first packet sent without issue, but any following packets took up to 30 seconds to send. This is because the libraries and functions that we were relying on were designed to be used within the structured FreeRTOS environment. Using them without the work that FreeRTOS does in the background causes them to misbehave.&lt;br /&gt;
&lt;br /&gt;
=== Issue #2 ===&lt;br /&gt;
The Motorola MOC7821 photo interrupters that we purchased had very little documentation. We found information about the sensor side of the part, but nothing about the LEDs that make up the infrared emitters. Two of the interrupter's LEDs burnt out before we found the correct dropout voltage and amperage. We recommend that future students obtain access to a variable power supply and test the LEDs by slowly increasing voltage from zero until the dropout voltage is found. &lt;br /&gt;
&lt;br /&gt;
=== Issue #3 ===&lt;br /&gt;
This issue was never resolved. Our initial design goal was to implement the timer's capture system so that the rising edges of the photo interrupters' signals could be counted without consuming CPU cycles. The initialization process seemed straightforward but any time we attempted to modify the lower 4 bits of the Counter Control Register it caused an error that triggered a reboot of the system. After many hours of research and guessing no solution was found so we made our own function that, at the price of many CPU cycles, used the GPIO pins to accomplish the same goal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Any project of this type will encounter roadblocks such as these. These issues, as well as many smaller bugs, were discovered and resolved using frequent testing. Each task was broken down into as small of a block as we could devise a test for. For example, the photo interrupters were tested in four stages. First we tested the sensor side using an infrared television remote. Once we knew the sensor was working we tested the LEDs using an infrared sensitive camera. The whole package was then tested on a bread board, and finally tested again once installed on the model car. &lt;br /&gt;
&lt;br /&gt;
This multi-tiered testing approach was also applied to our software design process. Testing was an integral part of our design and frequent testing helped us to catch bugs sooner and solve them faster by shrinking the amount of code that could be contributing to the problem.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
Though this project was ultimately successful, it was a struggle. Poor planning coupled with an injury from a car accident and an untrustworthy online retailer all pushed the timeline for the project. We were severely behind schedule and were able to successfully complete the project by abandoning the &amp;quot;capture&amp;quot; peripheral and placing the load on the CPU by using the GPIO pins. This project taught a lesson in proper scheduling and planning. &lt;br /&gt;
&lt;br /&gt;
However, that was not the only lesson. In our implementation we were forced to execute, in a best case situation, over 500 lines of code in between each command between the transmitter and the receiver. The delay that the extra code caused in the controlling of the vehicle was barely noticeable, and helped us to see just how blazingly fast modern micro controllers actually are. The thought of a micro controller being slower and &amp;quot;less capable&amp;quot; than a computer is, in most cases, incorrect. &lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_SJSU_S2015/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
http://www.nxp.com/documents/user_manual/UM10360.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.socialledge.com/sjsu/images/d/de/2012SJOneBoardSchematic.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.datasheetspdf.com/PDF/MOC7821/613725/1&lt;br /&gt;
&lt;br /&gt;
http://www.socialledge.com/sjsu/index.php?title=PWM_Motor_Controller_Interface&lt;br /&gt;
&lt;br /&gt;
http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board&lt;br /&gt;
&lt;br /&gt;
http://www.socialledge.com/sjsu/index.php?title=Low_Powered_Mesh_Network_stack&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	<entry>
		<id>http://socialledge.com/sjsu/index.php?title=S15:_Motion-Controlled_RC_Car&amp;diff=17697</id>
		<title>S15: Motion-Controlled RC Car</title>
		<link rel="alternate" type="text/html" href="http://socialledge.com/sjsu/index.php?title=S15:_Motion-Controlled_RC_Car&amp;diff=17697"/>
				<updated>2015-05-27T03:02:24Z</updated>
		
		<summary type="html">&lt;p&gt;146 user3: /* Software Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Motion-Controlled RC Car ==&lt;br /&gt;
&lt;br /&gt;
[[File:S15_146_G3_IMG_RCcar.jpg|800px|center]]&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
The Motion-Controlled RC Car will allow inexperienced users to drive a high-performance RC vehicle. This is accomplished with a tilt controller, which is more intuitive than a traditional RC transmitter, and a slip-limiting system that will reduce the potential for crashes.&lt;br /&gt;
&lt;br /&gt;
== Objectives &amp;amp; Introduction ==&lt;br /&gt;
High performance RC vehicles can be difficult to control because of their immense power and are typically expensive to repair. The goal of this project is to create both a wireless tilt controller and a traction control system for a high-performance RC car. From an engineering standpoint, the project can be broken into three major objectives.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Nordic wireless communication&lt;br /&gt;
&lt;br /&gt;
2. Measurement of front and rear axle speed&lt;br /&gt;
&lt;br /&gt;
3. Pulse-width modulated control of motor and servo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Team Members &amp;amp; Responsibilities ===&lt;br /&gt;
&lt;br /&gt;
*  Shangming Wang - Mesh Communication, Report writing, testing &lt;br /&gt;
&lt;br /&gt;
*  Daniel Khawaja - Wheel speed capture, RC car maintenance, PWM&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Week#&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Start Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| End Date&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Task&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Status&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;| Completion Date&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 0&lt;br /&gt;
| 4/10&lt;br /&gt;
| 4/24&lt;br /&gt;
| Obtain Hall sensors&lt;br /&gt;
| Not Completed&lt;br /&gt;
| ---&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 1&lt;br /&gt;
| 4/20&lt;br /&gt;
| 4/27&lt;br /&gt;
| Find PWM parameters, Test mesh communication&lt;br /&gt;
| Completed  &lt;br /&gt;
| PWM: 4/27  Mesh: 5/4&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 2&lt;br /&gt;
| 4/27&lt;br /&gt;
| 5/4&lt;br /&gt;
| Implement PWM control, Finalize mesh communication, Obtain photo interrupters&lt;br /&gt;
| Completed&lt;br /&gt;
| PWM: 5/4    Mesh: 5/13  Photo: 5/14&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 3&lt;br /&gt;
| 5/4&lt;br /&gt;
| 5/11&lt;br /&gt;
| Implement motion control, Modify RC for 2wd and mount wheel speed sensors&lt;br /&gt;
| Completed&lt;br /&gt;
| Motion: 5/13     Modification: 5/15&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 4&lt;br /&gt;
| 5/11&lt;br /&gt;
| 5/18&lt;br /&gt;
| Finish wheel speed capture, Test and polish traction control parameters&lt;br /&gt;
| Completed&lt;br /&gt;
| Capture: 5/23     T.C.: 5/25&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot;| 5&lt;br /&gt;
| 5/18&lt;br /&gt;
| 5/25&lt;br /&gt;
| Implement extra features&lt;br /&gt;
| Not Completed&lt;br /&gt;
| ---&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Parts List &amp;amp; Cost ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! width=&amp;quot;30&amp;quot; align=&amp;quot;center&amp;quot;|Qty&lt;br /&gt;
! width=&amp;quot;350&amp;quot; align=&amp;quot;center&amp;quot;|Description&lt;br /&gt;
! width=&amp;quot;60&amp;quot; align=&amp;quot;center&amp;quot;|Total Cost&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|50||Jumper Wires||align=&amp;quot;right&amp;quot;|$3.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1||Prototype Board||align=&amp;quot;right&amp;quot;|$1.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1||Turnigy 500mAh Battery||align=&amp;quot;right&amp;quot;|$40.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|2||Wireless Antenna||align=&amp;quot;right&amp;quot;|$6.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|1||Remote Control Car||align=&amp;quot;right&amp;quot;|$150.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|2||SJOne Board||align=&amp;quot;right&amp;quot;|$160.00&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|2||Motorola MOC7821 Photo Interrupter||align=&amp;quot;right&amp;quot;|$4.00&lt;br /&gt;
|-&lt;br /&gt;
| ||Total Cost '''||align=&amp;quot;right&amp;quot;|$364'''&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design &amp;amp; Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware Design ===&lt;br /&gt;
&lt;br /&gt;
[[File:S15_146_G3_IMG_1.png|400px|center]]&lt;br /&gt;
&lt;br /&gt;
A high-level schematic of the electronics involved in this project&lt;br /&gt;
&lt;br /&gt;
Our hardware design began with connecting the Sj-One board with the servo and motor controller controller that were built into the model car.&lt;br /&gt;
&lt;br /&gt;
=== SJOne ===&lt;br /&gt;
[[File:S15_146_G3_IMG_SJOne.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Servo, Motor &amp;amp; Motor Controller ===&lt;br /&gt;
[[File:S15_146_g3_pwmInterfacedElectronics.jpg|460px|center]]&lt;br /&gt;
&lt;br /&gt;
The servo used in this project was a Futaba S3004 and the motor, already built into the model car, was a Leopard Hobby 3300Kv brushless motor. The Castle Sidewinder 3 motor controller and the Futaba servo were both controlled using pulse widths ranging from 1 to 2miliseconds. A width of 1.5 miliseconds was  a 0% signal, 1 milisecond was -100%, and 2 miliseconds  was +100%.  The motor controller included a 5v regulated output, so it was used to power all the electronics on the vehicle.&lt;br /&gt;
&lt;br /&gt;
=== Photo Interrupter ===&lt;br /&gt;
[[File:S15_146_G3_IMG_photoInt.png|200px|center]]&lt;br /&gt;
&lt;br /&gt;
The photo interrupters we chose were the Motorola MOC7821. These devices contain an infrared LED and an infrared-controlled transistor. When the gap between the LED and the sensor is open the transistor turns on and allows current to flow, when an object passes through the space between the LED and the sensor the transistor turns off and behaves like an open circuit.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Interface ===&lt;br /&gt;
The Transmitting Module used the following interfaces:&lt;br /&gt;
* I2C Bus&lt;br /&gt;
** Used for reading the orientation value from accelerometer sensor &lt;br /&gt;
*SPI Bus&lt;br /&gt;
** Used for transmit commands from Nordic wireless sensor to receiving board&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Receiving Interface used the following interfaces:&lt;br /&gt;
*SPI Bus&lt;br /&gt;
** Used for receive commands from Nordic wireless sensor from transmitting board&lt;br /&gt;
*GPIO&lt;br /&gt;
** Used to read the axle speed from the front and rear &lt;br /&gt;
** Used to passing PWM signal to the motor and the servo&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Transmitting Module'''&lt;br /&gt;
&lt;br /&gt;
The transmitter first reads the accelerometer data in both the x and y directions and encodes them in an integer. That integer is sent to the vehicle using the Nordic Wireless system. &lt;br /&gt;
&lt;br /&gt;
 [[File:S15_146_G3_IMG_flowchart_transmit.png|200px|center]]&lt;br /&gt;
&lt;br /&gt;
'''Receiving Module'''&lt;br /&gt;
&lt;br /&gt;
The SJ One board on the vehicle, waiting to receive data, accepts the integer. The vehicle reads the wheel speeds at the front and rear axle.  This is done by reading the signal from the photo interrupters many times in a row and incrementing a counter each time the signal transitions between high and low. One counter holds the number of transitions read from the front axle and the other counter holds the number of transitions at the rear axle and the task determines if the vehicle is in a low traction situation based on the two counter values. The car then translates the encoded command using one of two throttle maps, based on the traction situation, and uses that to set motor speed and servo angle.&lt;br /&gt;
&lt;br /&gt;
 [[File:S15_146_G3_IMG_flowchart_receive.png|500px|center]]&lt;br /&gt;
&lt;br /&gt;
=== Software Design ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Transmitting Module'''&lt;br /&gt;
&lt;br /&gt;
The transmitter first reads the accelerometer data in both the x and y directions and encodes them in an integer. That integer is sent to the vehicle using the Nordic Wireless system. &lt;br /&gt;
&lt;br /&gt;
 [[File:S15_146_G3_IMG_flowchart_transmit.png|200px|center]]&lt;br /&gt;
&lt;br /&gt;
'''Receiving Module'''&lt;br /&gt;
&lt;br /&gt;
The SJ One board on the vehicle, waiting to receive data, accepts the integer. The vehicle reads the wheel speeds at the front and rear axle.  This is done by reading the signal from the photo interrupters many times in a row and incrementing a counter each time the signal transitions between high and low. One counter holds the number of transitions read from the front axle and the other counter holds the number of transitions at the rear axle and the task determines if the vehicle is in a low traction situation based on the two counter values. The car then translates the encoded command using one of two throttle maps, based on the traction situation, and uses that to set motor speed and servo angle.&lt;br /&gt;
&lt;br /&gt;
 [[File:S15_146_G3_IMG_flowchart_receive.png|500px|center]]&lt;br /&gt;
&lt;br /&gt;
== Testing &amp;amp; Technical Challenges ==&lt;br /&gt;
&lt;br /&gt;
=== Issue #1 ===&lt;br /&gt;
The first issue that we ran into involved our implementation of the Nordic wireless system. During the early stages of the project, we wrote and tested our features in separate C or C++ programs. Using the provided libraries and functions, we designed transmitting and receiving programs to test the wireless. During testing, the first packet sent without issue, but any following packets took up to 30 seconds to send. This is because the libraries and functions that we were relying on were designed to be used within the structured FreeRTOS environment. Using them without the work that FreeRTOS does in the background causes them to misbehave.&lt;br /&gt;
&lt;br /&gt;
=== Issue #2 ===&lt;br /&gt;
The Motorola MOC7821 photo interrupters that we purchased had very little documentation. We found information about the sensor side of the part, but nothing about the LEDs that make up the infrared emitters. Two of the interrupter's LEDs burnt out before we found the correct dropout voltage and amperage. We recommend that future students obtain access to a variable power supply and test the LEDs by slowly increasing voltage from zero until the dropout voltage is found. &lt;br /&gt;
&lt;br /&gt;
=== Issue #3 ===&lt;br /&gt;
This issue was never resolved. Our initial design goal was to implement the timer's capture system so that the rising edges of the photo interrupters' signals could be counted without consuming CPU cycles. The initialization process seemed straightforward but any time we attempted to modify the lower 4 bits of the Counter Control Register it caused an error that triggered a reboot of the system. After many hours of research and guessing no solution was found so we made our own function that, at the price of many CPU cycles, used the GPIO pins to accomplish the same goal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Any project of this type will encounter roadblocks such as these. These issues, as well as many smaller bugs, were discovered and resolved using frequent testing. Each task was broken down into as small of a block as we could devise a test for. For example, the photo interrupters were tested in four stages. First we tested the sensor side using an infrared television remote. Once we knew the sensor was working we tested the LEDs using an infrared sensitive camera. The whole package was then tested on a bread board, and finally tested again once installed on the model car. &lt;br /&gt;
&lt;br /&gt;
This multi-tiered testing approach was also applied to our software design process. Testing was an integral part of our design and frequent testing helped us to catch bugs sooner and solve them faster by shrinking the amount of code that could be contributing to the problem.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
Though this project was ultimately successful, it was a struggle. Poor planning coupled with an injury from a car accident and an untrustworthy online retailer all pushed the timeline for the project. We were severely behind schedule and were able to successfully complete the project by abandoning the &amp;quot;capture&amp;quot; peripheral and placing the load on the CPU by using the GPIO pins. This project taught a lesson in proper scheduling and planning. &lt;br /&gt;
&lt;br /&gt;
However, that was not the only lesson. In our implementation we were forced to execute, in a best case situation, over 500 lines of code in between each command between the transmitter and the receiver. The delay that the extra code caused in the controlling of the vehicle was barely noticeable, and helped us to see just how blazingly fast modern micro controllers actually are. The thought of a micro controller being slower and &amp;quot;less capable&amp;quot; than a computer is, in most cases, incorrect. &lt;br /&gt;
&lt;br /&gt;
=== Project Video ===&lt;br /&gt;
Upload a video of your project and post the link here.&lt;br /&gt;
&lt;br /&gt;
=== Project Source Code ===&lt;br /&gt;
*  [https://sourceforge.net/projects/sjsu/files/CmpE_SJSU_S2015/ Sourceforge Source Code Link]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
Any acknowledgement that you may wish to provide can be included here.&lt;br /&gt;
&lt;br /&gt;
=== References Used ===&lt;br /&gt;
http://www.nxp.com/documents/user_manual/UM10360.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.socialledge.com/sjsu/images/d/de/2012SJOneBoardSchematic.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.datasheetspdf.com/PDF/MOC7821/613725/1&lt;br /&gt;
&lt;br /&gt;
http://www.socialledge.com/sjsu/index.php?title=PWM_Motor_Controller_Interface&lt;br /&gt;
&lt;br /&gt;
http://www.socialledge.com/sjsu/index.php?title=SJ_One_Board&lt;br /&gt;
&lt;br /&gt;
http://www.socialledge.com/sjsu/index.php?title=Low_Powered_Mesh_Network_stack&lt;/div&gt;</summary>
		<author><name>146 user3</name></author>	</entry>

	</feed>