<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://elinux.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://elinux.org/api.php?action=feedcontributions&amp;user=Caogecym&amp;feedformat=atom</id>
		<title>eLinux.org - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://elinux.org/api.php?action=feedcontributions&amp;user=Caogecym&amp;feedformat=atom"/>
		<link rel="alternate" type="text/html" href="http://elinux.org/Special:Contributions/Caogecym"/>
		<updated>2013-05-23T02:10:31Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.21alpha</generator>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Node.js_Weather_Station</id>
		<title>ECE497 Project: Node.js Weather Station</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Node.js_Weather_Station"/>
				<updated>2012-02-19T02:42:39Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: /* Executive Summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Caogecym | Yuming Cao]], [[user:Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
Our project aims to implement the emerging nodejs technique (the server side javascript) as a lightweight web server on the beagleboard and accomplish a series of remote monitoring and control of hardware pins like gpio/led/i2c on the beagleboard. We also tried to make our web server send automatic email when temperature goes too high. There are a lot of things we can do on the nodejs web server, but we try to make it related to our beagleboard hardware interface. &lt;br /&gt;
&lt;br /&gt;
The automatic email sender is not working correctly. More work needs to be done to set a proper configuration to the SMTP server 'postfix'.&lt;br /&gt;
&lt;br /&gt;
End with a two sentence conclusion.&lt;br /&gt;
&lt;br /&gt;
The sentence count is approximate and only to give an idea of the expected length.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
1. Here's our [https://github.com/ github] path that includes everything useful to our project: [https://github.com/caoy1/Project https://github.com/caoy1/Project].  &lt;br /&gt;
&lt;br /&gt;
2. Additional packages installed via '''opkg''':&lt;br /&gt;
&lt;br /&gt;
* install nodejs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install nodejs&lt;br /&gt;
opkg install nodejs-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install node package manager&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl http://npmjs.org/install.sh | sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install socket.io module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install socket.io&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install binary module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install binary&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install mailer module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install mailer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install SMTP server postfix&lt;br /&gt;
Go to [http://postfix.energybeam.com/source/index.html] download the source of postfix, then unzip the .gz file, then run 'make', then run &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sh postfix-install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Here's the guideline to install Cloud9 easily: [https://github.com/jadonk/cloud9/blob/master/README.md]&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
Once everything is installed, how do you use the program?  Give details here, so if you have a long user manual, link to it here.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
To build a web server, we need, in essence, both client side and server side scripts. Client side scripts mainly just involve ordinary javascripts that can be embedded in HTML file; while at the server-side, we adopt the emerging node.js, which is a really simple server side script that accomplishes equivalent tasks like ASP, PHP will do, but with even simpler implementation details.&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
1. We've already successfully using JavaScript read and write data to the linux gpio file.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/leds/beagleboard::usr0/trigger&amp;quot;, &amp;quot;heartbeat&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/gpio/export&amp;quot;, &amp;quot;&amp;quot;+5);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Even though we can access to the gpio in the above way, we still need to find someway to access the I2C information. In the I2C exercises, from the C code provided in exercise 5, we can think of the following two options:&lt;br /&gt;
&lt;br /&gt;
a) To translate tons of the C codes into JavaScript...including rewriting the union structures like i2c_smbus_write_byte() and i2c_smbus_read_byte(), which requires far more knowledge in understanding how to translate the underlying hardware detail into upper-level script languages...&lt;br /&gt;
&lt;br /&gt;
b) Try to run the ./myi2c excutable file directly inside nodjs script...&lt;br /&gt;
&lt;br /&gt;
* It seems that the second way is easier... We've already found a ActiveXObject.run method... We're working on this... turns out this does not work for some reason.&lt;br /&gt;
&lt;br /&gt;
* At last we successfully excute the ./myi2c file inside our javascript using the following code, the big idea is create another child process to handle it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var exec  = require('child_process').exec,&lt;br /&gt;
    child;&lt;br /&gt;
child = exec('./myi2c',&lt;br /&gt;
  function (error, stdout, stderr) {&lt;br /&gt;
    console.log('stdout:', stdout);&lt;br /&gt;
    console.log('stderr:', stderr);&lt;br /&gt;
    if (error !== null) {&lt;br /&gt;
      console.log('exec error:', error);&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the terminal will show the temperature. &lt;br /&gt;
&lt;br /&gt;
3. Now we are going to working on how to show this temperature information on the website so that we can visit it from any place!!!&lt;br /&gt;
&lt;br /&gt;
* I've successfully done it!!! The pics are already uploaded to the github. Check the following code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var fs = require(&amp;quot;fs&amp;quot;);&lt;br /&gt;
var http = require(&amp;quot;http&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
try {&lt;br /&gt;
	http.createServer(function(request, response) {&lt;br /&gt;
&lt;br /&gt;
		response.writeHead(200, {&amp;quot;Content-Type&amp;quot;: &amp;quot;text/plain&amp;quot;});&lt;br /&gt;
		var exec = require('child_process').exec, child;&lt;br /&gt;
		child = exec('./myi2c',&lt;br /&gt;
	    		function (error, stdout, stderr) {&lt;br /&gt;
				response.write(stdout);&lt;br /&gt;
				console.log('stdout:', stdout);&lt;br /&gt;
				console.log('stderr:', stderr);&lt;br /&gt;
				response.end();&lt;br /&gt;
				if(error != null) {&lt;br /&gt;
					console.log('exec error:', error);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		);&lt;br /&gt;
	}).listen(8888);&lt;br /&gt;
} catch(ex3) {&lt;br /&gt;
	console.log(&amp;quot;sb&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. The next thing we will do is to refresh the website every other time...&lt;br /&gt;
&lt;br /&gt;
* We are now able to load html file inside nodejs scripts so that we can put normal HTML stuff inside the web page and load it from server scripts. The following code snippet can accomplish this (borrowed and modified based on Jadon's code):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function loadHTMLFile(uri, res, temp) {&lt;br /&gt;
 var filename = path.join(process.cwd(), uri);&lt;br /&gt;
 path.exists(&lt;br /&gt;
  filename,&lt;br /&gt;
  function(exists) {&lt;br /&gt;
   if(!exists) {&lt;br /&gt;
    res.writeHead(404, {&amp;quot;Content-Type&amp;quot;: &amp;quot;text/plain&amp;quot;});&lt;br /&gt;
    res.write(&amp;quot;404 Not Found\n&amp;quot;);&lt;br /&gt;
    res.end();&lt;br /&gt;
    return;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   fs.readFile(&lt;br /&gt;
    filename,&lt;br /&gt;
    encoding='utf8',&lt;br /&gt;
    function(err, file) {&lt;br /&gt;
     if(err) {&lt;br /&gt;
      res.writeHead(500, {&amp;quot;Content-Type&amp;quot;: &amp;quot;text/plain&amp;quot;});&lt;br /&gt;
      res.write(err + &amp;quot;\n&amp;quot;);&lt;br /&gt;
      res.end();&lt;br /&gt;
      return;&lt;br /&gt;
     }&lt;br /&gt;
     res.writeHead(200, {&amp;quot;Content-Type&amp;quot;: &amp;quot;text/html&amp;quot;});&lt;br /&gt;
     var str = (&amp;quot;&amp;quot; + file).replace(&amp;quot;&amp;lt;!--%OUTPUT%--&amp;gt;&amp;quot;, temp);&lt;br /&gt;
     res.write(str);&lt;br /&gt;
     res.end();&lt;br /&gt;
    }&lt;br /&gt;
   );&lt;br /&gt;
  }&lt;br /&gt;
 );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
And outside the above function, the main routine, we have similar code as listed in 3, but insert the function call:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
child = exec('./myi2c',&lt;br /&gt;
	    		function (error, stdout, stderr) {&lt;br /&gt;
				console.log('stdout:', stdout);&lt;br /&gt;
				console.log('stderr:', stderr);&lt;br /&gt;
				loadHTMLFile('/index.html', response, stdout);&lt;br /&gt;
				if(error != null) {&lt;br /&gt;
					console.log('exec error:', error);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Now we can update the temperature information on the website, both triggered by a button on the page, and by just automatically refreshing the temperature value whenever the temperature changes. Here is the simple client script for accomplishing this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;script language=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
setInterval(&amp;quot;document.forms[0].submit()&amp;quot;,5000);&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Welcome to the world of Node.js&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Here is the demo of the weather station.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Current temperature:&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;temperature output&amp;quot;&amp;gt;&amp;lt;!--%OUTPUT%--&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;form action = &amp;quot;/test.js&amp;quot; method=&amp;quot;post&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;get temperature&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Now we are trying to do something fancy! We want to send the user an automatic warning email when the temperature is too high. Here's the Javascript code using node.js mailer module. This code use SMTP server to send email to the destination.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var email = require('mailer');&lt;br /&gt;
&lt;br /&gt;
email.SMTP = {&lt;br /&gt;
    host: 'smtp.gmail.com',&lt;br /&gt;
    port: 587,&lt;br /&gt;
    ssl: false,&lt;br /&gt;
    use_authentication: false,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
email.send({&lt;br /&gt;
    to : &amp;quot;caoy1@rose-hulman.edu&amp;quot;,&lt;br /&gt;
    from : &amp;quot;obama@whitehouse.gov&amp;quot;,&lt;br /&gt;
    subject : &amp;quot;I love beagleboard!&amp;quot;,&lt;br /&gt;
    body: &amp;quot;Hello beagle world.&amp;quot;,&lt;br /&gt;
}, &lt;br /&gt;
&lt;br /&gt;
function(err, result) {&lt;br /&gt;
    if(err) {&lt;br /&gt;
	console.log(err);&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* However, the configuration on our beagle has some problem. The server has no response to mailer's request. We've tried telnet localhost 587, and connection can be connected. This means the 587 port is already opened. Then I tried the same code under my ubuntu system, it turns out everything works fine, the caoy1@rose-hulman.edu can receive the e-mail, except some client-side warning error when running the mail.js file. I think the reason it works on ubuntu is because when installing postfix, there's an automatic configuration step, which doesn't exist on our beagle installation. So there must be some problem with the postfix configuration of beagleboard. I've tried to copy all the configuration files under /etc/postfix to our beagleboard, but there's just the same problem. If I have more time, or someone else who's interested in continuing this project, I suggest you have some research on the configuration thing. Everytime you make some config changes, just run&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
postfix reload&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to apply the change.&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Node.js_Weather_Station</id>
		<title>ECE497 Project: Node.js Weather Station</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Node.js_Weather_Station"/>
				<updated>2012-02-19T02:34:53Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: /* Work Breakdown */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Caogecym | Yuming Cao]], [[user:Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
Our project aims to implement the emerging nodejs technique (the server side javascript) as a lightweight web server on the beagleboard and accomplish a series of remote monitoring and control of hardware pins like gpio/led/i2c on the beagleboard. There are a lot of things we can do on the nodejs web server, but we try to make it related to our beagleboard hardware interface. &lt;br /&gt;
&lt;br /&gt;
The automatic email sender is not working correctly. More work needs to be done to set a proper configuration to the SMTP server 'postfix'.&lt;br /&gt;
&lt;br /&gt;
End with a two sentence conclusion.&lt;br /&gt;
&lt;br /&gt;
The sentence count is approximate and only to give an idea of the expected length.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
1. Here's our [https://github.com/ github] path that includes everything useful to our project: [https://github.com/caoy1/Project https://github.com/caoy1/Project].  &lt;br /&gt;
&lt;br /&gt;
2. Additional packages installed via '''opkg''':&lt;br /&gt;
&lt;br /&gt;
* install nodejs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install nodejs&lt;br /&gt;
opkg install nodejs-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install node package manager&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl http://npmjs.org/install.sh | sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install socket.io module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install socket.io&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install binary module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install binary&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install mailer module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install mailer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install SMTP server postfix&lt;br /&gt;
Go to [http://postfix.energybeam.com/source/index.html] download the source of postfix, then unzip the .gz file, then run 'make', then run &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sh postfix-install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Here's the guideline to install Cloud9 easily: [https://github.com/jadonk/cloud9/blob/master/README.md]&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
Once everything is installed, how do you use the program?  Give details here, so if you have a long user manual, link to it here.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
To build a web server, we need, in essence, both client side and server side scripts. Client side scripts mainly just involve ordinary javascripts that can be embedded in HTML file; while at the server-side, we adopt the emerging node.js, which is a really simple server side script that accomplishes equivalent tasks like ASP, PHP will do, but with even simpler implementation details.&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
1. We've already successfully using JavaScript read and write data to the linux gpio file.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/leds/beagleboard::usr0/trigger&amp;quot;, &amp;quot;heartbeat&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/gpio/export&amp;quot;, &amp;quot;&amp;quot;+5);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Even though we can access to the gpio in the above way, we still need to find someway to access the I2C information. In the I2C exercises, from the C code provided in exercise 5, we can think of the following two options:&lt;br /&gt;
&lt;br /&gt;
a) To translate tons of the C codes into JavaScript...including rewriting the union structures like i2c_smbus_write_byte() and i2c_smbus_read_byte(), which requires far more knowledge in understanding how to translate the underlying hardware detail into upper-level script languages...&lt;br /&gt;
&lt;br /&gt;
b) Try to run the ./myi2c excutable file directly inside nodjs script...&lt;br /&gt;
&lt;br /&gt;
* It seems that the second way is easier... We've already found a ActiveXObject.run method... We're working on this... turns out this does not work for some reason.&lt;br /&gt;
&lt;br /&gt;
* At last we successfully excute the ./myi2c file inside our javascript using the following code, the big idea is create another child process to handle it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var exec  = require('child_process').exec,&lt;br /&gt;
    child;&lt;br /&gt;
child = exec('./myi2c',&lt;br /&gt;
  function (error, stdout, stderr) {&lt;br /&gt;
    console.log('stdout:', stdout);&lt;br /&gt;
    console.log('stderr:', stderr);&lt;br /&gt;
    if (error !== null) {&lt;br /&gt;
      console.log('exec error:', error);&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the terminal will show the temperature. &lt;br /&gt;
&lt;br /&gt;
3. Now we are going to working on how to show this temperature information on the website so that we can visit it from any place!!!&lt;br /&gt;
&lt;br /&gt;
* I've successfully done it!!! The pics are already uploaded to the github. Check the following code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var fs = require(&amp;quot;fs&amp;quot;);&lt;br /&gt;
var http = require(&amp;quot;http&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
try {&lt;br /&gt;
	http.createServer(function(request, response) {&lt;br /&gt;
&lt;br /&gt;
		response.writeHead(200, {&amp;quot;Content-Type&amp;quot;: &amp;quot;text/plain&amp;quot;});&lt;br /&gt;
		var exec = require('child_process').exec, child;&lt;br /&gt;
		child = exec('./myi2c',&lt;br /&gt;
	    		function (error, stdout, stderr) {&lt;br /&gt;
				response.write(stdout);&lt;br /&gt;
				console.log('stdout:', stdout);&lt;br /&gt;
				console.log('stderr:', stderr);&lt;br /&gt;
				response.end();&lt;br /&gt;
				if(error != null) {&lt;br /&gt;
					console.log('exec error:', error);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		);&lt;br /&gt;
	}).listen(8888);&lt;br /&gt;
} catch(ex3) {&lt;br /&gt;
	console.log(&amp;quot;sb&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. The next thing we will do is to refresh the website every other time...&lt;br /&gt;
&lt;br /&gt;
* We are now able to load html file inside nodejs scripts so that we can put normal HTML stuff inside the web page and load it from server scripts. The following code snippet can accomplish this (borrowed and modified based on Jadon's code):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function loadHTMLFile(uri, res, temp) {&lt;br /&gt;
 var filename = path.join(process.cwd(), uri);&lt;br /&gt;
 path.exists(&lt;br /&gt;
  filename,&lt;br /&gt;
  function(exists) {&lt;br /&gt;
   if(!exists) {&lt;br /&gt;
    res.writeHead(404, {&amp;quot;Content-Type&amp;quot;: &amp;quot;text/plain&amp;quot;});&lt;br /&gt;
    res.write(&amp;quot;404 Not Found\n&amp;quot;);&lt;br /&gt;
    res.end();&lt;br /&gt;
    return;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   fs.readFile(&lt;br /&gt;
    filename,&lt;br /&gt;
    encoding='utf8',&lt;br /&gt;
    function(err, file) {&lt;br /&gt;
     if(err) {&lt;br /&gt;
      res.writeHead(500, {&amp;quot;Content-Type&amp;quot;: &amp;quot;text/plain&amp;quot;});&lt;br /&gt;
      res.write(err + &amp;quot;\n&amp;quot;);&lt;br /&gt;
      res.end();&lt;br /&gt;
      return;&lt;br /&gt;
     }&lt;br /&gt;
     res.writeHead(200, {&amp;quot;Content-Type&amp;quot;: &amp;quot;text/html&amp;quot;});&lt;br /&gt;
     var str = (&amp;quot;&amp;quot; + file).replace(&amp;quot;&amp;lt;!--%OUTPUT%--&amp;gt;&amp;quot;, temp);&lt;br /&gt;
     res.write(str);&lt;br /&gt;
     res.end();&lt;br /&gt;
    }&lt;br /&gt;
   );&lt;br /&gt;
  }&lt;br /&gt;
 );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
And outside the above function, the main routine, we have similar code as listed in 3, but insert the function call:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
child = exec('./myi2c',&lt;br /&gt;
	    		function (error, stdout, stderr) {&lt;br /&gt;
				console.log('stdout:', stdout);&lt;br /&gt;
				console.log('stderr:', stderr);&lt;br /&gt;
				loadHTMLFile('/index.html', response, stdout);&lt;br /&gt;
				if(error != null) {&lt;br /&gt;
					console.log('exec error:', error);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Now we can update the temperature information on the website, both triggered by a button on the page, and by just automatically refreshing the temperature value whenever the temperature changes. Here is the simple client script for accomplishing this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;script language=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
setInterval(&amp;quot;document.forms[0].submit()&amp;quot;,5000);&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Welcome to the world of Node.js&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Here is the demo of the weather station.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Current temperature:&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;temperature output&amp;quot;&amp;gt;&amp;lt;!--%OUTPUT%--&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;form action = &amp;quot;/test.js&amp;quot; method=&amp;quot;post&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;get temperature&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Now we are trying to do something fancy! We want to send the user an automatic warning email when the temperature is too high. Here's the Javascript code using node.js mailer module. This code use SMTP server to send email to the destination.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var email = require('mailer');&lt;br /&gt;
&lt;br /&gt;
email.SMTP = {&lt;br /&gt;
    host: 'smtp.gmail.com',&lt;br /&gt;
    port: 587,&lt;br /&gt;
    ssl: false,&lt;br /&gt;
    use_authentication: false,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
email.send({&lt;br /&gt;
    to : &amp;quot;caoy1@rose-hulman.edu&amp;quot;,&lt;br /&gt;
    from : &amp;quot;obama@whitehouse.gov&amp;quot;,&lt;br /&gt;
    subject : &amp;quot;I love beagleboard!&amp;quot;,&lt;br /&gt;
    body: &amp;quot;Hello beagle world.&amp;quot;,&lt;br /&gt;
}, &lt;br /&gt;
&lt;br /&gt;
function(err, result) {&lt;br /&gt;
    if(err) {&lt;br /&gt;
	console.log(err);&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* However, the configuration on our beagle has some problem. The server has no response to mailer's request. We've tried telnet localhost 587, and connection can be connected. This means the 587 port is already opened. Then I tried the same code under my ubuntu system, it turns out everything works fine, the caoy1@rose-hulman.edu can receive the e-mail, except some client-side warning error when running the mail.js file. I think the reason it works on ubuntu is because when installing postfix, there's an automatic configuration step, which doesn't exist on our beagle installation. So there must be some problem with the postfix configuration of beagleboard. I've tried to copy all the configuration files under /etc/postfix to our beagleboard, but there's just the same problem. If I have more time, or someone else who's interested in continuing this project, I suggest you have some research on the configuration thing. Everytime you make some config changes, just run&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
postfix reload&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to apply the change.&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Node.js_Weather_Station</id>
		<title>ECE497 Project: Node.js Weather Station</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Node.js_Weather_Station"/>
				<updated>2012-02-19T02:17:36Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: /* Executive Summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Caogecym | Yuming Cao]], [[user:Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
Our project aims to implement the emerging nodejs technique (the server side javascript) as a lightweight web server on the beagleboard and accomplish a series of remote monitoring and control of hardware pins like gpio/led/i2c on the beagleboard. There are a lot of things we can do on the nodejs web server, but we try to make it related to our beagleboard hardware interface. &lt;br /&gt;
&lt;br /&gt;
The automatic email sender is not working correctly. More work needs to be done to set a proper configuration to the SMTP server 'postfix'.&lt;br /&gt;
&lt;br /&gt;
End with a two sentence conclusion.&lt;br /&gt;
&lt;br /&gt;
The sentence count is approximate and only to give an idea of the expected length.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
1. Here's our [https://github.com/ github] path that includes everything useful to our project: [https://github.com/caoy1/Project https://github.com/caoy1/Project].  &lt;br /&gt;
&lt;br /&gt;
2. Additional packages installed via '''opkg''':&lt;br /&gt;
&lt;br /&gt;
* install nodejs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install nodejs&lt;br /&gt;
opkg install nodejs-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install node package manager&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl http://npmjs.org/install.sh | sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install socket.io module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install socket.io&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install binary module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install binary&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install mailer module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install mailer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install SMTP server postfix&lt;br /&gt;
Go to [http://postfix.energybeam.com/source/index.html] download the source of postfix, then unzip the .gz file, then run 'make', then run &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sh postfix-install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Here's the guideline to install Cloud9 easily: [https://github.com/jadonk/cloud9/blob/master/README.md]&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
Once everything is installed, how do you use the program?  Give details here, so if you have a long user manual, link to it here.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
To build a web server, we need, in essence, both client side and server side scripts. Client side scripts mainly just involve ordinary javascripts that can be embedded in HTML file; while at the server-side, we adopt the emerging node.js, which is a really simple server side script that accomplishes equivalent tasks like ASP, PHP will do, but with even simpler implementation details.&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
1. We've already successfully using JavaScript read and write data to the linux gpio file.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/leds/beagleboard::usr0/trigger&amp;quot;, &amp;quot;heartbeat&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/gpio/export&amp;quot;, &amp;quot;&amp;quot;+5);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Even though we can access to the gpio in the above way, we still need to find someway to access the I2C information. In the I2C exercises, from the C code provided in exercise 5, we can think of the following two options:&lt;br /&gt;
&lt;br /&gt;
a) To translate tons of the C codes into JavaScript...including rewriting the union structures like i2c_smbus_write_byte() and i2c_smbus_read_byte(), which requires far more knowledge in understanding how to translate the underlying hardware detail into upper-level script languages...&lt;br /&gt;
&lt;br /&gt;
b) Try to run the ./myi2c excutable file directly inside nodjs script...&lt;br /&gt;
&lt;br /&gt;
* It seems that the second way is easier... We've already found a ActiveXObject.run method... We're working on this... turns out this does not work for some reason.&lt;br /&gt;
&lt;br /&gt;
* At last we successfully excute the ./myi2c file inside our javascript using the following code, the big idea is create another child process to handle it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var exec  = require('child_process').exec,&lt;br /&gt;
    child;&lt;br /&gt;
child = exec('./myi2c',&lt;br /&gt;
  function (error, stdout, stderr) {&lt;br /&gt;
    console.log('stdout:', stdout);&lt;br /&gt;
    console.log('stderr:', stderr);&lt;br /&gt;
    if (error !== null) {&lt;br /&gt;
      console.log('exec error:', error);&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the terminal will show the temperature. &lt;br /&gt;
&lt;br /&gt;
3. Now we are going to working on how to show this temperature information on the website so that we can visit it from any place!!!&lt;br /&gt;
&lt;br /&gt;
* I've successfully done it!!! The pics are already uploaded to the github. Check the following code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var fs = require(&amp;quot;fs&amp;quot;);&lt;br /&gt;
var http = require(&amp;quot;http&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
try {&lt;br /&gt;
	http.createServer(function(request, response) {&lt;br /&gt;
&lt;br /&gt;
		response.writeHead(200, {&amp;quot;Content-Type&amp;quot;: &amp;quot;text/plain&amp;quot;});&lt;br /&gt;
		var exec = require('child_process').exec, child;&lt;br /&gt;
		child = exec('./myi2c',&lt;br /&gt;
	    		function (error, stdout, stderr) {&lt;br /&gt;
				response.write(stdout);&lt;br /&gt;
				console.log('stdout:', stdout);&lt;br /&gt;
				console.log('stderr:', stderr);&lt;br /&gt;
				response.end();&lt;br /&gt;
				if(error != null) {&lt;br /&gt;
					console.log('exec error:', error);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		);&lt;br /&gt;
	}).listen(8888);&lt;br /&gt;
} catch(ex3) {&lt;br /&gt;
	console.log(&amp;quot;sb&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. The next thing we will do is to refresh the website every other time...&lt;br /&gt;
&lt;br /&gt;
* We are now able to load html file inside nodejs scripts so that we can put normal HTML stuff inside the web page and load it from server scripts. The following code snippet can accomplish this (borrowed and modified based on Jadon's code):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function loadHTMLFile(uri, res, temp) {&lt;br /&gt;
 var filename = path.join(process.cwd(), uri);&lt;br /&gt;
 path.exists(&lt;br /&gt;
  filename,&lt;br /&gt;
  function(exists) {&lt;br /&gt;
   if(!exists) {&lt;br /&gt;
    res.writeHead(404, {&amp;quot;Content-Type&amp;quot;: &amp;quot;text/plain&amp;quot;});&lt;br /&gt;
    res.write(&amp;quot;404 Not Found\n&amp;quot;);&lt;br /&gt;
    res.end();&lt;br /&gt;
    return;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   fs.readFile(&lt;br /&gt;
    filename,&lt;br /&gt;
    encoding='utf8',&lt;br /&gt;
    function(err, file) {&lt;br /&gt;
     if(err) {&lt;br /&gt;
      res.writeHead(500, {&amp;quot;Content-Type&amp;quot;: &amp;quot;text/plain&amp;quot;});&lt;br /&gt;
      res.write(err + &amp;quot;\n&amp;quot;);&lt;br /&gt;
      res.end();&lt;br /&gt;
      return;&lt;br /&gt;
     }&lt;br /&gt;
     res.writeHead(200, {&amp;quot;Content-Type&amp;quot;: &amp;quot;text/html&amp;quot;});&lt;br /&gt;
     var str = (&amp;quot;&amp;quot; + file).replace(&amp;quot;&amp;lt;!--%OUTPUT%--&amp;gt;&amp;quot;, temp);&lt;br /&gt;
     res.write(str);&lt;br /&gt;
     res.end();&lt;br /&gt;
    }&lt;br /&gt;
   );&lt;br /&gt;
  }&lt;br /&gt;
 );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
And outside the above function, the main routine, we have similar code as listed in 3, but insert the function call:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
child = exec('./myi2c',&lt;br /&gt;
	    		function (error, stdout, stderr) {&lt;br /&gt;
				console.log('stdout:', stdout);&lt;br /&gt;
				console.log('stderr:', stderr);&lt;br /&gt;
				loadHTMLFile('/index.html', response, stdout);&lt;br /&gt;
				if(error != null) {&lt;br /&gt;
					console.log('exec error:', error);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Now we can update the temperature information on the website, both triggered by a button on the page, and by just automatically refreshing the temperature value whenever the temperature changes. Here is the simple client script for accomplishing this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;script language=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
setInterval(&amp;quot;document.forms[0].submit()&amp;quot;,5000);&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Welcome to the world of Node.js&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Here is the demo of the weather station.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Current temperature:&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;temperature output&amp;quot;&amp;gt;&amp;lt;!--%OUTPUT%--&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;form action = &amp;quot;/test.js&amp;quot; method=&amp;quot;post&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;get temperature&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Now we are trying to do something fancy! We want to send the user an automatic warning email when the temperature is too high. Here's the Javascript code using node.js mailer module. This code use SMTP server to send email to the destination.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var email = require('mailer');&lt;br /&gt;
&lt;br /&gt;
email.SMTP = {&lt;br /&gt;
    host: 'smtp.gmail.com',&lt;br /&gt;
    port: 587,&lt;br /&gt;
    ssl: false,&lt;br /&gt;
    use_authentication: false,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
email.send({&lt;br /&gt;
    to : &amp;quot;caoy1@rose-hulman.edu&amp;quot;,&lt;br /&gt;
    from : &amp;quot;obama@whitehouse.gov&amp;quot;,&lt;br /&gt;
    subject : &amp;quot;I love beagleboard!&amp;quot;,&lt;br /&gt;
    body: &amp;quot;Hello beagle world.&amp;quot;,&lt;br /&gt;
}, &lt;br /&gt;
&lt;br /&gt;
function(err, result) {&lt;br /&gt;
    if(err) {&lt;br /&gt;
	console.log(err);&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* However, the configuration on our beagle has some problem. The server has no response to mailer's request.&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Node.js_Weather_Station</id>
		<title>ECE497 Project: Node.js Weather Station</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Node.js_Weather_Station"/>
				<updated>2012-02-19T02:13:02Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: /* Work Breakdown */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Caogecym | Yuming Cao]], [[user:Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
Our project aims to implement the emerging nodejs technique (the server side javascript) as a lightweight web server on the beagleboard and accomplish a series of remote monitoring and control of hardware pins like gpio/led/i2c on the beagleboard. There are a lot of things we can do on the nodejs web server, but we try to make it related to our beagleboard hardware interface. &lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what isn't working.&lt;br /&gt;
&lt;br /&gt;
End with a two sentence conclusion.&lt;br /&gt;
&lt;br /&gt;
The sentence count is approximate and only to give an idea of the expected length.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
1. Here's our [https://github.com/ github] path that includes everything useful to our project: [https://github.com/caoy1/Project https://github.com/caoy1/Project].  &lt;br /&gt;
&lt;br /&gt;
2. Additional packages installed via '''opkg''':&lt;br /&gt;
&lt;br /&gt;
* install nodejs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install nodejs&lt;br /&gt;
opkg install nodejs-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install node package manager&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl http://npmjs.org/install.sh | sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install socket.io module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install socket.io&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install binary module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install binary&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install mailer module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install mailer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install SMTP server postfix&lt;br /&gt;
Go to [http://postfix.energybeam.com/source/index.html] download the source of postfix, then unzip the .gz file, then run 'make', then run &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sh postfix-install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Here's the guideline to install Cloud9 easily: [https://github.com/jadonk/cloud9/blob/master/README.md]&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
Once everything is installed, how do you use the program?  Give details here, so if you have a long user manual, link to it here.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
To build a web server, we need, in essence, both client side and server side scripts. Client side scripts mainly just involve ordinary javascripts that can be embedded in HTML file; while at the server-side, we adopt the emerging node.js, which is a really simple server side script that accomplishes equivalent tasks like ASP, PHP will do, but with even simpler implementation details.&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
1. We've already successfully using JavaScript read and write data to the linux gpio file.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/leds/beagleboard::usr0/trigger&amp;quot;, &amp;quot;heartbeat&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/gpio/export&amp;quot;, &amp;quot;&amp;quot;+5);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Even though we can access to the gpio in the above way, we still need to find someway to access the I2C information. In the I2C exercises, from the C code provided in exercise 5, we can think of the following two options:&lt;br /&gt;
&lt;br /&gt;
a) To translate tons of the C codes into JavaScript...including rewriting the union structures like i2c_smbus_write_byte() and i2c_smbus_read_byte(), which requires far more knowledge in understanding how to translate the underlying hardware detail into upper-level script languages...&lt;br /&gt;
&lt;br /&gt;
b) Try to run the ./myi2c excutable file directly inside nodjs script...&lt;br /&gt;
&lt;br /&gt;
* It seems that the second way is easier... We've already found a ActiveXObject.run method... We're working on this... turns out this does not work for some reason.&lt;br /&gt;
&lt;br /&gt;
* At last we successfully excute the ./myi2c file inside our javascript using the following code, the big idea is create another child process to handle it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var exec  = require('child_process').exec,&lt;br /&gt;
    child;&lt;br /&gt;
child = exec('./myi2c',&lt;br /&gt;
  function (error, stdout, stderr) {&lt;br /&gt;
    console.log('stdout:', stdout);&lt;br /&gt;
    console.log('stderr:', stderr);&lt;br /&gt;
    if (error !== null) {&lt;br /&gt;
      console.log('exec error:', error);&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the terminal will show the temperature. &lt;br /&gt;
&lt;br /&gt;
3. Now we are going to working on how to show this temperature information on the website so that we can visit it from any place!!!&lt;br /&gt;
&lt;br /&gt;
* I've successfully done it!!! The pics are already uploaded to the github. Check the following code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var fs = require(&amp;quot;fs&amp;quot;);&lt;br /&gt;
var http = require(&amp;quot;http&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
try {&lt;br /&gt;
	http.createServer(function(request, response) {&lt;br /&gt;
&lt;br /&gt;
		response.writeHead(200, {&amp;quot;Content-Type&amp;quot;: &amp;quot;text/plain&amp;quot;});&lt;br /&gt;
		var exec = require('child_process').exec, child;&lt;br /&gt;
		child = exec('./myi2c',&lt;br /&gt;
	    		function (error, stdout, stderr) {&lt;br /&gt;
				response.write(stdout);&lt;br /&gt;
				console.log('stdout:', stdout);&lt;br /&gt;
				console.log('stderr:', stderr);&lt;br /&gt;
				response.end();&lt;br /&gt;
				if(error != null) {&lt;br /&gt;
					console.log('exec error:', error);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		);&lt;br /&gt;
	}).listen(8888);&lt;br /&gt;
} catch(ex3) {&lt;br /&gt;
	console.log(&amp;quot;sb&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. The next thing we will do is to refresh the website every other time...&lt;br /&gt;
&lt;br /&gt;
* We are now able to load html file inside nodejs scripts so that we can put normal HTML stuff inside the web page and load it from server scripts. The following code snippet can accomplish this (borrowed and modified based on Jadon's code):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function loadHTMLFile(uri, res, temp) {&lt;br /&gt;
 var filename = path.join(process.cwd(), uri);&lt;br /&gt;
 path.exists(&lt;br /&gt;
  filename,&lt;br /&gt;
  function(exists) {&lt;br /&gt;
   if(!exists) {&lt;br /&gt;
    res.writeHead(404, {&amp;quot;Content-Type&amp;quot;: &amp;quot;text/plain&amp;quot;});&lt;br /&gt;
    res.write(&amp;quot;404 Not Found\n&amp;quot;);&lt;br /&gt;
    res.end();&lt;br /&gt;
    return;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   fs.readFile(&lt;br /&gt;
    filename,&lt;br /&gt;
    encoding='utf8',&lt;br /&gt;
    function(err, file) {&lt;br /&gt;
     if(err) {&lt;br /&gt;
      res.writeHead(500, {&amp;quot;Content-Type&amp;quot;: &amp;quot;text/plain&amp;quot;});&lt;br /&gt;
      res.write(err + &amp;quot;\n&amp;quot;);&lt;br /&gt;
      res.end();&lt;br /&gt;
      return;&lt;br /&gt;
     }&lt;br /&gt;
     res.writeHead(200, {&amp;quot;Content-Type&amp;quot;: &amp;quot;text/html&amp;quot;});&lt;br /&gt;
     var str = (&amp;quot;&amp;quot; + file).replace(&amp;quot;&amp;lt;!--%OUTPUT%--&amp;gt;&amp;quot;, temp);&lt;br /&gt;
     res.write(str);&lt;br /&gt;
     res.end();&lt;br /&gt;
    }&lt;br /&gt;
   );&lt;br /&gt;
  }&lt;br /&gt;
 );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
And outside the above function, the main routine, we have similar code as listed in 3, but insert the function call:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
child = exec('./myi2c',&lt;br /&gt;
	    		function (error, stdout, stderr) {&lt;br /&gt;
				console.log('stdout:', stdout);&lt;br /&gt;
				console.log('stderr:', stderr);&lt;br /&gt;
				loadHTMLFile('/index.html', response, stdout);&lt;br /&gt;
				if(error != null) {&lt;br /&gt;
					console.log('exec error:', error);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Now we can update the temperature information on the website, both triggered by a button on the page, and by just automatically refreshing the temperature value whenever the temperature changes. Here is the simple client script for accomplishing this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;script language=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
setInterval(&amp;quot;document.forms[0].submit()&amp;quot;,5000);&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Welcome to the world of Node.js&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Here is the demo of the weather station.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Current temperature:&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;temperature output&amp;quot;&amp;gt;&amp;lt;!--%OUTPUT%--&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;form action = &amp;quot;/test.js&amp;quot; method=&amp;quot;post&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;get temperature&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Now we are trying to do something fancy! We want to send the user an automatic warning email when the temperature is too high. Here's the Javascript code using node.js mailer module. This code use SMTP server to send email to the destination.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var email = require('mailer');&lt;br /&gt;
&lt;br /&gt;
email.SMTP = {&lt;br /&gt;
    host: 'smtp.gmail.com',&lt;br /&gt;
    port: 587,&lt;br /&gt;
    ssl: false,&lt;br /&gt;
    use_authentication: false,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
email.send({&lt;br /&gt;
    to : &amp;quot;caoy1@rose-hulman.edu&amp;quot;,&lt;br /&gt;
    from : &amp;quot;obama@whitehouse.gov&amp;quot;,&lt;br /&gt;
    subject : &amp;quot;I love beagleboard!&amp;quot;,&lt;br /&gt;
    body: &amp;quot;Hello beagle world.&amp;quot;,&lt;br /&gt;
}, &lt;br /&gt;
&lt;br /&gt;
function(err, result) {&lt;br /&gt;
    if(err) {&lt;br /&gt;
	console.log(err);&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* However, the configuration on our beagle has some problem. The server has no response to mailer's request.&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Node.js_Weather_Station</id>
		<title>ECE497 Project: Node.js Weather Station</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Node.js_Weather_Station"/>
				<updated>2012-02-19T01:44:51Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: /* Installation Instructions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Caogecym | Yuming Cao]], [[user:Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
Our project aims to implement the emerging nodejs technique (the server side javascript) as a lightweight web server on the beagleboard and accomplish a series of remote monitoring and control of hardware pins like gpio/led/i2c on the beagleboard. There are a lot of things we can do on the nodejs web server, but we try to make it related to our beagleboard hardware interface. &lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what isn't working.&lt;br /&gt;
&lt;br /&gt;
End with a two sentence conclusion.&lt;br /&gt;
&lt;br /&gt;
The sentence count is approximate and only to give an idea of the expected length.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
1. Here's our [https://github.com/ github] path that includes everything useful to our project: [https://github.com/caoy1/Project https://github.com/caoy1/Project].  &lt;br /&gt;
&lt;br /&gt;
2. Additional packages installed via '''opkg''':&lt;br /&gt;
&lt;br /&gt;
* install nodejs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install nodejs&lt;br /&gt;
opkg install nodejs-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install node package manager&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl http://npmjs.org/install.sh | sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install socket.io module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install socket.io&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install binary module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install binary&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install mailer module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install mailer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install SMTP server postfix&lt;br /&gt;
Go to [http://postfix.energybeam.com/source/index.html] download the source of postfix, then unzip the .gz file, then run 'make', then run &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sh postfix-install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Here's the guideline to install Cloud9 easily: [https://github.com/jadonk/cloud9/blob/master/README.md]&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
Once everything is installed, how do you use the program?  Give details here, so if you have a long user manual, link to it here.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
To build a web server, we need, in essence, both client side and server side scripts. Client side scripts mainly just involve ordinary javascripts that can be embedded in HTML file; while at the server-side, we adopt the emerging node.js, which is a really simple server side script that accomplishes equivalent tasks like ASP, PHP will do, but with even simpler implementation details.&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
1. We've already successfully using JavaScript read and write data to the linux gpio file.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/leds/beagleboard::usr0/trigger&amp;quot;, &amp;quot;heartbeat&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/gpio/export&amp;quot;, &amp;quot;&amp;quot;+5);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Even though we can access to the gpio in the above way, we still need to find someway to access the I2C information. In the I2C exercises, from the C code provided in exercise 5, we can think of the following two options:&lt;br /&gt;
&lt;br /&gt;
a) To translate tons of the C codes into JavaScript...including rewriting the union structures like i2c_smbus_write_byte() and i2c_smbus_read_byte(), which requires far more knowledge in understanding how to translate the underlying hardware detail into upper-level script languages...&lt;br /&gt;
&lt;br /&gt;
b) Try to run the ./myi2c excutable file directly inside nodjs script...&lt;br /&gt;
&lt;br /&gt;
* It seems that the second way is easier... We've already found a ActiveXObject.run method... We're working on this... turns out this does not work for some reason.&lt;br /&gt;
&lt;br /&gt;
* At last we successfully excute the ./myi2c file inside our javascript using the following code, the big idea is create another child process to handle it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var exec  = require('child_process').exec,&lt;br /&gt;
    child;&lt;br /&gt;
child = exec('./myi2c',&lt;br /&gt;
  function (error, stdout, stderr) {&lt;br /&gt;
    console.log('stdout:', stdout);&lt;br /&gt;
    console.log('stderr:', stderr);&lt;br /&gt;
    if (error !== null) {&lt;br /&gt;
      console.log('exec error:', error);&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the terminal will show the temperature. &lt;br /&gt;
&lt;br /&gt;
3. Now we are going to working on how to show this temperature information on the website so that we can visit it from any place!!!&lt;br /&gt;
&lt;br /&gt;
* I've successfully done it!!! The pics are already uploaded to the github. Check the following code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var fs = require(&amp;quot;fs&amp;quot;);&lt;br /&gt;
var http = require(&amp;quot;http&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
try {&lt;br /&gt;
	http.createServer(function(request, response) {&lt;br /&gt;
&lt;br /&gt;
		response.writeHead(200, {&amp;quot;Content-Type&amp;quot;: &amp;quot;text/plain&amp;quot;});&lt;br /&gt;
		var exec = require('child_process').exec, child;&lt;br /&gt;
		child = exec('./myi2c',&lt;br /&gt;
	    		function (error, stdout, stderr) {&lt;br /&gt;
				response.write(stdout);&lt;br /&gt;
				console.log('stdout:', stdout);&lt;br /&gt;
				console.log('stderr:', stderr);&lt;br /&gt;
				response.end();&lt;br /&gt;
				if(error != null) {&lt;br /&gt;
					console.log('exec error:', error);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		);&lt;br /&gt;
	}).listen(8888);&lt;br /&gt;
} catch(ex3) {&lt;br /&gt;
	console.log(&amp;quot;sb&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. The next thing we will do is to refresh the website every other time...&lt;br /&gt;
&lt;br /&gt;
* We are now able to load html file inside nodejs scripts so that we can put normal HTML stuff inside the web page and load it from server scripts. The following code snippet can accomplish this (borrowed and modified based on Jadon's code):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function loadHTMLFile(uri, res, temp) {&lt;br /&gt;
 var filename = path.join(process.cwd(), uri);&lt;br /&gt;
 path.exists(&lt;br /&gt;
  filename,&lt;br /&gt;
  function(exists) {&lt;br /&gt;
   if(!exists) {&lt;br /&gt;
    res.writeHead(404, {&amp;quot;Content-Type&amp;quot;: &amp;quot;text/plain&amp;quot;});&lt;br /&gt;
    res.write(&amp;quot;404 Not Found\n&amp;quot;);&lt;br /&gt;
    res.end();&lt;br /&gt;
    return;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   fs.readFile(&lt;br /&gt;
    filename,&lt;br /&gt;
    encoding='utf8',&lt;br /&gt;
    function(err, file) {&lt;br /&gt;
     if(err) {&lt;br /&gt;
      res.writeHead(500, {&amp;quot;Content-Type&amp;quot;: &amp;quot;text/plain&amp;quot;});&lt;br /&gt;
      res.write(err + &amp;quot;\n&amp;quot;);&lt;br /&gt;
      res.end();&lt;br /&gt;
      return;&lt;br /&gt;
     }&lt;br /&gt;
     res.writeHead(200, {&amp;quot;Content-Type&amp;quot;: &amp;quot;text/html&amp;quot;});&lt;br /&gt;
     var str = (&amp;quot;&amp;quot; + file).replace(&amp;quot;&amp;lt;!--%OUTPUT%--&amp;gt;&amp;quot;, temp);&lt;br /&gt;
     res.write(str);&lt;br /&gt;
     res.end();&lt;br /&gt;
    }&lt;br /&gt;
   );&lt;br /&gt;
  }&lt;br /&gt;
 );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
And outside the above function, the main routine, we have similar code as listed in 3, but insert the function call:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
child = exec('./myi2c',&lt;br /&gt;
	    		function (error, stdout, stderr) {&lt;br /&gt;
				console.log('stdout:', stdout);&lt;br /&gt;
				console.log('stderr:', stderr);&lt;br /&gt;
				loadHTMLFile('/index.html', response, stdout);&lt;br /&gt;
				if(error != null) {&lt;br /&gt;
					console.log('exec error:', error);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Now we can update the temperature information on the website, both triggered by a button on the page, and by just automatically refreshing the temperature value whenever the temperature changes. Here is the simple client script for accomplishing this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;script language=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
setInterval(&amp;quot;document.forms[0].submit()&amp;quot;,5000);&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Welcome to the world of Node.js&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Here is the demo of the weather station.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Current temperature:&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;temperature output&amp;quot;&amp;gt;&amp;lt;!--%OUTPUT%--&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;form action = &amp;quot;/test.js&amp;quot; method=&amp;quot;post&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;get temperature&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Node.js_Weather_Station</id>
		<title>ECE497 Project: Node.js Weather Station</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Node.js_Weather_Station"/>
				<updated>2012-02-19T01:41:55Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: /* Installation Instructions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Caogecym | Yuming Cao]], [[user:Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
Our project aims to implement the emerging nodejs technique (the server side javascript) as a lightweight web server on the beagleboard and accomplish a series of remote monitoring and control of hardware pins like gpio/led/i2c on the beagleboard. There are a lot of things we can do on the nodejs web server, but we try to make it related to our beagleboard hardware interface. &lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what isn't working.&lt;br /&gt;
&lt;br /&gt;
End with a two sentence conclusion.&lt;br /&gt;
&lt;br /&gt;
The sentence count is approximate and only to give an idea of the expected length.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
1. Here's our [https://github.com/ github] path that includes everything useful to our project: [https://github.com/caoy1/Project https://github.com/caoy1/Project].  &lt;br /&gt;
&lt;br /&gt;
2. Additional packages installed via '''opkg''':&lt;br /&gt;
&lt;br /&gt;
* install nodejs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install nodejs&lt;br /&gt;
opkg install nodejs-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install node package manager&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl http://npmjs.org/install.sh | sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install socket.io module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install socket.io&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install binary module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install binary&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install mailer module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install mailer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Here's the guideline to install Cloud9 easily: [https://github.com/jadonk/cloud9/blob/master/README.md]&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
Once everything is installed, how do you use the program?  Give details here, so if you have a long user manual, link to it here.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
To build a web server, we need, in essence, both client side and server side scripts. Client side scripts mainly just involve ordinary javascripts that can be embedded in HTML file; while at the server-side, we adopt the emerging node.js, which is a really simple server side script that accomplishes equivalent tasks like ASP, PHP will do, but with even simpler implementation details.&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
1. We've already successfully using JavaScript read and write data to the linux gpio file.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/leds/beagleboard::usr0/trigger&amp;quot;, &amp;quot;heartbeat&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/gpio/export&amp;quot;, &amp;quot;&amp;quot;+5);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Even though we can access to the gpio in the above way, we still need to find someway to access the I2C information. In the I2C exercises, from the C code provided in exercise 5, we can think of the following two options:&lt;br /&gt;
&lt;br /&gt;
a) To translate tons of the C codes into JavaScript...including rewriting the union structures like i2c_smbus_write_byte() and i2c_smbus_read_byte(), which requires far more knowledge in understanding how to translate the underlying hardware detail into upper-level script languages...&lt;br /&gt;
&lt;br /&gt;
b) Try to run the ./myi2c excutable file directly inside nodjs script...&lt;br /&gt;
&lt;br /&gt;
* It seems that the second way is easier... We've already found a ActiveXObject.run method... We're working on this... turns out this does not work for some reason.&lt;br /&gt;
&lt;br /&gt;
* At last we successfully excute the ./myi2c file inside our javascript using the following code, the big idea is create another child process to handle it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var exec  = require('child_process').exec,&lt;br /&gt;
    child;&lt;br /&gt;
child = exec('./myi2c',&lt;br /&gt;
  function (error, stdout, stderr) {&lt;br /&gt;
    console.log('stdout:', stdout);&lt;br /&gt;
    console.log('stderr:', stderr);&lt;br /&gt;
    if (error !== null) {&lt;br /&gt;
      console.log('exec error:', error);&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the terminal will show the temperature. &lt;br /&gt;
&lt;br /&gt;
3. Now we are going to working on how to show this temperature information on the website so that we can visit it from any place!!!&lt;br /&gt;
&lt;br /&gt;
* I've successfully done it!!! The pics are already uploaded to the github. Check the following code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var fs = require(&amp;quot;fs&amp;quot;);&lt;br /&gt;
var http = require(&amp;quot;http&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
try {&lt;br /&gt;
	http.createServer(function(request, response) {&lt;br /&gt;
&lt;br /&gt;
		response.writeHead(200, {&amp;quot;Content-Type&amp;quot;: &amp;quot;text/plain&amp;quot;});&lt;br /&gt;
		var exec = require('child_process').exec, child;&lt;br /&gt;
		child = exec('./myi2c',&lt;br /&gt;
	    		function (error, stdout, stderr) {&lt;br /&gt;
				response.write(stdout);&lt;br /&gt;
				console.log('stdout:', stdout);&lt;br /&gt;
				console.log('stderr:', stderr);&lt;br /&gt;
				response.end();&lt;br /&gt;
				if(error != null) {&lt;br /&gt;
					console.log('exec error:', error);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		);&lt;br /&gt;
	}).listen(8888);&lt;br /&gt;
} catch(ex3) {&lt;br /&gt;
	console.log(&amp;quot;sb&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. The next thing we will do is to refresh the website every other time...&lt;br /&gt;
&lt;br /&gt;
* We are now able to load html file inside nodejs scripts so that we can put normal HTML stuff inside the web page and load it from server scripts. The following code snippet can accomplish this (borrowed and modified based on Jadon's code):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function loadHTMLFile(uri, res, temp) {&lt;br /&gt;
 var filename = path.join(process.cwd(), uri);&lt;br /&gt;
 path.exists(&lt;br /&gt;
  filename,&lt;br /&gt;
  function(exists) {&lt;br /&gt;
   if(!exists) {&lt;br /&gt;
    res.writeHead(404, {&amp;quot;Content-Type&amp;quot;: &amp;quot;text/plain&amp;quot;});&lt;br /&gt;
    res.write(&amp;quot;404 Not Found\n&amp;quot;);&lt;br /&gt;
    res.end();&lt;br /&gt;
    return;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   fs.readFile(&lt;br /&gt;
    filename,&lt;br /&gt;
    encoding='utf8',&lt;br /&gt;
    function(err, file) {&lt;br /&gt;
     if(err) {&lt;br /&gt;
      res.writeHead(500, {&amp;quot;Content-Type&amp;quot;: &amp;quot;text/plain&amp;quot;});&lt;br /&gt;
      res.write(err + &amp;quot;\n&amp;quot;);&lt;br /&gt;
      res.end();&lt;br /&gt;
      return;&lt;br /&gt;
     }&lt;br /&gt;
     res.writeHead(200, {&amp;quot;Content-Type&amp;quot;: &amp;quot;text/html&amp;quot;});&lt;br /&gt;
     var str = (&amp;quot;&amp;quot; + file).replace(&amp;quot;&amp;lt;!--%OUTPUT%--&amp;gt;&amp;quot;, temp);&lt;br /&gt;
     res.write(str);&lt;br /&gt;
     res.end();&lt;br /&gt;
    }&lt;br /&gt;
   );&lt;br /&gt;
  }&lt;br /&gt;
 );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
And outside the above function, the main routine, we have similar code as listed in 3, but insert the function call:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
child = exec('./myi2c',&lt;br /&gt;
	    		function (error, stdout, stderr) {&lt;br /&gt;
				console.log('stdout:', stdout);&lt;br /&gt;
				console.log('stderr:', stderr);&lt;br /&gt;
				loadHTMLFile('/index.html', response, stdout);&lt;br /&gt;
				if(error != null) {&lt;br /&gt;
					console.log('exec error:', error);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Now we can update the temperature information on the website, both triggered by a button on the page, and by just automatically refreshing the temperature value whenever the temperature changes. Here is the simple client script for accomplishing this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;script language=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
setInterval(&amp;quot;document.forms[0].submit()&amp;quot;,5000);&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Welcome to the world of Node.js&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Here is the demo of the weather station.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Current temperature:&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;temperature output&amp;quot;&amp;gt;&amp;lt;!--%OUTPUT%--&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;form action = &amp;quot;/test.js&amp;quot; method=&amp;quot;post&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;get temperature&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Node.js_Weather_Station</id>
		<title>ECE497 Project: Node.js Weather Station</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Node.js_Weather_Station"/>
				<updated>2012-02-13T22:09:14Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: /* Work Breakdown */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Caogecym | Yuming Cao]], [[user:Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
Our project aims to implement the emerging nodejs technique (the server side javascript) as a lightweight web server on the beagleboard and accomplish a series of remote monitoring and control of hardware pins like gpio/led/i2c on the beagleboard.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what works.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what isn't working.&lt;br /&gt;
&lt;br /&gt;
End with a two sentence conclusion.&lt;br /&gt;
&lt;br /&gt;
The sentence count is approximate and only to give an idea of the expected length.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
1. Here's our [https://github.com/ github] path that includes everything useful to our project: [https://github.com/caoy1/Project https://github.com/caoy1/Project].  &lt;br /&gt;
&lt;br /&gt;
2. Additional packages installed via '''opkg''':&lt;br /&gt;
&lt;br /&gt;
* install nodejs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install nodejs&lt;br /&gt;
opkg install nodejs-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install node package manager&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl http://npmjs.org/install.sh | sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install socket.io module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install socket.io&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install binary module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install binary&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Include kernel mods.&lt;br /&gt;
* If there is extra hardware needed, include links to where it can be obtained.&lt;br /&gt;
* Here's the guideline to install Cloud9 easily: [https://github.com/jadonk/cloud9/blob/master/README.md]&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
Once everything is installed, how do you use the program?  Give details here, so if you have a long user manual, link to it here.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
1. We've already successfully using JavaScript read and write data to the linux gpio file.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/leds/beagleboard::usr0/trigger&amp;quot;, &amp;quot;heartbeat&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/gpio/export&amp;quot;, &amp;quot;&amp;quot;+5);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Even though we can access to the gpio in the above way, we still need to find someway to access to the I2C information. In the I2C exercises, in the C code provided in exercise 5, we still need to find some way in our javaScript instead of using i2c_smbus_write_byte() and i2c_smbus_read_byte(). Now there are two options for us:&lt;br /&gt;
&lt;br /&gt;
a) To translate tons of the C codes into JavaScript...&lt;br /&gt;
&lt;br /&gt;
b) Try to run the ./myi2c excutable file inside script...&lt;br /&gt;
&lt;br /&gt;
* It seems that the second way is easier... We've already found a ActiveXObject.run method... We're working on this... &lt;br /&gt;
&lt;br /&gt;
* At last we successfully excuate the ./myi2c file inside our javascript using the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var exec  = require('child_process').exec,&lt;br /&gt;
    child;&lt;br /&gt;
child = exec('./myi2c',&lt;br /&gt;
  function (error, stdout, stderr) {&lt;br /&gt;
    console.log('stdout:', stdout);&lt;br /&gt;
    console.log('stderr:', stderr);&lt;br /&gt;
    if (error !== null) {&lt;br /&gt;
      console.log('exec error:', error);&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the terminal will show the temperature. &lt;br /&gt;
&lt;br /&gt;
3. Now we are going to working on how to show this temperature information on the website so that we can visit it from any place!!!&lt;br /&gt;
&lt;br /&gt;
* I've successfully done it!!! The pics are already uploaded to the github. Check the following code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var fs = require(&amp;quot;fs&amp;quot;);&lt;br /&gt;
var http = require(&amp;quot;http&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
try {&lt;br /&gt;
	http.createServer(function(request, response) {&lt;br /&gt;
&lt;br /&gt;
		response.writeHead(200, {&amp;quot;Content-Type&amp;quot;: &amp;quot;text/plain&amp;quot;});&lt;br /&gt;
		var exec = require('child_process').exec, child;&lt;br /&gt;
		child = exec('./myi2c',&lt;br /&gt;
	    		function (error, stdout, stderr) {&lt;br /&gt;
				response.write(stdout);&lt;br /&gt;
				console.log('stdout:', stdout);&lt;br /&gt;
				console.log('stderr:', stderr);&lt;br /&gt;
				response.end();&lt;br /&gt;
				if(error != null) {&lt;br /&gt;
					console.log('exec error:', error);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		);&lt;br /&gt;
	}).listen(8888);&lt;br /&gt;
} catch(ex3) {&lt;br /&gt;
	console.log(&amp;quot;sb&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. The next thing we will do is to refresh the website every other time...&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Node.js_Weather_Station</id>
		<title>ECE497 Project: Node.js Weather Station</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Node.js_Weather_Station"/>
				<updated>2012-02-13T21:53:27Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: /* Work Breakdown */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Caogecym | Yuming Cao]], [[user:Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
Our project aims to implement the emerging nodejs technique (the server side javascript) as a lightweight web server on the beagleboard and accomplish a series of remote monitoring and control of hardware pins like gpio/led/i2c on the beagleboard.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what works.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what isn't working.&lt;br /&gt;
&lt;br /&gt;
End with a two sentence conclusion.&lt;br /&gt;
&lt;br /&gt;
The sentence count is approximate and only to give an idea of the expected length.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
1. Here's our [https://github.com/ github] path that includes everything useful to our project: [https://github.com/caoy1/Project https://github.com/caoy1/Project].  &lt;br /&gt;
&lt;br /&gt;
2. Additional packages installed via '''opkg''':&lt;br /&gt;
&lt;br /&gt;
* install nodejs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install nodejs&lt;br /&gt;
opkg install nodejs-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install node package manager&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl http://npmjs.org/install.sh | sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install socket.io module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install socket.io&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install binary module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install binary&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Include kernel mods.&lt;br /&gt;
* If there is extra hardware needed, include links to where it can be obtained.&lt;br /&gt;
* Here's the guideline to install Cloud9 easily: [https://github.com/jadonk/cloud9/blob/master/README.md]&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
Once everything is installed, how do you use the program?  Give details here, so if you have a long user manual, link to it here.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
1. We've already successfully using JavaScript read and write data to the linux gpio file.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/leds/beagleboard::usr0/trigger&amp;quot;, &amp;quot;heartbeat&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/gpio/export&amp;quot;, &amp;quot;&amp;quot;+5);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Even though we can access to the gpio in the above way, we still need to find someway to access to the I2C information. In the I2C exercises, in the C code provided in exercise 5, we still need to find some way in our javaScript instead of using i2c_smbus_write_byte() and i2c_smbus_read_byte(). Now there are two options for us:&lt;br /&gt;
&lt;br /&gt;
a) To translate tons of the C codes into JavaScript...&lt;br /&gt;
&lt;br /&gt;
b) Try to run the ./myi2c excutable file inside script...&lt;br /&gt;
&lt;br /&gt;
* It seems that the second way is easier... We've already found a ActiveXObject.run method... We're working on this... &lt;br /&gt;
&lt;br /&gt;
* At last we successfully excuate the ./myi2c file inside our javascript using the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var exec  = require('child_process').exec,&lt;br /&gt;
    child;&lt;br /&gt;
child = exec('./myi2c',&lt;br /&gt;
  function (error, stdout, stderr) {&lt;br /&gt;
    console.log('stdout:', stdout);&lt;br /&gt;
    console.log('stderr:', stderr);&lt;br /&gt;
    if (error !== null) {&lt;br /&gt;
      console.log('exec error:', error);&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the terminal will show the temperature. Now we are going to working on how to show this temperature information on the website so that we can visit it from any place!!!&lt;br /&gt;
&lt;br /&gt;
* I've successfully done it!!! The pics are already uploaded to the github. Check the following code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var fs = require(&amp;quot;fs&amp;quot;);&lt;br /&gt;
var http = require(&amp;quot;http&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
try {&lt;br /&gt;
	http.createServer(function(request, response) {&lt;br /&gt;
&lt;br /&gt;
		response.writeHead(200, {&amp;quot;Content-Type&amp;quot;: &amp;quot;text/plain&amp;quot;});&lt;br /&gt;
		var exec = require('child_process').exec, child;&lt;br /&gt;
		child = exec('./myi2c',&lt;br /&gt;
	    		function (error, stdout, stderr) {&lt;br /&gt;
				response.write(stdout);&lt;br /&gt;
				console.log('stdout:', stdout);&lt;br /&gt;
				console.log('stderr:', stderr);&lt;br /&gt;
				response.end();&lt;br /&gt;
				if(error != null) {&lt;br /&gt;
					console.log('exec error:', error);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		);&lt;br /&gt;
	}).listen(8888);&lt;br /&gt;
} catch(ex3) {&lt;br /&gt;
	console.log(&amp;quot;sb&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Node.js_Weather_Station</id>
		<title>ECE497 Project: Node.js Weather Station</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Node.js_Weather_Station"/>
				<updated>2012-02-13T21:48:15Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: /* Work Breakdown */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Caogecym | Yuming Cao]], [[user:Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
Our project aims to implement the emerging nodejs technique (the server side javascript) as a lightweight web server on the beagleboard and accomplish a series of remote monitoring and control of hardware pins like gpio/led/i2c on the beagleboard.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what works.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what isn't working.&lt;br /&gt;
&lt;br /&gt;
End with a two sentence conclusion.&lt;br /&gt;
&lt;br /&gt;
The sentence count is approximate and only to give an idea of the expected length.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
1. Here's our [https://github.com/ github] path that includes everything useful to our project: [https://github.com/caoy1/Project https://github.com/caoy1/Project].  &lt;br /&gt;
&lt;br /&gt;
2. Additional packages installed via '''opkg''':&lt;br /&gt;
&lt;br /&gt;
* install nodejs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install nodejs&lt;br /&gt;
opkg install nodejs-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install node package manager&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl http://npmjs.org/install.sh | sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install socket.io module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install socket.io&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install binary module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install binary&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Include kernel mods.&lt;br /&gt;
* If there is extra hardware needed, include links to where it can be obtained.&lt;br /&gt;
* Here's the guideline to install Cloud9 easily: [https://github.com/jadonk/cloud9/blob/master/README.md]&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
Once everything is installed, how do you use the program?  Give details here, so if you have a long user manual, link to it here.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
1. We've already successfully using JavaScript read and write data to the linux gpio file.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/leds/beagleboard::usr0/trigger&amp;quot;, &amp;quot;heartbeat&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/gpio/export&amp;quot;, &amp;quot;&amp;quot;+5);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Even though we can access to the gpio in the above way, we still need to find someway to access to the I2C information. In the I2C exercises, in the C code provided in exercise 5, we still need to find some way in our javaScript instead of using i2c_smbus_write_byte() and i2c_smbus_read_byte(). Now there are two options for us:&lt;br /&gt;
&lt;br /&gt;
a) To translate tons of the C codes into JavaScript...&lt;br /&gt;
&lt;br /&gt;
b) Try to run the ./myi2c excutable file inside script...&lt;br /&gt;
&lt;br /&gt;
* It seems that the second way is easier... We've already found a ActiveXObject.run method... We're working on this... &lt;br /&gt;
&lt;br /&gt;
* At last we successfully excuate the ./myi2c file inside our javascript using the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var exec  = require('child_process').exec,&lt;br /&gt;
    child;&lt;br /&gt;
child = exec('./myi2c',&lt;br /&gt;
  function (error, stdout, stderr) {&lt;br /&gt;
    console.log('stdout:', stdout);&lt;br /&gt;
    console.log('stderr:', stderr);&lt;br /&gt;
    if (error !== null) {&lt;br /&gt;
      console.log('exec error:', error);&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the terminal will show the temperature. Now we are going to working on how to show this temperature information on the website so that we can visit it from any place!!!&lt;br /&gt;
&lt;br /&gt;
* I've successfully done it!!! Check the following code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var fs = require(&amp;quot;fs&amp;quot;);&lt;br /&gt;
var http = require(&amp;quot;http&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
try {&lt;br /&gt;
	http.createServer(function(request, response) {&lt;br /&gt;
&lt;br /&gt;
		response.writeHead(200, {&amp;quot;Content-Type&amp;quot;: &amp;quot;text/plain&amp;quot;});&lt;br /&gt;
		var exec = require('child_process').exec, child;&lt;br /&gt;
		child = exec('./myi2c',&lt;br /&gt;
	    		function (error, stdout, stderr) {&lt;br /&gt;
				response.write(stdout);&lt;br /&gt;
				console.log('stdout:', stdout);&lt;br /&gt;
				console.log('stderr:', stderr);&lt;br /&gt;
				response.end();&lt;br /&gt;
				if(error != null) {&lt;br /&gt;
					console.log('exec error:', error);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		);&lt;br /&gt;
	}).listen(8888);&lt;br /&gt;
} catch(ex3) {&lt;br /&gt;
	console.log(&amp;quot;sb&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Node.js_Weather_Station</id>
		<title>ECE497 Project: Node.js Weather Station</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Node.js_Weather_Station"/>
				<updated>2012-02-13T21:22:18Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: /* Installation Instructions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Caogecym | Yuming Cao]], [[user:Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
Our project aims to implement the emerging nodejs technique (the server side javascript) as a lightweight web server on the beagleboard and accomplish a series of remote monitoring and control of hardware pins like gpio/led/i2c on the beagleboard.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what works.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what isn't working.&lt;br /&gt;
&lt;br /&gt;
End with a two sentence conclusion.&lt;br /&gt;
&lt;br /&gt;
The sentence count is approximate and only to give an idea of the expected length.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
1. Here's our [https://github.com/ github] path that includes everything useful to our project: [https://github.com/caoy1/Project https://github.com/caoy1/Project].  &lt;br /&gt;
&lt;br /&gt;
2. Additional packages installed via '''opkg''':&lt;br /&gt;
&lt;br /&gt;
* install nodejs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install nodejs&lt;br /&gt;
opkg install nodejs-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install node package manager&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl http://npmjs.org/install.sh | sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install socket.io module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install socket.io&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install binary module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install binary&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Include kernel mods.&lt;br /&gt;
* If there is extra hardware needed, include links to where it can be obtained.&lt;br /&gt;
* Here's the guideline to install Cloud9 easily: [https://github.com/jadonk/cloud9/blob/master/README.md]&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
Once everything is installed, how do you use the program?  Give details here, so if you have a long user manual, link to it here.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
1. We've already successfully using JavaScript read and write data to the linux gpio file.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/leds/beagleboard::usr0/trigger&amp;quot;, &amp;quot;heartbeat&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/gpio/export&amp;quot;, &amp;quot;&amp;quot;+5);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Even though we can access to the gpio in the above way, we still need to find someway to access to the I2C information. In the I2C exercises, in the C code provided in exercise 5, we still need to find some way in our javaScript instead of using i2c_smbus_write_byte() and i2c_smbus_read_byte(). Now there are two options for us:&lt;br /&gt;
&lt;br /&gt;
a) To translate tons of the C codes into JavaScript...&lt;br /&gt;
&lt;br /&gt;
b) Try to run the ./myi2c excutable file inside script...&lt;br /&gt;
&lt;br /&gt;
* It seems that the second way is easier... We've already found a ActiveXObject.run method... We're working on this... &lt;br /&gt;
&lt;br /&gt;
* At last we successfully excuate the ./myi2c file inside our javascript using the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var exec  = require('child_process').exec,&lt;br /&gt;
    child;&lt;br /&gt;
child = exec('./myi2c',&lt;br /&gt;
  function (error, stdout, stderr) {&lt;br /&gt;
    console.log('stdout:', stdout);&lt;br /&gt;
    console.log('stderr:', stderr);&lt;br /&gt;
    if (error !== null) {&lt;br /&gt;
      console.log('exec error:', error);&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the terminal will show the temperature. Now we are going to working on how to show this temperature information on the website so that we can visit it from any place!!!&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Node.js_Weather_Station</id>
		<title>ECE497 Project: Node.js Weather Station</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Node.js_Weather_Station"/>
				<updated>2012-02-13T21:21:55Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: /* Installation Instructions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Caogecym | Yuming Cao]], [[user:Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
Our project aims to implement the emerging nodejs technique (the server side javascript) as a lightweight web server on the beagleboard and accomplish a series of remote monitoring and control of hardware pins like gpio/led/i2c on the beagleboard.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what works.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what isn't working.&lt;br /&gt;
&lt;br /&gt;
End with a two sentence conclusion.&lt;br /&gt;
&lt;br /&gt;
The sentence count is approximate and only to give an idea of the expected length.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
* Here's our [https://github.com/ github] path that includes everything useful to our project: [https://github.com/caoy1/Project https://github.com/caoy1/Project].  &lt;br /&gt;
&lt;br /&gt;
* Additional packages installed via '''opkg''':&lt;br /&gt;
&lt;br /&gt;
* install nodejs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install nodejs&lt;br /&gt;
opkg install nodejs-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install node package manager&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl http://npmjs.org/install.sh | sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install socket.io module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install socket.io&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install binary module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install binary&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Include kernel mods.&lt;br /&gt;
* If there is extra hardware needed, include links to where it can be obtained.&lt;br /&gt;
* Here's the guideline to install Cloud9 easily: [https://github.com/jadonk/cloud9/blob/master/README.md]&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
Once everything is installed, how do you use the program?  Give details here, so if you have a long user manual, link to it here.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
1. We've already successfully using JavaScript read and write data to the linux gpio file.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/leds/beagleboard::usr0/trigger&amp;quot;, &amp;quot;heartbeat&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/gpio/export&amp;quot;, &amp;quot;&amp;quot;+5);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Even though we can access to the gpio in the above way, we still need to find someway to access to the I2C information. In the I2C exercises, in the C code provided in exercise 5, we still need to find some way in our javaScript instead of using i2c_smbus_write_byte() and i2c_smbus_read_byte(). Now there are two options for us:&lt;br /&gt;
&lt;br /&gt;
a) To translate tons of the C codes into JavaScript...&lt;br /&gt;
&lt;br /&gt;
b) Try to run the ./myi2c excutable file inside script...&lt;br /&gt;
&lt;br /&gt;
* It seems that the second way is easier... We've already found a ActiveXObject.run method... We're working on this... &lt;br /&gt;
&lt;br /&gt;
* At last we successfully excuate the ./myi2c file inside our javascript using the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var exec  = require('child_process').exec,&lt;br /&gt;
    child;&lt;br /&gt;
child = exec('./myi2c',&lt;br /&gt;
  function (error, stdout, stderr) {&lt;br /&gt;
    console.log('stdout:', stdout);&lt;br /&gt;
    console.log('stderr:', stderr);&lt;br /&gt;
    if (error !== null) {&lt;br /&gt;
      console.log('exec error:', error);&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the terminal will show the temperature. Now we are going to working on how to show this temperature information on the website so that we can visit it from any place!!!&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Node.js_Weather_Station</id>
		<title>ECE497 Project: Node.js Weather Station</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Node.js_Weather_Station"/>
				<updated>2012-02-13T21:20:32Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: /* Installation Instructions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Caogecym | Yuming Cao]], [[user:Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
Our project aims to implement the emerging nodejs technique (the server side javascript) as a lightweight web server on the beagleboard and accomplish a series of remote monitoring and control of hardware pins like gpio/led/i2c on the beagleboard.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what works.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what isn't working.&lt;br /&gt;
&lt;br /&gt;
End with a two sentence conclusion.&lt;br /&gt;
&lt;br /&gt;
The sentence count is approximate and only to give an idea of the expected length.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
* [https://github.com/ github] path: [https://github.com/caoy1/Project https://github.com/caoy1/Project].  &lt;br /&gt;
&lt;br /&gt;
* Additional packages installed via '''opkg'''.&lt;br /&gt;
&lt;br /&gt;
0. install nodejs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install nodejs&lt;br /&gt;
opkg install nodejs-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. install node package manager&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl http://npmjs.org/install.sh | sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. install socket.io module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install socket.io&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. install binary module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install binary&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Include kernel mods.&lt;br /&gt;
* If there is extra hardware needed, include links to where it can be obtained.&lt;br /&gt;
* Here's the guideline to install Cloud9 easily: [https://github.com/jadonk/cloud9/blob/master/README.md]&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
Once everything is installed, how do you use the program?  Give details here, so if you have a long user manual, link to it here.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
1. We've already successfully using JavaScript read and write data to the linux gpio file.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/leds/beagleboard::usr0/trigger&amp;quot;, &amp;quot;heartbeat&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/gpio/export&amp;quot;, &amp;quot;&amp;quot;+5);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Even though we can access to the gpio in the above way, we still need to find someway to access to the I2C information. In the I2C exercises, in the C code provided in exercise 5, we still need to find some way in our javaScript instead of using i2c_smbus_write_byte() and i2c_smbus_read_byte(). Now there are two options for us:&lt;br /&gt;
&lt;br /&gt;
a) To translate tons of the C codes into JavaScript...&lt;br /&gt;
&lt;br /&gt;
b) Try to run the ./myi2c excutable file inside script...&lt;br /&gt;
&lt;br /&gt;
* It seems that the second way is easier... We've already found a ActiveXObject.run method... We're working on this... &lt;br /&gt;
&lt;br /&gt;
* At last we successfully excuate the ./myi2c file inside our javascript using the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var exec  = require('child_process').exec,&lt;br /&gt;
    child;&lt;br /&gt;
child = exec('./myi2c',&lt;br /&gt;
  function (error, stdout, stderr) {&lt;br /&gt;
    console.log('stdout:', stdout);&lt;br /&gt;
    console.log('stderr:', stderr);&lt;br /&gt;
    if (error !== null) {&lt;br /&gt;
      console.log('exec error:', error);&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the terminal will show the temperature. Now we are going to working on how to show this temperature information on the website so that we can visit it from any place!!!&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Node.js_Weather_Station</id>
		<title>ECE497 Project: Node.js Weather Station</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Node.js_Weather_Station"/>
				<updated>2012-02-13T21:18:06Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: /* Work Breakdown */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Caogecym | Yuming Cao]], [[user:Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
Our project aims to implement the emerging nodejs technique (the server side javascript) as a lightweight web server on the beagleboard and accomplish a series of remote monitoring and control of hardware pins like gpio/led/i2c on the beagleboard.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what works.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what isn't working.&lt;br /&gt;
&lt;br /&gt;
End with a two sentence conclusion.&lt;br /&gt;
&lt;br /&gt;
The sentence count is approximate and only to give an idea of the expected length.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
&lt;br /&gt;
Give step by step instructions on how to install your project on the SPEd2 image.  &lt;br /&gt;
&lt;br /&gt;
* Include your [https://github.com/ github] path as a link like this:  [https://github.com/caoy1/Project https://github.com/caoy1/Project].  &lt;br /&gt;
* Include any additional packages installed via '''opkg'''.&lt;br /&gt;
&lt;br /&gt;
0. install nodejs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install nodejs&lt;br /&gt;
opkg install nodejs-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. install node package manager&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl http://npmjs.org/install.sh | sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. install socket.io module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install socket.io&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. install binary module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install binary&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Include kernel mods.&lt;br /&gt;
* If there is extra hardware needed, include links to where it can be obtained.&lt;br /&gt;
* Here's the guideline to install Cloud9 easily: [https://github.com/jadonk/cloud9/blob/master/README.md]&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
Once everything is installed, how do you use the program?  Give details here, so if you have a long user manual, link to it here.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
1. We've already successfully using JavaScript read and write data to the linux gpio file.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/leds/beagleboard::usr0/trigger&amp;quot;, &amp;quot;heartbeat&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/gpio/export&amp;quot;, &amp;quot;&amp;quot;+5);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Even though we can access to the gpio in the above way, we still need to find someway to access to the I2C information. In the I2C exercises, in the C code provided in exercise 5, we still need to find some way in our javaScript instead of using i2c_smbus_write_byte() and i2c_smbus_read_byte(). Now there are two options for us:&lt;br /&gt;
&lt;br /&gt;
a) To translate tons of the C codes into JavaScript...&lt;br /&gt;
&lt;br /&gt;
b) Try to run the ./myi2c excutable file inside script...&lt;br /&gt;
&lt;br /&gt;
* It seems that the second way is easier... We've already found a ActiveXObject.run method... We're working on this... &lt;br /&gt;
&lt;br /&gt;
* At last we successfully excuate the ./myi2c file inside our javascript using the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var exec  = require('child_process').exec,&lt;br /&gt;
    child;&lt;br /&gt;
child = exec('./myi2c',&lt;br /&gt;
  function (error, stdout, stderr) {&lt;br /&gt;
    console.log('stdout:', stdout);&lt;br /&gt;
    console.log('stderr:', stderr);&lt;br /&gt;
    if (error !== null) {&lt;br /&gt;
      console.log('exec error:', error);&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the terminal will show the temperature. Now we are going to working on how to show this temperature information on the website so that we can visit it from any place!!!&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Node.js_Weather_Station</id>
		<title>ECE497 Project: Node.js Weather Station</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Node.js_Weather_Station"/>
				<updated>2012-02-13T21:17:45Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: /* Work Breakdown */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Caogecym | Yuming Cao]], [[user:Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
Our project aims to implement the emerging nodejs technique (the server side javascript) as a lightweight web server on the beagleboard and accomplish a series of remote monitoring and control of hardware pins like gpio/led/i2c on the beagleboard.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what works.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what isn't working.&lt;br /&gt;
&lt;br /&gt;
End with a two sentence conclusion.&lt;br /&gt;
&lt;br /&gt;
The sentence count is approximate and only to give an idea of the expected length.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
&lt;br /&gt;
Give step by step instructions on how to install your project on the SPEd2 image.  &lt;br /&gt;
&lt;br /&gt;
* Include your [https://github.com/ github] path as a link like this:  [https://github.com/caoy1/Project https://github.com/caoy1/Project].  &lt;br /&gt;
* Include any additional packages installed via '''opkg'''.&lt;br /&gt;
&lt;br /&gt;
0. install nodejs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install nodejs&lt;br /&gt;
opkg install nodejs-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. install node package manager&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl http://npmjs.org/install.sh | sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. install socket.io module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install socket.io&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. install binary module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install binary&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Include kernel mods.&lt;br /&gt;
* If there is extra hardware needed, include links to where it can be obtained.&lt;br /&gt;
* Here's the guideline to install Cloud9 easily: [https://github.com/jadonk/cloud9/blob/master/README.md]&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
Once everything is installed, how do you use the program?  Give details here, so if you have a long user manual, link to it here.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
1. We've already successfully using JavaScript read and write data to the linux gpio file.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/leds/beagleboard::usr0/trigger&amp;quot;, &amp;quot;heartbeat&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/gpio/export&amp;quot;, &amp;quot;&amp;quot;+5);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Even though we can access to the gpio in the above way, we still need to find someway to access to the I2C information. In the I2C exercises, in the C code provided in exercise 5, we still need to find some way in our javaScript instead of using i2c_smbus_write_byte() and i2c_smbus_read_byte(). Now there are two options for us:&lt;br /&gt;
&lt;br /&gt;
* To translate tons of the C codes into JavaScript...&lt;br /&gt;
&lt;br /&gt;
* Try to run the ./myi2c excutable file inside script...&lt;br /&gt;
&lt;br /&gt;
* It seems that the second way is easier... We've already found a ActiveXObject.run method... We're working on this... &lt;br /&gt;
&lt;br /&gt;
* At last we successfully excuate the ./myi2c file inside our javascript using the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var exec  = require('child_process').exec,&lt;br /&gt;
    child;&lt;br /&gt;
child = exec('./myi2c',&lt;br /&gt;
  function (error, stdout, stderr) {&lt;br /&gt;
    console.log('stdout:', stdout);&lt;br /&gt;
    console.log('stderr:', stderr);&lt;br /&gt;
    if (error !== null) {&lt;br /&gt;
      console.log('exec error:', error);&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the terminal will show the temperature. Now we are going to working on how to show this temperature information on the website so that we can visit it from any place!!!&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Node.js_Weather_Station</id>
		<title>ECE497 Project: Node.js Weather Station</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Node.js_Weather_Station"/>
				<updated>2012-02-13T21:16:27Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: /* Work Breakdown */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Caogecym | Yuming Cao]], [[user:Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
Our project aims to implement the emerging nodejs technique (the server side javascript) as a lightweight web server on the beagleboard and accomplish a series of remote monitoring and control of hardware pins like gpio/led/i2c on the beagleboard.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what works.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what isn't working.&lt;br /&gt;
&lt;br /&gt;
End with a two sentence conclusion.&lt;br /&gt;
&lt;br /&gt;
The sentence count is approximate and only to give an idea of the expected length.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
&lt;br /&gt;
Give step by step instructions on how to install your project on the SPEd2 image.  &lt;br /&gt;
&lt;br /&gt;
* Include your [https://github.com/ github] path as a link like this:  [https://github.com/caoy1/Project https://github.com/caoy1/Project].  &lt;br /&gt;
* Include any additional packages installed via '''opkg'''.&lt;br /&gt;
&lt;br /&gt;
0. install nodejs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install nodejs&lt;br /&gt;
opkg install nodejs-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. install node package manager&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl http://npmjs.org/install.sh | sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. install socket.io module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install socket.io&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. install binary module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install binary&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Include kernel mods.&lt;br /&gt;
* If there is extra hardware needed, include links to where it can be obtained.&lt;br /&gt;
* Here's the guideline to install Cloud9 easily: [https://github.com/jadonk/cloud9/blob/master/README.md]&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
Once everything is installed, how do you use the program?  Give details here, so if you have a long user manual, link to it here.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
* We've already successfully using JavaScript read and write data to the linux gpio file.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/leds/beagleboard::usr0/trigger&amp;quot;, &amp;quot;heartbeat&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/gpio/export&amp;quot;, &amp;quot;&amp;quot;+5);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Even though we can access to the gpio in the above way, we still need to find someway to access to the I2C information. In the I2C exercises, in the C code provided in exercise 5, we still need to find some way in our javaScript instead of using i2c_smbus_write_byte() and i2c_smbus_read_byte(). Now there are two options for us:&lt;br /&gt;
&lt;br /&gt;
1. To translate tons of the C codes into JavaScript...&lt;br /&gt;
&lt;br /&gt;
2. Try to run the ./myi2c excutable file inside script...&lt;br /&gt;
&lt;br /&gt;
* It seems that the second way is easier... We've already found a ActiveXObject.run method... We're working on this... &lt;br /&gt;
* At last we successfully excuate the ./myi2c file inside our javascript using the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var exec  = require('child_process').exec,&lt;br /&gt;
    child;&lt;br /&gt;
child = exec('./myi2c',&lt;br /&gt;
  function (error, stdout, stderr) {&lt;br /&gt;
    console.log('stdout:', stdout);&lt;br /&gt;
    console.log('stderr:', stderr);&lt;br /&gt;
    if (error !== null) {&lt;br /&gt;
      console.log('exec error:', error);&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the terminal will show the temperature. Now we are going to working on how to show this temperature information on the website so that we can visit it from any place!!!&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Node.js_Weather_Station</id>
		<title>ECE497 Project: Node.js Weather Station</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Node.js_Weather_Station"/>
				<updated>2012-02-13T21:15:39Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: /* Work Breakdown */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Caogecym | Yuming Cao]], [[user:Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
Our project aims to implement the emerging nodejs technique (the server side javascript) as a lightweight web server on the beagleboard and accomplish a series of remote monitoring and control of hardware pins like gpio/led/i2c on the beagleboard.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what works.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what isn't working.&lt;br /&gt;
&lt;br /&gt;
End with a two sentence conclusion.&lt;br /&gt;
&lt;br /&gt;
The sentence count is approximate and only to give an idea of the expected length.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
&lt;br /&gt;
Give step by step instructions on how to install your project on the SPEd2 image.  &lt;br /&gt;
&lt;br /&gt;
* Include your [https://github.com/ github] path as a link like this:  [https://github.com/caoy1/Project https://github.com/caoy1/Project].  &lt;br /&gt;
* Include any additional packages installed via '''opkg'''.&lt;br /&gt;
&lt;br /&gt;
0. install nodejs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install nodejs&lt;br /&gt;
opkg install nodejs-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. install node package manager&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl http://npmjs.org/install.sh | sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. install socket.io module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install socket.io&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. install binary module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install binary&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Include kernel mods.&lt;br /&gt;
* If there is extra hardware needed, include links to where it can be obtained.&lt;br /&gt;
* Here's the guideline to install Cloud9 easily: [https://github.com/jadonk/cloud9/blob/master/README.md]&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
Once everything is installed, how do you use the program?  Give details here, so if you have a long user manual, link to it here.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
List the major tasks in your project and who did what.&lt;br /&gt;
* We've already successfully using JavaScript read and write data to the linux gpio file.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/leds/beagleboard::usr0/trigger&amp;quot;, &amp;quot;heartbeat&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/gpio/export&amp;quot;, &amp;quot;&amp;quot;+5);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.&lt;br /&gt;
&lt;br /&gt;
* Even though we can access to the gpio in the above way, we still need to find someway to access to the I2C information. In the I2C exercises, in the C code provided in exercise 5, we still need to find some way in our javaScript instead of using i2c_smbus_write_byte() and i2c_smbus_read_byte(). Now there are two options for us:&lt;br /&gt;
&lt;br /&gt;
1. To translate tons of the C codes into JavaScript...&lt;br /&gt;
&lt;br /&gt;
2. Try to run the ./myi2c excutable file inside script...&lt;br /&gt;
&lt;br /&gt;
* It seems that the second way is easier... We've already found a ActiveXObject.run method... We're working on this... &lt;br /&gt;
* At last we successfully excuate the ./myi2c file inside our javascript using the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var exec  = require('child_process').exec,&lt;br /&gt;
    child;&lt;br /&gt;
child = exec('./myi2c',&lt;br /&gt;
  function (error, stdout, stderr) {&lt;br /&gt;
    console.log('stdout:', stdout);&lt;br /&gt;
    console.log('stderr:', stderr);&lt;br /&gt;
    if (error !== null) {&lt;br /&gt;
      console.log('exec error:', error);&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the terminal will show the temperature. Now we are going to working on how to show this temperature information on the website so that we can visit it from any place!!!&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Node.js_Weather_Station</id>
		<title>ECE497 Project: Node.js Weather Station</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Node.js_Weather_Station"/>
				<updated>2012-02-13T21:15:03Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: /* Work Breakdown */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Caogecym | Yuming Cao]], [[user:Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
Our project aims to implement the emerging nodejs technique (the server side javascript) as a lightweight web server on the beagleboard and accomplish a series of remote monitoring and control of hardware pins like gpio/led/i2c on the beagleboard.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what works.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what isn't working.&lt;br /&gt;
&lt;br /&gt;
End with a two sentence conclusion.&lt;br /&gt;
&lt;br /&gt;
The sentence count is approximate and only to give an idea of the expected length.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
&lt;br /&gt;
Give step by step instructions on how to install your project on the SPEd2 image.  &lt;br /&gt;
&lt;br /&gt;
* Include your [https://github.com/ github] path as a link like this:  [https://github.com/caoy1/Project https://github.com/caoy1/Project].  &lt;br /&gt;
* Include any additional packages installed via '''opkg'''.&lt;br /&gt;
&lt;br /&gt;
0. install nodejs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install nodejs&lt;br /&gt;
opkg install nodejs-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. install node package manager&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl http://npmjs.org/install.sh | sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. install socket.io module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install socket.io&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. install binary module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install binary&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Include kernel mods.&lt;br /&gt;
* If there is extra hardware needed, include links to where it can be obtained.&lt;br /&gt;
* Here's the guideline to install Cloud9 easily: [https://github.com/jadonk/cloud9/blob/master/README.md]&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
Once everything is installed, how do you use the program?  Give details here, so if you have a long user manual, link to it here.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
List the major tasks in your project and who did what.&lt;br /&gt;
* We've already successfully using JavaScript read and write data to the linux gpio file.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/leds/beagleboard::usr0/trigger&amp;quot;, &amp;quot;heartbeat&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/gpio/export&amp;quot;, &amp;quot;&amp;quot;+5);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.&lt;br /&gt;
&lt;br /&gt;
* Even though we can access to the gpio in the above way, we still need to find someway to access to the I2C information. In the I2C exercises, in the C code provided in exercise 5, we still need to find some way in our javaScript instead of using i2c_smbus_write_byte() and i2c_smbus_read_byte(). Now there are two options for us:&lt;br /&gt;
&lt;br /&gt;
1. To translate tons of the C codes into JavaScript...&lt;br /&gt;
&lt;br /&gt;
2. Try to run the ./myi2c excutable file inside script...&lt;br /&gt;
&lt;br /&gt;
* It seems that the second way is easier... We've already found a ActiveXObject.run method... We're working on this... &lt;br /&gt;
* At last we successfully excuate the ./myi2c file inside our javascript using the following code:&lt;br /&gt;
&lt;br /&gt;
[pre]&lt;br /&gt;
var exec  = require('child_process').exec,&lt;br /&gt;
    child;&lt;br /&gt;
child = exec('./myi2c',&lt;br /&gt;
  function (error, stdout, stderr) {&lt;br /&gt;
    console.log('stdout:', stdout);&lt;br /&gt;
    console.log('stderr:', stderr);&lt;br /&gt;
    if (error !== null) {&lt;br /&gt;
      console.log('exec error:', error);&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
[/pre]&lt;br /&gt;
&lt;br /&gt;
And the terminal will show the temperature. Now we are going to working on how to show this temperature information on the website so that we can visit it from any place!!!&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Node.js_Weather_Station</id>
		<title>ECE497 Project: Node.js Weather Station</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Node.js_Weather_Station"/>
				<updated>2012-02-13T21:14:20Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: /* Work Breakdown */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Caogecym | Yuming Cao]], [[user:Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
Our project aims to implement the emerging nodejs technique (the server side javascript) as a lightweight web server on the beagleboard and accomplish a series of remote monitoring and control of hardware pins like gpio/led/i2c on the beagleboard.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what works.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what isn't working.&lt;br /&gt;
&lt;br /&gt;
End with a two sentence conclusion.&lt;br /&gt;
&lt;br /&gt;
The sentence count is approximate and only to give an idea of the expected length.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
&lt;br /&gt;
Give step by step instructions on how to install your project on the SPEd2 image.  &lt;br /&gt;
&lt;br /&gt;
* Include your [https://github.com/ github] path as a link like this:  [https://github.com/caoy1/Project https://github.com/caoy1/Project].  &lt;br /&gt;
* Include any additional packages installed via '''opkg'''.&lt;br /&gt;
&lt;br /&gt;
0. install nodejs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install nodejs&lt;br /&gt;
opkg install nodejs-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. install node package manager&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl http://npmjs.org/install.sh | sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. install socket.io module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install socket.io&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. install binary module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install binary&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Include kernel mods.&lt;br /&gt;
* If there is extra hardware needed, include links to where it can be obtained.&lt;br /&gt;
* Here's the guideline to install Cloud9 easily: [https://github.com/jadonk/cloud9/blob/master/README.md]&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
Once everything is installed, how do you use the program?  Give details here, so if you have a long user manual, link to it here.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
List the major tasks in your project and who did what.&lt;br /&gt;
* We've already successfully using JavaScript read and write data to the linux gpio file.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/leds/beagleboard::usr0/trigger&amp;quot;, &amp;quot;heartbeat&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/gpio/export&amp;quot;, &amp;quot;&amp;quot;+5);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.&lt;br /&gt;
&lt;br /&gt;
* Even though we can access to the gpio in the above way, we still need to find someway to access to the I2C information. In the I2C exercises, in the C code provided in exercise 5, we still need to find some way in our javaScript instead of using i2c_smbus_write_byte() and i2c_smbus_read_byte(). Now there are two options for us:&lt;br /&gt;
&lt;br /&gt;
1. To translate tons of the C codes into JavaScript...&lt;br /&gt;
2. Try to run the ./myi2c excutable file inside script...&lt;br /&gt;
&lt;br /&gt;
* It seems that the second way is easier... We've already found a ActiveXObject.run method... We're working on this... &lt;br /&gt;
* At last we successfully excuate the ./myi2c file inside our javascript using the following code:&lt;br /&gt;
&lt;br /&gt;
[pre]&lt;br /&gt;
var exec  = require('child_process').exec,&lt;br /&gt;
    child;&lt;br /&gt;
&lt;br /&gt;
child = exec('./myi2c',&lt;br /&gt;
  function (error, stdout, stderr) {&lt;br /&gt;
    console.log('stdout:', stdout);&lt;br /&gt;
    console.log('stderr:', stderr);&lt;br /&gt;
    if (error !== null) {&lt;br /&gt;
      console.log('exec error:', error);&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
[/pre]&lt;br /&gt;
&lt;br /&gt;
And the terminal will show the temperature. Now we are going to working on how to show this temperature information on the website so that we can visit it from any place!!!&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Node.js_Weather_Station</id>
		<title>ECE497 Project: Node.js Weather Station</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Node.js_Weather_Station"/>
				<updated>2012-02-12T05:17:11Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: /* Work Breakdown */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Caogecym | Yuming Cao]], [[user:Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
Give two sentence intro to the project.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what works.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what isn't working.&lt;br /&gt;
&lt;br /&gt;
End with a two sentence conclusion.&lt;br /&gt;
&lt;br /&gt;
The sentence count is approximate and only to give an idea of the expected length.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
&lt;br /&gt;
Give step by step instructions on how to install your project on the SPEd2 image.  &lt;br /&gt;
&lt;br /&gt;
* Include your [https://github.com/ github] path as a link like this:  [https://github.com/caoy1/Project https://github.com/caoy1/Project].  &lt;br /&gt;
* Include any additional packages installed via '''opkg'''.&lt;br /&gt;
&lt;br /&gt;
0. install nodejs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install nodejs&lt;br /&gt;
opkg install nodejs-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. install node package manager&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl http://npmjs.org/install.sh | sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. install socket.io module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install socket.io&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. install binary module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install binary&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Include kernel mods.&lt;br /&gt;
* If there is extra hardware needed, include links to where it can be obtained.&lt;br /&gt;
* Here's the guideline to install Cloud9 easily: [https://github.com/jadonk/cloud9/blob/master/README.md]&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
Once everything is installed, how do you use the program?  Give details here, so if you have a long user manual, link to it here.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
List the major tasks in your project and who did what.&lt;br /&gt;
* We've already successfully using JavaScript read and write data to the linux gpio file.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/leds/beagleboard::usr0/trigger&amp;quot;, &amp;quot;heartbeat&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/gpio/export&amp;quot;, &amp;quot;&amp;quot;+5);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.&lt;br /&gt;
*Even though we can access to the gpio in the above way, we still need to find someway to access to the I2C information. In the I2C exercises, in the C code provided in exercise 5, we still need to find some way in our javaScript instead of using i2c_smbus_write_byte() and i2c_smbus_read_byte(). Now there are two options for us:&lt;br /&gt;
&lt;br /&gt;
* To translate tons of the C codes into JavaScript...&lt;br /&gt;
* Try to run the ./myi2c excutable file inside script...&lt;br /&gt;
&lt;br /&gt;
It seems that the second way is easier... We've already found a ActiveXObject.run method... We're working on this...&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Node.js_Weather_Station</id>
		<title>ECE497 Project: Node.js Weather Station</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Node.js_Weather_Station"/>
				<updated>2012-02-12T05:16:32Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: /* Work Breakdown */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Caogecym | Yuming Cao]], [[user:Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
Give two sentence intro to the project.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what works.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what isn't working.&lt;br /&gt;
&lt;br /&gt;
End with a two sentence conclusion.&lt;br /&gt;
&lt;br /&gt;
The sentence count is approximate and only to give an idea of the expected length.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
&lt;br /&gt;
Give step by step instructions on how to install your project on the SPEd2 image.  &lt;br /&gt;
&lt;br /&gt;
* Include your [https://github.com/ github] path as a link like this:  [https://github.com/caoy1/Project https://github.com/caoy1/Project].  &lt;br /&gt;
* Include any additional packages installed via '''opkg'''.&lt;br /&gt;
&lt;br /&gt;
0. install nodejs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install nodejs&lt;br /&gt;
opkg install nodejs-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. install node package manager&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl http://npmjs.org/install.sh | sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. install socket.io module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install socket.io&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. install binary module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install binary&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Include kernel mods.&lt;br /&gt;
* If there is extra hardware needed, include links to where it can be obtained.&lt;br /&gt;
* Here's the guideline to install Cloud9 easily: [https://github.com/jadonk/cloud9/blob/master/README.md]&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
Once everything is installed, how do you use the program?  Give details here, so if you have a long user manual, link to it here.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
List the major tasks in your project and who did what.&lt;br /&gt;
* We've already successfully using JavaScript read and write data to the linux gpio file.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/leds/beagleboard::usr0/trigger&amp;quot;, &amp;quot;heartbeat&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fs.writeFileSync(&amp;quot;/sys/class/gpio/export&amp;quot;, &amp;quot;&amp;quot;+5);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.&lt;br /&gt;
*Even though we can access to the gpio in the above way, we still need to find someway to access to the I2C information. In the I2C exercises, in the C code provided in exercise 5, we still need to find some way in our javaScript instead of using i2c_smbus_write_byte() and i2c_smbus_read_byte(). Now there's two options for us:&lt;br /&gt;
&lt;br /&gt;
* To translate tons of the C codes into JavaScript...&lt;br /&gt;
* Try to run the ./myi2c excutable file inside script...&lt;br /&gt;
&lt;br /&gt;
It's seems that the second way is easier... We've already found a ActiveXObject.run method... We're working on this...&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Node.js_Weather_Station</id>
		<title>ECE497 Project: Node.js Weather Station</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Node.js_Weather_Station"/>
				<updated>2012-02-11T16:25:05Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: /* Work Breakdown */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Caogecym | Yuming Cao]], [[user:Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
Give two sentence intro to the project.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what works.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what isn't working.&lt;br /&gt;
&lt;br /&gt;
End with a two sentence conclusion.&lt;br /&gt;
&lt;br /&gt;
The sentence count is approximate and only to give an idea of the expected length.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
&lt;br /&gt;
Give step by step instructions on how to install your project on the SPEd2 image.  &lt;br /&gt;
&lt;br /&gt;
* Include your [https://github.com/ github] path as a link like this:  [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn].  &lt;br /&gt;
* Include any additional packages installed via '''opkg'''.&lt;br /&gt;
&lt;br /&gt;
0. install nodejs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install nodejs&lt;br /&gt;
opkg install nodejs-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. install node package manager&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl http://npmjs.org/install.sh | sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. install socket.io module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install socket.io&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. install binary module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install binary&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Include kernel mods.&lt;br /&gt;
* If there is extra hardware needed, include links to where it can be obtained.&lt;br /&gt;
* Here's the guideline to install Cloud9 easily: [https://github.com/jadonk/cloud9/blob/master/README.md]&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
Once everything is installed, how do you use the program?  Give details here, so if you have a long user manual, link to it here.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
List the major tasks in your project and who did what.&lt;br /&gt;
* Here's the code of how node.js will interact with beagleboard hardware&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var myStream = fs.createReadStream(&lt;br /&gt;
  '/dev/input/event2',&lt;br /&gt;
  {&lt;br /&gt;
   'bufferSize': 16&lt;br /&gt;
  }&lt;br /&gt;
 );&lt;br /&gt;
 myStream.addListener('data', myListener);&lt;br /&gt;
 myStream.addListener('error', function(error) {&lt;br /&gt;
  sys.puts(&amp;quot;Read error: &amp;quot; + error);&lt;br /&gt;
 });&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.&lt;br /&gt;
*Even though we can access to the gpio in the above way, we still need to find someway to access to the I2C information. In the I2C exercises, we just use the I2C tool, which is not enough for our project...&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Node.js_Weather_Station</id>
		<title>ECE497 Project: Node.js Weather Station</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Node.js_Weather_Station"/>
				<updated>2012-02-11T15:35:28Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Caogecym | Yuming Cao]], [[user:Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
Give two sentence intro to the project.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what works.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what isn't working.&lt;br /&gt;
&lt;br /&gt;
End with a two sentence conclusion.&lt;br /&gt;
&lt;br /&gt;
The sentence count is approximate and only to give an idea of the expected length.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
&lt;br /&gt;
Give step by step instructions on how to install your project on the SPEd2 image.  &lt;br /&gt;
&lt;br /&gt;
* Include your [https://github.com/ github] path as a link like this:  [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn].  &lt;br /&gt;
* Include any additional packages installed via '''opkg'''.&lt;br /&gt;
&lt;br /&gt;
0. install nodejs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install nodejs&lt;br /&gt;
opkg install nodejs-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. install node package manager&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl http://npmjs.org/install.sh | sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. install socket.io module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install socket.io&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. install binary module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install binary&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Include kernel mods.&lt;br /&gt;
* If there is extra hardware needed, include links to where it can be obtained.&lt;br /&gt;
* Here's the guideline to install Cloud9 easily: [https://github.com/jadonk/cloud9/blob/master/README.md]&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
Once everything is installed, how do you use the program?  Give details here, so if you have a long user manual, link to it here.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
List the major tasks in your project and who did what.&lt;br /&gt;
* Here's the code of how node.js will interact with beagleboard hardware&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var myStream = fs.createReadStream(&lt;br /&gt;
  '/dev/input/event2',&lt;br /&gt;
  {&lt;br /&gt;
   'bufferSize': 16&lt;br /&gt;
  }&lt;br /&gt;
 );&lt;br /&gt;
 myStream.addListener('data', myListener);&lt;br /&gt;
 myStream.addListener('error', function(error) {&lt;br /&gt;
  sys.puts(&amp;quot;Read error: &amp;quot; + error);&lt;br /&gt;
 });&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Node.js_Weather_Station</id>
		<title>ECE497 Project: Node.js Weather Station</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Node.js_Weather_Station"/>
				<updated>2012-02-09T20:45:15Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Caogecym | Yuming Cao]], [[user:Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
Give two sentence intro to the project.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what works.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what isn't working.&lt;br /&gt;
&lt;br /&gt;
End with a two sentence conclusion.&lt;br /&gt;
&lt;br /&gt;
The sentence count is approximate and only to give an idea of the expected length.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
&lt;br /&gt;
Give step by step instructions on how to install your project on the SPEd2 image.  &lt;br /&gt;
&lt;br /&gt;
* Include your [https://github.com/ github] path as a link like this:  [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn].  &lt;br /&gt;
* Include any additional packages installed via '''opkg'''.&lt;br /&gt;
&lt;br /&gt;
0. install nodejs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install nodejs&lt;br /&gt;
opkg install nodejs-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. install node package manager&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl http://npmjs.org/install.sh | sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. install socket.io module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install socket.io&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. install binary module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install binary&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Include kernel mods.&lt;br /&gt;
* If there is extra hardware needed, include links to where it can be obtained.&lt;br /&gt;
* Here's the guideline to install Cloud9 easily: [https://github.com/jadonk/cloud9/blob/master/README.md]&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
Once everything is installed, how do you use the program?  Give details here, so if you have a long user manual, link to it here.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
List the major tasks in your project and who did what.&lt;br /&gt;
&lt;br /&gt;
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Node.js_Weather_Station</id>
		<title>ECE497 Project: Node.js Weather Station</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Node.js_Weather_Station"/>
				<updated>2012-02-09T20:44:14Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Caogecym | Yuming Cao]], [[user:Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
Give two sentence intro to the project.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what works.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what isn't working.&lt;br /&gt;
&lt;br /&gt;
End with a two sentence conclusion.&lt;br /&gt;
&lt;br /&gt;
The sentence count is approximate and only to give an idea of the expected length.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
&lt;br /&gt;
Give step by step instructions on how to install your project on the SPEd2 image.  &lt;br /&gt;
&lt;br /&gt;
* Include your [https://github.com/ github] path as a link like this:  [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn].  &lt;br /&gt;
* Include any additional packages installed via '''opkg'''.&lt;br /&gt;
&lt;br /&gt;
0. install nodejs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
opkg update&lt;br /&gt;
opkg install nodejs&lt;br /&gt;
opkg install nodejs-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. install node package manager&lt;br /&gt;
: curl http://npmjs.org/install.sh | sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. install socket.io module&lt;br /&gt;
: npm install socket.io&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. install binary module&lt;br /&gt;
- npm install binary&lt;br /&gt;
&lt;br /&gt;
* Include kernel mods.&lt;br /&gt;
* If there is extra hardware needed, include links to where it can be obtained.&lt;br /&gt;
* Here's the guideline to install Cloud9 easily: [https://github.com/jadonk/cloud9/blob/master/README.md]&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
Once everything is installed, how do you use the program?  Give details here, so if you have a long user manual, link to it here.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
List the major tasks in your project and who did what.&lt;br /&gt;
&lt;br /&gt;
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Node.js_Weather_Station</id>
		<title>ECE497 Project: Node.js Weather Station</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Node.js_Weather_Station"/>
				<updated>2012-02-09T20:41:47Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Caogecym | Yuming Cao]], [[user:Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
Give two sentence intro to the project.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what works.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what isn't working.&lt;br /&gt;
&lt;br /&gt;
End with a two sentence conclusion.&lt;br /&gt;
&lt;br /&gt;
The sentence count is approximate and only to give an idea of the expected length.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
&lt;br /&gt;
Give step by step instructions on how to install your project on the SPEd2 image.  &lt;br /&gt;
&lt;br /&gt;
* Include your [https://github.com/ github] path as a link like this:  [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn].  &lt;br /&gt;
* Include any additional packages installed via '''opkg'''.&lt;br /&gt;
0. install nodejs&lt;br /&gt;
: opkg update&lt;br /&gt;
- opkg &lt;br /&gt;
&lt;br /&gt;
   install nodejs&lt;br /&gt;
: opkg install nodejs-dev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. install node package manager&lt;br /&gt;
: curl http://npmjs.org/install.sh | sh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. install socket.io module&lt;br /&gt;
: npm install socket.io&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. install binary module&lt;br /&gt;
- npm install binary&lt;br /&gt;
&lt;br /&gt;
* Include kernel mods.&lt;br /&gt;
* If there is extra hardware needed, include links to where it can be obtained.&lt;br /&gt;
* Here's the guideline to install Cloud9 easily: [https://github.com/jadonk/cloud9/blob/master/README.md]&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
Once everything is installed, how do you use the program?  Give details here, so if you have a long user manual, link to it here.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
List the major tasks in your project and who did what.&lt;br /&gt;
&lt;br /&gt;
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Node.js_Weather_Station</id>
		<title>ECE497 Project: Node.js Weather Station</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Node.js_Weather_Station"/>
				<updated>2012-01-27T21:11:55Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Caogecym | Yuming Cao]], [[user:Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
Give two sentence intro to the project.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what works.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what isn't working.&lt;br /&gt;
&lt;br /&gt;
End with a two sentence conclusion.&lt;br /&gt;
&lt;br /&gt;
The sentence count is approximate and only to give an idea of the expected length.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
&lt;br /&gt;
Give step by step instructions on how to install your project on the SPEd2 image.  &lt;br /&gt;
&lt;br /&gt;
* Include your [https://github.com/ github] path as a link like this:  [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn].  &lt;br /&gt;
* Include any additional packages installed via '''opkg'''.&lt;br /&gt;
* Include kernel mods.&lt;br /&gt;
* If there is extra hardware needed, include links to where it can be obtained.&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
Once everything is installed, how do you use the program?  Give details here, so if you have a long user manual, link to it here.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
List the major tasks in your project and who did what.&lt;br /&gt;
&lt;br /&gt;
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Contributions_and_Project_Status</id>
		<title>ECE497 Contributions and Project Status</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Contributions_and_Project_Status"/>
				<updated>2012-01-27T21:11:24Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
== Project Status ==&lt;br /&gt;
&lt;br /&gt;
Please edit this page and add your project to this list. Copy my [[ECE497 Project Template]] to your own eLinux page and include the title of your project in the name of the page.  &lt;br /&gt;
&lt;br /&gt;
# [[User:Yoder | Mark A. Yoder]], [[ECE497 Project Template | My Beagle Project]]&lt;br /&gt;
# [[user:Yanj|Mona Yan]] and [[user:Harrisgw| Greg Harrison]], [[PS EYE QT PROJECT | Playstation Eye Audio with Qt]]&lt;br /&gt;
# [[user:Caogecym | Yuming Cao]] and [[user:Ziyi Zhang | Ziyi Zhang]], [[Node.js Weather Station]]&lt;br /&gt;
# [[user:Yifei| Yifei Li]] and [[user:Gemini91| Guanqun Wang]], [[ Kinect Project | Play games using Kinect on Beagleboard]]&lt;br /&gt;
== Contributions ==&lt;br /&gt;
Please edit this page and add your user name, alphabetically by last name, to this list.&lt;br /&gt;
&lt;br /&gt;
Take a look at what you and others have contributed.&lt;br /&gt;
&lt;br /&gt;
# [[Special:Contributions/Yuming | Yuming Cao]]&lt;br /&gt;
# [[Special:Contributions/Yifei | Yifei Li]]&lt;br /&gt;
# [[Special:Contributions/Harrisgw | Greg Harrison]]&lt;br /&gt;
# [[Special:Contributions/mac | Jack Ma]]&lt;br /&gt;
# [[Special:Contributions/Gemini91 | Guanqun Wang]]&lt;br /&gt;
# [[Special:Contributions/Yanj | Mona Yan]]&lt;br /&gt;
# [[Special:Contributions/Yoder | Mark A. Yoder]]&lt;br /&gt;
# [[Special:Contributions/Yuhasmj | Michael Yuhas]]&lt;br /&gt;
# [[Special:Contributions/Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
# [[Special:Contributions/Zitnikdj | David Zitnik]]&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Node.js_Weather_Station</id>
		<title>ECE497 Project: Node.js Weather Station</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Node.js_Weather_Station"/>
				<updated>2012-01-27T21:10:50Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Caogecym | Yuming Cao]], [[user:zhangz |Ziyi Zhang]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
Give two sentence intro to the project.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what works.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what isn't working.&lt;br /&gt;
&lt;br /&gt;
End with a two sentence conclusion.&lt;br /&gt;
&lt;br /&gt;
The sentence count is approximate and only to give an idea of the expected length.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
&lt;br /&gt;
Give step by step instructions on how to install your project on the SPEd2 image.  &lt;br /&gt;
&lt;br /&gt;
* Include your [https://github.com/ github] path as a link like this:  [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn].  &lt;br /&gt;
* Include any additional packages installed via '''opkg'''.&lt;br /&gt;
* Include kernel mods.&lt;br /&gt;
* If there is extra hardware needed, include links to where it can be obtained.&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
Once everything is installed, how do you use the program?  Give details here, so if you have a long user manual, link to it here.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
List the major tasks in your project and who did what.&lt;br /&gt;
&lt;br /&gt;
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_Node.js_Weather_Station</id>
		<title>ECE497 Project: Node.js Weather Station</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_Node.js_Weather_Station"/>
				<updated>2012-01-27T21:05:44Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: Created page with &amp;quot;Category:ECE497  Team members: Mark A. Yoder, (List all the team members here with link to their eLinux User page.  Use my format.  == Executive Summary ==  Gi...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Yoder|Mark A. Yoder]], (List all the team members here with link to their eLinux User page.  Use my format.&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
Give two sentence intro to the project.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what works.&lt;br /&gt;
&lt;br /&gt;
Give two sentences telling what isn't working.&lt;br /&gt;
&lt;br /&gt;
End with a two sentence conclusion.&lt;br /&gt;
&lt;br /&gt;
The sentence count is approximate and only to give an idea of the expected length.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
&lt;br /&gt;
Give step by step instructions on how to install your project on the SPEd2 image.  &lt;br /&gt;
&lt;br /&gt;
* Include your [https://github.com/ github] path as a link like this:  [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn].  &lt;br /&gt;
* Include any additional packages installed via '''opkg'''.&lt;br /&gt;
* Include kernel mods.&lt;br /&gt;
* If there is extra hardware needed, include links to where it can be obtained.&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
&lt;br /&gt;
Once everything is installed, how do you use the program?  Give details here, so if you have a long user manual, link to it here.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
List the major tasks in your project and who did what.&lt;br /&gt;
&lt;br /&gt;
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/User:Caogecym</id>
		<title>User:Caogecym</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/User:Caogecym"/>
				<updated>2012-01-27T21:04:39Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: Created page with &amp;quot;Yuming Cao, Hi all.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Yuming Cao, Hi all.&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Contributions_and_Project_Status</id>
		<title>ECE497 Contributions and Project Status</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Contributions_and_Project_Status"/>
				<updated>2012-01-27T21:03:41Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
== Project Status ==&lt;br /&gt;
&lt;br /&gt;
Please edit this page and add your project to this list. Copy my [[ECE497 Project Template]] to your own eLinux page and include the title of your project in the name of the page.  &lt;br /&gt;
&lt;br /&gt;
# [[User:Yoder | Mark A. Yoder]], [[ECE497 Project Template | My Beagle Project]]&lt;br /&gt;
# [[user:Yanj|Mona Yan]] and [[user:Harrisgw| Greg Harrison]], [[PS EYE QT PROJECT | Playstation Eye Audio with Qt]]&lt;br /&gt;
# [[user:Caogecym | Yuming Cao]] and [[user:zhangz | Ziyi Zhang]], [[Node.js Weather Station]]&lt;br /&gt;
# [[user:Yifei| Yifei Li]] and [[user:Gemini91| Guanqun Wang]], [[ Kincet Project | Play games using Kinect on Beagleboard]]&lt;br /&gt;
== Contributions ==&lt;br /&gt;
Please edit this page and add your user name, alphabetically by last name, to this list.&lt;br /&gt;
&lt;br /&gt;
Take a look at what you and others have contributed.&lt;br /&gt;
&lt;br /&gt;
# [[Special:Contributions/Yuming | Yuming Cao]]&lt;br /&gt;
# [[Special:Contributions/Yifei | Yifei Li]]&lt;br /&gt;
# [[Special:Contributions/Harrisgw | Greg Harrison]]&lt;br /&gt;
# [[Special:Contributions/mac | Jack Ma]]&lt;br /&gt;
# [[Special:Contributions/Gemini91 | Guanqun Wang]]&lt;br /&gt;
# [[Special:Contributions/Yanj | Mona Yan]]&lt;br /&gt;
# [[Special:Contributions/Yoder | Mark A. Yoder]]&lt;br /&gt;
# [[Special:Contributions/Yuhasmj | Michael Yuhas]]&lt;br /&gt;
# [[Special:Contributions/Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
# [[Special:Contributions/Zitnikdj | David Zitnik]]&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Contributions_and_Project_Status</id>
		<title>ECE497 Contributions and Project Status</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Contributions_and_Project_Status"/>
				<updated>2012-01-27T21:02:53Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
== Project Status ==&lt;br /&gt;
&lt;br /&gt;
Please edit this page and add your project to this list. Copy my [[ECE497 Project Template]] to your own eLinux page and include the title of your project in the name of the page.  &lt;br /&gt;
&lt;br /&gt;
# [[User:Yoder | Mark A. Yoder]], [[ECE497 Project Template | My Beagle Project]]&lt;br /&gt;
# [[user:Yanj|Mona Yan]] and [[user:Harrisgw| Greg Harrison]], [[PS EYE QT PROJECT | Playstation Eye Audio with Qt]]&lt;br /&gt;
# [[user:caogecym | Yuming Cao]] and [[user:zhangz | Ziyi Zhang]], [[Node.js Weather Station]]&lt;br /&gt;
# [[user:Yifei| Yifei Li]] and [[user:Gemini91| Guanqun Wang]], [[ Kincet Project | Play games using Kinect on Beagleboard]]&lt;br /&gt;
== Contributions ==&lt;br /&gt;
Please edit this page and add your user name, alphabetically by last name, to this list.&lt;br /&gt;
&lt;br /&gt;
Take a look at what you and others have contributed.&lt;br /&gt;
&lt;br /&gt;
# [[Special:Contributions/Yuming | Yuming Cao]]&lt;br /&gt;
# [[Special:Contributions/Yifei | Yifei Li]]&lt;br /&gt;
# [[Special:Contributions/Harrisgw | Greg Harrison]]&lt;br /&gt;
# [[Special:Contributions/mac | Jack Ma]]&lt;br /&gt;
# [[Special:Contributions/Gemini91 | Guanqun Wang]]&lt;br /&gt;
# [[Special:Contributions/Yanj | Mona Yan]]&lt;br /&gt;
# [[Special:Contributions/Yoder | Mark A. Yoder]]&lt;br /&gt;
# [[Special:Contributions/Yuhasmj | Michael Yuhas]]&lt;br /&gt;
# [[Special:Contributions/Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
# [[Special:Contributions/Zitnikdj | David Zitnik]]&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Contributions_and_Project_Status</id>
		<title>ECE497 Contributions and Project Status</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Contributions_and_Project_Status"/>
				<updated>2012-01-27T21:01:22Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: edit yuming and ziyi's project status&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
== Project Status ==&lt;br /&gt;
&lt;br /&gt;
Please edit this page and add your project to this list. Copy my [[ECE497 Project Template]] to your own eLinux page and include the title of your project in the name of the page.  &lt;br /&gt;
&lt;br /&gt;
# [[User:Yoder | Mark A. Yoder]], [[ECE497 Project Template | My Beagle Project]]&lt;br /&gt;
# [[user:Yanj|Mona Yan]] and [[user:Harrisgw| Greg Harrison]], [[PS EYE QT PROJECT | Playstation Eye Audio with Qt]]&lt;br /&gt;
# [[user:caoy1 | Yuming Cao]] and [[user:zhangz | Ziyi Zhang]], [[Node.js Weather Station]]&lt;br /&gt;
== Contributions ==&lt;br /&gt;
Please edit this page and add your user name, alphabetically by last name, to this list.&lt;br /&gt;
&lt;br /&gt;
Take a look at what you and others have contributed.&lt;br /&gt;
&lt;br /&gt;
# [[Special:Contributions/Yuming | Yuming Cao]]&lt;br /&gt;
# [[Special:Contributions/Yifei | Yifei Li]]&lt;br /&gt;
# [[Special:Contributions/Harrisgw | Greg Harrison]]&lt;br /&gt;
# [[Special:Contributions/mac | Jack Ma]]&lt;br /&gt;
# [[Special:Contributions/Gemini91 | Guanqun Wang]]&lt;br /&gt;
# [[Special:Contributions/Yanj | Mona Yan]]&lt;br /&gt;
# [[Special:Contributions/Yoder | Mark A. Yoder]]&lt;br /&gt;
# [[Special:Contributions/Yuhasmj | Michael Yuhas]]&lt;br /&gt;
# [[Special:Contributions/Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
# [[Special:Contributions/Zitnikdj | David Zitnik]]&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project_Ideas</id>
		<title>ECE497 Project Ideas</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project_Ideas"/>
				<updated>2012-01-05T20:47:19Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
[[Category:BeagleBoard]]&lt;br /&gt;
&lt;br /&gt;
We have both mini projects and projects in ECE497.  &lt;br /&gt;
&lt;br /&gt;
'''Mini projects''' involved finding something interested in the Beagle world and installing it to your beagle and demoing it to the class.  You would also create a wiki page documenting what you did to get it installed.  Often you may find multiple efforts do to something, for example there are a few efforts to port Android on the Beagle.  Your task is to figure out which one should be used.  Generally mini projects won't require you to write new code; however they are the background work that may lead to a full project.  You should do a couple mini projects for the class.  Generally they are done alone, but working in pairs is OK. These will be about 1/3 of your grade and should be done in the first 5 weeks or so.&lt;br /&gt;
&lt;br /&gt;
Only one '''full project''' is done for the class and it's done with a team of 3 or 4.  These projects can take a mini project (or a whole new idea) and add to it.  The goal is to have your work contribute to the open source world. Any code is generated will be kept on [https://github.com/ github] and a [http://bitbake.berlios.de/manual/ bitbake receipt] will be created to automatically download and create the object files.&lt;br /&gt;
&lt;br /&gt;
What follows are&lt;br /&gt;
&lt;br /&gt;
; Places to look for project ideas: Feel free to add your own suggestions.&lt;br /&gt;
; Mini Project ideas: Add your own suggestions, and do some of them.  Mark the ones you've done.&lt;br /&gt;
; Full Project ideas: ditto.&lt;br /&gt;
&lt;br /&gt;
== Sources for Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
Here are some links where you'll find ideas for your project.&lt;br /&gt;
* [http://wiki.omap.com/index.php/ETechDays_Community_Lightning_Talks ETechDays Community Lightning Talks], this is a one-day web-based conference where many project ideas are presented.  One of our 2009-2010 senior design projects was found here.&lt;br /&gt;
* [http://beagleboard.org/project Official list of Beagle Projects], there are many Beagle specific projects listed here.  Many are inactive.  ''List your project here once it running.''&lt;br /&gt;
* [http://www.youtube.com/watch?v=Mk1xjbA-ISE Augmented Reality Project], here's an idea that I think we can do on the Beagle.  Rather than using augmented reality glasses, I'd suggest we use a [http://focus.ti.com/dlpdmd/docs/dlpdiscovery.tsp?sectionId=60&amp;amp;tabId=2235 TI DLP pico projector]. [http://www.hitlabnz.org/wiki/EmbeddedAR Here's] AR running on the Beagle. &lt;br /&gt;
* [http://code.google.com/p/0xdroid/ Android], this is one of a couple of efforts to port [http://source.android.com/ Google's Android OS] to the Beagle.&lt;br /&gt;
* [[BeagleBoard/Ideas-2009]] Google summer code ideas 2009.&lt;br /&gt;
&lt;br /&gt;
== Mini Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
! Suggestor&lt;br /&gt;
! Implementor&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Write up some notes on the NEON extensions to ARM.&lt;br /&gt;
| [http://www.cnx-software.com/2011/11/27/arm-neon-tutorial-in-c-and-assembler/ arm-neon-tutorial-in-c-and-assembler]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Jack Ma&lt;br /&gt;
| Work up an example of controlling the PWM registers from the shell.&lt;br /&gt;
| [http://esdw.wordpress.com/2010/03/25/a-useful-tool-devmem2/ PWM via the shell]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Weather Station&lt;br /&gt;
| [http://dominion.thruhere.net/koen/cms/using-the-beaglebone-as-a-weatherstation Ultrasonic weather]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Mike Yuhas&lt;br /&gt;
| Interface the BeagleBoard with an SRF08 Ultrasonic Ranger over I2C&lt;br /&gt;
| [http://yetanotherhackersblog.wordpress.com/2011/04/07/interfacing-the-beagleboard-with-an-srf08-ultrasonic-ranger-over-i2c Ultrasonic Ranger]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Compile the PowerVR examples&lt;br /&gt;
| [http://www.imgtec.com/powervr/insider/sdkdownloads/index.asp PowerVR Insider SDK Downloads]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Work up some GStreamer PS EYE Demos&lt;br /&gt;
| [http://www.electronsonradio.com/2011/06/playstation-eye-gstreamer-examples GStreamer PS EYE Demos] and [http://www.ridgerun.com/blog/?p=224 RidgeRun]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Douglas Selby&lt;br /&gt;
| Get TI' embedded speech recognizer installed and demo the examples.&lt;br /&gt;
| [https://gforge.ti.com/gf/project/tiesr TI Embedded Speech Recognizer]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| David Zitnik&lt;br /&gt;
| Demo last year's TI speech project.  I have a microphone amplifier and mike you can use.&lt;br /&gt;
| [[ECE597 Project pyWikiReader]]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Stephen Mayhew&lt;br /&gt;
| Find who is doing what with Kinect on the Beagle and install and run it.&lt;br /&gt;
| [http://www.google.com/webhp?rlz=1C1GPCK_enUS392US392&amp;amp;sourceid=chrome-instant&amp;amp;ie=UTF-8&amp;amp;ion=1#hl=en&amp;amp;sugexp=ldymls&amp;amp;xhr=t&amp;amp;q=beagleboard+kinect&amp;amp;cp=0&amp;amp;qe=YmVhZ2xlYm9hcmQga2lu&amp;amp;qesig=9qrD0rFfjWfujRRGmkB_Bw&amp;amp;pkc=AFgZ2tn-cylx0f71PasgBKOazjBQY3VK712RWQ7DueEjQNAdbOHr6BCgUd9xdyXyPe8TWErkesrQ246vygwImnAS5mIzCG2-5g&amp;amp;pf=p&amp;amp;sclient=psy&amp;amp;rlz=1C1GPCK_enUS392US392&amp;amp;site=webhp&amp;amp;source=hp&amp;amp;aq=0&amp;amp;aqi=&amp;amp;aql=&amp;amp;oq=beagleboard+kin&amp;amp;pbx=1&amp;amp;bav=on.2,or.&amp;amp;fp=3e817b7ec5d13467&amp;amp;ion=1 Google - beagleboard kinect]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Greg Harrison&lt;br /&gt;
| I have several [http://en.wikipedia.org/wiki/PlayStation_Eye Sony PlayStation Eye web cams] and I have examples of how to pull video from them via V4L2 ([[ECE497 DaVinci Workshop Labs]]).  The Eye also has a 4 microphone array.  I don't know how to get audio from it.  Figure out how.  This may expand to a full project if there is no solution out there.&lt;br /&gt;
| [http://www.google.com/webhp?rlz=1C1GPCK_enUS392US392&amp;amp;sourceid=chrome-instant&amp;amp;ie=UTF-8&amp;amp;ion=1#hl=en&amp;amp;sugexp=ldymls&amp;amp;xhr=t&amp;amp;q=beagleboard+playstation+eye+microphone+array&amp;amp;cp=0&amp;amp;qe=YmVhZ2xlYm9hcmQgcGxheXN0YXRpb24gZXllIG1pY3JvcGhvbmUgYXJyYXk&amp;amp;qesig=Sdh5Ru_jodwYydoeTls1GA&amp;amp;pkc=AFgZ2tmwB41tQwF7XwrJPqFnf0NRO911bMCrbnU1HR9Vm6-Pg0sH8LvbJZsKwjKRUpoin4cZlwLIngZw8OC7dyanjcJCG4N_kg&amp;amp;pf=p&amp;amp;sclient=psy&amp;amp;rlz=1C1GPCK_enUS392US392&amp;amp;site=webhp&amp;amp;aq=f&amp;amp;aqi=&amp;amp;aql=&amp;amp;oq=beagleboard+playstation+eye+microphone+array&amp;amp;pbx=1&amp;amp;bav=on.2,or.&amp;amp;fp=3e817b7ec5d13467&amp;amp;ion=1 Google - beagleboard playstation eye microphone array]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Find some examples of how to use '''cmem'''. CMEM is an API and library for managing one or more blocks of physically contiguous memory. It also provides address translation services (e.g. virtual to physical translation) and user-mode cache management APIs. It's used for managing the shared memory between the ARM and the DSP on the processor.  I've been unable to find examples of how to use it.&lt;br /&gt;
| [http://processors.wiki.ti.com/index.php/CMEM_Overview CMEM Overview]&lt;br /&gt;
|-&lt;br /&gt;
| Mike Lester&lt;br /&gt;
| Jack Ma&lt;br /&gt;
| Connect to your beagleboard using ethernet over USB. This allows your beagleboard to share the host computer's internet connection and allow you to connect via VNC/ssh without the need for an external router/switch. This should make development much easier. &lt;br /&gt;
| [[BeagleBoardBeginners#Connect_with_your_beagleboard_using_VNC_and_ethernet_over_USB | VNC]]&lt;br /&gt;
|-&lt;br /&gt;
| Brian Hulette&lt;br /&gt;
| &lt;br /&gt;
| Experiment with audio synthesis and/or sampling/processing.  You could either synthesize and play a few tones to generate a song, or have the Beagle sample an audio signal then process and output it to create a sort of effects pedal. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| David McGinnis&lt;br /&gt;
| David McGinnis&lt;br /&gt;
| Look into connecting the beagleboard to a phone or headphones using bluetooth. This could involve either outputting audio and taking in audio from a bluetooth headset, allowing you to have audio I/O with the beagleboard, or could involve connecting with phones automatically as they come into range of the beagleboard, allowing for an automatic attendence registration system, among other things.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| David Bliss&lt;br /&gt;
| David Bliss&lt;br /&gt;
| Get a video stream from a PS Eye, and identify the relevant device files.&lt;br /&gt;
| [http://en.wikipedia.org/wiki/PlayStation_Eye#cite_note-Linux_support-32 PlayStation_Eye#cite_note-Linux_support-32]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| William Gerth&lt;br /&gt;
| William Gerth&lt;br /&gt;
| Explore the possibility of implementing OpenAOS on the Beagle, to make a portable media player and etc.&lt;br /&gt;
| http://www.openaos.org/&lt;br /&gt;
|-&lt;br /&gt;
| Joel Carlson&lt;br /&gt;
|&lt;br /&gt;
| Lacking a serial port and don't have a USB-serial converter?  Why not find a way to make the BeagleBoard boot over a USB console connection?&lt;br /&gt;
| [http://itgen.blogspot.com/2011/03/beagleboard-xm-u-boot-without-serial.html BeagleBoard XM U-boot without Serial]&lt;br /&gt;
|-&lt;br /&gt;
| Joel Carlson&lt;br /&gt;
| Joel Carlson&lt;br /&gt;
| Depending on what one is working on, it might be useful to mount the BeagleBoard root filesystem over NFS.  The link to the right does that using a USB-Ethernet connection, but one that just runs over an Ethernet cable would be nice.&lt;br /&gt;
| [http://elinux.org/Mount_BeagleBoard_Root_Filesystem_over_NFS_via_USB Mount BeagleBoard Root Filesystem over NFS via USB]&lt;br /&gt;
Here's an example of mounting dfs/afs on the Beagle&lt;br /&gt;
&lt;br /&gt;
[[ECE497 Mounting dfs/afs in Linux]]&lt;br /&gt;
|-&lt;br /&gt;
| Lei Liu&lt;br /&gt;
| Lei Liu&lt;br /&gt;
| Build communication with FPGA via USB port.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Bamberger&lt;br /&gt;
| Aaron Bamberger&lt;br /&gt;
| Play around with the BeagleBoard's various SPI and I2C ports, and get it to talk to some simple SPI and I2C peripherals, such as a 7-Segment display driver or small LCD panel&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Jay Dial&lt;br /&gt;
| Jay Dial&lt;br /&gt;
| Look into the parallel computing possibilities of the BeagleBoard. See how difficult it would be to get two BeagleBoards to communicate properly for parallel computing.&lt;br /&gt;
| [http://antipastohw.blogspot.com/2010/09/how-to-make-beagleboard-elastic-r.html How to make a BeagleBoard Elastic R Beowulf Cluster]&lt;br /&gt;
|-&lt;br /&gt;
| Randy Billingsley&lt;br /&gt;
| Randy Billingsley&lt;br /&gt;
| Configure wlan on the beagle board using a wireless usb adapter&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Mike Fuson&lt;br /&gt;
| Mike Fuson&lt;br /&gt;
| Get XBMC working on the beagle.&lt;br /&gt;
| [http://elinux.org/BeagleBoard/GSoC/2010_Projects/XBMC XBMC wiki page]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Sam Allen&lt;br /&gt;
|&lt;br /&gt;
| Port Android to beagle&lt;br /&gt;
| It's done.  Check out [http://code.google.com/p/rowboat/ this].&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Yifei Li&lt;br /&gt;
| Change the splash screen to a Rose logo when the Beagle starts up&lt;br /&gt;
| [http://blog.bizmobiletech.com/?p=253&amp;amp;utm_source=feedburner&amp;amp;utm_medium=twitter&amp;amp;utm_campaign=Feed%3A+BeagleBoard+%28BeagleBoard.org%29 How to Change Angstrom Boot logo in beagleboard]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Ziyi Zhang&lt;br /&gt;
| Do remote debugging with Eclipse.  My page needs updating. This [http://www.lvr.com/eclipse1.htm tutorial] might be helpful.&lt;br /&gt;
| [[ECE497 Installing the Eclipse IDE]]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Jack Ma&lt;br /&gt;
| Investigate Eigen. Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms. Explicit vectorization is performed for SSE 2/3/4, ARM NEON, and AltiVec instruction sets, with graceful fallback to non-vectorized code. This means it should run fast on the Beagle.  How fast does it run?  Has anyone used it on the Beagle?&lt;br /&gt;
| [http://eigen.tuxfamily.org/index.php?title=Main_Page eigen.tuxfamily.org]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Find what libraries are available for the DSP side of the DM 3730 and write some examples that use them.&lt;br /&gt;
| [http://focus.ti.com/docs/toolsw/folders/print/sprc265.html C64x+ DSP Library (DSPLIB)] &lt;br /&gt;
[http://focus.ti.com/docs/toolsw/folders/print/sprc092.html DSPLIB] &lt;br /&gt;
[http://focus.ti.com/docs/toolsw/folders/print/sprc094.html IMGLIB]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Convert the OSS labs to use the new ALSA drivers&lt;br /&gt;
| [http://www.alsa-project.org/main/index.php/Tutorials_and_Presentations ALSA Tutorials]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Dig into the DSS drivers.  The OMAP display subsystem supports rotation and mirroring, but the '''mirror''' and '''rotate''' files in '''/sys/devices/platform/omapdss/display''' ''X'' don't work.  Find the code that implements them see if you can figure out what's wrong.&lt;br /&gt;
| [http://elinux.org/BeagleBoardFAQ#.22DSS2.22_display_driver_for_.3E.3D_2.6.29 dss2]&lt;br /&gt;
|-&lt;br /&gt;
| Jack Ma&lt;br /&gt;
| &lt;br /&gt;
| Install an RT kernel on beagleboard. If successful, this could turn into a full project for exploring RT system and application.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Jack Ma&lt;br /&gt;
| &lt;br /&gt;
| Interface beagleboard with a GPS device to read location information. If successful, see if it's possible build a (small) app that downloads appropriate map from google map and shows the beagleboard's location.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Jack Ma&lt;br /&gt;
| &lt;br /&gt;
| Install a VPN server on beagleboard.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Guanqun Wang&lt;br /&gt;
| &lt;br /&gt;
| Run beagle board with a small LCD display&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Yifei Li&lt;br /&gt;
| &lt;br /&gt;
| Demo a BeagleLight program that could synchronize LEDs with music.&lt;br /&gt;
| http://processors.wiki.ti.com/index.php/BeagleLight&lt;br /&gt;
|-&lt;br /&gt;
| Yuming Cao&lt;br /&gt;
| Yuming Cao&lt;br /&gt;
| Make beagleboard make a phone call&lt;br /&gt;
| http://www.youtube.com/watch?v=uVCx1S8RLfs&amp;amp;feature=related&lt;br /&gt;
|-&lt;br /&gt;
| Mona Yan&lt;br /&gt;
| Mona Yan&lt;br /&gt;
| Display BeagleBoard orientation by using accelerometer and opengl.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Jack Ma&lt;br /&gt;
| Jack Ma&lt;br /&gt;
| Automatically start VNC service after login on BeagleBoard.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Full Projects ==&lt;br /&gt;
&lt;br /&gt;
=== Winter 2011-2012 ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
! Team&amp;amp;nbsp;Members&lt;br /&gt;
! Project Title&lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| [http://www.instructables.com/id/Email-notification-bell/ Email notification bell]&lt;br /&gt;
| Make a real hardware bell ring when email arrives.  Do it all on the Beagle without the need of a host PC.&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| [http://e2e.ti.com/blogs_/b/dlp_mems_blog/archive/2011/05/13/3d-structured-light-using-dlp-technology.aspx 3D Structured Light using DLP® Technology]&lt;br /&gt;
| Create 3D maps using a DLP pico and the Beagle.&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| [http://m.matrixsynth.com/2011/06/beagleboard-synth-proof-of-concept.htm Beagle Midi]&lt;br /&gt;
| Make the Beagle synthesize midi files.&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| [http://www.sakoman.com/OMAP/an-overiew-of-omap3-power-management-with-2639-pm.html Beagle Power Management]&lt;br /&gt;
| Work up some power management demos.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2011 ===&lt;br /&gt;
Edit this page to add projects you would like to do.  If you aren't in the class, add ideas you would like to see done by class members.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
! Team&amp;amp;nbsp;Members&lt;br /&gt;
! Project Title&lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| [https://gforge.ti.com/gf/project/tiesr TI Embedded Speech Recognizer]&lt;br /&gt;
| Port TI's fixed-point speech recognizer to the DSP.  It currently runs on the ARM.&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Kinect&lt;br /&gt;
| [http://hackaday.com/2010/11/15/rendering-a-3d-environment-from-kinect-video/ Here] and [http://gamerfront.net/2010/12/with-a-second-kinect-you-can-map-out-your-bedroom-in-3d/4644 here] are some interesting things people are doing with Kinects.  Maybe we could port it to the Beagle.&lt;br /&gt;
|-&lt;br /&gt;
| Mike Lester&lt;br /&gt;
| Accelerometer-based auto-leveled projection&lt;br /&gt;
| Several projects have been started to add [http://matthsu-abacus.blogspot.com/2009/11/build-3-axis-accelerometer-on.html  accelerometer support] to the BeagleBoard. This project would involve getting an accelerometer installed and working, perhaps using a [http://elinux.org/BeagleBoard_Trainer trainer board], as well the [http://focus.ti.com/general/docs/gencontent.tsp?contentId=52770 TI Pico Projector]. The orientation data from the accelerometer would be used to rotate, skew, keystone the projected image in order to keep it level and normalized.&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Bamberger&lt;br /&gt;
| Kinect Based 3d Scanner&lt;br /&gt;
| Build some sort of motorized gantry that allows the Kinect to be rotated around (and possibly from top to bottom) of an arbitrary object.  The motors would be controlled using the BeagleBoard's I2C or SPI interfaces.  Use libfreenect to capture depth information from every side of the object as the Kinect rotates around the object.  Use this data and OpenGL to build a 3d model of the scanned object&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Port winDSK6 to the Beagle&lt;br /&gt;
| [http://www.ece.wisc.edu/~morrow/software/ winDSK6] is a Windows program that talks to a TI 'C6711 DSK and performs many interesting audio effects.  This project would implement the code running on the Windows side on the ARM.  The ARM could capture a frame of audio and send it to the DSP for processing.  The ARM could then send the processed audio to the speakers.  [http://processors.wiki.ti.com/index.php/C6Run c6run] would be used to interact with the DSP.  &lt;br /&gt;
|-&lt;br /&gt;
| David Bliss&lt;br /&gt;
| Automated Die Tester&lt;br /&gt;
| Make a device that can roll a die, and keep statistics on how random the die is. The build can either be very complex, or very simple, depending on how you define &amp;quot;rolling a die&amp;quot;. The software doesn't necessarily have to know what the numbers mean, it just has to be able to uniquely identify the sides.&lt;br /&gt;
|-&lt;br /&gt;
| Stephen Mayhew&lt;br /&gt;
| Set-Playing System&lt;br /&gt;
| Set is a relatively simple card game that lends itself nicely to image recognition and computer play. The layout is not very structured, and the game play is pretty simple. This project would incorporate image recognition, projection of possible moves (using the pico projector), and maybe even speech synthesis, and recognition. For example, if someone didn't know how to play Set, then the board could take them through a tutorial, asking questions of the user as it went along (&amp;quot;If I have these 2 cards, what 3rd card would make a set?&amp;quot;). This would make for an interesting demo at conferences. &lt;br /&gt;
|-&lt;br /&gt;
| Michael Fuson  &lt;br /&gt;
Jay Dial&lt;br /&gt;
| Spectrum Analyzer&lt;br /&gt;
|Create a real-time audio Spectrum analyzer on the BeagleBoard. [http://elinux.org/ECE497_Project_Spectrum_Analyzer Project Page]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2010 ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
! Team&amp;amp;nbsp;Members&lt;br /&gt;
! Project Title&lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
| Yannick Polius&lt;br /&gt;
| [[ECE597 Project pyWikiReader | pyWikiReader]]&lt;br /&gt;
| This project is mostly software, with the hardware element being the use of the dsp. The idea is to tie together three technologies: speech recognition, speech synthesis, and internet access in order to create an interface capable of orating information to the user based on a vocal command. The implementation I have in mind is to use the Pocket Sphinx speech recognition engine to first understand what the user wants through speech, such as &amp;quot;Rose-Hulman&amp;quot;. Once the speech is translated, the software can execute a Wikipedia search to pull said item's page. Most of the important info is contained within the introductory paragraph, so the software will take only that chunk and feed it into the Flite speech synthesis engine. The end result is a simple machine with &amp;quot;mother box&amp;quot; like usability, that is, no interaction besides what is natural to the user (speaking) should be necessary to retrieve the information.&lt;br /&gt;
|-&lt;br /&gt;
| Paul Morrison &amp;lt;br&amp;gt; Steven Stark&lt;br /&gt;
| [[ECE597 3D Chess | 3D Chess with Networking]]&lt;br /&gt;
| This project would simulate a hand-held chess game, and the game would allow two player games using two beagleboards over a network connection.  The graphics would use the beagle's PowerVR SGX for hardware accelerated graphics by using OpenGL.  In addition to 3D graphics and networking, a third portion of the project would be to optimize the boot time because a chess computer should start up quickly.&lt;br /&gt;
|-&lt;br /&gt;
| Tom Most &amp;lt;br&amp;gt; David Baty &amp;lt;br&amp;gt; Mark Jacobson&lt;br /&gt;
| [[ECE597: Sumo Robot|Sumo Robot]]&lt;br /&gt;
| The goal of this project is to create a robot capable of competing in the 3.0 kg weight class of a sumo competition ([http://www.youtube.com/watch?v=V3OR_sHrOJM an example]).  This would have minor hardware and electronics elements, but would focus on communication with sensors using the BeagleBoard and the Linux kernel.  At minimum, this involves sensors to detect the edge of the ring and the opposing robot.  This would likely be implemented using Sharp IR rangefinders, a ultrasonic rangefinders, and ideally a camera.  [http://circ.mtco.com/competitions/2010/rules/sumo Sumo rules].&lt;br /&gt;
|-&lt;br /&gt;
|Brian Embry &amp;lt;br&amp;gt; Jessica Lipscomb &amp;lt;br&amp;gt; Paul Banister&lt;br /&gt;
| [[ECE597 Network based MP3 player]]&lt;br /&gt;
| Network based mp3 player.  The Beagle will be programmed using a custom, protocol for transferring files from a network based server (x86 pc) to a Beagle.  Speakers will be attached to the Beagle, where the file will be played back.  Possible extensions are a LCD for displaying id3 tag information, and buttons for user interaction (next track, previous track, etc.) on the GPIO interface.&lt;br /&gt;
|-&lt;br /&gt;
|[[user:routhcr | Chris Routh]] &amp;lt;br&amp;gt; [[user:collinjc | J. Cody Collins]] &amp;lt;br&amp;gt; [[user:jacksogc | Greg Jackson]] [[user:Xinkeqiong | Keqiong Xin]]&lt;br /&gt;
| [[ECE597: Auto HUD]]&lt;br /&gt;
| Use the beagle board to run image recognition on a camera feed located inside a car, and then signaling to the driver via a pico projector various objects of interest.&lt;br /&gt;
|-&lt;br /&gt;
| Adam Jesionowski&amp;lt;br&amp;gt;Qiang Jiang&lt;br /&gt;
| [[ECE597_Adding_Sense_to_Beagle|Adding Sense to Beagle]] (See [[BeagleBoard/GSoC/Ideas]])&lt;br /&gt;
| Sensory aware applications are becoming more mainstream with the release of the Apple iPhone. This project would combine both HW and SW to add sensory awareness to beagle. First, additional modules such as GPS, 3-axis accelerometers, Gyroscopes, Temperature Sensors, Humidity Sensors, Pressure Sensors, etc, would be added to beagle to compliment the microphone input in order to allow sensing of the real world environment. Then SW APIs would need to be layered on top to allow easy access to the sensory data for use by applications. &lt;br /&gt;
|-&lt;br /&gt;
| Mitch Garvin &amp;lt;br&amp;gt; Matt Luke &amp;lt;br&amp;gt; Elliot Simon &amp;lt;br&amp;gt; Jian Li&lt;br /&gt;
| [[ECE597 Interactive Pong|Interactive Pong]]&lt;br /&gt;
| Run classic pong, projecting the screen and using a camera to track user's hands for input.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project_Ideas</id>
		<title>ECE497 Project Ideas</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project_Ideas"/>
				<updated>2011-12-09T03:06:21Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
[[Category:BeagleBoard]]&lt;br /&gt;
&lt;br /&gt;
We have both mini projects and projects in ECE497.  &lt;br /&gt;
&lt;br /&gt;
'''Mini projects''' involved finding something interested in the Beagle world and installing it to your beagle and demoing it to the class.  You would also create a wiki page documenting what you did to get it installed.  Often you may find multiple efforts do to something, for example there are a few efforts to port Android on the Beagle.  Your task is to figure out which one should be used.  Generally mini projects won't require you to write new code; however they are the background work that may lead to a full project.  You should do a couple mini projects for the class.  Generally they are done alone, but working in pairs is OK. These will be about 1/3 of your grade and should be done in the first 5 weeks or so.&lt;br /&gt;
&lt;br /&gt;
Only one '''full project''' is done for the class and it's done with a team of 3 or 4.  These projects can take a mini project (or a whole new idea) and add to it.  The goal is to have your work contribute to the open source world. Any code is generated will be kept on [https://github.com/ github] and a [http://bitbake.berlios.de/manual/ bitbake receipt] will be created to automatically download and create the object files.&lt;br /&gt;
&lt;br /&gt;
What follows are&lt;br /&gt;
&lt;br /&gt;
; Places to look for project ideas: Feel free to add your own suggestions.&lt;br /&gt;
; Mini Project ideas: Add your own suggestions, and do some of them.  Mark the ones you've done.&lt;br /&gt;
; Full Project ideas: ditto.&lt;br /&gt;
&lt;br /&gt;
== Sources for Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
Here are some links where you'll find ideas for your project.&lt;br /&gt;
* [http://wiki.omap.com/index.php/ETechDays_Community_Lightning_Talks ETechDays Community Lightning Talks], this is a one-day web-based conference where many project ideas are presented.  One of our 2009-2010 senior design projects was found here.&lt;br /&gt;
* [http://beagleboard.org/project Official list of Beagle Projects], there are many Beagle specific projects listed here.  Many are inactive.  ''List your project here once it running.''&lt;br /&gt;
* [http://www.youtube.com/watch?v=Mk1xjbA-ISE Augmented Reality Project], here's an idea that I think we can do on the Beagle.  Rather than using augmented reality glasses, I'd suggest we use a [http://focus.ti.com/dlpdmd/docs/dlpdiscovery.tsp?sectionId=60&amp;amp;tabId=2235 TI DLP pico projector]. [http://www.hitlabnz.org/wiki/EmbeddedAR Here's] AR running on the Beagle. &lt;br /&gt;
* [http://code.google.com/p/0xdroid/ Android], this is one of a couple of efforts to port [http://source.android.com/ Google's Android OS] to the Beagle.&lt;br /&gt;
* [[BeagleBoard/Ideas-2009]] Google summer code ideas 2009.&lt;br /&gt;
&lt;br /&gt;
== Mini Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
! Suggestor&lt;br /&gt;
! Implementor&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Jack Ma&lt;br /&gt;
| Work up an example of controlling the PWM registers from the shell.&lt;br /&gt;
| [http://esdw.wordpress.com/2010/03/25/a-useful-tool-devmem2/ PWM via the shell]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Weather Station&lt;br /&gt;
| [http://dominion.thruhere.net/koen/cms/using-the-beaglebone-as-a-weatherstation Ultrasonic weather]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Mike Yuhas&lt;br /&gt;
| Interface the BeagleBoard with an SRF08 Ultrasonic Ranger over I2C&lt;br /&gt;
| [http://yetanotherhackersblog.wordpress.com/2011/04/07/interfacing-the-beagleboard-with-an-srf08-ultrasonic-ranger-over-i2c Ultrasonic Ranger]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Compile the PowerVR examples&lt;br /&gt;
| [http://www.imgtec.com/powervr/insider/sdkdownloads/index.asp PowerVR Insider SDK Downloads]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Work up some GStreamer PS EYE Demos&lt;br /&gt;
| [http://www.electronsonradio.com/2011/06/playstation-eye-gstreamer-examples GStreamer PS EYE Demos] and [http://www.ridgerun.com/blog/?p=224 RidgeRun]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Douglas Selby&lt;br /&gt;
| Get TI' embedded speech recognizer installed and demo the examples.&lt;br /&gt;
| [https://gforge.ti.com/gf/project/tiesr TI Embedded Speech Recognizer]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| David Zitnik&lt;br /&gt;
| Demo last year's TI speech project.  I have a microphone amplifier and mike you can use.&lt;br /&gt;
| [[ECE597 Project pyWikiReader]]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Stephen Mayhew&lt;br /&gt;
| Find who is doing what with Kinect on the Beagle and install and run it.&lt;br /&gt;
| [http://www.google.com/webhp?rlz=1C1GPCK_enUS392US392&amp;amp;sourceid=chrome-instant&amp;amp;ie=UTF-8&amp;amp;ion=1#hl=en&amp;amp;sugexp=ldymls&amp;amp;xhr=t&amp;amp;q=beagleboard+kinect&amp;amp;cp=0&amp;amp;qe=YmVhZ2xlYm9hcmQga2lu&amp;amp;qesig=9qrD0rFfjWfujRRGmkB_Bw&amp;amp;pkc=AFgZ2tn-cylx0f71PasgBKOazjBQY3VK712RWQ7DueEjQNAdbOHr6BCgUd9xdyXyPe8TWErkesrQ246vygwImnAS5mIzCG2-5g&amp;amp;pf=p&amp;amp;sclient=psy&amp;amp;rlz=1C1GPCK_enUS392US392&amp;amp;site=webhp&amp;amp;source=hp&amp;amp;aq=0&amp;amp;aqi=&amp;amp;aql=&amp;amp;oq=beagleboard+kin&amp;amp;pbx=1&amp;amp;bav=on.2,or.&amp;amp;fp=3e817b7ec5d13467&amp;amp;ion=1 Google - beagleboard kinect]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Greg Harrison&lt;br /&gt;
| I have several [http://en.wikipedia.org/wiki/PlayStation_Eye Sony PlayStation Eye web cams] and I have examples of how to pull video from them via V4L2 ([[ECE497 DaVinci Workshop Labs]]).  The Eye also has a 4 microphone array.  I don't know how to get audio from it.  Figure out how.  This may expand to a full project if there is no solution out there.&lt;br /&gt;
| [http://www.google.com/webhp?rlz=1C1GPCK_enUS392US392&amp;amp;sourceid=chrome-instant&amp;amp;ie=UTF-8&amp;amp;ion=1#hl=en&amp;amp;sugexp=ldymls&amp;amp;xhr=t&amp;amp;q=beagleboard+playstation+eye+microphone+array&amp;amp;cp=0&amp;amp;qe=YmVhZ2xlYm9hcmQgcGxheXN0YXRpb24gZXllIG1pY3JvcGhvbmUgYXJyYXk&amp;amp;qesig=Sdh5Ru_jodwYydoeTls1GA&amp;amp;pkc=AFgZ2tmwB41tQwF7XwrJPqFnf0NRO911bMCrbnU1HR9Vm6-Pg0sH8LvbJZsKwjKRUpoin4cZlwLIngZw8OC7dyanjcJCG4N_kg&amp;amp;pf=p&amp;amp;sclient=psy&amp;amp;rlz=1C1GPCK_enUS392US392&amp;amp;site=webhp&amp;amp;aq=f&amp;amp;aqi=&amp;amp;aql=&amp;amp;oq=beagleboard+playstation+eye+microphone+array&amp;amp;pbx=1&amp;amp;bav=on.2,or.&amp;amp;fp=3e817b7ec5d13467&amp;amp;ion=1 Google - beagleboard playstation eye microphone array]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Find some examples of how to use '''cmem'''. CMEM is an API and library for managing one or more blocks of physically contiguous memory. It also provides address translation services (e.g. virtual to physical translation) and user-mode cache management APIs. It's used for managing the shared memory between the ARM and the DSP on the processor.  I've been unable to find examples of how to use it.&lt;br /&gt;
| [http://processors.wiki.ti.com/index.php/CMEM_Overview CMEM Overview]&lt;br /&gt;
|-&lt;br /&gt;
| Mike Lester&lt;br /&gt;
| &lt;br /&gt;
| Connect to your beagleboard using ethernet over USB. This allows your beagleboard to share the host computer's internet connection and allow you to connect via VNC/ssh without the need for an external router/switch. This should make development much easier. &lt;br /&gt;
| [[BeagleBoardBeginners#Connect_with_your_beagleboard_using_VNC_and_ethernet_over_USB | VNC]]&lt;br /&gt;
|-&lt;br /&gt;
| Brian Hulette&lt;br /&gt;
| &lt;br /&gt;
| Experiment with audio synthesis and/or sampling/processing.  You could either synthesize and play a few tones to generate a song, or have the Beagle sample an audio signal then process and output it to create a sort of effects pedal. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| David McGinnis&lt;br /&gt;
| David McGinnis&lt;br /&gt;
| Look into connecting the beagleboard to a phone or headphones using bluetooth. This could involve either outputting audio and taking in audio from a bluetooth headset, allowing you to have audio I/O with the beagleboard, or could involve connecting with phones automatically as they come into range of the beagleboard, allowing for an automatic attendence registration system, among other things.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| David Bliss&lt;br /&gt;
| David Bliss&lt;br /&gt;
| Get a video stream from a PS Eye, and identify the relevant device files.&lt;br /&gt;
| [http://en.wikipedia.org/wiki/PlayStation_Eye#cite_note-Linux_support-32 PlayStation_Eye#cite_note-Linux_support-32]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| William Gerth&lt;br /&gt;
| William Gerth&lt;br /&gt;
| Explore the possibility of implementing OpenAOS on the Beagle, to make a portable media player and etc.&lt;br /&gt;
| http://www.openaos.org/&lt;br /&gt;
|-&lt;br /&gt;
| Joel Carlson&lt;br /&gt;
|&lt;br /&gt;
| Lacking a serial port and don't have a USB-serial converter?  Why not find a way to make the BeagleBoard boot over a USB console connection?&lt;br /&gt;
| [http://itgen.blogspot.com/2011/03/beagleboard-xm-u-boot-without-serial.html BeagleBoard XM U-boot without Serial]&lt;br /&gt;
|-&lt;br /&gt;
| Joel Carlson&lt;br /&gt;
| Joel Carlson&lt;br /&gt;
| Depending on what one is working on, it might be useful to mount the BeagleBoard root filesystem over NFS.  The link to the right does that using a USB-Ethernet connection, but one that just runs over an Ethernet cable would be nice.&lt;br /&gt;
| [http://elinux.org/Mount_BeagleBoard_Root_Filesystem_over_NFS_via_USB Mount BeagleBoard Root Filesystem over NFS via USB]&lt;br /&gt;
Here's an example of mounting dfs/afs on the Beagle&lt;br /&gt;
&lt;br /&gt;
[[ECE497 Mounting dfs/afs in Linux]]&lt;br /&gt;
|-&lt;br /&gt;
| Lei Liu&lt;br /&gt;
| Lei Liu&lt;br /&gt;
| Build communication with FPGA via USB port.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Bamberger&lt;br /&gt;
| Aaron Bamberger&lt;br /&gt;
| Play around with the BeagleBoard's various SPI and I2C ports, and get it to talk to some simple SPI and I2C peripherals, such as a 7-Segment display driver or small LCD panel&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Jay Dial&lt;br /&gt;
| Jay Dial&lt;br /&gt;
| Look into the parallel computing possibilities of the BeagleBoard. See how difficult it would be to get two BeagleBoards to communicate properly for parallel computing.&lt;br /&gt;
| [http://antipastohw.blogspot.com/2010/09/how-to-make-beagleboard-elastic-r.html How to make a BeagleBoard Elastic R Beowulf Cluster]&lt;br /&gt;
|-&lt;br /&gt;
| Randy Billingsley&lt;br /&gt;
| Randy Billingsley&lt;br /&gt;
| Configure wlan on the beagle board using a wireless usb adapter&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Mike Fuson&lt;br /&gt;
| Mike Fuson&lt;br /&gt;
| Get XBMC working on the beagle.&lt;br /&gt;
| [http://elinux.org/BeagleBoard/GSoC/2010_Projects/XBMC XBMC wiki page]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Sam Allen&lt;br /&gt;
|&lt;br /&gt;
| Port Android to beagle&lt;br /&gt;
| It's done.  Check out [http://code.google.com/p/rowboat/ this].&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Yifei Li&lt;br /&gt;
| Change the splash screen to a Rose logo when the Beagle starts up&lt;br /&gt;
| [http://blog.bizmobiletech.com/?p=253&amp;amp;utm_source=feedburner&amp;amp;utm_medium=twitter&amp;amp;utm_campaign=Feed%3A+BeagleBoard+%28BeagleBoard.org%29 How to Change Angstrom Boot logo in beagleboard]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Ziyi Zhang&lt;br /&gt;
| Do remote debugging with Eclipse.  My page needs updating. This [http://www.lvr.com/eclipse1.htm tutorial] might be helpful.&lt;br /&gt;
| [[ECE497 Installing the Eclipse IDE]]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
|&lt;br /&gt;
| Investigate Eigen. Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms. Explicit vectorization is performed for SSE 2/3/4, ARM NEON, and AltiVec instruction sets, with graceful fallback to non-vectorized code. This means it should run fast on the Beagle.  How fast does it run?  Has anyone used it on the Beagle?&lt;br /&gt;
| [http://eigen.tuxfamily.org/index.php?title=Main_Page eigen.tuxfamily.org]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Find what libraries are available for the DSP side of the DM 3730 and write some examples that use them.&lt;br /&gt;
| [http://focus.ti.com/docs/toolsw/folders/print/sprc265.html C64x+ DSP Library (DSPLIB)] &lt;br /&gt;
[http://focus.ti.com/docs/toolsw/folders/print/sprc092.html DSPLIB] &lt;br /&gt;
[http://focus.ti.com/docs/toolsw/folders/print/sprc094.html IMGLIB]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Convert the OSS labs to use the new ALSA drivers&lt;br /&gt;
| [http://www.alsa-project.org/main/index.php/Tutorials_and_Presentations ALSA Tutorials]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Dig into the DSS drivers.  The OMAP display subsystem supports rotation and mirroring, but the '''mirror''' and '''rotate''' files in '''/sys/devices/platform/omapdss/display''' ''X'' don't work.  Find the code that implements them see if you can figure out what's wrong.&lt;br /&gt;
| [http://elinux.org/BeagleBoardFAQ#.22DSS2.22_display_driver_for_.3E.3D_2.6.29 dss2]&lt;br /&gt;
|-&lt;br /&gt;
| Jack Ma&lt;br /&gt;
| &lt;br /&gt;
| Install an RT kernel on beagleboard. If successful, this could turn into a full project for exploring RT system and application.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Jack Ma&lt;br /&gt;
| &lt;br /&gt;
| Interface beagleboard with a GPS device to read location information. If successful, see if it's possible build a (small) app that downloads appropriate map from google map and shows the beagleboard's location.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Jack Ma&lt;br /&gt;
| &lt;br /&gt;
| Install a VPN server on beagleboard.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Guanqun Wang&lt;br /&gt;
| &lt;br /&gt;
| Run beagle board with a small LCD display&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Yifei Li&lt;br /&gt;
| &lt;br /&gt;
| Demo a BeagleLight program that could synchronize LEDs with music.&lt;br /&gt;
| http://processors.wiki.ti.com/index.php/BeagleLight&lt;br /&gt;
|-&lt;br /&gt;
| Yuming Cao&lt;br /&gt;
|&lt;br /&gt;
| Make beagleboard make a phone call&lt;br /&gt;
| http://www.youtube.com/watch?v=uVCx1S8RLfs&amp;amp;feature=related&lt;br /&gt;
|-&lt;br /&gt;
| Mona Yan&lt;br /&gt;
| Mona Yan&lt;br /&gt;
| Display BeagleBoard orientation by using accelerometer and opengl.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Full Projects ==&lt;br /&gt;
&lt;br /&gt;
=== Winter 2011-2012 ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
! Team&amp;amp;nbsp;Members&lt;br /&gt;
! Project Title&lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| [http://e2e.ti.com/blogs_/b/dlp_mems_blog/archive/2011/05/13/3d-structured-light-using-dlp-technology.aspx 3D Structured Light using DLP® Technology]&lt;br /&gt;
| Create 3D maps using a DLP pico and the Beagle.&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| [http://m.matrixsynth.com/2011/06/beagleboard-synth-proof-of-concept.htm Beagle Midi]&lt;br /&gt;
| Make the Beagle synthesize midi files.&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| [http://www.sakoman.com/OMAP/an-overiew-of-omap3-power-management-with-2639-pm.html Beagle Power Management]&lt;br /&gt;
| Work up some power management demos.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2011 ===&lt;br /&gt;
Edit this page to add projects you would like to do.  If you aren't in the class, add ideas you would like to see done by class members.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
! Team&amp;amp;nbsp;Members&lt;br /&gt;
! Project Title&lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| [https://gforge.ti.com/gf/project/tiesr TI Embedded Speech Recognizer]&lt;br /&gt;
| Port TI's fixed-point speech recognizer to the DSP.  It currently runs on the ARM.&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Kinect&lt;br /&gt;
| [http://hackaday.com/2010/11/15/rendering-a-3d-environment-from-kinect-video/ Here] and [http://gamerfront.net/2010/12/with-a-second-kinect-you-can-map-out-your-bedroom-in-3d/4644 here] are some interesting things people are doing with Kinects.  Maybe we could port it to the Beagle.&lt;br /&gt;
|-&lt;br /&gt;
| Mike Lester&lt;br /&gt;
| Accelerometer-based auto-leveled projection&lt;br /&gt;
| Several projects have been started to add [http://matthsu-abacus.blogspot.com/2009/11/build-3-axis-accelerometer-on.html  accelerometer support] to the BeagleBoard. This project would involve getting an accelerometer installed and working, perhaps using a [http://elinux.org/BeagleBoard_Trainer trainer board], as well the [http://focus.ti.com/general/docs/gencontent.tsp?contentId=52770 TI Pico Projector]. The orientation data from the accelerometer would be used to rotate, skew, keystone the projected image in order to keep it level and normalized.&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Bamberger&lt;br /&gt;
| Kinect Based 3d Scanner&lt;br /&gt;
| Build some sort of motorized gantry that allows the Kinect to be rotated around (and possibly from top to bottom) of an arbitrary object.  The motors would be controlled using the BeagleBoard's I2C or SPI interfaces.  Use libfreenect to capture depth information from every side of the object as the Kinect rotates around the object.  Use this data and OpenGL to build a 3d model of the scanned object&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Port winDSK6 to the Beagle&lt;br /&gt;
| [http://www.ece.wisc.edu/~morrow/software/ winDSK6] is a Windows program that talks to a TI 'C6711 DSK and performs many interesting audio effects.  This project would implement the code running on the Windows side on the ARM.  The ARM could capture a frame of audio and send it to the DSP for processing.  The ARM could then send the processed audio to the speakers.  [http://processors.wiki.ti.com/index.php/C6Run c6run] would be used to interact with the DSP.  &lt;br /&gt;
|-&lt;br /&gt;
| David Bliss&lt;br /&gt;
| Automated Die Tester&lt;br /&gt;
| Make a device that can roll a die, and keep statistics on how random the die is. The build can either be very complex, or very simple, depending on how you define &amp;quot;rolling a die&amp;quot;. The software doesn't necessarily have to know what the numbers mean, it just has to be able to uniquely identify the sides.&lt;br /&gt;
|-&lt;br /&gt;
| Stephen Mayhew&lt;br /&gt;
| Set-Playing System&lt;br /&gt;
| Set is a relatively simple card game that lends itself nicely to image recognition and computer play. The layout is not very structured, and the game play is pretty simple. This project would incorporate image recognition, projection of possible moves (using the pico projector), and maybe even speech synthesis, and recognition. For example, if someone didn't know how to play Set, then the board could take them through a tutorial, asking questions of the user as it went along (&amp;quot;If I have these 2 cards, what 3rd card would make a set?&amp;quot;). This would make for an interesting demo at conferences. &lt;br /&gt;
|-&lt;br /&gt;
| Michael Fuson  &lt;br /&gt;
Jay Dial&lt;br /&gt;
| Spectrum Analyzer&lt;br /&gt;
|Create a real-time audio Spectrum analyzer on the BeagleBoard. [http://elinux.org/ECE497_Project_Spectrum_Analyzer Project Page]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2010 ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
! Team&amp;amp;nbsp;Members&lt;br /&gt;
! Project Title&lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
| Yannick Polius&lt;br /&gt;
| [[ECE597 Project pyWikiReader | pyWikiReader]]&lt;br /&gt;
| This project is mostly software, with the hardware element being the use of the dsp. The idea is to tie together three technologies: speech recognition, speech synthesis, and internet access in order to create an interface capable of orating information to the user based on a vocal command. The implementation I have in mind is to use the Pocket Sphinx speech recognition engine to first understand what the user wants through speech, such as &amp;quot;Rose-Hulman&amp;quot;. Once the speech is translated, the software can execute a Wikipedia search to pull said item's page. Most of the important info is contained within the introductory paragraph, so the software will take only that chunk and feed it into the Flite speech synthesis engine. The end result is a simple machine with &amp;quot;mother box&amp;quot; like usability, that is, no interaction besides what is natural to the user (speaking) should be necessary to retrieve the information.&lt;br /&gt;
|-&lt;br /&gt;
| Paul Morrison &amp;lt;br&amp;gt; Steven Stark&lt;br /&gt;
| [[ECE597 3D Chess | 3D Chess with Networking]]&lt;br /&gt;
| This project would simulate a hand-held chess game, and the game would allow two player games using two beagleboards over a network connection.  The graphics would use the beagle's PowerVR SGX for hardware accelerated graphics by using OpenGL.  In addition to 3D graphics and networking, a third portion of the project would be to optimize the boot time because a chess computer should start up quickly.&lt;br /&gt;
|-&lt;br /&gt;
| Tom Most &amp;lt;br&amp;gt; David Baty &amp;lt;br&amp;gt; Mark Jacobson&lt;br /&gt;
| [[ECE597: Sumo Robot|Sumo Robot]]&lt;br /&gt;
| The goal of this project is to create a robot capable of competing in the 3.0 kg weight class of a sumo competition ([http://www.youtube.com/watch?v=V3OR_sHrOJM an example]).  This would have minor hardware and electronics elements, but would focus on communication with sensors using the BeagleBoard and the Linux kernel.  At minimum, this involves sensors to detect the edge of the ring and the opposing robot.  This would likely be implemented using Sharp IR rangefinders, a ultrasonic rangefinders, and ideally a camera.  [http://circ.mtco.com/competitions/2010/rules/sumo Sumo rules].&lt;br /&gt;
|-&lt;br /&gt;
|Brian Embry &amp;lt;br&amp;gt; Jessica Lipscomb &amp;lt;br&amp;gt; Paul Banister&lt;br /&gt;
| [[ECE597 Network based MP3 player]]&lt;br /&gt;
| Network based mp3 player.  The Beagle will be programmed using a custom, protocol for transferring files from a network based server (x86 pc) to a Beagle.  Speakers will be attached to the Beagle, where the file will be played back.  Possible extensions are a LCD for displaying id3 tag information, and buttons for user interaction (next track, previous track, etc.) on the GPIO interface.&lt;br /&gt;
|-&lt;br /&gt;
|[[user:routhcr | Chris Routh]] &amp;lt;br&amp;gt; [[user:collinjc | J. Cody Collins]] &amp;lt;br&amp;gt; [[user:jacksogc | Greg Jackson]] [[user:Xinkeqiong | Keqiong Xin]]&lt;br /&gt;
| [[ECE597: Auto HUD]]&lt;br /&gt;
| Use the beagle board to run image recognition on a camera feed located inside a car, and then signaling to the driver via a pico projector various objects of interest.&lt;br /&gt;
|-&lt;br /&gt;
| Adam Jesionowski&amp;lt;br&amp;gt;Qiang Jiang&lt;br /&gt;
| [[ECE597_Adding_Sense_to_Beagle|Adding Sense to Beagle]] (See [[BeagleBoard/GSoC/Ideas]])&lt;br /&gt;
| Sensory aware applications are becoming more mainstream with the release of the Apple iPhone. This project would combine both HW and SW to add sensory awareness to beagle. First, additional modules such as GPS, 3-axis accelerometers, Gyroscopes, Temperature Sensors, Humidity Sensors, Pressure Sensors, etc, would be added to beagle to compliment the microphone input in order to allow sensing of the real world environment. Then SW APIs would need to be layered on top to allow easy access to the sensory data for use by applications. &lt;br /&gt;
|-&lt;br /&gt;
| Mitch Garvin &amp;lt;br&amp;gt; Matt Luke &amp;lt;br&amp;gt; Elliot Simon &amp;lt;br&amp;gt; Jian Li&lt;br /&gt;
| [[ECE597 Interactive Pong|Interactive Pong]]&lt;br /&gt;
| Run classic pong, projecting the screen and using a camera to track user's hands for input.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project_Ideas</id>
		<title>ECE497 Project Ideas</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project_Ideas"/>
				<updated>2011-12-09T03:05:15Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
[[Category:BeagleBoard]]&lt;br /&gt;
&lt;br /&gt;
We have both mini projects and projects in ECE497.  &lt;br /&gt;
&lt;br /&gt;
'''Mini projects''' involved finding something interested in the Beagle world and installing it to your beagle and demoing it to the class.  You would also create a wiki page documenting what you did to get it installed.  Often you may find multiple efforts do to something, for example there are a few efforts to port Android on the Beagle.  Your task is to figure out which one should be used.  Generally mini projects won't require you to write new code; however they are the background work that may lead to a full project.  You should do a couple mini projects for the class.  Generally they are done alone, but working in pairs is OK. These will be about 1/3 of your grade and should be done in the first 5 weeks or so.&lt;br /&gt;
&lt;br /&gt;
Only one '''full project''' is done for the class and it's done with a team of 3 or 4.  These projects can take a mini project (or a whole new idea) and add to it.  The goal is to have your work contribute to the open source world. Any code is generated will be kept on [https://github.com/ github] and a [http://bitbake.berlios.de/manual/ bitbake receipt] will be created to automatically download and create the object files.&lt;br /&gt;
&lt;br /&gt;
What follows are&lt;br /&gt;
&lt;br /&gt;
; Places to look for project ideas: Feel free to add your own suggestions.&lt;br /&gt;
; Mini Project ideas: Add your own suggestions, and do some of them.  Mark the ones you've done.&lt;br /&gt;
; Full Project ideas: ditto.&lt;br /&gt;
&lt;br /&gt;
== Sources for Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
Here are some links where you'll find ideas for your project.&lt;br /&gt;
* [http://wiki.omap.com/index.php/ETechDays_Community_Lightning_Talks ETechDays Community Lightning Talks], this is a one-day web-based conference where many project ideas are presented.  One of our 2009-2010 senior design projects was found here.&lt;br /&gt;
* [http://beagleboard.org/project Official list of Beagle Projects], there are many Beagle specific projects listed here.  Many are inactive.  ''List your project here once it running.''&lt;br /&gt;
* [http://www.youtube.com/watch?v=Mk1xjbA-ISE Augmented Reality Project], here's an idea that I think we can do on the Beagle.  Rather than using augmented reality glasses, I'd suggest we use a [http://focus.ti.com/dlpdmd/docs/dlpdiscovery.tsp?sectionId=60&amp;amp;tabId=2235 TI DLP pico projector]. [http://www.hitlabnz.org/wiki/EmbeddedAR Here's] AR running on the Beagle. &lt;br /&gt;
* [http://code.google.com/p/0xdroid/ Android], this is one of a couple of efforts to port [http://source.android.com/ Google's Android OS] to the Beagle.&lt;br /&gt;
* [[BeagleBoard/Ideas-2009]] Google summer code ideas 2009.&lt;br /&gt;
&lt;br /&gt;
== Mini Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
! Suggestor&lt;br /&gt;
! Implementor&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Jack Ma&lt;br /&gt;
| Work up an example of controlling the PWM registers from the shell.&lt;br /&gt;
| [http://esdw.wordpress.com/2010/03/25/a-useful-tool-devmem2/ PWM via the shell]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Weather Station&lt;br /&gt;
| [http://dominion.thruhere.net/koen/cms/using-the-beaglebone-as-a-weatherstation Ultrasonic weather]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Mike Yuhas&lt;br /&gt;
| Interface the BeagleBoard with an SRF08 Ultrasonic Ranger over I2C&lt;br /&gt;
| [http://yetanotherhackersblog.wordpress.com/2011/04/07/interfacing-the-beagleboard-with-an-srf08-ultrasonic-ranger-over-i2c Ultrasonic Ranger]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Compile the PowerVR examples&lt;br /&gt;
| [http://www.imgtec.com/powervr/insider/sdkdownloads/index.asp PowerVR Insider SDK Downloads]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Work up some GStreamer PS EYE Demos&lt;br /&gt;
| [http://www.electronsonradio.com/2011/06/playstation-eye-gstreamer-examples GStreamer PS EYE Demos] and [http://www.ridgerun.com/blog/?p=224 RidgeRun]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Douglas Selby&lt;br /&gt;
| Get TI' embedded speech recognizer installed and demo the examples.&lt;br /&gt;
| [https://gforge.ti.com/gf/project/tiesr TI Embedded Speech Recognizer]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| David Zitnik&lt;br /&gt;
| Demo last year's TI speech project.  I have a microphone amplifier and mike you can use.&lt;br /&gt;
| [[ECE597 Project pyWikiReader]]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Stephen Mayhew&lt;br /&gt;
| Find who is doing what with Kinect on the Beagle and install and run it.&lt;br /&gt;
| [http://www.google.com/webhp?rlz=1C1GPCK_enUS392US392&amp;amp;sourceid=chrome-instant&amp;amp;ie=UTF-8&amp;amp;ion=1#hl=en&amp;amp;sugexp=ldymls&amp;amp;xhr=t&amp;amp;q=beagleboard+kinect&amp;amp;cp=0&amp;amp;qe=YmVhZ2xlYm9hcmQga2lu&amp;amp;qesig=9qrD0rFfjWfujRRGmkB_Bw&amp;amp;pkc=AFgZ2tn-cylx0f71PasgBKOazjBQY3VK712RWQ7DueEjQNAdbOHr6BCgUd9xdyXyPe8TWErkesrQ246vygwImnAS5mIzCG2-5g&amp;amp;pf=p&amp;amp;sclient=psy&amp;amp;rlz=1C1GPCK_enUS392US392&amp;amp;site=webhp&amp;amp;source=hp&amp;amp;aq=0&amp;amp;aqi=&amp;amp;aql=&amp;amp;oq=beagleboard+kin&amp;amp;pbx=1&amp;amp;bav=on.2,or.&amp;amp;fp=3e817b7ec5d13467&amp;amp;ion=1 Google - beagleboard kinect]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Greg Harrison&lt;br /&gt;
| I have several [http://en.wikipedia.org/wiki/PlayStation_Eye Sony PlayStation Eye web cams] and I have examples of how to pull video from them via V4L2 ([[ECE497 DaVinci Workshop Labs]]).  The Eye also has a 4 microphone array.  I don't know how to get audio from it.  Figure out how.  This may expand to a full project if there is no solution out there.&lt;br /&gt;
| [http://www.google.com/webhp?rlz=1C1GPCK_enUS392US392&amp;amp;sourceid=chrome-instant&amp;amp;ie=UTF-8&amp;amp;ion=1#hl=en&amp;amp;sugexp=ldymls&amp;amp;xhr=t&amp;amp;q=beagleboard+playstation+eye+microphone+array&amp;amp;cp=0&amp;amp;qe=YmVhZ2xlYm9hcmQgcGxheXN0YXRpb24gZXllIG1pY3JvcGhvbmUgYXJyYXk&amp;amp;qesig=Sdh5Ru_jodwYydoeTls1GA&amp;amp;pkc=AFgZ2tmwB41tQwF7XwrJPqFnf0NRO911bMCrbnU1HR9Vm6-Pg0sH8LvbJZsKwjKRUpoin4cZlwLIngZw8OC7dyanjcJCG4N_kg&amp;amp;pf=p&amp;amp;sclient=psy&amp;amp;rlz=1C1GPCK_enUS392US392&amp;amp;site=webhp&amp;amp;aq=f&amp;amp;aqi=&amp;amp;aql=&amp;amp;oq=beagleboard+playstation+eye+microphone+array&amp;amp;pbx=1&amp;amp;bav=on.2,or.&amp;amp;fp=3e817b7ec5d13467&amp;amp;ion=1 Google - beagleboard playstation eye microphone array]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Find some examples of how to use '''cmem'''. CMEM is an API and library for managing one or more blocks of physically contiguous memory. It also provides address translation services (e.g. virtual to physical translation) and user-mode cache management APIs. It's used for managing the shared memory between the ARM and the DSP on the processor.  I've been unable to find examples of how to use it.&lt;br /&gt;
| [http://processors.wiki.ti.com/index.php/CMEM_Overview CMEM Overview]&lt;br /&gt;
|-&lt;br /&gt;
| Mike Lester&lt;br /&gt;
| &lt;br /&gt;
| Connect to your beagleboard using ethernet over USB. This allows your beagleboard to share the host computer's internet connection and allow you to connect via VNC/ssh without the need for an external router/switch. This should make development much easier. &lt;br /&gt;
| [[BeagleBoardBeginners#Connect_with_your_beagleboard_using_VNC_and_ethernet_over_USB | VNC]]&lt;br /&gt;
|-&lt;br /&gt;
| Brian Hulette&lt;br /&gt;
| &lt;br /&gt;
| Experiment with audio synthesis and/or sampling/processing.  You could either synthesize and play a few tones to generate a song, or have the Beagle sample an audio signal then process and output it to create a sort of effects pedal. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| David McGinnis&lt;br /&gt;
| David McGinnis&lt;br /&gt;
| Look into connecting the beagleboard to a phone or headphones using bluetooth. This could involve either outputting audio and taking in audio from a bluetooth headset, allowing you to have audio I/O with the beagleboard, or could involve connecting with phones automatically as they come into range of the beagleboard, allowing for an automatic attendence registration system, among other things.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| David Bliss&lt;br /&gt;
| David Bliss&lt;br /&gt;
| Get a video stream from a PS Eye, and identify the relevant device files.&lt;br /&gt;
| [http://en.wikipedia.org/wiki/PlayStation_Eye#cite_note-Linux_support-32 PlayStation_Eye#cite_note-Linux_support-32]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| William Gerth&lt;br /&gt;
| William Gerth&lt;br /&gt;
| Explore the possibility of implementing OpenAOS on the Beagle, to make a portable media player and etc.&lt;br /&gt;
| http://www.openaos.org/&lt;br /&gt;
|-&lt;br /&gt;
| Joel Carlson&lt;br /&gt;
|&lt;br /&gt;
| Lacking a serial port and don't have a USB-serial converter?  Why not find a way to make the BeagleBoard boot over a USB console connection?&lt;br /&gt;
| [http://itgen.blogspot.com/2011/03/beagleboard-xm-u-boot-without-serial.html BeagleBoard XM U-boot without Serial]&lt;br /&gt;
|-&lt;br /&gt;
| Joel Carlson&lt;br /&gt;
| Joel Carlson&lt;br /&gt;
| Depending on what one is working on, it might be useful to mount the BeagleBoard root filesystem over NFS.  The link to the right does that using a USB-Ethernet connection, but one that just runs over an Ethernet cable would be nice.&lt;br /&gt;
| [http://elinux.org/Mount_BeagleBoard_Root_Filesystem_over_NFS_via_USB Mount BeagleBoard Root Filesystem over NFS via USB]&lt;br /&gt;
Here's an example of mounting dfs/afs on the Beagle&lt;br /&gt;
&lt;br /&gt;
[[ECE497 Mounting dfs/afs in Linux]]&lt;br /&gt;
|-&lt;br /&gt;
| Lei Liu&lt;br /&gt;
| Lei Liu&lt;br /&gt;
| Build communication with FPGA via USB port.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Bamberger&lt;br /&gt;
| Aaron Bamberger&lt;br /&gt;
| Play around with the BeagleBoard's various SPI and I2C ports, and get it to talk to some simple SPI and I2C peripherals, such as a 7-Segment display driver or small LCD panel&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Jay Dial&lt;br /&gt;
| Jay Dial&lt;br /&gt;
| Look into the parallel computing possibilities of the BeagleBoard. See how difficult it would be to get two BeagleBoards to communicate properly for parallel computing.&lt;br /&gt;
| [http://antipastohw.blogspot.com/2010/09/how-to-make-beagleboard-elastic-r.html How to make a BeagleBoard Elastic R Beowulf Cluster]&lt;br /&gt;
|-&lt;br /&gt;
| Randy Billingsley&lt;br /&gt;
| Randy Billingsley&lt;br /&gt;
| Configure wlan on the beagle board using a wireless usb adapter&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Mike Fuson&lt;br /&gt;
| Mike Fuson&lt;br /&gt;
| Get XBMC working on the beagle.&lt;br /&gt;
| [http://elinux.org/BeagleBoard/GSoC/2010_Projects/XBMC XBMC wiki page]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Sam Allen&lt;br /&gt;
|&lt;br /&gt;
| Port Android to beagle&lt;br /&gt;
| It's done.  Check out [http://code.google.com/p/rowboat/ this].&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Yifei Li&lt;br /&gt;
| Change the splash screen to a Rose logo when the Beagle starts up&lt;br /&gt;
| [http://blog.bizmobiletech.com/?p=253&amp;amp;utm_source=feedburner&amp;amp;utm_medium=twitter&amp;amp;utm_campaign=Feed%3A+BeagleBoard+%28BeagleBoard.org%29 How to Change Angstrom Boot logo in beagleboard]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Ziyi Zhang&lt;br /&gt;
| Do remote debugging with Eclipse.  My page needs updating. This [http://www.lvr.com/eclipse1.htm tutorial] might be helpful.&lt;br /&gt;
| [[ECE497 Installing the Eclipse IDE]]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
|&lt;br /&gt;
| Investigate Eigen. Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms. Explicit vectorization is performed for SSE 2/3/4, ARM NEON, and AltiVec instruction sets, with graceful fallback to non-vectorized code. This means it should run fast on the Beagle.  How fast does it run?  Has anyone used it on the Beagle?&lt;br /&gt;
| [http://eigen.tuxfamily.org/index.php?title=Main_Page eigen.tuxfamily.org]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Find what libraries are available for the DSP side of the DM 3730 and write some examples that use them.&lt;br /&gt;
| [http://focus.ti.com/docs/toolsw/folders/print/sprc265.html C64x+ DSP Library (DSPLIB)] &lt;br /&gt;
[http://focus.ti.com/docs/toolsw/folders/print/sprc092.html DSPLIB] &lt;br /&gt;
[http://focus.ti.com/docs/toolsw/folders/print/sprc094.html IMGLIB]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Convert the OSS labs to use the new ALSA drivers&lt;br /&gt;
| [http://www.alsa-project.org/main/index.php/Tutorials_and_Presentations ALSA Tutorials]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Dig into the DSS drivers.  The OMAP display subsystem supports rotation and mirroring, but the '''mirror''' and '''rotate''' files in '''/sys/devices/platform/omapdss/display''' ''X'' don't work.  Find the code that implements them see if you can figure out what's wrong.&lt;br /&gt;
| [http://elinux.org/BeagleBoardFAQ#.22DSS2.22_display_driver_for_.3E.3D_2.6.29 dss2]&lt;br /&gt;
|-&lt;br /&gt;
| Jack Ma&lt;br /&gt;
| &lt;br /&gt;
| Install an RT kernel on beagleboard. If successful, this could turn into a full project for exploring RT system and application.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Jack Ma&lt;br /&gt;
| &lt;br /&gt;
| Interface beagleboard with a GPS device to read location information. If successful, see if it's possible build a (small) app that downloads appropriate map from google map and shows the beagleboard's location.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Jack Ma&lt;br /&gt;
| &lt;br /&gt;
| Install a VPN server on beagleboard.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Guanqun Wang&lt;br /&gt;
| &lt;br /&gt;
| Run beagle board with a small LCD display&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Yifei Li&lt;br /&gt;
| &lt;br /&gt;
| Demo a BeagleLight program that could synchronize LEDs with music.&lt;br /&gt;
| http://processors.wiki.ti.com/index.php/BeagleLight&lt;br /&gt;
|-&lt;br /&gt;
| Mona Yan&lt;br /&gt;
| Mona Yan&lt;br /&gt;
| Display BeagleBoard orientation by using accelerometer and opengl.&lt;br /&gt;
| -&lt;br /&gt;
| Yuming Cao&lt;br /&gt;
|&lt;br /&gt;
| Make beagleboard make a phone call&lt;br /&gt;
| http://www.youtube.com/watch?v=uVCx1S8RLfs&amp;amp;feature=related&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Full Projects ==&lt;br /&gt;
&lt;br /&gt;
=== Winter 2011-2012 ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
! Team&amp;amp;nbsp;Members&lt;br /&gt;
! Project Title&lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| [http://e2e.ti.com/blogs_/b/dlp_mems_blog/archive/2011/05/13/3d-structured-light-using-dlp-technology.aspx 3D Structured Light using DLP® Technology]&lt;br /&gt;
| Create 3D maps using a DLP pico and the Beagle.&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| [http://m.matrixsynth.com/2011/06/beagleboard-synth-proof-of-concept.htm Beagle Midi]&lt;br /&gt;
| Make the Beagle synthesize midi files.&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| [http://www.sakoman.com/OMAP/an-overiew-of-omap3-power-management-with-2639-pm.html Beagle Power Management]&lt;br /&gt;
| Work up some power management demos.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2011 ===&lt;br /&gt;
Edit this page to add projects you would like to do.  If you aren't in the class, add ideas you would like to see done by class members.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
! Team&amp;amp;nbsp;Members&lt;br /&gt;
! Project Title&lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| [https://gforge.ti.com/gf/project/tiesr TI Embedded Speech Recognizer]&lt;br /&gt;
| Port TI's fixed-point speech recognizer to the DSP.  It currently runs on the ARM.&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Kinect&lt;br /&gt;
| [http://hackaday.com/2010/11/15/rendering-a-3d-environment-from-kinect-video/ Here] and [http://gamerfront.net/2010/12/with-a-second-kinect-you-can-map-out-your-bedroom-in-3d/4644 here] are some interesting things people are doing with Kinects.  Maybe we could port it to the Beagle.&lt;br /&gt;
|-&lt;br /&gt;
| Mike Lester&lt;br /&gt;
| Accelerometer-based auto-leveled projection&lt;br /&gt;
| Several projects have been started to add [http://matthsu-abacus.blogspot.com/2009/11/build-3-axis-accelerometer-on.html  accelerometer support] to the BeagleBoard. This project would involve getting an accelerometer installed and working, perhaps using a [http://elinux.org/BeagleBoard_Trainer trainer board], as well the [http://focus.ti.com/general/docs/gencontent.tsp?contentId=52770 TI Pico Projector]. The orientation data from the accelerometer would be used to rotate, skew, keystone the projected image in order to keep it level and normalized.&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Bamberger&lt;br /&gt;
| Kinect Based 3d Scanner&lt;br /&gt;
| Build some sort of motorized gantry that allows the Kinect to be rotated around (and possibly from top to bottom) of an arbitrary object.  The motors would be controlled using the BeagleBoard's I2C or SPI interfaces.  Use libfreenect to capture depth information from every side of the object as the Kinect rotates around the object.  Use this data and OpenGL to build a 3d model of the scanned object&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Port winDSK6 to the Beagle&lt;br /&gt;
| [http://www.ece.wisc.edu/~morrow/software/ winDSK6] is a Windows program that talks to a TI 'C6711 DSK and performs many interesting audio effects.  This project would implement the code running on the Windows side on the ARM.  The ARM could capture a frame of audio and send it to the DSP for processing.  The ARM could then send the processed audio to the speakers.  [http://processors.wiki.ti.com/index.php/C6Run c6run] would be used to interact with the DSP.  &lt;br /&gt;
|-&lt;br /&gt;
| David Bliss&lt;br /&gt;
| Automated Die Tester&lt;br /&gt;
| Make a device that can roll a die, and keep statistics on how random the die is. The build can either be very complex, or very simple, depending on how you define &amp;quot;rolling a die&amp;quot;. The software doesn't necessarily have to know what the numbers mean, it just has to be able to uniquely identify the sides.&lt;br /&gt;
|-&lt;br /&gt;
| Stephen Mayhew&lt;br /&gt;
| Set-Playing System&lt;br /&gt;
| Set is a relatively simple card game that lends itself nicely to image recognition and computer play. The layout is not very structured, and the game play is pretty simple. This project would incorporate image recognition, projection of possible moves (using the pico projector), and maybe even speech synthesis, and recognition. For example, if someone didn't know how to play Set, then the board could take them through a tutorial, asking questions of the user as it went along (&amp;quot;If I have these 2 cards, what 3rd card would make a set?&amp;quot;). This would make for an interesting demo at conferences. &lt;br /&gt;
|-&lt;br /&gt;
| Michael Fuson  &lt;br /&gt;
Jay Dial&lt;br /&gt;
| Spectrum Analyzer&lt;br /&gt;
|Create a real-time audio Spectrum analyzer on the BeagleBoard. [http://elinux.org/ECE497_Project_Spectrum_Analyzer Project Page]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2010 ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
! Team&amp;amp;nbsp;Members&lt;br /&gt;
! Project Title&lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
| Yannick Polius&lt;br /&gt;
| [[ECE597 Project pyWikiReader | pyWikiReader]]&lt;br /&gt;
| This project is mostly software, with the hardware element being the use of the dsp. The idea is to tie together three technologies: speech recognition, speech synthesis, and internet access in order to create an interface capable of orating information to the user based on a vocal command. The implementation I have in mind is to use the Pocket Sphinx speech recognition engine to first understand what the user wants through speech, such as &amp;quot;Rose-Hulman&amp;quot;. Once the speech is translated, the software can execute a Wikipedia search to pull said item's page. Most of the important info is contained within the introductory paragraph, so the software will take only that chunk and feed it into the Flite speech synthesis engine. The end result is a simple machine with &amp;quot;mother box&amp;quot; like usability, that is, no interaction besides what is natural to the user (speaking) should be necessary to retrieve the information.&lt;br /&gt;
|-&lt;br /&gt;
| Paul Morrison &amp;lt;br&amp;gt; Steven Stark&lt;br /&gt;
| [[ECE597 3D Chess | 3D Chess with Networking]]&lt;br /&gt;
| This project would simulate a hand-held chess game, and the game would allow two player games using two beagleboards over a network connection.  The graphics would use the beagle's PowerVR SGX for hardware accelerated graphics by using OpenGL.  In addition to 3D graphics and networking, a third portion of the project would be to optimize the boot time because a chess computer should start up quickly.&lt;br /&gt;
|-&lt;br /&gt;
| Tom Most &amp;lt;br&amp;gt; David Baty &amp;lt;br&amp;gt; Mark Jacobson&lt;br /&gt;
| [[ECE597: Sumo Robot|Sumo Robot]]&lt;br /&gt;
| The goal of this project is to create a robot capable of competing in the 3.0 kg weight class of a sumo competition ([http://www.youtube.com/watch?v=V3OR_sHrOJM an example]).  This would have minor hardware and electronics elements, but would focus on communication with sensors using the BeagleBoard and the Linux kernel.  At minimum, this involves sensors to detect the edge of the ring and the opposing robot.  This would likely be implemented using Sharp IR rangefinders, a ultrasonic rangefinders, and ideally a camera.  [http://circ.mtco.com/competitions/2010/rules/sumo Sumo rules].&lt;br /&gt;
|-&lt;br /&gt;
|Brian Embry &amp;lt;br&amp;gt; Jessica Lipscomb &amp;lt;br&amp;gt; Paul Banister&lt;br /&gt;
| [[ECE597 Network based MP3 player]]&lt;br /&gt;
| Network based mp3 player.  The Beagle will be programmed using a custom, protocol for transferring files from a network based server (x86 pc) to a Beagle.  Speakers will be attached to the Beagle, where the file will be played back.  Possible extensions are a LCD for displaying id3 tag information, and buttons for user interaction (next track, previous track, etc.) on the GPIO interface.&lt;br /&gt;
|-&lt;br /&gt;
|[[user:routhcr | Chris Routh]] &amp;lt;br&amp;gt; [[user:collinjc | J. Cody Collins]] &amp;lt;br&amp;gt; [[user:jacksogc | Greg Jackson]] [[user:Xinkeqiong | Keqiong Xin]]&lt;br /&gt;
| [[ECE597: Auto HUD]]&lt;br /&gt;
| Use the beagle board to run image recognition on a camera feed located inside a car, and then signaling to the driver via a pico projector various objects of interest.&lt;br /&gt;
|-&lt;br /&gt;
| Adam Jesionowski&amp;lt;br&amp;gt;Qiang Jiang&lt;br /&gt;
| [[ECE597_Adding_Sense_to_Beagle|Adding Sense to Beagle]] (See [[BeagleBoard/GSoC/Ideas]])&lt;br /&gt;
| Sensory aware applications are becoming more mainstream with the release of the Apple iPhone. This project would combine both HW and SW to add sensory awareness to beagle. First, additional modules such as GPS, 3-axis accelerometers, Gyroscopes, Temperature Sensors, Humidity Sensors, Pressure Sensors, etc, would be added to beagle to compliment the microphone input in order to allow sensing of the real world environment. Then SW APIs would need to be layered on top to allow easy access to the sensory data for use by applications. &lt;br /&gt;
|-&lt;br /&gt;
| Mitch Garvin &amp;lt;br&amp;gt; Matt Luke &amp;lt;br&amp;gt; Elliot Simon &amp;lt;br&amp;gt; Jian Li&lt;br /&gt;
| [[ECE597 Interactive Pong|Interactive Pong]]&lt;br /&gt;
| Run classic pong, projecting the screen and using a camera to track user's hands for input.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project_Ideas</id>
		<title>ECE497 Project Ideas</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project_Ideas"/>
				<updated>2011-12-09T03:04:10Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: this is my project idea&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
[[Category:BeagleBoard]]&lt;br /&gt;
&lt;br /&gt;
We have both mini projects and projects in ECE497.  &lt;br /&gt;
&lt;br /&gt;
'''Mini projects''' involved finding something interested in the Beagle world and installing it to your beagle and demoing it to the class.  You would also create a wiki page documenting what you did to get it installed.  Often you may find multiple efforts do to something, for example there are a few efforts to port Android on the Beagle.  Your task is to figure out which one should be used.  Generally mini projects won't require you to write new code; however they are the background work that may lead to a full project.  You should do a couple mini projects for the class.  Generally they are done alone, but working in pairs is OK. These will be about 1/3 of your grade and should be done in the first 5 weeks or so.&lt;br /&gt;
&lt;br /&gt;
Only one '''full project''' is done for the class and it's done with a team of 3 or 4.  These projects can take a mini project (or a whole new idea) and add to it.  The goal is to have your work contribute to the open source world. Any code is generated will be kept on [https://github.com/ github] and a [http://bitbake.berlios.de/manual/ bitbake receipt] will be created to automatically download and create the object files.&lt;br /&gt;
&lt;br /&gt;
What follows are&lt;br /&gt;
&lt;br /&gt;
; Places to look for project ideas: Feel free to add your own suggestions.&lt;br /&gt;
; Mini Project ideas: Add your own suggestions, and do some of them.  Mark the ones you've done.&lt;br /&gt;
; Full Project ideas: ditto.&lt;br /&gt;
&lt;br /&gt;
== Sources for Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
Here are some links where you'll find ideas for your project.&lt;br /&gt;
* [http://wiki.omap.com/index.php/ETechDays_Community_Lightning_Talks ETechDays Community Lightning Talks], this is a one-day web-based conference where many project ideas are presented.  One of our 2009-2010 senior design projects was found here.&lt;br /&gt;
* [http://beagleboard.org/project Official list of Beagle Projects], there are many Beagle specific projects listed here.  Many are inactive.  ''List your project here once it running.''&lt;br /&gt;
* [http://www.youtube.com/watch?v=Mk1xjbA-ISE Augmented Reality Project], here's an idea that I think we can do on the Beagle.  Rather than using augmented reality glasses, I'd suggest we use a [http://focus.ti.com/dlpdmd/docs/dlpdiscovery.tsp?sectionId=60&amp;amp;tabId=2235 TI DLP pico projector]. [http://www.hitlabnz.org/wiki/EmbeddedAR Here's] AR running on the Beagle. &lt;br /&gt;
* [http://code.google.com/p/0xdroid/ Android], this is one of a couple of efforts to port [http://source.android.com/ Google's Android OS] to the Beagle.&lt;br /&gt;
* [[BeagleBoard/Ideas-2009]] Google summer code ideas 2009.&lt;br /&gt;
&lt;br /&gt;
== Mini Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
! Suggestor&lt;br /&gt;
! Implementor&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Jack Ma&lt;br /&gt;
| Work up an example of controlling the PWM registers from the shell.&lt;br /&gt;
| [http://esdw.wordpress.com/2010/03/25/a-useful-tool-devmem2/ PWM via the shell]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Weather Station&lt;br /&gt;
| [http://dominion.thruhere.net/koen/cms/using-the-beaglebone-as-a-weatherstation Ultrasonic weather]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Mike Yuhas&lt;br /&gt;
| Interface the BeagleBoard with an SRF08 Ultrasonic Ranger over I2C&lt;br /&gt;
| [http://yetanotherhackersblog.wordpress.com/2011/04/07/interfacing-the-beagleboard-with-an-srf08-ultrasonic-ranger-over-i2c Ultrasonic Ranger]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Compile the PowerVR examples&lt;br /&gt;
| [http://www.imgtec.com/powervr/insider/sdkdownloads/index.asp PowerVR Insider SDK Downloads]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Work up some GStreamer PS EYE Demos&lt;br /&gt;
| [http://www.electronsonradio.com/2011/06/playstation-eye-gstreamer-examples GStreamer PS EYE Demos] and [http://www.ridgerun.com/blog/?p=224 RidgeRun]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Douglas Selby&lt;br /&gt;
| Get TI' embedded speech recognizer installed and demo the examples.&lt;br /&gt;
| [https://gforge.ti.com/gf/project/tiesr TI Embedded Speech Recognizer]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| David Zitnik&lt;br /&gt;
| Demo last year's TI speech project.  I have a microphone amplifier and mike you can use.&lt;br /&gt;
| [[ECE597 Project pyWikiReader]]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Stephen Mayhew&lt;br /&gt;
| Find who is doing what with Kinect on the Beagle and install and run it.&lt;br /&gt;
| [http://www.google.com/webhp?rlz=1C1GPCK_enUS392US392&amp;amp;sourceid=chrome-instant&amp;amp;ie=UTF-8&amp;amp;ion=1#hl=en&amp;amp;sugexp=ldymls&amp;amp;xhr=t&amp;amp;q=beagleboard+kinect&amp;amp;cp=0&amp;amp;qe=YmVhZ2xlYm9hcmQga2lu&amp;amp;qesig=9qrD0rFfjWfujRRGmkB_Bw&amp;amp;pkc=AFgZ2tn-cylx0f71PasgBKOazjBQY3VK712RWQ7DueEjQNAdbOHr6BCgUd9xdyXyPe8TWErkesrQ246vygwImnAS5mIzCG2-5g&amp;amp;pf=p&amp;amp;sclient=psy&amp;amp;rlz=1C1GPCK_enUS392US392&amp;amp;site=webhp&amp;amp;source=hp&amp;amp;aq=0&amp;amp;aqi=&amp;amp;aql=&amp;amp;oq=beagleboard+kin&amp;amp;pbx=1&amp;amp;bav=on.2,or.&amp;amp;fp=3e817b7ec5d13467&amp;amp;ion=1 Google - beagleboard kinect]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Greg Harrison&lt;br /&gt;
| I have several [http://en.wikipedia.org/wiki/PlayStation_Eye Sony PlayStation Eye web cams] and I have examples of how to pull video from them via V4L2 ([[ECE497 DaVinci Workshop Labs]]).  The Eye also has a 4 microphone array.  I don't know how to get audio from it.  Figure out how.  This may expand to a full project if there is no solution out there.&lt;br /&gt;
| [http://www.google.com/webhp?rlz=1C1GPCK_enUS392US392&amp;amp;sourceid=chrome-instant&amp;amp;ie=UTF-8&amp;amp;ion=1#hl=en&amp;amp;sugexp=ldymls&amp;amp;xhr=t&amp;amp;q=beagleboard+playstation+eye+microphone+array&amp;amp;cp=0&amp;amp;qe=YmVhZ2xlYm9hcmQgcGxheXN0YXRpb24gZXllIG1pY3JvcGhvbmUgYXJyYXk&amp;amp;qesig=Sdh5Ru_jodwYydoeTls1GA&amp;amp;pkc=AFgZ2tmwB41tQwF7XwrJPqFnf0NRO911bMCrbnU1HR9Vm6-Pg0sH8LvbJZsKwjKRUpoin4cZlwLIngZw8OC7dyanjcJCG4N_kg&amp;amp;pf=p&amp;amp;sclient=psy&amp;amp;rlz=1C1GPCK_enUS392US392&amp;amp;site=webhp&amp;amp;aq=f&amp;amp;aqi=&amp;amp;aql=&amp;amp;oq=beagleboard+playstation+eye+microphone+array&amp;amp;pbx=1&amp;amp;bav=on.2,or.&amp;amp;fp=3e817b7ec5d13467&amp;amp;ion=1 Google - beagleboard playstation eye microphone array]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Find some examples of how to use '''cmem'''. CMEM is an API and library for managing one or more blocks of physically contiguous memory. It also provides address translation services (e.g. virtual to physical translation) and user-mode cache management APIs. It's used for managing the shared memory between the ARM and the DSP on the processor.  I've been unable to find examples of how to use it.&lt;br /&gt;
| [http://processors.wiki.ti.com/index.php/CMEM_Overview CMEM Overview]&lt;br /&gt;
|-&lt;br /&gt;
| Mike Lester&lt;br /&gt;
| &lt;br /&gt;
| Connect to your beagleboard using ethernet over USB. This allows your beagleboard to share the host computer's internet connection and allow you to connect via VNC/ssh without the need for an external router/switch. This should make development much easier. &lt;br /&gt;
| [[BeagleBoardBeginners#Connect_with_your_beagleboard_using_VNC_and_ethernet_over_USB | VNC]]&lt;br /&gt;
|-&lt;br /&gt;
| Brian Hulette&lt;br /&gt;
| &lt;br /&gt;
| Experiment with audio synthesis and/or sampling/processing.  You could either synthesize and play a few tones to generate a song, or have the Beagle sample an audio signal then process and output it to create a sort of effects pedal. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| David McGinnis&lt;br /&gt;
| David McGinnis&lt;br /&gt;
| Look into connecting the beagleboard to a phone or headphones using bluetooth. This could involve either outputting audio and taking in audio from a bluetooth headset, allowing you to have audio I/O with the beagleboard, or could involve connecting with phones automatically as they come into range of the beagleboard, allowing for an automatic attendence registration system, among other things.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| David Bliss&lt;br /&gt;
| David Bliss&lt;br /&gt;
| Get a video stream from a PS Eye, and identify the relevant device files.&lt;br /&gt;
| [http://en.wikipedia.org/wiki/PlayStation_Eye#cite_note-Linux_support-32 PlayStation_Eye#cite_note-Linux_support-32]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| William Gerth&lt;br /&gt;
| William Gerth&lt;br /&gt;
| Explore the possibility of implementing OpenAOS on the Beagle, to make a portable media player and etc.&lt;br /&gt;
| http://www.openaos.org/&lt;br /&gt;
|-&lt;br /&gt;
| Joel Carlson&lt;br /&gt;
|&lt;br /&gt;
| Lacking a serial port and don't have a USB-serial converter?  Why not find a way to make the BeagleBoard boot over a USB console connection?&lt;br /&gt;
| [http://itgen.blogspot.com/2011/03/beagleboard-xm-u-boot-without-serial.html BeagleBoard XM U-boot without Serial]&lt;br /&gt;
|-&lt;br /&gt;
| Joel Carlson&lt;br /&gt;
| Joel Carlson&lt;br /&gt;
| Depending on what one is working on, it might be useful to mount the BeagleBoard root filesystem over NFS.  The link to the right does that using a USB-Ethernet connection, but one that just runs over an Ethernet cable would be nice.&lt;br /&gt;
| [http://elinux.org/Mount_BeagleBoard_Root_Filesystem_over_NFS_via_USB Mount BeagleBoard Root Filesystem over NFS via USB]&lt;br /&gt;
Here's an example of mounting dfs/afs on the Beagle&lt;br /&gt;
&lt;br /&gt;
[[ECE497 Mounting dfs/afs in Linux]]&lt;br /&gt;
|-&lt;br /&gt;
| Lei Liu&lt;br /&gt;
| Lei Liu&lt;br /&gt;
| Build communication with FPGA via USB port.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Bamberger&lt;br /&gt;
| Aaron Bamberger&lt;br /&gt;
| Play around with the BeagleBoard's various SPI and I2C ports, and get it to talk to some simple SPI and I2C peripherals, such as a 7-Segment display driver or small LCD panel&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Jay Dial&lt;br /&gt;
| Jay Dial&lt;br /&gt;
| Look into the parallel computing possibilities of the BeagleBoard. See how difficult it would be to get two BeagleBoards to communicate properly for parallel computing.&lt;br /&gt;
| [http://antipastohw.blogspot.com/2010/09/how-to-make-beagleboard-elastic-r.html How to make a BeagleBoard Elastic R Beowulf Cluster]&lt;br /&gt;
|-&lt;br /&gt;
| Randy Billingsley&lt;br /&gt;
| Randy Billingsley&lt;br /&gt;
| Configure wlan on the beagle board using a wireless usb adapter&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Mike Fuson&lt;br /&gt;
| Mike Fuson&lt;br /&gt;
| Get XBMC working on the beagle.&lt;br /&gt;
| [http://elinux.org/BeagleBoard/GSoC/2010_Projects/XBMC XBMC wiki page]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Sam Allen&lt;br /&gt;
|&lt;br /&gt;
| Port Android to beagle&lt;br /&gt;
| It's done.  Check out [http://code.google.com/p/rowboat/ this].&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Yifei Li&lt;br /&gt;
| Change the splash screen to a Rose logo when the Beagle starts up&lt;br /&gt;
| [http://blog.bizmobiletech.com/?p=253&amp;amp;utm_source=feedburner&amp;amp;utm_medium=twitter&amp;amp;utm_campaign=Feed%3A+BeagleBoard+%28BeagleBoard.org%29 How to Change Angstrom Boot logo in beagleboard]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Ziyi Zhang&lt;br /&gt;
| Do remote debugging with Eclipse.  My page needs updating. This [http://www.lvr.com/eclipse1.htm tutorial] might be helpful.&lt;br /&gt;
| [[ECE497 Installing the Eclipse IDE]]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
|&lt;br /&gt;
| Investigate Eigen. Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms. Explicit vectorization is performed for SSE 2/3/4, ARM NEON, and AltiVec instruction sets, with graceful fallback to non-vectorized code. This means it should run fast on the Beagle.  How fast does it run?  Has anyone used it on the Beagle?&lt;br /&gt;
| [http://eigen.tuxfamily.org/index.php?title=Main_Page eigen.tuxfamily.org]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Find what libraries are available for the DSP side of the DM 3730 and write some examples that use them.&lt;br /&gt;
| [http://focus.ti.com/docs/toolsw/folders/print/sprc265.html C64x+ DSP Library (DSPLIB)] &lt;br /&gt;
[http://focus.ti.com/docs/toolsw/folders/print/sprc092.html DSPLIB] &lt;br /&gt;
[http://focus.ti.com/docs/toolsw/folders/print/sprc094.html IMGLIB]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Convert the OSS labs to use the new ALSA drivers&lt;br /&gt;
| [http://www.alsa-project.org/main/index.php/Tutorials_and_Presentations ALSA Tutorials]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Dig into the DSS drivers.  The OMAP display subsystem supports rotation and mirroring, but the '''mirror''' and '''rotate''' files in '''/sys/devices/platform/omapdss/display''' ''X'' don't work.  Find the code that implements them see if you can figure out what's wrong.&lt;br /&gt;
| [http://elinux.org/BeagleBoardFAQ#.22DSS2.22_display_driver_for_.3E.3D_2.6.29 dss2]&lt;br /&gt;
|-&lt;br /&gt;
| Jack Ma&lt;br /&gt;
| &lt;br /&gt;
| Install an RT kernel on beagleboard. If successful, this could turn into a full project for exploring RT system and application.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Jack Ma&lt;br /&gt;
| &lt;br /&gt;
| Interface beagleboard with a GPS device to read location information. If successful, see if it's possible build a (small) app that downloads appropriate map from google map and shows the beagleboard's location.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Jack Ma&lt;br /&gt;
| &lt;br /&gt;
| Install a VPN server on beagleboard.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Guanqun Wang&lt;br /&gt;
| &lt;br /&gt;
| Run beagle board with a small LCD display&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Yifei Li&lt;br /&gt;
| &lt;br /&gt;
| Demo a BeagleLight program that could synchronize LEDs with music.&lt;br /&gt;
| http://processors.wiki.ti.com/index.php/BeagleLight&lt;br /&gt;
|-&lt;br /&gt;
| Mona Yan&lt;br /&gt;
| Mona Yan&lt;br /&gt;
| Display BeagleBoard orientation by using accelerometer and opengl.&lt;br /&gt;
| -&lt;br /&gt;
| Yuming Cao&lt;br /&gt;
| Make beagleboard make a phone call&lt;br /&gt;
| [http://www.youtube.com/watch?v=uVCx1S8RLfs&amp;amp;feature=related]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Full Projects ==&lt;br /&gt;
&lt;br /&gt;
=== Winter 2011-2012 ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
! Team&amp;amp;nbsp;Members&lt;br /&gt;
! Project Title&lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| [http://e2e.ti.com/blogs_/b/dlp_mems_blog/archive/2011/05/13/3d-structured-light-using-dlp-technology.aspx 3D Structured Light using DLP® Technology]&lt;br /&gt;
| Create 3D maps using a DLP pico and the Beagle.&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| [http://m.matrixsynth.com/2011/06/beagleboard-synth-proof-of-concept.htm Beagle Midi]&lt;br /&gt;
| Make the Beagle synthesize midi files.&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| [http://www.sakoman.com/OMAP/an-overiew-of-omap3-power-management-with-2639-pm.html Beagle Power Management]&lt;br /&gt;
| Work up some power management demos.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2011 ===&lt;br /&gt;
Edit this page to add projects you would like to do.  If you aren't in the class, add ideas you would like to see done by class members.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
! Team&amp;amp;nbsp;Members&lt;br /&gt;
! Project Title&lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| [https://gforge.ti.com/gf/project/tiesr TI Embedded Speech Recognizer]&lt;br /&gt;
| Port TI's fixed-point speech recognizer to the DSP.  It currently runs on the ARM.&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Kinect&lt;br /&gt;
| [http://hackaday.com/2010/11/15/rendering-a-3d-environment-from-kinect-video/ Here] and [http://gamerfront.net/2010/12/with-a-second-kinect-you-can-map-out-your-bedroom-in-3d/4644 here] are some interesting things people are doing with Kinects.  Maybe we could port it to the Beagle.&lt;br /&gt;
|-&lt;br /&gt;
| Mike Lester&lt;br /&gt;
| Accelerometer-based auto-leveled projection&lt;br /&gt;
| Several projects have been started to add [http://matthsu-abacus.blogspot.com/2009/11/build-3-axis-accelerometer-on.html  accelerometer support] to the BeagleBoard. This project would involve getting an accelerometer installed and working, perhaps using a [http://elinux.org/BeagleBoard_Trainer trainer board], as well the [http://focus.ti.com/general/docs/gencontent.tsp?contentId=52770 TI Pico Projector]. The orientation data from the accelerometer would be used to rotate, skew, keystone the projected image in order to keep it level and normalized.&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Bamberger&lt;br /&gt;
| Kinect Based 3d Scanner&lt;br /&gt;
| Build some sort of motorized gantry that allows the Kinect to be rotated around (and possibly from top to bottom) of an arbitrary object.  The motors would be controlled using the BeagleBoard's I2C or SPI interfaces.  Use libfreenect to capture depth information from every side of the object as the Kinect rotates around the object.  Use this data and OpenGL to build a 3d model of the scanned object&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Port winDSK6 to the Beagle&lt;br /&gt;
| [http://www.ece.wisc.edu/~morrow/software/ winDSK6] is a Windows program that talks to a TI 'C6711 DSK and performs many interesting audio effects.  This project would implement the code running on the Windows side on the ARM.  The ARM could capture a frame of audio and send it to the DSP for processing.  The ARM could then send the processed audio to the speakers.  [http://processors.wiki.ti.com/index.php/C6Run c6run] would be used to interact with the DSP.  &lt;br /&gt;
|-&lt;br /&gt;
| David Bliss&lt;br /&gt;
| Automated Die Tester&lt;br /&gt;
| Make a device that can roll a die, and keep statistics on how random the die is. The build can either be very complex, or very simple, depending on how you define &amp;quot;rolling a die&amp;quot;. The software doesn't necessarily have to know what the numbers mean, it just has to be able to uniquely identify the sides.&lt;br /&gt;
|-&lt;br /&gt;
| Stephen Mayhew&lt;br /&gt;
| Set-Playing System&lt;br /&gt;
| Set is a relatively simple card game that lends itself nicely to image recognition and computer play. The layout is not very structured, and the game play is pretty simple. This project would incorporate image recognition, projection of possible moves (using the pico projector), and maybe even speech synthesis, and recognition. For example, if someone didn't know how to play Set, then the board could take them through a tutorial, asking questions of the user as it went along (&amp;quot;If I have these 2 cards, what 3rd card would make a set?&amp;quot;). This would make for an interesting demo at conferences. &lt;br /&gt;
|-&lt;br /&gt;
| Michael Fuson  &lt;br /&gt;
Jay Dial&lt;br /&gt;
| Spectrum Analyzer&lt;br /&gt;
|Create a real-time audio Spectrum analyzer on the BeagleBoard. [http://elinux.org/ECE497_Project_Spectrum_Analyzer Project Page]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2010 ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
! Team&amp;amp;nbsp;Members&lt;br /&gt;
! Project Title&lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
| Yannick Polius&lt;br /&gt;
| [[ECE597 Project pyWikiReader | pyWikiReader]]&lt;br /&gt;
| This project is mostly software, with the hardware element being the use of the dsp. The idea is to tie together three technologies: speech recognition, speech synthesis, and internet access in order to create an interface capable of orating information to the user based on a vocal command. The implementation I have in mind is to use the Pocket Sphinx speech recognition engine to first understand what the user wants through speech, such as &amp;quot;Rose-Hulman&amp;quot;. Once the speech is translated, the software can execute a Wikipedia search to pull said item's page. Most of the important info is contained within the introductory paragraph, so the software will take only that chunk and feed it into the Flite speech synthesis engine. The end result is a simple machine with &amp;quot;mother box&amp;quot; like usability, that is, no interaction besides what is natural to the user (speaking) should be necessary to retrieve the information.&lt;br /&gt;
|-&lt;br /&gt;
| Paul Morrison &amp;lt;br&amp;gt; Steven Stark&lt;br /&gt;
| [[ECE597 3D Chess | 3D Chess with Networking]]&lt;br /&gt;
| This project would simulate a hand-held chess game, and the game would allow two player games using two beagleboards over a network connection.  The graphics would use the beagle's PowerVR SGX for hardware accelerated graphics by using OpenGL.  In addition to 3D graphics and networking, a third portion of the project would be to optimize the boot time because a chess computer should start up quickly.&lt;br /&gt;
|-&lt;br /&gt;
| Tom Most &amp;lt;br&amp;gt; David Baty &amp;lt;br&amp;gt; Mark Jacobson&lt;br /&gt;
| [[ECE597: Sumo Robot|Sumo Robot]]&lt;br /&gt;
| The goal of this project is to create a robot capable of competing in the 3.0 kg weight class of a sumo competition ([http://www.youtube.com/watch?v=V3OR_sHrOJM an example]).  This would have minor hardware and electronics elements, but would focus on communication with sensors using the BeagleBoard and the Linux kernel.  At minimum, this involves sensors to detect the edge of the ring and the opposing robot.  This would likely be implemented using Sharp IR rangefinders, a ultrasonic rangefinders, and ideally a camera.  [http://circ.mtco.com/competitions/2010/rules/sumo Sumo rules].&lt;br /&gt;
|-&lt;br /&gt;
|Brian Embry &amp;lt;br&amp;gt; Jessica Lipscomb &amp;lt;br&amp;gt; Paul Banister&lt;br /&gt;
| [[ECE597 Network based MP3 player]]&lt;br /&gt;
| Network based mp3 player.  The Beagle will be programmed using a custom, protocol for transferring files from a network based server (x86 pc) to a Beagle.  Speakers will be attached to the Beagle, where the file will be played back.  Possible extensions are a LCD for displaying id3 tag information, and buttons for user interaction (next track, previous track, etc.) on the GPIO interface.&lt;br /&gt;
|-&lt;br /&gt;
|[[user:routhcr | Chris Routh]] &amp;lt;br&amp;gt; [[user:collinjc | J. Cody Collins]] &amp;lt;br&amp;gt; [[user:jacksogc | Greg Jackson]] [[user:Xinkeqiong | Keqiong Xin]]&lt;br /&gt;
| [[ECE597: Auto HUD]]&lt;br /&gt;
| Use the beagle board to run image recognition on a camera feed located inside a car, and then signaling to the driver via a pico projector various objects of interest.&lt;br /&gt;
|-&lt;br /&gt;
| Adam Jesionowski&amp;lt;br&amp;gt;Qiang Jiang&lt;br /&gt;
| [[ECE597_Adding_Sense_to_Beagle|Adding Sense to Beagle]] (See [[BeagleBoard/GSoC/Ideas]])&lt;br /&gt;
| Sensory aware applications are becoming more mainstream with the release of the Apple iPhone. This project would combine both HW and SW to add sensory awareness to beagle. First, additional modules such as GPS, 3-axis accelerometers, Gyroscopes, Temperature Sensors, Humidity Sensors, Pressure Sensors, etc, would be added to beagle to compliment the microphone input in order to allow sensing of the real world environment. Then SW APIs would need to be layered on top to allow easy access to the sensory data for use by applications. &lt;br /&gt;
|-&lt;br /&gt;
| Mitch Garvin &amp;lt;br&amp;gt; Matt Luke &amp;lt;br&amp;gt; Elliot Simon &amp;lt;br&amp;gt; Jian Li&lt;br /&gt;
| [[ECE597 Interactive Pong|Interactive Pong]]&lt;br /&gt;
| Run classic pong, projecting the screen and using a camera to track user's hands for input.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/EBC_Exercise_10_Flashing_an_LED</id>
		<title>EBC Exercise 10 Flashing an LED</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/EBC_Exercise_10_Flashing_an_LED"/>
				<updated>2011-12-01T00:12:51Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:EmbeddedBeagleClass]]&lt;br /&gt;
[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
The [http://en.wikipedia.org/wiki/Hello_world_program &amp;quot;Hello World&amp;quot;] program is the traditional first program for many classes.  Flashing an LED is the embedded equivalent.  Here we will explore a few ways to flash and LED on the Beagle and explore General Purpose I/O (gpio) along the way.  This will call be done from the command line of the Beagle, so there is no need for the host computer.&lt;br /&gt;
&lt;br /&gt;
== gpio via the Shell Command Line and sysfs ==&lt;br /&gt;
&lt;br /&gt;
The easiest way to do general purpose I/O (gpio) on the Beagle is through a terminal window and a shell prompt. In Linux most everything is treated as a file.  Even things that aren't files. In our class we'll use a virtual file system called '''sysfs'''.  sysfs exposes the drivers for the hardware so you get easily use them.&lt;br /&gt;
&lt;br /&gt;
Try this, open a terminal by selecting '''Applications:Accessories:Terminal'''&lt;br /&gt;
&lt;br /&gt;
[[File:Terminal.png‎]]&lt;br /&gt;
&lt;br /&gt;
Then type:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /sys&lt;br /&gt;
$ ls -F&lt;br /&gt;
block/  bus/  class/  dev/  devices/  firmware/  fs/  kernel/  module/  power/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here we see several directories that represent hardware we can control. Explore a bit and see what you find.&lt;br /&gt;
&lt;br /&gt;
Now try:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /sys/class&lt;br /&gt;
$ ls -F&lt;br /&gt;
bccat/      hwmon/        mtd/             scsi_disk/     usb_device/&lt;br /&gt;
bdi/        i2c-adapter/  net/             scsi_generic/  usbmon/&lt;br /&gt;
block/      i2c-dev/      omap-previewer/  scsi_host/     vc/&lt;br /&gt;
bluetooth/  input/        omap-resizer/    sound/         video4linux/&lt;br /&gt;
bsg/        leds/         pvr/             spi_master/    vtconsole/&lt;br /&gt;
display/    mdio_bus/     regulator/       spidev/&lt;br /&gt;
firmware/   mem/          rfkill/          thermal/&lt;br /&gt;
gpio/       misc/         rtc/             tty/&lt;br /&gt;
graphics/   mmc_host/     scsi_device/     ubi/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Explore some.  What do you find?  In '''graphics''' you will see the 3 frame buffers supported by the processor.  In '''sound''' you'll see the [http://www.alsa-project.org/main/index.php/Main_Page alsa] sound devices.&lt;br /&gt;
&lt;br /&gt;
=== Reading the Keyboard and Mouse ===&lt;br /&gt;
Try this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /sys/class/input&lt;br /&gt;
$ ls -F&lt;br /&gt;
$ evtest event2&lt;br /&gt;
Hit ctrl-C to stop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now move your mouse around, or try you keyboard.  My mouse is plugged into the bottom left USB port and event2 responds to it.  Where do your keyboard and mouse appear?&lt;br /&gt;
&lt;br /&gt;
=== Flashing the LEDs ===&lt;br /&gt;
The Beagle has a '''user0''' and '''user1''' LED that you can control. Try this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /sys/class/leds&lt;br /&gt;
$ ls -F&lt;br /&gt;
beagleboard::pmu_stat@  beagleboard::usr0@  beagleboard::usr1@&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here you see the directories for controlling each of the usr LEDs. By default, usr0 flashes a heartbeat pattern and usr1 flashes when the micro SD card is accessed.  Let's control usr0.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd beagleboard\:\:usr0&lt;br /&gt;
$ ls -F&lt;br /&gt;
brightness  device@  max_brightness  power/  subsystem@  trigger  uevent&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
See what's in '''brightness''', '''max_brightness''' and '''trigger''' by using the &amp;lt;code&amp;gt;cat&amp;lt;/code&amp;gt; command.  For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat trigger&lt;br /&gt;
none nand-disk mmc0 [heartbeat]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This shows trigger can have 4 values.  The present value is '''heartbeat'''.  Check the LED, is the beating?  You can stop the heartbeat via:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ echo none &amp;gt; trigger&lt;br /&gt;
$ cat trigger&lt;br /&gt;
[none] nand-disk mmc0 heartbeat &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Did it stop beating?  You can now turn it on and off with:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ echo 1 &amp;gt; brightness&lt;br /&gt;
$ echo 0 &amp;gt; brightness&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Is it responding correctly?&lt;br /&gt;
&lt;br /&gt;
=== Reading the User Button ===&lt;br /&gt;
The Beagle has a couple of push buttons. One reboots the whole board.  Use with care.  One is for you to use, it's to the right of the Reset button, between the two stacks of USB ports.&lt;br /&gt;
[[File:BeagleUserButton.png]]&lt;br /&gt;
&lt;br /&gt;
It's attached to gpio port 4.  You can read it via:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /sys/class/gpio&lt;br /&gt;
$ ls -F&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Notice there is no gpio4.  Here's how you can create it, set it to an input port and read its value:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ echo 4 &amp;gt; export&lt;br /&gt;
$ ls&lt;br /&gt;
$ cd gpio4&lt;br /&gt;
$ echo in &amp;gt; direction&lt;br /&gt;
$ cat value&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Try holding down the switch and doing &amp;lt;code&amp;gt;cat value&amp;lt;/code&amp;gt; again.  Does the value change?  There's a shell script called '''readgpio''' that repeatedly reads the switch.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ readgpio 4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Try pushing the switch.  Does it work?  Hit ctrl-C to stop.  Look at readgpio.  How does it work?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ which readgpio&lt;br /&gt;
$ cp /usr/bin/readgpio ~&lt;br /&gt;
$ gedit ~/readgpio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Reading a gpio pin with an Oscilloscope ===&lt;br /&gt;
You can easily access many of the gpio pins via the Main Expansion Header.  Page 107 of the [http://beagleboard.org/static/BBxMSRM_latest.pdf BeagleBoard-xM System Reference Manual] has this figure.&lt;br /&gt;
[[File:MainHeader.png | 750px]]&lt;br /&gt;
&lt;br /&gt;
Unfortunately the gpio pins don't appear here.  It turns out the processor has more internal I/O lines than it has physical pins.  Each physical pin can can be connected to up to 8 internal lines.  [[BeagleBoardPinMux]] does a nice job of explaining it all.  The big clue is here [[BeagleBoardPinMux#Beagle]] which references Table 22 on page 108 of the -xM [http://beagleboard.org/static/BBSRM_latest.pdf System Reference Manual].&lt;br /&gt;
&lt;br /&gt;
[[File:ExpansionSignals.png‎]]&lt;br /&gt;
&lt;br /&gt;
Note that gpio130 appears on pin 21 of the Expansion Header. Also note that pins 27 and 28 are ground.  Attach your scope probe to these.  Now, let's put a signal on the pin.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /sys/class/gpio&lt;br /&gt;
$ ls -F&lt;br /&gt;
export      gpiochip128@  gpiochip192@  gpiochip64@  unexport&lt;br /&gt;
gpiochip0@  gpiochip160@  gpiochip32@   gpiochip96@&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Notice there is no folder for gpio130.  Create it with:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ echo 130 &amp;gt; export&lt;br /&gt;
$ ls -F&lt;br /&gt;
export    gpiochip0@    gpiochip160@  gpiochip32@  gpiochip96@&lt;br /&gt;
gpio130@  gpiochip128@  gpiochip192@  gpiochip64@  unexport&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Go to your home directory on your Beagle and get '''togglepgio'''.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd&lt;br /&gt;
$ wget http://www.rose-hulman.edu/~yoder/Beagle/exercises/togglegpio&lt;br /&gt;
$ chmod +x togglegpio&lt;br /&gt;
$ gedit togglegpio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Can you tell what the program is doing?  Try running it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ togglegpio 130 0.05&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that if you are the root user (which is the default case for Angstrom), you will have to type the following command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./togglegpio 130 0.05&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first argument tells which gpio port to toggle, the second tells how long to delay between toggling.  In this example 0.05 s is 50 ms, which should give a period around 100ms. Measure the signal on an oscilloscope.&lt;br /&gt;
&lt;br /&gt;
=== Assignment: gpio from the shell ===&lt;br /&gt;
&lt;br /&gt;
==== Measuring a gpio pin on an Oscilloscope ====&lt;br /&gt;
&lt;br /&gt;
Answer the following questions about gpio measurements.&lt;br /&gt;
&lt;br /&gt;
# What's the min and max voltage?  &lt;br /&gt;
# What period is it?  &lt;br /&gt;
# How close is it to 100ms?  &lt;br /&gt;
# Why do they differ?&lt;br /&gt;
# Run '''htop''' and see how much processor you are using.&lt;br /&gt;
# Try different values for the sleep time (2nd argument). What's the shortest period you can get? Make a table of the values you try and the corresponding period and processor usage.&lt;br /&gt;
# How stable is the period?  &lt;br /&gt;
# Try launching something like '''mplayer'''. How stable is the period?&lt;br /&gt;
# Try cleaning up togglegpio and removing unneeded lines.  Does it impact the period?&lt;br /&gt;
# togglegpio uses bash (first line in file).  Try using sh.  Is the period shorter?&lt;br /&gt;
# What's the shortest period you can get?&lt;br /&gt;
&lt;br /&gt;
==== Toggling the LEDs ====&lt;br /&gt;
&lt;br /&gt;
Modify togglegpio (call it toggleLED) to toggle the LEDs.  Can you get the LED to appear to dim by changing the duty cycle of the toggling?&lt;br /&gt;
&lt;br /&gt;
==== User Button to gpio 130 ====&lt;br /&gt;
&lt;br /&gt;
Write a shell script that reads the User Button and outputs it value on gpio pin 130.&lt;br /&gt;
&lt;br /&gt;
==== Count the User Button Presses ====&lt;br /&gt;
&lt;br /&gt;
Write a shell script that displays a count of the number of times the User Button has been pressed.&lt;br /&gt;
&lt;br /&gt;
==== Copy gpio 130 to gpio 131 ====&lt;br /&gt;
&lt;br /&gt;
Write a shell script that copies the value of gpio pin 130 to gpio pin 131.  How much CPU time does it take?  What's the delay from the time the input changes until the output changes?  How constant is the delay?&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
# [http://wh1t3s.com/2009/05/14/reading-beagleboard-gpio/ Here] is wh1ts article on flashing an LED.  It is referenced in the '''readgpio''' file that comes on the Beagle.&lt;br /&gt;
# [http://blog.makezine.com/archive/2009/02/blinking-leds-with-the-beagle-board.html?CMP=OTC-0D6B48984890 This] Make magazine article has a few more details.&lt;br /&gt;
# [http://www.avrfreaks.net/wiki/index.php/Documentation:Linux/GPIO#Getting_access_to_a_GPIO Here] in a gpio reference for Linux in general. It includes sample 'C' code for flashing at 1 Hz.&lt;br /&gt;
# [https://groups.google.com/forum/?hl=en#!msg/beagleboard/20rM-r8C2YY/hVZiN2ahI8YJ Here] is a posting in the Beagle Google group about gpio.&lt;br /&gt;
# [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/gpio.txt;h=36af58eba136bac198ea3b1f33f34236be9ce5df;hb=HEAD Here] is some information about gpio from the kernel point of view.&lt;br /&gt;
# [http://wiki.gumstix.org/index.php?title=GPIO_Event_Driver Here] is some info on a GPIO Event Driver&lt;br /&gt;
# [https://www.ridgerun.com/developer/wiki/index.php/How_to_use_GPIO_signals Here] is info on how to set '''edge''' to falling and poll() the pin.&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/User:Yuming</id>
		<title>User:Yuming</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/User:Yuming"/>
				<updated>2011-11-21T20:14:36Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I'm in Cleveland with my sister now. Here's lots of Chinese restaurants and Oriental markets.&lt;br /&gt;
&lt;br /&gt;
The lake of Erie is wonderful. I'm heading for Chicago Wednesday. &lt;br /&gt;
&lt;br /&gt;
5 hours is not a trivial driving time. Hope me good luck.&lt;br /&gt;
&lt;br /&gt;
-Yuming&lt;br /&gt;
&lt;br /&gt;
[[Category:ECE497]]&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Contributions_and_Project_Status</id>
		<title>ECE497 Contributions and Project Status</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Contributions_and_Project_Status"/>
				<updated>2011-11-21T20:13:04Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Please edit this page and add your user name, alphabetically by last name, to this list.&lt;br /&gt;
&lt;br /&gt;
Take a look at what you and others have contributed.&lt;br /&gt;
&lt;br /&gt;
# [[Special:Contributions/YourUserName| YourName]]&lt;br /&gt;
# [[Special:Contributions/Yoder | Mark A. Yoder]]&lt;br /&gt;
# [[Special:Contributions/Yuming | Yuming Cao]]&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/User:Yuming</id>
		<title>User:Yuming</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/User:Yuming"/>
				<updated>2011-11-21T20:10:49Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I'm in Cleveland with my sister now. Here's lots of Chinese restaurants and Oriental markets.&lt;br /&gt;
&lt;br /&gt;
The lake of Erie is wonderful. I'm heading for Chicago Wednesday. &lt;br /&gt;
&lt;br /&gt;
5 hours is not a trivial driving time. Hope me good luck.&lt;br /&gt;
&lt;br /&gt;
-Yuming&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/User:Yuming</id>
		<title>User:Yuming</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/User:Yuming"/>
				<updated>2011-11-21T20:09:15Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: Created page with &amp;quot;I'm in Cleveland with my sister now. Here's lots of Chinese restaurants and Oriental markets. The lake of Erie is wonderful. I'm heading for Chicago Wednesday. 5 hours is not a t...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I'm in Cleveland with my sister now. Here's lots of Chinese restaurants and Oriental markets.&lt;br /&gt;
The lake of Erie is wonderful. I'm heading for Chicago Wednesday. 5 hours is not a trivial driving time. Hope me good luck.&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Editing_a_Wiki</id>
		<title>ECE497 Editing a Wiki</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Editing_a_Wiki"/>
				<updated>2011-11-21T20:05:50Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Here is a wiki you can practice editing.  Before you can edit it you will have to create an login.  Pick something that will make it easy for me to identify you as part of my class.  Then just add your name and date on the end of the table.&lt;br /&gt;
&lt;br /&gt;
You can get help here: [[Help:Contents]].&lt;br /&gt;
&lt;br /&gt;
If you need help with syntax check out the [[Editing Quickstart Guide|eLinux guide]] or the [http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet Wikipedia Cheetsheet].&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Name&lt;br /&gt;
! Date&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yoder | Mark A. Yoder]]&lt;br /&gt;
| 21-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yuming | Yuming Cao]]&lt;br /&gt;
| 21-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Editing_a_Wiki</id>
		<title>ECE497 Editing a Wiki</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Editing_a_Wiki"/>
				<updated>2011-11-21T20:04:55Z</updated>
		
		<summary type="html">&lt;p&gt;Caogecym: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Here is a wiki you can practice editing.  Before you can edit it you will have to create an login.  Pick something that will make it easy for me to identify you as part of my class.  Then just add your name and date on the end of the table.&lt;br /&gt;
&lt;br /&gt;
You can get help here: [[Help:Contents]].&lt;br /&gt;
&lt;br /&gt;
If you need help with syntax check out the [[Editing Quickstart Guide|eLinux guide]] or the [http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet Wikipedia Cheetsheet].&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Name&lt;br /&gt;
! Date&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yoder | Mark A. Yoder]]&lt;br /&gt;
| [[user:Yuming | Yuming Cao]]&lt;br /&gt;
| 21-Nov-2011&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Caogecym</name></author>	</entry>

	</feed>