https://elinux.org/api.php?action=feedcontributions&user=Rogerscj37&feedformat=atomeLinux.org - User contributions [en]2024-03-29T01:59:58ZUser contributionsMediaWiki 1.31.0https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539741ECE434 Project Pet Monitor2020-11-18T02:49:02Z<p>Rogerscj37: /* Installation Instructions */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a USB camera attached to the Bone. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Pet Monitor project git page: https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
<br />
<br />
Installing the project:<br />
<br />
1. First clone the git repository to your beagle bone and then enter said directory:<br />
bone$ git clone https://github.com/rogers3/ECE434 <br />
bone$ cd ECE434/petMonitor<br />
<br />
2. Next, add an authentication token for ngrok. To do this, first create a ngrok account by visiting https://ngrok.com/ and clicking sign up. After the account is created, a authentication token should be available. Open setup.sh and replace 'YOUR_AUTH_TOKEN' in line 11 with your authentication token.<br />
<br />
3. Finally, install all necessary libraries. For your convenience, a install.sh file was created. To execute it run:<br />
bone$ sudo ./install.sh<br />
<br />
<br />
After this the Pet Monitor is ready to go. See the User Instruction section on how to start and use the program.<br />
<br />
== User Instructions ==<br />
<br />
Once everything is installed, the program can be ran by executing the following commands:<br />
bone$ sudo ./setup.sh<br />
bone$ sudo ./httpMonitor.py<br />
<br />
<br />
Once the application is running, open yourLocalHost:434 in a web browser to view the monitor. The variable yourLocalHost should be the same IP address used to open cloud9. For me, this number is 192.168.7.2. So, to open the Pet Monitor I enter 192.168.7.2:434 into a web browser. If desired, the pet monitor can be made available on non-local hosts as well. This is done by first configuring ngrok (see Installation Instructions) and then in a '''new''' terminal entering:<br />
bone$ ./ngrok http 434<br />
Note: If using ngrok there will be two terminals connected to the Bone at once. One is running httpmoniter.py and the other is running ngrok. <br />
<br />
In the terminal running ngrok, a screen will appear with a public browser that can be used to view the pet monitor from anywhere. One issue with this is that each time ngrok is ran, a new url for the public browser is generated. This should not be an issue if the pet monitor is not restarted often. However, if this is an issue it is possible to use the same url each time the pet monitor is ran. It costs $60/year for the subscription to ngrok that allows this. For more information visit https://ngrok.com/pricing.<br />
<br />
<br />
On the website, there are many buttons that control the pet monitor. A table is included below describing their functionality:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Functionality<br />
|-<br />
| Camera || Toggles the camera. When turned on, the website will pause for a few seconds while the video is loading and then display the stream and change the button to its on state. When turned off, the stream should disappear will little or no delay and the button will return to its off state.<br />
|-<br />
| Speaker at frequency || When turned on, the speaker will play a particular frequency and change the button to its on state. The value of this frequency can be chosen by entering the desired frequency in the text box directly to the right of the words "Speaker at frequency." When turned off the speaker will stop making sound and the button will return to its off state.<br />
|-<br />
| Song|| When play is pressed, the song Old McDonald plays on the speaker and the button changes to pause. If pause is pressed before the song is over, the song will stop playing and the button will change back to play. Otherwise, once the song is over and the page is refreshed the button will be in its play state.<br />
|-<br />
| Let out || This button is animated and when pressed it resets the time since last let out. It should be pressed whenever the pet is let out.<br />
|-<br />
| Feed || This button is animated and when pressed it resets the time since last meal. It should be pressed whenever the pet is fed.<br />
|-<br />
| Refresh || This button is animated and when pressed it refreshes the page. This refreshes the data section as well as the status of the song button. It has the same functionality as pressing refresh in the upper left of the web browser.<br />
|}<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that update the temperature displayed when the page is refreshed<br />
* Data for time since let out and time since fed that are updated when the page is refreshed<br />
<br />
Link to YouTube demo: https://youtu.be/aGgOKW0TiHc<br />
<br />
== Theory of Operation ==<br />
When the program httpMonitor.py is ran, Flask starts a web browser at yourLocalIp:434. When a button is pressed on the website, it redirects the website to a new address. For example when the camera button is pressed, the url redirects to yourLocalIP:434/camera/toggle. When this location is reached a portion of the python code runs. This code determines which button is pressed and then executes the appropriate function. Most function are relatively simple only changing variables or interacting with i2c/pwm. However, both the camera and the song buttons have function that require threading. This means these functions and the main program are run simultaneously. This allows the program to continue running (refresh the page) while they execute (stream video/play Old McDonald). Once functions finish they redirect the url back to '\' which looks like yourLocalIP:434. When the code reaches this url it runs a new section of python code which updates the information in the HTML/CSS. This is when the user sees change which is why the user never sees the url change. It also explains some delays in buttons changing. For instance, when the camera button is pushed a thread is created to run motion. The main code then waits four seconds and then redirects to '/' (updating the page). This four seconds allows the video stream to load so that a stream appears when the refresh occurs.<br />
<br />
[[File:PetMonitorTheroyOfOperation.JPG|1100px|Pet Monitor theory of operation]]<br />
<br />
== Work Breakdown ==<br />
<br />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop the camera stream using animated button from website<br />
* Adjusted the size of the displayed camera stream on the website<br />
* Added a speaker that can play a song as well as at a specified frequency<br />
* Developed an interface to the speaker on the website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates the temperature displayed on the website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another potential improvement is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<br />
<br />
== Conclusions ==<br />
<br />
This project has has taught me a lot. This is my first time using HTML/CSS to make more then simple labels or buttons. I think the website ended up looking better then I expected especially since I did not use a template. I also learned about threading which is practical knowledge. I was able to successfully use threading twice during this project<br />
<br />
An idea for a spin off this project would be to create a pet trainer. This would be a program that buzzes whenever a pet enters a certain area. The application I used to stream video also tracks motion. So, this could be used to detect when there is movement in a specified area. When there is motion a buzzer is triggered. This would be useful to train dogs to stay away from food, valuable, or other items.<br />
<br />
{{YoderFoot}}</div>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539736ECE434 Project Pet Monitor2020-11-18T02:46:51Z<p>Rogerscj37: /* Installation Instructions */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a USB camera attached to the Bone. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Pet Monitor project git page: https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
<br />
<br />
Installing the project:<br />
<br />
1. First clone the git repository to your beagle bone and then enter said directory:<br />
bone$ git clone https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
bone$ cd petMonitor<br />
<br />
2. Next, add an authentication token for ngrok. To do this, first create a ngrok account by visiting https://ngrok.com/ and clicking sign up. After the account is created, a authentication token should be available. Open setup.sh and replace 'YOUR_AUTH_TOKEN' in line 11 with your authentication token.<br />
<br />
3. Finally, install all necessary libraries. For your convenience, a install.sh file was created. To execute it run:<br />
bone$ sudo ./install.sh<br />
<br />
<br />
After this the Pet Monitor is ready to go. See the User Instruction section on how to start and use the program.<br />
<br />
== User Instructions ==<br />
<br />
Once everything is installed, the program can be ran by executing the following commands:<br />
bone$ sudo ./setup.sh<br />
bone$ sudo ./httpMonitor.py<br />
<br />
<br />
Once the application is running, open yourLocalHost:434 in a web browser to view the monitor. The variable yourLocalHost should be the same IP address used to open cloud9. For me, this number is 192.168.7.2. So, to open the Pet Monitor I enter 192.168.7.2:434 into a web browser. If desired, the pet monitor can be made available on non-local hosts as well. This is done by first configuring ngrok (see Installation Instructions) and then in a '''new''' terminal entering:<br />
bone$ ./ngrok http 434<br />
Note: If using ngrok there will be two terminals connected to the Bone at once. One is running httpmoniter.py and the other is running ngrok. <br />
<br />
In the terminal running ngrok, a screen will appear with a public browser that can be used to view the pet monitor from anywhere. One issue with this is that each time ngrok is ran, a new url for the public browser is generated. This should not be an issue if the pet monitor is not restarted often. However, if this is an issue it is possible to use the same url each time the pet monitor is ran. It costs $60/year for the subscription to ngrok that allows this. For more information visit https://ngrok.com/pricing.<br />
<br />
<br />
On the website, there are many buttons that control the pet monitor. A table is included below describing their functionality:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Functionality<br />
|-<br />
| Camera || Toggles the camera. When turned on, the website will pause for a few seconds while the video is loading and then display the stream and change the button to its on state. When turned off, the stream should disappear will little or no delay and the button will return to its off state.<br />
|-<br />
| Speaker at frequency || When turned on, the speaker will play a particular frequency and change the button to its on state. The value of this frequency can be chosen by entering the desired frequency in the text box directly to the right of the words "Speaker at frequency." When turned off the speaker will stop making sound and the button will return to its off state.<br />
|-<br />
| Song|| When play is pressed, the song Old McDonald plays on the speaker and the button changes to pause. If pause is pressed before the song is over, the song will stop playing and the button will change back to play. Otherwise, once the song is over and the page is refreshed the button will be in its play state.<br />
|-<br />
| Let out || This button is animated and when pressed it resets the time since last let out. It should be pressed whenever the pet is let out.<br />
|-<br />
| Feed || This button is animated and when pressed it resets the time since last meal. It should be pressed whenever the pet is fed.<br />
|-<br />
| Refresh || This button is animated and when pressed it refreshes the page. This refreshes the data section as well as the status of the song button. It has the same functionality as pressing refresh in the upper left of the web browser.<br />
|}<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that update the temperature displayed when the page is refreshed<br />
* Data for time since let out and time since fed that are updated when the page is refreshed<br />
<br />
Link to YouTube demo: https://youtu.be/aGgOKW0TiHc<br />
<br />
== Theory of Operation ==<br />
When the program httpMonitor.py is ran, Flask starts a web browser at yourLocalIp:434. When a button is pressed on the website, it redirects the website to a new address. For example when the camera button is pressed, the url redirects to yourLocalIP:434/camera/toggle. When this location is reached a portion of the python code runs. This code determines which button is pressed and then executes the appropriate function. Most function are relatively simple only changing variables or interacting with i2c/pwm. However, both the camera and the song buttons have function that require threading. This means these functions and the main program are run simultaneously. This allows the program to continue running (refresh the page) while they execute (stream video/play Old McDonald). Once functions finish they redirect the url back to '\' which looks like yourLocalIP:434. When the code reaches this url it runs a new section of python code which updates the information in the HTML/CSS. This is when the user sees change which is why the user never sees the url change. It also explains some delays in buttons changing. For instance, when the camera button is pushed a thread is created to run motion. The main code then waits four seconds and then redirects to '/' (updating the page). This four seconds allows the video stream to load so that a stream appears when the refresh occurs.<br />
<br />
[[File:PetMonitorTheroyOfOperation.JPG|1100px|Pet Monitor theory of operation]]<br />
<br />
== Work Breakdown ==<br />
<br />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop the camera stream using animated button from website<br />
* Adjusted the size of the displayed camera stream on the website<br />
* Added a speaker that can play a song as well as at a specified frequency<br />
* Developed an interface to the speaker on the website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates the temperature displayed on the website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another potential improvement is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<br />
<br />
== Conclusions ==<br />
<br />
This project has has taught me a lot. This is my first time using HTML/CSS to make more then simple labels or buttons. I think the website ended up looking better then I expected especially since I did not use a template. I also learned about threading which is practical knowledge. I was able to successfully use threading twice during this project<br />
<br />
An idea for a spin off this project would be to create a pet trainer. This would be a program that buzzes whenever a pet enters a certain area. The application I used to stream video also tracks motion. So, this could be used to detect when there is movement in a specified area. When there is motion a buzzer is triggered. This would be useful to train dogs to stay away from food, valuable, or other items.<br />
<br />
{{YoderFoot}}</div>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539731ECE434 Project Pet Monitor2020-11-18T02:44:40Z<p>Rogerscj37: /* Highlights */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a USB camera attached to the Bone. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Pet Monitor project git page: https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
<br />
<br />
Installing the project:<br />
<br />
1. First clone the git repository to your beagle bone and then enter said directory:<br />
bone$ git clone https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
bone$ cd petMonitor<br />
<br />
2. Next, add an authentication token for ngrok. To do this, first create a ngrok account by visiting https://ngrok.com/ and clicking sign up. After the account is created, a authentication token should be available. Open setup.sh and replace 'ENTER_YOUR_TOKEN_HERE' in line 8 with your authentication token.<br />
<br />
3. Finally, install all necessary libraries. For your convenience, a install.sh file was created. To execute it run:<br />
bone$ sudo ./install.sh<br />
<br />
<br />
After this the Pet Monitor is ready to go. See the User Instruction section on how to start and use the program.<br />
<br />
== User Instructions ==<br />
<br />
Once everything is installed, the program can be ran by executing the following commands:<br />
bone$ sudo ./setup.sh<br />
bone$ sudo ./httpMonitor.py<br />
<br />
<br />
Once the application is running, open yourLocalHost:434 in a web browser to view the monitor. The variable yourLocalHost should be the same IP address used to open cloud9. For me, this number is 192.168.7.2. So, to open the Pet Monitor I enter 192.168.7.2:434 into a web browser. If desired, the pet monitor can be made available on non-local hosts as well. This is done by first configuring ngrok (see Installation Instructions) and then in a '''new''' terminal entering:<br />
bone$ ./ngrok http 434<br />
Note: If using ngrok there will be two terminals connected to the Bone at once. One is running httpmoniter.py and the other is running ngrok. <br />
<br />
In the terminal running ngrok, a screen will appear with a public browser that can be used to view the pet monitor from anywhere. One issue with this is that each time ngrok is ran, a new url for the public browser is generated. This should not be an issue if the pet monitor is not restarted often. However, if this is an issue it is possible to use the same url each time the pet monitor is ran. It costs $60/year for the subscription to ngrok that allows this. For more information visit https://ngrok.com/pricing.<br />
<br />
<br />
On the website, there are many buttons that control the pet monitor. A table is included below describing their functionality:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Functionality<br />
|-<br />
| Camera || Toggles the camera. When turned on, the website will pause for a few seconds while the video is loading and then display the stream and change the button to its on state. When turned off, the stream should disappear will little or no delay and the button will return to its off state.<br />
|-<br />
| Speaker at frequency || When turned on, the speaker will play a particular frequency and change the button to its on state. The value of this frequency can be chosen by entering the desired frequency in the text box directly to the right of the words "Speaker at frequency." When turned off the speaker will stop making sound and the button will return to its off state.<br />
|-<br />
| Song|| When play is pressed, the song Old McDonald plays on the speaker and the button changes to pause. If pause is pressed before the song is over, the song will stop playing and the button will change back to play. Otherwise, once the song is over and the page is refreshed the button will be in its play state.<br />
|-<br />
| Let out || This button is animated and when pressed it resets the time since last let out. It should be pressed whenever the pet is let out.<br />
|-<br />
| Feed || This button is animated and when pressed it resets the time since last meal. It should be pressed whenever the pet is fed.<br />
|-<br />
| Refresh || This button is animated and when pressed it refreshes the page. This refreshes the data section as well as the status of the song button. It has the same functionality as pressing refresh in the upper left of the web browser.<br />
|}<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that update the temperature displayed when the page is refreshed<br />
* Data for time since let out and time since fed that are updated when the page is refreshed<br />
<br />
Link to YouTube demo: https://youtu.be/aGgOKW0TiHc<br />
<br />
== Theory of Operation ==<br />
When the program httpMonitor.py is ran, Flask starts a web browser at yourLocalIp:434. When a button is pressed on the website, it redirects the website to a new address. For example when the camera button is pressed, the url redirects to yourLocalIP:434/camera/toggle. When this location is reached a portion of the python code runs. This code determines which button is pressed and then executes the appropriate function. Most function are relatively simple only changing variables or interacting with i2c/pwm. However, both the camera and the song buttons have function that require threading. This means these functions and the main program are run simultaneously. This allows the program to continue running (refresh the page) while they execute (stream video/play Old McDonald). Once functions finish they redirect the url back to '\' which looks like yourLocalIP:434. When the code reaches this url it runs a new section of python code which updates the information in the HTML/CSS. This is when the user sees change which is why the user never sees the url change. It also explains some delays in buttons changing. For instance, when the camera button is pushed a thread is created to run motion. The main code then waits four seconds and then redirects to '/' (updating the page). This four seconds allows the video stream to load so that a stream appears when the refresh occurs.<br />
<br />
[[File:PetMonitorTheroyOfOperation.JPG|1100px|Pet Monitor theory of operation]]<br />
<br />
== Work Breakdown ==<br />
<br />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop the camera stream using animated button from website<br />
* Adjusted the size of the displayed camera stream on the website<br />
* Added a speaker that can play a song as well as at a specified frequency<br />
* Developed an interface to the speaker on the website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates the temperature displayed on the website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another potential improvement is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<br />
<br />
== Conclusions ==<br />
<br />
This project has has taught me a lot. This is my first time using HTML/CSS to make more then simple labels or buttons. I think the website ended up looking better then I expected especially since I did not use a template. I also learned about threading which is practical knowledge. I was able to successfully use threading twice during this project<br />
<br />
An idea for a spin off this project would be to create a pet trainer. This would be a program that buzzes whenever a pet enters a certain area. The application I used to stream video also tracks motion. So, this could be used to detect when there is movement in a specified area. When there is motion a buzzer is triggered. This would be useful to train dogs to stay away from food, valuable, or other items.<br />
<br />
{{YoderFoot}}</div>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539636ECE434 Project Pet Monitor2020-11-18T01:16:28Z<p>Rogerscj37: /* Future Work */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a USB camera attached to the Bone. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Pet Monitor project git page: https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
<br />
<br />
Installing the project:<br />
<br />
1. First clone the git repository to your beagle bone and then enter said directory:<br />
bone$ git clone https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
bone$ cd petMonitor<br />
<br />
2. Next, add an authentication token for ngrok. To do this, first create a ngrok account by visiting https://ngrok.com/ and clicking sign up. After the account is created, a authentication token should be available. Open setup.sh and replace 'ENTER_YOUR_TOKEN_HERE' in line 8 with your authentication token.<br />
<br />
3. Finally, install all necessary libraries. For your convenience, a install.sh file was created. To execute it run:<br />
bone$ sudo ./install.sh<br />
<br />
<br />
After this the Pet Monitor is ready to go. See the User Instruction section on how to start and use the program.<br />
<br />
== User Instructions ==<br />
<br />
Once everything is installed, the program can be ran by executing the following commands:<br />
bone$ sudo ./setup.sh<br />
bone$ sudo ./httpMonitor.py<br />
<br />
<br />
Once the application is running, open yourLocalHost:434 in a web browser to view the monitor. The variable yourLocalHost should be the same IP address used to open cloud9. For me, this number is 192.168.7.2. So, to open the Pet Monitor I enter 192.168.7.2:434 into a web browser. If desired, the pet monitor can be made available on non-local hosts as well. This is done by first configuring ngrok (see Installation Instructions) and then in a '''new''' terminal entering:<br />
bone$ ./ngrok http 434<br />
Note: If using ngrok there will be two terminals connected to the Bone at once. One is running httpmoniter.py and the other is running ngrok. <br />
<br />
In the terminal running ngrok, a screen will appear with a public browser that can be used to view the pet monitor from anywhere. One issue with this is that each time ngrok is ran, a new url for the public browser is generated. This should not be an issue if the pet monitor is not restarted often. However, if this is an issue it is possible to use the same url each time the pet monitor is ran. It costs $60/year for the subscription to ngrok that allows this. For more information visit https://ngrok.com/pricing.<br />
<br />
<br />
On the website, there are many buttons that control the pet monitor. A table is included below describing their functionality:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Functionality<br />
|-<br />
| Camera || Toggles the camera. When turned on, the website will pause for a few seconds while the video is loading and then display the stream and change the button to its on state. When turned off, the stream should disappear will little or no delay and the button will return to its off state.<br />
|-<br />
| Speaker at frequency || When turned on, the speaker will play a particular frequency and change the button to its on state. The value of this frequency can be chosen by entering the desired frequency in the text box directly to the right of the words "Speaker at frequency." When turned off the speaker will stop making sound and the button will return to its off state.<br />
|-<br />
| Song|| When play is pressed, the song Old McDonald plays on the speaker and the button changes to pause. If pause is pressed before the song is over, the song will stop playing and the button will change back to play. Otherwise, once the song is over and the page is refreshed the button will be in its play state.<br />
|-<br />
| Let out || This button is animated and when pressed it resets the time since last let out. It should be pressed whenever the pet is let out.<br />
|-<br />
| Feed || This button is animated and when pressed it resets the time since last meal. It should be pressed whenever the pet is fed.<br />
|-<br />
| Refresh || This button is animated and when pressed it refreshes the page. This refreshes the data section as well as the status of the song button. It has the same functionality as pressing refresh in the upper left of the web browser.<br />
|}<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that update the temperature displayed when the page is refreshed<br />
* Data for time since let out and time since fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<br />
<br />
== Theory of Operation ==<br />
When the program httpMonitor.py is ran, Flask starts a web browser at yourLocalIp:434. When a button is pressed on the website, it redirects the website to a new address. For example when the camera button is pressed, the url redirects to yourLocalIP:434/camera/toggle. When this location is reached a portion of the python code runs. This code determines which button is pressed and then executes the appropriate function. Most function are relatively simple only changing variables or interacting with i2c/pwm. However, both the camera and the song buttons have function that require threading. This means these functions and the main program are run simultaneously. This allows the program to continue running (refresh the page) while they execute (stream video/play Old McDonald). Once functions finish they redirect the url back to '\' which looks like yourLocalIP:434. When the code reaches this url it runs a new section of python code which updates the information in the HTML/CSS. This is when the user sees change which is why the user never sees the url change. It also explains some delays in buttons changing. For instance, when the camera button is pushed a thread is created to run motion. The main code then waits four seconds and then redirects to '/' (updating the page). This four seconds allows the video stream to load so that a stream appears when the refresh occurs.<br />
<br />
[[File:PetMonitorTheroyOfOperation.JPG|1100px|Pet Monitor theory of operation]]<br />
<br />
== Work Breakdown ==<br />
<br />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop the camera stream using animated button from website<br />
* Adjusted the size of the displayed camera stream on the website<br />
* Added a speaker that can play a song as well as at a specified frequency<br />
* Developed an interface to the speaker on the website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates the temperature displayed on the website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another potential improvement is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<br />
<br />
== Conclusions ==<br />
<br />
This project has has taught me a lot. This is my first time using HTML/CSS to make more then simple labels or buttons. I think the website ended up looking better then I expected especially since I did not use a template. I also learned about threading which is practical knowledge. I was able to successfully use threading twice during this project<br />
<br />
An idea for a spin off this project would be to create a pet trainer. This would be a program that buzzes whenever a pet enters a certain area. The application I used to stream video also tracks motion. So, this could be used to detect when there is movement in a specified area. When there is motion a buzzer is triggered. This would be useful to train dogs to stay away from food, valuable, or other items.<br />
<br />
{{YoderFoot}}</div>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539631ECE434 Project Pet Monitor2020-11-18T01:14:48Z<p>Rogerscj37: /* Work Breakdown */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a USB camera attached to the Bone. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Pet Monitor project git page: https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
<br />
<br />
Installing the project:<br />
<br />
1. First clone the git repository to your beagle bone and then enter said directory:<br />
bone$ git clone https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
bone$ cd petMonitor<br />
<br />
2. Next, add an authentication token for ngrok. To do this, first create a ngrok account by visiting https://ngrok.com/ and clicking sign up. After the account is created, a authentication token should be available. Open setup.sh and replace 'ENTER_YOUR_TOKEN_HERE' in line 8 with your authentication token.<br />
<br />
3. Finally, install all necessary libraries. For your convenience, a install.sh file was created. To execute it run:<br />
bone$ sudo ./install.sh<br />
<br />
<br />
After this the Pet Monitor is ready to go. See the User Instruction section on how to start and use the program.<br />
<br />
== User Instructions ==<br />
<br />
Once everything is installed, the program can be ran by executing the following commands:<br />
bone$ sudo ./setup.sh<br />
bone$ sudo ./httpMonitor.py<br />
<br />
<br />
Once the application is running, open yourLocalHost:434 in a web browser to view the monitor. The variable yourLocalHost should be the same IP address used to open cloud9. For me, this number is 192.168.7.2. So, to open the Pet Monitor I enter 192.168.7.2:434 into a web browser. If desired, the pet monitor can be made available on non-local hosts as well. This is done by first configuring ngrok (see Installation Instructions) and then in a '''new''' terminal entering:<br />
bone$ ./ngrok http 434<br />
Note: If using ngrok there will be two terminals connected to the Bone at once. One is running httpmoniter.py and the other is running ngrok. <br />
<br />
In the terminal running ngrok, a screen will appear with a public browser that can be used to view the pet monitor from anywhere. One issue with this is that each time ngrok is ran, a new url for the public browser is generated. This should not be an issue if the pet monitor is not restarted often. However, if this is an issue it is possible to use the same url each time the pet monitor is ran. It costs $60/year for the subscription to ngrok that allows this. For more information visit https://ngrok.com/pricing.<br />
<br />
<br />
On the website, there are many buttons that control the pet monitor. A table is included below describing their functionality:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Functionality<br />
|-<br />
| Camera || Toggles the camera. When turned on, the website will pause for a few seconds while the video is loading and then display the stream and change the button to its on state. When turned off, the stream should disappear will little or no delay and the button will return to its off state.<br />
|-<br />
| Speaker at frequency || When turned on, the speaker will play a particular frequency and change the button to its on state. The value of this frequency can be chosen by entering the desired frequency in the text box directly to the right of the words "Speaker at frequency." When turned off the speaker will stop making sound and the button will return to its off state.<br />
|-<br />
| Song|| When play is pressed, the song Old McDonald plays on the speaker and the button changes to pause. If pause is pressed before the song is over, the song will stop playing and the button will change back to play. Otherwise, once the song is over and the page is refreshed the button will be in its play state.<br />
|-<br />
| Let out || This button is animated and when pressed it resets the time since last let out. It should be pressed whenever the pet is let out.<br />
|-<br />
| Feed || This button is animated and when pressed it resets the time since last meal. It should be pressed whenever the pet is fed.<br />
|-<br />
| Refresh || This button is animated and when pressed it refreshes the page. This refreshes the data section as well as the status of the song button. It has the same functionality as pressing refresh in the upper left of the web browser.<br />
|}<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that update the temperature displayed when the page is refreshed<br />
* Data for time since let out and time since fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<br />
<br />
== Theory of Operation ==<br />
When the program httpMonitor.py is ran, Flask starts a web browser at yourLocalIp:434. When a button is pressed on the website, it redirects the website to a new address. For example when the camera button is pressed, the url redirects to yourLocalIP:434/camera/toggle. When this location is reached a portion of the python code runs. This code determines which button is pressed and then executes the appropriate function. Most function are relatively simple only changing variables or interacting with i2c/pwm. However, both the camera and the song buttons have function that require threading. This means these functions and the main program are run simultaneously. This allows the program to continue running (refresh the page) while they execute (stream video/play Old McDonald). Once functions finish they redirect the url back to '\' which looks like yourLocalIP:434. When the code reaches this url it runs a new section of python code which updates the information in the HTML/CSS. This is when the user sees change which is why the user never sees the url change. It also explains some delays in buttons changing. For instance, when the camera button is pushed a thread is created to run motion. The main code then waits four seconds and then redirects to '/' (updating the page). This four seconds allows the video stream to load so that a stream appears when the refresh occurs.<br />
<br />
[[File:PetMonitorTheroyOfOperation.JPG|1100px|Pet Monitor theory of operation]]<br />
<br />
== Work Breakdown ==<br />
<br />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop the camera stream using animated button from website<br />
* Adjusted the size of the displayed camera stream on the website<br />
* Added a speaker that can play a song as well as at a specified frequency<br />
* Developed an interface to the speaker on the website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates the temperature displayed on the website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<br />
<br />
== Conclusions ==<br />
<br />
This project has has taught me a lot. This is my first time using HTML/CSS to make more then simple labels or buttons. I think the website ended up looking better then I expected especially since I did not use a template. I also learned about threading which is practical knowledge. I was able to successfully use threading twice during this project<br />
<br />
An idea for a spin off this project would be to create a pet trainer. This would be a program that buzzes whenever a pet enters a certain area. The application I used to stream video also tracks motion. So, this could be used to detect when there is movement in a specified area. When there is motion a buzzer is triggered. This would be useful to train dogs to stay away from food, valuable, or other items.<br />
<br />
{{YoderFoot}}</div>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539626ECE434 Project Pet Monitor2020-11-18T01:14:04Z<p>Rogerscj37: /* Work Breakdown */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a USB camera attached to the Bone. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Pet Monitor project git page: https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
<br />
<br />
Installing the project:<br />
<br />
1. First clone the git repository to your beagle bone and then enter said directory:<br />
bone$ git clone https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
bone$ cd petMonitor<br />
<br />
2. Next, add an authentication token for ngrok. To do this, first create a ngrok account by visiting https://ngrok.com/ and clicking sign up. After the account is created, a authentication token should be available. Open setup.sh and replace 'ENTER_YOUR_TOKEN_HERE' in line 8 with your authentication token.<br />
<br />
3. Finally, install all necessary libraries. For your convenience, a install.sh file was created. To execute it run:<br />
bone$ sudo ./install.sh<br />
<br />
<br />
After this the Pet Monitor is ready to go. See the User Instruction section on how to start and use the program.<br />
<br />
== User Instructions ==<br />
<br />
Once everything is installed, the program can be ran by executing the following commands:<br />
bone$ sudo ./setup.sh<br />
bone$ sudo ./httpMonitor.py<br />
<br />
<br />
Once the application is running, open yourLocalHost:434 in a web browser to view the monitor. The variable yourLocalHost should be the same IP address used to open cloud9. For me, this number is 192.168.7.2. So, to open the Pet Monitor I enter 192.168.7.2:434 into a web browser. If desired, the pet monitor can be made available on non-local hosts as well. This is done by first configuring ngrok (see Installation Instructions) and then in a '''new''' terminal entering:<br />
bone$ ./ngrok http 434<br />
Note: If using ngrok there will be two terminals connected to the Bone at once. One is running httpmoniter.py and the other is running ngrok. <br />
<br />
In the terminal running ngrok, a screen will appear with a public browser that can be used to view the pet monitor from anywhere. One issue with this is that each time ngrok is ran, a new url for the public browser is generated. This should not be an issue if the pet monitor is not restarted often. However, if this is an issue it is possible to use the same url each time the pet monitor is ran. It costs $60/year for the subscription to ngrok that allows this. For more information visit https://ngrok.com/pricing.<br />
<br />
<br />
On the website, there are many buttons that control the pet monitor. A table is included below describing their functionality:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Functionality<br />
|-<br />
| Camera || Toggles the camera. When turned on, the website will pause for a few seconds while the video is loading and then display the stream and change the button to its on state. When turned off, the stream should disappear will little or no delay and the button will return to its off state.<br />
|-<br />
| Speaker at frequency || When turned on, the speaker will play a particular frequency and change the button to its on state. The value of this frequency can be chosen by entering the desired frequency in the text box directly to the right of the words "Speaker at frequency." When turned off the speaker will stop making sound and the button will return to its off state.<br />
|-<br />
| Song|| When play is pressed, the song Old McDonald plays on the speaker and the button changes to pause. If pause is pressed before the song is over, the song will stop playing and the button will change back to play. Otherwise, once the song is over and the page is refreshed the button will be in its play state.<br />
|-<br />
| Let out || This button is animated and when pressed it resets the time since last let out. It should be pressed whenever the pet is let out.<br />
|-<br />
| Feed || This button is animated and when pressed it resets the time since last meal. It should be pressed whenever the pet is fed.<br />
|-<br />
| Refresh || This button is animated and when pressed it refreshes the page. This refreshes the data section as well as the status of the song button. It has the same functionality as pressing refresh in the upper left of the web browser.<br />
|}<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that update the temperature displayed when the page is refreshed<br />
* Data for time since let out and time since fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<br />
<br />
== Theory of Operation ==<br />
When the program httpMonitor.py is ran, Flask starts a web browser at yourLocalIp:434. When a button is pressed on the website, it redirects the website to a new address. For example when the camera button is pressed, the url redirects to yourLocalIP:434/camera/toggle. When this location is reached a portion of the python code runs. This code determines which button is pressed and then executes the appropriate function. Most function are relatively simple only changing variables or interacting with i2c/pwm. However, both the camera and the song buttons have function that require threading. This means these functions and the main program are run simultaneously. This allows the program to continue running (refresh the page) while they execute (stream video/play Old McDonald). Once functions finish they redirect the url back to '\' which looks like yourLocalIP:434. When the code reaches this url it runs a new section of python code which updates the information in the HTML/CSS. This is when the user sees change which is why the user never sees the url change. It also explains some delays in buttons changing. For instance, when the camera button is pushed a thread is created to run motion. The main code then waits four seconds and then redirects to '/' (updating the page). This four seconds allows the video stream to load so that a stream appears when the refresh occurs.<br />
<br />
[[File:PetMonitorTheroyOfOperation.JPG|1100px|Pet Monitor theory of operation]]<br />
<br />
== Work Breakdown ==<br />
<br />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop the camera stream using animated button from website<br />
* Adjusted the size of the displayed camera stream on the website<br />
* Added a speaker that can play a song as well as at a specified frequency<br />
* Developed an interface to the speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates the temperature displayed on the website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<br />
<br />
== Conclusions ==<br />
<br />
This project has has taught me a lot. This is my first time using HTML/CSS to make more then simple labels or buttons. I think the website ended up looking better then I expected especially since I did not use a template. I also learned about threading which is practical knowledge. I was able to successfully use threading twice during this project<br />
<br />
An idea for a spin off this project would be to create a pet trainer. This would be a program that buzzes whenever a pet enters a certain area. The application I used to stream video also tracks motion. So, this could be used to detect when there is movement in a specified area. When there is motion a buzzer is triggered. This would be useful to train dogs to stay away from food, valuable, or other items.<br />
<br />
{{YoderFoot}}</div>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539621ECE434 Project Pet Monitor2020-11-18T01:13:24Z<p>Rogerscj37: /* Work Breakdown */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a USB camera attached to the Bone. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Pet Monitor project git page: https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
<br />
<br />
Installing the project:<br />
<br />
1. First clone the git repository to your beagle bone and then enter said directory:<br />
bone$ git clone https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
bone$ cd petMonitor<br />
<br />
2. Next, add an authentication token for ngrok. To do this, first create a ngrok account by visiting https://ngrok.com/ and clicking sign up. After the account is created, a authentication token should be available. Open setup.sh and replace 'ENTER_YOUR_TOKEN_HERE' in line 8 with your authentication token.<br />
<br />
3. Finally, install all necessary libraries. For your convenience, a install.sh file was created. To execute it run:<br />
bone$ sudo ./install.sh<br />
<br />
<br />
After this the Pet Monitor is ready to go. See the User Instruction section on how to start and use the program.<br />
<br />
== User Instructions ==<br />
<br />
Once everything is installed, the program can be ran by executing the following commands:<br />
bone$ sudo ./setup.sh<br />
bone$ sudo ./httpMonitor.py<br />
<br />
<br />
Once the application is running, open yourLocalHost:434 in a web browser to view the monitor. The variable yourLocalHost should be the same IP address used to open cloud9. For me, this number is 192.168.7.2. So, to open the Pet Monitor I enter 192.168.7.2:434 into a web browser. If desired, the pet monitor can be made available on non-local hosts as well. This is done by first configuring ngrok (see Installation Instructions) and then in a '''new''' terminal entering:<br />
bone$ ./ngrok http 434<br />
Note: If using ngrok there will be two terminals connected to the Bone at once. One is running httpmoniter.py and the other is running ngrok. <br />
<br />
In the terminal running ngrok, a screen will appear with a public browser that can be used to view the pet monitor from anywhere. One issue with this is that each time ngrok is ran, a new url for the public browser is generated. This should not be an issue if the pet monitor is not restarted often. However, if this is an issue it is possible to use the same url each time the pet monitor is ran. It costs $60/year for the subscription to ngrok that allows this. For more information visit https://ngrok.com/pricing.<br />
<br />
<br />
On the website, there are many buttons that control the pet monitor. A table is included below describing their functionality:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Functionality<br />
|-<br />
| Camera || Toggles the camera. When turned on, the website will pause for a few seconds while the video is loading and then display the stream and change the button to its on state. When turned off, the stream should disappear will little or no delay and the button will return to its off state.<br />
|-<br />
| Speaker at frequency || When turned on, the speaker will play a particular frequency and change the button to its on state. The value of this frequency can be chosen by entering the desired frequency in the text box directly to the right of the words "Speaker at frequency." When turned off the speaker will stop making sound and the button will return to its off state.<br />
|-<br />
| Song|| When play is pressed, the song Old McDonald plays on the speaker and the button changes to pause. If pause is pressed before the song is over, the song will stop playing and the button will change back to play. Otherwise, once the song is over and the page is refreshed the button will be in its play state.<br />
|-<br />
| Let out || This button is animated and when pressed it resets the time since last let out. It should be pressed whenever the pet is let out.<br />
|-<br />
| Feed || This button is animated and when pressed it resets the time since last meal. It should be pressed whenever the pet is fed.<br />
|-<br />
| Refresh || This button is animated and when pressed it refreshes the page. This refreshes the data section as well as the status of the song button. It has the same functionality as pressing refresh in the upper left of the web browser.<br />
|}<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that update the temperature displayed when the page is refreshed<br />
* Data for time since let out and time since fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<br />
<br />
== Theory of Operation ==<br />
When the program httpMonitor.py is ran, Flask starts a web browser at yourLocalIp:434. When a button is pressed on the website, it redirects the website to a new address. For example when the camera button is pressed, the url redirects to yourLocalIP:434/camera/toggle. When this location is reached a portion of the python code runs. This code determines which button is pressed and then executes the appropriate function. Most function are relatively simple only changing variables or interacting with i2c/pwm. However, both the camera and the song buttons have function that require threading. This means these functions and the main program are run simultaneously. This allows the program to continue running (refresh the page) while they execute (stream video/play Old McDonald). Once functions finish they redirect the url back to '\' which looks like yourLocalIP:434. When the code reaches this url it runs a new section of python code which updates the information in the HTML/CSS. This is when the user sees change which is why the user never sees the url change. It also explains some delays in buttons changing. For instance, when the camera button is pushed a thread is created to run motion. The main code then waits four seconds and then redirects to '/' (updating the page). This four seconds allows the video stream to load so that a stream appears when the refresh occurs.<br />
<br />
[[File:PetMonitorTheroyOfOperation.JPG|1100px|Pet Monitor theory of operation]]<br />
<br />
== Work Breakdown ==<br />
<br />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop the camera stream using animated button from website<br />
* Adjusted the size of the displayed camera stream on the website<br />
* Added a speaker that can play a song as well at a specified frequency<br />
* Developed an interface to the speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates the temperature displayed on the website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<br />
<br />
== Conclusions ==<br />
<br />
This project has has taught me a lot. This is my first time using HTML/CSS to make more then simple labels or buttons. I think the website ended up looking better then I expected especially since I did not use a template. I also learned about threading which is practical knowledge. I was able to successfully use threading twice during this project<br />
<br />
An idea for a spin off this project would be to create a pet trainer. This would be a program that buzzes whenever a pet enters a certain area. The application I used to stream video also tracks motion. So, this could be used to detect when there is movement in a specified area. When there is motion a buzzer is triggered. This would be useful to train dogs to stay away from food, valuable, or other items.<br />
<br />
{{YoderFoot}}</div>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539616ECE434 Project Pet Monitor2020-11-18T01:12:51Z<p>Rogerscj37: /* Work Breakdown */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a USB camera attached to the Bone. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Pet Monitor project git page: https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
<br />
<br />
Installing the project:<br />
<br />
1. First clone the git repository to your beagle bone and then enter said directory:<br />
bone$ git clone https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
bone$ cd petMonitor<br />
<br />
2. Next, add an authentication token for ngrok. To do this, first create a ngrok account by visiting https://ngrok.com/ and clicking sign up. After the account is created, a authentication token should be available. Open setup.sh and replace 'ENTER_YOUR_TOKEN_HERE' in line 8 with your authentication token.<br />
<br />
3. Finally, install all necessary libraries. For your convenience, a install.sh file was created. To execute it run:<br />
bone$ sudo ./install.sh<br />
<br />
<br />
After this the Pet Monitor is ready to go. See the User Instruction section on how to start and use the program.<br />
<br />
== User Instructions ==<br />
<br />
Once everything is installed, the program can be ran by executing the following commands:<br />
bone$ sudo ./setup.sh<br />
bone$ sudo ./httpMonitor.py<br />
<br />
<br />
Once the application is running, open yourLocalHost:434 in a web browser to view the monitor. The variable yourLocalHost should be the same IP address used to open cloud9. For me, this number is 192.168.7.2. So, to open the Pet Monitor I enter 192.168.7.2:434 into a web browser. If desired, the pet monitor can be made available on non-local hosts as well. This is done by first configuring ngrok (see Installation Instructions) and then in a '''new''' terminal entering:<br />
bone$ ./ngrok http 434<br />
Note: If using ngrok there will be two terminals connected to the Bone at once. One is running httpmoniter.py and the other is running ngrok. <br />
<br />
In the terminal running ngrok, a screen will appear with a public browser that can be used to view the pet monitor from anywhere. One issue with this is that each time ngrok is ran, a new url for the public browser is generated. This should not be an issue if the pet monitor is not restarted often. However, if this is an issue it is possible to use the same url each time the pet monitor is ran. It costs $60/year for the subscription to ngrok that allows this. For more information visit https://ngrok.com/pricing.<br />
<br />
<br />
On the website, there are many buttons that control the pet monitor. A table is included below describing their functionality:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Functionality<br />
|-<br />
| Camera || Toggles the camera. When turned on, the website will pause for a few seconds while the video is loading and then display the stream and change the button to its on state. When turned off, the stream should disappear will little or no delay and the button will return to its off state.<br />
|-<br />
| Speaker at frequency || When turned on, the speaker will play a particular frequency and change the button to its on state. The value of this frequency can be chosen by entering the desired frequency in the text box directly to the right of the words "Speaker at frequency." When turned off the speaker will stop making sound and the button will return to its off state.<br />
|-<br />
| Song|| When play is pressed, the song Old McDonald plays on the speaker and the button changes to pause. If pause is pressed before the song is over, the song will stop playing and the button will change back to play. Otherwise, once the song is over and the page is refreshed the button will be in its play state.<br />
|-<br />
| Let out || This button is animated and when pressed it resets the time since last let out. It should be pressed whenever the pet is let out.<br />
|-<br />
| Feed || This button is animated and when pressed it resets the time since last meal. It should be pressed whenever the pet is fed.<br />
|-<br />
| Refresh || This button is animated and when pressed it refreshes the page. This refreshes the data section as well as the status of the song button. It has the same functionality as pressing refresh in the upper left of the web browser.<br />
|}<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that update the temperature displayed when the page is refreshed<br />
* Data for time since let out and time since fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<br />
<br />
== Theory of Operation ==<br />
When the program httpMonitor.py is ran, Flask starts a web browser at yourLocalIp:434. When a button is pressed on the website, it redirects the website to a new address. For example when the camera button is pressed, the url redirects to yourLocalIP:434/camera/toggle. When this location is reached a portion of the python code runs. This code determines which button is pressed and then executes the appropriate function. Most function are relatively simple only changing variables or interacting with i2c/pwm. However, both the camera and the song buttons have function that require threading. This means these functions and the main program are run simultaneously. This allows the program to continue running (refresh the page) while they execute (stream video/play Old McDonald). Once functions finish they redirect the url back to '\' which looks like yourLocalIP:434. When the code reaches this url it runs a new section of python code which updates the information in the HTML/CSS. This is when the user sees change which is why the user never sees the url change. It also explains some delays in buttons changing. For instance, when the camera button is pushed a thread is created to run motion. The main code then waits four seconds and then redirects to '/' (updating the page). This four seconds allows the video stream to load so that a stream appears when the refresh occurs.<br />
<br />
[[File:PetMonitorTheroyOfOperation.JPG|1100px|Pet Monitor theory of operation]]<br />
<br />
== Work Breakdown ==<br />
<br />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop the camera stream using animated button from website<br />
* Adjusted the size of the displayed camera stream on the website<br />
* Added a speaker that can play a song as well as a specified frequency<br />
* Developed an interface to the speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates the temperature displayed on the website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<br />
<br />
== Conclusions ==<br />
<br />
This project has has taught me a lot. This is my first time using HTML/CSS to make more then simple labels or buttons. I think the website ended up looking better then I expected especially since I did not use a template. I also learned about threading which is practical knowledge. I was able to successfully use threading twice during this project<br />
<br />
An idea for a spin off this project would be to create a pet trainer. This would be a program that buzzes whenever a pet enters a certain area. The application I used to stream video also tracks motion. So, this could be used to detect when there is movement in a specified area. When there is motion a buzzer is triggered. This would be useful to train dogs to stay away from food, valuable, or other items.<br />
<br />
{{YoderFoot}}</div>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539611ECE434 Project Pet Monitor2020-11-18T01:09:04Z<p>Rogerscj37: /* User Instructions */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a USB camera attached to the Bone. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Pet Monitor project git page: https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
<br />
<br />
Installing the project:<br />
<br />
1. First clone the git repository to your beagle bone and then enter said directory:<br />
bone$ git clone https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
bone$ cd petMonitor<br />
<br />
2. Next, add an authentication token for ngrok. To do this, first create a ngrok account by visiting https://ngrok.com/ and clicking sign up. After the account is created, a authentication token should be available. Open setup.sh and replace 'ENTER_YOUR_TOKEN_HERE' in line 8 with your authentication token.<br />
<br />
3. Finally, install all necessary libraries. For your convenience, a install.sh file was created. To execute it run:<br />
bone$ sudo ./install.sh<br />
<br />
<br />
After this the Pet Monitor is ready to go. See the User Instruction section on how to start and use the program.<br />
<br />
== User Instructions ==<br />
<br />
Once everything is installed, the program can be ran by executing the following commands:<br />
bone$ sudo ./setup.sh<br />
bone$ sudo ./httpMonitor.py<br />
<br />
<br />
Once the application is running, open yourLocalHost:434 in a web browser to view the monitor. The variable yourLocalHost should be the same IP address used to open cloud9. For me, this number is 192.168.7.2. So, to open the Pet Monitor I enter 192.168.7.2:434 into a web browser. If desired, the pet monitor can be made available on non-local hosts as well. This is done by first configuring ngrok (see Installation Instructions) and then in a '''new''' terminal entering:<br />
bone$ ./ngrok http 434<br />
Note: If using ngrok there will be two terminals connected to the Bone at once. One is running httpmoniter.py and the other is running ngrok. <br />
<br />
In the terminal running ngrok, a screen will appear with a public browser that can be used to view the pet monitor from anywhere. One issue with this is that each time ngrok is ran, a new url for the public browser is generated. This should not be an issue if the pet monitor is not restarted often. However, if this is an issue it is possible to use the same url each time the pet monitor is ran. It costs $60/year for the subscription to ngrok that allows this. For more information visit https://ngrok.com/pricing.<br />
<br />
<br />
On the website, there are many buttons that control the pet monitor. A table is included below describing their functionality:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Functionality<br />
|-<br />
| Camera || Toggles the camera. When turned on, the website will pause for a few seconds while the video is loading and then display the stream and change the button to its on state. When turned off, the stream should disappear will little or no delay and the button will return to its off state.<br />
|-<br />
| Speaker at frequency || When turned on, the speaker will play a particular frequency and change the button to its on state. The value of this frequency can be chosen by entering the desired frequency in the text box directly to the right of the words "Speaker at frequency." When turned off the speaker will stop making sound and the button will return to its off state.<br />
|-<br />
| Song|| When play is pressed, the song Old McDonald plays on the speaker and the button changes to pause. If pause is pressed before the song is over, the song will stop playing and the button will change back to play. Otherwise, once the song is over and the page is refreshed the button will be in its play state.<br />
|-<br />
| Let out || This button is animated and when pressed it resets the time since last let out. It should be pressed whenever the pet is let out.<br />
|-<br />
| Feed || This button is animated and when pressed it resets the time since last meal. It should be pressed whenever the pet is fed.<br />
|-<br />
| Refresh || This button is animated and when pressed it refreshes the page. This refreshes the data section as well as the status of the song button. It has the same functionality as pressing refresh in the upper left of the web browser.<br />
|}<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that update the temperature displayed when the page is refreshed<br />
* Data for time since let out and time since fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<br />
<br />
== Theory of Operation ==<br />
When the program httpMonitor.py is ran, Flask starts a web browser at yourLocalIp:434. When a button is pressed on the website, it redirects the website to a new address. For example when the camera button is pressed, the url redirects to yourLocalIP:434/camera/toggle. When this location is reached a portion of the python code runs. This code determines which button is pressed and then executes the appropriate function. Most function are relatively simple only changing variables or interacting with i2c/pwm. However, both the camera and the song buttons have function that require threading. This means these functions and the main program are run simultaneously. This allows the program to continue running (refresh the page) while they execute (stream video/play Old McDonald). Once functions finish they redirect the url back to '\' which looks like yourLocalIP:434. When the code reaches this url it runs a new section of python code which updates the information in the HTML/CSS. This is when the user sees change which is why the user never sees the url change. It also explains some delays in buttons changing. For instance, when the camera button is pushed a thread is created to run motion. The main code then waits four seconds and then redirects to '/' (updating the page). This four seconds allows the video stream to load so that a stream appears when the refresh occurs.<br />
<br />
[[File:PetMonitorTheroyOfOperation.JPG|1100px|Pet Monitor theory of operation]]<br />
<br />
== Work Breakdown ==<br />
<br />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop the camera stream using animated button from website<br />
* Adjusted the size of the displayed camera stream on the website<br />
* Added a speaker that can play a song as well as a specified frequency<br />
* Developed an interface to speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates the temperature displayed on the website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<br />
<br />
== Conclusions ==<br />
<br />
This project has has taught me a lot. This is my first time using HTML/CSS to make more then simple labels or buttons. I think the website ended up looking better then I expected especially since I did not use a template. I also learned about threading which is practical knowledge. I was able to successfully use threading twice during this project<br />
<br />
An idea for a spin off this project would be to create a pet trainer. This would be a program that buzzes whenever a pet enters a certain area. The application I used to stream video also tracks motion. So, this could be used to detect when there is movement in a specified area. When there is motion a buzzer is triggered. This would be useful to train dogs to stay away from food, valuable, or other items.<br />
<br />
{{YoderFoot}}</div>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539586ECE434 Project Pet Monitor2020-11-18T01:07:51Z<p>Rogerscj37: /* User Instructions */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a USB camera attached to the Bone. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Pet Monitor project git page: https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
<br />
<br />
Installing the project:<br />
<br />
1. First clone the git repository to your beagle bone and then enter said directory:<br />
bone$ git clone https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
bone$ cd petMonitor<br />
<br />
2. Next, add an authentication token for ngrok. To do this, first create a ngrok account by visiting https://ngrok.com/ and clicking sign up. After the account is created, a authentication token should be available. Open setup.sh and replace 'ENTER_YOUR_TOKEN_HERE' in line 8 with your authentication token.<br />
<br />
3. Finally, install all necessary libraries. For your convenience, a install.sh file was created. To execute it run:<br />
bone$ sudo ./install.sh<br />
<br />
<br />
After this the Pet Monitor is ready to go. See the User Instruction section on how to start and use the program.<br />
<br />
== User Instructions ==<br />
<br />
Once everything is installed, the program can be ran by executing the following commands:<br />
bone$ sudo ./setup.sh<br />
bone$ sudo ./httpMonitor.py<br />
<br />
<br />
Once the application is running, open yourLocalHost:434 in a web browser to view the monitor. The variable yourLocalHost should be the same IP address used to open cloud9. For me, this number is 192.168.7.2. So, to open the Pet Monitor I enter 192.168.7.2:434 into a web browser. If desired, the pet monitor can be made available on non-local hosts as well. This is done by first configuring ngrok (see Installation Instructions) and then in a '''new''' terminal entering:<br />
bone$ ./ngrok http 434<br />
Note: If using ngrok there will be two terminals connected to the Bone at once. One is running httpmoniter.py and the other is running ngrok. <br />
In the terminal running ngrok, a screen will appear with a public browser that can be used to view the pet monitor from anywhere. One issue with using this method is that each time ngrok is ran, a new url for the public browser is generated. This should not be an issue if the pet monitor is not restarted often. However, if this is an issue it is possible to use the same url each time the pet monitor is ran. It costs $60/year for the subscription to ngrok that allows this. For more information visit https://ngrok.com/pricing.<br />
<br />
<br />
On the website, there are many buttons that control the pet monitor. A table is included below describing their functionality:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Functionality<br />
|-<br />
| Camera || Toggles the camera. When turned on, the website will pause for a few seconds while the video is loading and then display the stream and change the button to its on state. When turned off, the stream should disappear will little or no delay and the button will return to its off state.<br />
|-<br />
| Speaker at frequency || When turned on, the speaker will play a particular frequency and change the button to its on state. The value of this frequency can be chosen by entering the desired frequency in the text box directly to the right of the words "Speaker at frequency." When turned off the speaker will stop making sound and the button will return to its off state.<br />
|-<br />
| Song|| When play is pressed, the song Old McDonald plays on the speaker and the button changes to pause. If pause is pressed before the song is over, the song will stop playing and the button will change back to play. Otherwise, once the song is over and the page is refreshed the button will be in its play state.<br />
|-<br />
| Let out || This button is animated and when pressed it resets the time since last let out. It should be pressed whenever the pet is let out.<br />
|-<br />
| Feed || This button is animated and when pressed it resets the time since last meal. It should be pressed whenever the pet is fed.<br />
|-<br />
| Refresh || This button is animated and when pressed it refreshes the page. This refreshes the data section as well as the status of the song button. It has the same functionality as pressing refresh in the upper left of the web browser.<br />
|}<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that update the temperature displayed when the page is refreshed<br />
* Data for time since let out and time since fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<br />
<br />
== Theory of Operation ==<br />
When the program httpMonitor.py is ran, Flask starts a web browser at yourLocalIp:434. When a button is pressed on the website, it redirects the website to a new address. For example when the camera button is pressed, the url redirects to yourLocalIP:434/camera/toggle. When this location is reached a portion of the python code runs. This code determines which button is pressed and then executes the appropriate function. Most function are relatively simple only changing variables or interacting with i2c/pwm. However, both the camera and the song buttons have function that require threading. This means these functions and the main program are run simultaneously. This allows the program to continue running (refresh the page) while they execute (stream video/play Old McDonald). Once functions finish they redirect the url back to '\' which looks like yourLocalIP:434. When the code reaches this url it runs a new section of python code which updates the information in the HTML/CSS. This is when the user sees change which is why the user never sees the url change. It also explains some delays in buttons changing. For instance, when the camera button is pushed a thread is created to run motion. The main code then waits four seconds and then redirects to '/' (updating the page). This four seconds allows the video stream to load so that a stream appears when the refresh occurs.<br />
<br />
[[File:PetMonitorTheroyOfOperation.JPG|1100px|Pet Monitor theory of operation]]<br />
<br />
== Work Breakdown ==<br />
<br />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop the camera stream using animated button from website<br />
* Adjusted the size of the displayed camera stream on the website<br />
* Added a speaker that can play a song as well as a specified frequency<br />
* Developed an interface to speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates the temperature displayed on the website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<br />
<br />
== Conclusions ==<br />
<br />
This project has has taught me a lot. This is my first time using HTML/CSS to make more then simple labels or buttons. I think the website ended up looking better then I expected especially since I did not use a template. I also learned about threading which is practical knowledge. I was able to successfully use threading twice during this project<br />
<br />
An idea for a spin off this project would be to create a pet trainer. This would be a program that buzzes whenever a pet enters a certain area. The application I used to stream video also tracks motion. So, this could be used to detect when there is movement in a specified area. When there is motion a buzzer is triggered. This would be useful to train dogs to stay away from food, valuable, or other items.<br />
<br />
{{YoderFoot}}</div>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539576ECE434 Project Pet Monitor2020-11-18T01:06:38Z<p>Rogerscj37: /* User Instructions */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a USB camera attached to the Bone. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Pet Monitor project git page: https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
<br />
<br />
Installing the project:<br />
<br />
1. First clone the git repository to your beagle bone and then enter said directory:<br />
bone$ git clone https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
bone$ cd petMonitor<br />
<br />
2. Next, add an authentication token for ngrok. To do this, first create a ngrok account by visiting https://ngrok.com/ and clicking sign up. After the account is created, a authentication token should be available. Open setup.sh and replace 'ENTER_YOUR_TOKEN_HERE' in line 8 with your authentication token.<br />
<br />
3. Finally, install all necessary libraries. For your convenience, a install.sh file was created. To execute it run:<br />
bone$ sudo ./install.sh<br />
<br />
<br />
After this the Pet Monitor is ready to go. See the User Instruction section on how to start and use the program.<br />
<br />
== User Instructions ==<br />
<br />
Once everything is installed, the program can be ran by executing the following commands:<br />
bone$ sudo ./setup.sh<br />
bone$ sudo ./httpMonitor.py<br />
<br />
<br />
Once the application is running, open yourLocalHost:434 in a web browser to view the monitor. The variable yourLocalHost should be the same IP address used to open cloud9. For me, this number is 192.168.7.2. So, to open the Pet Monitor I enter 192.168.7.2:434 into a web browser. If desired, the pet monitor can be made available on non-local hosts as well. This is done by first configuring ngrok (see Installation Instructions) and then in a '''new''' terminal entering:<br />
bone$ ./ngrok http 434<br />
Note: if using ngrok there will be two terminals connected to the Bone at once. One is running httpmoniter.py and the other is running ngrok. One the terminal running ngrok, a screen will appear with a public browser that can be used to view the pet monitor from anywhere. One issue with using this method is that each time ngrok is ran, a new url for the public browser is generated. This should not be an issue if the pet monitor is not restarted often. However, if this is an issue it is possible to use the same url each time the pet monitor is ran. It costs $60/year for the subscription to ngrok that allows this. For more information visit https://ngrok.com/pricing.<br />
<br />
<br />
On the website, there are many buttons that control the pet monitor. A table is included below describing their functionality:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Functionality<br />
|-<br />
| Camera || Toggles the camera. When turned on, the website will pause for a few seconds while the video is loading and then display the stream and change the button to its on state. When turned off, the stream should disappear will little or no delay and the button will return to its off state.<br />
|-<br />
| Speaker at frequency || When turned on, the speaker will play a particular frequency and change the button to its on state. The value of this frequency can be chosen by entering the desired frequency in the text box directly to the right of the words "Speaker at frequency." When turned off the speaker will stop making sound and the button will return to its off state.<br />
|-<br />
| Song|| When play is pressed, the song Old McDonald plays on the speaker and the button changes to pause. If pause is pressed before the song is over, the song will stop playing and the button will change back to play. Otherwise, once the song is over and the page is refreshed the button will be in its play state.<br />
|-<br />
| Let out || This button is animated and when pressed it resets the time since last let out. It should be pressed whenever the pet is let out.<br />
|-<br />
| Feed || This button is animated and when pressed it resets the time since last meal. It should be pressed whenever the pet is fed.<br />
|-<br />
| Refresh || This button is animated and when pressed it refreshes the page. This refreshes the data section as well as the status of the song button. It has the same functionality as pressing refresh in the upper left of the web browser.<br />
|}<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that update the temperature displayed when the page is refreshed<br />
* Data for time since let out and time since fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<br />
<br />
== Theory of Operation ==<br />
When the program httpMonitor.py is ran, Flask starts a web browser at yourLocalIp:434. When a button is pressed on the website, it redirects the website to a new address. For example when the camera button is pressed, the url redirects to yourLocalIP:434/camera/toggle. When this location is reached a portion of the python code runs. This code determines which button is pressed and then executes the appropriate function. Most function are relatively simple only changing variables or interacting with i2c/pwm. However, both the camera and the song buttons have function that require threading. This means these functions and the main program are run simultaneously. This allows the program to continue running (refresh the page) while they execute (stream video/play Old McDonald). Once functions finish they redirect the url back to '\' which looks like yourLocalIP:434. When the code reaches this url it runs a new section of python code which updates the information in the HTML/CSS. This is when the user sees change which is why the user never sees the url change. It also explains some delays in buttons changing. For instance, when the camera button is pushed a thread is created to run motion. The main code then waits four seconds and then redirects to '/' (updating the page). This four seconds allows the video stream to load so that a stream appears when the refresh occurs.<br />
<br />
[[File:PetMonitorTheroyOfOperation.JPG|1100px|Pet Monitor theory of operation]]<br />
<br />
== Work Breakdown ==<br />
<br />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop the camera stream using animated button from website<br />
* Adjusted the size of the displayed camera stream on the website<br />
* Added a speaker that can play a song as well as a specified frequency<br />
* Developed an interface to speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates the temperature displayed on the website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<br />
<br />
== Conclusions ==<br />
<br />
This project has has taught me a lot. This is my first time using HTML/CSS to make more then simple labels or buttons. I think the website ended up looking better then I expected especially since I did not use a template. I also learned about threading which is practical knowledge. I was able to successfully use threading twice during this project<br />
<br />
An idea for a spin off this project would be to create a pet trainer. This would be a program that buzzes whenever a pet enters a certain area. The application I used to stream video also tracks motion. So, this could be used to detect when there is movement in a specified area. When there is motion a buzzer is triggered. This would be useful to train dogs to stay away from food, valuable, or other items.<br />
<br />
{{YoderFoot}}</div>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539561ECE434 Project Pet Monitor2020-11-18T01:03:11Z<p>Rogerscj37: /* Conclusions */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a USB camera attached to the Bone. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Pet Monitor project git page: https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
<br />
<br />
Installing the project:<br />
<br />
1. First clone the git repository to your beagle bone and then enter said directory:<br />
bone$ git clone https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
bone$ cd petMonitor<br />
<br />
2. Next, add an authentication token for ngrok. To do this, first create a ngrok account by visiting https://ngrok.com/ and clicking sign up. After the account is created, a authentication token should be available. Open setup.sh and replace 'ENTER_YOUR_TOKEN_HERE' in line 8 with your authentication token.<br />
<br />
3. Finally, install all necessary libraries. For your convenience, a install.sh file was created. To execute it run:<br />
bone$ sudo ./install.sh<br />
<br />
<br />
After this the Pet Monitor is ready to go. See the User Instruction section on how to start and use the program.<br />
<br />
== User Instructions ==<br />
<br />
Once everything is installed, the program can be ran by executing the following commands:<br />
bone$ sudo ./setup.sh<br />
bone$ sudo ./httpMonitor.py<br />
<br />
<br />
Once the application is running, open yourLocalHost:434 in a web browser to view the monitor. The variable yourLocalHost should be the same IP address used to open cloud9. For me, this number is 192.168.7.2. So, to open the Pet Monitor I enter 192.168.7.2:434 into a web browser. If desired, the pet monitor can be made available on non-local hosts as well. This is done by first configuring ngrok (see Installation Instructions) and then in a '''new''' terminal entering:<br />
bone$ ./ngrok http 434<br />
Note with this option there will be two terminals connected to the Bone at once. One is running httpmoniter.py and the other is running ngrok. One the terminal running ngrok, a screen will appear with a public browser that can be used to view the pet monitor from anywhere. One issue with using this method is that each time ngrok is ran, a new url for the public browser is generated. This should not be an issue if the pet monitor is not restarted often. However, if this is an issue it is possible to use the same url each time the pet monitor is ran. It costs $60/year for the subscription to ngrok that allows this. For more information visit https://ngrok.com/pricing.<br />
<br />
<br />
On the website, there are many buttons that control the pet monitor. A table is included below describing their functionality:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Functionality<br />
|-<br />
| Camera || Toggles the camera. When turned on, the website will pause for a few seconds while the video is loading and then display the stream and change the button to its on state. When turned off, the stream should disappear will little or no delay and the button will return to its off state.<br />
|-<br />
| Speaker at frequency || When turned on, the speaker will play a particular frequency and change the button to its on state. The value of this frequency can be chosen by entering the desired frequency in the text box directly to the right of the words "Speaker at frequency." When turned off the speaker will stop making sound and the button will return to its off state.<br />
|-<br />
| Song|| When play is pressed, the song Old McDonald plays on the speaker and the button changes to pause. If pause is pressed before the song is over, the song will stop playing and the button will change back to play. Otherwise, once the song is over and the page is refreshed the button will be in its play state.<br />
|-<br />
| Let out || This button is animated and when pressed it resets the time since last let out. It should be pressed whenever the pet is let out.<br />
|-<br />
| Feed || This button is animated and when pressed it resets the time since last meal. It should be pressed whenever the pet is fed.<br />
|-<br />
| Refresh || This button is animated and when pressed it refreshes the page. This refreshes the data section as well as the status of the song button. It has the same functionality as pressing refresh in the upper left of the web browser.<br />
|}<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that update the temperature displayed when the page is refreshed<br />
* Data for time since let out and time since fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<br />
<br />
== Theory of Operation ==<br />
When the program httpMonitor.py is ran, Flask starts a web browser at yourLocalIp:434. When a button is pressed on the website, it redirects the website to a new address. For example when the camera button is pressed, the url redirects to yourLocalIP:434/camera/toggle. When this location is reached a portion of the python code runs. This code determines which button is pressed and then executes the appropriate function. Most function are relatively simple only changing variables or interacting with i2c/pwm. However, both the camera and the song buttons have function that require threading. This means these functions and the main program are run simultaneously. This allows the program to continue running (refresh the page) while they execute (stream video/play Old McDonald). Once functions finish they redirect the url back to '\' which looks like yourLocalIP:434. When the code reaches this url it runs a new section of python code which updates the information in the HTML/CSS. This is when the user sees change which is why the user never sees the url change. It also explains some delays in buttons changing. For instance, when the camera button is pushed a thread is created to run motion. The main code then waits four seconds and then redirects to '/' (updating the page). This four seconds allows the video stream to load so that a stream appears when the refresh occurs.<br />
<br />
[[File:PetMonitorTheroyOfOperation.JPG|1100px|Pet Monitor theory of operation]]<br />
<br />
== Work Breakdown ==<br />
<br />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop the camera stream using animated button from website<br />
* Adjusted the size of the displayed camera stream on the website<br />
* Added a speaker that can play a song as well as a specified frequency<br />
* Developed an interface to speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates the temperature displayed on the website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<br />
<br />
== Conclusions ==<br />
<br />
This project has has taught me a lot. This is my first time using HTML/CSS to make more then simple labels or buttons. I think the website ended up looking better then I expected especially since I did not use a template. I also learned about threading which is practical knowledge. I was able to successfully use threading twice during this project<br />
<br />
An idea for a spin off this project would be to create a pet trainer. This would be a program that buzzes whenever a pet enters a certain area. The application I used to stream video also tracks motion. So, this could be used to detect when there is movement in a specified area. When there is motion a buzzer is triggered. This would be useful to train dogs to stay away from food, valuable, or other items.<br />
<br />
{{YoderFoot}}</div>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539556ECE434 Project Pet Monitor2020-11-18T00:45:27Z<p>Rogerscj37: /* Theory of Operation */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a USB camera attached to the Bone. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Pet Monitor project git page: https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
<br />
<br />
Installing the project:<br />
<br />
1. First clone the git repository to your beagle bone and then enter said directory:<br />
bone$ git clone https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
bone$ cd petMonitor<br />
<br />
2. Next, add an authentication token for ngrok. To do this, first create a ngrok account by visiting https://ngrok.com/ and clicking sign up. After the account is created, a authentication token should be available. Open setup.sh and replace 'ENTER_YOUR_TOKEN_HERE' in line 8 with your authentication token.<br />
<br />
3. Finally, install all necessary libraries. For your convenience, a install.sh file was created. To execute it run:<br />
bone$ sudo ./install.sh<br />
<br />
<br />
After this the Pet Monitor is ready to go. See the User Instruction section on how to start and use the program.<br />
<br />
== User Instructions ==<br />
<br />
Once everything is installed, the program can be ran by executing the following commands:<br />
bone$ sudo ./setup.sh<br />
bone$ sudo ./httpMonitor.py<br />
<br />
<br />
Once the application is running, open yourLocalHost:434 in a web browser to view the monitor. The variable yourLocalHost should be the same IP address used to open cloud9. For me, this number is 192.168.7.2. So, to open the Pet Monitor I enter 192.168.7.2:434 into a web browser. If desired, the pet monitor can be made available on non-local hosts as well. This is done by first configuring ngrok (see Installation Instructions) and then in a '''new''' terminal entering:<br />
bone$ ./ngrok http 434<br />
Note with this option there will be two terminals connected to the Bone at once. One is running httpmoniter.py and the other is running ngrok. One the terminal running ngrok, a screen will appear with a public browser that can be used to view the pet monitor from anywhere. One issue with using this method is that each time ngrok is ran, a new url for the public browser is generated. This should not be an issue if the pet monitor is not restarted often. However, if this is an issue it is possible to use the same url each time the pet monitor is ran. It costs $60/year for the subscription to ngrok that allows this. For more information visit https://ngrok.com/pricing.<br />
<br />
<br />
On the website, there are many buttons that control the pet monitor. A table is included below describing their functionality:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Functionality<br />
|-<br />
| Camera || Toggles the camera. When turned on, the website will pause for a few seconds while the video is loading and then display the stream and change the button to its on state. When turned off, the stream should disappear will little or no delay and the button will return to its off state.<br />
|-<br />
| Speaker at frequency || When turned on, the speaker will play a particular frequency and change the button to its on state. The value of this frequency can be chosen by entering the desired frequency in the text box directly to the right of the words "Speaker at frequency." When turned off the speaker will stop making sound and the button will return to its off state.<br />
|-<br />
| Song|| When play is pressed, the song Old McDonald plays on the speaker and the button changes to pause. If pause is pressed before the song is over, the song will stop playing and the button will change back to play. Otherwise, once the song is over and the page is refreshed the button will be in its play state.<br />
|-<br />
| Let out || This button is animated and when pressed it resets the time since last let out. It should be pressed whenever the pet is let out.<br />
|-<br />
| Feed || This button is animated and when pressed it resets the time since last meal. It should be pressed whenever the pet is fed.<br />
|-<br />
| Refresh || This button is animated and when pressed it refreshes the page. This refreshes the data section as well as the status of the song button. It has the same functionality as pressing refresh in the upper left of the web browser.<br />
|}<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that update the temperature displayed when the page is refreshed<br />
* Data for time since let out and time since fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<br />
<br />
== Theory of Operation ==<br />
When the program httpMonitor.py is ran, Flask starts a web browser at yourLocalIp:434. When a button is pressed on the website, it redirects the website to a new address. For example when the camera button is pressed, the url redirects to yourLocalIP:434/camera/toggle. When this location is reached a portion of the python code runs. This code determines which button is pressed and then executes the appropriate function. Most function are relatively simple only changing variables or interacting with i2c/pwm. However, both the camera and the song buttons have function that require threading. This means these functions and the main program are run simultaneously. This allows the program to continue running (refresh the page) while they execute (stream video/play Old McDonald). Once functions finish they redirect the url back to '\' which looks like yourLocalIP:434. When the code reaches this url it runs a new section of python code which updates the information in the HTML/CSS. This is when the user sees change which is why the user never sees the url change. It also explains some delays in buttons changing. For instance, when the camera button is pushed a thread is created to run motion. The main code then waits four seconds and then redirects to '/' (updating the page). This four seconds allows the video stream to load so that a stream appears when the refresh occurs.<br />
<br />
[[File:PetMonitorTheroyOfOperation.JPG|1100px|Pet Monitor theory of operation]]<br />
<br />
== Work Breakdown ==<br />
<br />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop the camera stream using animated button from website<br />
* Adjusted the size of the displayed camera stream on the website<br />
* Added a speaker that can play a song as well as a specified frequency<br />
* Developed an interface to speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates the temperature displayed on the website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<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>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539551ECE434 Project Pet Monitor2020-11-18T00:45:15Z<p>Rogerscj37: /* Theory of Operation */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a USB camera attached to the Bone. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Pet Monitor project git page: https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
<br />
<br />
Installing the project:<br />
<br />
1. First clone the git repository to your beagle bone and then enter said directory:<br />
bone$ git clone https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
bone$ cd petMonitor<br />
<br />
2. Next, add an authentication token for ngrok. To do this, first create a ngrok account by visiting https://ngrok.com/ and clicking sign up. After the account is created, a authentication token should be available. Open setup.sh and replace 'ENTER_YOUR_TOKEN_HERE' in line 8 with your authentication token.<br />
<br />
3. Finally, install all necessary libraries. For your convenience, a install.sh file was created. To execute it run:<br />
bone$ sudo ./install.sh<br />
<br />
<br />
After this the Pet Monitor is ready to go. See the User Instruction section on how to start and use the program.<br />
<br />
== User Instructions ==<br />
<br />
Once everything is installed, the program can be ran by executing the following commands:<br />
bone$ sudo ./setup.sh<br />
bone$ sudo ./httpMonitor.py<br />
<br />
<br />
Once the application is running, open yourLocalHost:434 in a web browser to view the monitor. The variable yourLocalHost should be the same IP address used to open cloud9. For me, this number is 192.168.7.2. So, to open the Pet Monitor I enter 192.168.7.2:434 into a web browser. If desired, the pet monitor can be made available on non-local hosts as well. This is done by first configuring ngrok (see Installation Instructions) and then in a '''new''' terminal entering:<br />
bone$ ./ngrok http 434<br />
Note with this option there will be two terminals connected to the Bone at once. One is running httpmoniter.py and the other is running ngrok. One the terminal running ngrok, a screen will appear with a public browser that can be used to view the pet monitor from anywhere. One issue with using this method is that each time ngrok is ran, a new url for the public browser is generated. This should not be an issue if the pet monitor is not restarted often. However, if this is an issue it is possible to use the same url each time the pet monitor is ran. It costs $60/year for the subscription to ngrok that allows this. For more information visit https://ngrok.com/pricing.<br />
<br />
<br />
On the website, there are many buttons that control the pet monitor. A table is included below describing their functionality:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Functionality<br />
|-<br />
| Camera || Toggles the camera. When turned on, the website will pause for a few seconds while the video is loading and then display the stream and change the button to its on state. When turned off, the stream should disappear will little or no delay and the button will return to its off state.<br />
|-<br />
| Speaker at frequency || When turned on, the speaker will play a particular frequency and change the button to its on state. The value of this frequency can be chosen by entering the desired frequency in the text box directly to the right of the words "Speaker at frequency." When turned off the speaker will stop making sound and the button will return to its off state.<br />
|-<br />
| Song|| When play is pressed, the song Old McDonald plays on the speaker and the button changes to pause. If pause is pressed before the song is over, the song will stop playing and the button will change back to play. Otherwise, once the song is over and the page is refreshed the button will be in its play state.<br />
|-<br />
| Let out || This button is animated and when pressed it resets the time since last let out. It should be pressed whenever the pet is let out.<br />
|-<br />
| Feed || This button is animated and when pressed it resets the time since last meal. It should be pressed whenever the pet is fed.<br />
|-<br />
| Refresh || This button is animated and when pressed it refreshes the page. This refreshes the data section as well as the status of the song button. It has the same functionality as pressing refresh in the upper left of the web browser.<br />
|}<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that update the temperature displayed when the page is refreshed<br />
* Data for time since let out and time since fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<br />
<br />
== Theory of Operation ==<br />
When the program httpMonitor.py is ran, Flask starts a web browser at yourLocalIp:434. When a button is pressed on the website, it redirects the website to a new address. For example when the camera button is pressed, the url redirects to yourLocalIP:434/camera/toggle. When this location is reached a portion of the python code runs. This code determines which button is pressed and then executes the appropriate function. Most function are relatively simple only changing variables or interacting with i2c/pwm. However, both the camera and the song buttons have function that require threading. This means these functions and the main program are run simultaneously. This allows the program to continue running (refresh the page) while they execute (stream video/play Old McDonald). Once functions finish they redirect the url back to '\' which looks like yourLocalIP:434. When the code reaches this url it runs a new section of python code which updates the information in the HTML/CSS. This is when the user sees change which is why the user never sees the url change. It also explains some delays in buttons changing. For instance, when the camera button is pushed a thread is created to run motion. The main code then waits four seconds and then redirects to '/' (updating the page). This four seconds allows the video stream to load so that a stream appears when the refresh occurs.<br />
<br />
[[File:PetMonitorTheroyOfOperation.JPG|1300px|Pet Monitor theory of operation]]<br />
<br />
== Work Breakdown ==<br />
<br />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop the camera stream using animated button from website<br />
* Adjusted the size of the displayed camera stream on the website<br />
* Added a speaker that can play a song as well as a specified frequency<br />
* Developed an interface to speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates the temperature displayed on the website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<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>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539546ECE434 Project Pet Monitor2020-11-18T00:45:03Z<p>Rogerscj37: /* Theory of Operation */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a USB camera attached to the Bone. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Pet Monitor project git page: https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
<br />
<br />
Installing the project:<br />
<br />
1. First clone the git repository to your beagle bone and then enter said directory:<br />
bone$ git clone https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
bone$ cd petMonitor<br />
<br />
2. Next, add an authentication token for ngrok. To do this, first create a ngrok account by visiting https://ngrok.com/ and clicking sign up. After the account is created, a authentication token should be available. Open setup.sh and replace 'ENTER_YOUR_TOKEN_HERE' in line 8 with your authentication token.<br />
<br />
3. Finally, install all necessary libraries. For your convenience, a install.sh file was created. To execute it run:<br />
bone$ sudo ./install.sh<br />
<br />
<br />
After this the Pet Monitor is ready to go. See the User Instruction section on how to start and use the program.<br />
<br />
== User Instructions ==<br />
<br />
Once everything is installed, the program can be ran by executing the following commands:<br />
bone$ sudo ./setup.sh<br />
bone$ sudo ./httpMonitor.py<br />
<br />
<br />
Once the application is running, open yourLocalHost:434 in a web browser to view the monitor. The variable yourLocalHost should be the same IP address used to open cloud9. For me, this number is 192.168.7.2. So, to open the Pet Monitor I enter 192.168.7.2:434 into a web browser. If desired, the pet monitor can be made available on non-local hosts as well. This is done by first configuring ngrok (see Installation Instructions) and then in a '''new''' terminal entering:<br />
bone$ ./ngrok http 434<br />
Note with this option there will be two terminals connected to the Bone at once. One is running httpmoniter.py and the other is running ngrok. One the terminal running ngrok, a screen will appear with a public browser that can be used to view the pet monitor from anywhere. One issue with using this method is that each time ngrok is ran, a new url for the public browser is generated. This should not be an issue if the pet monitor is not restarted often. However, if this is an issue it is possible to use the same url each time the pet monitor is ran. It costs $60/year for the subscription to ngrok that allows this. For more information visit https://ngrok.com/pricing.<br />
<br />
<br />
On the website, there are many buttons that control the pet monitor. A table is included below describing their functionality:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Functionality<br />
|-<br />
| Camera || Toggles the camera. When turned on, the website will pause for a few seconds while the video is loading and then display the stream and change the button to its on state. When turned off, the stream should disappear will little or no delay and the button will return to its off state.<br />
|-<br />
| Speaker at frequency || When turned on, the speaker will play a particular frequency and change the button to its on state. The value of this frequency can be chosen by entering the desired frequency in the text box directly to the right of the words "Speaker at frequency." When turned off the speaker will stop making sound and the button will return to its off state.<br />
|-<br />
| Song|| When play is pressed, the song Old McDonald plays on the speaker and the button changes to pause. If pause is pressed before the song is over, the song will stop playing and the button will change back to play. Otherwise, once the song is over and the page is refreshed the button will be in its play state.<br />
|-<br />
| Let out || This button is animated and when pressed it resets the time since last let out. It should be pressed whenever the pet is let out.<br />
|-<br />
| Feed || This button is animated and when pressed it resets the time since last meal. It should be pressed whenever the pet is fed.<br />
|-<br />
| Refresh || This button is animated and when pressed it refreshes the page. This refreshes the data section as well as the status of the song button. It has the same functionality as pressing refresh in the upper left of the web browser.<br />
|}<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that update the temperature displayed when the page is refreshed<br />
* Data for time since let out and time since fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<br />
<br />
== Theory of Operation ==<br />
When the program httpMonitor.py is ran, Flask starts a web browser at yourLocalIp:434. When a button is pressed on the website, it redirects the website to a new address. For example when the camera button is pressed, the url redirects to yourLocalIP:434/camera/toggle. When this location is reached a portion of the python code runs. This code determines which button is pressed and then executes the appropriate function. Most function are relatively simple only changing variables or interacting with i2c/pwm. However, both the camera and the song buttons have function that require threading. This means these functions and the main program are run simultaneously. This allows the program to continue running (refresh the page) while they execute (stream video/play Old McDonald). Once functions finish they redirect the url back to '\' which looks like yourLocalIP:434. When the code reaches this url it runs a new section of python code which updates the information in the HTML/CSS. This is when the user sees change which is why the user never sees the url change. It also explains some delays in buttons changing. For instance, when the camera button is pushed a thread is created to run motion. The main code then waits four seconds and then redirects to '/' (updating the page). This four seconds allows the video stream to load so that a stream appears when the refresh occurs.<br />
<br />
[[File:PetMonitorTheroyOfOperation.JPG|1700px|Pet Monitor theory of operation]]<br />
<br />
== Work Breakdown ==<br />
<br />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop the camera stream using animated button from website<br />
* Adjusted the size of the displayed camera stream on the website<br />
* Added a speaker that can play a song as well as a specified frequency<br />
* Developed an interface to speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates the temperature displayed on the website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<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>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539541ECE434 Project Pet Monitor2020-11-18T00:44:52Z<p>Rogerscj37: /* Theory of Operation */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a USB camera attached to the Bone. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Pet Monitor project git page: https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
<br />
<br />
Installing the project:<br />
<br />
1. First clone the git repository to your beagle bone and then enter said directory:<br />
bone$ git clone https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
bone$ cd petMonitor<br />
<br />
2. Next, add an authentication token for ngrok. To do this, first create a ngrok account by visiting https://ngrok.com/ and clicking sign up. After the account is created, a authentication token should be available. Open setup.sh and replace 'ENTER_YOUR_TOKEN_HERE' in line 8 with your authentication token.<br />
<br />
3. Finally, install all necessary libraries. For your convenience, a install.sh file was created. To execute it run:<br />
bone$ sudo ./install.sh<br />
<br />
<br />
After this the Pet Monitor is ready to go. See the User Instruction section on how to start and use the program.<br />
<br />
== User Instructions ==<br />
<br />
Once everything is installed, the program can be ran by executing the following commands:<br />
bone$ sudo ./setup.sh<br />
bone$ sudo ./httpMonitor.py<br />
<br />
<br />
Once the application is running, open yourLocalHost:434 in a web browser to view the monitor. The variable yourLocalHost should be the same IP address used to open cloud9. For me, this number is 192.168.7.2. So, to open the Pet Monitor I enter 192.168.7.2:434 into a web browser. If desired, the pet monitor can be made available on non-local hosts as well. This is done by first configuring ngrok (see Installation Instructions) and then in a '''new''' terminal entering:<br />
bone$ ./ngrok http 434<br />
Note with this option there will be two terminals connected to the Bone at once. One is running httpmoniter.py and the other is running ngrok. One the terminal running ngrok, a screen will appear with a public browser that can be used to view the pet monitor from anywhere. One issue with using this method is that each time ngrok is ran, a new url for the public browser is generated. This should not be an issue if the pet monitor is not restarted often. However, if this is an issue it is possible to use the same url each time the pet monitor is ran. It costs $60/year for the subscription to ngrok that allows this. For more information visit https://ngrok.com/pricing.<br />
<br />
<br />
On the website, there are many buttons that control the pet monitor. A table is included below describing their functionality:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Functionality<br />
|-<br />
| Camera || Toggles the camera. When turned on, the website will pause for a few seconds while the video is loading and then display the stream and change the button to its on state. When turned off, the stream should disappear will little or no delay and the button will return to its off state.<br />
|-<br />
| Speaker at frequency || When turned on, the speaker will play a particular frequency and change the button to its on state. The value of this frequency can be chosen by entering the desired frequency in the text box directly to the right of the words "Speaker at frequency." When turned off the speaker will stop making sound and the button will return to its off state.<br />
|-<br />
| Song|| When play is pressed, the song Old McDonald plays on the speaker and the button changes to pause. If pause is pressed before the song is over, the song will stop playing and the button will change back to play. Otherwise, once the song is over and the page is refreshed the button will be in its play state.<br />
|-<br />
| Let out || This button is animated and when pressed it resets the time since last let out. It should be pressed whenever the pet is let out.<br />
|-<br />
| Feed || This button is animated and when pressed it resets the time since last meal. It should be pressed whenever the pet is fed.<br />
|-<br />
| Refresh || This button is animated and when pressed it refreshes the page. This refreshes the data section as well as the status of the song button. It has the same functionality as pressing refresh in the upper left of the web browser.<br />
|}<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that update the temperature displayed when the page is refreshed<br />
* Data for time since let out and time since fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<br />
<br />
== Theory of Operation ==<br />
When the program httpMonitor.py is ran, Flask starts a web browser at yourLocalIp:434. When a button is pressed on the website, it redirects the website to a new address. For example when the camera button is pressed, the url redirects to yourLocalIP:434/camera/toggle. When this location is reached a portion of the python code runs. This code determines which button is pressed and then executes the appropriate function. Most function are relatively simple only changing variables or interacting with i2c/pwm. However, both the camera and the song buttons have function that require threading. This means these functions and the main program are run simultaneously. This allows the program to continue running (refresh the page) while they execute (stream video/play Old McDonald). Once functions finish they redirect the url back to '\' which looks like yourLocalIP:434. When the code reaches this url it runs a new section of python code which updates the information in the HTML/CSS. This is when the user sees change which is why the user never sees the url change. It also explains some delays in buttons changing. For instance, when the camera button is pushed a thread is created to run motion. The main code then waits four seconds and then redirects to '/' (updating the page). This four seconds allows the video stream to load so that a stream appears when the refresh occurs.<br />
<br />
[[File:PetMonitorTheroyOfOperation.JPG|900px|Pet Monitor theory of operation]]<br />
<br />
== Work Breakdown ==<br />
<br />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop the camera stream using animated button from website<br />
* Adjusted the size of the displayed camera stream on the website<br />
* Added a speaker that can play a song as well as a specified frequency<br />
* Developed an interface to speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates the temperature displayed on the website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<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>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539536ECE434 Project Pet Monitor2020-11-18T00:44:33Z<p>Rogerscj37: </p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a USB camera attached to the Bone. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Pet Monitor project git page: https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
<br />
<br />
Installing the project:<br />
<br />
1. First clone the git repository to your beagle bone and then enter said directory:<br />
bone$ git clone https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
bone$ cd petMonitor<br />
<br />
2. Next, add an authentication token for ngrok. To do this, first create a ngrok account by visiting https://ngrok.com/ and clicking sign up. After the account is created, a authentication token should be available. Open setup.sh and replace 'ENTER_YOUR_TOKEN_HERE' in line 8 with your authentication token.<br />
<br />
3. Finally, install all necessary libraries. For your convenience, a install.sh file was created. To execute it run:<br />
bone$ sudo ./install.sh<br />
<br />
<br />
After this the Pet Monitor is ready to go. See the User Instruction section on how to start and use the program.<br />
<br />
== User Instructions ==<br />
<br />
Once everything is installed, the program can be ran by executing the following commands:<br />
bone$ sudo ./setup.sh<br />
bone$ sudo ./httpMonitor.py<br />
<br />
<br />
Once the application is running, open yourLocalHost:434 in a web browser to view the monitor. The variable yourLocalHost should be the same IP address used to open cloud9. For me, this number is 192.168.7.2. So, to open the Pet Monitor I enter 192.168.7.2:434 into a web browser. If desired, the pet monitor can be made available on non-local hosts as well. This is done by first configuring ngrok (see Installation Instructions) and then in a '''new''' terminal entering:<br />
bone$ ./ngrok http 434<br />
Note with this option there will be two terminals connected to the Bone at once. One is running httpmoniter.py and the other is running ngrok. One the terminal running ngrok, a screen will appear with a public browser that can be used to view the pet monitor from anywhere. One issue with using this method is that each time ngrok is ran, a new url for the public browser is generated. This should not be an issue if the pet monitor is not restarted often. However, if this is an issue it is possible to use the same url each time the pet monitor is ran. It costs $60/year for the subscription to ngrok that allows this. For more information visit https://ngrok.com/pricing.<br />
<br />
<br />
On the website, there are many buttons that control the pet monitor. A table is included below describing their functionality:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Functionality<br />
|-<br />
| Camera || Toggles the camera. When turned on, the website will pause for a few seconds while the video is loading and then display the stream and change the button to its on state. When turned off, the stream should disappear will little or no delay and the button will return to its off state.<br />
|-<br />
| Speaker at frequency || When turned on, the speaker will play a particular frequency and change the button to its on state. The value of this frequency can be chosen by entering the desired frequency in the text box directly to the right of the words "Speaker at frequency." When turned off the speaker will stop making sound and the button will return to its off state.<br />
|-<br />
| Song|| When play is pressed, the song Old McDonald plays on the speaker and the button changes to pause. If pause is pressed before the song is over, the song will stop playing and the button will change back to play. Otherwise, once the song is over and the page is refreshed the button will be in its play state.<br />
|-<br />
| Let out || This button is animated and when pressed it resets the time since last let out. It should be pressed whenever the pet is let out.<br />
|-<br />
| Feed || This button is animated and when pressed it resets the time since last meal. It should be pressed whenever the pet is fed.<br />
|-<br />
| Refresh || This button is animated and when pressed it refreshes the page. This refreshes the data section as well as the status of the song button. It has the same functionality as pressing refresh in the upper left of the web browser.<br />
|}<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that update the temperature displayed when the page is refreshed<br />
* Data for time since let out and time since fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<br />
<br />
== Theory of Operation ==<br />
When the program httpMonitor.py is ran, Flask starts a web browser at yourLocalIp:434. When a button is pressed on the website, it redirects the website to a new address. For example when the camera button is pressed, the url redirects to yourLocalIP:434/camera/toggle. When this location is reached a portion of the python code runs. This code determines which button is pressed and then executes the appropriate function. Most function are relatively simple only changing variables or interacting with i2c/pwm. However, both the camera and the song buttons have function that require threading. This means these functions and the main program are run simultaneously. This allows the program to continue running (refresh the page) while they execute (stream video/play Old McDonald). Once functions finish they redirect the url back to '\' which looks like yourLocalIP:434. When the code reaches this url it runs a new section of python code which updates the information in the HTML/CSS. This is when the user sees change which is why the user never sees the url change. It also explains some delays in buttons changing. For instance, when the camera button is pushed a thread is created to run motion. The main code then waits four seconds and then redirects to '/' (updating the page). This four seconds allows the video stream to load so that a stream appears when the refresh occurs.<br />
<br />
[[File:PetMonitorTheroyOfOperation.JPG|20px|Pet Monitor theory of operation]]<br />
<br />
== Work Breakdown ==<br />
<br />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop the camera stream using animated button from website<br />
* Adjusted the size of the displayed camera stream on the website<br />
* Added a speaker that can play a song as well as a specified frequency<br />
* Developed an interface to speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates the temperature displayed on the website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<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>Rogerscj37https://elinux.org/index.php?title=File:PetMonitorTheroyOfOperation.JPG&diff=539521File:PetMonitorTheroyOfOperation.JPG2020-11-17T23:40:07Z<p>Rogerscj37: </p>
<hr />
<div></div>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539461ECE434 Project Pet Monitor2020-11-17T21:08:55Z<p>Rogerscj37: /* Work Breakdown */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a USB camera attached to the Bone. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Pet Monitor project git page: https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
<br />
<br />
Installing the project:<br />
<br />
1. First clone the git repository to your beagle bone and then enter said directory:<br />
bone$ git clone https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
bone$ cd petMonitor<br />
<br />
2. Next, add an authentication token for ngrok. To do this, first create a ngrok account by visiting https://ngrok.com/ and clicking sign up. After the account is created, a authentication token should be available. Open setup.sh and replace 'ENTER_YOUR_TOKEN_HERE' in line 8 with your authentication token.<br />
<br />
3. Finally, install all necessary libraries. For your convenience, a install.sh file was created. To execute it run:<br />
bone$ sudo ./install.sh<br />
<br />
<br />
After this the Pet Monitor is ready to go. See the User Instruction section on how to start and use the program.<br />
<br />
== User Instructions ==<br />
<br />
Once everything is installed, the program can be ran by executing the following commands:<br />
bone$ sudo ./setup.sh<br />
bone$ sudo ./httpMonitor.py<br />
<br />
<br />
Once the application is running, open yourLocalHost:434 in a web browser to view the monitor. The variable yourLocalHost should be the same IP address used to open cloud9. For me, this number is 192.168.7.2. So, to open the Pet Monitor I enter 192.168.7.2:434 into a web browser. If desired, the pet monitor can be made available on non-local hosts as well. This is done by first configuring ngrok (see Installation Instructions) and then in a '''new''' terminal entering:<br />
bone$ ./ngrok http 434<br />
Note with this option there will be two terminals connected to the Bone at once. One is running httpmoniter.py and the other is running ngrok. One the terminal running ngrok, a screen will appear with a public browser that can be used to view the pet monitor from anywhere. One issue with using this method is that each time ngrok is ran, a new url for the public browser is generated. This should not be an issue if the pet monitor is not restarted often. However, if this is an issue it is possible to use the same url each time the pet monitor is ran. It costs $60/year for the subscription to ngrok that allows this. For more information visit https://ngrok.com/pricing.<br />
<br />
<br />
On the website, there are many buttons that control the pet monitor. A table is included below describing their functionality:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Functionality<br />
|-<br />
| Camera || Toggles the camera. When turned on, the website will pause for a few seconds while the video is loading and then display the stream and change the button to its on state. When turned off, the stream should disappear will little or no delay and the button will return to its off state.<br />
|-<br />
| Speaker at frequency || When turned on, the speaker will play a particular frequency and change the button to its on state. The value of this frequency can be chosen by entering the desired frequency in the text box directly to the right of the words "Speaker at frequency." When turned off the speaker will stop making sound and the button will return to its off state.<br />
|-<br />
| Song|| When play is pressed, the song Old McDonald plays on the speaker and the button changes to pause. If pause is pressed before the song is over, the song will stop playing and the button will change back to play. Otherwise, once the song is over and the page is refreshed the button will be in its play state.<br />
|-<br />
| Let out || This button is animated and when pressed it resets the time since last let out. It should be pressed whenever the pet is let out.<br />
|-<br />
| Feed || This button is animated and when pressed it resets the time since last meal. It should be pressed whenever the pet is fed.<br />
|-<br />
| Refresh || This button is animated and when pressed it refreshes the page. This refreshes the data section as well as the status of the song button. It has the same functionality as pressing refresh in the upper left of the web browser.<br />
|}<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that update the temperature displayed when the page is refreshed<br />
* Data for time since let out and time since fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<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 />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop the camera stream using animated button from website<br />
* Adjusted the size of the displayed camera stream on the website<br />
* Added a speaker that can play a song as well as a specified frequency<br />
* Developed an interface to speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates the temperature displayed on the website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<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>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539456ECE434 Project Pet Monitor2020-11-17T21:06:29Z<p>Rogerscj37: /* Highlights */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a USB camera attached to the Bone. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Pet Monitor project git page: https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
<br />
<br />
Installing the project:<br />
<br />
1. First clone the git repository to your beagle bone and then enter said directory:<br />
bone$ git clone https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
bone$ cd petMonitor<br />
<br />
2. Next, add an authentication token for ngrok. To do this, first create a ngrok account by visiting https://ngrok.com/ and clicking sign up. After the account is created, a authentication token should be available. Open setup.sh and replace 'ENTER_YOUR_TOKEN_HERE' in line 8 with your authentication token.<br />
<br />
3. Finally, install all necessary libraries. For your convenience, a install.sh file was created. To execute it run:<br />
bone$ sudo ./install.sh<br />
<br />
<br />
After this the Pet Monitor is ready to go. See the User Instruction section on how to start and use the program.<br />
<br />
== User Instructions ==<br />
<br />
Once everything is installed, the program can be ran by executing the following commands:<br />
bone$ sudo ./setup.sh<br />
bone$ sudo ./httpMonitor.py<br />
<br />
<br />
Once the application is running, open yourLocalHost:434 in a web browser to view the monitor. The variable yourLocalHost should be the same IP address used to open cloud9. For me, this number is 192.168.7.2. So, to open the Pet Monitor I enter 192.168.7.2:434 into a web browser. If desired, the pet monitor can be made available on non-local hosts as well. This is done by first configuring ngrok (see Installation Instructions) and then in a '''new''' terminal entering:<br />
bone$ ./ngrok http 434<br />
Note with this option there will be two terminals connected to the Bone at once. One is running httpmoniter.py and the other is running ngrok. One the terminal running ngrok, a screen will appear with a public browser that can be used to view the pet monitor from anywhere. One issue with using this method is that each time ngrok is ran, a new url for the public browser is generated. This should not be an issue if the pet monitor is not restarted often. However, if this is an issue it is possible to use the same url each time the pet monitor is ran. It costs $60/year for the subscription to ngrok that allows this. For more information visit https://ngrok.com/pricing.<br />
<br />
<br />
On the website, there are many buttons that control the pet monitor. A table is included below describing their functionality:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Functionality<br />
|-<br />
| Camera || Toggles the camera. When turned on, the website will pause for a few seconds while the video is loading and then display the stream and change the button to its on state. When turned off, the stream should disappear will little or no delay and the button will return to its off state.<br />
|-<br />
| Speaker at frequency || When turned on, the speaker will play a particular frequency and change the button to its on state. The value of this frequency can be chosen by entering the desired frequency in the text box directly to the right of the words "Speaker at frequency." When turned off the speaker will stop making sound and the button will return to its off state.<br />
|-<br />
| Song|| When play is pressed, the song Old McDonald plays on the speaker and the button changes to pause. If pause is pressed before the song is over, the song will stop playing and the button will change back to play. Otherwise, once the song is over and the page is refreshed the button will be in its play state.<br />
|-<br />
| Let out || This button is animated and when pressed it resets the time since last let out. It should be pressed whenever the pet is let out.<br />
|-<br />
| Feed || This button is animated and when pressed it resets the time since last meal. It should be pressed whenever the pet is fed.<br />
|-<br />
| Refresh || This button is animated and when pressed it refreshes the page. This refreshes the data section as well as the status of the song button. It has the same functionality as pressing refresh in the upper left of the web browser.<br />
|}<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that update the temperature displayed when the page is refreshed<br />
* Data for time since let out and time since fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<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 />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop camera stream using animated button from website<br />
* Adjusted size of displayed camera stream on the website<br />
* Added a speaker that can play a song as well as a specified frequency<br />
* Developed an interface to speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates temperature on website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<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>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539451ECE434 Project Pet Monitor2020-11-17T21:04:45Z<p>Rogerscj37: /* User Instructions */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a USB camera attached to the Bone. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Pet Monitor project git page: https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
<br />
<br />
Installing the project:<br />
<br />
1. First clone the git repository to your beagle bone and then enter said directory:<br />
bone$ git clone https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
bone$ cd petMonitor<br />
<br />
2. Next, add an authentication token for ngrok. To do this, first create a ngrok account by visiting https://ngrok.com/ and clicking sign up. After the account is created, a authentication token should be available. Open setup.sh and replace 'ENTER_YOUR_TOKEN_HERE' in line 8 with your authentication token.<br />
<br />
3. Finally, install all necessary libraries. For your convenience, a install.sh file was created. To execute it run:<br />
bone$ sudo ./install.sh<br />
<br />
<br />
After this the Pet Monitor is ready to go. See the User Instruction section on how to start and use the program.<br />
<br />
== User Instructions ==<br />
<br />
Once everything is installed, the program can be ran by executing the following commands:<br />
bone$ sudo ./setup.sh<br />
bone$ sudo ./httpMonitor.py<br />
<br />
<br />
Once the application is running, open yourLocalHost:434 in a web browser to view the monitor. The variable yourLocalHost should be the same IP address used to open cloud9. For me, this number is 192.168.7.2. So, to open the Pet Monitor I enter 192.168.7.2:434 into a web browser. If desired, the pet monitor can be made available on non-local hosts as well. This is done by first configuring ngrok (see Installation Instructions) and then in a '''new''' terminal entering:<br />
bone$ ./ngrok http 434<br />
Note with this option there will be two terminals connected to the Bone at once. One is running httpmoniter.py and the other is running ngrok. One the terminal running ngrok, a screen will appear with a public browser that can be used to view the pet monitor from anywhere. One issue with using this method is that each time ngrok is ran, a new url for the public browser is generated. This should not be an issue if the pet monitor is not restarted often. However, if this is an issue it is possible to use the same url each time the pet monitor is ran. It costs $60/year for the subscription to ngrok that allows this. For more information visit https://ngrok.com/pricing.<br />
<br />
<br />
On the website, there are many buttons that control the pet monitor. A table is included below describing their functionality:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Functionality<br />
|-<br />
| Camera || Toggles the camera. When turned on, the website will pause for a few seconds while the video is loading and then display the stream and change the button to its on state. When turned off, the stream should disappear will little or no delay and the button will return to its off state.<br />
|-<br />
| Speaker at frequency || When turned on, the speaker will play a particular frequency and change the button to its on state. The value of this frequency can be chosen by entering the desired frequency in the text box directly to the right of the words "Speaker at frequency." When turned off the speaker will stop making sound and the button will return to its off state.<br />
|-<br />
| Song|| When play is pressed, the song Old McDonald plays on the speaker and the button changes to pause. If pause is pressed before the song is over, the song will stop playing and the button will change back to play. Otherwise, once the song is over and the page is refreshed the button will be in its play state.<br />
|-<br />
| Let out || This button is animated and when pressed it resets the time since last let out. It should be pressed whenever the pet is let out.<br />
|-<br />
| Feed || This button is animated and when pressed it resets the time since last meal. It should be pressed whenever the pet is fed.<br />
|-<br />
| Refresh || This button is animated and when pressed it refreshes the page. This refreshes the data section as well as the status of the song button. It has the same functionality as pressing refresh in the upper left of the web browser.<br />
|}<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that read temperature when the page is refreshed<br />
* Data for time since let out and fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<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 />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop camera stream using animated button from website<br />
* Adjusted size of displayed camera stream on the website<br />
* Added a speaker that can play a song as well as a specified frequency<br />
* Developed an interface to speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates temperature on website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<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>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539446ECE434 Project Pet Monitor2020-11-17T20:59:49Z<p>Rogerscj37: /* User Instructions */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a USB camera attached to the Bone. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Pet Monitor project git page: https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
<br />
<br />
Installing the project:<br />
<br />
1. First clone the git repository to your beagle bone and then enter said directory:<br />
bone$ git clone https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
bone$ cd petMonitor<br />
<br />
2. Next, add an authentication token for ngrok. To do this, first create a ngrok account by visiting https://ngrok.com/ and clicking sign up. After the account is created, a authentication token should be available. Open setup.sh and replace 'ENTER_YOUR_TOKEN_HERE' in line 8 with your authentication token.<br />
<br />
3. Finally, install all necessary libraries. For your convenience, a install.sh file was created. To execute it run:<br />
bone$ sudo ./install.sh<br />
<br />
<br />
After this the Pet Monitor is ready to go. See the User Instruction section on how to start and use the program.<br />
<br />
== User Instructions ==<br />
<br />
Once everything is installed, the program can be ran by executing the following commands:<br />
bone$ sudo ./setup.sh<br />
bone$ sudo ./httpMonitor.py<br />
<br />
<br />
Once the application is running, open yourLocalHost:434 in a web browser to view the monitor. The variable yourLocalHost should be the same IP address used to open cloud9. For me, this number is 192.168.7.2. So, to open the Pet Monitor I enter 192.168.7.2:434 into a web browser. If desired, the pet monitor can be made available on non-local hosts as well. This is done by first configuring ngrok (see Installation Instructions) and then in a '''new''' terminal entering:<br />
bone$ ./ngrok http 434<br />
Note with this option there will be two terminals connected to the Bone at once. One is running httpmoniter.py and the other is running ngrok. One the terminal running ngrok, a screen will appear with a public browser that can be used to view the pet monitor from anywhere. One issue with using this method is that each time ngrok is ran, a new url for the public browser is generated. This should not be an issue if the pet monitor is not restarted often. However, if this is an issue it is possible to use the same url each time the pet monitor is ran. It costs $60/year for the subscription to ngrok that allows this. For more information visit https://ngrok.com/pricing.<br />
<br />
<br />
On the website, there are many buttons that control the pet monitor. A table is included below describing their functionality:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Functionality<br />
|-<br />
| Camera || Toggles the camera. When turned on, the website will pause for a few seconds while the video is loading and then display the stream and change the button to its on state. When turned off, the stream should disappear will little or no delay and the button will return to its off state.<br />
|-<br />
| Speaker at frequency || When turned on, the speaker will play a praticlar frequency. The value of this frequency can be chosen by entering the desired frequency in the text box directly to the right of the words "Speaker at frequency." When turned off the speaker will stop making sound.<br />
|-<br />
| Song|| When play is pressed, the button changes to pause and the song Old McDonald plays on the speaker. If pause is pressed before the song is over, the song will stop playing and the button will change back to play. Otherwise, once the song is over and the page is refreshed the play button is shown.<br />
|-<br />
| Let out || This button resets the time since last let out section. It should be pressed whenever the pet is let out.<br />
|-<br />
| Feed || This button resets the time since last meal. It should be pressed whenever the pet is fed.<br />
|-<br />
| Refresh || This button refreshes the page. This refreshes the data section as well as the status of the song button. It has the same functionality as pressing refresh in the upper left of the web browser.<br />
|}<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that read temperature when the page is refreshed<br />
* Data for time since let out and fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<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 />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop camera stream using animated button from website<br />
* Adjusted size of displayed camera stream on the website<br />
* Added a speaker that can play a song as well as a specified frequency<br />
* Developed an interface to speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates temperature on website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<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>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539441ECE434 Project Pet Monitor2020-11-17T20:54:55Z<p>Rogerscj37: /* User Instructions */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a USB camera attached to the Bone. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Pet Monitor project git page: https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
<br />
<br />
Installing the project:<br />
<br />
1. First clone the git repository to your beagle bone and then enter said directory:<br />
bone$ git clone https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
bone$ cd petMonitor<br />
<br />
2. Next, add an authentication token for ngrok. To do this, first create a ngrok account by visiting https://ngrok.com/ and clicking sign up. After the account is created, a authentication token should be available. Open setup.sh and replace 'ENTER_YOUR_TOKEN_HERE' in line 8 with your authentication token.<br />
<br />
3. Finally, install all necessary libraries. For your convenience, a install.sh file was created. To execute it run:<br />
bone$ sudo ./install.sh<br />
<br />
<br />
After this the Pet Monitor is ready to go. See the User Instruction section on how to start and use the program.<br />
<br />
== User Instructions ==<br />
<br />
Once everything is installed, the program can be ran by executing the following commands:<br />
bone$ sudo ./setup.sh<br />
bone$ sudo ./httpMonitor.py<br />
<br />
<br />
Once the application is running, open yourLocalHost:434 in a web browser to view the monitor. The variable yourLocalHost should be the same IP address used to open cloud9. For me, this number is 192.168.7.2. So, to open the Pet Monitor I enter 192.168.7.2:434 into a web browser. If desired, the pet monitor can be made available on non-local hosts as well. This is done by first configuring ngrok (see Installation Instructions) and then in a '''new''' terminal entering:<br />
bone$ ./ngrok http 434<br />
Note with this option there will be two terminals connected to the Bone at once. One is running httpmoniter.py and the other is running ngrok. One the terminal running ngrok, a screen will appear with a public browser that can be used to view the pet monitor from anywhere. One issue with using this method is that each time ngrok is ran, a new url for the public browser is generated. This should not be an issue if the pet monitor is not restarted often. However, if this is an issue it is possible to use the same url each time the pet monitor is ran. It costs $60/year for the subscription to ngrok that allows this. For more information visit https://ngrok.com/pricing.<br />
<br />
<br />
On the website, there are many buttons that control the pet monitor. A table is included below describing their functionality:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Functionality<br />
|-<br />
| Camera || Toggles the camera: When turned on, the website will pause for a few seconds while the video loading and then display the stream and toggle the button to its on state. When turned off, the stream should disappear will little or no delay and the button will return to the off state.<br />
|-<br />
| Speaker at frequency || When turned on, the speaker will play the frequency at the specified frequency which can be changed. When turned off the speaker will stop making sound.<br />
|-<br />
| Song|| When play is pressed, the button changes to pause and the song Old McDonald plays on the speaker. If pause is pressed before the song is over, the song will stop playing and the button will change back to play. Otherwise, once the song is over and the page is refreshed the play button is shown.<br />
|-<br />
| Let out || This button resets the time since last let out section. It should be pressed whenever the pet is let out.<br />
|-<br />
| Feed || This button resets the time since last meal. It should be pressed whenever the pet is fed.<br />
|-<br />
| Refresh || This button refreshes the page. This refreshes the data section as well as the status of the song button. It has the same functionality as pressing refresh in the upper left of the web browser.<br />
|}<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that read temperature when the page is refreshed<br />
* Data for time since let out and fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<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 />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop camera stream using animated button from website<br />
* Adjusted size of displayed camera stream on the website<br />
* Added a speaker that can play a song as well as a specified frequency<br />
* Developed an interface to speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates temperature on website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<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>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539436ECE434 Project Pet Monitor2020-11-17T20:53:38Z<p>Rogerscj37: /* User Instructions */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a USB camera attached to the Bone. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Pet Monitor project git page: https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
<br />
<br />
Installing the project:<br />
<br />
1. First clone the git repository to your beagle bone and then enter said directory:<br />
bone$ git clone https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
bone$ cd petMonitor<br />
<br />
2. Next, add an authentication token for ngrok. To do this, first create a ngrok account by visiting https://ngrok.com/ and clicking sign up. After the account is created, a authentication token should be available. Open setup.sh and replace 'ENTER_YOUR_TOKEN_HERE' in line 8 with your authentication token.<br />
<br />
3. Finally, install all necessary libraries. For your convenience, a install.sh file was created. To execute it run:<br />
bone$ sudo ./install.sh<br />
<br />
<br />
After this the Pet Monitor is ready to go. See the User Instruction section on how to start and use the program.<br />
<br />
== User Instructions ==<br />
<br />
Once everything is installed, the program can be ran by executing the following commands:<br />
bone$ sudo ./setup.sh<br />
bone$ sudo ./httpMonitor.py<br />
<br />
<br />
Once the application is running, open yourLocalHost:434 in a web browser to view the monitor. The variable yourLocalHost should be the same IP address used to open cloud9. For me, this number is 192.168.7.2. So, to open the Pet Monitor I enter 192.168.7.2:434 into a web browser. If desired, the pet monitor can be made available on non-local hosts as well. This is done by first configuring ngrok (see Installation Instructions) and then in a '''new''' terminal entering:<br />
bone$ ./ngrok http 434<br />
Note with this option there will be two terminals connected to the Bone at once. One is running httpmoniter.py and the other is running ngrok. One the terminal running ngrok, a screen will appear with a public browser that can be used to view the pet monitor from anywhere. One issue with using this method is that each time ngrok is ran, a new url for the public browser is generated. This should not be an issue if the pet monitor is not restarted often. However, if this is an issue it is possible to use the same url each time the pet monitor is ran. It costs $60/year for the subscription to ngrok that allows this. For more information visit https://ngrok.com/pricing.<br />
<br />
<br />
On the website, there are many buttons that control the pet monitor. A table is included below describing their functionality:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Functionality<br />
|-<br />
| Camera || Toggles the camera. When turned on, the website will pause for a few seconds while the video loading and then display the stream. When turned off, the stream should turn off will little or no delay.<br />
|-<br />
| Speaker at frequency || When turned on, the speaker will play the frequency at the specified frequency which can be changed. When turned off the speaker will stop making sound.<br />
|-<br />
| Song|| When play is pressed, the button changes to pause and the song Old McDonald plays on the speaker. If pause is pressed before the song is over, the song will stop playing and the button will change back to play. Otherwise, once the song is over and the page is refreshed the play button is shown.<br />
|-<br />
| Let out || This button resets the time since last let out section. It should be pressed whenever the pet is let out.<br />
|-<br />
| Feed || This button resets the time since last meal. It should be pressed whenever the pet is fed.<br />
|-<br />
| Refresh || This button refreshes the page. This refreshes the data section as well as the status of the song button. It has the same functionality as pressing refresh in the upper left of the web browser.<br />
|}<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that read temperature when the page is refreshed<br />
* Data for time since let out and fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<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 />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop camera stream using animated button from website<br />
* Adjusted size of displayed camera stream on the website<br />
* Added a speaker that can play a song as well as a specified frequency<br />
* Developed an interface to speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates temperature on website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<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>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539431ECE434 Project Pet Monitor2020-11-17T20:52:50Z<p>Rogerscj37: /* User Instructions */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a USB camera attached to the Bone. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Pet Monitor project git page: https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
<br />
<br />
Installing the project:<br />
<br />
1. First clone the git repository to your beagle bone and then enter said directory:<br />
bone$ git clone https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
bone$ cd petMonitor<br />
<br />
2. Next, add an authentication token for ngrok. To do this, first create a ngrok account by visiting https://ngrok.com/ and clicking sign up. After the account is created, a authentication token should be available. Open setup.sh and replace 'ENTER_YOUR_TOKEN_HERE' in line 8 with your authentication token.<br />
<br />
3. Finally, install all necessary libraries. For your convenience, a install.sh file was created. To execute it run:<br />
bone$ sudo ./install.sh<br />
<br />
<br />
After this the Pet Monitor is ready to go. See the User Instruction section on how to start and use the program.<br />
<br />
== User Instructions ==<br />
<br />
Once everything is installed, the program can be ran by executing the following commands:<br />
bone$ sudo ./setup.sh<br />
bone$ sudo ./httpMonitor.py<br />
<br />
<br />
Once the application is running, open yourLocalHost:434 in a web browser to view the monitor. The variable yourLocalHost should be the same IP address used to open cloud9. For me, this number is 192.168.7.2. So, to open the Pet Monitor I enter 192.168.7.2:434 into a web browser. If desired, the pet monitor can be made available on non-local hosts as well. This is done by first configuring ngrok (see Installation Instructions) and then in a '''new''' terminal entering:<br />
bone$ ./ngrok http 434<br />
Note with this option there will be two terminals connected to the Bone at once. One is running httpmoniter.py and the other is running ngrok. One the terminal running ngrok, a screen will appear with a public browser that can be used to view the pet monitor from anywhere. One issue with using this method is that each time ngrok is ran, a new url for the public browser is generated. This should not be an issue if the pet monitor is not restarted often. However, if this is an issue it is possible to use the same url each time the pet monitor is ran. It costs $60/year for the subscription to ngrok that allows this. For more information visit https://ngrok.com/pricing.<br />
<br />
<br />
On the website, there are many buttons that control the pet monitor. A table is included below describing their functionality:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Functionality<br />
|-<br />
| Camera || Toggles the camera. When turned on, the website will pause for a second while the video loads then display the stream. When turned off, the stream should turn off will little delay.<br />
|-<br />
| Speaker at frequency || When turned on, the speaker will play the frequency at the specified frequency which can be changed. When turned off the speaker will stop making sound.<br />
|-<br />
| Song|| When play is pressed, the button changes to pause and the song Old McDonald plays on the speaker. If pause is pressed before the song is over, the song will stop playing and the button will change back to play. Otherwise, once the song is over and the page is refreshed the play button is shown.<br />
|-<br />
| Let out || This button resets the time since last let out section. It should be pressed whenever the pet is let out.<br />
|-<br />
| Feed || This button resets the time since last meal. It should be pressed whenever the pet is fed.<br />
|-<br />
| Refresh || This button refreshes the page. This refreshes the data section as well as the status of the song button. It has the same functionality as pressing refresh in the upper left of the web browser.<br />
|}<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that read temperature when the page is refreshed<br />
* Data for time since let out and fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<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 />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop camera stream using animated button from website<br />
* Adjusted size of displayed camera stream on the website<br />
* Added a speaker that can play a song as well as a specified frequency<br />
* Developed an interface to speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates temperature on website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<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>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539406ECE434 Project Pet Monitor2020-11-17T20:46:11Z<p>Rogerscj37: /* User Instructions */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a USB camera attached to the Bone. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Pet Monitor project git page: https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
<br />
<br />
Installing the project:<br />
<br />
1. First clone the git repository to your beagle bone and then enter said directory:<br />
bone$ git clone https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
bone$ cd petMonitor<br />
<br />
2. Next, add an authentication token for ngrok. To do this, first create a ngrok account by visiting https://ngrok.com/ and clicking sign up. After the account is created, a authentication token should be available. Open setup.sh and replace 'ENTER_YOUR_TOKEN_HERE' in line 8 with your authentication token.<br />
<br />
3. Finally, install all necessary libraries. For your convenience, a install.sh file was created. To execute it run:<br />
bone$ sudo ./install.sh<br />
<br />
<br />
After this the Pet Monitor is ready to go. See the User Instruction section on how to start and use the program.<br />
<br />
== User Instructions ==<br />
<br />
Once everything is installed, the program can be ran by executing the following commands:<br />
bone$ sudo ./setup.sh<br />
bone$ sudo ./httpMonitor.py<br />
<br />
<br />
Once the application is running, open yourLocalHost:434 in a web browser to view the monitor. The variable yourLocalHost should be the same IP address used to open cloud9. This number is 192.168.7.2 for me. So, to open the Pet Moniter I enter 192.168.7.2:434 into a web browser. If desired, the pet monitor can be made available on non-local hosts as well. This is done by first configuring ngrok (see Instillation Instructions) and then entering:<br />
bone$ ./ngrok http 434<br />
After this, a screen will show up in the terminal with a public browser that can be used to view the pet monitor from anywhere. One issue with this is that each time ngrok is ran, a new url for the public broswer is generated. This should not be an issue if the pet monitor is not restarted often. However, if this is an issue it is possible to use the same url. It costs $60/year for the subscription to ngrok. For more information visit https://ngrok.com/pricing.<br />
<br />
<br />
On the website, there are many buttons that control the pet monitor. A table is included below describing their functionality:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Functionality<br />
|-<br />
| Camera || Toggles the camera. When turned on, the website will pause for a second while the video loads then display the stream. When turned off, the stream should turn off will little delay.<br />
|-<br />
| Speaker at frequency || When turned on, the speaker will play the frequency at the specified frequency which can be changed. When turned off the speaker will stop making sound.<br />
|-<br />
| Song|| When play is pressed, the button changes to pause and the song Old McDonald plays on the speaker. If pause is pressed before the song is over, the song will stop playing and the button will change back to play. Otherwise, once the song is over and the page is refreshed the play button is shown.<br />
|-<br />
| Let out || This button resets the time since last let out section. It should be pressed whenever the pet is let out.<br />
|-<br />
| Feed || This button resets the time since last meal. It should be pressed whenever the pet is fed.<br />
|-<br />
| Refresh || This button refreshes the page. This refreshes the data section as well as the status of the song button. It has the same functionality as pressing refresh in the upper left of the web browser.<br />
|}<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that read temperature when the page is refreshed<br />
* Data for time since let out and fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<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 />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop camera stream using animated button from website<br />
* Adjusted size of displayed camera stream on the website<br />
* Added a speaker that can play a song as well as a specified frequency<br />
* Developed an interface to speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates temperature on website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<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>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539401ECE434 Project Pet Monitor2020-11-17T20:45:07Z<p>Rogerscj37: /* Installation Instructions */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a USB camera attached to the Bone. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Pet Monitor project git page: https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
<br />
<br />
Installing the project:<br />
<br />
1. First clone the git repository to your beagle bone and then enter said directory:<br />
bone$ git clone https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
bone$ cd petMonitor<br />
<br />
2. Next, add an authentication token for ngrok. To do this, first create a ngrok account by visiting https://ngrok.com/ and clicking sign up. After the account is created, a authentication token should be available. Open setup.sh and replace 'ENTER_YOUR_TOKEN_HERE' in line 8 with your authentication token.<br />
<br />
3. Finally, install all necessary libraries. For your convenience, a install.sh file was created. To execute it run:<br />
bone$ sudo ./install.sh<br />
<br />
<br />
After this the Pet Monitor is ready to go. See the User Instruction section on how to start and use the program.<br />
<br />
== User Instructions ==<br />
<br />
Once everything is installed, the program can be ran by executing the following commands:<br />
bone$ sudo ./setup.sh<br />
bone$ sudo ./httpMonitor.py<br />
<br />
<br />
Once the application is running, open yourLocalHost:434 in a web browser to view the monitor. The variable yourLocalHost should be the same IP address used to open cloud9. This number is 192.168.7.2 for me. So, to open the Pet Moniter I search 192.168.7.2:434 in my web browser. If desired, the pet monitor can be made available on non-local hosts as well. This is done by first configuring ngrok (see Instillation Instructions) and then entering:<br />
bone$ ./ngrok http 434<br />
After this, a screen will show up in the terminal with a public browser that can be used to view the pet monitor from anywhere. One issue with this is that each time ngrok is ran, a new url for the public broswer is generated. This should not be an issue if the pet monitor is not restarted often. However, if this is an issue it is possible to use the same url. It costs $60/year for the subscription to ngrok. For more information visit https://ngrok.com/pricing.<br />
<br />
<br />
On the website, there are many buttons that control the pet monitor. A table is included below describing their functionality:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Functionality<br />
|-<br />
| Camera || Toggles the camera. When turned on, the website will pause for a second while the video loads then display the stream. When turned off, the stream should turn off will little delay.<br />
|-<br />
| Speaker at frequency || When turned on, the speaker will play the frequency at the specified frequency which can be changed. When turned off the speaker will stop making sound.<br />
|-<br />
| Song|| When play is pressed, the button changes to pause and the song Old McDonald plays on the speaker. If pause is pressed before the song is over, the song will stop playing and the button will change back to play. Otherwise, once the song is over and the page is refreshed the play button is shown.<br />
|-<br />
| Let out || This button resets the time since last let out section. It should be pressed whenever the pet is let out.<br />
|-<br />
| Feed || This button resets the time since last meal. It should be pressed whenever the pet is fed.<br />
|-<br />
| Refresh || This button refreshes the page. This refreshes the data section as well as the status of the song button. It has the same functionality as pressing refresh in the upper left of the web browser.<br />
|}<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that read temperature when the page is refreshed<br />
* Data for time since let out and fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<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 />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop camera stream using animated button from website<br />
* Adjusted size of displayed camera stream on the website<br />
* Added a speaker that can play a song as well as a specified frequency<br />
* Developed an interface to speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates temperature on website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<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>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539391ECE434 Project Pet Monitor2020-11-17T20:44:18Z<p>Rogerscj37: /* Installation Instructions */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a USB camera attached to the Bone. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Pet Monitor project git page: https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
<br />
<br />
Installing the project:<br />
<br />
1. First clone the git repository to your beagle bone and then enter said directory:<br />
bone$ git clone https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
bone$ cd petMonitor<br />
<br />
2. Next, add an authentication token for ngrok. To do this, first create a ngrok account by visiting https://ngrok.com/ and clicking sign up. After the account is created, a authentication token should be available. Open setup.sh and replace 'ENTER_YOUR_TOKEN_HERE' in line 8 with your authentication token.<br />
<br />
3. Finally, install all necessary libraries. For your convenience, a install.sh file was created:<br />
bone$ sudo ./install.sh<br />
<br />
<br />
After this the Pet Monitor is ready to be ran. See the User Instruction section on how to start and use the program.<br />
<br />
== User Instructions ==<br />
<br />
Once everything is installed, the program can be ran by executing the following commands:<br />
bone$ sudo ./setup.sh<br />
bone$ sudo ./httpMonitor.py<br />
<br />
<br />
Once the application is running, open yourLocalHost:434 in a web browser to view the monitor. The variable yourLocalHost should be the same IP address used to open cloud9. This number is 192.168.7.2 for me. So, to open the Pet Moniter I search 192.168.7.2:434 in my web browser. If desired, the pet monitor can be made available on non-local hosts as well. This is done by first configuring ngrok (see Instillation Instructions) and then entering:<br />
bone$ ./ngrok http 434<br />
After this, a screen will show up in the terminal with a public browser that can be used to view the pet monitor from anywhere. One issue with this is that each time ngrok is ran, a new url for the public broswer is generated. This should not be an issue if the pet monitor is not restarted often. However, if this is an issue it is possible to use the same url. It costs $60/year for the subscription to ngrok. For more information visit https://ngrok.com/pricing.<br />
<br />
<br />
On the website, there are many buttons that control the pet monitor. A table is included below describing their functionality:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Functionality<br />
|-<br />
| Camera || Toggles the camera. When turned on, the website will pause for a second while the video loads then display the stream. When turned off, the stream should turn off will little delay.<br />
|-<br />
| Speaker at frequency || When turned on, the speaker will play the frequency at the specified frequency which can be changed. When turned off the speaker will stop making sound.<br />
|-<br />
| Song|| When play is pressed, the button changes to pause and the song Old McDonald plays on the speaker. If pause is pressed before the song is over, the song will stop playing and the button will change back to play. Otherwise, once the song is over and the page is refreshed the play button is shown.<br />
|-<br />
| Let out || This button resets the time since last let out section. It should be pressed whenever the pet is let out.<br />
|-<br />
| Feed || This button resets the time since last meal. It should be pressed whenever the pet is fed.<br />
|-<br />
| Refresh || This button refreshes the page. This refreshes the data section as well as the status of the song button. It has the same functionality as pressing refresh in the upper left of the web browser.<br />
|}<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that read temperature when the page is refreshed<br />
* Data for time since let out and fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<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 />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop camera stream using animated button from website<br />
* Adjusted size of displayed camera stream on the website<br />
* Added a speaker that can play a song as well as a specified frequency<br />
* Developed an interface to speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates temperature on website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<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>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539386ECE434 Project Pet Monitor2020-11-17T20:43:41Z<p>Rogerscj37: /* Installation Instructions */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a USB camera attached to the Bone. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Pet Monitor project git page: https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
<br />
<br />
Installing the project:<br />
<br />
1. First clone the git repository to your beagle bone and then enter said directory:<br />
bone$ git clone https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
bone$ cd petMonitor<br />
<br />
2. Add authentication token for ngrok. To do this, first create a ngrok account by visiting https://ngrok.com/ and clicking sign up. After the account is created, a authentication token should be available. Open setup.sh and replace 'ENTER_YOUR_TOKEN_HERE' in line 8 with your authentication token.<br />
<br />
3. Next, install all necessary libraries. For your convenience, a install.sh file was created:<br />
bone$ sudo ./install.sh<br />
<br />
<br />
After this the Pet Monitor is ready to be ran. See the User Instruction section on how to start and use the program.<br />
<br />
== User Instructions ==<br />
<br />
Once everything is installed, the program can be ran by executing the following commands:<br />
bone$ sudo ./setup.sh<br />
bone$ sudo ./httpMonitor.py<br />
<br />
<br />
Once the application is running, open yourLocalHost:434 in a web browser to view the monitor. The variable yourLocalHost should be the same IP address used to open cloud9. This number is 192.168.7.2 for me. So, to open the Pet Moniter I search 192.168.7.2:434 in my web browser. If desired, the pet monitor can be made available on non-local hosts as well. This is done by first configuring ngrok (see Instillation Instructions) and then entering:<br />
bone$ ./ngrok http 434<br />
After this, a screen will show up in the terminal with a public browser that can be used to view the pet monitor from anywhere. One issue with this is that each time ngrok is ran, a new url for the public broswer is generated. This should not be an issue if the pet monitor is not restarted often. However, if this is an issue it is possible to use the same url. It costs $60/year for the subscription to ngrok. For more information visit https://ngrok.com/pricing.<br />
<br />
<br />
On the website, there are many buttons that control the pet monitor. A table is included below describing their functionality:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Functionality<br />
|-<br />
| Camera || Toggles the camera. When turned on, the website will pause for a second while the video loads then display the stream. When turned off, the stream should turn off will little delay.<br />
|-<br />
| Speaker at frequency || When turned on, the speaker will play the frequency at the specified frequency which can be changed. When turned off the speaker will stop making sound.<br />
|-<br />
| Song|| When play is pressed, the button changes to pause and the song Old McDonald plays on the speaker. If pause is pressed before the song is over, the song will stop playing and the button will change back to play. Otherwise, once the song is over and the page is refreshed the play button is shown.<br />
|-<br />
| Let out || This button resets the time since last let out section. It should be pressed whenever the pet is let out.<br />
|-<br />
| Feed || This button resets the time since last meal. It should be pressed whenever the pet is fed.<br />
|-<br />
| Refresh || This button refreshes the page. This refreshes the data section as well as the status of the song button. It has the same functionality as pressing refresh in the upper left of the web browser.<br />
|}<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that read temperature when the page is refreshed<br />
* Data for time since let out and fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<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 />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop camera stream using animated button from website<br />
* Adjusted size of displayed camera stream on the website<br />
* Added a speaker that can play a song as well as a specified frequency<br />
* Developed an interface to speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates temperature on website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<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>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539376ECE434 Project Pet Monitor2020-11-17T20:42:15Z<p>Rogerscj37: /* Executive Summary */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a USB camera attached to the Bone. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Pet Monitor project git page: https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
<br />
<br />
Installing the project:<br />
<br />
1. Fist clone the git repository to your beagle bone and then enter this dirctory:<br />
bone$ git clone https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
bone$ cd petMonitor<br />
<br />
2. Add authentication token for ngrok. To do this, first create a ngrok account by visiting https://ngrok.com/ and clicking sign up. After the account is created, a authentication token should be available. Open setup.sh and replace 'ENTER_YOUR_TOKEN_HERE' in line 8 with your authentication token.<br />
<br />
3. Next, install all necessary libraries. For your convenience, a install.sh file was created:<br />
bone$ sudo ./install.sh<br />
<br />
<br />
After this the Pet Monitor is ready to be ran. See the User Instruction section on how to start and use the program.<br />
<br />
== User Instructions ==<br />
<br />
Once everything is installed, the program can be ran by executing the following commands:<br />
bone$ sudo ./setup.sh<br />
bone$ sudo ./httpMonitor.py<br />
<br />
<br />
Once the application is running, open yourLocalHost:434 in a web browser to view the monitor. The variable yourLocalHost should be the same IP address used to open cloud9. This number is 192.168.7.2 for me. So, to open the Pet Moniter I search 192.168.7.2:434 in my web browser. If desired, the pet monitor can be made available on non-local hosts as well. This is done by first configuring ngrok (see Instillation Instructions) and then entering:<br />
bone$ ./ngrok http 434<br />
After this, a screen will show up in the terminal with a public browser that can be used to view the pet monitor from anywhere. One issue with this is that each time ngrok is ran, a new url for the public broswer is generated. This should not be an issue if the pet monitor is not restarted often. However, if this is an issue it is possible to use the same url. It costs $60/year for the subscription to ngrok. For more information visit https://ngrok.com/pricing.<br />
<br />
<br />
On the website, there are many buttons that control the pet monitor. A table is included below describing their functionality:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Functionality<br />
|-<br />
| Camera || Toggles the camera. When turned on, the website will pause for a second while the video loads then display the stream. When turned off, the stream should turn off will little delay.<br />
|-<br />
| Speaker at frequency || When turned on, the speaker will play the frequency at the specified frequency which can be changed. When turned off the speaker will stop making sound.<br />
|-<br />
| Song|| When play is pressed, the button changes to pause and the song Old McDonald plays on the speaker. If pause is pressed before the song is over, the song will stop playing and the button will change back to play. Otherwise, once the song is over and the page is refreshed the play button is shown.<br />
|-<br />
| Let out || This button resets the time since last let out section. It should be pressed whenever the pet is let out.<br />
|-<br />
| Feed || This button resets the time since last meal. It should be pressed whenever the pet is fed.<br />
|-<br />
| Refresh || This button refreshes the page. This refreshes the data section as well as the status of the song button. It has the same functionality as pressing refresh in the upper left of the web browser.<br />
|}<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that read temperature when the page is refreshed<br />
* Data for time since let out and fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<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 />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop camera stream using animated button from website<br />
* Adjusted size of displayed camera stream on the website<br />
* Added a speaker that can play a song as well as a specified frequency<br />
* Developed an interface to speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates temperature on website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<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>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539371ECE434 Project Pet Monitor2020-11-17T20:40:22Z<p>Rogerscj37: /* Installation Instructions */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a camera. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Pet Monitor project git page: https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
<br />
<br />
Installing the project:<br />
<br />
1. Fist clone the git repository to your beagle bone and then enter this dirctory:<br />
bone$ git clone https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
bone$ cd petMonitor<br />
<br />
2. Add authentication token for ngrok. To do this, first create a ngrok account by visiting https://ngrok.com/ and clicking sign up. After the account is created, a authentication token should be available. Open setup.sh and replace 'ENTER_YOUR_TOKEN_HERE' in line 8 with your authentication token.<br />
<br />
3. Next, install all necessary libraries. For your convenience, a install.sh file was created:<br />
bone$ sudo ./install.sh<br />
<br />
<br />
After this the Pet Monitor is ready to be ran. See the User Instruction section on how to start and use the program.<br />
<br />
== User Instructions ==<br />
<br />
Once everything is installed, the program can be ran by executing the following commands:<br />
bone$ sudo ./setup.sh<br />
bone$ sudo ./httpMonitor.py<br />
<br />
<br />
Once the application is running, open yourLocalHost:434 in a web browser to view the monitor. The variable yourLocalHost should be the same IP address used to open cloud9. This number is 192.168.7.2 for me. So, to open the Pet Moniter I search 192.168.7.2:434 in my web browser. If desired, the pet monitor can be made available on non-local hosts as well. This is done by first configuring ngrok (see Instillation Instructions) and then entering:<br />
bone$ ./ngrok http 434<br />
After this, a screen will show up in the terminal with a public browser that can be used to view the pet monitor from anywhere. One issue with this is that each time ngrok is ran, a new url for the public broswer is generated. This should not be an issue if the pet monitor is not restarted often. However, if this is an issue it is possible to use the same url. It costs $60/year for the subscription to ngrok. For more information visit https://ngrok.com/pricing.<br />
<br />
<br />
On the website, there are many buttons that control the pet monitor. A table is included below describing their functionality:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Functionality<br />
|-<br />
| Camera || Toggles the camera. When turned on, the website will pause for a second while the video loads then display the stream. When turned off, the stream should turn off will little delay.<br />
|-<br />
| Speaker at frequency || When turned on, the speaker will play the frequency at the specified frequency which can be changed. When turned off the speaker will stop making sound.<br />
|-<br />
| Song|| When play is pressed, the button changes to pause and the song Old McDonald plays on the speaker. If pause is pressed before the song is over, the song will stop playing and the button will change back to play. Otherwise, once the song is over and the page is refreshed the play button is shown.<br />
|-<br />
| Let out || This button resets the time since last let out section. It should be pressed whenever the pet is let out.<br />
|-<br />
| Feed || This button resets the time since last meal. It should be pressed whenever the pet is fed.<br />
|-<br />
| Refresh || This button refreshes the page. This refreshes the data section as well as the status of the song button. It has the same functionality as pressing refresh in the upper left of the web browser.<br />
|}<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that read temperature when the page is refreshed<br />
* Data for time since let out and fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<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 />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop camera stream using animated button from website<br />
* Adjusted size of displayed camera stream on the website<br />
* Added a speaker that can play a song as well as a specified frequency<br />
* Developed an interface to speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates temperature on website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<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>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539366ECE434 Project Pet Monitor2020-11-17T20:39:37Z<p>Rogerscj37: /* Installation Instructions */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a camera. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Pet Monitor project git page: https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
<br />
Installing the project:<br />
1. Fist clone the git repository to your beagle bone and then enter this dirctory:<br />
bone$ git clone https://github.com/rogers3/ECE434/tree/master/petMonitor<br />
bone$ cd petMonitor<br />
2. Add authentication token for ngrok. To do this, first create a ngrok account by visiting https://ngrok.com/ and clicking sign up. After the account is created, a authentication token should be available. Open setup.sh and replace 'ENTER_YOUR_TOKEN_HERE' in line 8 with your authentication token.<br />
3. Next, install all necessary libraries. For your convenience, a install.sh file was created:<br />
bone$ sudo ./install.sh<br />
<br />
After this the Pet Monitor is ready to be ran. See the User Instruction section on how to start and use the program.<br />
<br />
== User Instructions ==<br />
<br />
Once everything is installed, the program can be ran by executing the following commands:<br />
bone$ sudo ./setup.sh<br />
bone$ sudo ./httpMonitor.py<br />
<br />
<br />
Once the application is running, open yourLocalHost:434 in a web browser to view the monitor. The variable yourLocalHost should be the same IP address used to open cloud9. This number is 192.168.7.2 for me. So, to open the Pet Moniter I search 192.168.7.2:434 in my web browser. If desired, the pet monitor can be made available on non-local hosts as well. This is done by first configuring ngrok (see Instillation Instructions) and then entering:<br />
bone$ ./ngrok http 434<br />
After this, a screen will show up in the terminal with a public browser that can be used to view the pet monitor from anywhere. One issue with this is that each time ngrok is ran, a new url for the public broswer is generated. This should not be an issue if the pet monitor is not restarted often. However, if this is an issue it is possible to use the same url. It costs $60/year for the subscription to ngrok. For more information visit https://ngrok.com/pricing.<br />
<br />
<br />
On the website, there are many buttons that control the pet monitor. A table is included below describing their functionality:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Functionality<br />
|-<br />
| Camera || Toggles the camera. When turned on, the website will pause for a second while the video loads then display the stream. When turned off, the stream should turn off will little delay.<br />
|-<br />
| Speaker at frequency || When turned on, the speaker will play the frequency at the specified frequency which can be changed. When turned off the speaker will stop making sound.<br />
|-<br />
| Song|| When play is pressed, the button changes to pause and the song Old McDonald plays on the speaker. If pause is pressed before the song is over, the song will stop playing and the button will change back to play. Otherwise, once the song is over and the page is refreshed the play button is shown.<br />
|-<br />
| Let out || This button resets the time since last let out section. It should be pressed whenever the pet is let out.<br />
|-<br />
| Feed || This button resets the time since last meal. It should be pressed whenever the pet is fed.<br />
|-<br />
| Refresh || This button refreshes the page. This refreshes the data section as well as the status of the song button. It has the same functionality as pressing refresh in the upper left of the web browser.<br />
|}<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that read temperature when the page is refreshed<br />
* Data for time since let out and fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<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 />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop camera stream using animated button from website<br />
* Adjusted size of displayed camera stream on the website<br />
* Added a speaker that can play a song as well as a specified frequency<br />
* Developed an interface to speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates temperature on website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<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>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539351ECE434 Project Pet Monitor2020-11-17T20:25:27Z<p>Rogerscj37: /* User Instructions */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a camera. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Give step by step instructions on how to install your project. <br />
<br />
* Include your [https://github.com/ github] path as a link like this to the read-only git site: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Be sure your README.md is includes an up-to-date and clear description of your project so that someone who comes across you git repository can quickly learn what you did and how they can reproduce it.<br />
* Include a Makefile for your code if using C.<br />
* Include any additional packages installed via '''apt'''. Include '''install.sh''' and '''setup.sh''' files.<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 />
Once everything is installed, the program can be ran by executing the following commands:<br />
bone$ sudo ./setup.sh<br />
bone$ sudo ./httpMonitor.py<br />
<br />
<br />
Once the application is running, open yourLocalHost:434 in a web browser to view the monitor. The variable yourLocalHost should be the same IP address used to open cloud9. This number is 192.168.7.2 for me. So, to open the Pet Moniter I search 192.168.7.2:434 in my web browser. If desired, the pet monitor can be made available on non-local hosts as well. This is done by first configuring ngrok (see Instillation Instructions) and then entering:<br />
bone$ ./ngrok http 434<br />
After this, a screen will show up in the terminal with a public browser that can be used to view the pet monitor from anywhere. One issue with this is that each time ngrok is ran, a new url for the public broswer is generated. This should not be an issue if the pet monitor is not restarted often. However, if this is an issue it is possible to use the same url. It costs $60/year for the subscription to ngrok. For more information visit https://ngrok.com/pricing.<br />
<br />
<br />
On the website, there are many buttons that control the pet monitor. A table is included below describing their functionality:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Functionality<br />
|-<br />
| Camera || Toggles the camera. When turned on, the website will pause for a second while the video loads then display the stream. When turned off, the stream should turn off will little delay.<br />
|-<br />
| Speaker at frequency || When turned on, the speaker will play the frequency at the specified frequency which can be changed. When turned off the speaker will stop making sound.<br />
|-<br />
| Song|| When play is pressed, the button changes to pause and the song Old McDonald plays on the speaker. If pause is pressed before the song is over, the song will stop playing and the button will change back to play. Otherwise, once the song is over and the page is refreshed the play button is shown.<br />
|-<br />
| Let out || This button resets the time since last let out section. It should be pressed whenever the pet is let out.<br />
|-<br />
| Feed || This button resets the time since last meal. It should be pressed whenever the pet is fed.<br />
|-<br />
| Refresh || This button refreshes the page. This refreshes the data section as well as the status of the song button. It has the same functionality as pressing refresh in the upper left of the web browser.<br />
|}<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that read temperature when the page is refreshed<br />
* Data for time since let out and fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<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 />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop camera stream using animated button from website<br />
* Adjusted size of displayed camera stream on the website<br />
* Added a speaker that can play a song as well as a specified frequency<br />
* Developed an interface to speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates temperature on website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<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>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539346ECE434 Project Pet Monitor2020-11-17T20:20:01Z<p>Rogerscj37: /* User Instructions */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a camera. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Give step by step instructions on how to install your project. <br />
<br />
* Include your [https://github.com/ github] path as a link like this to the read-only git site: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Be sure your README.md is includes an up-to-date and clear description of your project so that someone who comes across you git repository can quickly learn what you did and how they can reproduce it.<br />
* Include a Makefile for your code if using C.<br />
* Include any additional packages installed via '''apt'''. Include '''install.sh''' and '''setup.sh''' files.<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 />
Once everything is installed, the program can be ran by executing the following commands:<br />
bone$ sudo ./setup.sh<br />
bone$ sudo ./httpMonitor.py<br />
<br />
Once the application is running, open yourLocalHost:434 in a web browser to view the monitor. The variable yourLocalHost should be the same IP address used to open cloud9. This number is 192.168.7.2 for me. So, to open the Pet Moniter I search 192.168.7.2:434 in my web browser. <br />
On the website, there are many buttons that control the pet monitor. A table is included below describing their functionality:<br />
<br />
{| class="wikitable"<br />
|-<br />
! Button !! Functionality<br />
|-<br />
| Camera || Toggles the camera. When turned on, the website will pause for a second while the video loads then display the stream. When turned off, the stream should turn off will little delay.<br />
|-<br />
| Speaker at frequency || When turned on, the speaker will play the frequency at the specified frequency which can be changed. When turned off the speaker will stop making sound.<br />
|-<br />
| Song|| When play is pressed, the button changes to pause and the song Old McDonald plays on the speaker. If pause is pressed before the song is over, the song will stop playing and the button will change back to play. Otherwise, once the song is over and the page is refreshed the play button is shown.<br />
|-<br />
| Let out || This button resets the time since last let out section. It should be pressed whenever the pet is let out.<br />
|-<br />
| Feed || This button resets the time since last meal. It should be pressed whenever the pet is fed.<br />
|-<br />
| Refresh || This button refreshes the page. This refreshes the data section as well as the status of the song button. It has the same functionality as pressing refresh in the upper left of the web browser.<br />
|}<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that read temperature when the page is refreshed<br />
* Data for time since let out and fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<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 />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop camera stream using animated button from website<br />
* Adjusted size of displayed camera stream on the website<br />
* Added a speaker that can play a song as well as a specified frequency<br />
* Developed an interface to speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates temperature on website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<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>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539341ECE434 Project Pet Monitor2020-11-17T20:13:35Z<p>Rogerscj37: /* User Instructions */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a camera. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Give step by step instructions on how to install your project. <br />
<br />
* Include your [https://github.com/ github] path as a link like this to the read-only git site: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Be sure your README.md is includes an up-to-date and clear description of your project so that someone who comes across you git repository can quickly learn what you did and how they can reproduce it.<br />
* Include a Makefile for your code if using C.<br />
* Include any additional packages installed via '''apt'''. Include '''install.sh''' and '''setup.sh''' files.<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 />
Once everything is installed, the program can be ran by executing the following commands:<br />
bone$ sudo ./setup.sh<br />
bone$ sudo ./httpMonitor.py<br />
<br />
Once the application is running, open yourLocalHost:434 in a web browser to view the monitor. The variable yourLocalHost should be the same IP address used to open cloud9. This number is 192.168.7.2 for me. So, to open the Pet Moniter I search 192.168.7.2:434 in my web browser. <br />
On the website, there are many buttons that control the pet monitor. A table is included below describing their functionality<br />
| Button | Functionality |<br />
| Camera | Toggles the camera. When turned on, the website will pause for a second while the video loads then display the stream. When turned off, the stream should turn off will little delay|<br />
| Speaker at frequency | When turned on, the speaker will play the frequency at the specified frequency which can be changed. When turned off the speaker will stop making sound |<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that read temperature when the page is refreshed<br />
* Data for time since let out and fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<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 />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop camera stream using animated button from website<br />
* Adjusted size of displayed camera stream on the website<br />
* Added a speaker that can play a song as well as a specified frequency<br />
* Developed an interface to speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates temperature on website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<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>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539326ECE434 Project Pet Monitor2020-11-17T18:43:25Z<p>Rogerscj37: /* User Instructions */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a camera. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Give step by step instructions on how to install your project. <br />
<br />
* Include your [https://github.com/ github] path as a link like this to the read-only git site: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Be sure your README.md is includes an up-to-date and clear description of your project so that someone who comes across you git repository can quickly learn what you did and how they can reproduce it.<br />
* Include a Makefile for your code if using C.<br />
* Include any additional packages installed via '''apt'''. Include '''install.sh''' and '''setup.sh''' files.<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 />
Once everything is installed, the program can be ran by executing the following command:<br />
bone$ sudo ./setup.sh<br />
bone$ sudo ./httpMonitor.py<br />
<br />
Once the application is running, open yourLocalHost:434 in a web browser to view the monitor. The variable yourLocalHost should be the same IP address used to open cloud9. This number is 192.168.7.2 for me. So, to open the Pet Moniter I search 192.168.7.2:434 in my web browser.<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that read temperature when the page is refreshed<br />
* Data for time since let out and fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<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 />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop camera stream using animated button from website<br />
* Adjusted size of displayed camera stream on the website<br />
* Added a speaker that can play a song as well as a specified frequency<br />
* Developed an interface to speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates temperature on website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<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>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539321ECE434 Project Pet Monitor2020-11-17T18:35:53Z<p>Rogerscj37: /* Work Breakdown */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a camera. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Give step by step instructions on how to install your project. <br />
<br />
* Include your [https://github.com/ github] path as a link like this to the read-only git site: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Be sure your README.md is includes an up-to-date and clear description of your project so that someone who comes across you git repository can quickly learn what you did and how they can reproduce it.<br />
* Include a Makefile for your code if using C.<br />
* Include any additional packages installed via '''apt'''. Include '''install.sh''' and '''setup.sh''' files.<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 />
Once everything is installed, how do you use the program? Give details here, so if you have a long user manual, link to it here.<br />
<br />
Consider making it autostart for full credit.<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that read temperature when the page is refreshed<br />
* Data for time since let out and fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<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 />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop camera stream using animated button from website<br />
* Adjusted size of displayed camera stream on the website<br />
* Added a speaker that can play a song as well as a specified frequency<br />
* Developed an interface to speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates temperature on website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<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>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539316ECE434 Project Pet Monitor2020-11-17T18:35:38Z<p>Rogerscj37: /* Work Breakdown */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a camera. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Give step by step instructions on how to install your project. <br />
<br />
* Include your [https://github.com/ github] path as a link like this to the read-only git site: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Be sure your README.md is includes an up-to-date and clear description of your project so that someone who comes across you git repository can quickly learn what you did and how they can reproduce it.<br />
* Include a Makefile for your code if using C.<br />
* Include any additional packages installed via '''apt'''. Include '''install.sh''' and '''setup.sh''' files.<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 />
Once everything is installed, how do you use the program? Give details here, so if you have a long user manual, link to it here.<br />
<br />
Consider making it autostart for full credit.<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that read temperature when the page is refreshed<br />
* Data for time since let out and fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<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 />
Project Timeline:<br />
<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop camera stream using animated button from website<br />
* Adjusted size of displayed camera stream on the website<br />
* Added a speaker that can play a song as well as a specified frequency<br />
* Developed an interface to speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates temperature on website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<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>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539311ECE434 Project Pet Monitor2020-11-17T18:35:20Z<p>Rogerscj37: /* Work Breakdown */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a camera. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Give step by step instructions on how to install your project. <br />
<br />
* Include your [https://github.com/ github] path as a link like this to the read-only git site: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Be sure your README.md is includes an up-to-date and clear description of your project so that someone who comes across you git repository can quickly learn what you did and how they can reproduce it.<br />
* Include a Makefile for your code if using C.<br />
* Include any additional packages installed via '''apt'''. Include '''install.sh''' and '''setup.sh''' files.<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 />
Once everything is installed, how do you use the program? Give details here, so if you have a long user manual, link to it here.<br />
<br />
Consider making it autostart for full credit.<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that read temperature when the page is refreshed<br />
* Data for time since let out and fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<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 />
Project Timeline:<br />
[[File:PetMonitorProjectTimeline.JPG|900px|Pet Monitor project timeline]]<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop camera stream using animated button from website<br />
* Adjusted size of displayed camera stream on the website<br />
* Added a speaker that can play a song as well as a specified frequency<br />
* Developed an interface to speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates temperature on website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<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>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539306ECE434 Project Pet Monitor2020-11-17T18:35:09Z<p>Rogerscj37: /* Work Breakdown */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a camera. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Give step by step instructions on how to install your project. <br />
<br />
* Include your [https://github.com/ github] path as a link like this to the read-only git site: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Be sure your README.md is includes an up-to-date and clear description of your project so that someone who comes across you git repository can quickly learn what you did and how they can reproduce it.<br />
* Include a Makefile for your code if using C.<br />
* Include any additional packages installed via '''apt'''. Include '''install.sh''' and '''setup.sh''' files.<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 />
Once everything is installed, how do you use the program? Give details here, so if you have a long user manual, link to it here.<br />
<br />
Consider making it autostart for full credit.<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that read temperature when the page is refreshed<br />
* Data for time since let out and fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<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 />
Project Timeline:<br />
[[File:PetMonitorProjectTimeline.JPG|200px|Pet Monitor project timeline]]<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop camera stream using animated button from website<br />
* Adjusted size of displayed camera stream on the website<br />
* Added a speaker that can play a song as well as a specified frequency<br />
* Developed an interface to speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates temperature on website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<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>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539301ECE434 Project Pet Monitor2020-11-17T18:34:53Z<p>Rogerscj37: /* Work Breakdown */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a camera. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Give step by step instructions on how to install your project. <br />
<br />
* Include your [https://github.com/ github] path as a link like this to the read-only git site: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Be sure your README.md is includes an up-to-date and clear description of your project so that someone who comes across you git repository can quickly learn what you did and how they can reproduce it.<br />
* Include a Makefile for your code if using C.<br />
* Include any additional packages installed via '''apt'''. Include '''install.sh''' and '''setup.sh''' files.<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 />
Once everything is installed, how do you use the program? Give details here, so if you have a long user manual, link to it here.<br />
<br />
Consider making it autostart for full credit.<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that read temperature when the page is refreshed<br />
* Data for time since let out and fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<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 />
Project Timeline:<br />
[[File:PetMonitorProjectTimeline.JPG|20px|Pet Monitor project timeline]]<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop camera stream using animated button from website<br />
* Adjusted size of displayed camera stream on the website<br />
* Added a speaker that can play a song as well as a specified frequency<br />
* Developed an interface to speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates temperature on website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<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>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539296ECE434 Project Pet Monitor2020-11-17T18:34:31Z<p>Rogerscj37: /* Work Breakdown */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a camera. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Give step by step instructions on how to install your project. <br />
<br />
* Include your [https://github.com/ github] path as a link like this to the read-only git site: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Be sure your README.md is includes an up-to-date and clear description of your project so that someone who comes across you git repository can quickly learn what you did and how they can reproduce it.<br />
* Include a Makefile for your code if using C.<br />
* Include any additional packages installed via '''apt'''. Include '''install.sh''' and '''setup.sh''' files.<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 />
Once everything is installed, how do you use the program? Give details here, so if you have a long user manual, link to it here.<br />
<br />
Consider making it autostart for full credit.<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that read temperature when the page is refreshed<br />
* Data for time since let out and fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<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 />
Project Timeline:<br />
[[File:PetMonitorProjectTimeline.JPG|Center|Pet Monitor project timeline]]<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop camera stream using animated button from website<br />
* Adjusted size of displayed camera stream on the website<br />
* Added a speaker that can play a song as well as a specified frequency<br />
* Developed an interface to speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates temperature on website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<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>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539291ECE434 Project Pet Monitor2020-11-17T18:33:11Z<p>Rogerscj37: /* Work Breakdown */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a camera. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Give step by step instructions on how to install your project. <br />
<br />
* Include your [https://github.com/ github] path as a link like this to the read-only git site: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Be sure your README.md is includes an up-to-date and clear description of your project so that someone who comes across you git repository can quickly learn what you did and how they can reproduce it.<br />
* Include a Makefile for your code if using C.<br />
* Include any additional packages installed via '''apt'''. Include '''install.sh''' and '''setup.sh''' files.<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 />
Once everything is installed, how do you use the program? Give details here, so if you have a long user manual, link to it here.<br />
<br />
Consider making it autostart for full credit.<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that read temperature when the page is refreshed<br />
* Data for time since let out and fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<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 />
Project Timeline:<br />
[[https://elinux.org/File:PetMonitorProjectTimeline.JPG|20px|Pet Monitor project timeline]]<br />
<br />
Major Tasks:<br />
* Created Flask page<br />
* Used Motion to stream from camera<br />
* Added the ability to start and stop camera stream using animated button from website<br />
* Adjusted size of displayed camera stream on the website<br />
* Added a speaker that can play a song as well as a specified frequency<br />
* Developed an interface to speaker on website- this includes two animated buttons and one user input<br />
* Attached TMP101 sensor that updates temperature on website upon any refresh<br />
* Included time since last meal and time since let out displays that can be updated upon corresponding button press <br />
* Added refresh button with animation<br />
* Edited Website so that it is visually appealing<br />
* Figured out how to use ngrok to publicly stream the Pet Monitor website<br />
<br />
== Future Work ==<br />
<br />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<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>Rogerscj37https://elinux.org/index.php?title=File:PetMonitorProjectTimeline.JPG&diff=539286File:PetMonitorProjectTimeline.JPG2020-11-17T18:23:43Z<p>Rogerscj37: </p>
<hr />
<div></div>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539281ECE434 Project Pet Monitor2020-11-17T18:22:00Z<p>Rogerscj37: /* Packaging */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a camera. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
There is not much hardware for this project. There are three devices that need to be connected to the Beagle Bone: the camera, the speaker, and the TMP101 sensor. The speaker input port connects to P9_14. The TMP101 sensor connects P9_21 for SCL and P9_22 for SDA. The camera is a PlayStation 3 Eye which is USB camera, so it connects to the USB port on the Beagle Bone. For more information on the camera visit: https://en.wikipedia.org/wiki/PlayStation_Eye.<br />
<br />
[[File:PetMonitorHardware.JPG|500px|Hardware for Pet Monitor]]<br />
<br />
== Installation Instructions ==<br />
<br />
Give step by step instructions on how to install your project. <br />
<br />
* Include your [https://github.com/ github] path as a link like this to the read-only git site: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Be sure your README.md is includes an up-to-date and clear description of your project so that someone who comes across you git repository can quickly learn what you did and how they can reproduce it.<br />
* Include a Makefile for your code if using C.<br />
* Include any additional packages installed via '''apt'''. Include '''install.sh''' and '''setup.sh''' files.<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 />
Once everything is installed, how do you use the program? Give details here, so if you have a long user manual, link to it here.<br />
<br />
Consider making it autostart for full credit.<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that read temperature when the page is refreshed<br />
* Data for time since let out and fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<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 />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<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>Rogerscj37https://elinux.org/index.php?title=File:PetMonitorHardware.JPG&diff=539276File:PetMonitorHardware.JPG2020-11-17T18:12:58Z<p>Rogerscj37: </p>
<hr />
<div></div>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539271ECE434 Project Pet Monitor2020-11-17T18:02:31Z<p>Rogerscj37: /* Executive Summary */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a camera. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
== Packaging ==<br />
If you have hardware, consider [http://cpprojects.blogspot.com/2013/07/small-build-big-execuition.html Small Build, Big Execuition] for ideas on the final packaging.<br />
<br />
== Installation Instructions ==<br />
<br />
Give step by step instructions on how to install your project. <br />
<br />
* Include your [https://github.com/ github] path as a link like this to the read-only git site: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Be sure your README.md is includes an up-to-date and clear description of your project so that someone who comes across you git repository can quickly learn what you did and how they can reproduce it.<br />
* Include a Makefile for your code if using C.<br />
* Include any additional packages installed via '''apt'''. Include '''install.sh''' and '''setup.sh''' files.<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 />
Once everything is installed, how do you use the program? Give details here, so if you have a long user manual, link to it here.<br />
<br />
Consider making it autostart for full credit.<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that read temperature when the page is refreshed<br />
* Data for time since let out and fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<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 />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<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>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539266ECE434 Project Pet Monitor2020-11-17T18:02:08Z<p>Rogerscj37: /* Executive Summary */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<br />
[[File:PetMonitorWebPage.jpg|500px|Screen Capture of Pet Monitor Website]]<br />
<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a camera. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
== Packaging ==<br />
If you have hardware, consider [http://cpprojects.blogspot.com/2013/07/small-build-big-execuition.html Small Build, Big Execuition] for ideas on the final packaging.<br />
<br />
== Installation Instructions ==<br />
<br />
Give step by step instructions on how to install your project. <br />
<br />
* Include your [https://github.com/ github] path as a link like this to the read-only git site: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Be sure your README.md is includes an up-to-date and clear description of your project so that someone who comes across you git repository can quickly learn what you did and how they can reproduce it.<br />
* Include a Makefile for your code if using C.<br />
* Include any additional packages installed via '''apt'''. Include '''install.sh''' and '''setup.sh''' files.<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 />
Once everything is installed, how do you use the program? Give details here, so if you have a long user manual, link to it here.<br />
<br />
Consider making it autostart for full credit.<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that read temperature when the page is refreshed<br />
* Data for time since let out and fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<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 />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<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>Rogerscj37https://elinux.org/index.php?title=ECE434_Project_Pet_Monitor&diff=539261ECE434 Project Pet Monitor2020-11-17T18:01:56Z<p>Rogerscj37: /* Executive Summary */</p>
<hr />
<div>[[Category:ECE497 |PT]]<br />
[[Category:ECE434Fall2020 |PT]]<br />
{{YoderHead}}<br />
<br />
Team members: [[user:Yoder|Mark A. Yoder]]<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 />
09 Executive Summary<br />
09 Packaging<br />
09 Installation Instructions <br />
09 User Instructions<br />
09 Highlights<br />
09 Theory of Operation<br />
09 Work Breakdown<br />
09 Future Work/Conclusions<br />
09 Hackster.io<br />
09 Demo/Poster<br />
00 Late<br />
Comments: Have a good day.<br />
<br />
Score: 90/100<br />
</pre><br />
<br />
<span style="color:red">(Inline Comment)</span><br />
<br />
== Executive Summary ==<br />
<br />
[[File:PetMonitorWebPage.jpg|200px|Screen Capture of Pet Monitor Website]]<br />
<br />
My project is a device that allows you to monitor a pet at home through a website. It has various ways to interact with your pet. The first is a camera which when turned on displays the video feed from a camera. The second is a speaker which has two functionalities: play song and play frequency. This allows you to get the attention of your pet. The pet monitor also tracks data that is useful for pet owners. This includes temperature, last time your pet was fed, and last time your pet was let outside. All of these features make this device a great way to observe and interact with pets at home while away.<br />
<br />
== Packaging ==<br />
If you have hardware, consider [http://cpprojects.blogspot.com/2013/07/small-build-big-execuition.html Small Build, Big Execuition] for ideas on the final packaging.<br />
<br />
== Installation Instructions ==<br />
<br />
Give step by step instructions on how to install your project. <br />
<br />
* Include your [https://github.com/ github] path as a link like this to the read-only git site: [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn]. <br />
* Be sure your README.md is includes an up-to-date and clear description of your project so that someone who comes across you git repository can quickly learn what you did and how they can reproduce it.<br />
* Include a Makefile for your code if using C.<br />
* Include any additional packages installed via '''apt'''. Include '''install.sh''' and '''setup.sh''' files.<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 />
Once everything is installed, how do you use the program? Give details here, so if you have a long user manual, link to it here.<br />
<br />
Consider making it autostart for full credit.<br />
<br />
== Highlights ==<br />
<br />
This project has many cool features including: <br />
* Visually appealing HTML/CSS website<br />
* Animated HTML/CSS buttons<br />
* Speaker that can play a melody (Old McDonald)<br />
* Speaker that can produce a frequency given by the input attribute on the HTML/CSS<br />
* Camera that can be started/killed directly from the website<br />
* TMP101 sensors that read temperature when the page is refreshed<br />
* Data for time since let out and fed that are updated when the page is refreshed<br />
<br />
Include a [http://www.youtube.com/ YouTube] demo the audio description.<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 />
If I had more time to work on this project, I would use SSH tunneling or ngrok to broadcast the pet monitor onto non-local hosts. This would allow access to the website while not being directly connected to the Beagle Bone. At the moment, it is possible to stream using ngrok, but a different website is used each time the program is ran. This is inconvenient and can be improved upon. If I had time to add this feature, I would also want to add a security feature. This would protect the camera feed of your home from being publicly accessible.<br />
<br />
Another improvement that could be added is to use Blynk to create a web app that works in parallel with current website. In the beginning stages of the project I was able to stream from the camera to a Blynk app on my phone. However, the quality was horrible so I switched to making a website. If the quality issues could be resolved, a user could access the pet monitor from both a web browser and an app on their phone.<br />
<br />
Aside from these two, smaller features could be added to the project as well. For example, more songs could be added to the play song feature or an alarm could go off if time since last fed is greater then a certain threshold.<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>Rogerscj37https://elinux.org/index.php?title=File:PetMonitorWebPage.jpg&diff=539256File:PetMonitorWebPage.jpg2020-11-17T18:00:04Z<p>Rogerscj37: Picture of Pet Monitor</p>
<hr />
<div>== Summary ==<br />
Picture of Pet Monitor</div>Rogerscj37