https://elinux.org/api.php?action=feedcontributions&user=Draneaw&feedformat=atomeLinux.org - User contributions [en]2024-03-19T06:11:14ZUser contributionsMediaWiki 1.31.0https://elinux.org/index.php?title=ECE497_Project_Remote_Web_Cam_Viewer&diff=193352ECE497 Project Remote Web Cam Viewer2012-11-14T05:55:33Z<p>Draneaw: /* Future Work */</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Draneaw|Alexander W. Drane]], [[user:Lobdeljt|John Lobdel]]<br />
<br />
== Grading Template ==<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 />
The goal of this project is to create a simple webcam based security system that allows a user to remotely view the devices web cam by navigating to a webpage. Then using buttons the user can change what camera they are viewing.<br />
<br />
Currently we have the ability to select a camera and view the stream in a remote webpage. This view uses the browser's VLC Plugin. We have tested this with 4 webcams on the xM board.<br />
<br />
Operating with four webcams hooked to the board causes many failures of the system to stream back the video information. We determined that this was due to the physical cameras and the overhead of the devices by testing the system with only two we cams where the issues experienced regularly with the four camera setup greatly reduced in frequency.<br />
<br />
Investigation of how to accomplish this task took up the bulk of our time and effort largely due to the infancy of HTML5 Related standards(sockets.io and MediaStream). In the end we decided to utilize the vlc plugin when the HTML5 proved unfeasible at its current level of development. Implementing the four cameras did seem to cause some device issues that caused the webpage to not sync with the incoming feed, but this appears to be hardware related only and not from the implementation (a further explanation is later on).<br />
<br />
== Installation Instructions ==<br />
<br />
Extra Hardware Required:<br />
*Webcam 1+ (or Playstation Eye's) Max 4 without other supplementary hardware. Best performing build currently is 2 web cams on the board. 4 makes the XM Slow down too much.<br />
<br />
*Connected to the internet.<br />
<br />
First Download the git Repository, it is located here:[https://github.com/jtlobdell/bbWebcamFeed.git WebcamFeed]<br />
<br />
<source lang="text"><br />
xm$ mkdir WebcamFeed<br />
xm$ git clone https://github.com/jtlobdell/bbWebcamFeed.git WebcamFeed<br />
xm$ cd WebcamFeed<br />
</source><br />
<br />
Install Node.js<br />
<source lang="text"><br />
xm$ opkg update<br />
xm$ opkg install nodejs<br />
</source><br />
Verify gstreamer is available and up to date<br />
<source lang="text"><br />
xm$ opkg update<br />
xm$ opkg install gstreamer<br />
</source><br />
One last thing must be done on the user computer. VLC Media Player Plugin must be available in your browser of choice. This can be done by downloading the software here: [[http://www.videolan.org/vlc/index.html]] and making sure during installation to install the browser plugin. Many modern browsers will guide you through this if you run into a page that requires a missing plugin. <br />
<br />
Now for reference type the following you will need it quite soon<br />
<source lang="text"><br />
xm$ ifconfig<br />
</source><br />
Take note of the IP Address as you will need to enter it in your user's web browser and to align to the video feed. (This is due to the address being in the client HTML file and not able to be easily informed of its source IP Address.)<br />
<br />
== User Instructions ==<br />
Move to the source directory<br />
<source lang="text"><br />
xm$ cd ./WebcamFeeds/<br />
</source><br />
<br />
Once the instillation is done the program can be ran<br />
<source lang="text"><br />
xm$ node WebcamFeed.js<br />
</source><br />
Now navigate on the user computer using a web browser to your computers IP Address. Once there click on the link to the video feed page. The program will start and video should play.<br />
<br />
NOTE: When changing video feeds the XM will randomly not load and play the feed. This we believe is due to the physical limitations of the hardware. We tested this by attaching 4 webcams to the board and found that the failure rate went up drastically. When the extra 2 webcams were removed the failure rate returned to where it was before. Since the program only ever calls one feed at a time(it changes which device it targets) this has to be a memory or hardware related issue and not due to the software.<br />
<br />
At the top of the screen is a text box which can be entered the desired video device. Each camera is added sequentially starting at 0. Below the Set Cam button are four buttons for convenience. These function identically as entering the number's 0 though 3 into the text box and clicking Set Cam for each number.<br />
<br />
== Highlights ==<br />
<br />
A single video is captured from a web cam and streamed to a web page. The video capture device can be selected from the same page.<br />
<br />
This program implements node.js and GStreamer working together to accomplish the video output and control over which video device to be viewed.<br />
<br />
The software allows for as many video capture devices (webcams) as can be connected to the device. In the case of the Beagle Board xM, up to four cameras can be used. We only access one webcam at any given time and so the only increasing overhead on the system is that which is associated with the individual USB webcam's. <br />
<br />
[http://youtu.be/kPK35JGzazY Here is a YouTube video demo of the four camera operation].<br />
<br />
This video starts out very slow and illustrates some of the hardware related issues that were encountered. While the most effective implementation currently is the two camera version we wished to show that four camera feeds could be accessed on the xM.<br />
<br />
== Theory of Operation ==<br />
<br />
The project uses [http://gstreamer.freedesktop.org/ GStreamer] to capture video from a webcam, convert it to video/ogg format, and stream it through Transmission Control Protocol (TCP). A diagram of the GStreamer pipeline is shown below.<br />
<br />
TODO add picture of GStreamer pipeline<br />
<br />
The client system connects to a node.js server running on the xM. The server embeds the video stream into the web page and also contains controls for selecting a webcam for the stream.<br />
<br />
When the server begins running the node.js script, it launches the GStreamer pipeline discussed above. When the client connects, they receive a web page containing controls for the video source and the embedded video that gets played using the [http://www.videolan.org/vlc/index.html VLC] web plugin.<br />
<br />
When the client uses the controls to change the video source, the server kills the current GStreamer process and launches a new one using the new video source. It then makes the client's page refresh to make the embedded video player use the new stream.<br />
<br />
A block diagram of the system is shown below.<br />
<br />
TODO add picture of block diagram<br />
<br />
== Work Breakdown ==<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
*Research- Research took up the bulk of our time and effort on this project due to the obscure nature of video streaming on the web using HTML5 and related tools. Most sources online advise you to use a plugin or third party software and treat the idea of using Javascript of HTML5 for this task as a taboo subject. <br />
**GStreamer Implementation- John Lobdel investigated using GStreamer to acomplish this project. This implementation in the end proved effective and the easiest to implement. <br />
**HTML5/JavaScript Implementation - Alex Drane investigated using a pure HTML5 implementation in order to not require anything to be done by the user to view the video streams. From initial research this appeared to be something that could be done quite easily. After considerable research wading through the draft standards that have been developed I found very little sample code or examples that pertained to remote video viewing. The easiest implementation I found was using it to create a 1-to-1 chat application. This is not suitable for our needs.<br />
<br />
*Program Creation- John Lobdel used his research to get gstreamer to stream a video or camera input onto port 8081 that could then be read by the VLC Media Player on a remote computer. The further integration of this into a program was done with the introduction of the VLC-plugin in an html document. The final program was jointly compiled by both John and Alex.<br />
<br />
The program creation went quite fast after a working method was discovered by John. Then it was a matter of putting the pieces together. The program consists of a node.js client server using the example provided in the examples/node.js folder, which provides the HTML server and controls for which video to stream. We embedded the vlc viewer into the page and pointed it to the location where the video would be streamed by an external function call in the .js file. This allows for a simplified approach to running the needed utilities without having to port code into the java script language.<br />
<br />
== Future Work ==<br />
<br />
Adding video capture would add true security camera capabilities to this system. In addition adding motion detection into the video selection stream would be interesting. Though this might be too much for the XM's hardware. <br />
<br />
Having a webpage that displayed all of the video feeds at once would also be an interesting feature but this could over tax the XM's hardware or internet connection.<br />
<br />
Figuring out how to implement this project with only HTML5 and make it so that no plugin is required by the end user was Alex's original plan but the maturity of the knowledge base for HTML5 is not adequate to accomplish this task at this time. But in the future when many of the draft standards are finished this project could be implemented without the vlc-plugin.<br />
<br />
Solving the interesting problem with the random stream failure. This issue arises when switching between streams. Occasionally the video receiver does not receive the stream even though the stream is playing across the network. From experimentation we found that as cameras were added the performance of the entire program greatly decreased. Since we only access one camera at a time the only explanation we could find was that the OS was devoting resources to the devices when they were connected thus creating a much greater overhead as cameras were added. When the cameras were disconnected the performance returned to their previous levels. With four cameras operating a noticeable increase in stream failures was observed. With only two cameras operating about 1/5 of attempts would be unsuccessful. With four cameras the failure rate was significantly higher (as much as 1/3 of attempts would fail). One possible explanation of this is the overhead causing a slow down in setup time for the video out thread compared to the load up time of the browser. While this is set up to go first if the system hanged due to lack of resources this could cause the video stream to start after the html file stopped looking for it. Occasionally the camera just won't turn on. We have found that signaling it again usually fixes the problem without much effort. After trying to figure out what was causing the problem we could not definitively pin down the root cause of the problem and we found no simple or effective solution for it but would like to see it fixed.<br />
<br />
== Conclusions ==<br />
<br />
This project was quite surprising by how difficult it is to do using the new HTML5 standards. Through the research we learned that there were currently no simple implementations of what we wished to do with this project. We had originally assumed that something as common as video streaming would have a direct implementation in the new standard but in fact it is far more restricted then we expected. By splitting each of our focuses during the research stage we were able to research the use of the bleeding edge of development and the use of the common implementation and then whoever found an implementation that worked first would allow the project to progress. In addition our parallel research gave us greater insight into the potential ways of accomplishing this task then if we had both focused on the HTML5 implementation and did not allow the project to reach a dead end as it would have if we had both focused on the HTML5 method. <br />
<br />
In the end we did settle on using the vlc-plugin to capture the outgoing stream that John setup using gstreamer. This worked exactly as we wished it to without all of the syntax fighting that took place when trying to port the HTML5 sample code into code we had the codex's for(i.e. websocket to socket.io syntax Note: websocket wanted a Microsoft related XML file which after searching for could not be found when we tried to just use websocket). <br />
<br />
Many of the ideas listed in Future Work would be amazing addon's to the project that would greatly expand and enhance this projects implementation.<br />
<br />
{{YoderFoot}}</div>Draneawhttps://elinux.org/index.php?title=ECE497_Project_Remote_Web_Cam_Viewer&diff=193346ECE497 Project Remote Web Cam Viewer2012-11-14T05:54:56Z<p>Draneaw: /* Future Work */</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Draneaw|Alexander W. Drane]], [[user:Lobdeljt|John Lobdel]]<br />
<br />
== Grading Template ==<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 />
The goal of this project is to create a simple webcam based security system that allows a user to remotely view the devices web cam by navigating to a webpage. Then using buttons the user can change what camera they are viewing.<br />
<br />
Currently we have the ability to select a camera and view the stream in a remote webpage. This view uses the browser's VLC Plugin. We have tested this with 4 webcams on the xM board.<br />
<br />
Operating with four webcams hooked to the board causes many failures of the system to stream back the video information. We determined that this was due to the physical cameras and the overhead of the devices by testing the system with only two we cams where the issues experienced regularly with the four camera setup greatly reduced in frequency.<br />
<br />
Investigation of how to accomplish this task took up the bulk of our time and effort largely due to the infancy of HTML5 Related standards(sockets.io and MediaStream). In the end we decided to utilize the vlc plugin when the HTML5 proved unfeasible at its current level of development. Implementing the four cameras did seem to cause some device issues that caused the webpage to not sync with the incoming feed, but this appears to be hardware related only and not from the implementation (a further explanation is later on).<br />
<br />
== Installation Instructions ==<br />
<br />
Extra Hardware Required:<br />
*Webcam 1+ (or Playstation Eye's) Max 4 without other supplementary hardware. Best performing build currently is 2 web cams on the board. 4 makes the XM Slow down too much.<br />
<br />
*Connected to the internet.<br />
<br />
First Download the git Repository, it is located here:[https://github.com/jtlobdell/bbWebcamFeed.git WebcamFeed]<br />
<br />
<source lang="text"><br />
xm$ mkdir WebcamFeed<br />
xm$ git clone https://github.com/jtlobdell/bbWebcamFeed.git WebcamFeed<br />
xm$ cd WebcamFeed<br />
</source><br />
<br />
Install Node.js<br />
<source lang="text"><br />
xm$ opkg update<br />
xm$ opkg install nodejs<br />
</source><br />
Verify gstreamer is available and up to date<br />
<source lang="text"><br />
xm$ opkg update<br />
xm$ opkg install gstreamer<br />
</source><br />
One last thing must be done on the user computer. VLC Media Player Plugin must be available in your browser of choice. This can be done by downloading the software here: [[http://www.videolan.org/vlc/index.html]] and making sure during installation to install the browser plugin. Many modern browsers will guide you through this if you run into a page that requires a missing plugin. <br />
<br />
Now for reference type the following you will need it quite soon<br />
<source lang="text"><br />
xm$ ifconfig<br />
</source><br />
Take note of the IP Address as you will need to enter it in your user's web browser and to align to the video feed. (This is due to the address being in the client HTML file and not able to be easily informed of its source IP Address.)<br />
<br />
== User Instructions ==<br />
Move to the source directory<br />
<source lang="text"><br />
xm$ cd ./WebcamFeeds/<br />
</source><br />
<br />
Once the instillation is done the program can be ran<br />
<source lang="text"><br />
xm$ node WebcamFeed.js<br />
</source><br />
Now navigate on the user computer using a web browser to your computers IP Address. Once there click on the link to the video feed page. The program will start and video should play.<br />
<br />
NOTE: When changing video feeds the XM will randomly not load and play the feed. This we believe is due to the physical limitations of the hardware. We tested this by attaching 4 webcams to the board and found that the failure rate went up drastically. When the extra 2 webcams were removed the failure rate returned to where it was before. Since the program only ever calls one feed at a time(it changes which device it targets) this has to be a memory or hardware related issue and not due to the software.<br />
<br />
At the top of the screen is a text box which can be entered the desired video device. Each camera is added sequentially starting at 0. Below the Set Cam button are four buttons for convenience. These function identically as entering the number's 0 though 3 into the text box and clicking Set Cam for each number.<br />
<br />
== Highlights ==<br />
<br />
A single video is captured from a web cam and streamed to a web page. The video capture device can be selected from the same page.<br />
<br />
This program implements node.js and GStreamer working together to accomplish the video output and control over which video device to be viewed.<br />
<br />
The software allows for as many video capture devices (webcams) as can be connected to the device. In the case of the Beagle Board xM, up to four cameras can be used. We only access one webcam at any given time and so the only increasing overhead on the system is that which is associated with the individual USB webcam's. <br />
<br />
[http://youtu.be/kPK35JGzazY Here is a YouTube video demo of the four camera operation].<br />
<br />
This video starts out very slow and illustrates some of the hardware related issues that were encountered. While the most effective implementation currently is the two camera version we wished to show that four camera feeds could be accessed on the xM.<br />
<br />
== Theory of Operation ==<br />
<br />
The project uses [http://gstreamer.freedesktop.org/ GStreamer] to capture video from a webcam, convert it to video/ogg format, and stream it through Transmission Control Protocol (TCP). A diagram of the GStreamer pipeline is shown below.<br />
<br />
TODO add picture of GStreamer pipeline<br />
<br />
The client system connects to a node.js server running on the xM. The server embeds the video stream into the web page and also contains controls for selecting a webcam for the stream.<br />
<br />
When the server begins running the node.js script, it launches the GStreamer pipeline discussed above. When the client connects, they receive a web page containing controls for the video source and the embedded video that gets played using the [http://www.videolan.org/vlc/index.html VLC] web plugin.<br />
<br />
When the client uses the controls to change the video source, the server kills the current GStreamer process and launches a new one using the new video source. It then makes the client's page refresh to make the embedded video player use the new stream.<br />
<br />
A block diagram of the system is shown below.<br />
<br />
TODO add picture of block diagram<br />
<br />
== Work Breakdown ==<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
*Research- Research took up the bulk of our time and effort on this project due to the obscure nature of video streaming on the web using HTML5 and related tools. Most sources online advise you to use a plugin or third party software and treat the idea of using Javascript of HTML5 for this task as a taboo subject. <br />
**GStreamer Implementation- John Lobdel investigated using GStreamer to acomplish this project. This implementation in the end proved effective and the easiest to implement. <br />
**HTML5/JavaScript Implementation - Alex Drane investigated using a pure HTML5 implementation in order to not require anything to be done by the user to view the video streams. From initial research this appeared to be something that could be done quite easily. After considerable research wading through the draft standards that have been developed I found very little sample code or examples that pertained to remote video viewing. The easiest implementation I found was using it to create a 1-to-1 chat application. This is not suitable for our needs.<br />
<br />
*Program Creation- John Lobdel used his research to get gstreamer to stream a video or camera input onto port 8081 that could then be read by the VLC Media Player on a remote computer. The further integration of this into a program was done with the introduction of the VLC-plugin in an html document. The final program was jointly compiled by both John and Alex.<br />
<br />
The program creation went quite fast after a working method was discovered by John. Then it was a matter of putting the pieces together. The program consists of a node.js client server using the example provided in the examples/node.js folder, which provides the HTML server and controls for which video to stream. We embedded the vlc viewer into the page and pointed it to the location where the video would be streamed by an external function call in the .js file. This allows for a simplified approach to running the needed utilities without having to port code into the java script language.<br />
<br />
== Future Work ==<br />
<br />
Adding video capture would add true security camera capabilities to this system. In addition adding motion detection into the video selection stream would be interesting. Though this might be too much for the XM's hardware. <br />
<br />
Having a webpage that displayed all of the video feeds at once would also be an interesting feature but this could over tax the XM's hardware or internet connection.<br />
<br />
Figuring out how to implement this project with only HTML5 and make it so that no plugin is required by the end user was Alex's original plan but the maturity of the knowledge base for HTML5 is not adequate to accomplish this task at this time. But in the future when many of the draft standards are finished this project could be implemented without the vlc-plugin.<br />
<br />
Solving the interesting problem with the random stream failure. This issue arises when switching between streams. Occasionally the video receiver does not receive the stream even though the stream is playing across the network. From experimentation we found that as cameras were added the performance of the entire program greatly decreased. Since we only access one camera at a time the only explanation we could find was that the OS was devoting resources to the devices when they were connected thus creating a much greater overhead as cameras were added. When the cameras were disconnected the performance returned to their previous levels. With four cameras operating a noticeable increase in stream failures was observed. With only two cameras operating about 1/5 of attempts would be unsuccessful. With four cameras the failure rate was significantly higher (as much as 1/3 of attempts would fail). One possible explanation of this is the overhead causing a slow down in setup time for the video out thread compared to the load up time of the browser. While this is set up to go first if the system hanged due to lack of resources this could cause the video stream to start after the html file stopped looking for it. Occasionally the camera just won't turn on. We have found that signaling it again usually fixes the problem without much effort. After trying to figure out what was causing the problem we could not definitively pin down the root cause of the problem and we found no simple or effective solution for this problem but would like to see it fixed.<br />
<br />
== Conclusions ==<br />
<br />
This project was quite surprising by how difficult it is to do using the new HTML5 standards. Through the research we learned that there were currently no simple implementations of what we wished to do with this project. We had originally assumed that something as common as video streaming would have a direct implementation in the new standard but in fact it is far more restricted then we expected. By splitting each of our focuses during the research stage we were able to research the use of the bleeding edge of development and the use of the common implementation and then whoever found an implementation that worked first would allow the project to progress. In addition our parallel research gave us greater insight into the potential ways of accomplishing this task then if we had both focused on the HTML5 implementation and did not allow the project to reach a dead end as it would have if we had both focused on the HTML5 method. <br />
<br />
In the end we did settle on using the vlc-plugin to capture the outgoing stream that John setup using gstreamer. This worked exactly as we wished it to without all of the syntax fighting that took place when trying to port the HTML5 sample code into code we had the codex's for(i.e. websocket to socket.io syntax Note: websocket wanted a Microsoft related XML file which after searching for could not be found when we tried to just use websocket). <br />
<br />
Many of the ideas listed in Future Work would be amazing addon's to the project that would greatly expand and enhance this projects implementation.<br />
<br />
{{YoderFoot}}</div>Draneawhttps://elinux.org/index.php?title=ECE497_Project_Remote_Web_Cam_Viewer&diff=193322ECE497 Project Remote Web Cam Viewer2012-11-14T05:49:04Z<p>Draneaw: /* User Instructions */</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Draneaw|Alexander W. Drane]], [[user:Lobdeljt|John Lobdel]]<br />
<br />
== Grading Template ==<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 />
The goal of this project is to create a simple webcam based security system that allows a user to remotely view the devices web cam by navigating to a webpage. Then using buttons the user can change what camera they are viewing.<br />
<br />
Currently we have the ability to select a camera and view the stream in a remote webpage. This view uses the browser's VLC Plugin. We have tested this with 4 webcams on the xM board.<br />
<br />
Operating with four webcams hooked to the board causes many failures of the system to stream back the video information. We determined that this was due to the physical cameras and the overhead of the devices by testing the system with only two we cams where the issues experienced regularly with the four camera setup greatly reduced in frequency.<br />
<br />
Investigation of how to accomplish this task took up the bulk of our time and effort largely due to the infancy of HTML5 Related standards(sockets.io and MediaStream). In the end we decided to utilize the vlc plugin when the HTML5 proved unfeasible at its current level of development. Implementing the four cameras did seem to cause some device issues that caused the webpage to not sync with the incoming feed, but this appears to be hardware related only and not from the implementation (a further explanation is later on).<br />
<br />
== Installation Instructions ==<br />
<br />
Extra Hardware Required:<br />
*Webcam 1+ (or Playstation Eye's) Max 4 without other supplementary hardware. Best performing build currently is 2 web cams on the board. 4 makes the XM Slow down too much.<br />
<br />
*Connected to the internet.<br />
<br />
First Download the git Repository, it is located here:[https://github.com/jtlobdell/bbWebcamFeed.git WebcamFeed]<br />
<br />
<source lang="text"><br />
xm$ mkdir WebcamFeed<br />
xm$ git clone https://github.com/jtlobdell/bbWebcamFeed.git WebcamFeed<br />
xm$ cd WebcamFeed<br />
</source><br />
<br />
Install Node.js<br />
<source lang="text"><br />
xm$ opkg update<br />
xm$ opkg install nodejs<br />
</source><br />
Verify gstreamer is available and up to date<br />
<source lang="text"><br />
xm$ opkg update<br />
xm$ opkg install gstreamer<br />
</source><br />
One last thing must be done on the user computer. VLC Media Player Plugin must be available in your browser of choice. This can be done by downloading the software here: [[http://www.videolan.org/vlc/index.html]] and making sure during installation to install the browser plugin. Many modern browsers will guide you through this if you run into a page that requires a missing plugin. <br />
<br />
Now for reference type the following you will need it quite soon<br />
<source lang="text"><br />
xm$ ifconfig<br />
</source><br />
Take note of the IP Address as you will need to enter it in your user's web browser and to align to the video feed. (This is due to the address being in the client HTML file and not able to be easily informed of its source IP Address.)<br />
<br />
== User Instructions ==<br />
Move to the source directory<br />
<source lang="text"><br />
xm$ cd ./WebcamFeeds/<br />
</source><br />
<br />
Once the instillation is done the program can be ran<br />
<source lang="text"><br />
xm$ node WebcamFeed.js<br />
</source><br />
Now navigate on the user computer using a web browser to your computers IP Address. Once there click on the link to the video feed page. The program will start and video should play.<br />
<br />
NOTE: When changing video feeds the XM will randomly not load and play the feed. This we believe is due to the physical limitations of the hardware. We tested this by attaching 4 webcams to the board and found that the failure rate went up drastically. When the extra 2 webcams were removed the failure rate returned to where it was before. Since the program only ever calls one feed at a time(it changes which device it targets) this has to be a memory or hardware related issue and not due to the software.<br />
<br />
At the top of the screen is a text box which can be entered the desired video device. Each camera is added sequentially starting at 0. Below the Set Cam button are four buttons for convenience. These function identically as entering the number's 0 though 3 into the text box and clicking Set Cam for each number.<br />
<br />
== Highlights ==<br />
<br />
A single video is captured from a web cam and streamed to a web page. The video capture device can be selected from the same page.<br />
<br />
This program implements node.js and GStreamer working together to accomplish the video output and control over which video device to be viewed.<br />
<br />
The software allows for as many video capture devices (webcams) as can be connected to the device. In the case of the Beagle Board xM, up to four cameras can be used. We only access one webcam at any given time and so the only increasing overhead on the system is that which is associated with the individual USB webcam's. <br />
<br />
[http://youtu.be/kPK35JGzazY Here is a YouTube video demo of the four camera operation].<br />
<br />
This video starts out very slow and illustrates some of the hardware related issues that were encountered. While the most effective implementation currently is the two camera version we wished to show that four camera feeds could be accessed on the xM.<br />
<br />
== Theory of Operation ==<br />
<br />
The project uses [http://gstreamer.freedesktop.org/ GStreamer] to capture video from a webcam, convert it to video/ogg format, and stream it through Transmission Control Protocol (TCP). A diagram of the GStreamer pipeline is shown below.<br />
<br />
TODO add picture of GStreamer pipeline<br />
<br />
The client system connects to a node.js server running on the xM. The server embeds the video stream into the web page and also contains controls for selecting a webcam for the stream.<br />
<br />
When the server begins running the node.js script, it launches the GStreamer pipeline discussed above. When the client connects, they receive a web page containing controls for the video source and the embedded video that gets played using the [http://www.videolan.org/vlc/index.html VLC] web plugin.<br />
<br />
When the client uses the controls to change the video source, the server kills the current GStreamer process and launches a new one using the new video source. It then makes the client's page refresh to make the embedded video player use the new stream.<br />
<br />
A block diagram of the system is shown below.<br />
<br />
TODO add picture of block diagram<br />
<br />
== Work Breakdown ==<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
*Research- Research took up the bulk of our time and effort on this project due to the obscure nature of video streaming on the web using HTML5 and related tools. Most sources online advise you to use a plugin or third party software and treat the idea of using Javascript of HTML5 for this task as a taboo subject. <br />
**GStreamer Implementation- John Lobdel investigated using GStreamer to acomplish this project. This implementation in the end proved effective and the easiest to implement. <br />
**HTML5/JavaScript Implementation - Alex Drane investigated using a pure HTML5 implementation in order to not require anything to be done by the user to view the video streams. From initial research this appeared to be something that could be done quite easily. After considerable research wading through the draft standards that have been developed I found very little sample code or examples that pertained to remote video viewing. The easiest implementation I found was using it to create a 1-to-1 chat application. This is not suitable for our needs.<br />
<br />
*Program Creation- John Lobdel used his research to get gstreamer to stream a video or camera input onto port 8081 that could then be read by the VLC Media Player on a remote computer. The further integration of this into a program was done with the introduction of the VLC-plugin in an html document. The final program was jointly compiled by both John and Alex.<br />
<br />
The program creation went quite fast after a working method was discovered by John. Then it was a matter of putting the pieces together. The program consists of a node.js client server using the example provided in the examples/node.js folder, which provides the HTML server and controls for which video to stream. We embedded the vlc viewer into the page and pointed it to the location where the video would be streamed by an external function call in the .js file. This allows for a simplified approach to running the needed utilities without having to port code into the java script language.<br />
<br />
== Future Work ==<br />
<br />
Adding video capture would add true security camera capabilities to this system. In addition adding motion detection into the video selection stream would be interesting. Though this might be too much for the XM's hardware. <br />
<br />
Having a webpage that displayed all of the video feeds at once would also be an interesting feature but this could over tax the XM's hardware or internet connection.<br />
<br />
Figuring out how to implement this project with only HTML5 and make it so that no plugin is required by the end user was Alex's original plan but the maturity of the knowledge base for HTML5 is not adequate to accomplish this task at this time. But in the future when many of the draft standards are finished this project could be implemented without the vlc-plugin.<br />
<br />
Solving the interesting problem with the random stream failure. This issue arises when switching between streams. Occasionally the video receiver does not receive the stream even though the stream is playing across the network. From experimentation we found that as cameras were added the performance of the entire program greatly decreased. Since we only access one camera at a time the only explanation we could find was that the OS was devoting resources to the devices when they were connected thus creating a much greater overhead as cameras were added. When the cameras were disconnected the performance returned to their previous levels. With four cameras operating a noticeable increase in stream failures was observed. With only two cameras operating about 1/5 of attempts would be unsuccessful. With four cameras the failure rate was significantly higher (as much as 1/3 of attempts would fail). One possible explanation of this is the overhead causing a slow down in setup time for the video out thread compared to the load up time of the browser. While this is set up to go first if the system hanged due to lack of resources this could cause the video stream to start after the html file stopped looking for it. We found no simple or effective solution for this problem but would like to see it fixed.<br />
<br />
== Conclusions ==<br />
<br />
This project was quite surprising by how difficult it is to do using the new HTML5 standards. Through the research we learned that there were currently no simple implementations of what we wished to do with this project. We had originally assumed that something as common as video streaming would have a direct implementation in the new standard but in fact it is far more restricted then we expected. By splitting each of our focuses during the research stage we were able to research the use of the bleeding edge of development and the use of the common implementation and then whoever found an implementation that worked first would allow the project to progress. In addition our parallel research gave us greater insight into the potential ways of accomplishing this task then if we had both focused on the HTML5 implementation and did not allow the project to reach a dead end as it would have if we had both focused on the HTML5 method. <br />
<br />
In the end we did settle on using the vlc-plugin to capture the outgoing stream that John setup using gstreamer. This worked exactly as we wished it to without all of the syntax fighting that took place when trying to port the HTML5 sample code into code we had the codex's for(i.e. websocket to socket.io syntax Note: websocket wanted a Microsoft related XML file which after searching for could not be found when we tried to just use websocket). <br />
<br />
Many of the ideas listed in Future Work would be amazing addon's to the project that would greatly expand and enhance this projects implementation.<br />
<br />
{{YoderFoot}}</div>Draneawhttps://elinux.org/index.php?title=ECE497_Project_Remote_Web_Cam_Viewer&diff=193316ECE497 Project Remote Web Cam Viewer2012-11-14T05:48:19Z<p>Draneaw: /* User Instructions */</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Draneaw|Alexander W. Drane]], [[user:Lobdeljt|John Lobdel]]<br />
<br />
== Grading Template ==<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 />
The goal of this project is to create a simple webcam based security system that allows a user to remotely view the devices web cam by navigating to a webpage. Then using buttons the user can change what camera they are viewing.<br />
<br />
Currently we have the ability to select a camera and view the stream in a remote webpage. This view uses the browser's VLC Plugin. We have tested this with 4 webcams on the xM board.<br />
<br />
Operating with four webcams hooked to the board causes many failures of the system to stream back the video information. We determined that this was due to the physical cameras and the overhead of the devices by testing the system with only two we cams where the issues experienced regularly with the four camera setup greatly reduced in frequency.<br />
<br />
Investigation of how to accomplish this task took up the bulk of our time and effort largely due to the infancy of HTML5 Related standards(sockets.io and MediaStream). In the end we decided to utilize the vlc plugin when the HTML5 proved unfeasible at its current level of development. Implementing the four cameras did seem to cause some device issues that caused the webpage to not sync with the incoming feed, but this appears to be hardware related only and not from the implementation (a further explanation is later on).<br />
<br />
== Installation Instructions ==<br />
<br />
Extra Hardware Required:<br />
*Webcam 1+ (or Playstation Eye's) Max 4 without other supplementary hardware. Best performing build currently is 2 web cams on the board. 4 makes the XM Slow down too much.<br />
<br />
*Connected to the internet.<br />
<br />
First Download the git Repository, it is located here:[https://github.com/jtlobdell/bbWebcamFeed.git WebcamFeed]<br />
<br />
<source lang="text"><br />
xm$ mkdir WebcamFeed<br />
xm$ git clone https://github.com/jtlobdell/bbWebcamFeed.git WebcamFeed<br />
xm$ cd WebcamFeed<br />
</source><br />
<br />
Install Node.js<br />
<source lang="text"><br />
xm$ opkg update<br />
xm$ opkg install nodejs<br />
</source><br />
Verify gstreamer is available and up to date<br />
<source lang="text"><br />
xm$ opkg update<br />
xm$ opkg install gstreamer<br />
</source><br />
One last thing must be done on the user computer. VLC Media Player Plugin must be available in your browser of choice. This can be done by downloading the software here: [[http://www.videolan.org/vlc/index.html]] and making sure during installation to install the browser plugin. Many modern browsers will guide you through this if you run into a page that requires a missing plugin. <br />
<br />
Now for reference type the following you will need it quite soon<br />
<source lang="text"><br />
xm$ ifconfig<br />
</source><br />
Take note of the IP Address as you will need to enter it in your user's web browser and to align to the video feed. (This is due to the address being in the client HTML file and not able to be easily informed of its source IP Address.)<br />
<br />
== User Instructions ==<br />
Move to the source directory<br />
xm$ '''cd ./WebcamFeeds/'''<br />
<br />
Once the instillation is done the program can be ran<br />
<source lang="text"><br />
xm$ node WebcamFeed.js<br />
</source><br />
Now navigate on the user computer using a web browser to your computers IP Address. Once there click on the link to the video feed page. The program will start and video should play.<br />
<br />
NOTE: When changing video feeds the XM will randomly not load and play the feed. This we believe is due to the physical limitations of the hardware. We tested this by attaching 4 webcams to the board and found that the failure rate went up drastically. When the extra 2 webcams were removed the failure rate returned to where it was before. Since the program only ever calls one feed at a time(it changes which device it targets) this has to be a memory or hardware related issue and not due to the software.<br />
<br />
At the top of the screen is a text box which can be entered the desired video device. Each camera is added sequentially starting at 0. Below the Set Cam button are four buttons for convenience. These function identically as entering the number's 0 though 3 into the text box and clicking Set Cam for each number.<br />
<br />
== Highlights ==<br />
<br />
A single video is captured from a web cam and streamed to a web page. The video capture device can be selected from the same page.<br />
<br />
This program implements node.js and GStreamer working together to accomplish the video output and control over which video device to be viewed.<br />
<br />
The software allows for as many video capture devices (webcams) as can be connected to the device. In the case of the Beagle Board xM, up to four cameras can be used. We only access one webcam at any given time and so the only increasing overhead on the system is that which is associated with the individual USB webcam's. <br />
<br />
[http://youtu.be/kPK35JGzazY Here is a YouTube video demo of the four camera operation].<br />
<br />
This video starts out very slow and illustrates some of the hardware related issues that were encountered. While the most effective implementation currently is the two camera version we wished to show that four camera feeds could be accessed on the xM.<br />
<br />
== Theory of Operation ==<br />
<br />
The project uses [http://gstreamer.freedesktop.org/ GStreamer] to capture video from a webcam, convert it to video/ogg format, and stream it through Transmission Control Protocol (TCP). A diagram of the GStreamer pipeline is shown below.<br />
<br />
TODO add picture of GStreamer pipeline<br />
<br />
The client system connects to a node.js server running on the xM. The server embeds the video stream into the web page and also contains controls for selecting a webcam for the stream.<br />
<br />
When the server begins running the node.js script, it launches the GStreamer pipeline discussed above. When the client connects, they receive a web page containing controls for the video source and the embedded video that gets played using the [http://www.videolan.org/vlc/index.html VLC] web plugin.<br />
<br />
When the client uses the controls to change the video source, the server kills the current GStreamer process and launches a new one using the new video source. It then makes the client's page refresh to make the embedded video player use the new stream.<br />
<br />
A block diagram of the system is shown below.<br />
<br />
TODO add picture of block diagram<br />
<br />
== Work Breakdown ==<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
*Research- Research took up the bulk of our time and effort on this project due to the obscure nature of video streaming on the web using HTML5 and related tools. Most sources online advise you to use a plugin or third party software and treat the idea of using Javascript of HTML5 for this task as a taboo subject. <br />
**GStreamer Implementation- John Lobdel investigated using GStreamer to acomplish this project. This implementation in the end proved effective and the easiest to implement. <br />
**HTML5/JavaScript Implementation - Alex Drane investigated using a pure HTML5 implementation in order to not require anything to be done by the user to view the video streams. From initial research this appeared to be something that could be done quite easily. After considerable research wading through the draft standards that have been developed I found very little sample code or examples that pertained to remote video viewing. The easiest implementation I found was using it to create a 1-to-1 chat application. This is not suitable for our needs.<br />
<br />
*Program Creation- John Lobdel used his research to get gstreamer to stream a video or camera input onto port 8081 that could then be read by the VLC Media Player on a remote computer. The further integration of this into a program was done with the introduction of the VLC-plugin in an html document. The final program was jointly compiled by both John and Alex.<br />
<br />
The program creation went quite fast after a working method was discovered by John. Then it was a matter of putting the pieces together. The program consists of a node.js client server using the example provided in the examples/node.js folder, which provides the HTML server and controls for which video to stream. We embedded the vlc viewer into the page and pointed it to the location where the video would be streamed by an external function call in the .js file. This allows for a simplified approach to running the needed utilities without having to port code into the java script language.<br />
<br />
== Future Work ==<br />
<br />
Adding video capture would add true security camera capabilities to this system. In addition adding motion detection into the video selection stream would be interesting. Though this might be too much for the XM's hardware. <br />
<br />
Having a webpage that displayed all of the video feeds at once would also be an interesting feature but this could over tax the XM's hardware or internet connection.<br />
<br />
Figuring out how to implement this project with only HTML5 and make it so that no plugin is required by the end user was Alex's original plan but the maturity of the knowledge base for HTML5 is not adequate to accomplish this task at this time. But in the future when many of the draft standards are finished this project could be implemented without the vlc-plugin.<br />
<br />
Solving the interesting problem with the random stream failure. This issue arises when switching between streams. Occasionally the video receiver does not receive the stream even though the stream is playing across the network. From experimentation we found that as cameras were added the performance of the entire program greatly decreased. Since we only access one camera at a time the only explanation we could find was that the OS was devoting resources to the devices when they were connected thus creating a much greater overhead as cameras were added. When the cameras were disconnected the performance returned to their previous levels. With four cameras operating a noticeable increase in stream failures was observed. With only two cameras operating about 1/5 of attempts would be unsuccessful. With four cameras the failure rate was significantly higher (as much as 1/3 of attempts would fail). One possible explanation of this is the overhead causing a slow down in setup time for the video out thread compared to the load up time of the browser. While this is set up to go first if the system hanged due to lack of resources this could cause the video stream to start after the html file stopped looking for it. We found no simple or effective solution for this problem but would like to see it fixed.<br />
<br />
== Conclusions ==<br />
<br />
This project was quite surprising by how difficult it is to do using the new HTML5 standards. Through the research we learned that there were currently no simple implementations of what we wished to do with this project. We had originally assumed that something as common as video streaming would have a direct implementation in the new standard but in fact it is far more restricted then we expected. By splitting each of our focuses during the research stage we were able to research the use of the bleeding edge of development and the use of the common implementation and then whoever found an implementation that worked first would allow the project to progress. In addition our parallel research gave us greater insight into the potential ways of accomplishing this task then if we had both focused on the HTML5 implementation and did not allow the project to reach a dead end as it would have if we had both focused on the HTML5 method. <br />
<br />
In the end we did settle on using the vlc-plugin to capture the outgoing stream that John setup using gstreamer. This worked exactly as we wished it to without all of the syntax fighting that took place when trying to port the HTML5 sample code into code we had the codex's for(i.e. websocket to socket.io syntax Note: websocket wanted a Microsoft related XML file which after searching for could not be found when we tried to just use websocket). <br />
<br />
Many of the ideas listed in Future Work would be amazing addon's to the project that would greatly expand and enhance this projects implementation.<br />
<br />
{{YoderFoot}}</div>Draneawhttps://elinux.org/index.php?title=ECE497_Project_Remote_Web_Cam_Viewer&diff=193310ECE497 Project Remote Web Cam Viewer2012-11-14T05:43:50Z<p>Draneaw: /* Highlights */</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Draneaw|Alexander W. Drane]], [[user:Lobdeljt|John Lobdel]]<br />
<br />
== Grading Template ==<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 />
The goal of this project is to create a simple webcam based security system that allows a user to remotely view the devices web cam by navigating to a webpage. Then using buttons the user can change what camera they are viewing.<br />
<br />
Currently we have the ability to select a camera and view the stream in a remote webpage. This view uses the browser's VLC Plugin. We have tested this with 4 webcams on the xM board.<br />
<br />
Operating with four webcams hooked to the board causes many failures of the system to stream back the video information. We determined that this was due to the physical cameras and the overhead of the devices by testing the system with only two we cams where the issues experienced regularly with the four camera setup greatly reduced in frequency.<br />
<br />
Investigation of how to accomplish this task took up the bulk of our time and effort largely due to the infancy of HTML5 Related standards(sockets.io and MediaStream). In the end we decided to utilize the vlc plugin when the HTML5 proved unfeasible at its current level of development. Implementing the four cameras did seem to cause some device issues that caused the webpage to not sync with the incoming feed, but this appears to be hardware related only and not from the implementation (a further explanation is later on).<br />
<br />
== Installation Instructions ==<br />
<br />
Extra Hardware Required:<br />
*Webcam 1+ (or Playstation Eye's) Max 4 without other supplementary hardware. Best performing build currently is 2 web cams on the board. 4 makes the XM Slow down too much.<br />
<br />
*Connected to the internet.<br />
<br />
First Download the git Repository, it is located here:[https://github.com/jtlobdell/bbWebcamFeed.git WebcamFeed]<br />
<br />
<source lang="text"><br />
xm$ mkdir WebcamFeed<br />
xm$ git clone https://github.com/jtlobdell/bbWebcamFeed.git WebcamFeed<br />
xm$ cd WebcamFeed<br />
</source><br />
<br />
Install Node.js<br />
<source lang="text"><br />
xm$ opkg update<br />
xm$ opkg install nodejs<br />
</source><br />
Verify gstreamer is available and up to date<br />
<source lang="text"><br />
xm$ opkg update<br />
xm$ opkg install gstreamer<br />
</source><br />
One last thing must be done on the user computer. VLC Media Player Plugin must be available in your browser of choice. This can be done by downloading the software here: [[http://www.videolan.org/vlc/index.html]] and making sure during installation to install the browser plugin. Many modern browsers will guide you through this if you run into a page that requires a missing plugin. <br />
<br />
Now for reference type the following you will need it quite soon<br />
<source lang="text"><br />
xm$ ifconfig<br />
</source><br />
Take note of the IP Address as you will need to enter it in your user's web browser and to align to the video feed. (This is due to the address being in the client HTML file and not able to be easily informed of its source IP Address.)<br />
<br />
== User Instructions ==<br />
Move to the source directory<br />
xm$ '''cd ./WebcamFeeds/'''<br />
<br />
Once the instillation is done the program can be ran<br />
<source lang="text"><br />
xm$ node WebcamFeed.js<br />
</source><br />
Now navigate on the user computer using a web browser to your computers IP Address. Once there click on the link to the video feed page. The program will start and video should play.<br />
<br />
NOTE: When changing video feeds the XM will randomly not load and play the feed. This we believe is due to the physical limitations of the hardware. We tested this by attaching 4 webcams to the board and found that the failure rate went up drastically. When the extra 2 webcams were removed the failure rate returned to where it was before. Since the program only ever calls one feed at a time(it changes which device it targets) this has to be a memory or hardware related issue and not due to the software.<br />
<br />
At the top of the screen is a text box which can be entered the desired video device. Each camera is added sequentially starting at 0. Below the Set Cam button are two buttons for convenience. These function identically as entering the number's 1 or 0 into the text box and clicking Set Cam.<br />
<br />
== Highlights ==<br />
<br />
A single video is captured from a web cam and streamed to a web page. The video capture device can be selected from the same page.<br />
<br />
This program implements node.js and GStreamer working together to accomplish the video output and control over which video device to be viewed.<br />
<br />
The software allows for as many video capture devices (webcams) as can be connected to the device. In the case of the Beagle Board xM, up to four cameras can be used. We only access one webcam at any given time and so the only increasing overhead on the system is that which is associated with the individual USB webcam's. <br />
<br />
[http://youtu.be/kPK35JGzazY Here is a YouTube video demo of the four camera operation].<br />
<br />
This video starts out very slow and illustrates some of the hardware related issues that were encountered. While the most effective implementation currently is the two camera version we wished to show that four camera feeds could be accessed on the xM.<br />
<br />
== Theory of Operation ==<br />
<br />
The project uses [http://gstreamer.freedesktop.org/ GStreamer] to capture video from a webcam, convert it to video/ogg format, and stream it through Transmission Control Protocol (TCP). A diagram of the GStreamer pipeline is shown below.<br />
<br />
TODO add picture of GStreamer pipeline<br />
<br />
The client system connects to a node.js server running on the xM. The server embeds the video stream into the web page and also contains controls for selecting a webcam for the stream.<br />
<br />
When the server begins running the node.js script, it launches the GStreamer pipeline discussed above. When the client connects, they receive a web page containing controls for the video source and the embedded video that gets played using the [http://www.videolan.org/vlc/index.html VLC] web plugin.<br />
<br />
When the client uses the controls to change the video source, the server kills the current GStreamer process and launches a new one using the new video source. It then makes the client's page refresh to make the embedded video player use the new stream.<br />
<br />
A block diagram of the system is shown below.<br />
<br />
TODO add picture of block diagram<br />
<br />
== Work Breakdown ==<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
*Research- Research took up the bulk of our time and effort on this project due to the obscure nature of video streaming on the web using HTML5 and related tools. Most sources online advise you to use a plugin or third party software and treat the idea of using Javascript of HTML5 for this task as a taboo subject. <br />
**GStreamer Implementation- John Lobdel investigated using GStreamer to acomplish this project. This implementation in the end proved effective and the easiest to implement. <br />
**HTML5/JavaScript Implementation - Alex Drane investigated using a pure HTML5 implementation in order to not require anything to be done by the user to view the video streams. From initial research this appeared to be something that could be done quite easily. After considerable research wading through the draft standards that have been developed I found very little sample code or examples that pertained to remote video viewing. The easiest implementation I found was using it to create a 1-to-1 chat application. This is not suitable for our needs.<br />
<br />
*Program Creation- John Lobdel used his research to get gstreamer to stream a video or camera input onto port 8081 that could then be read by the VLC Media Player on a remote computer. The further integration of this into a program was done with the introduction of the VLC-plugin in an html document. The final program was jointly compiled by both John and Alex.<br />
<br />
The program creation went quite fast after a working method was discovered by John. Then it was a matter of putting the pieces together. The program consists of a node.js client server using the example provided in the examples/node.js folder, which provides the HTML server and controls for which video to stream. We embedded the vlc viewer into the page and pointed it to the location where the video would be streamed by an external function call in the .js file. This allows for a simplified approach to running the needed utilities without having to port code into the java script language.<br />
<br />
== Future Work ==<br />
<br />
Adding video capture would add true security camera capabilities to this system. In addition adding motion detection into the video selection stream would be interesting. Though this might be too much for the XM's hardware. <br />
<br />
Having a webpage that displayed all of the video feeds at once would also be an interesting feature but this could over tax the XM's hardware or internet connection.<br />
<br />
Figuring out how to implement this project with only HTML5 and make it so that no plugin is required by the end user was Alex's original plan but the maturity of the knowledge base for HTML5 is not adequate to accomplish this task at this time. But in the future when many of the draft standards are finished this project could be implemented without the vlc-plugin.<br />
<br />
Solving the interesting problem with the random stream failure. This issue arises when switching between streams. Occasionally the video receiver does not receive the stream even though the stream is playing across the network. From experimentation we found that as cameras were added the performance of the entire program greatly decreased. Since we only access one camera at a time the only explanation we could find was that the OS was devoting resources to the devices when they were connected thus creating a much greater overhead as cameras were added. When the cameras were disconnected the performance returned to their previous levels. With four cameras operating a noticeable increase in stream failures was observed. With only two cameras operating about 1/5 of attempts would be unsuccessful. With four cameras the failure rate was significantly higher (as much as 1/3 of attempts would fail). One possible explanation of this is the overhead causing a slow down in setup time for the video out thread compared to the load up time of the browser. While this is set up to go first if the system hanged due to lack of resources this could cause the video stream to start after the html file stopped looking for it. We found no simple or effective solution for this problem but would like to see it fixed.<br />
<br />
== Conclusions ==<br />
<br />
This project was quite surprising by how difficult it is to do using the new HTML5 standards. Through the research we learned that there were currently no simple implementations of what we wished to do with this project. We had originally assumed that something as common as video streaming would have a direct implementation in the new standard but in fact it is far more restricted then we expected. By splitting each of our focuses during the research stage we were able to research the use of the bleeding edge of development and the use of the common implementation and then whoever found an implementation that worked first would allow the project to progress. In addition our parallel research gave us greater insight into the potential ways of accomplishing this task then if we had both focused on the HTML5 implementation and did not allow the project to reach a dead end as it would have if we had both focused on the HTML5 method. <br />
<br />
In the end we did settle on using the vlc-plugin to capture the outgoing stream that John setup using gstreamer. This worked exactly as we wished it to without all of the syntax fighting that took place when trying to port the HTML5 sample code into code we had the codex's for(i.e. websocket to socket.io syntax Note: websocket wanted a Microsoft related XML file which after searching for could not be found when we tried to just use websocket). <br />
<br />
Many of the ideas listed in Future Work would be amazing addon's to the project that would greatly expand and enhance this projects implementation.<br />
<br />
{{YoderFoot}}</div>Draneawhttps://elinux.org/index.php?title=ECE497_Project_Remote_Web_Cam_Viewer&diff=193250ECE497 Project Remote Web Cam Viewer2012-11-14T05:33:32Z<p>Draneaw: /* Future Work */</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Draneaw|Alexander W. Drane]], [[user:Lobdeljt|John Lobdel]]<br />
<br />
== Grading Template ==<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 />
The goal of this project is to create a simple webcam based security system that allows a user to remotely view the devices web cam by navigating to a webpage. Then using buttons the user can change what camera they are viewing.<br />
<br />
Currently we have the ability to select a camera and view the stream in a remote webpage. This view uses the browser's VLC Plugin. We have tested this with 4 webcams on the xM board.<br />
<br />
Operating with four webcams hooked to the board causes many failures of the system to stream back the video information. We determined that this was due to the physical cameras and the overhead of the devices by testing the system with only two we cams where the issues experienced regularly with the four camera setup greatly reduced in frequency.<br />
<br />
Investigation of how to accomplish this task took up the bulk of our time and effort largely due to the infancy of HTML5 Related standards(sockets.io and MediaStream). In the end we decided to utilize the vlc plugin when the HTML5 proved unfeasible at its current level of development. Implementing the four cameras did seem to cause some device issues that caused the webpage to not sync with the incoming feed, but this appears to be hardware related only and not from the implementation (a further explanation is later on).<br />
<br />
== Installation Instructions ==<br />
<br />
Extra Hardware Required:<br />
*Webcam 1+ (or Playstation Eye's) Max 4 without other supplementary hardware. Best performing build currently is 2 web cams on the board. 4 makes the XM Slow down too much.<br />
<br />
*Connected to the internet.<br />
<br />
First Download the git Repository, it is located here:[https://github.com/jtlobdell/bbWebcamFeed.git WebcamFeed]<br />
<br />
<source lang="text"><br />
xm$ mkdir WebcamFeed<br />
xm$ git clone https://github.com/jtlobdell/bbWebcamFeed.git WebcamFeed<br />
xm$ cd WebcamFeed<br />
</source><br />
<br />
Install Node.js<br />
<source lang="text"><br />
xm$ opkg update<br />
xm$ opkg install nodejs<br />
</source><br />
Verify gstreamer is available and up to date<br />
<source lang="text"><br />
xm$ opkg update<br />
xm$ opkg install gstreamer<br />
</source><br />
One last thing must be done on the user computer. VLC Media Player Plugin must be available in your browser of choice. This can be done by downloading the software here: [[http://www.videolan.org/vlc/index.html]] and making sure during installation to install the browser plugin. Many modern browsers will guide you through this if you run into a page that requires a missing plugin. <br />
<br />
Now for reference type the following you will need it quite soon<br />
<source lang="text"><br />
xm$ ifconfig<br />
</source><br />
Take note of the IP Address as you will need to enter it in your user's web browser and to align to the video feed. (This is due to the address being in the client HTML file and not able to be easily informed of its source IP Address.)<br />
<br />
== User Instructions ==<br />
Move to the source directory<br />
xm$ '''cd ./WebcamFeeds/'''<br />
<br />
Once the instillation is done the program can be ran<br />
<source lang="text"><br />
xm$ node WebcamFeed.js<br />
</source><br />
Now navigate on the user computer using a web browser to your computers IP Address. Once there click on the link to the video feed page. The program will start and video should play.<br />
<br />
NOTE: When changing video feeds the XM will randomly not load and play the feed. This we believe is due to the physical limitations of the hardware. We tested this by attaching 4 webcams to the board and found that the failure rate went up drastically. When the extra 2 webcams were removed the failure rate returned to where it was before. Since the program only ever calls one feed at a time(it changes which device it targets) this has to be a memory or hardware related issue and not due to the software.<br />
<br />
At the top of the screen is a text box which can be entered the desired video device. Each camera is added sequentially starting at 0. Below the Set Cam button are two buttons for convenience. These function identically as entering the number's 1 or 0 into the text box and clicking Set Cam.<br />
<br />
== Highlights ==<br />
<br />
A single video is captured from a web cam and streamed to a web page. The video capture device can be selected from the same page.<br />
<br />
The software allows for as many video capture devices (webcams) as can be connected to the device. In the case of the Beagle Board xM, up to four cameras can be used.<br />
<br />
[http://youtu.be/kPK35JGzazY Here is a YouTube video demo of the four camera operation].<br />
<br />
== Theory of Operation ==<br />
<br />
Give a high level overview of the structure of your software. Are you using GStreamer? Show a diagram of the pipeline. Are you running multiple tasks? Show what they do and how they interact.<br />
<br />
== Work Breakdown ==<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
*Research- Research took up the bulk of our time and effort on this project due to the obscure nature of video streaming on the web using HTML5 and related tools. Most sources online advise you to use a plugin or third party software and treat the idea of using Javascript of HTML5 for this task as a taboo subject. <br />
**GStreamer Implementation- John Lobdel investigated using GStreamer to acomplish this project. This implementation in the end proved effective and the easiest to implement. <br />
**HTML5/JavaScript Implementation - Alex Drane investigated using a pure HTML5 implementation in order to not require anything to be done by the user to view the video streams. From initial research this appeared to be something that could be done quite easily. After considerable research wading through the draft standards that have been developed I found very little sample code or examples that pertained to remote video viewing. The easiest implementation I found was using it to create a 1-to-1 chat application. This is not suitable for our needs.<br />
<br />
*Program Creation- John Lobdel used his research to get gstreamer to stream a video or camera input onto port 8081 that could then be read by the VLC Media Player on a remote computer. The further integration of this into a program was done with the introduction of the VLC-plugin in an html document. The final program was jointly compiled by both John and Alex.<br />
<br />
The program creation went quite fast after a working method was discovered by John. Then it was a matter of putting the pieces together. The program consists of a node.js client server using the example provided in the examples/node.js folder, which provides the HTML server and controls for which video to stream. We embedded the vlc viewer into the page and pointed it to the location where the video would be streamed by an external function call in the .js file. This allows for a simplified approach to running the needed utilities without having to port code into the java script language.<br />
<br />
== Future Work ==<br />
<br />
Adding video capture would add true security camera capabilities to this system. In addition adding motion detection into the video selection stream would be interesting. Though this might be too much for the XM's hardware. <br />
<br />
Having a webpage that displayed all of the video feeds at once would also be an interesting feature but this could over tax the XM's hardware or internet connection.<br />
<br />
Figuring out how to implement this project with only HTML5 and make it so that no plugin is required by the end user was Alex's original plan but the maturity of the knowledge base for HTML5 is not adequate to accomplish this task at this time. But in the future when many of the draft standards are finished this project could be implemented without the vlc-plugin.<br />
<br />
Solving the interesting problem with the random stream failure. This issue arises when switching between streams. Occasionally the video receiver does not receive the stream even though the stream is playing across the network. From experimentation we found that as cameras were added the performance of the entire program greatly decreased. Since we only access one camera at a time the only explanation we could find was that the OS was devoting resources to the devices when they were connected thus creating a much greater overhead as cameras were added. When the cameras were disconnected the performance returned to their previous levels. With four cameras operating a noticeable increase in stream failures was observed. With only two cameras operating about 1/5 of attempts would be unsuccessful. With four cameras the failure rate was significantly higher (as much as 1/3 of attempts would fail). One possible explanation of this is the overhead causing a slow down in setup time for the video out thread compared to the load up time of the browser. While this is set up to go first if the system hanged due to lack of resources this could cause the video stream to start after the html file stopped looking for it. We found no simple or effective solution for this problem but would like to see it fixed.<br />
<br />
== Conclusions ==<br />
<br />
This project was quite surprising by how difficult it is to do using the new HTML5 standards. Through the research we learned that there were currently no simple implementations of what we wished to do with this project. We had originally assumed that something as common as video streaming would have a direct implementation in the new standard but in fact it is far more restricted then we expected. By splitting each of our focuses during the research stage we were able to research the use of the bleeding edge of development and the use of the common implementation and then whoever found an implementation that worked first would allow the project to progress. In addition our parallel research gave us greater insight into the potential ways of accomplishing this task then if we had both focused on the HTML5 implementation and did not allow the project to reach a dead end as it would have if we had both focused on the HTML5 method. <br />
<br />
In the end we did settle on using the vlc-plugin to capture the outgoing stream that John setup using gstreamer. This worked exactly as we wished it to without all of the syntax fighting that took place when trying to port the HTML5 sample code into code we had the codex's for(i.e. websocket to socket.io syntax Note: websocket wanted a Microsoft related XML file which after searching for could not be found when we tried to just use websocket). <br />
<br />
Many of the ideas listed in Future Work would be amazing addon's to the project that would greatly expand and enhance this projects implementation.<br />
<br />
{{YoderFoot}}</div>Draneawhttps://elinux.org/index.php?title=ECE497_Project_Remote_Web_Cam_Viewer&diff=193232ECE497 Project Remote Web Cam Viewer2012-11-14T05:21:39Z<p>Draneaw: /* Executive Summary */</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Draneaw|Alexander W. Drane]], [[user:Lobdeljt|John Lobdel]]<br />
<br />
== Grading Template ==<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 />
The goal of this project is to create a simple webcam based security system that allows a user to remotely view the devices web cam by navigating to a webpage. Then using buttons the user can change what camera they are viewing.<br />
<br />
Currently we have the ability to select a camera and view the stream in a remote webpage. This view uses the browser's VLC Plugin. We have tested this with 4 webcams on the xM board.<br />
<br />
Operating with four webcams hooked to the board causes many failures of the system to stream back the video information. We determined that this was due to the physical cameras and the overhead of the devices by testing the system with only two we cams where the issues experienced regularly with the four camera setup greatly reduced in frequency.<br />
<br />
Investigation of how to accomplish this task took up the bulk of our time and effort largely due to the infancy of HTML5 Related standards(sockets.io and MediaStream). In the end we decided to utilize the vlc plugin when the HTML5 proved unfeasible at its current level of development. Implementing the four cameras did seem to cause some device issues that caused the webpage to not sync with the incoming feed, but this appears to be hardware related only and not from the implementation (a further explanation is later on).<br />
<br />
== Installation Instructions ==<br />
<br />
Extra Hardware Required:<br />
*Webcam 1+ (or Playstation Eye's) Max 4 without other supplementary hardware. Best performing build currently is 2 web cams on the board. 4 makes the XM Slow down too much.<br />
<br />
*Connected to the internet.<br />
<br />
First Download the git Repository, it is located here:[https://github.com/jtlobdell/bbWebcamFeed.git WebcamFeed]<br />
<br />
<source lang="text"><br />
xm$ mkdir WebcamFeed<br />
xm$ git clone https://github.com/jtlobdell/bbWebcamFeed.git WebcamFeed<br />
xm$ cd WebcamFeed<br />
</source><br />
<br />
Install Node.js<br />
<source lang="text"><br />
xm$ opkg update<br />
xm$ opkg install nodejs<br />
</source><br />
Verify gstreamer is available and up to date<br />
<source lang="text"><br />
xm$ opkg update<br />
xm$ opkg install gstreamer<br />
</source><br />
One last thing must be done on the user computer. VLC Media Player Plugin must be available in your browser of choice. This can be done by downloading the software here: [[http://www.videolan.org/vlc/index.html]] and making sure during installation to install the browser plugin. Many modern browsers will guide you through this if you run into a page that requires a missing plugin. <br />
<br />
Now for reference type the following you will need it quite soon<br />
<source lang="text"><br />
xm$ ifconfig<br />
</source><br />
Take note of the IP Address as you will need to enter it in your user's web browser and to align to the video feed. (This is due to the address being in the client HTML file and not able to be easily informed of its source IP Address.)<br />
<br />
== User Instructions ==<br />
Move to the source directory<br />
xm$ '''cd ./WebcamFeeds/'''<br />
<br />
Once the instillation is done the program can be ran<br />
<source lang="text"><br />
xm$ node WebcamFeed.js<br />
</source><br />
Now navigate on the user computer using a web browser to your computers IP Address. Once there click on the link to the video feed page. The program will start and video should play.<br />
<br />
NOTE: When changing video feeds the XM will randomly not load and play the feed. This we believe is due to the physical limitations of the hardware. We tested this by attaching 4 webcams to the board and found that the failure rate went up drastically. When the extra 2 webcams were removed the failure rate returned to where it was before. Since the program only ever calls one feed at a time(it changes which device it targets) this has to be a memory or hardware related issue and not due to the software.<br />
<br />
At the top of the screen is a text box which can be entered the desired video device. Each camera is added sequentially starting at 0. Below the Set Cam button are two buttons for convenience. These function identically as entering the number's 1 or 0 into the text box and clicking Set Cam.<br />
<br />
== Highlights ==<br />
<br />
A single video is captured from a web cam and streamed to a web page. The video capture device can be selected from the same page.<br />
<br />
The software allows for as many video capture devices (webcams) as can be connected to the device. In the case of the Beagle Board xM, up to four cameras can be used.<br />
<br />
[http://youtu.be/kPK35JGzazY Here is a YouTube video demo of the four camera operation].<br />
<br />
== Theory of Operation ==<br />
<br />
Give a high level overview of the structure of your software. Are you using GStreamer? Show a diagram of the pipeline. Are you running multiple tasks? Show what they do and how they interact.<br />
<br />
== Work Breakdown ==<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
*Research- Research took up the bulk of our time and effort on this project due to the obscure nature of video streaming on the web using HTML5 and related tools. Most sources online advise you to use a plugin or third party software and treat the idea of using Javascript of HTML5 for this task as a taboo subject. <br />
**GStreamer Implementation- John Lobdel investigated using GStreamer to acomplish this project. This implementation in the end proved effective and the easiest to implement. <br />
**HTML5/JavaScript Implementation - Alex Drane investigated using a pure HTML5 implementation in order to not require anything to be done by the user to view the video streams. From initial research this appeared to be something that could be done quite easily. After considerable research wading through the draft standards that have been developed I found very little sample code or examples that pertained to remote video viewing. The easiest implementation I found was using it to create a 1-to-1 chat application. This is not suitable for our needs.<br />
<br />
*Program Creation- John Lobdel used his research to get gstreamer to stream a video or camera input onto port 8081 that could then be read by the VLC Media Player on a remote computer. The further integration of this into a program was done with the introduction of the VLC-plugin in an html document. The final program was jointly compiled by both John and Alex.<br />
<br />
The program creation went quite fast after a working method was discovered by John. Then it was a matter of putting the pieces together. The program consists of a node.js client server using the example provided in the examples/node.js folder, which provides the HTML server and controls for which video to stream. We embedded the vlc viewer into the page and pointed it to the location where the video would be streamed by an external function call in the .js file. This allows for a simplified approach to running the needed utilities without having to port code into the java script language.<br />
<br />
== Future Work ==<br />
<br />
Adding video capture would add true security camera capabilities to this system. In addition adding motion detection into the video selection stream would be interesting. Though this might be too much for the XM's hardware. <br />
<br />
Having a webpage that displayed all of the video feeds at once would also be an interesting feature but this could over tax the XM's hardware or internet connection.<br />
<br />
Figuring out how to implement this project with only HTML5 and make it so that no plugin is required by the end user was Alex's original plan but the maturity of the knowledge base for HTML5 is not adequate to accomplish this task at this time. But in the future when many of the draft standards are finished this project could be implemented without the vlc-plugin.<br />
<br />
== Conclusions ==<br />
<br />
This project was quite surprising by how difficult it is to do using the new HTML5 standards. Through the research we learned that there were currently no simple implementations of what we wished to do with this project. We had originally assumed that something as common as video streaming would have a direct implementation in the new standard but in fact it is far more restricted then we expected. By splitting each of our focuses during the research stage we were able to research the use of the bleeding edge of development and the use of the common implementation and then whoever found an implementation that worked first would allow the project to progress. In addition our parallel research gave us greater insight into the potential ways of accomplishing this task then if we had both focused on the HTML5 implementation and did not allow the project to reach a dead end as it would have if we had both focused on the HTML5 method. <br />
<br />
In the end we did settle on using the vlc-plugin to capture the outgoing stream that John setup using gstreamer. This worked exactly as we wished it to without all of the syntax fighting that took place when trying to port the HTML5 sample code into code we had the codex's for(i.e. websocket to socket.io syntax Note: websocket wanted a Microsoft related XML file which after searching for could not be found when we tried to just use websocket). <br />
<br />
Many of the ideas listed in Future Work would be amazing addon's to the project that would greatly expand and enhance this projects implementation.<br />
<br />
{{YoderFoot}}</div>Draneawhttps://elinux.org/index.php?title=ECE497_Project_Remote_Web_Cam_Viewer&diff=193016ECE497 Project Remote Web Cam Viewer2012-11-14T03:01:00Z<p>Draneaw: /* Installation Instructions */</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Draneaw|Alexander W. Drane]], [[user:Lobdeljt|John Lobdel]]<br />
<br />
== Grading Template ==<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 />
The goal of this project is to create a simple webcam based security system that allows a user to remotely view the devices web cam by navigating to a webpage. Then using buttons the user can change what camera they are viewing.<br />
<br />
//Give two sentences telling what works.<br />
Currently we have the ability to select a camera and view the stream in a remote webpage. This view uses the VLC Plugin.<br />
<br />
Give two sentences telling what isn't working.<br />
Currently we do not have the system switching between camera's via user inputs. We have not tested with multiple cameras.<br />
<br />
End with a two sentence conclusion.<br />
Investigation of how to accomplish this task took up the bulk of our time and effort due to the infancy of HTML5 Related standards(sockets.io and MediaStream). We decided to utilize the vlc plugin when solving the problem with HTML5 proved unfeasible at its current level of development.<br />
<br />
== Installation Instructions ==<br />
<br />
Extra Hardware Required:<br />
*Webcam 1+ (or Playstation Eye's) Max 4 without other supplementary hardware. Best performing build currently is 2 web cams on the board. 4 makes the XM Slow down too much.<br />
<br />
*Connected to the internet.<br />
<br />
First Download the git Repository, it is located here:[https://github.com/jtlobdell/bbWebcamFeed.git WebcamFeed]<br />
<br />
<source lang="text"><br />
xm$ '''mkdir WebcamFeed'''<br />
xm$ '''git clone https://github.com/jtlobdell/bbWebcamFeed.git WebcamFeed'''<br />
xm$ '''cd WebcamFeed'''<br />
</source><br />
<br />
Install Node.js<br />
<source lang="text"><br />
xm$ '''opkg update'''<br />
xm$ '''opkg install nodejs'''<br />
</source><br />
Verify gstreamer is available and up to date<br />
<source lang="text"><br />
xm$ '''opkg update'''<br />
xm$ '''opkg install gstreamer'''<br />
</source><br />
One last thing must be done on the user computer. VLC Media Player Plugin must be available in your browser of choice. This can be done by downloading the software here: [[http://www.videolan.org/vlc/index.html]] and making sure during installation to install the browser plugin. Many modern browsers will guide you through this if you run into a page that requires a missing plugin. <br />
<br />
Now for reference type the following you will need it quite soon<br />
<source lang="text"><br />
xm$ '''ifconfig'''<br />
</source><br />
Take note of the IP Address as you will need to enter it in your user's web browser and to align to the video feed. (This is due to the address being in the client HTML file and not able to be easily informed of its source IP Address.)<br />
<br />
== User Instructions ==<br />
Move to the source directory<br />
xm$ '''cd ./WebcamFeeds/'''<br />
<br />
Once the instillation is done the program can be ran<br />
<source lang="text"><br />
xm$ '''node WebcamFeed.js'''<br />
</source><br />
Now navigate on the user computer using a web browser to your computers IP Address. Once there click on the link to the video feed page. The program will start and video should play.<br />
<br />
NOTE: When changing video feeds the XM will randomly not load and play the feed. This we believe is due to the physical limitations of the hardware. We tested this by attaching 4 webcams to the board and found that the failure rate went up drastically. When the extra 2 webcams were removed the failure rate returned to where it was before. Since the program only ever calls one feed at a time(it changes which device it targets) this has to be a memory or hardware related issue and not due to the software.<br />
<br />
At the top of the screen is a text box which can be entered the desired video device. Each camera is added sequentially starting at 0. Below the Set Cam button are two buttons for convenience. These function identically as entering the number's 1 or 0 into the text box and clicking Set Cam.<br />
<br />
== Highlights ==<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
Give a high level overview of the structure of your software. Are you using GStreamer? Show a diagram of the pipeline. Are you running multiple tasks? Show what they do and how they interact.<br />
<br />
== Work Breakdown ==<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
*Research- Research took up the bulk of our time and effort on this project due to the obscure nature of video streaming on the web using HTML5 and related tools. Most sources online advise you to use a plugin or third party software and treat the idea of using Javascript of HTML5 for this task as a taboo subject. <br />
**GStreamer Implementation- John Lobdel investigated using GStreamer to acomplish this project. This implementation in the end proved effective and the easiest to implement. <br />
**HTML5/JavaScript Implementation - Alex Drane investigated using a pure HTML5 implementation in order to not require anything to be done by the user to view the video streams. From initial research this appeared to be something that could be done quite easily. After considerable research wading through the draft standards that have been developed I found very little sample code or examples that pertained to remote video viewing. The easiest implementation I found was using it to create a 1-to-1 chat application. This is not suitable for our needs.<br />
<br />
*Program Creation- John Lobdel used his research to get gstreamer to stream a video or camera input onto port 8081 that could then be read by the VLC Media Player on a remote computer. The further integration of this into a program was done with the introduction of the VLC-plugin in an html document. The final program was jointly compiled by both John and Alex.<br />
<br />
The program creation went quite fast after a working method was discovered by John. Then it was a matter of putting the pieces together. The program consists of a node.js client server using the example provided in the examples/node.js folder, which provides the HTML server and controls for which video to stream. We embedded the vlc viewer into the page and pointed it to the location where the video would be streamed by an external function call in the .js file. This allows for a simplified approach to running the needed utilities without having to port code into the java script language.<br />
<br />
== Future Work ==<br />
<br />
Adding video capture would add true security camera capabilities to this system. In addition adding motion detection into the video selection stream would be interesting. Though this might be too much for the XM's hardware. <br />
<br />
Having a webpage that displayed all of the video feeds at once would also be an interesting feature but this could over tax the XM's hardware or internet connection.<br />
<br />
Figuring out how to implement this project with only HTML5 and make it so that no plugin is required by the end user was Alex's original plan but the maturity of the knowledge base for HTML5 is not adequate to accomplish this task at this time. But in the future when many of the draft standards are finished this project could be implemented without the vlc-plugin.<br />
<br />
== Conclusions ==<br />
<br />
This project was quite surprising by how difficult it is to do using the new HTML5 standards. Through the research we learned that there were currently no simple implementations of what we wished to do with this project. We had originally assumed that something as common as video streaming would have a direct implementation in the new standard but in fact it is far more restricted then we expected. By splitting each of our focuses during the research stage we were able to research the use of the bleeding edge of development and the use of the common implementation and then whoever found an implementation that worked first would allow the project to progress. In addition our parallel research gave us greater insight into the potential ways of accomplishing this task then if we had both focused on the HTML5 implementation and did not allow the project to reach a dead end as it would have if we had both focused on the HTML5 method. <br />
<br />
In the end we did settle on using the vlc-plugin to capture the outgoing stream that John setup using gstreamer. This worked exactly as we wished it to without all of the syntax fighting that took place when trying to port the HTML5 sample code into code we had the codex's for(i.e. websocket to socket.io syntax Note: websocket wanted a Microsoft related XML file which after searching for could not be found when we tried to just use websocket). <br />
<br />
Many of the ideas listed in Future Work would be amazing addon's to the project that would greatly expand and enhance this projects implementation.<br />
<br />
{{YoderFoot}}</div>Draneawhttps://elinux.org/index.php?title=ECE497_Project_Remote_Web_Cam_Viewer&diff=193010ECE497 Project Remote Web Cam Viewer2012-11-14T02:54:58Z<p>Draneaw: /* User Instructions */</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Draneaw|Alexander W. Drane]], [[user:Lobdeljt|John Lobdel]]<br />
<br />
== Grading Template ==<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 />
The goal of this project is to create a simple webcam based security system that allows a user to remotely view the devices web cam by navigating to a webpage. Then using buttons the user can change what camera they are viewing.<br />
<br />
//Give two sentences telling what works.<br />
Currently we have the ability to select a camera and view the stream in a remote webpage. This view uses the VLC Plugin.<br />
<br />
Give two sentences telling what isn't working.<br />
Currently we do not have the system switching between camera's via user inputs. We have not tested with multiple cameras.<br />
<br />
End with a two sentence conclusion.<br />
Investigation of how to accomplish this task took up the bulk of our time and effort due to the infancy of HTML5 Related standards(sockets.io and MediaStream). We decided to utilize the vlc plugin when solving the problem with HTML5 proved unfeasible at its current level of development.<br />
<br />
== Installation Instructions ==<br />
<br />
Give step by step instructions on how to install your project on the SPEd2 image. <br />
<br />
* Include your [https://github.com/ github] path as a link like this: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Include any additional packages installed via '''opkg'''.<br />
* Include kernel mods.<br />
* If there is extra hardware needed, include links to where it can be obtained.<br />
<br />
== User Instructions ==<br />
Move to the source directory<br />
xm$ '''cd ./WebcamFeeds/'''<br />
<br />
Once the instillation is done the program can be ran<br />
<source lang="text"><br />
xm$ '''node WebcamFeed.js'''<br />
</source><br />
Now navigate on the user computer using a web browser to your computers IP Address. Once there click on the link to the video feed page. The program will start and video should play.<br />
<br />
NOTE: When changing video feeds the XM will randomly not load and play the feed. This we believe is due to the physical limitations of the hardware. We tested this by attaching 4 webcams to the board and found that the failure rate went up drastically. When the extra 2 webcams were removed the failure rate returned to where it was before. Since the program only ever calls one feed at a time(it changes which device it targets) this has to be a memory or hardware related issue and not due to the software.<br />
<br />
At the top of the screen is a text box which can be entered the desired video device. Each camera is added sequentially starting at 0. Below the Set Cam button are two buttons for convenience. These function identically as entering the number's 1 or 0 into the text box and clicking Set Cam.<br />
<br />
== Highlights ==<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
Give a high level overview of the structure of your software. Are you using GStreamer? Show a diagram of the pipeline. Are you running multiple tasks? Show what they do and how they interact.<br />
<br />
== Work Breakdown ==<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
*Research- Research took up the bulk of our time and effort on this project due to the obscure nature of video streaming on the web using HTML5 and related tools. Most sources online advise you to use a plugin or third party software and treat the idea of using Javascript of HTML5 for this task as a taboo subject. <br />
**GStreamer Implementation- John Lobdel investigated using GStreamer to acomplish this project. This implementation in the end proved effective and the easiest to implement. <br />
**HTML5/JavaScript Implementation - Alex Drane investigated using a pure HTML5 implementation in order to not require anything to be done by the user to view the video streams. From initial research this appeared to be something that could be done quite easily. After considerable research wading through the draft standards that have been developed I found very little sample code or examples that pertained to remote video viewing. The easiest implementation I found was using it to create a 1-to-1 chat application. This is not suitable for our needs.<br />
<br />
*Program Creation- John Lobdel used his research to get gstreamer to stream a video or camera input onto port 8081 that could then be read by the VLC Media Player on a remote computer. The further integration of this into a program was done with the introduction of the VLC-plugin in an html document. The final program was jointly compiled by both John and Alex.<br />
<br />
The program creation went quite fast after a working method was discovered by John. Then it was a matter of putting the pieces together. The program consists of a node.js client server using the example provided in the examples/node.js folder, which provides the HTML server and controls for which video to stream. We embedded the vlc viewer into the page and pointed it to the location where the video would be streamed by an external function call in the .js file. This allows for a simplified approach to running the needed utilities without having to port code into the java script language.<br />
<br />
== Future Work ==<br />
<br />
Adding video capture would add true security camera capabilities to this system. In addition adding motion detection into the video selection stream would be interesting. Though this might be too much for the XM's hardware. <br />
<br />
Having a webpage that displayed all of the video feeds at once would also be an interesting feature but this could over tax the XM's hardware or internet connection.<br />
<br />
Figuring out how to implement this project with only HTML5 and make it so that no plugin is required by the end user was Alex's original plan but the maturity of the knowledge base for HTML5 is not adequate to accomplish this task at this time. But in the future when many of the draft standards are finished this project could be implemented without the vlc-plugin.<br />
<br />
== Conclusions ==<br />
<br />
This project was quite surprising by how difficult it is to do using the new HTML5 standards. Through the research we learned that there were currently no simple implementations of what we wished to do with this project. We had originally assumed that something as common as video streaming would have a direct implementation in the new standard but in fact it is far more restricted then we expected. By splitting each of our focuses during the research stage we were able to research the use of the bleeding edge of development and the use of the common implementation and then whoever found an implementation that worked first would allow the project to progress. In addition our parallel research gave us greater insight into the potential ways of accomplishing this task then if we had both focused on the HTML5 implementation and did not allow the project to reach a dead end as it would have if we had both focused on the HTML5 method. <br />
<br />
In the end we did settle on using the vlc-plugin to capture the outgoing stream that John setup using gstreamer. This worked exactly as we wished it to without all of the syntax fighting that took place when trying to port the HTML5 sample code into code we had the codex's for(i.e. websocket to socket.io syntax Note: websocket wanted a Microsoft related XML file which after searching for could not be found when we tried to just use websocket). <br />
<br />
Many of the ideas listed in Future Work would be amazing addon's to the project that would greatly expand and enhance this projects implementation.<br />
<br />
{{YoderFoot}}</div>Draneawhttps://elinux.org/index.php?title=ECE497_Project_Remote_Web_Cam_Viewer&diff=193004ECE497 Project Remote Web Cam Viewer2012-11-14T02:52:32Z<p>Draneaw: /* User Instructions */</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Draneaw|Alexander W. Drane]], [[user:Lobdeljt|John Lobdel]]<br />
<br />
== Grading Template ==<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 />
The goal of this project is to create a simple webcam based security system that allows a user to remotely view the devices web cam by navigating to a webpage. Then using buttons the user can change what camera they are viewing.<br />
<br />
//Give two sentences telling what works.<br />
Currently we have the ability to select a camera and view the stream in a remote webpage. This view uses the VLC Plugin.<br />
<br />
Give two sentences telling what isn't working.<br />
Currently we do not have the system switching between camera's via user inputs. We have not tested with multiple cameras.<br />
<br />
End with a two sentence conclusion.<br />
Investigation of how to accomplish this task took up the bulk of our time and effort due to the infancy of HTML5 Related standards(sockets.io and MediaStream). We decided to utilize the vlc plugin when solving the problem with HTML5 proved unfeasible at its current level of development.<br />
<br />
== Installation Instructions ==<br />
<br />
Give step by step instructions on how to install your project on the SPEd2 image. <br />
<br />
* Include your [https://github.com/ github] path as a link like this: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Include any additional packages installed via '''opkg'''.<br />
* Include kernel mods.<br />
* If there is extra hardware needed, include links to where it can be obtained.<br />
<br />
== User Instructions ==<br />
First Download the git Repository<br />
<br />
<source lang="text"><br />
xm$ '''mkdir WebcamFeed'''<br />
xm$ '''git clone https://github.com/jtlobdell/bbWebcamFeed.git WebcamFeed'''<br />
xm$ '''cd WebcamFeed'''<br />
</source><br />
<br />
Install Node.js<br />
<source lang="text"><br />
xm$ '''opkg update'''<br />
xm$ '''opkg install nodejs'''<br />
</source><br />
Verify gstreamer is available and up to date<br />
<source lang="text"><br />
xm$ '''opkg update'''<br />
xm$ '''opkg install gstreamer'''<br />
</source><br />
One last thing must be done on the user computer. VLC Media Player Plugin must be available in your browser of choice. This can be done by downloading the software here: [[http://www.videolan.org/vlc/index.html]] and making sure during installation to install the browser plugin. Many modern browsers will guide you through this if you run into a page that requires a missing plugin. <br />
<br />
Now for reference type the following you will need it quite soon<br />
<source lang="text"><br />
xm$ '''ifconfig'''<br />
</source><br />
Take note of the IP Address as you will need to enter it in your user's web browser and to align to the video feed. (This is due to the address being in the client HTML file and not able to be easily informed of its source IP Address.) <br />
<br />
Once this is done the program can be ran<br />
<source lang="text"><br />
xm$ '''node WebcamFeed.js'''<br />
</source><br />
Now navigate on the user computer using a web browser to your computers IP Address. Once there click on the link to the video feed page. The program will start and video should play.<br />
<br />
NOTE: When changing video feeds the XM will randomly not load and play the feed. This we believe is due to the physical limitations of the hardware. We tested this by attaching 4 webcams to the board and found that the failure rate went up drastically. When the extra 2 webcams were removed the failure rate returned to where it was before. Since the program only ever calls one feed at a time(it changes which device it targets) this has to be a memory or hardware related issue and not due to the software.<br />
<br />
At the top of the screen is a text box which can be entered the desired video device. Each camera is added sequentially starting at 0. Below the Set Cam button are two buttons for convenience. These function identically as entering the number's 1 or 0 into the text box and clicking Set Cam.<br />
<br />
== Highlights ==<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
Give a high level overview of the structure of your software. Are you using GStreamer? Show a diagram of the pipeline. Are you running multiple tasks? Show what they do and how they interact.<br />
<br />
== Work Breakdown ==<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
*Research- Research took up the bulk of our time and effort on this project due to the obscure nature of video streaming on the web using HTML5 and related tools. Most sources online advise you to use a plugin or third party software and treat the idea of using Javascript of HTML5 for this task as a taboo subject. <br />
**GStreamer Implementation- John Lobdel investigated using GStreamer to acomplish this project. This implementation in the end proved effective and the easiest to implement. <br />
**HTML5/JavaScript Implementation - Alex Drane investigated using a pure HTML5 implementation in order to not require anything to be done by the user to view the video streams. From initial research this appeared to be something that could be done quite easily. After considerable research wading through the draft standards that have been developed I found very little sample code or examples that pertained to remote video viewing. The easiest implementation I found was using it to create a 1-to-1 chat application. This is not suitable for our needs.<br />
<br />
*Program Creation- John Lobdel used his research to get gstreamer to stream a video or camera input onto port 8081 that could then be read by the VLC Media Player on a remote computer. The further integration of this into a program was done with the introduction of the VLC-plugin in an html document. The final program was jointly compiled by both John and Alex.<br />
<br />
The program creation went quite fast after a working method was discovered by John. Then it was a matter of putting the pieces together. The program consists of a node.js client server using the example provided in the examples/node.js folder, which provides the HTML server and controls for which video to stream. We embedded the vlc viewer into the page and pointed it to the location where the video would be streamed by an external function call in the .js file. This allows for a simplified approach to running the needed utilities without having to port code into the java script language.<br />
<br />
== Future Work ==<br />
<br />
Adding video capture would add true security camera capabilities to this system. In addition adding motion detection into the video selection stream would be interesting. Though this might be too much for the XM's hardware. <br />
<br />
Having a webpage that displayed all of the video feeds at once would also be an interesting feature but this could over tax the XM's hardware or internet connection.<br />
<br />
Figuring out how to implement this project with only HTML5 and make it so that no plugin is required by the end user was Alex's original plan but the maturity of the knowledge base for HTML5 is not adequate to accomplish this task at this time. But in the future when many of the draft standards are finished this project could be implemented without the vlc-plugin.<br />
<br />
== Conclusions ==<br />
<br />
This project was quite surprising by how difficult it is to do using the new HTML5 standards. Through the research we learned that there were currently no simple implementations of what we wished to do with this project. We had originally assumed that something as common as video streaming would have a direct implementation in the new standard but in fact it is far more restricted then we expected. By splitting each of our focuses during the research stage we were able to research the use of the bleeding edge of development and the use of the common implementation and then whoever found an implementation that worked first would allow the project to progress. In addition our parallel research gave us greater insight into the potential ways of accomplishing this task then if we had both focused on the HTML5 implementation and did not allow the project to reach a dead end as it would have if we had both focused on the HTML5 method. <br />
<br />
In the end we did settle on using the vlc-plugin to capture the outgoing stream that John setup using gstreamer. This worked exactly as we wished it to without all of the syntax fighting that took place when trying to port the HTML5 sample code into code we had the codex's for(i.e. websocket to socket.io syntax Note: websocket wanted a Microsoft related XML file which after searching for could not be found when we tried to just use websocket). <br />
<br />
Many of the ideas listed in Future Work would be amazing addon's to the project that would greatly expand and enhance this projects implementation.<br />
<br />
{{YoderFoot}}</div>Draneawhttps://elinux.org/index.php?title=ECE497_Project_Remote_Web_Cam_Viewer&diff=192998ECE497 Project Remote Web Cam Viewer2012-11-14T02:47:44Z<p>Draneaw: /* User Instructions */</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Draneaw|Alexander W. Drane]], [[user:Lobdeljt|John Lobdel]]<br />
<br />
== Grading Template ==<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 />
The goal of this project is to create a simple webcam based security system that allows a user to remotely view the devices web cam by navigating to a webpage. Then using buttons the user can change what camera they are viewing.<br />
<br />
//Give two sentences telling what works.<br />
Currently we have the ability to select a camera and view the stream in a remote webpage. This view uses the VLC Plugin.<br />
<br />
Give two sentences telling what isn't working.<br />
Currently we do not have the system switching between camera's via user inputs. We have not tested with multiple cameras.<br />
<br />
End with a two sentence conclusion.<br />
Investigation of how to accomplish this task took up the bulk of our time and effort due to the infancy of HTML5 Related standards(sockets.io and MediaStream). We decided to utilize the vlc plugin when solving the problem with HTML5 proved unfeasible at its current level of development.<br />
<br />
== Installation Instructions ==<br />
<br />
Give step by step instructions on how to install your project on the SPEd2 image. <br />
<br />
* Include your [https://github.com/ github] path as a link like this: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Include any additional packages installed via '''opkg'''.<br />
* Include kernel mods.<br />
* If there is extra hardware needed, include links to where it can be obtained.<br />
<br />
== User Instructions ==<br />
First Download the git Repository<br />
<source lang="text"><br />
xm$ '''mkdir WebcamFeed'''<br />
xm$ '''git clone https://github.com/jtlobdell/bbWebcamFeed.git WebcamFeed'''<br />
xm$ '''cd WebcamFeed'''<br />
</source><br />
Install Node.js<br />
<source lang="text"><br />
xm$ '''opkg update'''<br />
xm$ '''opkg install nodejs'''<br />
</source><br />
Verify gstreamer is available and up to date<br />
<source lang="text"><br />
xm$ '''opkg update'''<br />
xm$ '''opkg install gstreamer'''<br />
</source><br />
One last thing must be done on the user computer. VLC Media Player Plugin must be available in your browser of choice. This can be done by downloading the software here: [[http://www.videolan.org/vlc/index.html]] and making sure during installation to install the browser plugin. Many modern browsers will guide you through this if you run into a page that requires a missing plugin. <br />
<br />
Now for reference type the following you will need it quite soon<br />
<source lang="text"><br />
xm$ '''ifconfig'''<br />
</source><br />
Take note of the IP Address as you will need to enter it in your user's web browser and to align to the video feed. (This is due to the address being in the client HTML file and not able to be easily informed of its source IP Address.) <br />
<br />
Once this is done the program can be ran<br />
<source lang="text"><br />
xm$ '''node WebcamFeed.js'''<br />
</source><br />
Now navigate on the user computer using a web browser to your computers IP Address. Once there click on the link to the video feed page. The program will start and video should play.<br />
<br />
NOTE: When changing video feeds the XM will randomly not load and play the feed. This we believe is due to the physical limitations of the hardware. We tested this by attaching 4 webcams to the board and found that the failure rate went up drastically. When the extra 2 webcams were removed the failure rate returned to where it was before. Since the program only ever calls one feed at a time(it changes which device it targets) this has to be a memory or hardware related issue and not due to the software.<br />
<br />
At the top of the screen is a text box which can be entered the desired video device. Each camera is added sequentially starting at 0. Below the Set Cam button are two buttons for convenience. These function identically as entering the number's 1 or 0 into the text box and clicking Set Cam.<br />
<br />
== Highlights ==<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
Give a high level overview of the structure of your software. Are you using GStreamer? Show a diagram of the pipeline. Are you running multiple tasks? Show what they do and how they interact.<br />
<br />
== Work Breakdown ==<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
*Research- Research took up the bulk of our time and effort on this project due to the obscure nature of video streaming on the web using HTML5 and related tools. Most sources online advise you to use a plugin or third party software and treat the idea of using Javascript of HTML5 for this task as a taboo subject. <br />
**GStreamer Implementation- John Lobdel investigated using GStreamer to acomplish this project. This implementation in the end proved effective and the easiest to implement. <br />
**HTML5/JavaScript Implementation - Alex Drane investigated using a pure HTML5 implementation in order to not require anything to be done by the user to view the video streams. From initial research this appeared to be something that could be done quite easily. After considerable research wading through the draft standards that have been developed I found very little sample code or examples that pertained to remote video viewing. The easiest implementation I found was using it to create a 1-to-1 chat application. This is not suitable for our needs.<br />
<br />
*Program Creation- John Lobdel used his research to get gstreamer to stream a video or camera input onto port 8081 that could then be read by the VLC Media Player on a remote computer. The further integration of this into a program was done with the introduction of the VLC-plugin in an html document. The final program was jointly compiled by both John and Alex.<br />
<br />
The program creation went quite fast after a working method was discovered by John. Then it was a matter of putting the pieces together. The program consists of a node.js client server using the example provided in the examples/node.js folder, which provides the HTML server and controls for which video to stream. We embedded the vlc viewer into the page and pointed it to the location where the video would be streamed by an external function call in the .js file. This allows for a simplified approach to running the needed utilities without having to port code into the java script language.<br />
<br />
== Future Work ==<br />
<br />
Adding video capture would add true security camera capabilities to this system. In addition adding motion detection into the video selection stream would be interesting. Though this might be too much for the XM's hardware. <br />
<br />
Having a webpage that displayed all of the video feeds at once would also be an interesting feature but this could over tax the XM's hardware or internet connection.<br />
<br />
Figuring out how to implement this project with only HTML5 and make it so that no plugin is required by the end user was Alex's original plan but the maturity of the knowledge base for HTML5 is not adequate to accomplish this task at this time. But in the future when many of the draft standards are finished this project could be implemented without the vlc-plugin.<br />
<br />
== Conclusions ==<br />
<br />
This project was quite surprising by how difficult it is to do using the new HTML5 standards. Through the research we learned that there were currently no simple implementations of what we wished to do with this project. We had originally assumed that something as common as video streaming would have a direct implementation in the new standard but in fact it is far more restricted then we expected. By splitting each of our focuses during the research stage we were able to research the use of the bleeding edge of development and the use of the common implementation and then whoever found an implementation that worked first would allow the project to progress. In addition our parallel research gave us greater insight into the potential ways of accomplishing this task then if we had both focused on the HTML5 implementation and did not allow the project to reach a dead end as it would have if we had both focused on the HTML5 method. <br />
<br />
In the end we did settle on using the vlc-plugin to capture the outgoing stream that John setup using gstreamer. This worked exactly as we wished it to without all of the syntax fighting that took place when trying to port the HTML5 sample code into code we had the codex's for(i.e. websocket to socket.io syntax Note: websocket wanted a Microsoft related XML file which after searching for could not be found when we tried to just use websocket). <br />
<br />
Many of the ideas listed in Future Work would be amazing addon's to the project that would greatly expand and enhance this projects implementation.<br />
<br />
{{YoderFoot}}</div>Draneawhttps://elinux.org/index.php?title=ECE497_Project_Remote_Web_Cam_Viewer&diff=192992ECE497 Project Remote Web Cam Viewer2012-11-14T02:45:42Z<p>Draneaw: /* User Instructions */</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Draneaw|Alexander W. Drane]], [[user:Lobdeljt|John Lobdel]]<br />
<br />
== Grading Template ==<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 />
The goal of this project is to create a simple webcam based security system that allows a user to remotely view the devices web cam by navigating to a webpage. Then using buttons the user can change what camera they are viewing.<br />
<br />
//Give two sentences telling what works.<br />
Currently we have the ability to select a camera and view the stream in a remote webpage. This view uses the VLC Plugin.<br />
<br />
Give two sentences telling what isn't working.<br />
Currently we do not have the system switching between camera's via user inputs. We have not tested with multiple cameras.<br />
<br />
End with a two sentence conclusion.<br />
Investigation of how to accomplish this task took up the bulk of our time and effort due to the infancy of HTML5 Related standards(sockets.io and MediaStream). We decided to utilize the vlc plugin when solving the problem with HTML5 proved unfeasible at its current level of development.<br />
<br />
== Installation Instructions ==<br />
<br />
Give step by step instructions on how to install your project on the SPEd2 image. <br />
<br />
* Include your [https://github.com/ github] path as a link like this: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Include any additional packages installed via '''opkg'''.<br />
* Include kernel mods.<br />
* If there is extra hardware needed, include links to where it can be obtained.<br />
<br />
== User Instructions ==<br />
First Download the git Repository<br />
<code><br />
xm$ '''mkdir WebcamFeed'''<br />
xm$ '''git clone https://github.com/jtlobdell/bbWebcamFeed.git WebcamFeed'''<br />
xm$ '''cd WebcamFeed'''<br />
</code><br />
Install Node.js<br />
<code><br />
xm$ '''opkg update'''<br />
xm$ '''opkg install nodejs'''<br />
</code><br />
Verify gstreamer is available and up to date<br />
<code><br />
xm$ '''opkg update'''<br />
xm$ '''opkg install gstreamer'''<br />
</code><br />
One last thing must be done on the user computer. VLC Media Player Plugin must be available in your browser of choice. This can be done by downloading the software here: [[http://www.videolan.org/vlc/index.html]] and making sure during installation to install the browser plugin. Many modern browsers will guide you through this if you run into a page that requires a missing plugin. <br />
<br />
Now for reference type the following you will need it quite soon<br />
<code><br />
xm$ '''ifconfig'''<br />
</code><br />
Take note of the IP Address as you will need to enter it in your user's web browser and to align to the video feed. (This is due to the address being in the client HTML file and not able to be easily informed of its source IP Address.) <br />
<br />
Once this is done the program can be ran<br />
<code><br />
xm$ '''node WebcamFeed.js'''<br />
</code><br />
Now navigate on the user computer using a web browser to your computers IP Address. Once there click on the link to the video feed page. The program will start and video should play.<br />
<br />
NOTE: When changing video feeds the XM will randomly not load and play the feed. This we believe is due to the physical limitations of the hardware. We tested this by attaching 4 webcams to the board and found that the failure rate went up drastically. When the extra 2 webcams were removed the failure rate returned to where it was before. Since the program only ever calls one feed at a time(it changes which device it targets) this has to be a memory or hardware related issue and not due to the software.<br />
<br />
At the top of the screen is a text box which can be entered the desired video device. Each camera is added sequentially starting at 0. Below the Set Cam button are two buttons for convenience. These function identically as entering the number's 1 or 0 into the text box and clicking Set Cam.<br />
<br />
== Highlights ==<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
Give a high level overview of the structure of your software. Are you using GStreamer? Show a diagram of the pipeline. Are you running multiple tasks? Show what they do and how they interact.<br />
<br />
== Work Breakdown ==<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
*Research- Research took up the bulk of our time and effort on this project due to the obscure nature of video streaming on the web using HTML5 and related tools. Most sources online advise you to use a plugin or third party software and treat the idea of using Javascript of HTML5 for this task as a taboo subject. <br />
**GStreamer Implementation- John Lobdel investigated using GStreamer to acomplish this project. This implementation in the end proved effective and the easiest to implement. <br />
**HTML5/JavaScript Implementation - Alex Drane investigated using a pure HTML5 implementation in order to not require anything to be done by the user to view the video streams. From initial research this appeared to be something that could be done quite easily. After considerable research wading through the draft standards that have been developed I found very little sample code or examples that pertained to remote video viewing. The easiest implementation I found was using it to create a 1-to-1 chat application. This is not suitable for our needs.<br />
<br />
*Program Creation- John Lobdel used his research to get gstreamer to stream a video or camera input onto port 8081 that could then be read by the VLC Media Player on a remote computer. The further integration of this into a program was done with the introduction of the VLC-plugin in an html document. The final program was jointly compiled by both John and Alex.<br />
<br />
The program creation went quite fast after a working method was discovered by John. Then it was a matter of putting the pieces together. The program consists of a node.js client server using the example provided in the examples/node.js folder, which provides the HTML server and controls for which video to stream. We embedded the vlc viewer into the page and pointed it to the location where the video would be streamed by an external function call in the .js file. This allows for a simplified approach to running the needed utilities without having to port code into the java script language.<br />
<br />
== Future Work ==<br />
<br />
Adding video capture would add true security camera capabilities to this system. In addition adding motion detection into the video selection stream would be interesting. Though this might be too much for the XM's hardware. <br />
<br />
Having a webpage that displayed all of the video feeds at once would also be an interesting feature but this could over tax the XM's hardware or internet connection.<br />
<br />
Figuring out how to implement this project with only HTML5 and make it so that no plugin is required by the end user was Alex's original plan but the maturity of the knowledge base for HTML5 is not adequate to accomplish this task at this time. But in the future when many of the draft standards are finished this project could be implemented without the vlc-plugin.<br />
<br />
== Conclusions ==<br />
<br />
This project was quite surprising by how difficult it is to do using the new HTML5 standards. Through the research we learned that there were currently no simple implementations of what we wished to do with this project. We had originally assumed that something as common as video streaming would have a direct implementation in the new standard but in fact it is far more restricted then we expected. By splitting each of our focuses during the research stage we were able to research the use of the bleeding edge of development and the use of the common implementation and then whoever found an implementation that worked first would allow the project to progress. In addition our parallel research gave us greater insight into the potential ways of accomplishing this task then if we had both focused on the HTML5 implementation and did not allow the project to reach a dead end as it would have if we had both focused on the HTML5 method. <br />
<br />
In the end we did settle on using the vlc-plugin to capture the outgoing stream that John setup using gstreamer. This worked exactly as we wished it to without all of the syntax fighting that took place when trying to port the HTML5 sample code into code we had the codex's for(i.e. websocket to socket.io syntax Note: websocket wanted a Microsoft related XML file which after searching for could not be found when we tried to just use websocket). <br />
<br />
Many of the ideas listed in Future Work would be amazing addon's to the project that would greatly expand and enhance this projects implementation.<br />
<br />
{{YoderFoot}}</div>Draneawhttps://elinux.org/index.php?title=ECE497_Project_Remote_Web_Cam_Viewer&diff=192986ECE497 Project Remote Web Cam Viewer2012-11-14T02:43:39Z<p>Draneaw: /* User Instructions */</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Draneaw|Alexander W. Drane]], [[user:Lobdeljt|John Lobdel]]<br />
<br />
== Grading Template ==<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 />
The goal of this project is to create a simple webcam based security system that allows a user to remotely view the devices web cam by navigating to a webpage. Then using buttons the user can change what camera they are viewing.<br />
<br />
//Give two sentences telling what works.<br />
Currently we have the ability to select a camera and view the stream in a remote webpage. This view uses the VLC Plugin.<br />
<br />
Give two sentences telling what isn't working.<br />
Currently we do not have the system switching between camera's via user inputs. We have not tested with multiple cameras.<br />
<br />
End with a two sentence conclusion.<br />
Investigation of how to accomplish this task took up the bulk of our time and effort due to the infancy of HTML5 Related standards(sockets.io and MediaStream). We decided to utilize the vlc plugin when solving the problem with HTML5 proved unfeasible at its current level of development.<br />
<br />
== Installation Instructions ==<br />
<br />
Give step by step instructions on how to install your project on the SPEd2 image. <br />
<br />
* Include your [https://github.com/ github] path as a link like this: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Include any additional packages installed via '''opkg'''.<br />
* Include kernel mods.<br />
* If there is extra hardware needed, include links to where it can be obtained.<br />
<br />
== User Instructions ==<br />
First Download the git Repository<br />
<br />
xm$ '''mkdir WebcamFeed'''<br />
xm$ '''git clone https://github.com/jtlobdell/bbWebcamFeed.git WebcamFeed'''<br />
xm$ '''cd WebcamFeed'''<br />
<br />
Install Node.js<br />
<br />
xm$ '''opkg update'''<br />
xm$ '''opkg install nodejs'''<br />
<br />
Verify gstreamer is available and up to date<br />
<br />
xm$ '''opkg update'''<br />
xm$ '''opkg install gstreamer'''<br />
<br />
One last thing must be done on the user computer. VLC Media Player Plugin must be available in your browser of choice. This can be done by downloading the software here: [[http://www.videolan.org/vlc/index.html]] and making sure during installation to install the browser plugin. Many modern browsers will guide you through this if you run into a page that requires a missing plugin. <br />
<br />
Now for reference type the following you will need it quite soon<br />
<br />
xm$ '''ifconfig'''<br />
<br />
Take note of the IP Address as you will need to enter it in your user's web browser and to align to the video feed. (This is due to the address being in the client HTML file and not able to be easily informed of its source IP Address.) <br />
<br />
Once this is done the program can be ran<br />
<br />
xm$ '''node WebcamFeed.js'''<br />
<br />
Now navigate on the user computer using a web browser to your computers IP Address. Once there click on the link to the video feed page. The program will start and video should play.<br />
<br />
NOTE: When changing video feeds the XM will randomly not load and play the feed. This we believe is due to the physical limitations of the hardware. We tested this by attaching 4 webcams to the board and found that the failure rate went up drastically. When the extra 2 webcams were removed the failure rate returned to where it was before. Since the program only ever calls one feed at a time(it changes which device it targets) this has to be a memory or hardware related issue and not due to the software.<br />
<br />
At the top of the screen is a text box which can be entered the desired video device. Each camera is added sequentially starting at 0. Below the Set Cam button are two buttons for convenience. These function identically as entering the number's 1 or 0 into the text box and clicking Set Cam.<br />
<br />
== Highlights ==<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
Give a high level overview of the structure of your software. Are you using GStreamer? Show a diagram of the pipeline. Are you running multiple tasks? Show what they do and how they interact.<br />
<br />
== Work Breakdown ==<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
*Research- Research took up the bulk of our time and effort on this project due to the obscure nature of video streaming on the web using HTML5 and related tools. Most sources online advise you to use a plugin or third party software and treat the idea of using Javascript of HTML5 for this task as a taboo subject. <br />
**GStreamer Implementation- John Lobdel investigated using GStreamer to acomplish this project. This implementation in the end proved effective and the easiest to implement. <br />
**HTML5/JavaScript Implementation - Alex Drane investigated using a pure HTML5 implementation in order to not require anything to be done by the user to view the video streams. From initial research this appeared to be something that could be done quite easily. After considerable research wading through the draft standards that have been developed I found very little sample code or examples that pertained to remote video viewing. The easiest implementation I found was using it to create a 1-to-1 chat application. This is not suitable for our needs.<br />
<br />
*Program Creation- John Lobdel used his research to get gstreamer to stream a video or camera input onto port 8081 that could then be read by the VLC Media Player on a remote computer. The further integration of this into a program was done with the introduction of the VLC-plugin in an html document. The final program was jointly compiled by both John and Alex.<br />
<br />
The program creation went quite fast after a working method was discovered by John. Then it was a matter of putting the pieces together. The program consists of a node.js client server using the example provided in the examples/node.js folder, which provides the HTML server and controls for which video to stream. We embedded the vlc viewer into the page and pointed it to the location where the video would be streamed by an external function call in the .js file. This allows for a simplified approach to running the needed utilities without having to port code into the java script language.<br />
<br />
== Future Work ==<br />
<br />
Adding video capture would add true security camera capabilities to this system. In addition adding motion detection into the video selection stream would be interesting. Though this might be too much for the XM's hardware. <br />
<br />
Having a webpage that displayed all of the video feeds at once would also be an interesting feature but this could over tax the XM's hardware or internet connection.<br />
<br />
Figuring out how to implement this project with only HTML5 and make it so that no plugin is required by the end user was Alex's original plan but the maturity of the knowledge base for HTML5 is not adequate to accomplish this task at this time. But in the future when many of the draft standards are finished this project could be implemented without the vlc-plugin.<br />
<br />
== Conclusions ==<br />
<br />
This project was quite surprising by how difficult it is to do using the new HTML5 standards. Through the research we learned that there were currently no simple implementations of what we wished to do with this project. We had originally assumed that something as common as video streaming would have a direct implementation in the new standard but in fact it is far more restricted then we expected. By splitting each of our focuses during the research stage we were able to research the use of the bleeding edge of development and the use of the common implementation and then whoever found an implementation that worked first would allow the project to progress. In addition our parallel research gave us greater insight into the potential ways of accomplishing this task then if we had both focused on the HTML5 implementation and did not allow the project to reach a dead end as it would have if we had both focused on the HTML5 method. <br />
<br />
In the end we did settle on using the vlc-plugin to capture the outgoing stream that John setup using gstreamer. This worked exactly as we wished it to without all of the syntax fighting that took place when trying to port the HTML5 sample code into code we had the codex's for(i.e. websocket to socket.io syntax Note: websocket wanted a Microsoft related XML file which after searching for could not be found when we tried to just use websocket). <br />
<br />
Many of the ideas listed in Future Work would be amazing addon's to the project that would greatly expand and enhance this projects implementation.<br />
<br />
{{YoderFoot}}</div>Draneawhttps://elinux.org/index.php?title=ECE497_Project_Remote_Web_Cam_Viewer&diff=192980ECE497 Project Remote Web Cam Viewer2012-11-14T02:42:55Z<p>Draneaw: /* User Instructions */</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Draneaw|Alexander W. Drane]], [[user:Lobdeljt|John Lobdel]]<br />
<br />
== Grading Template ==<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 />
The goal of this project is to create a simple webcam based security system that allows a user to remotely view the devices web cam by navigating to a webpage. Then using buttons the user can change what camera they are viewing.<br />
<br />
//Give two sentences telling what works.<br />
Currently we have the ability to select a camera and view the stream in a remote webpage. This view uses the VLC Plugin.<br />
<br />
Give two sentences telling what isn't working.<br />
Currently we do not have the system switching between camera's via user inputs. We have not tested with multiple cameras.<br />
<br />
End with a two sentence conclusion.<br />
Investigation of how to accomplish this task took up the bulk of our time and effort due to the infancy of HTML5 Related standards(sockets.io and MediaStream). We decided to utilize the vlc plugin when solving the problem with HTML5 proved unfeasible at its current level of development.<br />
<br />
== Installation Instructions ==<br />
<br />
Give step by step instructions on how to install your project on the SPEd2 image. <br />
<br />
* Include your [https://github.com/ github] path as a link like this: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Include any additional packages installed via '''opkg'''.<br />
* Include kernel mods.<br />
* If there is extra hardware needed, include links to where it can be obtained.<br />
<br />
== User Instructions ==<br />
First Download the git Repository:<br />
<br />
xm$ '''mkdir WebcamFeed'''<br />
xm$ '''git clone https://github.com/jtlobdell/bbWebcamFeed.git WebcamFeed'''<br />
xm$ '''cd WebcamFeed'''<br />
<br />
Install Node.js:<br />
<br />
xm$ '''opkg update'''<br />
xm$ '''opkg install nodejs'''<br />
<br />
Verify gstreamer is available and up to date:<br />
<br />
xm$ '''opkg update'''<br />
xm$ '''opkg install gstreamer'''<br />
<br />
One last thing must be done on the user computer. VLC Media Player Plugin must be available in your browser of choice. This can be done by downloading the software here: [[http://www.videolan.org/vlc/index.html]] and making sure during installation to install the browser plugin. Many modern browsers will guide you through this if you run into a page that requires a missing plugin. <br />
<br />
Now for reference type the following you will need it quite soon:<br />
<br />
xm$ '''ifconfig'''<br />
<br />
Take note of the IP Address as you will need to enter it in your user's web browser and to align to the video feed. (This is due to the address being in the client HTML file and not able to be easily informed of its source IP Address.) <br />
<br />
Once this is done the program can be ran:<br />
<br />
xm$ '''node WebcamFeed.js'''<br />
<br />
Now navigate on the user computer using a web browser to your computers IP Address. Once there click on the link to the video feed page. The program will start and video should play.<br />
<br />
NOTE: When changing video feeds the XM will randomly not load and play the feed. This we believe is due to the physical limitations of the hardware. We tested this by attaching 4 webcams to the board and found that the failure rate went up drastically. When the extra 2 webcams were removed the failure rate returned to where it was before. Since the program only ever calls one feed at a time(it changes which device it targets) this has to be a memory or hardware related issue and not due to the software.<br />
<br />
At the top of the screen is a text box which can be entered the desired video device. Each camera is added sequentially starting at 0. Below the Set Cam button are two buttons for convenience. These function identically as entering the number's 1 or 0 into the text box and clicking Set Cam.<br />
<br />
== Highlights ==<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
Give a high level overview of the structure of your software. Are you using GStreamer? Show a diagram of the pipeline. Are you running multiple tasks? Show what they do and how they interact.<br />
<br />
== Work Breakdown ==<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
*Research- Research took up the bulk of our time and effort on this project due to the obscure nature of video streaming on the web using HTML5 and related tools. Most sources online advise you to use a plugin or third party software and treat the idea of using Javascript of HTML5 for this task as a taboo subject. <br />
**GStreamer Implementation- John Lobdel investigated using GStreamer to acomplish this project. This implementation in the end proved effective and the easiest to implement. <br />
**HTML5/JavaScript Implementation - Alex Drane investigated using a pure HTML5 implementation in order to not require anything to be done by the user to view the video streams. From initial research this appeared to be something that could be done quite easily. After considerable research wading through the draft standards that have been developed I found very little sample code or examples that pertained to remote video viewing. The easiest implementation I found was using it to create a 1-to-1 chat application. This is not suitable for our needs.<br />
<br />
*Program Creation- John Lobdel used his research to get gstreamer to stream a video or camera input onto port 8081 that could then be read by the VLC Media Player on a remote computer. The further integration of this into a program was done with the introduction of the VLC-plugin in an html document. The final program was jointly compiled by both John and Alex.<br />
<br />
The program creation went quite fast after a working method was discovered by John. Then it was a matter of putting the pieces together. The program consists of a node.js client server using the example provided in the examples/node.js folder, which provides the HTML server and controls for which video to stream. We embedded the vlc viewer into the page and pointed it to the location where the video would be streamed by an external function call in the .js file. This allows for a simplified approach to running the needed utilities without having to port code into the java script language.<br />
<br />
== Future Work ==<br />
<br />
Adding video capture would add true security camera capabilities to this system. In addition adding motion detection into the video selection stream would be interesting. Though this might be too much for the XM's hardware. <br />
<br />
Having a webpage that displayed all of the video feeds at once would also be an interesting feature but this could over tax the XM's hardware or internet connection.<br />
<br />
Figuring out how to implement this project with only HTML5 and make it so that no plugin is required by the end user was Alex's original plan but the maturity of the knowledge base for HTML5 is not adequate to accomplish this task at this time. But in the future when many of the draft standards are finished this project could be implemented without the vlc-plugin.<br />
<br />
== Conclusions ==<br />
<br />
This project was quite surprising by how difficult it is to do using the new HTML5 standards. Through the research we learned that there were currently no simple implementations of what we wished to do with this project. We had originally assumed that something as common as video streaming would have a direct implementation in the new standard but in fact it is far more restricted then we expected. By splitting each of our focuses during the research stage we were able to research the use of the bleeding edge of development and the use of the common implementation and then whoever found an implementation that worked first would allow the project to progress. In addition our parallel research gave us greater insight into the potential ways of accomplishing this task then if we had both focused on the HTML5 implementation and did not allow the project to reach a dead end as it would have if we had both focused on the HTML5 method. <br />
<br />
In the end we did settle on using the vlc-plugin to capture the outgoing stream that John setup using gstreamer. This worked exactly as we wished it to without all of the syntax fighting that took place when trying to port the HTML5 sample code into code we had the codex's for(i.e. websocket to socket.io syntax Note: websocket wanted a Microsoft related XML file which after searching for could not be found when we tried to just use websocket). <br />
<br />
Many of the ideas listed in Future Work would be amazing addon's to the project that would greatly expand and enhance this projects implementation.<br />
<br />
{{YoderFoot}}</div>Draneawhttps://elinux.org/index.php?title=ECE497_Project_Remote_Web_Cam_Viewer&diff=192968ECE497 Project Remote Web Cam Viewer2012-11-14T02:34:22Z<p>Draneaw: /* User Instructions */</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Draneaw|Alexander W. Drane]], [[user:Lobdeljt|John Lobdel]]<br />
<br />
== Grading Template ==<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 />
The goal of this project is to create a simple webcam based security system that allows a user to remotely view the devices web cam by navigating to a webpage. Then using buttons the user can change what camera they are viewing.<br />
<br />
//Give two sentences telling what works.<br />
Currently we have the ability to select a camera and view the stream in a remote webpage. This view uses the VLC Plugin.<br />
<br />
Give two sentences telling what isn't working.<br />
Currently we do not have the system switching between camera's via user inputs. We have not tested with multiple cameras.<br />
<br />
End with a two sentence conclusion.<br />
Investigation of how to accomplish this task took up the bulk of our time and effort due to the infancy of HTML5 Related standards(sockets.io and MediaStream). We decided to utilize the vlc plugin when solving the problem with HTML5 proved unfeasible at its current level of development.<br />
<br />
== Installation Instructions ==<br />
<br />
Give step by step instructions on how to install your project on the SPEd2 image. <br />
<br />
* Include your [https://github.com/ github] path as a link like this: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Include any additional packages installed via '''opkg'''.<br />
* Include kernel mods.<br />
* If there is extra hardware needed, include links to where it can be obtained.<br />
<br />
== User Instructions ==<br />
First Download the git Repository:<br />
<br />
xm$: '''mkdir WebcamFeed'''<br />
xm$: '''git clone https://github.com/draneaw/WebcamFeed.git WebcamFeed'''<br />
xm$: '''cd WebcamFeed'''<br />
<br />
Install Node.js:<br />
<br />
xm$: '''opkg update'''<br />
xm$: '''opkg install nodejs'''<br />
<br />
Verify gstreamer is available and up to date:<br />
<br />
xm$: '''opkg update'''<br />
xm$: '''opkg install gstreamer'''<br />
<br />
Now for reference type the following you will need it quite soon:<br />
<br />
xm$: '''ifconfig'''<br />
<br />
Take note of the IP Address as you will need to enter it in your user's web browser and to align to the video feed. (This is due to the address being in the client HTML file and not able to be easily informed of its source IP Address.) <br />
<br />
Once this is done the program can be ran:<br />
<br />
xm$: '''node WebcamFeed.js'''<br />
<br />
Now navigate on the user computer using a web browser to your computers IP Address. Once there click on the link to the video feed page. The program will start and video should play.<br />
<br />
NOTE: When changing video feeds the XM will randomly not load and play the feed. This we believe is due to the physical limitations of the hardware. We tested this by attaching 4 webcams to the board and found that the failure rate went up drastically. When the extra 2 webcams were removed the failure rate returned to where it was before. Since the program only ever calls one feed at a time(it changes which device it targets) this has to be a memory or hardware related issue and not due to the software.<br />
<br />
At the top of the screen is a text box which can be entered the desired video device. Each camera is added sequentially starting at 0.<br />
<br />
== Highlights ==<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
Give a high level overview of the structure of your software. Are you using GStreamer? Show a diagram of the pipeline. Are you running multiple tasks? Show what they do and how they interact.<br />
<br />
== Work Breakdown ==<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
*Research- Research took up the bulk of our time and effort on this project due to the obscure nature of video streaming on the web using HTML5 and related tools. Most sources online advise you to use a plugin or third party software and treat the idea of using Javascript of HTML5 for this task as a taboo subject. <br />
**GStreamer Implementation- John Lobdel investigated using GStreamer to acomplish this project. This implementation in the end proved effective and the easiest to implement. <br />
**HTML5/JavaScript Implementation - Alex Drane investigated using a pure HTML5 implementation in order to not require anything to be done by the user to view the video streams. From initial research this appeared to be something that could be done quite easily. After considerable research wading through the draft standards that have been developed I found very little sample code or examples that pertained to remote video viewing. The easiest implementation I found was using it to create a 1-to-1 chat application. This is not suitable for our needs.<br />
<br />
*Program Creation- John Lobdel used his research to get gstreamer to stream a video or camera input onto port 8081 that could then be read by the VLC Media Player on a remote computer. The further integration of this into a program was done with the introduction of the VLC-plugin in an html document. The final program was jointly compiled by both John and Alex.<br />
<br />
The program creation went quite fast after a working method was discovered by John. Then it was a matter of putting the pieces together. The program consists of a node.js client server using the example provided in the examples/node.js folder, which provides the HTML server and controls for which video to stream. We embedded the vlc viewer into the page and pointed it to the location where the video would be streamed by an external function call in the .js file. This allows for a simplified approach to running the needed utilities without having to port code into the java script language.<br />
<br />
== Future Work ==<br />
<br />
Adding video capture would add true security camera capabilities to this system. In addition adding motion detection into the video selection stream would be interesting. Though this might be too much for the XM's hardware. <br />
<br />
Having a webpage that displayed all of the video feeds at once would also be an interesting feature but this could over tax the XM's hardware or internet connection.<br />
<br />
Figuring out how to implement this project with only HTML5 and make it so that no plugin is required by the end user was Alex's original plan but the maturity of the knowledge base for HTML5 is not adequate to accomplish this task at this time. But in the future when many of the draft standards are finished this project could be implemented without the vlc-plugin.<br />
<br />
== Conclusions ==<br />
<br />
This project was quite surprising by how difficult it is to do using the new HTML5 standards. Through the research we learned that there were currently no simple implementations of what we wished to do with this project. We had originally assumed that something as common as video streaming would have a direct implementation in the new standard but in fact it is far more restricted then we expected. By splitting each of our focuses during the research stage we were able to research the use of the bleeding edge of development and the use of the common implementation and then whoever found an implementation that worked first would allow the project to progress. In addition our parallel research gave us greater insight into the potential ways of accomplishing this task then if we had both focused on the HTML5 implementation and did not allow the project to reach a dead end as it would have if we had both focused on the HTML5 method. <br />
<br />
In the end we did settle on using the vlc-plugin to capture the outgoing stream that John setup using gstreamer. This worked exactly as we wished it to without all of the syntax fighting that took place when trying to port the HTML5 sample code into code we had the codex's for(i.e. websocket to socket.io syntax Note: websocket wanted a Microsoft related XML file which after searching for could not be found when we tried to just use websocket). <br />
<br />
Many of the ideas listed in Future Work would be amazing addon's to the project that would greatly expand and enhance this projects implementation.<br />
<br />
{{YoderFoot}}</div>Draneawhttps://elinux.org/index.php?title=ECE497_Project_Remote_Web_Cam_Viewer&diff=192962ECE497 Project Remote Web Cam Viewer2012-11-14T02:32:42Z<p>Draneaw: /* User Instructions */</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Draneaw|Alexander W. Drane]], [[user:Lobdeljt|John Lobdel]]<br />
<br />
== Grading Template ==<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 />
The goal of this project is to create a simple webcam based security system that allows a user to remotely view the devices web cam by navigating to a webpage. Then using buttons the user can change what camera they are viewing.<br />
<br />
//Give two sentences telling what works.<br />
Currently we have the ability to select a camera and view the stream in a remote webpage. This view uses the VLC Plugin.<br />
<br />
Give two sentences telling what isn't working.<br />
Currently we do not have the system switching between camera's via user inputs. We have not tested with multiple cameras.<br />
<br />
End with a two sentence conclusion.<br />
Investigation of how to accomplish this task took up the bulk of our time and effort due to the infancy of HTML5 Related standards(sockets.io and MediaStream). We decided to utilize the vlc plugin when solving the problem with HTML5 proved unfeasible at its current level of development.<br />
<br />
== Installation Instructions ==<br />
<br />
Give step by step instructions on how to install your project on the SPEd2 image. <br />
<br />
* Include your [https://github.com/ github] path as a link like this: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Include any additional packages installed via '''opkg'''.<br />
* Include kernel mods.<br />
* If there is extra hardware needed, include links to where it can be obtained.<br />
<br />
== User Instructions ==<br />
First Download the git Repository:<br />
xm$: '''mkdir WebcamFeed'''<br />
xm$: '''git clone https://github.com/draneaw/WebcamFeed.git WebcamFeed'''<br />
xm$: '''cd WebcamFeed'''<br />
<br />
Install Node.js:<br />
xm$: '''opkg update'''<br />
xm$: '''opkg install nodejs'''<br />
<br />
Verify gstreamer is available and up to date:<br />
xm$: '''opkg update'''<br />
xm$: '''opkg install gstreamer'''<br />
<br />
Now for reference type the following you will need it quite soon:<br />
xm$: '''ifconfig'''<br />
<br />
Take note of the IP Address as you will need to enter it in your user's web browser and to align to the video feed. (This is due to the address being in the client HTML file and not able to be easily informed of its source IP Address.) <br />
<br />
Once this is done the program can be ran:<br />
xm$: '''node WebcamFeed.js'''<br />
<br />
Now navigate on the user computer using a web browser to your computers IP Address. Once there click on the link to the video feed page. The program will start and video should play.<br />
<br />
NOTE: When changing video feeds the XM will randomly not load and play the feed. This we believe is due to the physical limitations of the hardware. We tested this by attaching 4 webcams to the board and found that the failure rate went up drastically. When the extra 2 webcams were removed the failure rate returned to where it was before. Since the program only ever calls one feed at a time(it changes which device it targets) this has to be a memory or hardware related issue and not due to the software.<br />
<br />
At the top of the screen is a text box which can be entered the desired video device. Each camera is added sequentially starting at 0.<br />
<br />
== Highlights ==<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
Give a high level overview of the structure of your software. Are you using GStreamer? Show a diagram of the pipeline. Are you running multiple tasks? Show what they do and how they interact.<br />
<br />
== Work Breakdown ==<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
*Research- Research took up the bulk of our time and effort on this project due to the obscure nature of video streaming on the web using HTML5 and related tools. Most sources online advise you to use a plugin or third party software and treat the idea of using Javascript of HTML5 for this task as a taboo subject. <br />
**GStreamer Implementation- John Lobdel investigated using GStreamer to acomplish this project. This implementation in the end proved effective and the easiest to implement. <br />
**HTML5/JavaScript Implementation - Alex Drane investigated using a pure HTML5 implementation in order to not require anything to be done by the user to view the video streams. From initial research this appeared to be something that could be done quite easily. After considerable research wading through the draft standards that have been developed I found very little sample code or examples that pertained to remote video viewing. The easiest implementation I found was using it to create a 1-to-1 chat application. This is not suitable for our needs.<br />
<br />
*Program Creation- John Lobdel used his research to get gstreamer to stream a video or camera input onto port 8081 that could then be read by the VLC Media Player on a remote computer. The further integration of this into a program was done with the introduction of the VLC-plugin in an html document. The final program was jointly compiled by both John and Alex.<br />
<br />
The program creation went quite fast after a working method was discovered by John. Then it was a matter of putting the pieces together. The program consists of a node.js client server using the example provided in the examples/node.js folder, which provides the HTML server and controls for which video to stream. We embedded the vlc viewer into the page and pointed it to the location where the video would be streamed by an external function call in the .js file. This allows for a simplified approach to running the needed utilities without having to port code into the java script language.<br />
<br />
== Future Work ==<br />
<br />
Adding video capture would add true security camera capabilities to this system. In addition adding motion detection into the video selection stream would be interesting. Though this might be too much for the XM's hardware. <br />
<br />
Having a webpage that displayed all of the video feeds at once would also be an interesting feature but this could over tax the XM's hardware or internet connection.<br />
<br />
Figuring out how to implement this project with only HTML5 and make it so that no plugin is required by the end user was Alex's original plan but the maturity of the knowledge base for HTML5 is not adequate to accomplish this task at this time. But in the future when many of the draft standards are finished this project could be implemented without the vlc-plugin.<br />
<br />
== Conclusions ==<br />
<br />
This project was quite surprising by how difficult it is to do using the new HTML5 standards. Through the research we learned that there were currently no simple implementations of what we wished to do with this project. We had originally assumed that something as common as video streaming would have a direct implementation in the new standard but in fact it is far more restricted then we expected. By splitting each of our focuses during the research stage we were able to research the use of the bleeding edge of development and the use of the common implementation and then whoever found an implementation that worked first would allow the project to progress. In addition our parallel research gave us greater insight into the potential ways of accomplishing this task then if we had both focused on the HTML5 implementation and did not allow the project to reach a dead end as it would have if we had both focused on the HTML5 method. <br />
<br />
In the end we did settle on using the vlc-plugin to capture the outgoing stream that John setup using gstreamer. This worked exactly as we wished it to without all of the syntax fighting that took place when trying to port the HTML5 sample code into code we had the codex's for(i.e. websocket to socket.io syntax Note: websocket wanted a Microsoft related XML file which after searching for could not be found when we tried to just use websocket). <br />
<br />
Many of the ideas listed in Future Work would be amazing addon's to the project that would greatly expand and enhance this projects implementation.<br />
<br />
{{YoderFoot}}</div>Draneawhttps://elinux.org/index.php?title=ECE497_Project_Remote_Web_Cam_Viewer&diff=192956ECE497 Project Remote Web Cam Viewer2012-11-14T02:12:23Z<p>Draneaw: /* User Instructions */</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Draneaw|Alexander W. Drane]], [[user:Lobdeljt|John Lobdel]]<br />
<br />
== Grading Template ==<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 />
The goal of this project is to create a simple webcam based security system that allows a user to remotely view the devices web cam by navigating to a webpage. Then using buttons the user can change what camera they are viewing.<br />
<br />
//Give two sentences telling what works.<br />
Currently we have the ability to select a camera and view the stream in a remote webpage. This view uses the VLC Plugin.<br />
<br />
Give two sentences telling what isn't working.<br />
Currently we do not have the system switching between camera's via user inputs. We have not tested with multiple cameras.<br />
<br />
End with a two sentence conclusion.<br />
Investigation of how to accomplish this task took up the bulk of our time and effort due to the infancy of HTML5 Related standards(sockets.io and MediaStream). We decided to utilize the vlc plugin when solving the problem with HTML5 proved unfeasible at its current level of development.<br />
<br />
== Installation Instructions ==<br />
<br />
Give step by step instructions on how to install your project on the SPEd2 image. <br />
<br />
* Include your [https://github.com/ github] path as a link like this: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Include any additional packages installed via '''opkg'''.<br />
* Include kernel mods.<br />
* If there is extra hardware needed, include links to where it can be obtained.<br />
<br />
== User Instructions ==<br />
First Download the git Repository:<br />
xm$: '''mkdir WebcamFeed'''<br />
xm$: '''git clone https://github.com/draneaw/WebcamFeed.git WebcamFeed'''<br />
xm$: '''cd WebcamFeed'''<br />
<br />
Install Node.js<br />
xm$: '''opkg update'''<br />
xm$: '''opkg install nodejs'''<br />
<br />
Preliminary:<br />
host$: '''node core.js '''<br />
<br />
== Highlights ==<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
Give a high level overview of the structure of your software. Are you using GStreamer? Show a diagram of the pipeline. Are you running multiple tasks? Show what they do and how they interact.<br />
<br />
== Work Breakdown ==<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
*Research- Research took up the bulk of our time and effort on this project due to the obscure nature of video streaming on the web using HTML5 and related tools. Most sources online advise you to use a plugin or third party software and treat the idea of using Javascript of HTML5 for this task as a taboo subject. <br />
**GStreamer Implementation- John Lobdel investigated using GStreamer to acomplish this project. This implementation in the end proved effective and the easiest to implement. <br />
**HTML5/JavaScript Implementation - Alex Drane investigated using a pure HTML5 implementation in order to not require anything to be done by the user to view the video streams. From initial research this appeared to be something that could be done quite easily. After considerable research wading through the draft standards that have been developed I found very little sample code or examples that pertained to remote video viewing. The easiest implementation I found was using it to create a 1-to-1 chat application. This is not suitable for our needs.<br />
<br />
*Program Creation- John Lobdel used his research to get gstreamer to stream a video or camera input onto port 8081 that could then be read by the VLC Media Player on a remote computer. The further integration of this into a program was done with the introduction of the VLC-plugin in an html document. The final program was jointly compiled by both John and Alex.<br />
<br />
The program creation went quite fast after a working method was discovered by John. Then it was a matter of putting the pieces together. The program consists of a node.js client server using the example provided in the examples/node.js folder, which provides the HTML server and controls for which video to stream. We embedded the vlc viewer into the page and pointed it to the location where the video would be streamed by an external function call in the .js file. This allows for a simplified approach to running the needed utilities without having to port code into the java script language.<br />
<br />
== Future Work ==<br />
<br />
Adding video capture would add true security camera capabilities to this system. In addition adding motion detection into the video selection stream would be interesting. Though this might be too much for the XM's hardware. <br />
<br />
Having a webpage that displayed all of the video feeds at once would also be an interesting feature but this could over tax the XM's hardware or internet connection.<br />
<br />
Figuring out how to implement this project with only HTML5 and make it so that no plugin is required by the end user was Alex's original plan but the maturity of the knowledge base for HTML5 is not adequate to accomplish this task at this time. But in the future when many of the draft standards are finished this project could be implemented without the vlc-plugin.<br />
<br />
== Conclusions ==<br />
<br />
This project was quite surprising by how difficult it is to do using the new HTML5 standards. Through the research we learned that there were currently no simple implementations of what we wished to do with this project. We had originally assumed that something as common as video streaming would have a direct implementation in the new standard but in fact it is far more restricted then we expected. By splitting each of our focuses during the research stage we were able to research the use of the bleeding edge of development and the use of the common implementation and then whoever found an implementation that worked first would allow the project to progress. In addition our parallel research gave us greater insight into the potential ways of accomplishing this task then if we had both focused on the HTML5 implementation and did not allow the project to reach a dead end as it would have if we had both focused on the HTML5 method. <br />
<br />
In the end we did settle on using the vlc-plugin to capture the outgoing stream that John setup using gstreamer. This worked exactly as we wished it to without all of the syntax fighting that took place when trying to port the HTML5 sample code into code we had the codex's for(i.e. websocket to socket.io syntax Note: websocket wanted a Microsoft related XML file which after searching for could not be found when we tried to just use websocket). <br />
<br />
Many of the ideas listed in Future Work would be amazing addon's to the project that would greatly expand and enhance this projects implementation.<br />
<br />
{{YoderFoot}}</div>Draneawhttps://elinux.org/index.php?title=ECE497_Project_Remote_Web_Cam_Viewer&diff=192848ECE497 Project Remote Web Cam Viewer2012-11-13T21:39:44Z<p>Draneaw: /* Conclusions */</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Draneaw|Alexander W. Drane]], [[user:Lobdeljt|John Lobdel]]<br />
<br />
== Grading Template ==<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 />
The goal of this project is to create a simple webcam based security system that allows a user to remotely view the devices web cam by navigating to a webpage. Then using buttons the user can change what camera they are viewing.<br />
<br />
//Give two sentences telling what works.<br />
Currently we have the ability to select a camera and view the stream in a remote webpage. This view uses the VLC Plugin.<br />
<br />
Give two sentences telling what isn't working.<br />
Currently we do not have the system switching between camera's via user inputs. We have not tested with multiple cameras.<br />
<br />
End with a two sentence conclusion.<br />
Investigation of how to accomplish this task took up the bulk of our time and effort due to the infancy of HTML5 Related standards(sockets.io and MediaStream). We decided to utilize the vlc plugin when solving the problem with HTML5 proved unfeasible at its current level of development.<br />
<br />
== Installation Instructions ==<br />
<br />
Give step by step instructions on how to install your project on the SPEd2 image. <br />
<br />
* Include your [https://github.com/ github] path as a link like this: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Include any additional packages installed via '''opkg'''.<br />
* Include kernel mods.<br />
* If there is extra hardware needed, include links to where it can be obtained.<br />
<br />
== User Instructions ==<br />
<br />
Preliminary:<br />
host$: '''node core.js '''<br />
<br />
== Highlights ==<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
Give a high level overview of the structure of your software. Are you using GStreamer? Show a diagram of the pipeline. Are you running multiple tasks? Show what they do and how they interact.<br />
<br />
== Work Breakdown ==<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
*Research- Research took up the bulk of our time and effort on this project due to the obscure nature of video streaming on the web using HTML5 and related tools. Most sources online advise you to use a plugin or third party software and treat the idea of using Javascript of HTML5 for this task as a taboo subject. <br />
**GStreamer Implementation- John Lobdel investigated using GStreamer to acomplish this project. This implementation in the end proved effective and the easiest to implement. <br />
**HTML5/JavaScript Implementation - Alex Drane investigated using a pure HTML5 implementation in order to not require anything to be done by the user to view the video streams. From initial research this appeared to be something that could be done quite easily. After considerable research wading through the draft standards that have been developed I found very little sample code or examples that pertained to remote video viewing. The easiest implementation I found was using it to create a 1-to-1 chat application. This is not suitable for our needs.<br />
<br />
*Program Creation- John Lobdel used his research to get gstreamer to stream a video or camera input onto port 8081 that could then be read by the VLC Media Player on a remote computer. The further integration of this into a program was done with the introduction of the VLC-plugin in an html document. The final program was jointly compiled by both John and Alex.<br />
<br />
The program creation went quite fast after a working method was discovered by John. Then it was a matter of putting the pieces together. The program consists of a node.js client server using the example provided in the examples/node.js folder, which provides the HTML server and controls for which video to stream. We embedded the vlc viewer into the page and pointed it to the location where the video would be streamed by an external function call in the .js file. This allows for a simplified approach to running the needed utilities without having to port code into the java script language.<br />
<br />
== Future Work ==<br />
<br />
Adding video capture would add true security camera capabilities to this system. In addition adding motion detection into the video selection stream would be interesting. Though this might be too much for the XM's hardware. <br />
<br />
Having a webpage that displayed all of the video feeds at once would also be an interesting feature but this could over tax the XM's hardware or internet connection.<br />
<br />
Figuring out how to implement this project with only HTML5 and make it so that no plugin is required by the end user was Alex's original plan but the maturity of the knowledge base for HTML5 is not adequate to accomplish this task at this time. But in the future when many of the draft standards are finished this project could be implemented without the vlc-plugin.<br />
<br />
== Conclusions ==<br />
<br />
This project was quite surprising by how difficult it is to do using the new HTML5 standards. Through the research we learned that there were currently no simple implementations of what we wished to do with this project. We had originally assumed that something as common as video streaming would have a direct implementation in the new standard but in fact it is far more restricted then we expected. By splitting each of our focuses during the research stage we were able to research the use of the bleeding edge of development and the use of the common implementation and then whoever found an implementation that worked first would allow the project to progress. In addition our parallel research gave us greater insight into the potential ways of accomplishing this task then if we had both focused on the HTML5 implementation and did not allow the project to reach a dead end as it would have if we had both focused on the HTML5 method. <br />
<br />
In the end we did settle on using the vlc-plugin to capture the outgoing stream that John setup using gstreamer. This worked exactly as we wished it to without all of the syntax fighting that took place when trying to port the HTML5 sample code into code we had the codex's for(i.e. websocket to socket.io syntax Note: websocket wanted a Microsoft related XML file which after searching for could not be found when we tried to just use websocket). <br />
<br />
Many of the ideas listed in Future Work would be amazing addon's to the project that would greatly expand and enhance this projects implementation.<br />
<br />
{{YoderFoot}}</div>Draneawhttps://elinux.org/index.php?title=ECE497_Project_Remote_Web_Cam_Viewer&diff=192842ECE497 Project Remote Web Cam Viewer2012-11-13T21:27:45Z<p>Draneaw: /* Future Work */</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Draneaw|Alexander W. Drane]], [[user:Lobdeljt|John Lobdel]]<br />
<br />
== Grading Template ==<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 />
The goal of this project is to create a simple webcam based security system that allows a user to remotely view the devices web cam by navigating to a webpage. Then using buttons the user can change what camera they are viewing.<br />
<br />
//Give two sentences telling what works.<br />
Currently we have the ability to select a camera and view the stream in a remote webpage. This view uses the VLC Plugin.<br />
<br />
Give two sentences telling what isn't working.<br />
Currently we do not have the system switching between camera's via user inputs. We have not tested with multiple cameras.<br />
<br />
End with a two sentence conclusion.<br />
Investigation of how to accomplish this task took up the bulk of our time and effort due to the infancy of HTML5 Related standards(sockets.io and MediaStream). We decided to utilize the vlc plugin when solving the problem with HTML5 proved unfeasible at its current level of development.<br />
<br />
== Installation Instructions ==<br />
<br />
Give step by step instructions on how to install your project on the SPEd2 image. <br />
<br />
* Include your [https://github.com/ github] path as a link like this: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Include any additional packages installed via '''opkg'''.<br />
* Include kernel mods.<br />
* If there is extra hardware needed, include links to where it can be obtained.<br />
<br />
== User Instructions ==<br />
<br />
Preliminary:<br />
host$: '''node core.js '''<br />
<br />
== Highlights ==<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
Give a high level overview of the structure of your software. Are you using GStreamer? Show a diagram of the pipeline. Are you running multiple tasks? Show what they do and how they interact.<br />
<br />
== Work Breakdown ==<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
*Research- Research took up the bulk of our time and effort on this project due to the obscure nature of video streaming on the web using HTML5 and related tools. Most sources online advise you to use a plugin or third party software and treat the idea of using Javascript of HTML5 for this task as a taboo subject. <br />
**GStreamer Implementation- John Lobdel investigated using GStreamer to acomplish this project. This implementation in the end proved effective and the easiest to implement. <br />
**HTML5/JavaScript Implementation - Alex Drane investigated using a pure HTML5 implementation in order to not require anything to be done by the user to view the video streams. From initial research this appeared to be something that could be done quite easily. After considerable research wading through the draft standards that have been developed I found very little sample code or examples that pertained to remote video viewing. The easiest implementation I found was using it to create a 1-to-1 chat application. This is not suitable for our needs.<br />
<br />
*Program Creation- John Lobdel used his research to get gstreamer to stream a video or camera input onto port 8081 that could then be read by the VLC Media Player on a remote computer. The further integration of this into a program was done with the introduction of the VLC-plugin in an html document. The final program was jointly compiled by both John and Alex.<br />
<br />
The program creation went quite fast after a working method was discovered by John. Then it was a matter of putting the pieces together. The program consists of a node.js client server using the example provided in the examples/node.js folder, which provides the HTML server and controls for which video to stream. We embedded the vlc viewer into the page and pointed it to the location where the video would be streamed by an external function call in the .js file. This allows for a simplified approach to running the needed utilities without having to port code into the java script language.<br />
<br />
== Future Work ==<br />
<br />
Adding video capture would add true security camera capabilities to this system. In addition adding motion detection into the video selection stream would be interesting. Though this might be too much for the XM's hardware. <br />
<br />
Having a webpage that displayed all of the video feeds at once would also be an interesting feature but this could over tax the XM's hardware or internet connection.<br />
<br />
Figuring out how to implement this project with only HTML5 and make it so that no plugin is required by the end user was Alex's original plan but the maturity of the knowledge base for HTML5 is not adequate to accomplish this task at this time. But in the future when many of the draft standards are finished this project could be implemented without the vlc-plugin.<br />
<br />
== Conclusions ==<br />
<br />
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.<br />
<br />
{{YoderFoot}}</div>Draneawhttps://elinux.org/index.php?title=ECE497_Project_Remote_Web_Cam_Viewer&diff=192836ECE497 Project Remote Web Cam Viewer2012-11-13T21:27:20Z<p>Draneaw: /* Future Work */</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Draneaw|Alexander W. Drane]], [[user:Lobdeljt|John Lobdel]]<br />
<br />
== Grading Template ==<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 />
The goal of this project is to create a simple webcam based security system that allows a user to remotely view the devices web cam by navigating to a webpage. Then using buttons the user can change what camera they are viewing.<br />
<br />
//Give two sentences telling what works.<br />
Currently we have the ability to select a camera and view the stream in a remote webpage. This view uses the VLC Plugin.<br />
<br />
Give two sentences telling what isn't working.<br />
Currently we do not have the system switching between camera's via user inputs. We have not tested with multiple cameras.<br />
<br />
End with a two sentence conclusion.<br />
Investigation of how to accomplish this task took up the bulk of our time and effort due to the infancy of HTML5 Related standards(sockets.io and MediaStream). We decided to utilize the vlc plugin when solving the problem with HTML5 proved unfeasible at its current level of development.<br />
<br />
== Installation Instructions ==<br />
<br />
Give step by step instructions on how to install your project on the SPEd2 image. <br />
<br />
* Include your [https://github.com/ github] path as a link like this: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Include any additional packages installed via '''opkg'''.<br />
* Include kernel mods.<br />
* If there is extra hardware needed, include links to where it can be obtained.<br />
<br />
== User Instructions ==<br />
<br />
Preliminary:<br />
host$: '''node core.js '''<br />
<br />
== Highlights ==<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
Give a high level overview of the structure of your software. Are you using GStreamer? Show a diagram of the pipeline. Are you running multiple tasks? Show what they do and how they interact.<br />
<br />
== Work Breakdown ==<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
*Research- Research took up the bulk of our time and effort on this project due to the obscure nature of video streaming on the web using HTML5 and related tools. Most sources online advise you to use a plugin or third party software and treat the idea of using Javascript of HTML5 for this task as a taboo subject. <br />
**GStreamer Implementation- John Lobdel investigated using GStreamer to acomplish this project. This implementation in the end proved effective and the easiest to implement. <br />
**HTML5/JavaScript Implementation - Alex Drane investigated using a pure HTML5 implementation in order to not require anything to be done by the user to view the video streams. From initial research this appeared to be something that could be done quite easily. After considerable research wading through the draft standards that have been developed I found very little sample code or examples that pertained to remote video viewing. The easiest implementation I found was using it to create a 1-to-1 chat application. This is not suitable for our needs.<br />
<br />
*Program Creation- John Lobdel used his research to get gstreamer to stream a video or camera input onto port 8081 that could then be read by the VLC Media Player on a remote computer. The further integration of this into a program was done with the introduction of the VLC-plugin in an html document. The final program was jointly compiled by both John and Alex.<br />
<br />
The program creation went quite fast after a working method was discovered by John. Then it was a matter of putting the pieces together. The program consists of a node.js client server using the example provided in the examples/node.js folder, which provides the HTML server and controls for which video to stream. We embedded the vlc viewer into the page and pointed it to the location where the video would be streamed by an external function call in the .js file. This allows for a simplified approach to running the needed utilities without having to port code into the java script language.<br />
<br />
== Future Work ==<br />
<br />
Add video capture would add true security camera capabilities to this system. In addition adding motion detection into the video selection stream would be interesting. Though this might be too much for the XM's hardware. <br />
<br />
Having a webpage that displayed all of the video feeds at once would also be an interesting feature but this could over tax the XM's hardware or internet connection.<br />
<br />
Figuring out how to implement this project with only HTML5 and make it so that no plugin is required by the end user was Alex's original plan but the maturity of the knowledge base for HTML5 is not adequate to accomplish this task at this time. But in the future when many of the draft standards are finished this project could be implemented without the vlc-plugin.<br />
<br />
== Conclusions ==<br />
<br />
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.<br />
<br />
{{YoderFoot}}</div>Draneawhttps://elinux.org/index.php?title=ECE497_Project_Remote_Web_Cam_Viewer&diff=192830ECE497 Project Remote Web Cam Viewer2012-11-13T21:23:28Z<p>Draneaw: /* Future Work */</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Draneaw|Alexander W. Drane]], [[user:Lobdeljt|John Lobdel]]<br />
<br />
== Grading Template ==<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 />
The goal of this project is to create a simple webcam based security system that allows a user to remotely view the devices web cam by navigating to a webpage. Then using buttons the user can change what camera they are viewing.<br />
<br />
//Give two sentences telling what works.<br />
Currently we have the ability to select a camera and view the stream in a remote webpage. This view uses the VLC Plugin.<br />
<br />
Give two sentences telling what isn't working.<br />
Currently we do not have the system switching between camera's via user inputs. We have not tested with multiple cameras.<br />
<br />
End with a two sentence conclusion.<br />
Investigation of how to accomplish this task took up the bulk of our time and effort due to the infancy of HTML5 Related standards(sockets.io and MediaStream). We decided to utilize the vlc plugin when solving the problem with HTML5 proved unfeasible at its current level of development.<br />
<br />
== Installation Instructions ==<br />
<br />
Give step by step instructions on how to install your project on the SPEd2 image. <br />
<br />
* Include your [https://github.com/ github] path as a link like this: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Include any additional packages installed via '''opkg'''.<br />
* Include kernel mods.<br />
* If there is extra hardware needed, include links to where it can be obtained.<br />
<br />
== User Instructions ==<br />
<br />
Preliminary:<br />
host$: '''node core.js '''<br />
<br />
== Highlights ==<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
Give a high level overview of the structure of your software. Are you using GStreamer? Show a diagram of the pipeline. Are you running multiple tasks? Show what they do and how they interact.<br />
<br />
== Work Breakdown ==<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
*Research- Research took up the bulk of our time and effort on this project due to the obscure nature of video streaming on the web using HTML5 and related tools. Most sources online advise you to use a plugin or third party software and treat the idea of using Javascript of HTML5 for this task as a taboo subject. <br />
**GStreamer Implementation- John Lobdel investigated using GStreamer to acomplish this project. This implementation in the end proved effective and the easiest to implement. <br />
**HTML5/JavaScript Implementation - Alex Drane investigated using a pure HTML5 implementation in order to not require anything to be done by the user to view the video streams. From initial research this appeared to be something that could be done quite easily. After considerable research wading through the draft standards that have been developed I found very little sample code or examples that pertained to remote video viewing. The easiest implementation I found was using it to create a 1-to-1 chat application. This is not suitable for our needs.<br />
<br />
*Program Creation- John Lobdel used his research to get gstreamer to stream a video or camera input onto port 8081 that could then be read by the VLC Media Player on a remote computer. The further integration of this into a program was done with the introduction of the VLC-plugin in an html document. The final program was jointly compiled by both John and Alex.<br />
<br />
The program creation went quite fast after a working method was discovered by John. Then it was a matter of putting the pieces together. The program consists of a node.js client server using the example provided in the examples/node.js folder, which provides the HTML server and controls for which video to stream. We embedded the vlc viewer into the page and pointed it to the location where the video would be streamed by an external function call in the .js file. This allows for a simplified approach to running the needed utilities without having to port code into the java script language.<br />
<br />
== Future Work ==<br />
<br />
Add video capture would add true security camera capabilities to this system. In addition adding motion detection into the video selection stream would be interesting. Though this might be too much for the XM's hardware. <br />
<br />
Having a webpage that displayed all of the video feeds at once would also be an interesting feature but this could over tax the XM's hardware or internet connection.<br />
<br />
== Conclusions ==<br />
<br />
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.<br />
<br />
{{YoderFoot}}</div>Draneawhttps://elinux.org/index.php?title=ECE497_Project_Remote_Web_Cam_Viewer&diff=192824ECE497 Project Remote Web Cam Viewer2012-11-13T21:20:05Z<p>Draneaw: /* Work Breakdown */</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Draneaw|Alexander W. Drane]], [[user:Lobdeljt|John Lobdel]]<br />
<br />
== Grading Template ==<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 />
The goal of this project is to create a simple webcam based security system that allows a user to remotely view the devices web cam by navigating to a webpage. Then using buttons the user can change what camera they are viewing.<br />
<br />
//Give two sentences telling what works.<br />
Currently we have the ability to select a camera and view the stream in a remote webpage. This view uses the VLC Plugin.<br />
<br />
Give two sentences telling what isn't working.<br />
Currently we do not have the system switching between camera's via user inputs. We have not tested with multiple cameras.<br />
<br />
End with a two sentence conclusion.<br />
Investigation of how to accomplish this task took up the bulk of our time and effort due to the infancy of HTML5 Related standards(sockets.io and MediaStream). We decided to utilize the vlc plugin when solving the problem with HTML5 proved unfeasible at its current level of development.<br />
<br />
== Installation Instructions ==<br />
<br />
Give step by step instructions on how to install your project on the SPEd2 image. <br />
<br />
* Include your [https://github.com/ github] path as a link like this: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Include any additional packages installed via '''opkg'''.<br />
* Include kernel mods.<br />
* If there is extra hardware needed, include links to where it can be obtained.<br />
<br />
== User Instructions ==<br />
<br />
Preliminary:<br />
host$: '''node core.js '''<br />
<br />
== Highlights ==<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
Give a high level overview of the structure of your software. Are you using GStreamer? Show a diagram of the pipeline. Are you running multiple tasks? Show what they do and how they interact.<br />
<br />
== Work Breakdown ==<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
*Research- Research took up the bulk of our time and effort on this project due to the obscure nature of video streaming on the web using HTML5 and related tools. Most sources online advise you to use a plugin or third party software and treat the idea of using Javascript of HTML5 for this task as a taboo subject. <br />
**GStreamer Implementation- John Lobdel investigated using GStreamer to acomplish this project. This implementation in the end proved effective and the easiest to implement. <br />
**HTML5/JavaScript Implementation - Alex Drane investigated using a pure HTML5 implementation in order to not require anything to be done by the user to view the video streams. From initial research this appeared to be something that could be done quite easily. After considerable research wading through the draft standards that have been developed I found very little sample code or examples that pertained to remote video viewing. The easiest implementation I found was using it to create a 1-to-1 chat application. This is not suitable for our needs.<br />
<br />
*Program Creation- John Lobdel used his research to get gstreamer to stream a video or camera input onto port 8081 that could then be read by the VLC Media Player on a remote computer. The further integration of this into a program was done with the introduction of the VLC-plugin in an html document. The final program was jointly compiled by both John and Alex.<br />
<br />
The program creation went quite fast after a working method was discovered by John. Then it was a matter of putting the pieces together. The program consists of a node.js client server using the example provided in the examples/node.js folder, which provides the HTML server and controls for which video to stream. We embedded the vlc viewer into the page and pointed it to the location where the video would be streamed by an external function call in the .js file. This allows for a simplified approach to running the needed utilities without having to port code into the java script language.<br />
<br />
== Future Work ==<br />
<br />
Suggest addition things that could be done with this project.<br />
<br />
== Conclusions ==<br />
<br />
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.<br />
<br />
{{YoderFoot}}</div>Draneawhttps://elinux.org/index.php?title=ECE497_Project_Remote_Web_Cam_Viewer&diff=192818ECE497 Project Remote Web Cam Viewer2012-11-13T20:59:09Z<p>Draneaw: /* Executive Summary */</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Draneaw|Alexander W. Drane]], [[user:Lobdeljt|John Lobdel]]<br />
<br />
== Grading Template ==<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 />
The goal of this project is to create a simple webcam based security system that allows a user to remotely view the devices web cam by navigating to a webpage. Then using buttons the user can change what camera they are viewing.<br />
<br />
//Give two sentences telling what works.<br />
Currently we have the ability to select a camera and view the stream in a remote webpage. This view uses the VLC Plugin.<br />
<br />
Give two sentences telling what isn't working.<br />
Currently we do not have the system switching between camera's via user inputs. We have not tested with multiple cameras.<br />
<br />
End with a two sentence conclusion.<br />
Investigation of how to accomplish this task took up the bulk of our time and effort due to the infancy of HTML5 Related standards(sockets.io and MediaStream). We decided to utilize the vlc plugin when solving the problem with HTML5 proved unfeasible at its current level of development.<br />
<br />
== Installation Instructions ==<br />
<br />
Give step by step instructions on how to install your project on the SPEd2 image. <br />
<br />
* Include your [https://github.com/ github] path as a link like this: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Include any additional packages installed via '''opkg'''.<br />
* Include kernel mods.<br />
* If there is extra hardware needed, include links to where it can be obtained.<br />
<br />
== User Instructions ==<br />
<br />
Preliminary:<br />
host$: '''node core.js '''<br />
<br />
== Highlights ==<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
Give a high level overview of the structure of your software. Are you using GStreamer? Show a diagram of the pipeline. Are you running multiple tasks? Show what they do and how they interact.<br />
<br />
== Work Breakdown ==<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
== Future Work ==<br />
<br />
Suggest addition things that could be done with this project.<br />
<br />
== Conclusions ==<br />
<br />
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.<br />
<br />
{{YoderFoot}}</div>Draneawhttps://elinux.org/index.php?title=EBC_Mini_Project_03&diff=190460EBC Mini Project 032012-11-08T10:40:56Z<p>Draneaw: </p>
<hr />
<div>[[Category:ECE497 |Mini03]]<br />
{{YoderHead}}<br />
<br />
<blockquote style="color:red"><br />
'''Note:''' In future classes consider breaking this into two projects, one with video and user input and the other audio.<br />
</blockquote><br />
<br />
This mini project is a follow up on the audioThru and videoThru labs. At this point you should have both audio and video working in their own threads in one app. This mini project starts there and adds a feature. On user input, <br />
# have the Video2 display a copy of the current image in Video1. Video1 is to keep displaying live video.<br />
# replay the last 5 seconds of audio, while continuing to play the live audio.<br />
<br />
You can decide what the user input is. It may be<br />
# User hits return in the terminal<br />
# Sensor detects the user<br />
# etc.<br />
<br />
Keep in mind this is on the xM, so the sensors you used before may not work. For example, there is no analog in. <br />
<br />
Write a small (less than one page) memo that highlights the features of this mini project and demo it.<br />
<br />
''Note:'' Copy the vid2Show and the setDSSpaths to lab 8 folder and call vid2Show after making minor modifications to the file to show both video buffers. <br />
<br />
''Note:'' If you have issues with Framebuffer 2 (mmap fails), it may not have memory properly allocated. Before running your application, enter this command:<br />
echo 4000000 > /sys/class/graphics/fb2/size<br />
Courtesy of the [http://elinux.org/BeagleBoardFAQ#omapfbplay_mmap_fails BeagleBoard FAQ]<br />
{{YoderFoot}}</div>Draneawhttps://elinux.org/index.php?title=ECE497_draneaw_Project&diff=190454ECE497 draneaw Project2012-11-08T10:28:20Z<p>Draneaw: Replaced content with "Unused Please Remove"</p>
<hr />
<div>Unused Please Remove</div>Draneawhttps://elinux.org/index.php?title=EBC_Contributions_and_Project_Status&diff=190448EBC Contributions and Project Status2012-11-08T10:27:15Z<p>Draneaw: /* Project Status */</p>
<hr />
<div>[[Category:ECE497 |Contributions]]<br />
{{YoderHead}}<br />
<br />
== Fall 2012 ==<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 />
| <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 />
| <br />
| [[ECE497 Yue Zhang Project | My Beagle Project]]<br />
| [https://github.com/Astroricks/Beagle-Project Yue Zhang]<br />
|}<br />
<br />
== Winter 2011-2012 ==<br />
<br />
=== Contributions ===<br />
<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>Draneawhttps://elinux.org/index.php?title=EBC_Contributions_and_Project_Status&diff=190442EBC Contributions and Project Status2012-11-08T10:25:23Z<p>Draneaw: /* Project Status */</p>
<hr />
<div>[[Category:ECE497 |Contributions]]<br />
{{YoderHead}}<br />
<br />
== Fall 2012 ==<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 />
| <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/FinalProjectRemoteWebCamViewer.git]<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 />
| <br />
| [[ECE497 Yue Zhang Project | My Beagle Project]]<br />
| [https://github.com/Astroricks/Beagle-Project Yue Zhang]<br />
|}<br />
<br />
== Winter 2011-2012 ==<br />
<br />
=== Contributions ===<br />
<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>Draneawhttps://elinux.org/index.php?title=User:Draneaw&diff=190436User:Draneaw2012-11-08T10:19:17Z<p>Draneaw: </p>
<hr />
<div>[[Category:ECE497 |Ud]]<br />
<br />
== Project Work ==<br />
I have worked with the 8x8 Bi-Color LED Matrix grid. A simple explanation of the work can be found here [[Adafruit: Bicolor LED Square Pixel Matrix]]. <br />
<br />
== Final Project ==<br />
Me and a partner are working on implementing a remote webcam viewer that does not require installation of any software by the user to view a webcam through a web interface powered by node.js. Surprisingly there is currently very little relating to this available with regards to HTML5 and node.js. A link to our work is here: [[ECE497: Remote Web Cam Viewer Final Project]]</div>Draneawhttps://elinux.org/index.php?title=User:Draneaw&diff=190430User:Draneaw2012-11-08T10:18:44Z<p>Draneaw: </p>
<hr />
<div>[[Category:ECE497]|Ud]<br />
<br />
== Project Work ==<br />
I have worked with the 8x8 Bi-Color LED Matrix grid. A simple explanation of the work can be found here [[Adafruit: Bicolor LED Square Pixel Matrix]]. <br />
<br />
== Final Project ==<br />
Me and a partner are working on implementing a remote webcam viewer that does not require installation of any software by the user to view a webcam through a web interface powered by node.js. Surprisingly there is currently very little relating to this available with regards to HTML5 and node.js. A link to our work is here: [[ECE497: Remote Web Cam Viewer Final Project]]</div>Draneawhttps://elinux.org/index.php?title=User:Draneaw&diff=190424User:Draneaw2012-11-08T10:18:16Z<p>Draneaw: </p>
<hr />
<div>[[Category:ECE497][Ud]]<br />
<br />
== Project Work ==<br />
I have worked with the 8x8 Bi-Color LED Matrix grid. A simple explanation of the work can be found here [[Adafruit: Bicolor LED Square Pixel Matrix]]. <br />
<br />
== Final Project ==<br />
Me and a partner are working on implementing a remote webcam viewer that does not require installation of any software by the user to view a webcam through a web interface powered by node.js. Surprisingly there is currently very little relating to this available with regards to HTML5 and node.js. A link to our work is here: [[ECE497: Remote Web Cam Viewer Final Project]]</div>Draneawhttps://elinux.org/index.php?title=ECE497_Project_Remote_Web_Cam_Viewer&diff=190364ECE497 Project Remote Web Cam Viewer2012-11-08T05:55:20Z<p>Draneaw: </p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Draneaw|Alexander W. Drane]], [[user:Lobdeljt|John Lobdel]]<br />
<br />
== Grading Template ==<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 />
The goal of this project is to create a way to utilize the webcam of a remote Beagle Board XM via a web browser without having to install software on the user's computer. Then using this as a base software we will create a program that can cycle through multiple webcams on the XM board.<br />
<br />
Give two sentences telling what works.<br />
<br />
Give two sentences telling what isn't working.<br />
<br />
End with a two sentence conclusion.<br />
<br />
The sentence count is approximate and only to give an idea of the expected length.<br />
<br />
== Installation Instructions ==<br />
<br />
Give step by step instructions on how to install your project on the SPEd2 image. <br />
<br />
* Include your [https://github.com/ github] path as a link like this: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Include any additional packages installed via '''opkg'''.<br />
* Include kernel mods.<br />
* If there is extra hardware needed, include links to where it can be obtained.<br />
<br />
== User Instructions ==<br />
<br />
Preliminary:<br />
host$: '''node core.js '''<br />
<br />
== Highlights ==<br />
<br />
Here is where you brag about what your project can do.<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo.<br />
<br />
== Theory of Operation ==<br />
<br />
Give a high level overview of the structure of your software. Are you using GStreamer? Show a diagram of the pipeline. Are you running multiple tasks? Show what they do and how they interact.<br />
<br />
== Work Breakdown ==<br />
<br />
List the major tasks in your project and who did what.<br />
<br />
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.<br />
<br />
== Future Work ==<br />
<br />
Suggest addition things that could be done with this project.<br />
<br />
== Conclusions ==<br />
<br />
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.<br />
<br />
{{YoderFoot}}</div>Draneawhttps://elinux.org/index.php?title=ECE497_Project_Remote_Web_Cam_Viewer&diff=190358ECE497 Project Remote Web Cam Viewer2012-11-08T05:42:50Z<p>Draneaw: Created page with "Category:ECE497 {{YoderHead}} == Overview == The goal of this project is to create a way to utilize the webcam of a remote Beagle Board XM via a web browser without having..."</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
== Overview ==<br />
The goal of this project is to create a way to utilize the webcam of a remote Beagle Board XM via a web browser without having to install software on the user's computer. Then using this as a base software we will create a program that can cycle through multiple webcams on the XM board.<br />
<br />
== Results of Research: ==<br />
===HTML5===<br />
The multimedia tools presented in HTML5 is very useful for accessing the local devices. The issue this presents for this project is that we want to access the camera of the XM not of the computer accessing the page. <br />
<br />
Currently the use of the canvas object seems to be the HTML5 mechanism to display the video.<br />
<br />
== Git Repository ==</div>Draneawhttps://elinux.org/index.php?title=User:Draneaw&diff=190352User:Draneaw2012-11-08T05:34:30Z<p>Draneaw: </p>
<hr />
<div>[[Category:ECE497]]<br />
<br />
== Project Work ==<br />
I have worked with the 8x8 Bi-Color LED Matrix grid. A simple explanation of the work can be found here [[Adafruit: Bicolor LED Square Pixel Matrix]]. <br />
<br />
== Final Project ==<br />
Me and a partner are working on implementing a remote webcam viewer that does not require installation of any software by the user to view a webcam through a web interface powered by node.js. Surprisingly there is currently very little relating to this available with regards to HTML5 and node.js. A link to our work is here: [[ECE497: Remote Web Cam Viewer Final Project]]</div>Draneawhttps://elinux.org/index.php?title=EBC_Exercise_23_Configuring_the_Kernel_-_bitbake&diff=190346EBC Exercise 23 Configuring the Kernel - bitbake2012-11-08T05:29:01Z<p>Draneaw: </p>
<hr />
<div>[[Category:ECE497]]<br />
[[Category:BeagleBoard]]<br />
{{YoderHead}}<br />
<br />
This is the '''bitbake''' version.<br />
<br />
In a previous exercise ([[EBC Exercise 22 Cross-Compiling and Finding the Right Kernel - bitbake]]) you learned how to get and compile the kernel. Here we'll look at configuring it.<br />
<br />
== Finding the kernel sources ==<br />
<br />
First set up the environment and go to the kernel directory<br />
<br />
host$ '''source ~/.oe/crossCompileEnvBitbake.sh'''<br />
host$ '''cd ~/BeagleBoard/oe/build/tmp-angstrom_v2012_05-eglibc/work/beagleboard-angstrom-linux-gnueabi/linux-omap-psp-2.6.32-r121c+gitr5fc29e7b2a76a64a739f857858ef0b98294aa155/git/'''<br />
<br />
We'll be visiting this directory so often you should set up an alias:<br />
host$ '''alias kernel="cd ~/BeagleBoard/oe/build/tmp-angstrom_v2012_05-eglibc/work/beagleboard-angstrom-linux-gnueabi/linux-omap-psp-2.6.32-r121c+gitr5fc29e7b2a76a64a739f857858ef0b98294aa155/git/"'''<br />
<br />
Then just entering<br />
host$ '''kernel'''<br />
will take you to the kernel directory. Put the alias in your '''~/.bashrc''' file so it will be there every time you log in.<br />
<br />
== Getting kernel make help ==<br />
Once there try some of the make commands. Help is a good place to start.<br />
<br />
host$ '''make help | less'''<br />
Cleaning targets:<br />
clean - Remove most generated files but keep the config and<br />
enough build support to build external modules<br />
mrproper - Remove all generated files + config + various backup files<br />
distclean - mrproper + remove editor backup and patch files<br />
<br />
Configuration targets:<br />
config - Update current config utilising a line-oriented program<br />
menuconfig - Update current config utilising a menu based program<br />
xconfig - Update current config utilising a QT based front-end<br />
gconfig - Update current config utilising a GTK based front-end<br />
...<br />
This produces a list of common make targets. <br />
<br />
== Finding and installing support software ==<br />
<br />
There are several ways to configure the kernel. '''make config''' will prompt you line-by-line for each of the settings, very tedious, not recommended. Try<br />
<br />
host$ '''make menuconfig'''<br />
*** Unable to find the ncurses libraries or the<br />
*** required header files.<br />
*** 'make menuconfig' requires the ncurses libraries.<br />
*** <br />
*** Install ncurses (ncurses-devel) and try again.<br />
*** <br />
make[1]: *** [scripts/kconfig/dochecklxdialog] Error 1<br />
make: *** [menuconfig] Error 2<br />
If you get the error above, you need to install the ncurses library. [[ECE497_Tips_and_Tricks#On_the_host | Here]] are notes on how to discover what to install and installing it.<br />
<br />
NOTE FOR UBUNTU USERS: 'sudo apt-get install libncurses5-dev' without quotes will install ncurses<br />
<br />
== Configuring the kernel ==<br />
<br />
Try the various interfaces for configuring the kernel.<br />
<br />
host$ '''make menuconfig'''<br />
host$ '''make xconfig'''<br />
host$ '''make gconfig'''<br />
<br />
I had to run the following to get these to work.<br />
host$ '''sudo apt-get install libncurses5-dev'''<br />
host$ '''sudo apt-get install qt3-dev-tools'''<br />
host$ '''sudo apt-get install libglade2-dev'''<br />
<br />
{{YoderFoot}}</div>Draneawhttps://elinux.org/index.php?title=EBC_Exercise_27_BusyBox&diff=190340EBC Exercise 27 BusyBox2012-11-08T05:26:21Z<p>Draneaw: /* configuring */</p>
<hr />
<div>[[Category:ECE497]]<br />
[[Category:BeagleBoard]]<br />
{{YoderHead}}<br />
<br />
== Getting BusyBox ==<br />
=== downloading ===<br />
<br />
Get the busybox sources from the busybox site<br />
<br />
host$ '''git clone git://busybox.net/busybox.git'''<br />
host$ '''cd busybox'''<br />
<br />
=== compiling ===<br />
host$ '''source ~/.oe/crossCompileEnv.sh'''<br />
host$ '''make help'''<br />
host$ '''make defconfig'''<br />
host$ '''make -j9''' # use -j''X'' for ''X-1'' cores<br />
<br />
=== configuring ===<br />
<br />
You can now configure BusyBox (In the event that none of the graphical tools work you can use "make config" to use the text based tool as a method of last resort).<br />
<br />
host$ '''make gconfig'''<br />
<br />
After saving the configuration changes to update the .config file, it is a simple matter of running make. <br />
<br />
host$ '''make -j9'''<br />
<br />
My make took about 1.5 minutes to compile (25 seconds with make -j8!).<br />
<br />
=== installing ===<br />
Copy it to your Beagle and test it out. Just typing '''busybox''' will tell you what commands it knows. Try some of them.<br />
host$ '''scp busybox root@beagle:.'''<br />
beagle$ '''busybox'''<br />
beagle$ '''busybox ls'''<br />
<br />
Try some other commands...<br />
<br />
== Playing with BusyBox ==<br />
<br />
=== shrinking ===<br />
<br />
How big is the '''busybox''' file? The default configuration for busybox has it many things (some 400). Reconfigure it to do just the commands you use. How big is it now? How big is it if you just have ''ls''? How much bigger is it when you add httpd? Try your own combinations. Report your findings in your status report.<br />
<br />
=== Static Linking ===<br />
<br />
Some embedded systems are so small they don't have shared libraries. Recompile busybox to be statically linked. (Hint: look in configuration) How big it is? Does it still work?<br />
<br />
=== Running a Web Server ===<br />
<br />
Configure busybox to be a web server. Look under '''Networking Utilites''', select '''httpd'''. How much more space does it take?<br />
<br />
beagle$ '''busybox httpd'''<br />
<br />
Yup, you are now running a web server. Your task is to figure out where to put the web pages it is serving. If you get something interesting going, post your Beagle's address here. Hint: find httpd.c.<br />
<br />
{{YoderFoot}}</div>Draneawhttps://elinux.org/index.php?title=EBC_Exercise_24_Kconfig_Edits&diff=190334EBC Exercise 24 Kconfig Edits2012-11-08T05:23:43Z<p>Draneaw: </p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
Download the Linux Kernel by following [[EBC Exercise 22 Cross-Compiling and Finding the Right Kernel - bitbake]]. Then you can proceed. <br />
<br />
Section 4.4 shows how to modify '''Kconfig''' files. Find the correct Kconfig file and modify it so the following option appears when configuring the kernel. <br />
<br />
Hint: use '''make xconfig''' and search for a keyword<br />
<br />
[[File:Make_xconfig_switch_2.png]]<br />
<br />
What changes do you have to make to the corresponding makefile for your new addition to be compiled?<br />
<br />
{{YoderFoot}}</div>Draneawhttps://elinux.org/index.php?title=EBC_Exercise_21a_Boot_Sequence&diff=190310EBC Exercise 21a Boot Sequence2012-11-08T03:30:48Z<p>Draneaw: /* Discovering what boot does */</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
Up to this point we've always booted the Beagle into Linux and worked from there. Now it's time to learn what has to happen before we can run Linux. To do this you need to look at the output of the serial port so see the boot sequence.<br />
<br />
== Booting Up ==<br />
<br />
Boot up your bone and connect to the serial port using the '''screen''' command. Hit return and log in.<br />
<br />
host$ '''screen /dev/ttyUSB0 115200'''<br />
.---O---. <br />
| | .-. o o <br />
| | |-----.-----.-----.| | .----..-----.-----.<br />
| | | __ | ---'| '--.| .-'| | |<br />
| | | | | |--- || --'| | | ' | | | |<br />
'---'---'--'--'--. |-----''----''--' '-----'-'-'-'<br />
-' |<br />
'---'<br />
<br />
The Angstrom Distribution beaglebone ttyO0 <br />
<br />
Angstrom v2012.05 - Kernel 3.2.25<br />
<br />
beaglebone login: '''root'''<br />
root@beaglebone:~# <br />
<br />
Run the following on your host to learn how to log data with '''screen'''<br />
host$ '''man screen'''<br />
<br />
Turn on logging and capture the boot and shutdown data that is presented on this page. Keep it in a file where you can refer to it later.<br />
<br />
== Shutdown ==<br />
<br />
Now shutdown and be ready to hit return when you get the u-boot prompt.<br />
beagle$ '''shutdown -r now'''<br />
Sending SIGTERM to remaining processes...<br />
Sending SIGKILL to remaining processes...<br />
Unmounting file systems.<br />
Unmounted /dev/mqueue.<br />
Unmounted /sys/kernel/debug.<br />
Disabling swaps.<br />
Detaching loop devices.<br />
Detaching DM devices.<br />
[ 599.018005] Restarting system.<br />
These first messages are from the kernel shutting down. <br />
<br />
== U-Boot Starting ==<br />
The following messages are the boot sequence.<br />
U-Boot SPL 2011.09-00053-gb423c52 (Aug 10 2012 - 11:26:55)<br />
Texas Instruments Revision detection unimplemented<br />
No daughter card present<br />
No AC power, disabling frequency switch<br />
OMAP SD/MMC: 0<br />
reading u-boot.img<br />
reading u-boot.img<br />
<br />
<br />
U-Boot 2011.09-00053-gb423c52 (Aug 10 2012 - 11:26:55)<br />
<br />
I2C: ready<br />
DRAM: 256 MiB<br />
WARNING: Caches not enabled<br />
No daughter card present<br />
NAND: HW ECC Hamming Code selected<br />
No NAND device found!!!<br />
0 MiB<br />
MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1<br />
*** Warning - readenv() failed, using default environment<br />
<br />
Net: cpsw<br />
Hit any key to stop autoboot: 0 <br />
U-Boot# <br />
<br />
== U-Boot help ==<br />
You are now in the u-boot boot loader. Try '''help'''<br />
U-Boot# '''help'''<br />
? - alias for 'help'<br />
askenv - get environment variables from stdin<br />
base - print or set address offset<br />
bdinfo - print Board Info structure<br />
boot - boot default, i.e., run 'bootcmd'<br />
bootd - boot default, i.e., run 'bootcmd'<br />
bootm - boot application image from memory<br />
bootp - boot image via network using BOOTP/TFTP protocol<br />
cmp - memory compare<br />
coninfo - print console devices and information<br />
cp - memory copy<br />
crc32 - checksum calculation<br />
dcache - enable or disable data cache<br />
dhcp - boot image via network using DHCP/TFTP protocol<br />
echo - echo args to console<br />
editenv - edit environment variable<br />
env - environment handling commands<br />
exit - exit script<br />
ext2load- load binary file from a Ext2 filesystem<br />
ext2ls - list files in a directory (default /)<br />
ext4load- load binary file from a Ext2 filesystem<br />
ext4ls - list files in a directory (default /)<br />
false - do nothing, unsuccessfully<br />
fatinfo - print information about filesystem<br />
fatload - load binary file from a dos filesystem<br />
fatls - list files in a directory (default /)<br />
go - start application at address 'addr'<br />
help - print command description/usage<br />
i2c - I2C sub-system<br />
icache - enable or disable instruction cache<br />
iminfo - print header information for application image<br />
imxtract- extract a part of a multi-image<br />
itest - return true/false on integer compare<br />
loadb - load binary file over serial line (kermit mode)<br />
loads - load S-Record file over serial line<br />
loady - load binary file over serial line (ymodem mode)<br />
loop - infinite loop on address range<br />
md - memory display<br />
mm - memory modify (auto-incrementing address)<br />
mmc - MMC sub system<br />
mmcinfo - display MMC info<br />
mtest - simple RAM read/write test<br />
mw - memory write (fill)<br />
nand - NAND sub-system<br />
nandecc - Switch NAND ECC calculation algorithm b/w hardware and software<br />
nboot - boot from NAND device<br />
nfs - boot image via network using NFS protocol<br />
nm - memory modify (constant address)<br />
ping - send ICMP ECHO_REQUEST to network host<br />
printenv- print environment variables<br />
reset - Perform RESET of the CPU<br />
run - run commands in an environment variable<br />
saveenv - save environment variables to persistent storage<br />
setenv - set environment variables<br />
sf - SPI flash sub-system<br />
showvar - print local hushshell variables<br />
sleep - delay execution for some time<br />
source - run script from memory<br />
test - minimal test like /bin/sh<br />
tftpboot- boot image via network using TFTP protocol<br />
true - do nothing, successfully<br />
version - print monitor, compiler and linker version<br />
<br />
== Discovering what '''boot''' does ==<br />
Your goal is to discover what happens when the '''boot''' command is run.<br />
<br />
U-Boot# '''help boot'''<br />
boot - boot default, i.e., run 'bootcmd'<br />
U-boot# '''print bootcmd'''<br />
bootcmd=if mmc rescan; then echo SD/MMC found on device ${mmc_dev}; <br />
if run loadbootenv; then echo Loaded environment from ${bootenv};run importbootenv;fi;<br />
if test -n $uenvcmd; then echo Running uenvcmd ...;run uenvcmd;fi;<br />
if run mmc_load_uimage_ext4; then run mmc_args;bootm ${kloadaddr};fi;fi;run nand_boot;<br />
<br />
Figure out what's happening above by 'pretty printing' '''bootcmd'''. That is, properly format the code so you can follow the flow. Submit this as part of this assignment's memo.<br />
if mmc rescan; then<br />
echo SD/MMC found on device ${mmc_dev}; ''Find out what mmc_dev is and fill it in''<br />
if run loadbootenv; then <br />
echo Loaded environment from ${bootenv};<br />
run importbootenv;<br />
fi;<br />
... and so on.<br />
<br />
== U-Boot print ==<br />
It might be helpful to print the contents of all the variables and save it for future reference.<br />
U-boot# print<br />
autoload=yes<br />
baudrate=115200<br />
bootargs_defaults=setenv bootargs console=${console} ${optargs}<br />
bootcmd=if mmc rescan; then echo SD/MMC found on device ${mmc_dev};if run loadbootenv; then echo Loaded <br />
environment from ${bootenv};run importbootenv;fi;if test -n $uenvcmd; then echo Running uenvcmd ...;run <br />
uenvcmd;fi;if run mmc_load_uimage_ext4; then run mmc_args;bootm ${kloadaddr};fi;fi;run nand_boot;<br />
bootdelay=1<br />
bootenv=uEnv.txt<br />
bootfile=uImage<br />
console=ttyO0,115200n8<br />
ethact=cpsw<br />
ethaddr=d4:94:a1:39:ed:0c<br />
importbootenv=echo Importing environment from mmc ...; env import -t $loadaddr $filesize<br />
ip_method=none<br />
kloadaddr=0x80007fc0<br />
loadaddr=0x82000000<br />
loadbootenv=fatload mmc ${mmc_dev} ${loadaddr} ${bootenv}<br />
mmc_args=run bootargs_defaults;setenv bootargs ${bootargs} root=${mmc_root} rootfstype=${mmc_root_fs_type} <br />
ip=${ip_method}<br />
mmc_boot=run mmc_args; run mmc_load_uimage_ext4; bootm ${kloadaddr}<br />
mmc_dev=0<br />
mmc_load_uimage=fatload mmc ${mmc_dev}:1 ${kloadaddr} ${bootfile}<br />
mmc_load_uimage_ext4=ext4load mmc ${mmc_dev}:2 ${kloadaddr} /boot/${bootfile}<br />
mmc_root=/dev/mmcblk0p2 ro<br />
mmc_root_fs_type=ext4 rootwait<br />
nand_args=run bootargs_defaults;setenv bootargs ${bootargs} root=${nand_root} noinitrd <br />
rootfstype=${nand_root_fs_type} ip=${ip_method}<br />
nand_boot=echo Booting from nand ...; run nand_args; nandecc hw 2; nand read.i ${kloadaddr} <br />
${nand_src_addr} ${nand_img_siz}; bootm ${kloadaddr}<br />
nand_img_siz=0x500000<br />
nand_root=ubi0:rootfs rw ubi.mtd=7,2048<br />
nand_root_fs_type=ubifs rootwait=1<br />
nand_src_addr=0x280000<br />
net_args=run bootargs_defaults;setenv bootargs ${bootargs} root=/dev/nfs <br />
nfsroot=${serverip}:${rootpath},${nfsopts} rw ip=dhcp <br />
net_boot=echo Booting from network ...; setenv autoload no; dhcp; tftp ${kloadaddr} ${bootfile}; run <br />
net_args; bootm ${kloadaddr}<br />
nfsopts=nolock<br />
nor_args=run bootargs_defaults;setenv bootargs ${bootargs} root={nor_root} rootfstype=${nor_root_fs_type} <br />
ip=${ip_method}<br />
nor_boot=echo Booting from NOR ...; run nor_args; cp.b ${0x08080000} ${kloadaddr} ${nor_img_siz}; bootm <br />
${kloadaddr}<br />
nor_img_siz=0x280000<br />
nor_root=/dev/mtdblock3 rw<br />
nor_root_fs_type=jffs2<br />
nor_src_addr=0x08080000<br />
rootpath=/export/rootfs<br />
script_addr=0x81900000<br />
spi_args=run bootargs_defaults;setenv bootargs ${bootargs} root=${spi_root} rootfstype=${spi_root_fs_type} <br />
ip=${ip_method}<br />
spi_boot=echo Booting from spi ...; run spi_args; sf probe ${spi_bus_no}:0; sf read ${kloadaddr} <br />
${spi_src_addr} ${spi_img_siz}; bootm ${kloadaddr}<br />
spi_bus_no=0<br />
spi_img_siz=0x380000<br />
spi_root=/dev/mtdblock4 rw<br />
spi_root_fs_type=jffs2<br />
spi_src_addr=0x62000<br />
static_ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off<br />
stderr=serial<br />
stdin=serial<br />
stdout=serial<br />
<br />
Based on your investigation above, predict what will happen at boot time, then boot and check yourself.<br />
<br />
== U-boot boot ==<br />
U-Boot# '''boot'''<br />
SD/MMC found on device 0<br />
reading uEnv.txt<br />
<br />
33 bytes read<br />
Loaded environment from uEnv.txt<br />
Importing environment from mmc ...<br />
Loading file "/boot/uImage" from mmc device 0:2 xxa2<br />
3319440 bytes read<br />
## Booting kernel from Legacy Image at 80007fc0 ...<br />
Image Name: Angstrom/3.2.25/beaglebone<br />
Image Type: ARM Linux Kernel Image (uncompressed)<br />
Data Size: 3319376 Bytes = 3.2 MiB<br />
Load Address: 80008000<br />
Entry Point: 80008000<br />
Verifying Checksum ... OK<br />
XIP Kernel Image ... OK<br />
OK<br />
<br />
Starting kernel ...<br />
<br />
Uncompressing Linux... done, booting the kernel.<br />
systemd-fsck[56]: Angstrom-Cloud9: clean, 51868/218592 files, 304346/873534 blocks<br />
<br />
.---O---. <br />
| | .-. o o <br />
| | |-----.-----.-----.| | .----..-----.-----.<br />
| | | __ | ---'| '--.| .-'| | |<br />
| | | | | |--- || --'| | | ' | | | |<br />
'---'---'--'--'--. |-----''----''--' '-----'-'-'-'<br />
-' |<br />
'---'<br />
<br />
The Angstrom Distribution beaglebone ttyO0<br />
<br />
Angstrom v2012.05 - Kernel 3.2.25<br />
<br />
beaglebone login: '''root'''<br />
<br />
== Looking on the FAT partition ==<br />
The SD card you have been using has 2 partitions on it. Partition 1 is a small FAT partition. These are the files you see appear when you first boot the bone. This contains the boot loaders. <br />
<br />
The second partition is ext4 and contains the root file system. These are all the other files. <br />
<br />
You can see the FAT partition with:<br />
beagle$ '''mkdir /media/fat'''<br />
beagle$ '''ls /media/fat''' # Hmm.... nothing there<br />
beagle$ '''mount /dev/mmcblk0p1 /media/fat'''<br />
beagle$ '''ls /media/fat''' # and now there is<br />
MLO U-BOOT.BIN UIMAGE uEnv uEnv.txt<br />
<br />
; MLO<br />
: This is the x-loader that the ROM-based loader loads.<br />
; u-boot.bin<br />
: This is is U-Boot!<br />
; uImage<br />
: The kernel<br />
; uEnv.txt<br />
: Kernel command line arguments<br />
; uEnv<br />
: a directory of uEnv.txt files for various screen sizes<br />
<br />
<br />
Look in '''uEnv.txt'''<br />
beagle$ '''cat uEnv.txt'''<br />
optargs=run_hardware_tests quiet<br />
<br />
These are the arguments that are passed to the kernel when it boots. Try editing the file and removing '''quiet''', then reboot. You should see many more boot messages.<br />
<br />
== Kernel boot messages ==<br />
<br />
Here's what I got with '''quiet''' removed.<br />
<br />
=== Starting kernel ===<br />
<pre><br />
Starting kernel ...<br />
<br />
Uncompressing Linux... done, booting the kernel.<br />
[ 0.000000] Initializing cgroup subsys cpuset<br />
[ 0.000000] Initializing cgroup subsys cpu<br />
[ 0.000000] Linux version 3.2.25 (koen@Angstrom-F16-vm-rpm) (gcc version 4.5.4 20120305 (prerelease) (GCC) ) #1 Fri Aug 10 10:33:12 CEST 2012<br />
[ 0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=50c53c7d<br />
[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache<br />
[ 0.000000] Machine: am335xevm<br />
[ 0.000000] Memory policy: ECC disabled, Data cache writeback<br />
[ 0.000000] AM335X ES1.0 (sgx neon )<br />
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 65024<br />
[ 0.000000] Kernel command line: console=ttyO0,115200n8 run_hardware_tests root=/dev/mmcblk0p2 ro rootfstype=ext4 rootwait ip=none<br />
[ 0.000000] PID hash table entries: 1024 (order: 0, 4096 bytes)<br />
[ 0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)<br />
[ 0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)<br />
[ 0.000000] allocated 1048576 bytes of page_cgroup<br />
[ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups<br />
[ 0.000000] Memory: 256MB = 256MB total<br />
[ 0.000000] Memory: 253240k/253240k available, 8904k reserved, 0K highmem<br />
[ 0.000000] Virtual kernel memory layout:<br />
[ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)<br />
[ 0.000000] fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)<br />
[ 0.000000] vmalloc : 0xd0800000 - 0xff000000 ( 744 MB)<br />
[ 0.000000] lowmem : 0xc0000000 - 0xd0000000 ( 256 MB)<br />
[ 0.000000] modules : 0xbf800000 - 0xc0000000 ( 8 MB)<br />
[ 0.000000] .text : 0xc0008000 - 0xc047fa10 (4575 kB)<br />
[ 0.000000] .init : 0xc0480000 - 0xc04b8000 ( 224 kB)<br />
[ 0.000000] .data : 0xc04b8000 - 0xc050a168 ( 329 kB)<br />
[ 0.000000] .bss : 0xc050a18c - 0xc0575894 ( 430 kB)<br />
[ 0.000000] NR_IRQS:410 nr_irqs:410 410<br />
[ 0.000000] IRQ: Found an INTC at 0xfa200000 (revision 5.0) with 128 interrupts<br />
[ 0.000000] Total of 128 interrupts on 1 active controller<br />
[ 0.000000] OMAP clockevent source: GPTIMER2 at 24000000 Hz<br />
[ 0.000000] OMAP clocksource: GPTIMER1 at 32768 Hz<br />
[ 0.000000] sched_clock: 32 bits at 32kHz, resolution 30517ns, wraps every 131071999ms<br />
[ 0.000000] Console: colour dummy device 80x30<br />
[ 0.000183] Calibrating delay loop... 498.89 BogoMIPS (lpj=2494464)<br />
[ 0.058563] pid_max: default: 32768 minimum: 301<br />
[ 0.058746] Security Framework initialized<br />
[ 0.058807] Mount-cache hash table entries: 512<br />
[ 0.059234] Initializing cgroup subsys cpuacct<br />
[ 0.059295] Initializing cgroup subsys memory<br />
[ 0.059326] Initializing cgroup subsys devices<br />
[ 0.059356] Initializing cgroup subsys freezer<br />
[ 0.059356] Initializing cgroup subsys blkio<br />
[ 0.059387] Initializing cgroup subsys perf_event<br />
[ 0.059478] CPU: Testing write buffer coherency: ok<br />
[ 0.060729] devtmpfs: initialized<br />
[ 0.081268] omap_hwmod: gfx: failed to hardreset<br />
[ 0.097991] omap_hwmod: pruss: failed to hardreset<br />
[ 0.098571] print_constraints: dummy: <br />
[ 0.098876] NET: Registered protocol family 16<br />
[ 0.100128] OMAP GPIO hardware version 0.1<br />
[ 0.101409] omap_mux_init: Add partition: #1: core, flags: 0<br />
[ 0.102935] omap_i2c.1: alias fck already exists<br />
[ 0.103363] hw-breakpoint: debug architecture 0x4 unsupported.<br />
[ 0.103546] omap2_mcspi.1: alias fck already exists<br />
[ 0.103698] omap2_mcspi.2: alias fck already exists<br />
[ 0.103881] edma.0: alias fck already exists<br />
[ 0.103881] edma.0: alias fck already exists<br />
[ 0.103912] edma.0: alias fck already exists<br />
[ 0.104003] cape: pcm register<br />
[ 0.114349] bio: create slab <bio-0> at 0<br />
[ 0.115661] SCSI subsystem initialized<br />
[ 0.116607] usbcore: registered new interface driver usbfs<br />
[ 0.116760] usbcore: registered new interface driver hub<br />
[ 0.116943] usbcore: registered new device driver usb<br />
[ 0.117095] musb-ti81xx musb-ti81xx: musb0, board_mode=0x13, plat_mode=0x3<br />
[ 0.117248] musb-ti81xx musb-ti81xx: musb1, board_mode=0x13, plat_mode=0x1<br />
[ 0.117797] omap_i2c omap_i2c.1: bus 1 rev2.4.0 at 100 kHz<br />
[ 0.119110] Advanced Linux Sound Architecture Driver Version 1.0.24.<br />
[ 0.119720] Switching to clocksource gp timer<br />
[ 0.147979] musb-hdrc: version 6.0, ?dma?, otg (peripheral+host)<br />
[ 0.148193] musb-hdrc musb-hdrc.0: dma type: pio<br />
[ 0.148406] MUSB0 controller's USBSS revision = 4ea20800<br />
[ 0.148895] musb-hdrc musb-hdrc.0: USB OTG mode controller at d081c000 using PIO, IRQ 18<br />
[ 0.149230] musb-hdrc musb-hdrc.1: dma type: pio<br />
[ 0.149383] MUSB1 controller's USBSS revision = 4ea20800<br />
[ 0.149536] musb-hdrc musb-hdrc.1: MUSB HDRC host driver<br />
[ 0.149627] musb-hdrc musb-hdrc.1: new USB bus registered, assigned bus number 1<br />
[ 0.149871] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002<br />
[ 0.149871] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1<br />
[ 0.149902] usb usb1: Product: MUSB HDRC host driver<br />
[ 0.149932] usb usb1: Manufacturer: Linux 3.2.25 musb-hcd<br />
[ 0.149932] usb usb1: SerialNumber: musb-hdrc.1<br />
[ 0.150695] hub 1-0:1.0: USB hub found<br />
[ 0.150726] hub 1-0:1.0: 1 port detected<br />
[ 0.151275] musb-hdrc musb-hdrc.1: USB Host mode controller at d081e800 using PIO, IRQ 19<br />
[ 0.151702] NET: Registered protocol family 2<br />
[ 0.151947] IP route cache hash table entries: 2048 (order: 1, 8192 bytes)<br />
[ 0.152404] TCP established hash table entries: 8192 (order: 4, 65536 bytes)<br />
[ 0.152648] TCP bind hash table entries: 8192 (order: 3, 32768 bytes)<br />
[ 0.152770] TCP: Hash tables configured (established 8192 bind 8192)<br />
[ 0.152801] TCP reno registered<br />
[ 0.152801] UDP hash table entries: 256 (order: 0, 4096 bytes)<br />
[ 0.152832] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)<br />
[ 0.153137] NET: Registered protocol family 1<br />
[ 0.153533] RPC: Registered named UNIX socket transport module.<br />
[ 0.153533] RPC: Registered udp transport module.<br />
[ 0.153564] RPC: Registered tcp transport module.<br />
[ 0.153564] RPC: Registered tcp NFSv4.1 backchannel transport module.<br />
[ 0.155517] audit: initializing netlink socket (disabled)<br />
[ 0.155578] type=2000 audit(0.150:1): initialized<br />
[ 0.157165] VFS: Disk quotas dquot_6.5.2<br />
[ 0.157226] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)<br />
[ 0.158416] msgmni has been set to 494<br />
[ 0.159545] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)<br />
[ 0.159667] io scheduler noop registered<br />
[ 0.159667] io scheduler deadline registered<br />
[ 0.159759] io scheduler cfq registered (default)<br />
[ 0.160858] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled<br />
[ 0.162414] omap_uart.0: ttyO0 at MMIO 0x44e09000 (irq = 72) is a OMAP UART0<br />
[ 0.792907] console [ttyO0] enabled<br />
[ 0.797210] omap_uart.1: ttyO1 at MMIO 0x48022000 (irq = 73) is a OMAP UART1<br />
[ 0.805175] omap_uart.2: ttyO2 at MMIO 0x48024000 (irq = 74) is a OMAP UART2<br />
[ 0.813049] omap_uart.3: ttyO3 at MMIO 0x481a6000 (irq = 44) is a OMAP UART3<br />
[ 0.820953] omap_uart.4: ttyO4 at MMIO 0x481a8000 (irq = 45) is a OMAP UART4<br />
[ 0.828826] omap_uart.5: ttyO5 at MMIO 0x481aa000 (irq = 46) is a OMAP UART5<br />
[ 0.838073] brd: module loaded<br />
[ 0.846069] loop: module loaded<br />
[ 0.849487] at24 1-0051: 32768 byte 24c256 EEPROM, writable, 64 bytes/write<br />
[ 0.910339] No daughter card found<br />
[ 0.913970] at24 1-0050: 32768 byte 24c256 EEPROM, writable, 64 bytes/write<br />
[ 0.929260] Board name: A335BONE<br />
[ 0.932678] Board version: 00A3<br />
[ 0.936004] The board is a AM335x Beaglebone.<br />
[ 0.941284] tps65217 1-0024: TPS65217 ID 0x7 version 1.0<br />
[ 0.948760] print_constraints: DCDC1: 900 <--> 1800 mV at 1800 mV <br />
[ 0.957275] print_constraints: DCDC2: 900 <--> 3300 mV at 1275 mV <br />
[ 0.965728] print_constraints: DCDC3: 900 <--> 1500 mV at 1100 mV <br />
[ 0.974151] print_constraints: LDO1: 1000 <--> 3300 mV at 1800 mV <br />
[ 0.982604] print_constraints: LDO2: 900 <--> 3300 mV at 3300 mV <br />
[ 0.990936] print_constraints: LDO3: 1800 <--> 3300 mV at 3300 mV <br />
[ 0.999359] print_constraints: LDO4: 1800 <--> 3300 mV at 3300 mV <br />
[ 1.006408] Maximum current provided by the USB port is 500mA which is not sufficient when operating @OPP120 and OPPTURBO. The current requirement for some use-cases using OPP100 might also exceed the maximum current that the USB port can provide. Unless you are fully confident that the current requirements for OPP100 use-case don't exceed the USB limits, switching to AC power is recommended.<br />
[ 1.043487] omap_i2c.3: alias fck already exists<br />
[ 1.048706] omap_i2c omap_i2c.3: bus 3 rev2.4.0 at 100 kHz<br />
[ 1.059112] at24 3-0054: 32768 byte 24c256 EEPROM, writable, 64 bytes/write<br />
[ 1.120361] BeagleBone cape EEPROM: could not read eeprom at address 0x54<br />
[ 1.127563] at24 3-0055: 32768 byte 24c256 EEPROM, writable, 64 bytes/write<br />
[ 1.190368] BeagleBone cape EEPROM: could not read eeprom at address 0x55<br />
[ 1.197570] at24 3-0056: 32768 byte 24c256 EEPROM, writable, 64 bytes/write<br />
[ 1.260375] BeagleBone cape EEPROM: could not read eeprom at address 0x56<br />
[ 1.267578] at24 3-0057: 32768 byte 24c256 EEPROM, writable, 64 bytes/write<br />
[ 1.330383] BeagleBone cape EEPROM: could not read eeprom at address 0x57<br />
[ 1.337707] omap_hsmmc.0: alias fck already exists<br />
[ 1.343017] BeagleBone cape: exporting ADC pins to sysfs<br />
[ 1.348876] Beaglebone: initializing onboard LEDs<br />
[ 1.353881] BeagleBone cape: exporting SPI pins as spidev<br />
[ 1.360107] BeagleBone cape: initializing w1-gpio<br />
[ 1.365234] w1-gpio connected to P8_6<br />
[ 1.369781] SCSI Media Changer driver v0.25 <br />
[ 1.374694] CAN device driver interface<br />
[ 1.378753] CAN bus driver for Bosch D_CAN controller 1.0<br />
[ 1.430419] davinci_mdio davinci_mdio.0: davinci mdio revision 1.6<br />
[ 1.436920] davinci_mdio davinci_mdio.0: detected phy mask fffffffe<br />
[ 1.444580] davinci_mdio.0: probed<br />
[ 1.448181] davinci_mdio davinci_mdio.0: phy[0]: device 0:00, driver SMSC LAN8710/LAN8720<br />
[ 1.457061] usbcore: registered new interface driver cdc_acm<br />
[ 1.463073] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters<br />
[ 1.471618] usbcore: registered new interface driver usblp<br />
[ 1.477478] usbcore: registered new interface driver cdc_wdm<br />
[ 1.483520] usbcore: registered new interface driver uas<br />
[ 1.489135] Initializing USB Mass Storage driver...<br />
[ 1.494445] usbcore: registered new interface driver usb-storage<br />
[ 1.500793] USB Mass Storage support registered.<br />
[ 1.505767] usbcore: registered new interface driver libusual<br />
[ 1.512329] mousedev: PS/2 mouse device common for all mice<br />
[ 1.518829] dev addr = cfa08608<br />
[ 1.522186] pdev addr = cfa08600<br />
[ 1.526397] omap_rtc omap_rtc: rtc core: registered omap_rtc as rtc0<br />
[ 1.533142] omap_rtc: already running<br />
[ 1.537170] i2c /dev entries driver<br />
[ 1.541351] Linux media interface: v0.10<br />
[ 1.545593] Linux video capture interface: v2.00<br />
[ 1.550811] Driver for 1-wire Dallas network protocol.<br />
[ 1.557617] OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec<br />
[ 1.565521] cpuidle: using governor ladder<br />
[ 1.570037] cpuidle: using governor menu<br />
[ 1.577178] usbcore: registered new interface driver usbhid<br />
[ 1.583099] usbhid: USB HID core driver<br />
[ 1.588195] usbcore: registered new interface driver snd-usb-audio<br />
[ 1.595794] ALSA device list:<br />
[ 1.598907] No soundcards found.<br />
[ 1.602966] TCP cubic registered<br />
[ 1.606353] Initializing XFRM netlink socket<br />
[ 1.610931] NET: Registered protocol family 17<br />
[ 1.615661] NET: Registered protocol family 15<br />
[ 1.620361] can: controller area network core (rev 20090105 abi 8)<br />
[ 1.626983] NET: Registered protocol family 29<br />
[ 1.631713] can: raw protocol (rev 20090105)<br />
[ 1.636230] Registering the dns_resolver key type<br />
[ 1.641296] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3<br />
[ 1.649383] ThumbEE CPU extension supported.<br />
[ 1.653961] mux: Failed to setup hwmod io irq -22<br />
[ 1.659759] Power Management for AM33XX family<br />
[ 1.664672] Trying to load am335x-pm-firmware.bin (60 secs timeout)<br />
[ 1.671417] Copied the M3 firmware to UMEM<br />
[ 1.681396] registered taskstats version 1<br />
[ 1.686035] Detected MACID=d4:94:a1:39:ed:c<br />
[ 1.691589] omap_rtc omap_rtc: setting system clock to 2000-01-01 01:35:27 UTC (946690527)<br />
[ 1.701171] Waiting for root device /dev/mmcblk0p2...<br />
[ 1.741912] mmc0: host does not support reading read-only switch. assuming write-enable.<br />
[ 1.753051] mmc0: new high speed SDHC card at address 1234<br />
[ 1.759460] mmcblk0: mmc0:1234 SA04G 3.67 GiB <br />
[ 1.766632] mmcblk0: p1 p2<br />
[ 1.830230] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)<br />
[ 1.838897] VFS: Mounted root (ext4 filesystem) readonly on device 179:2.<br />
[ 1.856109] devtmpfs: mounted<br />
[ 1.859680] Freeing init memory: 224K<br />
<br />
Welcome to �[1;35mThe Ångström Distribution�[0m!<br />
<br />
[ 2.390228] NET: Registered protocol family 10<br />
Starting udev Coldplug all Devices... <br />
Starting Remount API VFS... <br />
Starting Temporary Directory... <br />
Started Set Up Additional Binary Formats [�[1;32m OK �[0m]<br />
Started Huge Pages File System [�[1;32m OK �[0m]<br />
Starting Debug File System... <br />
Starting POSIX Message Queue File System... <br />
Starting Apply Kernel Variables... <br />
Starting Journal Service... <br />
Started Journal Service [�[1;32m OK �[0m]<br />
Starting Load Kernel Modules... <br />
Starting udev Kernel Device Manager... <br />
Starting File System Check on Root Device... <br />
Started Remount API VFS [�[1;32m OK �[0m]<br />
Started Temporary Directory [�[1;32m OK �[0m]<br />
Started Debug File System [ 3.278259] udevd[64]: starting version 182<br />
[�[1;32m OK �[0m]<br />
Started udev Kernel Device Manager [�[1;32m OK �[0m]<br />
Started POSIX Message Queue File System [�[1;32m OK �[0m]<br />
Started Apply Kernel Variables [ 3.322021] Bluetooth: Core ver 2.16<br />
[ 3.326080] NET: Registered protocol family 31<br />
[[ 3.332092] Bluetooth: HCI device and connection manager initialized<br />
�[1;32m OK �[0[ 3.340179] Bluetooth: HCI socket layer initialized<br />
m]<br />
[ 3.346710] Bluetooth: L2CAP socket layer initialized<br />
[ 3.352416] Bluetooth: SCO socket layer initialized<br />
[ 3.416198] Bluetooth: HIDP (Human Interface Emulation) ver 1.2<br />
Started udev Coldplug all Devices [�[1;32m OK �[0m]<br />
[ 3.529388] NET: Registered protocol family 23<br />
[ 3.573181] IrCOMM protocol (Dag Brattli)<br />
[ 3.664764] Bluetooth: RFCOMM TTY layer initialized<br />
[ 3.669982] Bluetooth: RFCOMM socket layer initialized<br />
[ 3.675476] Bluetooth: RFCOMM ver 1.11<br />
Started Load Kernel Modules [�[1;32m OK �[0m]<br />
Started Configuration File System [�[1;32m OK �[0m]<br />
Started FUSE Control File System [�[1;32m OK �[0m]<br />
systemd-fsck[65]: Angstrom-Cloud9: clean, 51905/218592 files, 304442/873534 blocks<br />
Started File System Check on Root Device [�[1;32m OK �[0m]<br />
Starting Remount Root FS... <br />
[ 4.846923] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)<br />
Started Remount Root FS [�[1;32m OK �[0m]<br />
Started Run pending postinsts [�[1;32m OK �[0m]<br />
Starting Load Random Seed... <br />
Starting Recreate Volatile Files and Directories... <br />
Started Machine ID first boot configure [�[1;32m OK �[0m]<br />
Started Load Random Seed [�[1;32m OK �[0m]<br />
Started Recreate Volatile Files and Directories [�[1;32m OK �[0m]<br />
Starting Console System Startup Logging... <br />
Starting Restore Sound Card State... <br />
Starting xinetd.service... <br />
Starting Periodic Command Scheduler... <br />
Started Periodic Command Scheduler [�[1;32m OK �[0m]<br />
Starting Avahi mDNS/DNS-SD Stack... <br />
Starting Connection service... <br />
Starting Timestamping service... <br />
Started Timestamping service [�[1;32m OK �[0m]<br />
Starting Angstrom LED config... <br />
Started Angstrom LED config [�[1;32m OK �[0m]<br />
Starting Beaglebone cape support... <br />
Starting Start usb mass storage gadget... <br />
Started Start usb mass storage gadget [�[1;32m OK �[0m]<br />
Starting Beaglebone 101 presentation... <br />
Started Beaglebone 101 presentation [�[1;32m OK �[0m]<br />
Starting Cloud9 IDE... <br />
Started Cloud9 IDE [�[1;32m OK �[0m]<br />
Starting GateOne daemon... <br />
Started GateOne daemon [�[1;32m OK �[0m]<br />
[ 5.884307] gadget: Mass Storage Function, version: 2009/09/11<br />
[ 5.890625] gadget: Number of LUNs=1<br />
[ 5.894561] lun0: LUN: removable file: /dev/mmcblk0p1<br />
[ 5.900024] gadget: Mass Storage Gadget, version: 2009/09/11<br />
[ 5.906127] gadget: userspace failed to provide iSerialNumber<br />
[ 5.912322] gadget: g_mass_storage ready<br />
[ 5.916564] musb-hdrc musb-hdrc.0: MUSB HDRC host driver<br />
[ 5.922241] musb-hdrc musb-hdrc.0: new USB bus registered, assigned bus number 2<br />
[ 5.930175] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002<br />
[ 5.937377] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1<br />
[ 5.945007] usb usb2: Product: MUSB HDRC host driver<br />
<br />
[ 5.950256] usb usb2: Manufacturer: Linux 3.2.25 musb-hcd<br />
<br />
[ 5.955963] usb usb2: SerialNumber: musb-hdrc.0<br />
[ 5.979034] hub 2-0:1.0: USB hub found<br />
[ 5.983123] hub 2-0:1.0: 1 port detected<br />
[ 5.987304] musb_g_ep0_irq 720: SetupEnd came in a wrong ep0stage setup<br />
Started SSH Key Generation [�[1;32m OK �[0m]<br />
Starting Login Service... <br />
Starting BeagleBone Tester... <br />
Started BeagleBone Tester [�[1;32m OK �[0m]<br />
Starting Permit User Sessions... <br />
Starting D-Bus System Message Bus... <br />
Started Console System Startup Logging [�[1;32m OK �[0m]<br />
Started Restore Sound Card State [�[1;32m OK �[0m]<br />
Started Permit User Sessions [ 6.350128] gadget: high-speed config #1: Linux File-Backed Storage<br />
[�[1;32m OK �[0m]<br />
Starting Getty on tty1... <br />
Started Getty on tty1 [�[1;32m OK �[0m]<br />
Starting Serial Getty on ttyO0... <br />
Started Serial Getty on ttyO0 Started D-Bus System Message Bus [�[1;32m OK �[0m]<br />
xinetd[215]: Starting internet superserver: xinetd.<br />
Started xinetd.service [�[1;32m OK �[0m]<br />
Starting pvr-init.service... <br />
Started Beaglebone cape support [�[1;32m OK �[0m]<br />
Started pvr-init.service [�[1;32m OK �[0m]<br />
Started Avahi mDNS/DNS-SD Stack [�[1;32m OK �[0m]<br />
Started Connection service [�[1;32m OK �[0m]<br />
Started Login Service [�[1;32m OK �[0m]<br />
[ 7.832397] ip_tables: (C) 2000-2006 Netfilter Core Team<br />
[ 8.227478] <br />
[ 8.227478] CPSW phy found : id is : 0x7c0f1<br />
[ 8.234436] PHY 0:01 not found<br />
[ 8.262908] ADDRCONF(NETDEV_UP): eth0: link is not ready<br />
Starting Gnome Display Manager... <br />
Started Gnome Display Manager [�[1;32m OK �[0m]<br />
[ 12.222229] PHY: 0:00 - Link is Up - 100/Full<br />
[ 12.227050] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready<br />
<br />
.---O---. <br />
| | .-. o o <br />
| | |-----.-----.-----.| | .----..-----.-----.<br />
| | | __ | ---'| '--.| .-'| | |<br />
| | | | | |--- || --'| | | ' | | | |<br />
'---'---'--'--'--. |-----''----''--' '-----'-'-'-'<br />
-' |<br />
'---'<br />
<br />
The Angstrom Distribution beaglebone ttyO0<br />
<br />
Angstrom v2012.05 - Kernel 3.2.25<br />
<br />
beaglebone login: root<br />
Last login: Tue Aug 14 10:24:19 UTC 2012 on ttyO0<br />
root@beaglebone:~# <br />
</pre><br />
<br />
=== Stopping kernel ===<br />
<br />
<pre><br />
shutdown -r now <br />
beagle$<br />
Stopping /etc/machine-id... <br />
Stopping Timestamping service... <br />
Stopping Angstrom LED config... <br />
Stopping Beaglebone cape support... <br />
Stopping Start usb mass storage gadget... <br />
Stopping Gnome Display Manager... <br />
Stopping Periodic Command Scheduler... <br />
Stopping Avahi mDNS/DNS-SD Stack... <br />
Stopping Connection service... <br />
Stopping BeagleStopping pvr-init.service... <br />
Starting Store Sound Card State... <br />
Starting Save Random Seed... <br />
Stopped Periodic Command Scheduler [�[1;32m OK �[0m]<br />
Stopped Cloud9 IDE [�[1;32m OK �[0m]<br />
Stopped Login Service [�[1;32m OK �[0m]<br />
Stopped Serial Getty on ttyO0 [�[1;32m OK �[0m]<br />
Stopped Getty on tty1 [�[1;32m OK �[0m]<br />
Stopped GateOne daemon [�[1;32m OK �[0m]<br />
Stopped Beaglebone 101 presentation [�[1;32m OK �[0m]<br />
Stopped Gnome Display Manager [�[1;32m OK �[0m]<br />
Stopped /etc/mac[ 832.455993] musb-hdrc musb-hdrc.0: remove, state 1<br />
hine-id [ 832.461822] usb usb2: USB disconnect, device number 1<br />
[�[1;32m OK �[0m]<br />
Stopping Permit User Sessions... <br />
Started Save Random Seed [�[1;32m OK �[0m]<br />
Stopped D-Bus Sy[ 832.563262] musb-hdrc musb-hdrc.0: USB bus 2 deregistered<br />
stem Message Bus [�[1;32m OK �[0m]<br />
Failed to start Store Sound Card State [�[1;31mFAILED�[0m]<br />
See 'systemctl status alsa-store.service' for details. <br />
Stopped Start usb mass storage gadget [�[1;32m OK �[0m]<br />
Stopped pvr-init.service [�[1;32m OK �[0m]<br />
Stopped Permit User Sessions [�[1;32m OK �[0m]<br />
Stopping xinetd.service... <br />
Stopped Avahi mDNS/DNS-SD Stack [�[1;32m OK �[0m]<br />
Stopped xinetd.service [�[1;32m OK �[0m]<br />
Stopped Timestamping service [�[1;32m OK �[0m]<br />
Stopped Beaglebone cape support [�[1;32m OK �[0m]<br />
Stopped Angstrom LED config [�[1;32m OK �[0m]<br />
xinetd[360]: Stopping internet superserver: xinetd.<br />
[ 833.796325] Bridge firewalling registered<br />
Stopped Connection service [�[1;32m OK �[0m]<br />
Starting Console System Reboot Logging... <br />
Stopping Apply Kernel Variables... <br />
Stopped Apply Kernel Variables [�[1;32m OK �[0m]<br />
Stopping Load Kernel Modules... <br />
Stopped Load Kernel Modules [�[1;32m OK �[0m]<br />
Starting Notify Audit System and Update UTMP about System Shutdown... <br />
Stopping Remount API VFS... <br />
Stopped Remount API VFS [�[1;32m OK �[0m]<br />
Stopping Temporary Directory... <br />
Stopping Remount Root FS... <br />
Stopped Remount Root FS [�[1;32m OK �[0m]<br />
Started Console System Reboot Logging [�[1;32m OK �[0m]<br />
Stopped Temporary Directory [�[1;32m OK �[0m]<br />
Sending SIGTERM to remaining processes...<br />
Sending SIGKILL to remaining processes...<br />
Unmounting file systems.<br />
Unmounted /dev/mqueue.<br />
Unmounted /sys/kernel/debug.<br />
[ 873.316955] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)<br />
Disabling swaps.<br />
Detaching loop devices.<br />
Detaching DM devices.<br />
[ 873.362060] musb-hdrc musb-hdrc.1: remove, state 1<br />
[ 873.367248] usb usb1: USB disconnect, device number 1<br />
[ 873.373565] musb-hdrc musb-hdrc.1: USB bus 1 deregistered<br />
[ 873.379669] Restarting system.<br />
</pre><br />
<br />
== systemd ==<br />
<pre><br />
beagle$ systemctl<br />
UNIT LOAD ACTIVE SUB JOB DESCRIPTION<br />
proc-sys...misc.automount loaded active running Arbitrary Executable File Formats File System Automount Point<br />
sys-devi...et-eth0.device loaded active plugged /sys/devices/platform/cpsw.0/net/eth0<br />
sys-devi...et-usb0.device loaded active plugged /sys/devices/platform/omap/musb-ti81xx/musb-hdrc.0/gadget/net/usb0<br />
sys-devi...cblk0p1.device loaded active plugged /sys/devices/platform/omap/omap_hsmmc.0/mmc_host/mmc0/mmc0:1234/block/mmcblk0/mmcblk0p<br />
sys-devi...cblk0p2.device loaded active plugged /sys/devices/platform/omap/omap_hsmmc.0/mmc_host/mmc0/mmc0:1234/block/mmcblk0/mmcblk0p<br />
sys-devi...mmcblk0.device loaded active plugged /sys/devices/platform/omap/omap_hsmmc.0/mmc_host/mmc0/mmc0:1234/block/mmcblk0<br />
sys-devi...y-ttyO0.device loaded active plugged /sys/devices/platform/omap/omap_uart.0/tty/ttyO0<br />
sys-devi...y-ttyO1.device loaded active plugged /sys/devices/platform/omap/omap_uart.1/tty/ttyO1<br />
sys-devi...y-ttyO2.device loaded active plugged /sys/devices/platform/omap/omap_uart.2/tty/ttyO2<br />
sys-devi...y-ttyO3.device loaded active plugged /sys/devices/platform/omap/omap_uart.3/tty/ttyO3<br />
sys-devi...y-ttyO4.device loaded active plugged /sys/devices/platform/omap/omap_uart.4/tty/ttyO4<br />
sys-devi...y-ttyO5.device loaded active plugged /sys/devices/platform/omap/omap_uart.5/tty/ttyO5<br />
sys-devi...y-ttyS0.device loaded active plugged /sys/devices/platform/serial8250/tty/ttyS0<br />
sys-devi...y-ttyS1.device loaded active plugged /sys/devices/platform/serial8250/tty/ttyS1<br />
sys-devi...y-ttyS2.device loaded active plugged /sys/devices/platform/serial8250/tty/ttyS2<br />
sys-devi...y-ttyS3.device loaded active plugged /sys/devices/platform/serial8250/tty/ttyS3<br />
sys-devi...et-sit0.device loaded active plugged /sys/devices/virtual/net/sit0<br />
sys-devi...ty-tty0.device loaded active plugged /sys/devices/virtual/tty/tty0<br />
sys-devi...ty-tty1.device loaded active plugged /sys/devices/virtual/tty/tty1<br />
sys-devi...y-tty10.device loaded active plugged /sys/devices/virtual/tty/tty10<br />
sys-devi...y-tty11.device loaded active plugged /sys/devices/virtual/tty/tty11<br />
sys-devi...y-tty12.device loaded active plugged /sys/devices/virtual/tty/tty12<br />
sys-devi...ty-tty2.device loaded active plugged /sys/devices/virtual/tty/tty2<br />
sys-devi...ty-tty3.device loaded active plugged /sys/devices/virtual/tty/tty3<br />
sys-devi...ty-tty4.device loaded active plugged /sys/devices/virtual/tty/tty4<br />
sys-devi...ty-tty5.device loaded active plugged /sys/devices/virtual/tty/tty5<br />
sys-devi...ty-tty6.device loaded active plugged /sys/devices/virtual/tty/tty6<br />
sys-devi...ty-tty7.device loaded active plugged /sys/devices/virtual/tty/tty7<br />
sys-devi...ty-tty8.device loaded active plugged /sys/devices/virtual/tty/tty8<br />
sys-devi...ty-tty9.device loaded active plugged /sys/devices/virtual/tty/tty9<br />
-.mount loaded active mounted /<br />
dev-mqueue.mount loaded active mounted POSIX Message Queue File System<br />
etc-machine\x2did.mount loaded active mounted /etc/machine-id<br />
proc-sys...fmt_misc.mount loaded active mounted Arbitrary Executable File Formats File System<br />
sys-kernel-debug.mount loaded active mounted Debug File System<br />
tmp.mount loaded active mounted Temporary Directory<br />
systemd-...d-console.path loaded active waiting Dispatch Password Requests to Console Directory Watch<br />
systemd-...word-wall.path loaded active waiting Forward Password Requests to Wall Directory Watch<br />
avahi-daemon.service loaded active running Avahi mDNS/DNS-SD Stack<br />
bone101.service loaded active running Beaglebone 101 presentation<br />
cape.service loaded active exited Beaglebone cape support<br />
cloud9.service loaded active running Cloud9 IDE<br />
connman.service loaded active running Connection service<br />
console-...-start.service loaded active exited Console System Startup Logging<br />
crond.service loaded active running Periodic Command Scheduler<br />
dbus.service loaded active running D-Bus System Message Bus<br />
dropbear...:59238.service loaded active running SSH Per-Connection Server<br />
gateone.service loaded active running GateOne daemon<br />
gdm.service loaded active running Gnome Display Manager<br />
getty@tty1.service loaded active running Getty on tty1<br />
leds.service loaded active exited Angstrom LED config<br />
network-...t-init.service loaded active exited Start USB Ethernet gadget<br />
pvr-init.service loaded active exited pvr-init.service<br />
remount-rootfs.service loaded active exited Remount Root FS<br />
serial-g...@ttyO0.service loaded active running Serial Getty on ttyO0<br />
systemd-journald.service loaded active running Journal Service<br />
systemd-logind.service loaded active running Login Service<br />
systemd-...s-load.service loaded active exited Load Kernel Modules<br />
systemd-...pi-vfs.service loaded active exited Remount API VFS<br />
systemd-sysctl.service loaded active exited Apply Kernel Variables<br />
systemd-...-setup.service loaded active exited Recreate Volatile Files and Directories<br />
systemd-...ssions.service loaded active exited Permit User Sessions<br />
timestamp.service loaded active exited Timestamping service<br />
udev-trigger.service loaded active exited udev Coldplug all Devices<br />
udev.service loaded active running udev Kernel Device Manager<br />
udhcpd.service loaded active running DHCP server for USB0 network gadget<br />
xinetd.service loaded active exited xinetd.service<br />
avahi-daemon.socket loaded active listening Avahi mDNS/DNS-SD Stack Activation Socket<br />
dbus.socket loaded active running D-Bus System Message Bus Socket<br />
dropbear.socket loaded active listening dropbear.socket<br />
systemd-initctl.socket loaded active listening /dev/initctl Compatibility Named Pipe<br />
systemd-journald.socket loaded active running Journal Socket<br />
systemd-shutdownd.socket loaded active listening Delayed Shutdown Socket<br />
udev-control.socket loaded active listening udev Control Socket<br />
udev-kernel.socket loaded active running udev Kernel Socket<br />
basic.target loaded active active Basic System<br />
getty.target loaded active active Login Prompts<br />
graphical.target loaded active active Graphical Interface<br />
local-fs-pre.target loaded active active Local File Systems (Pre)<br />
local-fs.target loaded active active Local File Systems<br />
multi-user.target loaded active active Multi-User<br />
remote-fs.target loaded active active Remote File Systems<br />
sockets.target loaded active active Sockets<br />
swap.target loaded active active Swap<br />
sysinit.target loaded active active System Initialization<br />
systemd-...es-clean.timer loaded active waiting Daily Cleanup of Temporary Directories<br />
<br />
LOAD = Reflects whether the unit definition was properly loaded.<br />
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.<br />
SUB = The low-level unit activation state, values depend on unit type.<br />
JOB = Pending job for the unit.<br />
<br />
86 units listed. Pass --all to see inactive units, too.<br />
</pre><br />
<br />
{{YoderFoot}}</div>Draneawhttps://elinux.org/index.php?title=ECE497_Memo_Format&diff=190280ECE497 Memo Format2012-11-08T03:11:08Z<p>Draneaw: /* Format */</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
== Outline ==<br />
This is to define what is expected in the weekly memo's for ECE-497.<br />
<br />
== Format ==<br />
<br />
* I have Simply made this page so that the proper formatting could be elaborated by someone who knows what the proper formatting is *</div>Draneawhttps://elinux.org/index.php?title=ECE497_Memo_Format&diff=190274ECE497 Memo Format2012-11-08T03:08:36Z<p>Draneaw: Created page with "Category:ECE497 {{YoderHead}} == Outline == This is to define what is expected in the weekly memo's for ECE-497. == Format =="</p>
<hr />
<div>[[Category:ECE497]]<br />
{{YoderHead}}<br />
<br />
== Outline ==<br />
This is to define what is expected in the weekly memo's for ECE-497.<br />
<br />
== Format ==</div>Draneawhttps://elinux.org/index.php?title=EBC_Memo_01&diff=190268EBC Memo 012012-11-08T03:06:19Z<p>Draneaw: </p>
<hr />
<div>[[Category:ECE497 |Memo]]<br />
{{YoderHead}}<br />
<br />
{|<br />
! Exercise<br />
! Looked For<br />
|-<br />
| X<br />
| Used [[ECE497_Memo_Format | correct]] format<br />
|-<br />
| 02<br />
| Successful Internet connection<br />
|-<br />
| 03<br />
| Wrote an SD card<br />
|-<br />
| 05<br />
| A successful git of the course materials<br />
|-<br />
| 08<br />
| Noted bitbake worked for the kernel and u-boot<br />
|-<br />
| 09<br />
| Created a User account on eLinux<br />
Edited the wiki<br />
<br />
Posted a response on the main BeagleBoard Google group<br />
<br />
Posted a response on the ECE497 BeagleBoard group<br />
<br />
Subscribed for email delivery on the ECE497 group<br />
|-<br />
| 10<br />
| Flashed an LED<br />
<br />
Read a switch<br />
<br />
Read analog in<br />
|-<br />
| 11<br />
| Noted it was done<br />
|-<br />
| 16<br />
| Name appears in Hello World<br />
|}<br />
<br />
{{YoderFoot}}</div>Draneawhttps://elinux.org/index.php?title=EBC_Memo_01&diff=190256EBC Memo 012012-11-08T03:05:13Z<p>Draneaw: </p>
<hr />
<div>[[Category:ECE497 |Memo]]<br />
{{YoderHead}}<br />
<br />
{|<br />
! Exercise<br />
! Looked For<br />
|-<br />
| X<br />
| Used [ECE497_Memo_Format] correct format<br />
|-<br />
| 02<br />
| Successful Internet connection<br />
|-<br />
| 03<br />
| Wrote an SD card<br />
|-<br />
| 05<br />
| A successful git of the course materials<br />
|-<br />
| 08<br />
| Noted bitbake worked for the kernel and u-boot<br />
|-<br />
| 09<br />
| Created a User account on eLinux<br />
Edited the wiki<br />
<br />
Posted a response on the main BeagleBoard Google group<br />
<br />
Posted a response on the ECE497 BeagleBoard group<br />
<br />
Subscribed for email delivery on the ECE497 group<br />
|-<br />
| 10<br />
| Flashed an LED<br />
<br />
Read a switch<br />
<br />
Read analog in<br />
|-<br />
| 11<br />
| Noted it was done<br />
|-<br />
| 16<br />
| Name appears in Hello World<br />
|}<br />
<br />
{{YoderFoot}}</div>Draneawhttps://elinux.org/index.php?title=EBC_Memo_01&diff=190250EBC Memo 012012-11-08T03:04:32Z<p>Draneaw: </p>
<hr />
<div>[[Category:ECE497 |Memo]]<br />
{{YoderHead}}<br />
<br />
{|<br />
! Exercise<br />
! Looked For<br />
|-<br />
| X<br />
| Used [[ECE497_Memo_Format correct]] format<br />
|-<br />
| 02<br />
| Successful Internet connection<br />
|-<br />
| 03<br />
| Wrote an SD card<br />
|-<br />
| 05<br />
| A successful git of the course materials<br />
|-<br />
| 08<br />
| Noted bitbake worked for the kernel and u-boot<br />
|-<br />
| 09<br />
| Created a User account on eLinux<br />
Edited the wiki<br />
<br />
Posted a response on the main BeagleBoard Google group<br />
<br />
Posted a response on the ECE497 BeagleBoard group<br />
<br />
Subscribed for email delivery on the ECE497 group<br />
|-<br />
| 10<br />
| Flashed an LED<br />
<br />
Read a switch<br />
<br />
Read analog in<br />
|-<br />
| 11<br />
| Noted it was done<br />
|-<br />
| 16<br />
| Name appears in Hello World<br />
|}<br />
<br />
{{YoderFoot}}</div>Draneawhttps://elinux.org/index.php?title=Adafruit:_Bicolor_LED_Square_Pixel_Matrix&diff=190244Adafruit: Bicolor LED Square Pixel Matrix2012-11-08T02:51:37Z<p>Draneaw: /* Code */</p>
<hr />
<div>[[Category:ECE497]][[Category:Adafruit]]<br />
<br />
<pre style="color:red"><br />
Overview: 2<br />
Wiring: 0<br />
Code: 1<br />
git/Compiles with make: 0<br />
Demo: 0<br />
Total: 3<br />
Comments: It's good you have it working. Now you need to fix up this page.<br />
Assume you are writing to someone who wants to know how to use the device. Show a picture<br />
of it. Note the importance of soldering the display on correctly. Give wiring instructions.<br />
Be specific, where do I wire the power? Where does the clock go, etc. How is the voltage<br />
level converter wired in? Show a picture of the wiring.<br />
<br />
Clean up Greg's code an put it in your github repository. Include a Makefile<br />
Give me a demo.<br />
<br />
Can you have this done in a week? 24-Oct-2012?<br />
</pre><br />
<br />
{{YoderHead}}<br />
Page by Alex Drane, Peter Ngo<br />
== Summary ==<br />
This page details project work done while working on the 8x8 Bicolor LED Pixel Matrix from Adafruit found here: [https://www.adafruit.com/products/902 Store Link]<br />
<br />
This device responds to standard I2C write and Read commands on the 3rd I2C Device at 0x70 device address.<br />
<br />
<br />
IMPORTANT!!! When soldering the led matrix to the controller make sure that it is placed correctly. If it is not, then the device will still communicate but the LED Matrix will not turn on.<br />
<br />
== Wiring Information ==<br />
The device relies on the 5V source on the board and to insure functionality an I2C voltage<br />
level converter is used to boost the 3.3V I2C voltage to 5V. The voltage<br />
level converter is hooked up according to the photo. Starting from the top left of the device: SCL 5V, 5V Rail, Reset(Pulled up to 3.3V), SCL 3.3V In. Bottom Left: SDA 5V, Ground, 3.3V, SDA 3.3V.<br />
<br />
The LED Matrix is wired from left to right: 5V, Ground, SDA, SCL.<br />
<br />
The tenth pin from the Right on row 1 of the P9 IO Rail on the Beagle (Count from the 5V Line in) is the SCL pin and the pin on row 2 is the SDA pin. Starting from the right on P9 top row is: Ground, 3.3V, Skip, 5V. <br />
<br />
[[File:MiniProject2WiringDiagram.png|200px|thumb|left|Wiring Diagram]]<br />
<br />
== Code ==<br />
The code is hosted on github here: [https://github.com/draneaw/MiniProject2 8x8 Led Grid Basic Code]<br />
<br />
This is a very simple code implementation that is only to verify that the matrix works. For a further implementation of the 8x8 Matrix see the Mini Project 4 project here: [https://github.com/draneaw/MiniProject4.git Node.js Advanced Implementation]</div>Draneawhttps://elinux.org/index.php?title=Adafruit:_Bicolor_LED_Square_Pixel_Matrix&diff=190238Adafruit: Bicolor LED Square Pixel Matrix2012-11-08T02:31:28Z<p>Draneaw: </p>
<hr />
<div>[[Category:ECE497]][[Category:Adafruit]]<br />
<br />
<pre style="color:red"><br />
Overview: 2<br />
Wiring: 0<br />
Code: 1<br />
git/Compiles with make: 0<br />
Demo: 0<br />
Total: 3<br />
Comments: It's good you have it working. Now you need to fix up this page.<br />
Assume you are writing to someone who wants to know how to use the device. Show a picture<br />
of it. Note the importance of soldering the display on correctly. Give wiring instructions.<br />
Be specific, where do I wire the power? Where does the clock go, etc. How is the voltage<br />
level converter wired in? Show a picture of the wiring.<br />
<br />
Clean up Greg's code an put it in your github repository. Include a Makefile<br />
Give me a demo.<br />
<br />
Can you have this done in a week? 24-Oct-2012?<br />
</pre><br />
<br />
{{YoderHead}}<br />
Page by Alex Drane, Peter Ngo<br />
== Summary ==<br />
This page details project work done while working on the 8x8 Bicolor LED Pixel Matrix from Adafruit found here: [https://www.adafruit.com/products/902 Store Link]<br />
<br />
This device responds to standard I2C write and Read commands on the 3rd I2C Device at 0x70 device address.<br />
<br />
<br />
IMPORTANT!!! When soldering the led matrix to the controller make sure that it is placed correctly. If it is not, then the device will still communicate but the LED Matrix will not turn on.<br />
<br />
== Wiring Information ==<br />
The device relies on the 5V source on the board and to insure functionality an I2C voltage<br />
level converter is used to boost the 3.3V I2C voltage to 5V. The voltage<br />
level converter is hooked up according to the photo. Starting from the top left of the device: SCL 5V, 5V Rail, Reset(Pulled up to 3.3V), SCL 3.3V In. Bottom Left: SDA 5V, Ground, 3.3V, SDA 3.3V.<br />
<br />
The LED Matrix is wired from left to right: 5V, Ground, SDA, SCL.<br />
<br />
The tenth pin from the Right on row 1 of the P9 IO Rail on the Beagle (Count from the 5V Line in) is the SCL pin and the pin on row 2 is the SDA pin. Starting from the right on P9 top row is: Ground, 3.3V, Skip, 5V. <br />
<br />
[[File:MiniProject2WiringDiagram.png|200px|thumb|left|Wiring Diagram]]<br />
<br />
== Code ==<br />
The code is hosted on github here: [https://github.com/draneaw/MiniProject2 8x8 Led Grid Basic Code]<br />
<br />
This is a very simple code implementation that is only to verify that the matrix works. For a further implementation of the 8x8 Matrix see the Mini Project 4 project here:</div>Draneawhttps://elinux.org/index.php?title=Adafruit:_Bicolor_LED_Square_Pixel_Matrix&diff=190196Adafruit: Bicolor LED Square Pixel Matrix2012-11-08T01:55:39Z<p>Draneaw: /* Summary */</p>
<hr />
<div>[[Category:ECE497]][[Category:Adafruit]]<br />
<br />
<pre style="color:red"><br />
Overview: 2<br />
Wiring: 0<br />
Code: 1<br />
git/Compiles with make: 0<br />
Demo: 0<br />
Total: 3<br />
Comments: It's good you have it working. Now you need to fix up this page.<br />
Assume you are writing to someone who wants to know how to use the device. Show a picture<br />
of it. Note the importance of soldering the display on correctly. Give wiring instructions.<br />
Be specific, where do I wire the power? Where does the clock go, etc. How is the voltage<br />
level converter wired in? Show a picture of the wiring.<br />
<br />
Clean up Greg's code an put it in your github repository. Include a Makefile<br />
Give me a demo.<br />
<br />
Can you have this done in a week? 24-Oct-2012?<br />
</pre><br />
<br />
{{YoderHead}}<br />
Page by Alex Drane, Peter Ngo<br />
== Summary ==<br />
This page details project work done while working on the 8x8 Bicolor LED Pixel Matrix from Adafruit found here: [https://www.adafruit.com/products/902 Store Link]<br />
<br />
This device responds to standard I2C write and Read commands on the 3rd I2C Device at 0x70 device address.<br />
<br />
<br />
IMPORTANT!!! When soldering the led matrix to the controller make sure that it is placed correctly. If it is not, then the device will still communicate but the LED Matrix will not turn on.<br />
<br />
== Wiring Information ==<br />
The device relies on the 5V source on the board and to insure functionality an I2C voltage<br />
level converter is used to boost the 3.3V I2C voltage to 5V. The voltage<br />
level converter is hooked up according to the photo. Starting from the top left of the device: SCL 5V, 5V Rail, Reset(Pulled up to 3.3V), SCL 3.3V In. Bottom Left: SDA 5V, Ground, 3.3V, SDA 3.3V.<br />
<br />
The LED Matrix is wired from left to right: 5V, Ground, SDA, SCL.<br />
<br />
The tenth pin from the Right on row 1 of the P9 IO Rail on the Beagle (Count from the 5V Line in) is the SCL pin and the pin on row 2 is the SDA pin. Starting from the right on P9 top row is: Ground, 3.3V, Skip, 5V. <br />
<br />
[[File:MiniProject2WiringDiagram.png|200px|thumb|left|Wiring Diagram]]</div>Draneawhttps://elinux.org/index.php?title=EBC_Mini_Project_02&diff=190190EBC Mini Project 022012-11-08T01:55:19Z<p>Draneaw: /* Sparkfun */</p>
<hr />
<div>[[Category:ECE497 |Mini02]]<br />
{{YoderHead}}<br />
<br />
Pick one of the senors from the [https://www.sparkfun.com/products/11016 SparkFun Sensor Kit] or from [http://adafruit.com Adafruit] and interface it to the Bone. Create a wiki page describing how to use the sensor.<br />
<br />
Add your name next to the sensor/display you want to use and pick it up from me.<br />
<br />
== Sparkfun ==<br />
<br />
{|<br />
! Name<br />
! Sensor<br />
! Description<br />
|-<br />
| Josh Dugan<br />
| HMC5883L - Triple-Axis Magnetometer Breakout Board<br />
| An accurate, simple-to-use digital magnetometer with an I2C interface.<br />
|-<br />
| Ross Hansen<br />
| ADXL335 - Triple-Axis Accelerometer Breakout Board<br />
| Senses acceleration along all three axes, with a range of up to ±3g. Fully analog interface. [[Sparkfun:_ADXL335,_three-axis_accelerometer]]<br />
ITG-3200<br />
|-<br />
| <br />
| ADXL345 - Accelerometer Breakout Board<br />
| <br />
|-<br />
| Ruffin White<br />
| Triple-Axis Gyro Breakout Board<br />
| Senses angular velocity along three axes of rotation. Fully digital interface with a range of up to ±2000°/s. [[Sparkfun:_ITG-3200,Triple-Axis_Gyro]]<br />
|-<br />
| Kevin Geisler<br />
| [[Large Piezo Vibration Sensor - With Mass]]<br />
| A flexible film able to sense for vibration, touch, shock, etc. When the film moves back and forth an AC wave is created, with a voltage of up to ±90.<br />
|-<br />
| Mark A. Yoder<br />
| Reed Switch<br />
| Senses magnetic fields, makes for a great non-contact switch.<br />
|-<br />
| Mark A. Yoder<br />
| 0.25" Magnet Square<br />
| Plays nicely with the reed switch. Embed the magnet into stuffed animals or inside a box to create a hidden actuator to the reed switch.<br />
|-<br />
| Stephen Shinn<br />
| [[Sparkfun: 0.5" Force Sensitive Resistor|0.5" Force Sensitive Resistor]]<br />
| A force sensing resistor with a 0.5" diameter sensing area. Great for sensing pressure (i.e. if it's being squeezed).<br />
|-<br />
| Tom Atnip<br />
| [[Sparkfun:_PIR_Motion_Sensor]]<br />
| Easy-to-use motion detector with an analog interface. Power it with 5-12VDC, and you'll be alerted of any movement.<br />
|-<br />
|<br />
| Ultrasonic Rangefinder - Maxbotix LV-EZ1<br />
| Distance sensor with both analog and RS-232 interfaces, providing sonar range information from 6 to 254 inches.<br />
|-<br />
| <br />
| HIH-4030 Humidity Sensor<br />
| A high precision humidity sensor with an analog output.<br />
|-<br />
| Andrew Miller<br />
| IR Receiver Breakout Board<br />
| An analog interfaced IR receiver, sensitive to a wide range of IR waves. Great for 'listening' to TV remotes.<br />
|-<br />
| James Popenhagen<br />
| [[Mini Photocell]]<br />
| The photocell will vary its resistance based on how much light it's exposed to. Will vary from 1kΩ in the light to 10kΩ in the dark.<br />
|-<br />
| Peter Ngo & Bryan Correll<br />
| Optical Detector/Phototransistor<br />
| An all-in-one infrared emitter and detector. Ideal for sensing black-to-white transitions or can be used to detect nearby objects.<br />
|-<br />
| Jesse Brannon<br />
| BMP085 Barometric Pressure Sensor<br />
| Low power, high precision barometric pressure sensor with I2C output.<br />
|-<br />
| James Popenhagen<br />
| [[Flex Sensor]]<br />
| As the sensor is flexed, the resistance across the sensor increases. Useful for sensing motion or positioning<br />
|-<br />
| Chris Good<br />
| SoftPot<br />
| These are very thin variable potentiometers. By pressing on various positions along the strip, you vary the resistance<br />
|}<br />
<br />
== Adafruit ==<br />
<br />
{|<br />
! Name<br />
! Device<br />
! Description<br />
|-<br />
| Matthew Moravec & Yue Zhang<br />
| [https://www.adafruit.com/products/512 Analog 2-axis Thumb Joystick]<br />
| Analog 2-axis Thumb Joystick with Select Button + Breakout Board<br />
|-<br />
| <br />
| [https://www.adafruit.com/products/377 Rotary Encoder]<br />
| This rotary encoder is a high quality 24-pulse encoder, with detents and a nice feel. This encoder also has a push-button built into it so you can press onto the knob to close a separate switch. One side has a 3 pin connector (ground and two coding pins) and the other side has two pins for a normally-open switch.<br />
|-<br />
| <br />
| [https://www.adafruit.com/products/333 Touch screen (Nintendo DSL digitizer)]<br />
| This resistive touch screen can be used with a stylus or fingertip and is easy to use with a microcontroller. <br />
600 ohms across X pins, 300 ohms across Y pins<br />
4 wire resistive display, on a 0.5mm FPC connector<br />
|-<br />
|Xinyu Cheng <br />
| [https://www.adafruit.com/products/871 Mini 8x8 LED Matrix w/I2C - Yellow]<br />
|<br />
|-<br />
|Mike Junge <br />
|[https://www.adafruit.com/products/959 Mini 8x8 LED Matrix w/I2C - Blue]<br />
|<br />
|-<br />
|Xia Li<br />
|[https://www.adafruit.com/products/870 Mini 8x8 LED Matrix w/I2C - Red]<br />
|<br />
|-<br />
|Alex Drane<br />
|[[Bicolor LED Square Pixel Matrix]]<br />
| The matrices use a driver chip that does all the heavy lifting for you: They have a built in clock so they multiplex the display. They use constant-current drivers for ultra-bright, consistent color, 1/16 step display dimming, all via a simple I2C interface.<br />
|-<br />
| <br />
| [https://www.adafruit.com/products/812 Green 7-segment clock display]<br />
| These displays are multiplexed, common-cathode. What that means it that you can use a 74HC595. Sorry, I didn't order the version with i2c.<br />
|-<br />
| Sean Richardson<br />
| [https://www.adafruit.com/products/306 Digital Addressable RGB LED]<br />
| These LED strips are fun and glowy. There are 32 RGB LEDs per meter, and you can control each LED individually! We have 5 meters worth!<br />
|-<br />
| <br />
|-<br />
|Greg Larmore<br />
| [https://www.adafruit.com/products/555 16x24 Red LED Matrix Panel]<br />
| These LED panels take care of all the work of making a big matrix display. Each panel has six 8x8 red matrix modules, for a 16x24 matrix. The panel has a HT1632C chip on the back with does all the multiplexing work for you and has a 3-pin SPI-like serial interface to talk to it and set LEDs on or off (you cannot set the LED to be individually dimmed, as in 'grayscale'). There's a few extras as well, such as being able to change the brightness of the entire display, or blink the entire display at 1 Hz. [[Adafruit: 16x24 Red LED Matrix Panel]]<br />
|-<br />
|<br />
|-<br />
|John Lobdell<br />
| [https://www.adafruit.com/products/377 Rotary Encoder]<br />
|These rotary encoders rotate all the way around continuously, and are divided up into 24 'segments'. Each segment has a click-y feeling to it, and each movement clockwise or counter-clockwise causes the two switches to open and close. There is no way to know what the current 'position' is - instead you would use a microcontroller to count how many 'clicks' left or right it has been turned. If you need to detect rotational 'position' a potentiometer would be a better choice. [[Adafruit: Rotary Encoder]]<br />
|}<br />
<br />
{{YoderFoot}}</div>Draneawhttps://elinux.org/index.php?title=EBC_Mini_Project_02&diff=190184EBC Mini Project 022012-11-08T01:55:01Z<p>Draneaw: /* Adafruit */</p>
<hr />
<div>[[Category:ECE497 |Mini02]]<br />
{{YoderHead}}<br />
<br />
Pick one of the senors from the [https://www.sparkfun.com/products/11016 SparkFun Sensor Kit] or from [http://adafruit.com Adafruit] and interface it to the Bone. Create a wiki page describing how to use the sensor.<br />
<br />
Add your name next to the sensor/display you want to use and pick it up from me.<br />
<br />
== Sparkfun ==<br />
<br />
{|<br />
! Name<br />
! Sensor<br />
! Description<br />
|-<br />
| Josh Dugan<br />
| HMC5883L - Triple-Axis Magnetometer Breakout Board<br />
| An accurate, simple-to-use digital magnetometer with an I2C interface.<br />
|-<br />
| Ross Hansen<br />
| ADXL335 - Triple-Axis Accelerometer Breakout Board<br />
| Senses acceleration along all three axes, with a range of up to ±3g. Fully analog interface. [[Sparkfun:_ADXL335,_three-axis_accelerometer]]<br />
ITG-3200<br />
|-<br />
| Alex Drane<br />
| ADXL345 - Accelerometer Breakout Board<br />
| <br />
|-<br />
| Ruffin White<br />
| Triple-Axis Gyro Breakout Board<br />
| Senses angular velocity along three axes of rotation. Fully digital interface with a range of up to ±2000°/s. [[Sparkfun:_ITG-3200,Triple-Axis_Gyro]]<br />
|-<br />
| Kevin Geisler<br />
| [[Large Piezo Vibration Sensor - With Mass]]<br />
| A flexible film able to sense for vibration, touch, shock, etc. When the film moves back and forth an AC wave is created, with a voltage of up to ±90.<br />
|-<br />
| Mark A. Yoder<br />
| Reed Switch<br />
| Senses magnetic fields, makes for a great non-contact switch.<br />
|-<br />
| Mark A. Yoder<br />
| 0.25" Magnet Square<br />
| Plays nicely with the reed switch. Embed the magnet into stuffed animals or inside a box to create a hidden actuator to the reed switch.<br />
|-<br />
| Stephen Shinn<br />
| [[Sparkfun: 0.5" Force Sensitive Resistor|0.5" Force Sensitive Resistor]]<br />
| A force sensing resistor with a 0.5" diameter sensing area. Great for sensing pressure (i.e. if it's being squeezed).<br />
|-<br />
| Tom Atnip<br />
| [[Sparkfun:_PIR_Motion_Sensor]]<br />
| Easy-to-use motion detector with an analog interface. Power it with 5-12VDC, and you'll be alerted of any movement.<br />
|-<br />
|<br />
| Ultrasonic Rangefinder - Maxbotix LV-EZ1<br />
| Distance sensor with both analog and RS-232 interfaces, providing sonar range information from 6 to 254 inches.<br />
|-<br />
| <br />
| HIH-4030 Humidity Sensor<br />
| A high precision humidity sensor with an analog output.<br />
|-<br />
| Andrew Miller<br />
| IR Receiver Breakout Board<br />
| An analog interfaced IR receiver, sensitive to a wide range of IR waves. Great for 'listening' to TV remotes.<br />
|-<br />
| James Popenhagen<br />
| [[Mini Photocell]]<br />
| The photocell will vary its resistance based on how much light it's exposed to. Will vary from 1kΩ in the light to 10kΩ in the dark.<br />
|-<br />
| Peter Ngo & Bryan Correll<br />
| Optical Detector/Phototransistor<br />
| An all-in-one infrared emitter and detector. Ideal for sensing black-to-white transitions or can be used to detect nearby objects.<br />
|-<br />
| Jesse Brannon<br />
| BMP085 Barometric Pressure Sensor<br />
| Low power, high precision barometric pressure sensor with I2C output.<br />
|-<br />
| James Popenhagen<br />
| [[Flex Sensor]]<br />
| As the sensor is flexed, the resistance across the sensor increases. Useful for sensing motion or positioning<br />
|-<br />
| Chris Good<br />
| SoftPot<br />
| These are very thin variable potentiometers. By pressing on various positions along the strip, you vary the resistance<br />
|}<br />
<br />
== Adafruit ==<br />
<br />
{|<br />
! Name<br />
! Device<br />
! Description<br />
|-<br />
| Matthew Moravec & Yue Zhang<br />
| [https://www.adafruit.com/products/512 Analog 2-axis Thumb Joystick]<br />
| Analog 2-axis Thumb Joystick with Select Button + Breakout Board<br />
|-<br />
| <br />
| [https://www.adafruit.com/products/377 Rotary Encoder]<br />
| This rotary encoder is a high quality 24-pulse encoder, with detents and a nice feel. This encoder also has a push-button built into it so you can press onto the knob to close a separate switch. One side has a 3 pin connector (ground and two coding pins) and the other side has two pins for a normally-open switch.<br />
|-<br />
| <br />
| [https://www.adafruit.com/products/333 Touch screen (Nintendo DSL digitizer)]<br />
| This resistive touch screen can be used with a stylus or fingertip and is easy to use with a microcontroller. <br />
600 ohms across X pins, 300 ohms across Y pins<br />
4 wire resistive display, on a 0.5mm FPC connector<br />
|-<br />
|Xinyu Cheng <br />
| [https://www.adafruit.com/products/871 Mini 8x8 LED Matrix w/I2C - Yellow]<br />
|<br />
|-<br />
|Mike Junge <br />
|[https://www.adafruit.com/products/959 Mini 8x8 LED Matrix w/I2C - Blue]<br />
|<br />
|-<br />
|Xia Li<br />
|[https://www.adafruit.com/products/870 Mini 8x8 LED Matrix w/I2C - Red]<br />
|<br />
|-<br />
|Alex Drane<br />
|[[Bicolor LED Square Pixel Matrix]]<br />
| The matrices use a driver chip that does all the heavy lifting for you: They have a built in clock so they multiplex the display. They use constant-current drivers for ultra-bright, consistent color, 1/16 step display dimming, all via a simple I2C interface.<br />
|-<br />
| <br />
| [https://www.adafruit.com/products/812 Green 7-segment clock display]<br />
| These displays are multiplexed, common-cathode. What that means it that you can use a 74HC595. Sorry, I didn't order the version with i2c.<br />
|-<br />
| Sean Richardson<br />
| [https://www.adafruit.com/products/306 Digital Addressable RGB LED]<br />
| These LED strips are fun and glowy. There are 32 RGB LEDs per meter, and you can control each LED individually! We have 5 meters worth!<br />
|-<br />
| <br />
|-<br />
|Greg Larmore<br />
| [https://www.adafruit.com/products/555 16x24 Red LED Matrix Panel]<br />
| These LED panels take care of all the work of making a big matrix display. Each panel has six 8x8 red matrix modules, for a 16x24 matrix. The panel has a HT1632C chip on the back with does all the multiplexing work for you and has a 3-pin SPI-like serial interface to talk to it and set LEDs on or off (you cannot set the LED to be individually dimmed, as in 'grayscale'). There's a few extras as well, such as being able to change the brightness of the entire display, or blink the entire display at 1 Hz. [[Adafruit: 16x24 Red LED Matrix Panel]]<br />
|-<br />
|<br />
|-<br />
|John Lobdell<br />
| [https://www.adafruit.com/products/377 Rotary Encoder]<br />
|These rotary encoders rotate all the way around continuously, and are divided up into 24 'segments'. Each segment has a click-y feeling to it, and each movement clockwise or counter-clockwise causes the two switches to open and close. There is no way to know what the current 'position' is - instead you would use a microcontroller to count how many 'clicks' left or right it has been turned. If you need to detect rotational 'position' a potentiometer would be a better choice. [[Adafruit: Rotary Encoder]]<br />
|}<br />
<br />
{{YoderFoot}}</div>Draneawhttps://elinux.org/index.php?title=Adafruit:_Bicolor_LED_Square_Pixel_Matrix&diff=190178Adafruit: Bicolor LED Square Pixel Matrix2012-11-08T01:36:57Z<p>Draneaw: /* Current Status */</p>
<hr />
<div>[[Category:ECE497]][[Category:Adafruit]]<br />
<br />
<pre style="color:red"><br />
Overview: 2<br />
Wiring: 0<br />
Code: 1<br />
git/Compiles with make: 0<br />
Demo: 0<br />
Total: 3<br />
Comments: It's good you have it working. Now you need to fix up this page.<br />
Assume you are writing to someone who wants to know how to use the device. Show a picture<br />
of it. Note the importance of soldering the display on correctly. Give wiring instructions.<br />
Be specific, where do I wire the power? Where does the clock go, etc. How is the voltage<br />
level converter wired in? Show a picture of the wiring.<br />
<br />
Clean up Greg's code an put it in your github repository. Include a Makefile<br />
Give me a demo.<br />
<br />
Can you have this done in a week? 24-Oct-2012?<br />
</pre><br />
<br />
{{YoderHead}}<br />
Page by Alex Drane, Peter Ngo<br />
== Summary ==<br />
This page details project work done while working on the 8x8 Bicolor LED Pixel Matrix from Adafruit found here: [https://www.adafruit.com/products/902 Store Link]<br />
<br />
IMPORTANT!!! When soldering the led matrix to the controller make sure that it is placed correctly. If it is not, then the device will still communicate but the LED Matrix will not turn on.<br />
<br />
== Wiring Information ==<br />
The device relies on the 5V source on the board and to insure functionality an I2C voltage<br />
level converter is used to boost the 3.3V I2C voltage to 5V. The voltage<br />
level converter is hooked up according to the photo. Starting from the top left of the device: SCL 5V, 5V Rail, Reset(Pulled up to 3.3V), SCL 3.3V In. Bottom Left: SDA 5V, Ground, 3.3V, SDA 3.3V.<br />
<br />
The LED Matrix is wired from left to right: 5V, Ground, SDA, SCL.<br />
<br />
The tenth pin from the Right on row 1 of the P9 IO Rail on the Beagle (Count from the 5V Line in) is the SCL pin and the pin on row 2 is the SDA pin. Starting from the right on P9 top row is: Ground, 3.3V, Skip, 5V. <br />
<br />
[[File:MiniProject2WiringDiagram.png|200px|thumb|left|Wiring Diagram]]</div>Draneawhttps://elinux.org/index.php?title=Adafruit:_Bicolor_LED_Square_Pixel_Matrix&diff=190172Adafruit: Bicolor LED Square Pixel Matrix2012-11-08T01:36:07Z<p>Draneaw: /* Wiring Information */</p>
<hr />
<div>[[Category:ECE497]][[Category:Adafruit]]<br />
<br />
<pre style="color:red"><br />
Overview: 2<br />
Wiring: 0<br />
Code: 1<br />
git/Compiles with make: 0<br />
Demo: 0<br />
Total: 3<br />
Comments: It's good you have it working. Now you need to fix up this page.<br />
Assume you are writing to someone who wants to know how to use the device. Show a picture<br />
of it. Note the importance of soldering the display on correctly. Give wiring instructions.<br />
Be specific, where do I wire the power? Where does the clock go, etc. How is the voltage<br />
level converter wired in? Show a picture of the wiring.<br />
<br />
Clean up Greg's code an put it in your github repository. Include a Makefile<br />
Give me a demo.<br />
<br />
Can you have this done in a week? 24-Oct-2012?<br />
</pre><br />
<br />
{{YoderHead}}<br />
Page by Alex Drane, Peter Ngo<br />
== Summary ==<br />
This page details project work done while working on the 8x8 Bicolor LED Pixel Matrix from Adafruit found here: [https://www.adafruit.com/products/902 Store Link]<br />
<br />
IMPORTANT!!! When soldering the led matrix to the controller make sure that it is placed correctly. If it is not, then the device will still communicate but the LED Matrix will not turn on.<br />
<br />
== Wiring Information ==<br />
The device relies on the 5V source on the board and to insure functionality an I2C voltage<br />
level converter is used to boost the 3.3V I2C voltage to 5V. The voltage<br />
level converter is hooked up according to the photo. Starting from the top left of the device: SCL 5V, 5V Rail, Reset(Pulled up to 3.3V), SCL 3.3V In. Bottom Left: SDA 5V, Ground, 3.3V, SDA 3.3V.<br />
<br />
The LED Matrix is wired from left to right: 5V, Ground, SDA, SCL.<br />
<br />
The tenth pin from the Right on row 1 of the P9 IO Rail on the Beagle (Count from the 5V Line in) is the SCL pin and the pin on row 2 is the SDA pin. Starting from the right on P9 top row is: Ground, 3.3V, Skip, 5V. <br />
<br />
[[File:MiniProject2WiringDiagram.png|200px|thumb|left|Wiring Diagram]]<br />
<br />
== Current Status ==<br />
The current LED Matrix is fully functional except for a minor issue with alignment of the rows. It is shifted up by one LED and puts the top row at the bottom. The former issues encountered with the device was due to a miss-wiring of the matrix to the I2C Part.</div>Draneawhttps://elinux.org/index.php?title=Adafruit:_Bicolor_LED_Square_Pixel_Matrix&diff=190166Adafruit: Bicolor LED Square Pixel Matrix2012-11-08T01:27:15Z<p>Draneaw: /* Summary */</p>
<hr />
<div>[[Category:ECE497]][[Category:Adafruit]]<br />
<br />
<pre style="color:red"><br />
Overview: 2<br />
Wiring: 0<br />
Code: 1<br />
git/Compiles with make: 0<br />
Demo: 0<br />
Total: 3<br />
Comments: It's good you have it working. Now you need to fix up this page.<br />
Assume you are writing to someone who wants to know how to use the device. Show a picture<br />
of it. Note the importance of soldering the display on correctly. Give wiring instructions.<br />
Be specific, where do I wire the power? Where does the clock go, etc. How is the voltage<br />
level converter wired in? Show a picture of the wiring.<br />
<br />
Clean up Greg's code an put it in your github repository. Include a Makefile<br />
Give me a demo.<br />
<br />
Can you have this done in a week? 24-Oct-2012?<br />
</pre><br />
<br />
{{YoderHead}}<br />
Page by Alex Drane, Peter Ngo<br />
== Summary ==<br />
This page details project work done while working on the 8x8 Bicolor LED Pixel Matrix from Adafruit found here: [https://www.adafruit.com/products/902 Store Link]<br />
<br />
IMPORTANT!!! When soldering the led matrix to the controller make sure that it is placed correctly. If it is not, then the device will still communicate but the LED Matrix will not turn on.<br />
<br />
== Wiring Information ==<br />
The device relies on the 5V source on the board and to insure functionality an I2C voltage up-converter is used to boost the 3.3V I2C voltage to 5V. <br />
<br />
[[File:MiniProject2WiringDiagram.png|200px|thumb|left|Wiring Diagram]]<br />
<br />
== Current Status ==<br />
The current LED Matrix is fully functional except for a minor issue with alignment of the rows. It is shifted up by one LED and puts the top row at the bottom. The former issues encountered with the device was due to a miss-wiring of the matrix to the I2C Part.</div>Draneaw