https://elinux.org/api.php?action=feedcontributions&user=Gfrung4&feedformat=atomeLinux.org - User contributions [en]2024-03-28T17:34:29ZUser contributionsMediaWiki 1.31.0https://elinux.org/index.php?title=ECE497_Project_Christmas_Light_Controller&diff=426491ECE497 Project Christmas Light Controller2016-11-14T18:19:02Z<p>Gfrung4: Beautified theory of operation</p>
<hr />
<div>[[Category:ECE497 |Pc]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Woodsjl|Josh Woods]] and [[user:gfrung4| Ricky Rung]]<br />
<br />
== Grading Template ==<br />
=== Draft Feedback ===<br />
Looks good. Keep up the good work.<br />
<br />
Could you add some pictures to show what you are doing?<br />
<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<center><br />
[[File:HolidayLightsDemo.gif|Image|link=https://www.youtube.com/watch?v=N5L2YJnQbmM]]<br />
<br />
[https://www.youtube.com/watch?v=N5L2YJnQbmM '''Click for Video''']<br />
</center><br />
Our project is to create a user interface to control 320 LED lights on a 10 meter LED strip. The LED strip will then be put on the ECE Department’s tree during the holiday season.<br />
<br />
The interface will be online, and will allow anyone to write code to control the lights on the tree. Users will also be able to select patterns that others have programmed, if they don’t want to write their own.<br />
<br />
Submitted programs will each run for a specified length of time. A queue will be used, so if multiple people write programs at once, each program will get a chance to run. When one program’s run time expires, the next program will run, until the queue is empty. If no programs are waiting to run, the last run program will continue indefinitely.<br />
<br />
There will also be a speaker near the tree which will play holiday music, selected through the online interface. A separate “music queue” will be used to store songs to play. Users will be able to select from a list of songs to add music to the queue.<br />
<br />
This will be a fun and exciting holiday feature for the ECE department.<br />
<br />
== Needed Hardware ==<br />
In addition to a BeagleBone, you will need:<br />
<br />
* [http://www.adafruit.com/products/306 Adafruit's LPD8806 LED String]<br />
** Sold by the meter. Need to order 5 meters for a roll. Our project uses two rolls, for a total of 10 meters. The code can be easily adapted for more or less lights as needed.<br />
* [https://www.adafruit.com/product/658 5V Power Supply]<br />
** The LEDs use a lot of power. We used a 5V, 5A power supply to power our 10 meters, but we needed more power to have all the LEDs on full brightness. Adafruit sells a 5V, 10A supply, linked above, that they recommend to power the LEDs.<br />
* [https://www.sabrent.com/product/USB-SBCV/usb-2-0-external-2-1-surround-sound-adapter USB Audio Dongle]<br />
** Necessary if you want to use the BeagleBone to play holiday music. Connects to the USB port of the BeagleBone and has a 3.5mm audio output.<br />
* Speaker<br />
** Must be connected to the output of the USB Audio Dongle to play music for everyone to hear. Headphones can be used instead for testing.<br />
<br />
== Installation Instructions ==<br />
<br />
=== Software Setup ===<br />
* Clone [https://github.com/gfrung4/ECTree/ the repository] to your BeagleBone.<br />
git clone https://github.com/gfrung4/ECTree.git<br />
* Run the '''install.sh''' script in the repository. This needs to be run only once, but might take a while.<br />
cd ECTree<br />
./install.sh<br />
* Run the '''setup.sh''' script in the repository. This needs to be run every time you start up your BeagleBone.<br />
./setup.sh<br />
<br />
=== Hardware Setup ===<br />
* Connect the 5V power supply to the '''VCC''' and '''ground''' pins of the LED strip.<br />
* Connect the '''CLK''' pin of LED strip to '''P9_22''' of your BeagleBone.<br />
* Connect the '''DI''' pin of the LED strip to the '''P9_18''' pin of your BeagleBone.<br />
* Connect the ground of the power supply to the ground of your BeagleBone.<br />
* Plug the audio dongle into the USB port on your BeagleBone, and connect a speaker or headphones to the audio output of the dongle.<br />
<br />
=== Running ===<br />
* Run the server script, '''web.js'''.<br />
./web.js<br />
<br />
=== Troubleshooting ===<br />
* You may not have permissions to execute the web.js after cloning the repository. If not, you'll get this error:<br />
-bash: ./web.js: Permission denied<br />
This can be resolved by giving the owner of the file execute permissions, using this command:<br />
chmod 744 web.js<br />
Then try running it again and it will work!<br />
./web.js<br />
* You may get an error when running '''web.js''' if something else is using port '''80'''. This error looks like this:<br />
events.js:85<br />
throw er; // Unhandled 'error' event<br />
^<br />
Error: listen EADDRINUSE<br />
at exports._errnoException (util.js:746:11)<br />
at Server._listen2 (net.js:1158:14)<br />
at listen (net.js:1184:10)<br />
at Server.listen (net.js:1269:5)<br />
at Object.<anonymous> (/root/ECTree/web.js:237:6)<br />
at Module._compile (module.js:460:26)<br />
at Object.Module._extensions..js (module.js:478:10)<br />
at Module.load (module.js:355:32)<br />
at Function.Module._load (module.js:310:12)<br />
at Function.Module.runMain (module.js:501:10)<br />
If you get this error, it means '''bonescript''' is running automatically on your BeagleBone, and is using port '''80'''. To resolve this conflict, you can either change the port that '''ECTree''' runs on or stop '''bonescript'''. To stop '''bonescript''', just run these two commands. Don't worry! This won't be permanent. It will only be stopped until the BeagleBone restarts. This does mean, however, that you'll need to run these commands each time you start your BeagleBone.<br />
systemctl stop bonescript.socket<br />
systemctl disable bonescript.socket<br />
If you'd rather not stop bonescript, you can also change the port ECTree runs on. Open '''web.js''' in your favorite text editor and find this section:<br />
http.listen(80, function() {<br />
console.log('The server has started.');<br />
});<br />
Change '''80''' to some other port number that is not used for something else on your BeagleBone. The disadvantage of this is that you'll have to include that port number when accessing the web interface, so instead of http://ip, you'll have to go to http://ip:port. If you don't want to have to include a port like this, do the disable bonescript steps above instead.<br />
<br />
Once you've disabled bonescript or changed the port, try running again and the error will be gone. <br />
./web.js<br />
<br />
== User Instructions ==<br />
<br />
* Once the '''web.js''' server is running on the BeagleBone, you can access the web interface by pointing your browser to your BeagleBone's IP address. If your BeagleBone is connected to your computer via USB, that IP address is 192.168.7.2, so open your favorite web browser, type 192.168.7.2 into the address bar, and press enter.<br />
* Once there, you should see the interface:<br />
[[File:ECTreeInterface1.png|400px|frame User Interface]]<br />
* You can click '''Write Program''' to begin writing code.<br />
* If you need help getting started, click the Learn button in the navigation at the top of the page. This will take you to the tutorial.<br />
[[File:ECTreeInterface2.png|400px|frame Tutorial Interface]]<br />
* After completing the tutorial, you will be able to see your lights in action! You can then write more programs from the main page, now that you know how to do it! Enjoy the light show!<br />
<br />
== Highlights ==<br />
<br />
* Thanks to the Bootstrap framework, our user interface will work on any browser including smartphones. This makes it easier for people passing by to change the lights! It's difficult to write programs on a smartphone, but previously written programs can be easily selected, and music can be added to the queue as well.<br />
* While our project allows any user to write code to control the lights, the code actually runs in the user's browser and the result is sent to the BeagleBone in the form of a list of "frames". This keeps our BeagleBone safe. Running arbitrary code submitted by users on the BeagleBone itself would be a major security flaw. Anyone could just write an infinite loop and crash the program! Or worse, they could write code that called commands to delete everything on the BeagleBone or take control of it for malicious uses.<br />
* All light display patterns made by the users are saved for future use. Although the interface only displays the most recent 10 patterns, it would be easy to modify to support searching through all past patterns. This gives people who don't want to code a variety of fun programs to run.<br />
* The code is written in a way that allows more audio files to be easily added to expand the list of holiday music the BeagleBone can play.<br />
<br />
== Theory of Operation ==<br />
<br />
# A server listens on port 80 for users to connect.<br />
# When a user connects, they are sent the main page.<br />
# Scripts on the main page request the light and music queues, which are displayed to the user.<br />
# The server sends an update whenever the queue changes, which causes the interface to update showing the new queue.<br />
# The user can send three different packets to control the lights and music:<br />
## '''New Program''' : Contains a JavaScript object (in JSON format) that represents the program the user just wrote. The server saves the program for future use, and also adds it to the queue.<br />
## '''Choose Program''' : Contains a single number, the program index, of the program that the user wants to play. This is used when the user wants to play a program that someone else already wrote, rather than write their own. The program is added to the queue.<br />
## '''Add Music''' : Contains a single number, the music index, of the song the user wants to play. The song is added to the queue.<br />
<br />
== Work Breakdown ==<br />
<br />
* Getting hardware SPI on the BeagleBone working to control the lights.<br />
:'''George'''<br />
* Writing server-side code.<br />
:'''Josh & George'''<br />
* Writing user interface.<br />
:'''Josh & George'''<br />
* Writing server side queue code to play light programs and audio one at a time<br />
:'''Josh'''<br />
* Writing interface code to display the queue to the user in a table<br />
:'''George'''<br />
* Getting the BeagleBone to work with the USB Audio Dongle to play audio<br />
:'''Josh'''<br />
<br />
== Future Work ==<br />
<br />
* Making the lights "dance" to the beat of the music.<br />
* More previously submitted programs. The interface currently only shows the past 10 programs, which means any programs prior to this can't be run anymore! We'd like to expand it to show all the programs, but this would require "pages" of programs or a search feature, as there would eventually be too many to show at one time.<br />
* Program GIF preview on the interface. We had experimented with having the BeagleBone generate a GIF preview of each submitted program so that future users could see what the programs looked like before playing them on the tree. Sometimes the names alone weren't descriptive enough to figure out what the programs did. We were unable to get this working in time.<br />
* Administration interface. Since anyone can submit a program (and name it), there is the potential for unwanted programs or inappropriate names being submitted. Right now, there is no way to remove these programs or change their names, and no way to block the users that submit them. A simple hidden administration page that allows programs to be deleted is required before this is used on a larger scale. The ability to block specific IP addresses, or limit submissions to a certain IP range (campus only, for example) would be nice as well. This will be added before the lights are used on the real tree and opened to the entire department (and campus).<br />
* More user input validation. There were two exploits that were unpatched:<br />
** Submitting an empty program (typing no code) would cause the server to crash on the BeagleBone, requiring it to be manually restarted.<br />
** Using very short delays (~1 millisecond) would cause the SPI buffer to fill up, resulting in future programs not getting executed because the buffer is still finishing the previous program.<br />
:These could be resolved by blocking invalid programs (empty programs or programs with delays that are too short). This change will be made before the lights are used on the real tree and opened to the entire department (and campus) to avoid issues.<br />
<br />
== Conclusions ==<br />
<br />
=== Josh ===<br />
I really enjoyed working on this project because I got to learn and explore some of the aspects of web programming. It will be nice to come back to campus after fall break and see the project in use and see how much action the lights will be getting.<br />
<br />
=== Ricky ===<br />
This project was a lot of fun to work on. I intend to continue working on it over the next week or so (and maybe even over Thanksgiving break) to make sure it's ready to go on the department's tree. I hope that people participate in making programs for the lights. If we can get people interested in it, I think it'll be a great success!<br />
<br />
{{YoderFoot}}</div>Gfrung4https://elinux.org/index.php?title=ECE497_Project_Christmas_Light_Controller&diff=426486ECE497 Project Christmas Light Controller2016-11-14T18:14:23Z<p>Gfrung4: </p>
<hr />
<div>[[Category:ECE497 |Pc]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Woodsjl|Josh Woods]] and [[user:gfrung4| Ricky Rung]]<br />
<br />
== Grading Template ==<br />
=== Draft Feedback ===<br />
Looks good. Keep up the good work.<br />
<br />
Could you add some pictures to show what you are doing?<br />
<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<center><br />
[[File:HolidayLightsDemo.gif|Image|link=https://www.youtube.com/watch?v=N5L2YJnQbmM]]<br />
<br />
[https://www.youtube.com/watch?v=N5L2YJnQbmM '''Click for Video''']<br />
</center><br />
Our project is to create a user interface to control 320 LED lights on a 10 meter LED strip. The LED strip will then be put on the ECE Department’s tree during the holiday season.<br />
<br />
The interface will be online, and will allow anyone to write code to control the lights on the tree. Users will also be able to select patterns that others have programmed, if they don’t want to write their own.<br />
<br />
Submitted programs will each run for a specified length of time. A queue will be used, so if multiple people write programs at once, each program will get a chance to run. When one program’s run time expires, the next program will run, until the queue is empty. If no programs are waiting to run, the last run program will continue indefinitely.<br />
<br />
There will also be a speaker near the tree which will play holiday music, selected through the online interface. A separate “music queue” will be used to store songs to play. Users will be able to select from a list of songs to add music to the queue.<br />
<br />
This will be a fun and exciting holiday feature for the ECE department.<br />
<br />
== Needed Hardware ==<br />
In addition to a BeagleBone, you will need:<br />
<br />
* [http://www.adafruit.com/products/306 Adafruit's LPD8806 LED String]<br />
** Sold by the meter. Need to order 5 meters for a roll. Our project uses two rolls, for a total of 10 meters. The code can be easily adapted for more or less lights as needed.<br />
* [https://www.adafruit.com/product/658 5V Power Supply]<br />
** The LEDs use a lot of power. We used a 5V, 5A power supply to power our 10 meters, but we needed more power to have all the LEDs on full brightness. Adafruit sells a 5V, 10A supply, linked above, that they recommend to power the LEDs.<br />
* [https://www.sabrent.com/product/USB-SBCV/usb-2-0-external-2-1-surround-sound-adapter USB Audio Dongle]<br />
** Necessary if you want to use the BeagleBone to play holiday music. Connects to the USB port of the BeagleBone and has a 3.5mm audio output.<br />
* Speaker<br />
** Must be connected to the output of the USB Audio Dongle to play music for everyone to hear. Headphones can be used instead for testing.<br />
<br />
== Installation Instructions ==<br />
<br />
=== Software Setup ===<br />
* Clone [https://github.com/gfrung4/ECTree/ the repository] to your BeagleBone.<br />
git clone https://github.com/gfrung4/ECTree.git<br />
* Run the '''install.sh''' script in the repository. This needs to be run only once, but might take a while.<br />
cd ECTree<br />
./install.sh<br />
* Run the '''setup.sh''' script in the repository. This needs to be run every time you start up your BeagleBone.<br />
./setup.sh<br />
<br />
=== Hardware Setup ===<br />
* Connect the 5V power supply to the '''VCC''' and '''ground''' pins of the LED strip.<br />
* Connect the '''CLK''' pin of LED strip to '''P9_22''' of your BeagleBone.<br />
* Connect the '''DI''' pin of the LED strip to the '''P9_18''' pin of your BeagleBone.<br />
* Connect the ground of the power supply to the ground of your BeagleBone.<br />
* Plug the audio dongle into the USB port on your BeagleBone, and connect a speaker or headphones to the audio output of the dongle.<br />
<br />
=== Running ===<br />
* Run the server script, '''web.js'''.<br />
./web.js<br />
<br />
=== Troubleshooting ===<br />
* You may not have permissions to execute the web.js after cloning the repository. If not, you'll get this error:<br />
-bash: ./web.js: Permission denied<br />
This can be resolved by giving the owner of the file execute permissions, using this command:<br />
chmod 744 web.js<br />
Then try running it again and it will work!<br />
./web.js<br />
* You may get an error when running '''web.js''' if something else is using port '''80'''. This error looks like this:<br />
events.js:85<br />
throw er; // Unhandled 'error' event<br />
^<br />
Error: listen EADDRINUSE<br />
at exports._errnoException (util.js:746:11)<br />
at Server._listen2 (net.js:1158:14)<br />
at listen (net.js:1184:10)<br />
at Server.listen (net.js:1269:5)<br />
at Object.<anonymous> (/root/ECTree/web.js:237:6)<br />
at Module._compile (module.js:460:26)<br />
at Object.Module._extensions..js (module.js:478:10)<br />
at Module.load (module.js:355:32)<br />
at Function.Module._load (module.js:310:12)<br />
at Function.Module.runMain (module.js:501:10)<br />
If you get this error, it means '''bonescript''' is running automatically on your BeagleBone, and is using port '''80'''. To resolve this conflict, you can either change the port that '''ECTree''' runs on or stop '''bonescript'''. To stop '''bonescript''', just run these two commands. Don't worry! This won't be permanent. It will only be stopped until the BeagleBone restarts. This does mean, however, that you'll need to run these commands each time you start your BeagleBone.<br />
systemctl stop bonescript.socket<br />
systemctl disable bonescript.socket<br />
If you'd rather not stop bonescript, you can also change the port ECTree runs on. Open '''web.js''' in your favorite text editor and find this section:<br />
http.listen(80, function() {<br />
console.log('The server has started.');<br />
});<br />
Change '''80''' to some other port number that is not used for something else on your BeagleBone. The disadvantage of this is that you'll have to include that port number when accessing the web interface, so instead of http://ip, you'll have to go to http://ip:port. If you don't want to have to include a port like this, do the disable bonescript steps above instead.<br />
<br />
Once you've disabled bonescript or changed the port, try running again and the error will be gone. <br />
./web.js<br />
<br />
== User Instructions ==<br />
<br />
* Once the '''web.js''' server is running on the BeagleBone, you can access the web interface by pointing your browser to your BeagleBone's IP address. If your BeagleBone is connected to your computer via USB, that IP address is 192.168.7.2, so open your favorite web browser, type 192.168.7.2 into the address bar, and press enter.<br />
* Once there, you should see the interface:<br />
[[File:ECTreeInterface1.png|400px|frame User Interface]]<br />
* You can click '''Write Program''' to begin writing code.<br />
* If you need help getting started, click the Learn button in the navigation at the top of the page. This will take you to the tutorial.<br />
[[File:ECTreeInterface2.png|400px|frame Tutorial Interface]]<br />
* After completing the tutorial, you will be able to see your lights in action! You can then write more programs from the main page, now that you know how to do it! Enjoy the light show!<br />
<br />
== Highlights ==<br />
<br />
* Thanks to the Bootstrap framework, our user interface will work on any browser including smartphones. This makes it easier for people passing by to change the lights! It's difficult to write programs on a smartphone, but previously written programs can be easily selected, and music can be added to the queue as well.<br />
* While our project allows any user to write code to control the lights, the code actually runs in the user's browser and the result is sent to the BeagleBone in the form of a list of "frames". This keeps our BeagleBone safe. Running arbitrary code submitted by users on the BeagleBone itself would be a major security flaw. Anyone could just write an infinite loop and crash the program! Or worse, they could write code that called commands to delete everything on the BeagleBone or take control of it for malicious uses.<br />
* All light display patterns made by the users are saved for future use. Although the interface only displays the most recent 10 patterns, it would be easy to modify to support searching through all past patterns. This gives people who don't want to code a variety of fun programs to run.<br />
* The code is written in a way that allows more audio files to be easily added to expand the list of holiday music the BeagleBone can play.<br />
<br />
== Theory of Operation ==<br />
<br />
We have a server that is listening on port 80 for user's to connect. once a user connects the web page request all current queue information and displays that information for the user<br />
to know how long until their pattern or song will be played. The server handles all of the request from many users to maintain unity among all the users so that everyone sees the same queue. the display patterns are sent from the user to the server using a json object and not actual code to prevent bad code spinning the server out of control.<br />
<br />
== Work Breakdown ==<br />
<br />
* Getting hardware SPI on the BeagleBone working to control the lights.<br />
:'''George'''<br />
* Writing server-side code.<br />
:'''Josh & George'''<br />
* Writing user interface.<br />
:'''Josh & George'''<br />
* Writing server side queue code to play light programs and audio one at a time<br />
:'''Josh'''<br />
* Writing interface code to display the queue to the user in a table<br />
:'''George'''<br />
* Getting the BeagleBone to work with the USB Audio Dongle to play audio<br />
:'''Josh'''<br />
<br />
== Future Work ==<br />
<br />
* Making the lights "dance" to the beat of the music.<br />
* More previously submitted programs. The interface currently only shows the past 10 programs, which means any programs prior to this can't be run anymore! We'd like to expand it to show all the programs, but this would require "pages" of programs or a search feature, as there would eventually be too many to show at one time.<br />
* Program GIF preview on the interface. We had experimented with having the BeagleBone generate a GIF preview of each submitted program so that future users could see what the programs looked like before playing them on the tree. Sometimes the names alone weren't descriptive enough to figure out what the programs did. We were unable to get this working in time.<br />
* Administration interface. Since anyone can submit a program (and name it), there is the potential for unwanted programs or inappropriate names being submitted. Right now, there is no way to remove these programs or change their names, and no way to block the users that submit them. A simple hidden administration page that allows programs to be deleted is required before this is used on a larger scale. The ability to block specific IP addresses, or limit submissions to a certain IP range (campus only, for example) would be nice as well. This will be added before the lights are used on the real tree and opened to the entire department (and campus).<br />
* More user input validation. There were two exploits that were unpatched:<br />
** Submitting an empty program (typing no code) would cause the server to crash on the BeagleBone, requiring it to be manually restarted.<br />
** Using very short delays (~1 millisecond) would cause the SPI buffer to fill up, resulting in future programs not getting executed because the buffer is still finishing the previous program.<br />
:These could be resolved by blocking invalid programs (empty programs or programs with delays that are too short). This change will be made before the lights are used on the real tree and opened to the entire department (and campus) to avoid issues.<br />
<br />
== Conclusions ==<br />
<br />
=== Josh ===<br />
I really enjoyed working on this project because I got to learn and explore some of the aspects of web programming. It will be nice to come back to campus after fall break and see the project in use and see how much action the lights will be getting.<br />
<br />
=== Ricky ===<br />
This project was a lot of fun to work on. I intend to continue working on it over the next week or so (and maybe even over Thanksgiving break) to make sure it's ready to go on the department's tree. I hope that people participate in making programs for the lights. If we can get people interested in it, I think it'll be a great success!<br />
<br />
{{YoderFoot}}</div>Gfrung4https://elinux.org/index.php?title=ECE497_Project_Christmas_Light_Controller&diff=426481ECE497 Project Christmas Light Controller2016-11-14T18:13:55Z<p>Gfrung4: /* Conclusions */</p>
<hr />
<div>[[Category:ECE497 |Pc]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Woodsjl|Josh Woods]] and [[user:gfrung4| Ricky Rung]]<br />
<br />
== Grading Template ==<br />
=== Draft Feedback ===<br />
Looks good. Keep up the good work.<br />
<br />
Could you add some pictures to show what you are doing?<br />
<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<center><br />
[[File:HolidayLightsDemo.gif|Image|link=https://www.youtube.com/watch?v=N5L2YJnQbmM]]<br />
<br />
[https://www.youtube.com/watch?v=N5L2YJnQbmM '''Click for Video''']<br />
</center><br />
Our project is to create a user interface to control 320 LED lights on a 10 meter LED strip. The LED strip will then be put on the ECE Department’s tree during the holiday season.<br />
<br />
The interface will be online, and will allow anyone to write code to control the lights on the tree. Users will also be able to select patterns that others have programmed, if they don’t want to write their own.<br />
<br />
Submitted programs will each run for a specified length of time. A queue will be used, so if multiple people write programs at once, each program will get a chance to run. When one program’s run time expires, the next program will run, until the queue is empty. If no programs are waiting to run, the last run program will continue indefinitely.<br />
<br />
There will also be a speaker near the tree which will play holiday music, selected through the online interface. A separate “music queue” will be used to store songs to play. Users will be able to select from a list of songs to add music to the queue.<br />
<br />
This will be a fun and exciting holiday feature for the ECE department.<br />
<br />
== Needed Hardware ==<br />
In addition to a BeagleBone, you will need:<br />
<br />
* [http://www.adafruit.com/products/306 Adafruit's LPD8806 LED String]<br />
** Sold by the meter. Need to order 5 meters for a roll. Our project uses two rolls, for a total of 10 meters. The code can be easily adapted for more or less lights as needed.<br />
* [https://www.adafruit.com/product/658 5V Power Supply]<br />
** The LEDs use a lot of power. We used a 5V, 5A power supply to power our 10 meters, but we needed more power to have all the LEDs on full brightness. Adafruit sells a 5V, 10A supply, linked above, that they recommend to power the LEDs.<br />
* [https://www.sabrent.com/product/USB-SBCV/usb-2-0-external-2-1-surround-sound-adapter USB Audio Dongle]<br />
** Necessary if you want to use the BeagleBone to play holiday music. Connects to the USB port of the BeagleBone and has a 3.5mm audio output.<br />
* Speaker<br />
** Must be connected to the output of the USB Audio Dongle to play music for everyone to hear. Headphones can be used instead for testing.<br />
<br />
== Installation Instructions ==<br />
<br />
=== Software Setup ===<br />
* Clone [https://github.com/gfrung4/ECTree/ the repository] to your BeagleBone.<br />
git clone https://github.com/gfrung4/ECTree.git<br />
* Run the '''install.sh''' script in the repository. This needs to be run only once, but might take a while.<br />
cd ECTree<br />
./install.sh<br />
* Run the '''setup.sh''' script in the repository. This needs to be run every time you start up your BeagleBone.<br />
./setup.sh<br />
<br />
=== Hardware Setup ===<br />
* Connect the 5V power supply to the '''VCC''' and '''ground''' pins of the LED strip.<br />
* Connect the '''CLK''' pin of LED strip to '''P9_22''' of your BeagleBone.<br />
* Connect the '''DI''' pin of the LED strip to the '''P9_18''' pin of your BeagleBone.<br />
* Connect the ground of the power supply to the ground of your BeagleBone.<br />
* Plug the audio dongle into the USB port on your BeagleBone, and connect a speaker or headphones to the audio output of the dongle.<br />
<br />
=== Running ===<br />
* Run the server script, '''web.js'''.<br />
./web.js<br />
<br />
=== Troubleshooting ===<br />
* You may not have permissions to execute the web.js after cloning the repository. If not, you'll get this error:<br />
-bash: ./web.js: Permission denied<br />
This can be resolved by giving the owner of the file execute permissions, using this command:<br />
chmod 744 web.js<br />
Then try running it again and it will work!<br />
./web.js<br />
* You may get an error when running '''web.js''' if something else is using port '''80'''. This error looks like this:<br />
events.js:85<br />
throw er; // Unhandled 'error' event<br />
^<br />
Error: listen EADDRINUSE<br />
at exports._errnoException (util.js:746:11)<br />
at Server._listen2 (net.js:1158:14)<br />
at listen (net.js:1184:10)<br />
at Server.listen (net.js:1269:5)<br />
at Object.<anonymous> (/root/ECTree/web.js:237:6)<br />
at Module._compile (module.js:460:26)<br />
at Object.Module._extensions..js (module.js:478:10)<br />
at Module.load (module.js:355:32)<br />
at Function.Module._load (module.js:310:12)<br />
at Function.Module.runMain (module.js:501:10)<br />
If you get this error, it means '''bonescript''' is running automatically on your BeagleBone, and is using port '''80'''. To resolve this conflict, you can either change the port that '''ECTree''' runs on or stop '''bonescript'''. To stop '''bonescript''', just run these two commands. Don't worry! This won't be permanent. It will only be stopped until the BeagleBone restarts. This does mean, however, that you'll need to run these commands each time you start your BeagleBone.<br />
systemctl stop bonescript.socket<br />
systemctl disable bonescript.socket<br />
If you'd rather not stop bonescript, you can also change the port ECTree runs on. Open '''web.js''' in your favorite text editor and find this section:<br />
http.listen(80, function() {<br />
console.log('The server has started.');<br />
});<br />
Change '''80''' to some other port number that is not used for something else on your BeagleBone. The disadvantage of this is that you'll have to include that port number when accessing the web interface, so instead of http://ip, you'll have to go to http://ip:port. If you don't want to have to include a port like this, do the disable bonescript steps above instead.<br />
<br />
Once you've disabled bonescript or changed the port, try running again and the error will be gone. <br />
./web.js<br />
<br />
== User Instructions ==<br />
<br />
* Once the '''web.js''' server is running on the BeagleBone, you can access the web interface by pointing your browser to your BeagleBone's IP address. If your BeagleBone is connected to your computer via USB, that IP address is 192.168.7.2, so open your favorite web browser, type 192.168.7.2 into the address bar, and press enter.<br />
* Once there, you should see the interface:<br />
[[File:ECTreeInterface1.png|400px|frame User Interface]]<br />
* You can click '''Write Program''' to begin writing code.<br />
* If you need help getting started, click the Learn button in the navigation at the top of the page. This will take you to the tutorial.<br />
[[File:ECTreeInterface2.png|400px|frame Tutorial Interface]]<br />
* After completing the tutorial, you will be able to see your lights in action! You can then write more programs from the main page, now that you know how to do it! Enjoy the light show!<br />
<br />
== Highlights ==<br />
<br />
* Thanks to the Bootstrap framework, our user interface will work on any browser including smartphones. This makes it easier for people passing by to change the lights! It's difficult to write programs on a smartphone, but previously written programs can be easily selected, and music can be added to the queue as well.<br />
* While our project allows any user to write code to control the lights, the code actually runs in the user's browser and the result is sent to the BeagleBone in the form of a list of "frames". This keeps our BeagleBone safe. Running arbitrary code submitted by users on the BeagleBone itself would be a major security flaw. Anyone could just write an infinite loop and crash the program! Or worse, they could write code that called commands to delete everything on the BeagleBone or take control of it for malicious uses.<br />
* All light display patterns made by the users are saved for future use. Although the interface only displays the most recent 10 patterns, it would be easy to modify to support searching through all past patterns. This gives people who don't want to code a variety of fun programs to run.<br />
* The code is written in a way that allows more audio files to be easily added to expand the list of holiday music the BeagleBone can play.<br />
<br />
== Theory of Operation ==<br />
<br />
We have a server that is listening on port 80 for user's to connect. once a user connects the web page request all current queue information and displays that information for the user<br />
to know how long until their pattern or song will be played. The server handles all of the request from many users to maintain unity among all the users so that everyone sees the same queue. the display patterns are sent from the user to the server using a json object and not actual code to prevent bad code spinning the server out of control.<br />
<br />
== Work Breakdown ==<br />
<br />
* Getting hardware SPI on the BeagleBone working to control the lights.<br />
:'''George'''<br />
* Writing server-side code.<br />
:'''Josh & George'''<br />
* Writing user interface.<br />
:'''Josh & George'''<br />
* Writing server side queue code to play light programs and audio one at a time<br />
:'''Josh'''<br />
* Writing interface code to display the queue to the user in a table<br />
:'''George'''<br />
* Getting the BeagleBone to work with the USB Audio Dongle to play audio<br />
:'''Josh'''<br />
<br />
== Future Work ==<br />
<br />
* Making the lights "dance" to the beat of the music.<br />
* More previously submitted programs. The interface currently only shows the past 10 programs, which means any programs prior to this can't be run anymore! We'd like to expand it to show all the programs, but this would require "pages" of programs or a search feature, as there would eventually be too many to show at one time.<br />
* Program GIF preview on the interface. We had experimented with having the BeagleBone generate a GIF preview of each submitted program so that future users could see what the programs looked like before playing them on the tree. Sometimes the names alone weren't descriptive enough to figure out what the programs did. We were unable to get this working in time.<br />
* Administration interface. Since anyone can submit a program (and name it), there is the potential for unwanted programs or inappropriate names being submitted. Right now, there is no way to remove these programs or change their names, and no way to block the users that submit them. A simple hidden administration page that allows programs to be deleted is required before this is used on a larger scale. The ability to block specific IP addresses, or limit submissions to a certain IP range (campus only, for example) would be nice as well. This will be added before the lights are used on the real tree and opened to the entire department (and campus).<br />
* More user input validation. There were two exploits that were unpatched:<br />
** Submitting an empty program (typing no code) would cause the server to crash on the BeagleBone, requiring it to be manually restarted.<br />
** Using very short delays (~1 millisecond) would cause the SPI buffer to fill up, resulting in future programs not getting executed because the buffer is still finishing the previous program.<br />
:These could be resolved by blocking invalid programs (empty programs or programs with delays that are too short). This change will be made before the lights are used on the real tree and opened to the entire department (and campus) to avoid issues.<br />
<br />
== Conclusions ==<br />
<br />
=== Josh ===<br />
I really enjoyed working on this project because I got to learn and explore some of the aspects of web programming. It will be nice to come back to campus after fall break and see the project in use and see how much action the lights will be getting.<br />
<br />
=== Ricky ===<br />
This project was a lot of fun to work on. I intend to continue working on it over the next week or so (and maybe even over Thanksgiving break) to make sure it's ready to go on the department's tree. I hope that people participate in making programs for the lights. If we can get people interested in it, I think it'll be a great success!</div>Gfrung4https://elinux.org/index.php?title=ECE497_Project_Christmas_Light_Controller&diff=426476ECE497 Project Christmas Light Controller2016-11-14T18:08:35Z<p>Gfrung4: /* Future Work */</p>
<hr />
<div>[[Category:ECE497 |Pc]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Woodsjl|Josh Woods]] and [[user:gfrung4| Ricky Rung]]<br />
<br />
== Grading Template ==<br />
=== Draft Feedback ===<br />
Looks good. Keep up the good work.<br />
<br />
Could you add some pictures to show what you are doing?<br />
<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<center><br />
[[File:HolidayLightsDemo.gif|Image|link=https://www.youtube.com/watch?v=N5L2YJnQbmM]]<br />
<br />
[https://www.youtube.com/watch?v=N5L2YJnQbmM '''Click for Video''']<br />
</center><br />
Our project is to create a user interface to control 320 LED lights on a 10 meter LED strip. The LED strip will then be put on the ECE Department’s tree during the holiday season.<br />
<br />
The interface will be online, and will allow anyone to write code to control the lights on the tree. Users will also be able to select patterns that others have programmed, if they don’t want to write their own.<br />
<br />
Submitted programs will each run for a specified length of time. A queue will be used, so if multiple people write programs at once, each program will get a chance to run. When one program’s run time expires, the next program will run, until the queue is empty. If no programs are waiting to run, the last run program will continue indefinitely.<br />
<br />
There will also be a speaker near the tree which will play holiday music, selected through the online interface. A separate “music queue” will be used to store songs to play. Users will be able to select from a list of songs to add music to the queue.<br />
<br />
This will be a fun and exciting holiday feature for the ECE department.<br />
<br />
== Needed Hardware ==<br />
In addition to a BeagleBone, you will need:<br />
<br />
* [http://www.adafruit.com/products/306 Adafruit's LPD8806 LED String]<br />
** Sold by the meter. Need to order 5 meters for a roll. Our project uses two rolls, for a total of 10 meters. The code can be easily adapted for more or less lights as needed.<br />
* [https://www.adafruit.com/product/658 5V Power Supply]<br />
** The LEDs use a lot of power. We used a 5V, 5A power supply to power our 10 meters, but we needed more power to have all the LEDs on full brightness. Adafruit sells a 5V, 10A supply, linked above, that they recommend to power the LEDs.<br />
* [https://www.sabrent.com/product/USB-SBCV/usb-2-0-external-2-1-surround-sound-adapter USB Audio Dongle]<br />
** Necessary if you want to use the BeagleBone to play holiday music. Connects to the USB port of the BeagleBone and has a 3.5mm audio output.<br />
* Speaker<br />
** Must be connected to the output of the USB Audio Dongle to play music for everyone to hear. Headphones can be used instead for testing.<br />
<br />
== Installation Instructions ==<br />
<br />
=== Software Setup ===<br />
* Clone [https://github.com/gfrung4/ECTree/ the repository] to your BeagleBone.<br />
git clone https://github.com/gfrung4/ECTree.git<br />
* Run the '''install.sh''' script in the repository. This needs to be run only once, but might take a while.<br />
cd ECTree<br />
./install.sh<br />
* Run the '''setup.sh''' script in the repository. This needs to be run every time you start up your BeagleBone.<br />
./setup.sh<br />
<br />
=== Hardware Setup ===<br />
* Connect the 5V power supply to the '''VCC''' and '''ground''' pins of the LED strip.<br />
* Connect the '''CLK''' pin of LED strip to '''P9_22''' of your BeagleBone.<br />
* Connect the '''DI''' pin of the LED strip to the '''P9_18''' pin of your BeagleBone.<br />
* Connect the ground of the power supply to the ground of your BeagleBone.<br />
* Plug the audio dongle into the USB port on your BeagleBone, and connect a speaker or headphones to the audio output of the dongle.<br />
<br />
=== Running ===<br />
* Run the server script, '''web.js'''.<br />
./web.js<br />
<br />
=== Troubleshooting ===<br />
* You may not have permissions to execute the web.js after cloning the repository. If not, you'll get this error:<br />
-bash: ./web.js: Permission denied<br />
This can be resolved by giving the owner of the file execute permissions, using this command:<br />
chmod 744 web.js<br />
Then try running it again and it will work!<br />
./web.js<br />
* You may get an error when running '''web.js''' if something else is using port '''80'''. This error looks like this:<br />
events.js:85<br />
throw er; // Unhandled 'error' event<br />
^<br />
Error: listen EADDRINUSE<br />
at exports._errnoException (util.js:746:11)<br />
at Server._listen2 (net.js:1158:14)<br />
at listen (net.js:1184:10)<br />
at Server.listen (net.js:1269:5)<br />
at Object.<anonymous> (/root/ECTree/web.js:237:6)<br />
at Module._compile (module.js:460:26)<br />
at Object.Module._extensions..js (module.js:478:10)<br />
at Module.load (module.js:355:32)<br />
at Function.Module._load (module.js:310:12)<br />
at Function.Module.runMain (module.js:501:10)<br />
If you get this error, it means '''bonescript''' is running automatically on your BeagleBone, and is using port '''80'''. To resolve this conflict, you can either change the port that '''ECTree''' runs on or stop '''bonescript'''. To stop '''bonescript''', just run these two commands. Don't worry! This won't be permanent. It will only be stopped until the BeagleBone restarts. This does mean, however, that you'll need to run these commands each time you start your BeagleBone.<br />
systemctl stop bonescript.socket<br />
systemctl disable bonescript.socket<br />
If you'd rather not stop bonescript, you can also change the port ECTree runs on. Open '''web.js''' in your favorite text editor and find this section:<br />
http.listen(80, function() {<br />
console.log('The server has started.');<br />
});<br />
Change '''80''' to some other port number that is not used for something else on your BeagleBone. The disadvantage of this is that you'll have to include that port number when accessing the web interface, so instead of http://ip, you'll have to go to http://ip:port. If you don't want to have to include a port like this, do the disable bonescript steps above instead.<br />
<br />
Once you've disabled bonescript or changed the port, try running again and the error will be gone. <br />
./web.js<br />
<br />
== User Instructions ==<br />
<br />
* Once the '''web.js''' server is running on the BeagleBone, you can access the web interface by pointing your browser to your BeagleBone's IP address. If your BeagleBone is connected to your computer via USB, that IP address is 192.168.7.2, so open your favorite web browser, type 192.168.7.2 into the address bar, and press enter.<br />
* Once there, you should see the interface:<br />
[[File:ECTreeInterface1.png|400px|frame User Interface]]<br />
* You can click '''Write Program''' to begin writing code.<br />
* If you need help getting started, click the Learn button in the navigation at the top of the page. This will take you to the tutorial.<br />
[[File:ECTreeInterface2.png|400px|frame Tutorial Interface]]<br />
* After completing the tutorial, you will be able to see your lights in action! You can then write more programs from the main page, now that you know how to do it! Enjoy the light show!<br />
<br />
== Highlights ==<br />
<br />
* Thanks to the Bootstrap framework, our user interface will work on any browser including smartphones. This makes it easier for people passing by to change the lights! It's difficult to write programs on a smartphone, but previously written programs can be easily selected, and music can be added to the queue as well.<br />
* While our project allows any user to write code to control the lights, the code actually runs in the user's browser and the result is sent to the BeagleBone in the form of a list of "frames". This keeps our BeagleBone safe. Running arbitrary code submitted by users on the BeagleBone itself would be a major security flaw. Anyone could just write an infinite loop and crash the program! Or worse, they could write code that called commands to delete everything on the BeagleBone or take control of it for malicious uses.<br />
* All light display patterns made by the users are saved for future use. Although the interface only displays the most recent 10 patterns, it would be easy to modify to support searching through all past patterns. This gives people who don't want to code a variety of fun programs to run.<br />
* The code is written in a way that allows more audio files to be easily added to expand the list of holiday music the BeagleBone can play.<br />
<br />
== Theory of Operation ==<br />
<br />
We have a server that is listening on port 80 for user's to connect. once a user connects the web page request all current queue information and displays that information for the user<br />
to know how long until their pattern or song will be played. The server handles all of the request from many users to maintain unity among all the users so that everyone sees the same queue. the display patterns are sent from the user to the server using a json object and not actual code to prevent bad code spinning the server out of control.<br />
<br />
== Work Breakdown ==<br />
<br />
* Getting hardware SPI on the BeagleBone working to control the lights.<br />
:'''George'''<br />
* Writing server-side code.<br />
:'''Josh & George'''<br />
* Writing user interface.<br />
:'''Josh & George'''<br />
* Writing server side queue code to play light programs and audio one at a time<br />
:'''Josh'''<br />
* Writing interface code to display the queue to the user in a table<br />
:'''George'''<br />
* Getting the BeagleBone to work with the USB Audio Dongle to play audio<br />
:'''Josh'''<br />
<br />
== Future Work ==<br />
<br />
* Making the lights "dance" to the beat of the music.<br />
* More previously submitted programs. The interface currently only shows the past 10 programs, which means any programs prior to this can't be run anymore! We'd like to expand it to show all the programs, but this would require "pages" of programs or a search feature, as there would eventually be too many to show at one time.<br />
* Program GIF preview on the interface. We had experimented with having the BeagleBone generate a GIF preview of each submitted program so that future users could see what the programs looked like before playing them on the tree. Sometimes the names alone weren't descriptive enough to figure out what the programs did. We were unable to get this working in time.<br />
* Administration interface. Since anyone can submit a program (and name it), there is the potential for unwanted programs or inappropriate names being submitted. Right now, there is no way to remove these programs or change their names, and no way to block the users that submit them. A simple hidden administration page that allows programs to be deleted is required before this is used on a larger scale. The ability to block specific IP addresses, or limit submissions to a certain IP range (campus only, for example) would be nice as well. This will be added before the lights are used on the real tree and opened to the entire department (and campus).<br />
* More user input validation. There were two exploits that were unpatched:<br />
** Submitting an empty program (typing no code) would cause the server to crash on the BeagleBone, requiring it to be manually restarted.<br />
** Using very short delays (~1 millisecond) would cause the SPI buffer to fill up, resulting in future programs not getting executed because the buffer is still finishing the previous program.<br />
:These could be resolved by blocking invalid programs (empty programs or programs with delays that are too short). This change will be made before the lights are used on the real tree and opened to the entire department (and campus) to avoid issues.<br />
<br />
== Conclusions ==<br />
<br />
I, Josh, really enjoyed working on this project because I got to learn and explore some of the aspects of web programming. It will be nice to come back to campus after fall break and see the project in use and see how much action the lights will be getting. <br />
<br />
{{YoderFoot}}</div>Gfrung4https://elinux.org/index.php?title=ECE497_Project_Christmas_Light_Controller&diff=426471ECE497 Project Christmas Light Controller2016-11-14T17:56:07Z<p>Gfrung4: Beautified work breakdown</p>
<hr />
<div>[[Category:ECE497 |Pc]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Woodsjl|Josh Woods]] and [[user:gfrung4| Ricky Rung]]<br />
<br />
== Grading Template ==<br />
=== Draft Feedback ===<br />
Looks good. Keep up the good work.<br />
<br />
Could you add some pictures to show what you are doing?<br />
<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<center><br />
[[File:HolidayLightsDemo.gif|Image|link=https://www.youtube.com/watch?v=N5L2YJnQbmM]]<br />
<br />
[https://www.youtube.com/watch?v=N5L2YJnQbmM '''Click for Video''']<br />
</center><br />
Our project is to create a user interface to control 320 LED lights on a 10 meter LED strip. The LED strip will then be put on the ECE Department’s tree during the holiday season.<br />
<br />
The interface will be online, and will allow anyone to write code to control the lights on the tree. Users will also be able to select patterns that others have programmed, if they don’t want to write their own.<br />
<br />
Submitted programs will each run for a specified length of time. A queue will be used, so if multiple people write programs at once, each program will get a chance to run. When one program’s run time expires, the next program will run, until the queue is empty. If no programs are waiting to run, the last run program will continue indefinitely.<br />
<br />
There will also be a speaker near the tree which will play holiday music, selected through the online interface. A separate “music queue” will be used to store songs to play. Users will be able to select from a list of songs to add music to the queue.<br />
<br />
This will be a fun and exciting holiday feature for the ECE department.<br />
<br />
== Needed Hardware ==<br />
In addition to a BeagleBone, you will need:<br />
<br />
* [http://www.adafruit.com/products/306 Adafruit's LPD8806 LED String]<br />
** Sold by the meter. Need to order 5 meters for a roll. Our project uses two rolls, for a total of 10 meters. The code can be easily adapted for more or less lights as needed.<br />
* [https://www.adafruit.com/product/658 5V Power Supply]<br />
** The LEDs use a lot of power. We used a 5V, 5A power supply to power our 10 meters, but we needed more power to have all the LEDs on full brightness. Adafruit sells a 5V, 10A supply, linked above, that they recommend to power the LEDs.<br />
* [https://www.sabrent.com/product/USB-SBCV/usb-2-0-external-2-1-surround-sound-adapter USB Audio Dongle]<br />
** Necessary if you want to use the BeagleBone to play holiday music. Connects to the USB port of the BeagleBone and has a 3.5mm audio output.<br />
* Speaker<br />
** Must be connected to the output of the USB Audio Dongle to play music for everyone to hear. Headphones can be used instead for testing.<br />
<br />
== Installation Instructions ==<br />
<br />
=== Software Setup ===<br />
* Clone [https://github.com/gfrung4/ECTree/ the repository] to your BeagleBone.<br />
git clone https://github.com/gfrung4/ECTree.git<br />
* Run the '''install.sh''' script in the repository. This needs to be run only once, but might take a while.<br />
cd ECTree<br />
./install.sh<br />
* Run the '''setup.sh''' script in the repository. This needs to be run every time you start up your BeagleBone.<br />
./setup.sh<br />
<br />
=== Hardware Setup ===<br />
* Connect the 5V power supply to the '''VCC''' and '''ground''' pins of the LED strip.<br />
* Connect the '''CLK''' pin of LED strip to '''P9_22''' of your BeagleBone.<br />
* Connect the '''DI''' pin of the LED strip to the '''P9_18''' pin of your BeagleBone.<br />
* Connect the ground of the power supply to the ground of your BeagleBone.<br />
* Plug the audio dongle into the USB port on your BeagleBone, and connect a speaker or headphones to the audio output of the dongle.<br />
<br />
=== Running ===<br />
* Run the server script, '''web.js'''.<br />
./web.js<br />
<br />
=== Troubleshooting ===<br />
* You may not have permissions to execute the web.js after cloning the repository. If not, you'll get this error:<br />
-bash: ./web.js: Permission denied<br />
This can be resolved by giving the owner of the file execute permissions, using this command:<br />
chmod 744 web.js<br />
Then try running it again and it will work!<br />
./web.js<br />
* You may get an error when running '''web.js''' if something else is using port '''80'''. This error looks like this:<br />
events.js:85<br />
throw er; // Unhandled 'error' event<br />
^<br />
Error: listen EADDRINUSE<br />
at exports._errnoException (util.js:746:11)<br />
at Server._listen2 (net.js:1158:14)<br />
at listen (net.js:1184:10)<br />
at Server.listen (net.js:1269:5)<br />
at Object.<anonymous> (/root/ECTree/web.js:237:6)<br />
at Module._compile (module.js:460:26)<br />
at Object.Module._extensions..js (module.js:478:10)<br />
at Module.load (module.js:355:32)<br />
at Function.Module._load (module.js:310:12)<br />
at Function.Module.runMain (module.js:501:10)<br />
If you get this error, it means '''bonescript''' is running automatically on your BeagleBone, and is using port '''80'''. To resolve this conflict, you can either change the port that '''ECTree''' runs on or stop '''bonescript'''. To stop '''bonescript''', just run these two commands. Don't worry! This won't be permanent. It will only be stopped until the BeagleBone restarts. This does mean, however, that you'll need to run these commands each time you start your BeagleBone.<br />
systemctl stop bonescript.socket<br />
systemctl disable bonescript.socket<br />
If you'd rather not stop bonescript, you can also change the port ECTree runs on. Open '''web.js''' in your favorite text editor and find this section:<br />
http.listen(80, function() {<br />
console.log('The server has started.');<br />
});<br />
Change '''80''' to some other port number that is not used for something else on your BeagleBone. The disadvantage of this is that you'll have to include that port number when accessing the web interface, so instead of http://ip, you'll have to go to http://ip:port. If you don't want to have to include a port like this, do the disable bonescript steps above instead.<br />
<br />
Once you've disabled bonescript or changed the port, try running again and the error will be gone. <br />
./web.js<br />
<br />
== User Instructions ==<br />
<br />
* Once the '''web.js''' server is running on the BeagleBone, you can access the web interface by pointing your browser to your BeagleBone's IP address. If your BeagleBone is connected to your computer via USB, that IP address is 192.168.7.2, so open your favorite web browser, type 192.168.7.2 into the address bar, and press enter.<br />
* Once there, you should see the interface:<br />
[[File:ECTreeInterface1.png|400px|frame User Interface]]<br />
* You can click '''Write Program''' to begin writing code.<br />
* If you need help getting started, click the Learn button in the navigation at the top of the page. This will take you to the tutorial.<br />
[[File:ECTreeInterface2.png|400px|frame Tutorial Interface]]<br />
* After completing the tutorial, you will be able to see your lights in action! You can then write more programs from the main page, now that you know how to do it! Enjoy the light show!<br />
<br />
== Highlights ==<br />
<br />
* Thanks to the Bootstrap framework, our user interface will work on any browser including smartphones. This makes it easier for people passing by to change the lights! It's difficult to write programs on a smartphone, but previously written programs can be easily selected, and music can be added to the queue as well.<br />
* While our project allows any user to write code to control the lights, the code actually runs in the user's browser and the result is sent to the BeagleBone in the form of a list of "frames". This keeps our BeagleBone safe. Running arbitrary code submitted by users on the BeagleBone itself would be a major security flaw. Anyone could just write an infinite loop and crash the program! Or worse, they could write code that called commands to delete everything on the BeagleBone or take control of it for malicious uses.<br />
* All light display patterns made by the users are saved for future use. Although the interface only displays the most recent 10 patterns, it would be easy to modify to support searching through all past patterns. This gives people who don't want to code a variety of fun programs to run.<br />
* The code is written in a way that allows more audio files to be easily added to expand the list of holiday music the BeagleBone can play.<br />
<br />
== Theory of Operation ==<br />
<br />
We have a server that is listening on port 80 for user's to connect. once a user connects the web page request all current queue information and displays that information for the user<br />
to know how long until their pattern or song will be played. The server handles all of the request from many users to maintain unity among all the users so that everyone sees the same queue. the display patterns are sent from the user to the server using a json object and not actual code to prevent bad code spinning the server out of control.<br />
<br />
== Work Breakdown ==<br />
<br />
* Getting hardware SPI on the BeagleBone working to control the lights.<br />
:'''George'''<br />
* Writing server-side code.<br />
:'''Josh & George'''<br />
* Writing user interface.<br />
:'''Josh & George'''<br />
* Writing server side queue code to play light programs and audio one at a time<br />
:'''Josh'''<br />
* Writing interface code to display the queue to the user in a table<br />
:'''George'''<br />
* Getting the BeagleBone to work with the USB Audio Dongle to play audio<br />
:'''Josh'''<br />
<br />
== Future Work ==<br />
<br />
If we had more time, we would have liked to make the lights "dance" to the beat of the music.<br />
<br />
== Conclusions ==<br />
<br />
I, Josh, really enjoyed working on this project because I got to learn and explore some of the aspects of web programming. It will be nice to come back to campus after fall break and see the project in use and see how much action the lights will be getting. <br />
<br />
{{YoderFoot}}</div>Gfrung4https://elinux.org/index.php?title=ECE497_Project_Christmas_Light_Controller&diff=426466ECE497 Project Christmas Light Controller2016-11-14T17:52:23Z<p>Gfrung4: Beautified highlights.</p>
<hr />
<div>[[Category:ECE497 |Pc]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Woodsjl|Josh Woods]] and [[user:gfrung4| Ricky Rung]]<br />
<br />
== Grading Template ==<br />
=== Draft Feedback ===<br />
Looks good. Keep up the good work.<br />
<br />
Could you add some pictures to show what you are doing?<br />
<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<center><br />
[[File:HolidayLightsDemo.gif|Image|link=https://www.youtube.com/watch?v=N5L2YJnQbmM]]<br />
<br />
[https://www.youtube.com/watch?v=N5L2YJnQbmM '''Click for Video''']<br />
</center><br />
Our project is to create a user interface to control 320 LED lights on a 10 meter LED strip. The LED strip will then be put on the ECE Department’s tree during the holiday season.<br />
<br />
The interface will be online, and will allow anyone to write code to control the lights on the tree. Users will also be able to select patterns that others have programmed, if they don’t want to write their own.<br />
<br />
Submitted programs will each run for a specified length of time. A queue will be used, so if multiple people write programs at once, each program will get a chance to run. When one program’s run time expires, the next program will run, until the queue is empty. If no programs are waiting to run, the last run program will continue indefinitely.<br />
<br />
There will also be a speaker near the tree which will play holiday music, selected through the online interface. A separate “music queue” will be used to store songs to play. Users will be able to select from a list of songs to add music to the queue.<br />
<br />
This will be a fun and exciting holiday feature for the ECE department.<br />
<br />
== Needed Hardware ==<br />
In addition to a BeagleBone, you will need:<br />
<br />
* [http://www.adafruit.com/products/306 Adafruit's LPD8806 LED String]<br />
** Sold by the meter. Need to order 5 meters for a roll. Our project uses two rolls, for a total of 10 meters. The code can be easily adapted for more or less lights as needed.<br />
* [https://www.adafruit.com/product/658 5V Power Supply]<br />
** The LEDs use a lot of power. We used a 5V, 5A power supply to power our 10 meters, but we needed more power to have all the LEDs on full brightness. Adafruit sells a 5V, 10A supply, linked above, that they recommend to power the LEDs.<br />
* [https://www.sabrent.com/product/USB-SBCV/usb-2-0-external-2-1-surround-sound-adapter USB Audio Dongle]<br />
** Necessary if you want to use the BeagleBone to play holiday music. Connects to the USB port of the BeagleBone and has a 3.5mm audio output.<br />
* Speaker<br />
** Must be connected to the output of the USB Audio Dongle to play music for everyone to hear. Headphones can be used instead for testing.<br />
<br />
== Installation Instructions ==<br />
<br />
=== Software Setup ===<br />
* Clone [https://github.com/gfrung4/ECTree/ the repository] to your BeagleBone.<br />
git clone https://github.com/gfrung4/ECTree.git<br />
* Run the '''install.sh''' script in the repository. This needs to be run only once, but might take a while.<br />
cd ECTree<br />
./install.sh<br />
* Run the '''setup.sh''' script in the repository. This needs to be run every time you start up your BeagleBone.<br />
./setup.sh<br />
<br />
=== Hardware Setup ===<br />
* Connect the 5V power supply to the '''VCC''' and '''ground''' pins of the LED strip.<br />
* Connect the '''CLK''' pin of LED strip to '''P9_22''' of your BeagleBone.<br />
* Connect the '''DI''' pin of the LED strip to the '''P9_18''' pin of your BeagleBone.<br />
* Connect the ground of the power supply to the ground of your BeagleBone.<br />
* Plug the audio dongle into the USB port on your BeagleBone, and connect a speaker or headphones to the audio output of the dongle.<br />
<br />
=== Running ===<br />
* Run the server script, '''web.js'''.<br />
./web.js<br />
<br />
=== Troubleshooting ===<br />
* You may not have permissions to execute the web.js after cloning the repository. If not, you'll get this error:<br />
-bash: ./web.js: Permission denied<br />
This can be resolved by giving the owner of the file execute permissions, using this command:<br />
chmod 744 web.js<br />
Then try running it again and it will work!<br />
./web.js<br />
* You may get an error when running '''web.js''' if something else is using port '''80'''. This error looks like this:<br />
events.js:85<br />
throw er; // Unhandled 'error' event<br />
^<br />
Error: listen EADDRINUSE<br />
at exports._errnoException (util.js:746:11)<br />
at Server._listen2 (net.js:1158:14)<br />
at listen (net.js:1184:10)<br />
at Server.listen (net.js:1269:5)<br />
at Object.<anonymous> (/root/ECTree/web.js:237:6)<br />
at Module._compile (module.js:460:26)<br />
at Object.Module._extensions..js (module.js:478:10)<br />
at Module.load (module.js:355:32)<br />
at Function.Module._load (module.js:310:12)<br />
at Function.Module.runMain (module.js:501:10)<br />
If you get this error, it means '''bonescript''' is running automatically on your BeagleBone, and is using port '''80'''. To resolve this conflict, you can either change the port that '''ECTree''' runs on or stop '''bonescript'''. To stop '''bonescript''', just run these two commands. Don't worry! This won't be permanent. It will only be stopped until the BeagleBone restarts. This does mean, however, that you'll need to run these commands each time you start your BeagleBone.<br />
systemctl stop bonescript.socket<br />
systemctl disable bonescript.socket<br />
If you'd rather not stop bonescript, you can also change the port ECTree runs on. Open '''web.js''' in your favorite text editor and find this section:<br />
http.listen(80, function() {<br />
console.log('The server has started.');<br />
});<br />
Change '''80''' to some other port number that is not used for something else on your BeagleBone. The disadvantage of this is that you'll have to include that port number when accessing the web interface, so instead of http://ip, you'll have to go to http://ip:port. If you don't want to have to include a port like this, do the disable bonescript steps above instead.<br />
<br />
Once you've disabled bonescript or changed the port, try running again and the error will be gone. <br />
./web.js<br />
<br />
== User Instructions ==<br />
<br />
* Once the '''web.js''' server is running on the BeagleBone, you can access the web interface by pointing your browser to your BeagleBone's IP address. If your BeagleBone is connected to your computer via USB, that IP address is 192.168.7.2, so open your favorite web browser, type 192.168.7.2 into the address bar, and press enter.<br />
* Once there, you should see the interface:<br />
[[File:ECTreeInterface1.png|400px|frame User Interface]]<br />
* You can click '''Write Program''' to begin writing code.<br />
* If you need help getting started, click the Learn button in the navigation at the top of the page. This will take you to the tutorial.<br />
[[File:ECTreeInterface2.png|400px|frame Tutorial Interface]]<br />
* After completing the tutorial, you will be able to see your lights in action! You can then write more programs from the main page, now that you know how to do it! Enjoy the light show!<br />
<br />
== Highlights ==<br />
<br />
* Thanks to the Bootstrap framework, our user interface will work on any browser including smartphones. This makes it easier for people passing by to change the lights! It's difficult to write programs on a smartphone, but previously written programs can be easily selected, and music can be added to the queue as well.<br />
* While our project allows any user to write code to control the lights, the code actually runs in the user's browser and the result is sent to the BeagleBone in the form of a list of "frames". This keeps our BeagleBone safe. Running arbitrary code submitted by users on the BeagleBone itself would be a major security flaw. Anyone could just write an infinite loop and crash the program! Or worse, they could write code that called commands to delete everything on the BeagleBone or take control of it for malicious uses.<br />
* All light display patterns made by the users are saved for future use. Although the interface only displays the most recent 10 patterns, it would be easy to modify to support searching through all past patterns. This gives people who don't want to code a variety of fun programs to run.<br />
* The code is written in a way that allows more audio files to be easily added to expand the list of holiday music the BeagleBone can play.<br />
<br />
== Theory of Operation ==<br />
<br />
We have a server that is listening on port 80 for user's to connect. once a user connects the web page request all current queue information and displays that information for the user<br />
to know how long until their pattern or song will be played. The server handles all of the request from many users to maintain unity among all the users so that everyone sees the same queue. the display patterns are sent from the user to the server using a json object and not actual code to prevent bad code spinning the server out of control.<br />
<br />
== Work Breakdown ==<br />
<br />
* getting lights to interact with the bone : Ricky <br />
* build a server : Josh & Ricky<br />
* build user interface : Josh & Ricky<br />
* pattern queue : Josh & Ricky<br />
* audio queue : Josh <br />
* beautifying website : Ricky<br />
<br />
== Future Work ==<br />
<br />
If we had more time, we would have liked to make the lights "dance" to the beat of the music.<br />
<br />
== Conclusions ==<br />
<br />
I, Josh, really enjoyed working on this project because I got to learn and explore some of the aspects of web programming. It will be nice to come back to campus after fall break and see the project in use and see how much action the lights will be getting. <br />
<br />
{{YoderFoot}}</div>Gfrung4https://elinux.org/index.php?title=ECE497_Project_Christmas_Light_Controller&diff=426461ECE497 Project Christmas Light Controller2016-11-14T17:45:53Z<p>Gfrung4: Beautified user instructions</p>
<hr />
<div>[[Category:ECE497 |Pc]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Woodsjl|Josh Woods]] and [[user:gfrung4| Ricky Rung]]<br />
<br />
== Grading Template ==<br />
=== Draft Feedback ===<br />
Looks good. Keep up the good work.<br />
<br />
Could you add some pictures to show what you are doing?<br />
<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<center><br />
[[File:HolidayLightsDemo.gif|Image|link=https://www.youtube.com/watch?v=N5L2YJnQbmM]]<br />
<br />
[https://www.youtube.com/watch?v=N5L2YJnQbmM '''Click for Video''']<br />
</center><br />
Our project is to create a user interface to control 320 LED lights on a 10 meter LED strip. The LED strip will then be put on the ECE Department’s tree during the holiday season.<br />
<br />
The interface will be online, and will allow anyone to write code to control the lights on the tree. Users will also be able to select patterns that others have programmed, if they don’t want to write their own.<br />
<br />
Submitted programs will each run for a specified length of time. A queue will be used, so if multiple people write programs at once, each program will get a chance to run. When one program’s run time expires, the next program will run, until the queue is empty. If no programs are waiting to run, the last run program will continue indefinitely.<br />
<br />
There will also be a speaker near the tree which will play holiday music, selected through the online interface. A separate “music queue” will be used to store songs to play. Users will be able to select from a list of songs to add music to the queue.<br />
<br />
This will be a fun and exciting holiday feature for the ECE department.<br />
<br />
== Needed Hardware ==<br />
In addition to a BeagleBone, you will need:<br />
<br />
* [http://www.adafruit.com/products/306 Adafruit's LPD8806 LED String]<br />
** Sold by the meter. Need to order 5 meters for a roll. Our project uses two rolls, for a total of 10 meters. The code can be easily adapted for more or less lights as needed.<br />
* [https://www.adafruit.com/product/658 5V Power Supply]<br />
** The LEDs use a lot of power. We used a 5V, 5A power supply to power our 10 meters, but we needed more power to have all the LEDs on full brightness. Adafruit sells a 5V, 10A supply, linked above, that they recommend to power the LEDs.<br />
* [https://www.sabrent.com/product/USB-SBCV/usb-2-0-external-2-1-surround-sound-adapter USB Audio Dongle]<br />
** Necessary if you want to use the BeagleBone to play holiday music. Connects to the USB port of the BeagleBone and has a 3.5mm audio output.<br />
* Speaker<br />
** Must be connected to the output of the USB Audio Dongle to play music for everyone to hear. Headphones can be used instead for testing.<br />
<br />
== Installation Instructions ==<br />
<br />
=== Software Setup ===<br />
* Clone [https://github.com/gfrung4/ECTree/ the repository] to your BeagleBone.<br />
git clone https://github.com/gfrung4/ECTree.git<br />
* Run the '''install.sh''' script in the repository. This needs to be run only once, but might take a while.<br />
cd ECTree<br />
./install.sh<br />
* Run the '''setup.sh''' script in the repository. This needs to be run every time you start up your BeagleBone.<br />
./setup.sh<br />
<br />
=== Hardware Setup ===<br />
* Connect the 5V power supply to the '''VCC''' and '''ground''' pins of the LED strip.<br />
* Connect the '''CLK''' pin of LED strip to '''P9_22''' of your BeagleBone.<br />
* Connect the '''DI''' pin of the LED strip to the '''P9_18''' pin of your BeagleBone.<br />
* Connect the ground of the power supply to the ground of your BeagleBone.<br />
* Plug the audio dongle into the USB port on your BeagleBone, and connect a speaker or headphones to the audio output of the dongle.<br />
<br />
=== Running ===<br />
* Run the server script, '''web.js'''.<br />
./web.js<br />
<br />
=== Troubleshooting ===<br />
* You may not have permissions to execute the web.js after cloning the repository. If not, you'll get this error:<br />
-bash: ./web.js: Permission denied<br />
This can be resolved by giving the owner of the file execute permissions, using this command:<br />
chmod 744 web.js<br />
Then try running it again and it will work!<br />
./web.js<br />
* You may get an error when running '''web.js''' if something else is using port '''80'''. This error looks like this:<br />
events.js:85<br />
throw er; // Unhandled 'error' event<br />
^<br />
Error: listen EADDRINUSE<br />
at exports._errnoException (util.js:746:11)<br />
at Server._listen2 (net.js:1158:14)<br />
at listen (net.js:1184:10)<br />
at Server.listen (net.js:1269:5)<br />
at Object.<anonymous> (/root/ECTree/web.js:237:6)<br />
at Module._compile (module.js:460:26)<br />
at Object.Module._extensions..js (module.js:478:10)<br />
at Module.load (module.js:355:32)<br />
at Function.Module._load (module.js:310:12)<br />
at Function.Module.runMain (module.js:501:10)<br />
If you get this error, it means '''bonescript''' is running automatically on your BeagleBone, and is using port '''80'''. To resolve this conflict, you can either change the port that '''ECTree''' runs on or stop '''bonescript'''. To stop '''bonescript''', just run these two commands. Don't worry! This won't be permanent. It will only be stopped until the BeagleBone restarts. This does mean, however, that you'll need to run these commands each time you start your BeagleBone.<br />
systemctl stop bonescript.socket<br />
systemctl disable bonescript.socket<br />
If you'd rather not stop bonescript, you can also change the port ECTree runs on. Open '''web.js''' in your favorite text editor and find this section:<br />
http.listen(80, function() {<br />
console.log('The server has started.');<br />
});<br />
Change '''80''' to some other port number that is not used for something else on your BeagleBone. The disadvantage of this is that you'll have to include that port number when accessing the web interface, so instead of http://ip, you'll have to go to http://ip:port. If you don't want to have to include a port like this, do the disable bonescript steps above instead.<br />
<br />
Once you've disabled bonescript or changed the port, try running again and the error will be gone. <br />
./web.js<br />
<br />
== User Instructions ==<br />
<br />
* Once the '''web.js''' server is running on the BeagleBone, you can access the web interface by pointing your browser to your BeagleBone's IP address. If your BeagleBone is connected to your computer via USB, that IP address is 192.168.7.2, so open your favorite web browser, type 192.168.7.2 into the address bar, and press enter.<br />
* Once there, you should see the interface:<br />
[[File:ECTreeInterface1.png|400px|frame User Interface]]<br />
* You can click '''Write Program''' to begin writing code.<br />
* If you need help getting started, click the Learn button in the navigation at the top of the page. This will take you to the tutorial.<br />
[[File:ECTreeInterface2.png|400px|frame Tutorial Interface]]<br />
* After completing the tutorial, you will be able to see your lights in action! You can then write more programs from the main page, now that you know how to do it! Enjoy the light show!<br />
<br />
== Highlights ==<br />
<br />
Our user interface will work on any browser including a phone's browser. All light display patterns made by user will be saved for future use. The code is written in a way <br />
that allows it to be easily expanded to include more audio and display patterns.<br />
<br />
== Theory of Operation ==<br />
<br />
We have a server that is listening on port 80 for user's to connect. once a user connects the web page request all current queue information and displays that information for the user<br />
to know how long until their pattern or song will be played. The server handles all of the request from many users to maintain unity among all the users so that everyone sees the same queue. the display patterns are sent from the user to the server using a json object and not actual code to prevent bad code spinning the server out of control.<br />
<br />
== Work Breakdown ==<br />
<br />
* getting lights to interact with the bone : Ricky <br />
* build a server : Josh & Ricky<br />
* build user interface : Josh & Ricky<br />
* pattern queue : Josh & Ricky<br />
* audio queue : Josh <br />
* beautifying website : Ricky<br />
<br />
== Future Work ==<br />
<br />
If we had more time, we would have liked to make the lights "dance" to the beat of the music.<br />
<br />
== Conclusions ==<br />
<br />
I, Josh, really enjoyed working on this project because I got to learn and explore some of the aspects of web programming. It will be nice to come back to campus after fall break and see the project in use and see how much action the lights will be getting. <br />
<br />
{{YoderFoot}}</div>Gfrung4https://elinux.org/index.php?title=File:ECTreeInterface2.png&diff=426456File:ECTreeInterface2.png2016-11-14T17:41:18Z<p>Gfrung4: A screenshot of the ECTree interface.</p>
<hr />
<div>A screenshot of the ECTree interface.</div>Gfrung4https://elinux.org/index.php?title=File:ECTreeInterface1.png&diff=426451File:ECTreeInterface1.png2016-11-14T17:40:39Z<p>Gfrung4: A screenshot of the ECTree interface.</p>
<hr />
<div>A screenshot of the ECTree interface.</div>Gfrung4https://elinux.org/index.php?title=ECE497_Project_Christmas_Light_Controller&diff=426441ECE497 Project Christmas Light Controller2016-11-14T17:32:40Z<p>Gfrung4: Added troubleshooting section</p>
<hr />
<div>[[Category:ECE497 |Pc]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Woodsjl|Josh Woods]] and [[user:gfrung4| Ricky Rung]]<br />
<br />
== Grading Template ==<br />
=== Draft Feedback ===<br />
Looks good. Keep up the good work.<br />
<br />
Could you add some pictures to show what you are doing?<br />
<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<center><br />
[[File:HolidayLightsDemo.gif|Image|link=https://www.youtube.com/watch?v=N5L2YJnQbmM]]<br />
<br />
[https://www.youtube.com/watch?v=N5L2YJnQbmM '''Click for Video''']<br />
</center><br />
Our project is to create a user interface to control 320 LED lights on a 10 meter LED strip. The LED strip will then be put on the ECE Department’s tree during the holiday season.<br />
<br />
The interface will be online, and will allow anyone to write code to control the lights on the tree. Users will also be able to select patterns that others have programmed, if they don’t want to write their own.<br />
<br />
Submitted programs will each run for a specified length of time. A queue will be used, so if multiple people write programs at once, each program will get a chance to run. When one program’s run time expires, the next program will run, until the queue is empty. If no programs are waiting to run, the last run program will continue indefinitely.<br />
<br />
There will also be a speaker near the tree which will play holiday music, selected through the online interface. A separate “music queue” will be used to store songs to play. Users will be able to select from a list of songs to add music to the queue.<br />
<br />
This will be a fun and exciting holiday feature for the ECE department.<br />
<br />
== Needed Hardware ==<br />
In addition to a BeagleBone, you will need:<br />
<br />
* [http://www.adafruit.com/products/306 Adafruit's LPD8806 LED String]<br />
** Sold by the meter. Need to order 5 meters for a roll. Our project uses two rolls, for a total of 10 meters. The code can be easily adapted for more or less lights as needed.<br />
* [https://www.adafruit.com/product/658 5V Power Supply]<br />
** The LEDs use a lot of power. We used a 5V, 5A power supply to power our 10 meters, but we needed more power to have all the LEDs on full brightness. Adafruit sells a 5V, 10A supply, linked above, that they recommend to power the LEDs.<br />
* [https://www.sabrent.com/product/USB-SBCV/usb-2-0-external-2-1-surround-sound-adapter USB Audio Dongle]<br />
** Necessary if you want to use the BeagleBone to play holiday music. Connects to the USB port of the BeagleBone and has a 3.5mm audio output.<br />
* Speaker<br />
** Must be connected to the output of the USB Audio Dongle to play music for everyone to hear. Headphones can be used instead for testing.<br />
<br />
== Installation Instructions ==<br />
<br />
=== Software Setup ===<br />
* Clone [https://github.com/gfrung4/ECTree/ the repository] to your BeagleBone.<br />
git clone https://github.com/gfrung4/ECTree.git<br />
* Run the '''install.sh''' script in the repository. This needs to be run only once, but might take a while.<br />
cd ECTree<br />
./install.sh<br />
* Run the '''setup.sh''' script in the repository. This needs to be run every time you start up your BeagleBone.<br />
./setup.sh<br />
<br />
=== Hardware Setup ===<br />
* Connect the 5V power supply to the '''VCC''' and '''ground''' pins of the LED strip.<br />
* Connect the '''CLK''' pin of LED strip to '''P9_22''' of your BeagleBone.<br />
* Connect the '''DI''' pin of the LED strip to the '''P9_18''' pin of your BeagleBone.<br />
* Connect the ground of the power supply to the ground of your BeagleBone.<br />
* Plug the audio dongle into the USB port on your BeagleBone, and connect a speaker or headphones to the audio output of the dongle.<br />
<br />
=== Running ===<br />
* Run the server script, '''web.js'''.<br />
./web.js<br />
<br />
=== Troubleshooting ===<br />
* You may not have permissions to execute the web.js after cloning the repository. If not, you'll get this error:<br />
-bash: ./web.js: Permission denied<br />
This can be resolved by giving the owner of the file execute permissions, using this command:<br />
chmod 744 web.js<br />
Then try running it again and it will work!<br />
./web.js<br />
* You may get an error when running '''web.js''' if something else is using port '''80'''. This error looks like this:<br />
events.js:85<br />
throw er; // Unhandled 'error' event<br />
^<br />
Error: listen EADDRINUSE<br />
at exports._errnoException (util.js:746:11)<br />
at Server._listen2 (net.js:1158:14)<br />
at listen (net.js:1184:10)<br />
at Server.listen (net.js:1269:5)<br />
at Object.<anonymous> (/root/ECTree/web.js:237:6)<br />
at Module._compile (module.js:460:26)<br />
at Object.Module._extensions..js (module.js:478:10)<br />
at Module.load (module.js:355:32)<br />
at Function.Module._load (module.js:310:12)<br />
at Function.Module.runMain (module.js:501:10)<br />
If you get this error, it means '''bonescript''' is running automatically on your BeagleBone, and is using port '''80'''. To resolve this conflict, you can either change the port that '''ECTree''' runs on or stop '''bonescript'''. To stop '''bonescript''', just run these two commands. Don't worry! This won't be permanent. It will only be stopped until the BeagleBone restarts. This does mean, however, that you'll need to run these commands each time you start your BeagleBone.<br />
systemctl stop bonescript.socket<br />
systemctl disable bonescript.socket<br />
If you'd rather not stop bonescript, you can also change the port ECTree runs on. Open '''web.js''' in your favorite text editor and find this section:<br />
http.listen(80, function() {<br />
console.log('The server has started.');<br />
});<br />
Change '''80''' to some other port number that is not used for something else on your BeagleBone. The disadvantage of this is that you'll have to include that port number when accessing the web interface, so instead of http://ip, you'll have to go to http://ip:port. If you don't want to have to include a port like this, do the disable bonescript steps above instead.<br />
<br />
Once you've disabled bonescript or changed the port, try running again and the error will be gone. <br />
./web.js<br />
<br />
== User Instructions ==<br />
<br />
* run the web.js file to start the server<br />
* point any web browser to the IP of the bone and port 887 <br />
* enjoy the light shows<br />
<br />
[[File:497UIScreenShot.png|400px|thumb User Interface]]<br />
<br />
== Highlights ==<br />
<br />
Our user interface will work on any browser including a phone's browser. All light display patterns made by user will be saved for future use. The code is written in a way <br />
that allows it to be easily expanded to include more audio and display patterns.<br />
<br />
== Theory of Operation ==<br />
<br />
We have a server that is listening on port 80 for user's to connect. once a user connects the web page request all current queue information and displays that information for the user<br />
to know how long until their pattern or song will be played. The server handles all of the request from many users to maintain unity among all the users so that everyone sees the same queue. the display patterns are sent from the user to the server using a json object and not actual code to prevent bad code spinning the server out of control.<br />
<br />
== Work Breakdown ==<br />
<br />
* getting lights to interact with the bone : Ricky <br />
* build a server : Josh & Ricky<br />
* build user interface : Josh & Ricky<br />
* pattern queue : Josh & Ricky<br />
* audio queue : Josh <br />
* beautifying website : Ricky<br />
<br />
== Future Work ==<br />
<br />
If we had more time, we would have liked to make the lights "dance" to the beat of the music.<br />
<br />
== Conclusions ==<br />
<br />
I, Josh, really enjoyed working on this project because I got to learn and explore some of the aspects of web programming. It will be nice to come back to campus after fall break and see the project in use and see how much action the lights will be getting. <br />
<br />
{{YoderFoot}}</div>Gfrung4https://elinux.org/index.php?title=ECE497_Project_Christmas_Light_Controller&diff=426436ECE497 Project Christmas Light Controller2016-11-14T16:59:29Z<p>Gfrung4: Beautified installation instructions</p>
<hr />
<div>[[Category:ECE497 |Pc]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Woodsjl|Josh Woods]] and [[user:gfrung4| Ricky Rung]]<br />
<br />
== Grading Template ==<br />
=== Draft Feedback ===<br />
Looks good. Keep up the good work.<br />
<br />
Could you add some pictures to show what you are doing?<br />
<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<center><br />
[[File:HolidayLightsDemo.gif|Image|link=https://www.youtube.com/watch?v=N5L2YJnQbmM]]<br />
<br />
[https://www.youtube.com/watch?v=N5L2YJnQbmM '''Click for Video''']<br />
</center><br />
Our project is to create a user interface to control 320 LED lights on a 10 meter LED strip. The LED strip will then be put on the ECE Department’s tree during the holiday season.<br />
<br />
The interface will be online, and will allow anyone to write code to control the lights on the tree. Users will also be able to select patterns that others have programmed, if they don’t want to write their own.<br />
<br />
Submitted programs will each run for a specified length of time. A queue will be used, so if multiple people write programs at once, each program will get a chance to run. When one program’s run time expires, the next program will run, until the queue is empty. If no programs are waiting to run, the last run program will continue indefinitely.<br />
<br />
There will also be a speaker near the tree which will play holiday music, selected through the online interface. A separate “music queue” will be used to store songs to play. Users will be able to select from a list of songs to add music to the queue.<br />
<br />
This will be a fun and exciting holiday feature for the ECE department.<br />
<br />
== Needed Hardware ==<br />
In addition to a BeagleBone, you will need:<br />
<br />
* [http://www.adafruit.com/products/306 Adafruit's LPD8806 LED String]<br />
** Sold by the meter. Need to order 5 meters for a roll. Our project uses two rolls, for a total of 10 meters. The code can be easily adapted for more or less lights as needed.<br />
* [https://www.adafruit.com/product/658 5V Power Supply]<br />
** The LEDs use a lot of power. We used a 5V, 5A power supply to power our 10 meters, but we needed more power to have all the LEDs on full brightness. Adafruit sells a 5V, 10A supply, linked above, that they recommend to power the LEDs.<br />
* [https://www.sabrent.com/product/USB-SBCV/usb-2-0-external-2-1-surround-sound-adapter USB Audio Dongle]<br />
** Necessary if you want to use the BeagleBone to play holiday music. Connects to the USB port of the BeagleBone and has a 3.5mm audio output.<br />
* Speaker<br />
** Must be connected to the output of the USB Audio Dongle to play music for everyone to hear. Headphones can be used instead for testing.<br />
<br />
== Installation Instructions ==<br />
<br />
=== Software Setup ===<br />
* Clone [https://github.com/gfrung4/ECTree/ the repository] to your BeagleBone.<br />
git clone https://github.com/gfrung4/ECTree.git<br />
* Run the '''install.sh''' script in the repository. This needs to be run only once, but might take a while.<br />
cd ECTree<br />
./install.sh<br />
* Run the '''setup.sh''' script in the repository. This needs to be run every time you start up your BeagleBone.<br />
./setup.sh<br />
<br />
=== Hardware Setup ===<br />
* Connect the 5V power supply to the '''VCC''' and '''ground''' pins of the LED strip.<br />
* Connect the '''CLK''' pin of LED strip to '''P9_22''' of your BeagleBone.<br />
* Connect the '''DI''' pin of the LED strip to the '''P9_18''' pin of your BeagleBone.<br />
* Connect the ground of the power supply to the ground of your BeagleBone.<br />
* Plug the audio dongle into the USB port on your BeagleBone, and connect a speaker or headphones to the audio output of the dongle.<br />
<br />
=== Running ===<br />
* Run the server script, '''web.js'''.<br />
./web.js<br />
<br />
== User Instructions ==<br />
<br />
* run the web.js file to start the server<br />
* point any web browser to the IP of the bone and port 887 <br />
* enjoy the light shows<br />
<br />
[[File:497UIScreenShot.png|400px|thumb User Interface]]<br />
<br />
== Highlights ==<br />
<br />
Our user interface will work on any browser including a phone's browser. All light display patterns made by user will be saved for future use. The code is written in a way <br />
that allows it to be easily expanded to include more audio and display patterns.<br />
<br />
== Theory of Operation ==<br />
<br />
We have a server that is listening on port 80 for user's to connect. once a user connects the web page request all current queue information and displays that information for the user<br />
to know how long until their pattern or song will be played. The server handles all of the request from many users to maintain unity among all the users so that everyone sees the same queue. the display patterns are sent from the user to the server using a json object and not actual code to prevent bad code spinning the server out of control.<br />
<br />
== Work Breakdown ==<br />
<br />
* getting lights to interact with the bone : Ricky <br />
* build a server : Josh & Ricky<br />
* build user interface : Josh & Ricky<br />
* pattern queue : Josh & Ricky<br />
* audio queue : Josh <br />
* beautifying website : Ricky<br />
<br />
== Future Work ==<br />
<br />
If we had more time, we would have liked to make the lights "dance" to the beat of the music.<br />
<br />
== Conclusions ==<br />
<br />
I, Josh, really enjoyed working on this project because I got to learn and explore some of the aspects of web programming. It will be nice to come back to campus after fall break and see the project in use and see how much action the lights will be getting. <br />
<br />
{{YoderFoot}}</div>Gfrung4https://elinux.org/index.php?title=ECE497_Project_Christmas_Light_Controller&diff=426426ECE497 Project Christmas Light Controller2016-11-14T16:46:18Z<p>Gfrung4: Beautified needed hardware</p>
<hr />
<div>[[Category:ECE497 |Pc]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Woodsjl|Josh Woods]] and [[user:gfrung4| Ricky Rung]]<br />
<br />
== Grading Template ==<br />
=== Draft Feedback ===<br />
Looks good. Keep up the good work.<br />
<br />
Could you add some pictures to show what you are doing?<br />
<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<center><br />
[[File:HolidayLightsDemo.gif|Image|link=https://www.youtube.com/watch?v=N5L2YJnQbmM]]<br />
<br />
[https://www.youtube.com/watch?v=N5L2YJnQbmM '''Click for Video''']<br />
</center><br />
Our project is to create a user interface to control 320 LED lights on a 10 meter LED strip. The LED strip will then be put on the ECE Department’s tree during the holiday season.<br />
<br />
The interface will be online, and will allow anyone to write code to control the lights on the tree. Users will also be able to select patterns that others have programmed, if they don’t want to write their own.<br />
<br />
Submitted programs will each run for a specified length of time. A queue will be used, so if multiple people write programs at once, each program will get a chance to run. When one program’s run time expires, the next program will run, until the queue is empty. If no programs are waiting to run, the last run program will continue indefinitely.<br />
<br />
There will also be a speaker near the tree which will play holiday music, selected through the online interface. A separate “music queue” will be used to store songs to play. Users will be able to select from a list of songs to add music to the queue.<br />
<br />
This will be a fun and exciting holiday feature for the ECE department.<br />
<br />
== Needed Hardware ==<br />
In addition to a BeagleBone, you will need:<br />
<br />
* [http://www.adafruit.com/products/306 Adafruit's LPD8806 LED String]<br />
** Sold by the meter. Need to order 5 meters for a roll. Our project uses two rolls, for a total of 10 meters. The code can be easily adapted for more or less lights as needed.<br />
* [https://www.adafruit.com/product/658 5V Power Supply]<br />
** The LEDs use a lot of power. We used a 5V, 5A power supply to power our 10 meters, but we needed more power to have all the LEDs on full brightness. Adafruit sells a 5V, 10A supply, linked above, that they recommend to power the LEDs.<br />
* [https://www.sabrent.com/product/USB-SBCV/usb-2-0-external-2-1-surround-sound-adapter USB Audio Dongle]<br />
** Necessary if you want to use the BeagleBone to play holiday music. Connects to the USB port of the BeagleBone and has a 3.5mm audio output.<br />
* Speaker<br />
** Must be connected to the output of the USB Audio Dongle to play music for everyone to hear. Headphones can be used instead for testing.<br />
<br />
== Installation Instructions ==<br />
<br />
Follow these steps to enjoy the light show <br />
<br />
* Clone this repository [https://github.com/gfrung4/ECTree ECTree]. <br />
* Connect the 5 V power supply to the Vcc and Ground pins of the LED strip<br />
* Connect the clk pin of LED strip to P9_22 of the bone<br />
* Connect the dO pin of the lED strip to the P9_18 pin of the bone<br />
* connect the audio dongle to the usb port of the bone<br />
* run the install.sh file from the cloned repo (this needs to be run one time)<br />
* run the setup.sh file from the cloned repo (this needs to be run every boot up)<br />
<br />
<br />
== User Instructions ==<br />
<br />
* run the web.js file to start the server<br />
* point any web browser to the IP of the bone and port 887 <br />
* enjoy the light shows<br />
<br />
[[File:497UIScreenShot.png|400px|thumb User Interface]]<br />
<br />
== Highlights ==<br />
<br />
Our user interface will work on any browser including a phone's browser. All light display patterns made by user will be saved for future use. The code is written in a way <br />
that allows it to be easily expanded to include more audio and display patterns.<br />
<br />
== Theory of Operation ==<br />
<br />
We have a server that is listening on port 80 for user's to connect. once a user connects the web page request all current queue information and displays that information for the user<br />
to know how long until their pattern or song will be played. The server handles all of the request from many users to maintain unity among all the users so that everyone sees the same queue. the display patterns are sent from the user to the server using a json object and not actual code to prevent bad code spinning the server out of control.<br />
<br />
== Work Breakdown ==<br />
<br />
* getting lights to interact with the bone : Ricky <br />
* build a server : Josh & Ricky<br />
* build user interface : Josh & Ricky<br />
* pattern queue : Josh & Ricky<br />
* audio queue : Josh <br />
* beautifying website : Ricky<br />
<br />
== Future Work ==<br />
<br />
If we had more time, we would have liked to make the lights "dance" to the beat of the music.<br />
<br />
== Conclusions ==<br />
<br />
I, Josh, really enjoyed working on this project because I got to learn and explore some of the aspects of web programming. It will be nice to come back to campus after fall break and see the project in use and see how much action the lights will be getting. <br />
<br />
{{YoderFoot}}</div>Gfrung4https://elinux.org/index.php?title=ECE497_Project_Christmas_Light_Controller&diff=426421ECE497 Project Christmas Light Controller2016-11-14T16:38:58Z<p>Gfrung4: Beautified executive summary</p>
<hr />
<div>[[Category:ECE497 |Pc]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Woodsjl|Josh Woods]] and [[user:gfrung4| Ricky Rung]]<br />
<br />
== Grading Template ==<br />
=== Draft Feedback ===<br />
Looks good. Keep up the good work.<br />
<br />
Could you add some pictures to show what you are doing?<br />
<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<center><br />
[[File:HolidayLightsDemo.gif|Image|link=https://www.youtube.com/watch?v=N5L2YJnQbmM]]<br />
<br />
[https://www.youtube.com/watch?v=N5L2YJnQbmM '''Click for Video''']<br />
</center><br />
Our project is to create a user interface to control 320 LED lights on a 10 meter LED strip. The LED strip will then be put on the ECE Department’s tree during the holiday season.<br />
<br />
The interface will be online, and will allow anyone to write code to control the lights on the tree. Users will also be able to select patterns that others have programmed, if they don’t want to write their own.<br />
<br />
Submitted programs will each run for a specified length of time. A queue will be used, so if multiple people write programs at once, each program will get a chance to run. When one program’s run time expires, the next program will run, until the queue is empty. If no programs are waiting to run, the last run program will continue indefinitely.<br />
<br />
There will also be a speaker near the tree which will play holiday music, selected through the online interface. A separate “music queue” will be used to store songs to play. Users will be able to select from a list of songs to add music to the queue.<br />
<br />
This will be a fun and exciting holiday feature for the ECE department.<br />
<br />
== Needed Hardware ==<br />
<br />
You will the 5 meter [http://www.adafruit.com/products/306 Adafruit's LPD8806 LED String].<br />
<br />
5 Volt 10 amp Power Supply [https://www.adafruit.com/product/658 https://www.adafruit.com/product/658]. <br />
<br />
USB audio dongle [https://www.sabrent.com/product/USB-SBCV/usb-2-0-external-2-1-surround-sound-adapter https://www.sabrent.com/product/USB-SBCV/usb-2-0-external-2-1-surround-sound-adapter].<br />
<br />
== Installation Instructions ==<br />
<br />
Follow these steps to enjoy the light show <br />
<br />
* Clone this repository [https://github.com/gfrung4/ECTree ECTree]. <br />
* Connect the 5 V power supply to the Vcc and Ground pins of the LED strip<br />
* Connect the clk pin of LED strip to P9_22 of the bone<br />
* Connect the dO pin of the lED strip to the P9_18 pin of the bone<br />
* connect the audio dongle to the usb port of the bone<br />
* run the install.sh file from the cloned repo (this needs to be run one time)<br />
* run the setup.sh file from the cloned repo (this needs to be run every boot up)<br />
<br />
<br />
== User Instructions ==<br />
<br />
* run the web.js file to start the server<br />
* point any web browser to the IP of the bone and port 887 <br />
* enjoy the light shows<br />
<br />
[[File:497UIScreenShot.png|400px|thumb User Interface]]<br />
<br />
== Highlights ==<br />
<br />
Our user interface will work on any browser including a phone's browser. All light display patterns made by user will be saved for future use. The code is written in a way <br />
that allows it to be easily expanded to include more audio and display patterns.<br />
<br />
== Theory of Operation ==<br />
<br />
We have a server that is listening on port 80 for user's to connect. once a user connects the web page request all current queue information and displays that information for the user<br />
to know how long until their pattern or song will be played. The server handles all of the request from many users to maintain unity among all the users so that everyone sees the same queue. the display patterns are sent from the user to the server using a json object and not actual code to prevent bad code spinning the server out of control.<br />
<br />
== Work Breakdown ==<br />
<br />
* getting lights to interact with the bone : Ricky <br />
* build a server : Josh & Ricky<br />
* build user interface : Josh & Ricky<br />
* pattern queue : Josh & Ricky<br />
* audio queue : Josh <br />
* beautifying website : Ricky<br />
<br />
== Future Work ==<br />
<br />
If we had more time, we would have liked to make the lights "dance" to the beat of the music.<br />
<br />
== Conclusions ==<br />
<br />
I, Josh, really enjoyed working on this project because I got to learn and explore some of the aspects of web programming. It will be nice to come back to campus after fall break and see the project in use and see how much action the lights will be getting. <br />
<br />
{{YoderFoot}}</div>Gfrung4https://elinux.org/index.php?title=File:HolidayLightsDemo.gif&diff=426416File:HolidayLightsDemo.gif2016-11-14T16:25:45Z<p>Gfrung4: A demo of a program running on the LED light strip for the EC-Tree Holiday Lights project (ECE497 Fall 2016).</p>
<hr />
<div>A demo of a program running on the LED light strip for the EC-Tree Holiday Lights project (ECE497 Fall 2016).</div>Gfrung4https://elinux.org/index.php?title=ECE497_Project_Christmas_Light_Controller&diff=426151ECE497 Project Christmas Light Controller2016-11-11T19:20:59Z<p>Gfrung4: Removed old YouTube link.</p>
<hr />
<div>[[Category:ECE497 |Pc]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Woodsjl|Josh Woods]] and [[user:gfrung4| Ricky Rung]]<br />
<br />
== Grading Template ==<br />
=== Draft Feedback ===<br />
Looks good. Keep up the good work.<br />
<br />
Could you add some pictures to show what you are doing?<br />
<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<br />
This project is about creating a user interface to control 5 meter long strands of 160 LED lights. This interface will allow a user to select from <br />
light shows that are statically written on the bone or enter a small amount of code to generate a light show of their own. The user will also be able <br />
to select a song to be played while enjoying the light show.<br />
<br />
Light patterns and writing code is working and can be added to the display queue. The display queue will play each pattern for a predetermined time <br />
period before going to the next pattern. Songs can be added to the Audio Queue and the time remaining for the playing song and the length of the songs <br />
in the queue is displayed. <br />
<br />
We need to make a video of the program in use.<br />
<br />
This will be a fun and exciting Christmas feature for the ECE department.<br />
<br />
[https://www.youtube.com/watch?v=N5L2YJnQbmM Click here for a demonstration!]<br />
<br />
== Needed Hardware ==<br />
<br />
You will the 5 meter [http://www.adafruit.com/products/306 Adafruit's LPD8806 LED String].<br />
<br />
5 Volt 10 amp Power Supply [https://www.adafruit.com/product/658 https://www.adafruit.com/product/658]. <br />
<br />
USB audio dongle [https://www.sabrent.com/product/USB-SBCV/usb-2-0-external-2-1-surround-sound-adapter https://www.sabrent.com/product/USB-SBCV/usb-2-0-external-2-1-surround-sound-adapter].<br />
<br />
== Installation Instructions ==<br />
<br />
Follow these steps to enjoy the light show <br />
<br />
* Clone this repository [https://github.com/gfrung4/ECTree ECTree]. <br />
* Connect the 5 V power supply to the Vcc and Ground pins of the LED strip<br />
* Connect the clk pin of LED strip to P9_22 of the bone<br />
* Connect the dO pin of the lED strip to the P9_18 pin of the bone<br />
* connect the audio dongle to the usb port of the bone<br />
* run the install.sh file from the cloned repo (this needs to be run one time)<br />
* run the setup.sh file from the cloned repo (this needs to be run every boot up)<br />
<br />
<br />
== User Instructions ==<br />
<br />
* run the web.js file to start the server<br />
* point any web browser to the IP of the bone and port 887 <br />
* enjoy the light shows<br />
<br />
[[File:497UIScreenShot.png|400px|thumb User Interface]]<br />
<br />
== Highlights ==<br />
<br />
Our user interface will work on any browser including a phone's browser. All light display patterns made by user will be saved for future use. The code is written in a way <br />
that allows it to be easily expanded to include more audio and display patterns.<br />
<br />
== Theory of Operation ==<br />
<br />
We have a server that is listening on port 80 for user's to connect. once a user connects the web page request all current queue information and displays that information for the user<br />
to know how long until their pattern or song will be played. The server handles all of the request from many users to maintain unity among all the users so that everyone sees the same queue. the display patterns are sent from the user to the server using a json object and not actual code to prevent bad code spinning the server out of control.<br />
<br />
== Work Breakdown ==<br />
<br />
* getting lights to interact with the bone : Ricky <br />
* build a server : Josh & Ricky<br />
* build user interface : Josh & Ricky<br />
* pattern queue : Josh & Ricky<br />
* audio queue : Josh <br />
* beautifying website : Ricky<br />
<br />
== Future Work ==<br />
<br />
If we had more time, we would have liked to make the lights "dance" to the beat of the music.<br />
<br />
== Conclusions ==<br />
<br />
I, Josh, really enjoyed working on this project because I got to learn and explore some of the aspects of web programming. It will be nice to come back to campus after fall break and see the project in use and see how much action the lights will be getting. <br />
<br />
{{YoderFoot}}</div>Gfrung4https://elinux.org/index.php?title=ECE497_Project_Christmas_Light_Controller&diff=426146ECE497 Project Christmas Light Controller2016-11-11T19:19:05Z<p>Gfrung4: Added YouTube link</p>
<hr />
<div>[[Category:ECE497 |Pc]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Woodsjl|Josh Woods]] and [[user:gfrung4| Ricky Rung]]<br />
<br />
== Grading Template ==<br />
=== Draft Feedback ===<br />
Looks good. Keep up the good work.<br />
<br />
Could you add some pictures to show what you are doing?<br />
<br />
I'm using the following template to grade. Each slot is 10 points.<br />
0 = Missing, 5=OK, 10=Wow!<br />
<br />
<pre style="color:red"><br />
00 Executive Summary<br />
00 Installation Instructions <br />
00 User Instructions<br />
00 Highlights<br />
00 Theory of Operation<br />
00 Work Breakdown<br />
00 Future Work<br />
00 Conclusions<br />
00 Demo<br />
00 Late<br />
Comments: I'm looking forward to seeing this.<br />
<br />
Score: 10/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<br />
This project is about creating a user interface to control 5 meter long strands of 160 LED lights. This interface will allow a user to select from <br />
light shows that are statically written on the bone or enter a small amount of code to generate a light show of their own. The user will also be able <br />
to select a song to be played while enjoying the light show.<br />
<br />
Light patterns and writing code is working and can be added to the display queue. The display queue will play each pattern for a predetermined time <br />
period before going to the next pattern. Songs can be added to the Audio Queue and the time remaining for the playing song and the length of the songs <br />
in the queue is displayed. <br />
<br />
We need to make a video of the program in use.<br />
<br />
This will be a fun and exciting Christmas feature for the ECE department.<br />
<br />
https://www.youtube.com/watch?v=N5L2YJnQbmM<br />
<br />
== Needed Hardware ==<br />
<br />
You will the 5 meter [http://www.adafruit.com/products/306 Adafruit's LPD8806 LED String].<br />
<br />
5 Volt 10 amp Power Supply [https://www.adafruit.com/product/658 https://www.adafruit.com/product/658]. <br />
<br />
USB audio dongle [https://www.sabrent.com/product/USB-SBCV/usb-2-0-external-2-1-surround-sound-adapter https://www.sabrent.com/product/USB-SBCV/usb-2-0-external-2-1-surround-sound-adapter].<br />
<br />
== Installation Instructions ==<br />
<br />
Follow these steps to enjoy the light show <br />
<br />
* Clone this repository [https://github.com/gfrung4/ECTree ECTree]. <br />
* Connect the 5 V power supply to the Vcc and Ground pins of the LED strip<br />
* Connect the clk pin of LED strip to P9_22 of the bone<br />
* Connect the dO pin of the lED strip to the P9_18 pin of the bone<br />
* connect the audio dongle to the usb port of the bone<br />
* run the install.sh file from the cloned repo (this needs to be run one time)<br />
* run the setup.sh file from the cloned repo (this needs to be run every boot up)<br />
<br />
<br />
== User Instructions ==<br />
<br />
* run the web.js file to start the server<br />
* point any web browser to the IP of the bone and port 887 <br />
* enjoy the light shows<br />
<br />
[[File:497UIScreenShot.png|400px|thumb User Interface]]<br />
<br />
== Highlights ==<br />
<br />
Our user interface will work on any browser including a phone's browser. All light display patterns made by user will be saved for future use. The code is written in a way <br />
that allows it to be easily expanded to include more audio and display patterns.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
We have a server that is listening on port 80 for user's to connect. once a user connects the web page request all current queue information and displays that information for the user<br />
to know how long until their pattern or song will be played. The server handles all of the request from many users to maintain unity among all the users so that everyone sees the same queue. the display patterns are sent from the user to the server using a json object and not actual code to prevent bad code spinning the server out of control.<br />
<br />
== Work Breakdown ==<br />
<br />
* getting lights to interact with the bone : Ricky <br />
* build a server : Josh & Ricky<br />
* build user interface : Josh & Ricky<br />
* pattern queue : Josh & Ricky<br />
* audio queue : Josh <br />
* beautifying website : Ricky<br />
<br />
== Future Work ==<br />
<br />
If we had more time, we would have liked to make the lights "dance" to the beat of the music.<br />
<br />
== Conclusions ==<br />
<br />
I, Josh, really enjoyed working on this project because I got to learn and explore some of the aspects of web programming. It will be nice to come back to campus after fall break and see the project in use and see how much action the lights will be getting. <br />
<br />
{{YoderFoot}}</div>Gfrung4https://elinux.org/index.php?title=EBC_Editing_a_Wiki&diff=417966EBC Editing a Wiki2016-09-02T16:29:43Z<p>Gfrung4: Added my name to the table.</p>
<hr />
<div>[[Category:ECE597 |exer12]]<br />
{{YoderHead}}<br />
<br />
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.<br />
<br />
You can get help here: [[Help:Contents]].<br />
<br />
If you need help with syntax check out the [[Editing Quickstart Guide|eLinux guide]] or the [http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet Wikipedia Cheatsheet].<br />
<br />
== Fall 2016 ==<br />
{|<br />
| [[user:davidcaggiano | David J. Caggiano]]<br />
| 1-Sep-2016<br />
|-<br />
| [[user:Koontz | Alvin Koontz]]<br />
| 2-Sep-2016<br />
|-<br />
| [[user:Gfrung4 | George F. Rung]]<br />
| 2-Sep-2016<br />
|}<br />
<br />
== Fall 2015 ==<br />
<br />
{|<br />
| [[user:yoder | Mark A. Yoder]]<br />
| 10-Aug-2015<br />
|-<br />
| [[user:DivakarMaurya | Divakar Maurya]]<br />
| 16-Sep-2015<br />
|-<br />
| [[user:Rajat Valecha | Rajat Valecha]]<br />
| 16-Aug-2015<br />
|-<br />
| [[user:ahmed | Ahmed Karanath]]<br />
| 13-Aug-2015<br />
|-<br />
| [[user:Himanshu Kamboj| Himanshu Kamboj]]<br />
| 16-Sept-2015<br />
|-<br />
| [[user:gopalkriagg | Gopal Krishan Aggarwal]]<br />
| 12-Aug-2015<br />
|-<br />
| [[user:vishalgoel003 | Vishal Goel]]<br />
| 11-Aug-2015<br />
|-<br />
| [[user:Tshrjn | Tushar Jain]]<br />
| 10-Sept-2015<br />
|-<br />
| [[user:Anand K. Parmar | Anand K. Parmar]]<br />
| 10-Aug-2015<br />
|-<br />
| [[user:Mohit sharma | Mohit sharma]]<br />
| 31-Aug-2015<br />
|-<br />
| [[user:sanjeev_k | Sanjeev Khare]]<br />
| 15-Aug-2015<br />
|-<br />
| [[user:kanz | Kansul Mahrifa]]<br />
| 19-Aug-2015<br />
|-<br />
| [[user:manojkumar | Manoj Kumar]]<br />
| 19-Aug-2015<br />
|- <br />
| [[user:sadwith gogula | Sadwith gogula]]<br />
| 19-Aug-2015<br />
|-<br />
| [[user:pkm619 | Pushpendra kumar]]<br />
| 20-Aug-2015<br />
|-<br />
| [[user:guntukuvikas | Guntuku Vikas]]<br />
| 25-Aug-2015<br />
|-<br />
| [[user:sidgangal | Siddharth Gangal]]<br />
| 25-Aug-2015<br />
|-<br />
| [[user:Roby1234 | Onkar Singh]]<br />
| 25-Aug-2015<br />
|-<br />
| [[user:vinodkgupta | vinod kumar]]<br />
| 25-Aug-2015<br />
|-<br />
| [[user:merlin sundar | Merlin sundar]]<br />
| 25-Aug-2015<br />
|}<br />
<br />
== Fall 2014 ==<br />
<br />
{|<br />
| [[user:yoder | Mark A. Yoder]]<br />
| 6-Aug-2014<br />
|-<br />
| [[user:JiayuGuo | Jiayu Guo]]<br />
| 25-sep-2014<br />
|-<br />
| [[user:zwj102030 | Weijian zhang]]<br />
| 18-sep-2014<br />
|-<br />
<br />
| [[user:XHa0z | Zhihao Xue]]<br />
| 4-Sept-2014<br />
|-<br />
| [[user:caiocvsilva | Caio Silva]]<br />
| 5-Sept-2014<br />
|-<br />
| [[user:MattOlson | Matt Olson]]<br />
| 7-Sept-2014<br />
|-<br />
| [[user:Leihao | Leihao Wei]]<br />
| 7-Sept-2014<br />
|-<br />
| [[user:Mikuzz | Zizhao Wang]]<br />
| 7-Sept-2014<br />
|-<br />
|[[user:Zhouy | Ying Ying Zhou]]<br />
| 7-Sept-2014<br />
|-<br />
|[[user:Eric Taylor | Eric Taylor]]<br />
| 7-Sept-2014<br />
|-<br />
|[[user:Peter_Olejnik | Peter Olejnik]]<br />
| 7-Sept-2014<br />
|-<br />
|[[user:Dmitryvv | Dmitry Votintsev]]<br />
| 7-Sept-2014<br />
|-<br />
|[[user:morrisma| Mark Morrison]]<br />
| 9-Sept-2014<br />
|-<br />
|[[user:vaddera| Alexandre van der Ven de Freitas]]<br />
| 9-Sept-2014<br />
|-<br />
|[[user:randallsturner13| Randy Turner]]<br />
| 11-Sept-2014<br />
|-<br />
|[[user:ADraicBrom| Asa Bromenschenkel]]<br />
| 18-Sept-2014<br />
|-<br />
|}<br />
<br />
== Winter 2013 ==<br />
{|<br />
|-<br />
| [[user:cattnb | Nathan Catt]]<br />
| 28-November-2013<br />
|-<br />
| [[user:belkat | Andrew Belk]]<br />
| 7 Dec 2013<br />
|-<br />
|}<br />
<br />
== Fall 2013 ==<br />
<br />
{|<br />
|-<br />
| [[user:amesen | Eric Ames]]<br />
| 13-June-2013<br />
|-<br />
| [[user:fendrirj | Robert Fendricks]]<br />
| 5-September-2013<br />
|-<br />
| [[user:elswicwj | Will Elswick]]<br />
| 5-September-2013<br />
|-<br />
| [[user:savrdada | David Savrda]]<br />
| 5-September-2013<br />
|-<br />
| [[user:skorinm | Matt Skorina]]<br />
| 6-September-2013<br />
|-<br />
| [[user:Parasby | Ben Paras]]<br />
| 6-September-2013<br />
|-<br />
| [[user:Yuxuan | Yuxuan Zeng]]<br />
| 5-September-2013<br />
|-<br />
| [[user:Mcdonamp | Mike McDonald]]<br />
| 5-September-2013<br />
|-<br />
| [[user:Kowalsif | Ian Kowalski]]<br />
| 5-September-2013<br />
|-<br />
| [[user:daniel.hou | Junxuan Hou]]<br />
| 5-September-2013<br />
|-<br />
| [[user:Andrewca | Chris Andrews]]<br />
| 5-September-2013<br />
|-<br />
| [[user:Rockybulwinkle | Chris Hopwood]]<br />
| 6-September-2013<br />
|-<br />
| [[user:Tpurviance | Taylor Purviance]]<br />
| 6-September-2013<br />
|-<br />
| [[user:Manuel | Manuel Stephan]]<br />
| 8-September-2013<br />
|-<br />
| [[user:FreeTymeKiyan | Yang Liu]]<br />
| 8-September-2013<br />
|-<br />
| [[user:Cooperdl | David Cooper]]<br />
| 9-September-2013<br />
|-<br />
| [[user:Alvareap | Alex Alvarez]]<br />
| 10-September-2013<br />
|-<br />
|}<br />
<br />
== Fall 2012 ==<br />
<br />
{|<br />
|-<br />
| [[user:Yoder | Mark A. Yoder]]<br />
| 18-July-2012<br />
|-<br />
| [[user:atniptw | Tom Atnip]]<br />
| 20-July-2012<br />
|-<br />
| [[user:Xinyu1991 | Xinyu Cheng]]<br />
| 31-August-2012<br />
|-<br />
| [[user:bssachin45 | B S Sachin]]<br />
| 25-July-2012<br />
|-<br />
| [[user:ruff | Ruffin White]]<br />
| 16-August-2012<br />
|-<br />
| [[user:Popenhjc | James Popenhagen]]<br />
| 30-August-2012<br />
|-<br />
| [[user:mmoravec | Matthew Moravec]]<br />
| 30-August-2012<br />
|-<br />
| [[user:ngop | Peter Ngo]]<br />
| 30-August-2012<br />
|-<br />
| [[user:duganje | Josh Dugan]]<br />
| 30-August-2012<br />
|-<br />
| [[user:hansenrl | Ross Hansen]]<br />
| 30-August-2012<br />
|-<br />
| [[user:jungeml | Michael Junge]]<br />
| 05-September-2012<br />
|- <br />
| [[User:shinnsm|Stephen Shinn]]<br />
| 30-August-2012<br />
|-<br />
| [[User:draneaw|Alex Drane]]<br />
| 30-August-2012<br />
|-<br />
| [[User:larmorgs|Greg Larmore]]<br />
| 31-August-2012<br />
|-<br />
| [[User:jessebrannon|Jesse Brannon]]<br />
| 31-August-2012<br />
|-<br />
| [[User:lix|Xia Li]]<br />
| 31-August-2012<br />
|-<br />
| [[User:whiteer|Elias White]]<br />
| 31-August-2012<br />
|-<br />
| [[User:Astroricks|Yue Zhang]]<br />
| 31-August-2012<br />
|-<br />
| [[User:millerap|Andrew Miller]]<br />
| 31-August-2012<br />
|-<br />
| [[user:Geislekj | Kevin Geisler]]<br />
| 1-September-2012<br />
|-<br />
| [[user:chris.good | Christopher A Good]]<br />
| 3-September-2012<br />
|-<br />
| [[user:Lobdeljt | John Lobdell]]<br />
| 5-November-2012<br />
|}<br />
<br />
== Winter 2011-2012 ==<br />
<br />
{|<br />
|-<br />
| [[user:Yoder | Mark A. Yoder]]<br />
| 21-Nov-2011<br />
|-<br />
| [[user:Yuming | Yuming Cao]]<br />
| 21-Nov-2011<br />
|-<br />
| [[user:Yuhasmj | Michael Yuhas]]<br />
| 21-Nov-2011<br />
|-<br />
| [[user:Yifei | Yifei Li]]<br />
| 22-Nov-2011<br />
|-<br />
| [[user:Ziyi Zhang | Ziyi Zhang]]<br />
| 24-Nov-2011<br />
|-<br />
|[[user: mac | Jack Ma]]<br />
| 28-Nov-2011<br />
|-<br />
| [[user:Zitnikdj | David Zitnik]]<br />
| 25-Nov-2011<br />
|-<br />
| [[user:Harrisgw | Greg Harrison]]<br />
| 26-Nov-2011<br />
|-<br />
| [[user:Yanj | Mona J Yan]]<br />
| 27-Nov-2011<br />
|-<br />
| [[user:Gemini91 | Guanqun Wang]]<br />
| 28-Nov-2011<br />
|-<br />
| [[user:vsn1985 | Narayanan VS]]<br />
| 28-Nov-2011<br />
|}<br />
<br />
<br />
{{YoderFoot}}</div>Gfrung4https://elinux.org/index.php?title=EBC_Contributions_and_Project_Status&diff=417961EBC Contributions and Project Status2016-09-02T16:26:28Z<p>Gfrung4: Adding my name to the Project Status list</p>
<hr />
<div>[[Category:ECE597 |Contributions]]<br />
{{YoderHead}}<br />
<br />
== Fall 2016 ==<br />
<br />
=== Project Status===<br />
<br />
Please edit this page and add your name to this list. Fill in the Contributions column, but ignore the project and git for now.)<br />
'''Please make the list alphabetical by family name.'''<br />
<br />
Take a look at what you and others have contributed.<br />
<br />
{|<br />
|- <br />
! Name<br />
! Contributions<br />
! Project<br />
! git repository<br />
|-<br />
| [[User:Joseph Militello | Joseph A. Militello]]<br />
| [[Special:Contributions/Joseph Militello | contrib]]<br />
|-<br />
|-<br />
| [[User:Gfrung4 | George F. Rung]]<br />
| [[Special:Contributions/Gfrung4 | contrib]]<br />
|-<br />
|-<br />
| [[User:Yoder | Mark A. Yoder]] <br />
| [[Special:Contributions/Yoder | contrib]]<br />
| unknown<br />
| [https://github.com/MarkAYoder/ github]<br />
|-<br />
|}<br />
<br />
== Fall 2015 ==<br />
<br />
=== Project Status===<br />
<br />
Please edit this page and add your name to this list. Fill in the Contributions column, but ignore the project and git for now.)<br />
'''Please make the list alphabetical by family name.'''<br />
<br />
Take a look at what you and others have contributed.<br />
<br />
{|<br />
|- <br />
! Name<br />
! Contributions<br />
! Project<br />
! git repository<br />
|-<br />
| [[User:Yoder | Mark A. Yoder]]<br />
| [[Special:Contributions/Yoder | contrib]]<br />
| unknown<br />
| [https://github.com/MarkAYoder/ github]<br />
|-<br />
| [[User:Gopalkriagg | Gopal Krishan Aggarwal]]<br />
| [[Special:Contributions/gopalkriagg | contrib]]<br />
| [[CS404_Data_Display_of_Weather_station|Data Display of Weather station]]<br />
| [https://github.com/gopalkriagg/CS-404-Embedded-Systems github]<br />
|-<br />
| [[User:DivakarMaurya | Divakar Maurya]]<br />
| [[Special:Contributions/DivakarMaurya | contrib]]<br />
| unknown<br />
| [https://github.com/DivakarMaurya/CS-404---Embedded-Systems/ github]<br />
|-<br />
| [[User:Himanshu Kamboj | Himanshu Kamboj]]<br />
| [[Special:Contributions/Himanshu | contrib]]<br />
| unknown<br />
| [https://github.com/hima0711/CS404-Embedded-Systems/ github]<br />
|-<br />
| [[User:sadwith gogula | Sadwith Gogula]]<br />
| [[Special:Contributions/Sadwith gogula | contrib]]<br />
| unknown<br />
| [https://github.com/sadwith/ github]<br />
|-<br />
| [[User:tshrjn | Tushar Jain]]<br />
| [[Special:Contributions/tshrjn | contrib]]<br />
| unknown<br />
| [https://github.com/tshrjn/CS404-Embedded-System github]<br />
|-<br />
| [[User:Ahmed | Ahmed Karanath]]<br />
| [[Special:Contributions/Ahmed | contrib]]<br />
| unknown<br />
| [https://github.com/ahmedak/cs404/ github]<br />
|<br />
|-<br />
| [[User:sanjeev_k | Sanjeev Khare]]<br />
| [[Special:Contributions/sanjeev_k | contrib]]<br />
| unknown<br />
| [https://github.com/sanjekhare/Cs404EmbeddedSytems.git github]<br />
|-<br />
| [[User:rishtrivedi | Rishabh Trivedi]]<br />
| [[Special:Contributions/rishtrivedi | contrib]]<br />
| unknown<br />
| [https://github.com/rishtrivedi/course-.git] (empty)<br />
|-<br />
| [[User:manojkumar | Manoj Kumar]]<br />
| [[Special:Contributions/manojkumar | contrib]]<br />
| unknown<br />
| [https://github.com/bandarimanojkumar/ github]<br />
|-<br />
| [[User:Siddhartha | Siddhartha G]]<br />
| [[Special:Contributions/Siddhartha| contrib]]<br />
| [[CS404_Data_Display_of_Weather_station|Data Display of Weather station]]<br />
| [https://github.com/siddhu9/ github]<br />
|-<br />
| [[User:nitin121 | karre.nitin]]<br />
| [[Special:Contributions/nitin121 | contrib]]<br />
| unknown<br />
| [https://github.com/nitin121/ github]<br />
|-<br />
| [[User:Sri Venkat | Sri Venkat]]<br />
| [[Special:Contributions/Sri Venkat | contrib]]<br />
| [[CS404_Data_Display_of_Weather_station|Data Display of Weather station]]<br />
| [https://github.com/srivenkat9/ github]<br />
|-<br />
| [[User:shivaverma | Shiva Verma]]<br />
| [[Special:Contributions/shivaverma| contrib]]<br />
| [[Automatic_Door_Lock_System|Automatic Door Lock System]]<br />
| [https://github.com/shivaverma/ github]<br />
|-<br />
| [[User:sthejasbabu | Thejas]]<br />
| [[Special:Contributions/sthejasbabu| contrib]]<br />
| unknown<br />
| [https://github.com/sthejasbabu/ github]<br />
|-<br />
<br />
| [[User:Kanz | Kansul Mahrifa]]<br />
| [[Special:Contributions/kanz | contrib]]<br />
| unknown<br />
| [https://github.com/mkanz/cs404 github]<br />
|-<br />
| [[User:Anand K. Parmar| Anand K. Parmar]]<br />
| [[Special:Contributions/Anand K. Parmar | contrib]]<br />
| [[Automatic_Door_Lock_System|Automatic Door Lock System]]<br />
| [https://github.com/anandkparmar/CS404---Embedded-Linux github]<br />
|-<br />
| [[User:Mohit sharma | Mohit Sharma]]<br />
| [[Special:Contributions/Mohit sharma | contrib]]<br />
| unknown<br />
| [https://github.com/mohitsmr/CS404 github]<br />
|-<br />
| [[User:Sanjeeva Raidu | Sanjeeva Raidu]]<br />
| [[Special:Contributions/Sanjeeva Raidu | contrib]]<br />
| unknown<br />
| [https://github.com/sanjeevaraidu/ github]<br />
|-<br />
| [[User:RAJAT VALECHA | Rajat Valecha]]<br />
| [[Special:Contributions/RAJAT VALECHA | contrib]]<br />
| unknown<br />
| [https://github.com/RAJATVALECHA/embedded-linux-course github]<br />
|-<br />
| [[User:yodercr | Charlotte Yoder]]<br />
| [[Special:Contributions/yodercr | contrib]]<br />
| unknown<br />
| [https://github.com/yodercr/ github]<br />
|-<br />
| [[User:MamaSky | Sarah K. Yoder]]<br />
| [[Special:Contributions/MamaSky | contrib]]<br />
| unknown<br />
| [https://github.com/MamaSky/ github]<br />
|-<br />
| [[User:merlinsundar | Merlin Sundar]]<br />
| [[Special:Contributions/merlisundar | contrib]]<br />
| [[Weather_station_(Server_side)_-_Team_03|Weather_station_(Server_side)_-_Team_03]]<br />
| [https://github.com/merlinsundar/homeworks github]<br />
|-<br />
| [[User:SrinathMupparsi | Srinath M.R.]]<br />
| [[Special:Contributions/SrinathMupparsi | contrib]]<br />
| [[Automatic_Door_Lock_System|Automatic Door Lock System]]<br />
| [https://github.com/srinathmupparsi/CS--404-Embedded-Systems/ github]<br />
|-<br />
|-<br />
| [[User:pkm619 | Pushpendra]]<br />
| [[Special:Contributions/pkm619 | contrib]]<br />
| unknown| [https://github.com/pkm619/cs404 github]<br />
|-<br />
| [[User:ankur_sardar | Ankur]]<br />
| [[Special:Contributions/ankur_sardar | contrib]]<br />
| unknown<br />
| [https://github.com/ankur-sardar/CS404/ github] (empty)<br />
|-<br />
| [[User:Roby1234 | Onkar Singh]]<br />
| [[Special:Contributions/Robby1234 | contrib]]<br />
| unknown<br />
| [https://github.com/roby1234/ github]<br />
|-<br />
| [[User:guntukuvikas | Guntuku Vikas]]<br />
| [[Special:Contributions/guntukuvikas | contrib]]<br />
| unknown<br />
| [https://github.com/guntukuvikas/ github]<br />
|-<br />
| [[User: sidgangal | Siddharth Gangal]]<br />
| [[Special:Contributions/sidgangal | contrib]]<br />
| unknown<br />
| [https://github.com/sidgangal/Repo github]<br />
|-<br />
| [[User:vinodkgupta | Vinod Kumar]]<br />
| [[Special:Contributions/vinod | contrib]]<br />
| unknown<br />
| [https://github.com/vinodkgupta96/Contributions github]<br />
|-<br />
| [[User:KS_Mani | Mani Kumar]]<br />
| [[Special:Contributions/Mani | contrib]]<br />
| [[Automatic_Door_Lock_System|Automatic Door Lock System]]<br />
| [https://github.com/Neferseti/Mani_B12012_Embedded_System/ github]<br />
|-<br />
|}<br />
<br />
== Fall 2014 ==<br />
<br />
=== Project Status===<br />
<br />
Please edit this page and add your name to this list. Fill in the Contributions column, but ignore the project and git for now.)<br />
'''Please make the list alphabetical by family name.'''<br />
<br />
Take a look at what you and others have contributed.<br />
<br />
{|<br />
|- <br />
! Name<br />
! Contributions<br />
! Project<br />
! git repository<br />
|-<br />
| [[User:Yoder | Mark A. Yoder]]<br />
| [[Special:Contributions/Yoder | contrib]]<br />
| unknown<br />
| [https://github.com/MarkAYoder/ github]<br />
|-<br />
| [[User:ADraicBrom | Asa Bromenschenkel]]<br />
| [[Special:Contributions/ADraicBrom| contrib]]<br />
| [http://elinux.org/ECE597_Fall2014_LED_Helmet LED Helmet]<br />
| [https://github.com/ADraicBrom/ github]<br />
|-<br />
| [[User:Peter_Olejnik | Peter Olejnik]]<br />
| [[Special:Contributions/Peter_Olejnik | contrib]]<br />
| [http://elinux.org/ECE597_Fall2014_Ringing_Servos Ringing Servos]<br />
| [https://github.com/ValRose/ github]<br />
|-<br />
| [[User:MattOlson | Matt Olson]]<br />
| [[Special:Contributions/MattOlson | contrib]]<br />
| [http://elinux.org/ECE597_WooDoo_VoiceBox Voicebox]<br />
| [https://github.com/wiizeldaguy/ECE597 github]<br />
|-<br />
| [[User:morrisma | Mark Morrison]]<br />
| [[Special:Contributions/Morrisma | contrib]]<br />
| [http://elinux.org/ECE597_Fall2014_Ringing_Servos Ringing Servos]<br />
| [https://github.com/morrismaRHIT/ github]<br />
|-<br />
| [[User:caiocvsilva | Caio Silva]]<br />
| [[Special:Contributions/caiocvsilva| contrib]]<br />
| [http://elinux.org/ECE597_Fall2014_LED_Helmet LED Helmet]<br />
| [https://github.com/caiocvsilva/ github]<br />
|-<br />
| [[User:Eric Taylor | Eric Taylor]]<br />
| [[Special:Contributions/Eric Taylor| contrib]]<br />
| [[ECE597 Project Robot Control | Robot Control]]<br />
| [https://github.com/steelerfan107/ github]<br />
|-<br />
| [[User:Leihao | Leihao Wei]]<br />
| unknown<br />
| [[ECE597 Project SensorTag 3D| SensorTag 3D]]<br />
| [https://github.com/Litou1 github]<br />
|-<br />
| [[User:XHa0z |Zhihao Xue]]<br />
| unknown<br />
| [[ECE597 Project Music Visualizer | Music Visualizer]]<br />
| [https://github.com/xHa0z github]<br />
|-<br />
| [[User:Mikuzz |Zizhao Wang]]<br />
| unknown<br />
| [[ECE597 Project MakeyMakey | Bonekey Bonekey]]<br />
| [https://github.com/MikuZZZ github]<br />
|-<br />
| [[User:Zhouy | Ying Ying Zhou]]<br />
| unknown<br />
| [[ECE597 Project Music Visualizer | Music Visualizer]]<br />
| [https://github.com/zhouyyy github]<br />
|-<br />
| [[User:vaddera | Alexandre van der Ven de Freitas]]<br />
| [[Special:Contributions/vaddera| contrib]]<br />
| [[ECE597 Project Robot Control | Robot Control]]<br />
| [https://github.com/vaddera github]<br />
|-<br />
| [[User:dmitryvv | Dmitry Votintsev]]<br />
| unknown<br />
| [http://elinux.org/ECE597_Project_VoiceBox Voicebox]<br />
| [https://github.com/dmitryvv/Embedded-Linux-Sandbox github]<br />
|-<br />
| [[User:zwj102030 |Weijian Zhang]]<br />
| [[Special:Contributions/Zwj102030 | contrib]]<br />
| [http://elinux.org/User:Zwj102030 Intel Gailileo]<br />
| [https://github.com/zwj102030/ECE597 github]<br />
|- <br />
| [[User:darsnack | Kyle Daruwalla]]<br />
| [[Special:Contributions/Darsnack | contrib]]<br />
| [http://elinux.org/ECE597_Intel_Edison Intel Edison]<br />
| [https://github.com/darsnack/ECE597 github]<br />
|-<br />
| [[User:Randallsturner13 | Randy Turner]]<br />
| [[Special:Contributions/Randallsturner13 | contrib]]<br />
| [http://elinux.org/ECE597_Fall2014_Ringing_Servos Ringing Servos]<br />
| [https://github.com/randman2011/ github]<br />
|-<br />
| [[User:JiayuGuo | Jiayu Guo]]<br />
| unknown<br />
| [[ECE597 Project MakeyMakey | Bonekey Bonekey]]<br />
| [https://github.com/guoDebby/JiayuGuo github]<br />
|-<br />
| [[User:Yashi3456 | Yashi Yadav]]<br />
| unknown<br />
| [[ECE597 Project SensorTag 3D| SensorTag 3D]]<br />
| [https://github.com/yashiy/EBC github]<br />
|}<br />
<br />
== Winter 2013-2014 ==<br />
<br />
=== Project Status===<br />
<br />
Please edit this page and add your project to this list.<br />
Please make the list alphabetical by family name.<br />
<br />
Take a look at what you and others have contributed.<br />
<br />
{|<br />
|- <br />
! Name<br />
! Contributions<br />
! Project<br />
! git repository<br />
|-<br />
| [[User:Cattnb | Nathan Catt]]<br />
| [[Special:Contributions/Cattnb | contrib]]<br />
| <br />
| [https://github.com/cattnb/ classwork ]<br />
|-<br />
| [[User:belkat | Andrew Belk]]<br />
| [[Special:Contributions/belkat | contrib]]<br />
| <br />
| [https://github.com/belkat/ classwork ]<br />
|}<br />
<br />
== Fall 2013 ==<br />
<br />
<br />
=== Project Status ===<br />
<br />
Please edit this page and add your project to this list.<br />
Please make the list alphabetical by family name.<br />
<br />
Take a look at what you and others have contributed.<br />
<br />
{|<br />
|- <br />
! Name<br />
! Contributions<br />
! Project<br />
! git repository<br />
|-<br />
| [[User:Alvareap | Alex Alvarez]]<br />
| [[Special:Contributions/Alvareap | contrib]]<br />
| [[ECE497 Project LCD Tetris Game| Tetris Game]]<br />
| [https://github.com/alvareap/classwork classwork ]<br />
|-<br />
| [[User:amesen | Eric Ames]]<br />
| [[Special:Contributions/amesen | contrib]]<br />
| [[ECE497 Project Music Server | Music Server]]<br />
| [https://github.com/Guiltygate/beaglebone-classwork classwork]<br />
|-<br />
| [[User:Andrewca | Chris Andrews]]<br />
| [[Special:Contributions/Andrewca| contrib]]<br />
| [[Project Tweet-A-Watt | TweetaWatt]]<br />
| [https://github.com/andrewca/ECE497.git Homework]<br />
|-<br />
| [[User:Cooperdl | David Cooper]]<br />
| [[Special:Contributions/Cooperdl | contrib]]<br />
| [[ECE497 Project Music Server | Music Server]]<br />
| [https://github.com/cooperdl/Classwork Classwork]<br />
|-<br />
| [[User:elswicwj | Will Elswick]]<br />
| [[Special:Contributions/elswicwj| contrib]]<br />
| [[ECE497 Project Makeshift Drums | Makeshift Drums]]<br />
| [https://github.com/elswicwj/ECE497.git classwork]<br />
|-<br />
| [[User:fendrirj | Robert Fendricks]]<br />
| [[Special:Contributions/fendrirj| contrib]]<br />
| [[ECE497 Project GPS Tracker | GPS Tracker]]<br />
| [https://github.com/Fendrirj/ECE497 classwork]<br />
|-<br />
| [[User:Rockybulwinkle | Chris Hopwood]]<br />
| [[Special:Contributions/Rockybulwinkle| contrib]]<br />
| [[ECE497 Project GPS Tracker | GPS Tracker]]<br />
| [https://github.com/rockybulwinkle/beaglebone/ Classwork]<br />
|-<br />
| [[User:daniel.hou | Junxuan Hou]]<br />
| [[Special:Contributions/hou| contrib]]<br />
| [[ECE497 Project Electric Car | Electric Car]]<br />
| [https://github.com/houj/Homework.git Classwork]<br />
|-<br />
| [[User:Kowalsif | Ian Kowalski]]<br />
| [[Special:Contributions/kowalsif| contrib]]<br />
| [[ECE497 Project GameSystem | GameSystem]]<br />
| [https://github.com/kowalsif/Beagle BeagleCode]<br />
|-<br />
| [[User:FreeTymeKiyan | Yang Liu]]<br />
| [[Special:Contributions/FreeTymeKiyan | contrib]]<br />
| [[ECE497 Project DotRun | DotRun]]<br />
| [https://github.com/FreeTymeKiyan/EmbeddedLinux.git EmbeddedLinux]<br />
|-<br />
| [[User:Mcdonamp | Mike McDonald]]<br />
| [[Special:Contributions/mcdonamp| contrib]]<br />
| [[ECE497 Project Quadcopter Server | Quadcopter Server]]<br />
| [https://github.com/mcdonamp/497Homework 497Homework]<br />
|-<br />
| [[User:Parasby| Ben Paras]]<br />
| [[Special:Contributions/Parasby | contrib]]<br />
| [[ECE497 Project WireShark| WireShark]]<br />
| [https://github.com/parasby2014/ECE497---Embedded-Linux ECE497HW]<br />
|-<br />
| [[User:Tpurviance| Taylor Purviance]]<br />
| [[Special:Contributions/Tpurviance | contrib]]<br />
| [[ECE497 Project Programmable Light Show | Light Show]]<br />
| [https://github.com/tpurviance/E32bL Homework]<br />
|-<br />
| [[User:Axiixc| James Savage]]<br />
| [[Special:Contributions/Axiixc | contrib]]<br />
| [[ECE497 Project Makeshift Drums | Makeshift Drums]]<br />
| [https://github.com/axiixc/ece497 axiixc/ece497]<br />
|-<br />
| [[User:savrdada | David Savrda]]<br />
| [[Special:Contributions/savrdada| contrib]]<br />
| [[ECE497 Project GameSystem | GameSystem]]<br />
| [https://github.com/muglump/BeagleBoneHomework BeagleBoneRepo]<br />
|-<br />
| [[User:skorinm | Matt Skorina]]<br />
| [[Special:Contributions/skorinm| contrib]]<br />
| [[ECE497 Project Quadcopter Server | Quadcopter Server]]<br />
| [https://github.com/skorinm/Homework Homework]<br />
|-<br />
| [[User:Manuel | Manuel Stephan]]<br />
| [[Special:Contributions/Manuel | contrib]]<br />
| [[ECE497 Project WireShark | WireShark]]<br />
| [https://github.com/manuelstephan/homework Homework]<br />
|-<br />
| [[User:Alvareap | Zhen Wei]]<br />
| [[Special:Contributions/Alvareap | contrib]]<br />
| [[ECE497 Project Electric Car | Electric Car]]<br />
| [https://github.com/weizhen1883/homework.git HomeWork]<br />
|-<br />
| [[User:Yoder | Mark A. Yoder]]<br />
| [[Special:Contributions/Yoder | contrib]]<br />
| [[ECE497 Project Template | My Beagle Project]]<br />
| [https://github.com/MarkAYoder MarkAYoder]<br />
|-<br />
| [[User:Yuxuan | Yuxuan Zeng]]<br />
| [[Special:Contributions/zeng| contrib]]<br />
| [[ECE497 Project DotRun | DotRun]]<br />
| [https://github.com/yuxuanzeng classwork]<br />
|}<br />
<br />
== Fall 2012 ==<br />
<br />
<br />
=== Project Status ===<br />
<br />
Please edit this page and add your project to this list.<br />
Please make the list alphabetical by family name.<br />
<br />
Take a look at what you and others have contributed.<br />
<br />
{|<br />
|- <br />
! Name<br />
! Contributions<br />
! Project<br />
! git repository<br />
|-<br />
| [[User:atniptw | Tom Atnip]]<br />
| [[Special:Contributions/atniptw|contrib]]<br />
| [[ECE497 Beagle VNS | Beagle VNS]]<br />
| [https://github.com/atniptw/ atniptw]<br />
|-<br />
| [[User:jessebrannon | Jesse Brannon]]<br />
| [[Special:Contributions/Jessebrannon|contrib]]<br />
| [[ECE497 Project Rover | Rover]]<br />
| [https://github.com/brannojs/ brannojs]<br />
|-<br />
| [[User:Xinyu1991 | Xinyu Cheng]]<br />
| [[Special:Contributions/Xinyu1991|contrib]]<br />
| [[ECE497_Project:_Kinect | Kinect]]<br />
| [https://github.com/xinyu1991/ Xinyu Cheng]<br />
|-<br />
| [[User:correlbn | Bryan Correll]]<br />
| [[Special:Contributions/correlbn|contrib]]<br />
| [[BeagleBone PRU | BeagleBone PRU]]<br />
| [https://github.com/correlbn/My-Beagle-Project/ Correlbn]<br />
|-<br />
| [[User:draneaw | Alex Drane]]<br />
| [[Special:Contributions/draneaw|contrib]]<br />
| [[ECE497: Remote Web Cam Viewer Final Project| Remote Web Cam Viewer]]<br />
| [https://github.com/draneaw/ Draneaw]<br />
|-<br />
| [[User:duganje | Josh Dugan]]<br />
| [[Special:Contributions/duganje|contrib]]<br />
| [[ECE497 Project: XBee|XBee]]<br />
| [https://github.com/duganje/ duganje]<br />
|-<br />
| [[User:Geislekj | Kevin Geisler]]<br />
| [[Special:Contributions/geislekj|contrib]]<br />
| [[ECE497 Beagle VNS | Beagle VNS]]<br />
| [https://github.com/geislekj/ geislekj]<br />
| <br />
|-<br />
| [[User:chris.good | Christopher A Good]]<br />
| [[Special:Contributions/Chris.good|contrib]]<br />
| [[ECE497 Project RoverGUI | RoverGUI]]<br />
| [https://github.com/goodca/ goodca]<br />
| <br />
|-<br />
| [[User:hansenrl | Ross Hansen]]<br />
| [[Special:Contributions/hansenrl|contrib]]<br />
| [[ECE497 Project Rover | Rover]]<br />
| [https://github.com/hansenrl/ Hansenrl]<br />
| <br />
|-<br />
| [[User:jungeml | Michael Junge]]<br />
| [[Special:Contributions/jungeml|contrib]]<br />
| [[ECE497 Project Rover | Rover]]<br />
| [https://github.com/jungeml/ Jungeml]<br />
|-<br />
| [[User:larmorgs | Greg Larmore]]<br />
| [[Special:Contributions/larmorgs|contrib]]<br />
| [[ECE497 SPI Project | SPI Project]]<br />
| [https://github.com/larmorgs Greg Larmore]<br />
|-<br />
| [[User:Lobdeljt | John Lobdell]]<br />
| <br />
| [[ECE 497 lobdeljt Project | My Beagle Project]]<br />
| [https://github.com/jtlobdell jtlobdell]<br />
|-<br />
| [[User:Lix | Xia Li]]<br />
| [[Special:Contributions/Lix|contrib]]<br />
| [[ECE497 Project: Kinect | Kinect]]<br />
| [https://github.com/1984xiali/ xiali]<br />
|-<br />
| [[User:Millerap | Andrew Miller]]<br />
| [[Special:Contributions/Millerap|contrib]]<br />
| [[BeagleBone PRU | BeagleBone PRU]]<br />
| [https://github.com/millerap millerap]<br />
|-<br />
| [[User:mmoravec | Matthew Moravec]]<br />
| [[Special:Contributions/mmoravec|contrib]]<br />
| [[ECE497 Project: XBee|XBee]]<br />
| [https://github.com/mmoravec/ mmoravec]<br />
|-<br />
| [[User:ngop | Peter Ngo]]<br />
| [[Special:Contributions/ngop|contrib]]<br />
| [[BeagleBone PRU | BeagleBone PRU]]<br />
| [https://github.com/ngop/ ngop]<br />
|-<br />
| [[User:Popenhjc | James Popenhagen]]<br />
| [[Special:Contributions/Popenhjc|contrib]]<br />
| [[BeagleBone PRU | BeagleBone PRU]]<br />
| [https://github.com/popenhjc/ popenhjc]<br />
|-<br />
| [[User:Richarsm | Sean Richardson]]<br />
| [[Special:Contributions/Richarsm|contrib]]<br />
| [[ECE497 SPI Project | SPI Project]]<br />
| [https://github.com/seanrich Sean Richardson]<br />
|-<br />
| [[User:shinnsm|Stephen Shinn]]<br />
| [[Special:Contributions/shinnsm|contrib]]<br />
| [[ECE497 Project: XBee|XBee]]<br />
| [https://github.com/shinnsm shinnsm]<br />
|-<br />
| [[User:Whiteer | Elias White]]<br />
| <br />
| [[ECE497 SLAM via ROS | My Beagle Project]]<br />
| [https://github.com/whiteer whiteer]<br />
|-<br />
| [[User:ruff | Ruffin White]]<br />
| [[Special:Contributions/ruff|contrib]]<br />
| [[ECE497 Beagle VNS | Beagle VNS]]<br />
| [https://github.com/ruffsl/ ruffsl]<br />
|-<br />
| [[User:Yoder | Mark A. Yoder]]<br />
| [[Special:Contributions/Yoder | contrib]]<br />
| [[ECE497 Project Template | My Beagle Project]]<br />
| [https://github.com/MarkAYoder MarkAYoder]<br />
|-<br />
| [[User:Astroricks | Yue Zhang]]<br />
| [[Special:Contributions/Astroricks | contrib]]<br />
| [[ECE497_Project:_Kinect | Kinect]]<br />
| [https://github.com/Astroricks/Beagle-Project Yue Zhang]<br />
|}<br />
<br />
== Winter 2011-2012 ==<br />
<br />
=== Contributions ===<br />
# [[Special:Contributions/TonyHo | Tony Ho]]<br />
# [[Special:Contributions/Yuming | Yuming Cao]]<br />
# [[Special:Contributions/Yifei | Yifei Li]]<br />
# [[Special:Contributions/Harrisgw | Greg Harrison]]<br />
# [[Special:Contributions/mac | Jack Ma]]<br />
# [[Special:Contributions/Gemini91 | Guanqun Wang]]<br />
# [[Special:Contributions/Yanj | Mona Yan]]<br />
# [[Special:Contributions/Yoder | Mark A. Yoder]]<br />
# [[Special:Contributions/Yuhasmj | Michael Yuhas]]<br />
# [[Special:Contributions/Ziyi Zhang | Ziyi Zhang]]<br />
# [[Special:Contributions/Zitnikdj | David Zitnik]]<br />
# [[Special:Contributions/Zitnikdj | Alex Drane]]<br />
# [[Special:Contributions/jessebrannon | Jesse Brannon]]<br />
# [[Special:Contributions/larmorgs | Greg Larmore]]<br />
# [[Special:Contributions/jungeml | Michael Junge]]<br />
# [[Special:Contributions/millerap | Andrew Miller]]<br />
# [[Special:Contributions/correlbn | Bryan Correll]]<br />
<br />
=== Project Status ===<br />
<br />
# [[User:Yoder | Mark A. Yoder]], [[ECE497 Project Template | My Beagle Project]]<br />
# [[user:Yanj|Mona Yan]] and [[user:Harrisgw| Greg Harrison]], [[PS EYE QT PROJECT | Playstation Eye Audio with Qt]]<br />
# [[user:Caogecym | Yuming Cao]] and [[user:Ziyi Zhang | Ziyi Zhang]], [[Node.js Weather Station]]<br />
# [[user:Yifei| Yifei Li]] and [[user:Gemini91| Guanqun Wang]], [[ Kinect Project | Play games using Kinect on Beagleboard]]<br />
# [[user:Yuhasmj| Michael J. Yuhas]] and [[user:mac | Jack Ma]], [[ Multiple Partitions via U-boot | Multiple Partitions via U-boot ]]<br />
# [[user:Zitnikdj| David Zitnik]], [[ ECE497 Project: Twitter Java Application | Twitter Java Application ]]<br />
<br />
<br />
{{YoderFoot}}</div>Gfrung4https://elinux.org/index.php?title=EBC_Exercise_02_Out-of-the-Box,_Bone&diff=417776EBC Exercise 02 Out-of-the-Box, Bone2016-09-01T19:19:00Z<p>Gfrung4: </p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
{{EBC3.8}}'''These instructions are for the 3.8 kernel.''' [[EBC Exercise 02 Out-of-the-Box, Bone 3.2 Kernel]] has instructions for the 3.2 kernel.<br />
<br />
== Getting Started ==<br />
We'll be running the 3.8 kernel, check out these [http://beagleboard.org/Getting%20Started instructions] for getting started. Then come back here to get your network set up.<br />
<br />
== Internet Connection ==<br />
<br />
One of the slickest features of the Bone is its ability to access the Internet through the USB (tether) connection. You should have already used it following the instructions above. Below shows how to set up your host and Bone so the bone can access the internet through your host.<br />
<br />
=== Linux ===<br />
==== ifconfig ====<br />
Run:<br />
<br />
host$ '''ifconfig'''<br />
eth0 Link encap:Ethernet HWaddr 00:18:8b:72:b8:c2 <br />
inet addr:137.112.41.109 Bcast:137.112.41.255 Mask:255.255.255.0<br />
inet6 addr: fe80::218:8bff:fe72:b8c2/64 Scope:Link<br />
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1<br />
RX packets:8481193 errors:0 dropped:0 overruns:0 frame:0<br />
TX packets:1871287 errors:0 dropped:0 overruns:0 carrier:0<br />
collisions:0 txqueuelen:1000 <br />
RX bytes:3172154531 (3.1 GB) TX bytes:203188180 (203.1 MB)<br />
Interrupt:19 <br />
<br />
eth4 Link encap:Ethernet HWaddr d4:94:a1:39:ff:ff <br />
inet addr:192.168.7.1 Bcast:192.168.7.3 Mask:255.255.255.252<br />
inet6 addr: fe80::d694:a1ff:fe39:ffff/64 Scope:Link<br />
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1<br />
RX packets:8 errors:0 dropped:0 overruns:0 frame:0<br />
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0<br />
collisions:0 txqueuelen:1000 <br />
RX bytes:2775 (2.7 KB) TX bytes:1234 (1.2 KB)<br />
<br />
lo Link encap:Local Loopback <br />
inet addr:127.0.0.1 Mask:255.0.0.0<br />
inet6 addr: ::1/128 Scope:Host<br />
UP LOOPBACK RUNNING MTU:16436 Metric:1<br />
RX packets:37315 errors:0 dropped:0 overruns:0 frame:0<br />
TX packets:37315 errors:0 dropped:0 overruns:0 carrier:0<br />
collisions:0 txqueuelen:0 <br />
RX bytes:3665320 (3.6 MB) TX bytes:3665320 (3.6 MB)<br />
<br />
==== ssh ====<br />
You'll see a new network has appeared, '''eth4''' in my case. The IP address of your host is '''192.168.7.1'''. There's a good chance the Bone is at '''192.168.7.''2'''''. Try connecting to it.<br />
host$ '''ssh -X root@192.168.7.2'''<br />
beagle$ <br />
You are now logged into the Bone through the network. This is much faster than the serial port (.115M vs. 100M) and supports many interesting network operations. The only problem is, the Beagle doesn't know how to access the Internet through the host. Get back to the host computer by entering RETURN ~ ^Z. That is, hit RETURN, then ~ (it's up there near the ESC key) and then Ctrl-Z. This gets you back to your host, but leaves the ssh connection running. <br />
<br />
==== host.ipForward.sh ====<br />
Copy the following lines into a file call '''host.ipForward.sh'''<br />
<br />
<pre><br />
#!/bin/bash<br />
# These are the commands to run on the host to setup IP masquerading so the Beagle<br />
# can access the Internet through the USB connection.<br />
# Inspired by http://thoughtshubham.blogspot.com/2010/03/internet-over-usb-otg-on-beagleboard.html<br />
<br />
if [ $# -eq 0 ] ; then<br />
echo "Usage: $0 interface (such as eth0 or wlan0)"<br />
exit 1<br />
fi<br />
<br />
interface=$1<br />
hostAddr=192.168.7.1<br />
beagleAddr=192.168.7.2<br />
ip_forward=/proc/sys/net/ipv4/ip_forward<br />
<br />
if [ `cat $ip_forward` == 0 ]<br />
then<br />
echo "You need to set IP forwarding. Edit /etc/sysctl.conf using:"<br />
echo "$ sudo gedit /etc/sysctl.conf"<br />
echo "and uncomment the line \"net.ipv4.ip_forward=1\""<br />
echo "to enable forwarding of packets. Then run the following:"<br />
echo "$ sudo sysctl -p"<br />
exit 1<br />
else<br />
echo "IP forwarding is set on host."<br />
fi<br />
# Setup IP masquerading on the host<br />
sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o $interface -j MASQUERADE<br />
<br />
# Check to see what nameservers the host is using and copy these to the same<br />
# file on the Beagle<br />
# This makes it so you can connect to the Beagle without using your password.<br />
ssh-copy-id root@$beagleAddr<br />
# Save the /etc/resolv.conf on the Beagle in case we mess things up.<br />
ssh root@$beagleAddr "mv -n /etc/resolv.conf /etc/resolv.conf.orig"<br />
# Copy the resolv.conf file to the Beagle. Now the Beagle will use the<br />
# same name servers as the host.<br />
cat - << EOF > /tmp/resolv.conf<br />
# This is installed by host.ipForward.sh on the host<br />
# Mark A. Yoder, 25-Aug-2013<br />
search rose-hulman.edu dhcp.rose-hulman.edu wlan.rose-hulman.edu<br />
<br />
EOF<br />
<br />
# Use the campus name servers if on compus, otherwise use the Google name servers<br />
if ifconfig | grep "addr:137.112."; then<br />
cat - << EOF >> /tmp/resolv.conf<br />
nameserver 137.112.18.59<br />
nameserver 137.112.5.28<br />
nameserver 137.112.4.196<br />
EOF<br />
else<br />
cat - << EOF >> /tmp/resolv.conf<br />
nameserver 8.8.8.8<br />
nameserver 8.8.4.4<br />
EOF<br />
fi<br />
scp /tmp/resolv.conf root@$beagleAddr:/etc<br />
# Tell the beagle to use the host as the gateway.<br />
ssh root@$beagleAddr "/sbin/route add default gw $hostAddr"<br />
</pre><br />
<br />
==== Running host.ipForward.sh ====<br />
Now run:<br />
host$ '''chmod +x host.ipForward.sh'''<br />
host$ '''./host.ipForward.sh ''eth0'''''<br />
This will give you instructions on how to set up your host and will remotely set up your Beagle.<br />
Note: If you are using a wireless connection you should use<br />
<br />
host$ '''./host.ipForward.sh ''wlan0'''''<br />
<br />
Once ./host.ipForward.sh has been run you can:<br />
host$ '''fg'''<br />
ssh -X root@192.168.7.2<br />
(Hit RETURN)<br />
beagle$ '''ping google.com'''<br />
<br />
You should see Google responding. Hit Ctrl-C to stop.<br />
<br />
Congratulations! Your Beagle is now on the network through your host computer.<br />
<br />
====Troubleshooting====<br />
<br />
=====Unknown Host=====<br />
<br />
If you get an unknown host response when attempting to ping google.com, try pinging the Google DNS by IP address. Run:<br />
<br />
beagle$ '''ping 8.8.8.8'''<br />
<br />
If you now see responses, it is possible that a firewall on your host computer is blocking the Beagle's access to the DNS when attempting to ping by domain name. On Ubuntu/Mint, run:<br />
<br />
host$ '''sudo ufw disable'''<br />
Firewall stopped and disabled on system startup<br />
<br />
You should get a response, such as above, that the firewall will be disabled upon next startup. After saving anything important, restart your host through the start menu or run:<br />
<br />
host$ '''reboot'''<br />
<br />
Repeat this exercise and attempt to ping Google by domain name again. If you now receive responses, then the firewall was indeed the issue. Otherwise, the internet is your friend. Use your host computer to try and find a solution. Feel free to add solutions here when you find them<br />
<br />
<br />
<br />
=== OSX ===<br />
I haven't checked these instructions this year. Please report your results and update if needed.<br />
<br />
# go to '''System Preferences''' and select '''Network'''<br />
# You should see '''RNDIS/...Gadget'''. This is the network connection to the Beagle. Select it<br />
# Wait for the IP address '''192.168.7.1''' to appear<br />
# Click '''Show All''' and select '''Sharing'''<br />
# Select '''Internet Sharing'''<br />
# Select '''RNDIS/Ethernet Gadget'''<br />
<br />
In a terminal window connect to the serial port<br />
<br />
host$ '''screen /dev/ttyusb*B 115200'''<br />
beagle$ '''udhcpc -i usb0'''<br />
beagle$ '''ping google.com'''<br />
<br />
This is all nicely shown [http://www.youtube.com/watch?v=Cf9hnscbSK8&feature=youtu.be here] in this silent YouTube movie.<br />
<br />
Congratulations, you now have a connection from your BeagleBone to the Internet.<br />
<br />
=== Windows 7 ===<br />
I haven't checked these either. Please report results and update if needed.<br />
<br />
There are several ways of running ssh on Windows 7. Below are a couple of tools that you can use.<br />
<br />
==== Environment Setup ====<br />
<br />
You can either run ssh from a bash terminal (i.e. '''C:\Program Files\Git\Git Bash''' or '''C:\cygwin\Cygwin.bat'''), or you can add the bin directories to your path and run from the Windows command prompt (i.e. add '''C:\Program Files\Git\bin''' or '''C:\cygwin\bin''' to your path).<br />
<br />
Note: Be careful adding multiple bin directories to your path<br />
<br />
First time setup<br />
# Run '''regedit'''<br />
# Navigate to '''Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters'''<br />
# Change '''IPEnableRouter''' from 0 to 1<br />
# Close '''regedit'''<br />
# Run '''services'''<br />
# Make sure the following are set to '''Automatic''' and are started<br />
## Routing and Remote Access<br />
## Internet Connection Sharing (ICS)<br />
<br />
==== Connecting to the Internet ====<br />
<br />
After ejecting<br />
# Navigate to '''Control Panel\Network and Internet\Network and Sharing Center\Change adapter settings'''<br />
# Right click your wired/wireless internet connection and go to '''Properties'''<br />
# Go to the '''Sharing''' tab<br />
# Check the box to '''Allow other network users to connect through this computer's Internet connection'''<br />
# Select your bone's local area connection for the '''Home networking connection''' (if you cannot choose the local area connection, turn your internet connection sharing off and then back on)<br />
# Return to '''Change adapter settings'''<br />
# Right click your Bone's internet connection and go to '''Properties'''<br />
# Select '''Internet Protocol Version 4 (TCP/IPv4)''' and choose '''Properties'''<br />
# Choose '''Obtain an IP address automatically''' and '''Obtain DNS server address automatically'''<br />
<br />
Open a command prompt or bash terminal and run the following:<br />
<br />
host$ '''ping 192.168.7.2'''<br />
<br />
If this ping times out then disable and re-enable your bone's local area connection and try again. Once it works run the following:<br />
<br />
host$ '''ssh root@192.168.7.2'''<br />
<br />
Login as root and run the following:<br />
<br />
beagle$ '''echo "nameserver 8.8.8.8" > /etc/resolv.conf'''<br />
beagle$ '''echo "nameserver 8.8.8.4" >> /etc/resolv.conf'''<br />
beagle$ '''/sbin/route add default gw 192.168.7.1'''<br />
beagle$ '''ping google.com'''<br />
<br />
If 'ping:unknown host google.com' occurs, run this instead:<br />
<br />
beagle$ '''echo "nameserver 137.112.4.196" > /etc/resolv.conf'''<br />
beagle$ '''/sbin/route add default gw 192.168.7.1'''<br />
beagle$ '''ping google.com'''<br />
<br />
Congratulations, you now have a connection from your BeagleBone through your Linux host to the Internet.<br />
<br />
{{YoderFoot}}</div>Gfrung4