Difference between revisions of "ECE434 Security Camera"

From eLinux.org
Jump to: navigation, search
(2 intermediate revisions by the same user not shown)
Line 31: Line 31:
 
Picture that summarizes the project.
 
Picture that summarizes the project.
  
For this project we created a security camera that can be used to monitor determined area. This is implemented with a BeagleBone Black and a PlayStation eye as the main components. We also have a manual operation mode as well as a live video feed that goes directly to a Blynk controller. Along side this we are also registering motion and sending a recording to a repo whenever this motion is registered. The use of this project is to wither manually or automatically monitor a defined area such as surveillance cameras are used in many places around the world today. This could serve as a replacement to a Google Nest Camera(https://store.google.com/product/nest_cam_outdoor?gclid=CjwKCAiA_MPuBRB5EiwAHTTvMb3A4UzdK2UyQnRzqudefripDsK73L7J20r-08Z_Jn4a7763-2NOFRoCSEgQAvD_BwE&gclsrc=aw.ds) priced at about $199 while our solution is priced at the price of around $90 total.
+
For this project we created a security camera that can be used to monitor a determined area. This is implemented with a BeagleBone Black and a PlayStation eye as the main components. We also have a manual operation mode as well as a live video feed that goes directly to a Blynk controller. Alongside this, we are also registering motion and sending a recording to a repo whenever this motion is registered. The use of this project is to, whether manually or automatically, monitor a defined area similar to surveillance cameras that are used in many places around the world today. This could serve as a replacement to a Google Nest Camera(https://store.google.com/product/nest_cam_outdoor?gclid=CjwKCAiA_MPuBRB5EiwAHTTvMb3A4UzdK2UyQnRzqudefripDsK73L7J20r-08Z_Jn4a7763-2NOFRoCSEgQAvD_BwE&gclsrc=aw.ds) priced at about $199 while our solution is priced at the price of around $90 total.
  
 
== Packaging ==
 
== Packaging ==
For packaging we decided to keep is very simple as the only device we have is the camera itself alongside the BeagleBone board. We did use a custom 3D printed housing to gold the camera in-place with the servo.  
+
For packaging we decided to keep is very simple as the only device we have is the camera itself alongside the BeagleBone board. We did use a custom 3D printed housing to hold the camera in place with the servo.  
  
 
== Installation Instructions ==
 
== Installation Instructions ==
  
Give step by step instructions on how to install your project.   
+
Github:  [https://github.com/16oberryan/embeddedSecurityCam https://github.com/16oberryan/embeddedSecurityCam]  
  
* 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].  
+
You'll need to create a Blynk app and set up an ifttt application. There are tutorials for each online, and both are free (you'll need to make an account). Ifttt is used for notifications, and uses webhooks as the trigger for the event (I used it to trigger emails with Gmail). The Blynk app is used to control the program. For full functionality, you will need to add the following widgets: Video Streaming, Joystick, and 4 buttons (don't worry, you shouldn't have to buy more energy).
* 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.
+
The first button turns on and off Motion, and should be connected to virtual pin 0.
* Include a Makefile for your code if using C.
+
The second button turns on and off video streaming, and is connected to virtual pin 1.
* Include any additional packages installed via '''apt'''. Include '''install.sh''' and '''setup.sh''' files.
+
The third button turns on ifttt notifications, and is connected to virtual pin 2. The fourth button filters the events that cause ifttt notifications (usually one movement caused multiple triggers), and is connected to virtual pin 3.
* Include kernel mods.
+
All 4 buttons should be set to be switches.
* If there is extra hardware needed, include links to where it can be obtained.
+
The video streaming widget should be set to the system's IP address, port 8081 (format: xxx.xxx.xxx.xxx:8081)
 +
Finally, the Joystick should be set to virtual pins 4 and 5.
 +
 
 +
Next, the program has to be authorized for Blynk and ifttt. The Blynk authentification key (sent via email) should be copied into the 'AUTH' variable. The ifttt key (found in settings) should be copied into the 'key' variable.
 +
 
 +
Now it should be ready to go, just make sure the system is connected to the internet, run the code with './security.js' (without the quotes), and you should see the device go online in the Blynk app.
  
 
== User Instructions ==
 
== User Instructions ==
  
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.
+
As mentioned in the installation instructions, there are several Blynk widgets that control the program.
 +
* Button (V0): Starts and stops Motion, which records any motion detected by the camera
 +
* Button (V1): Toggles video streaming to the Video Streaming widget
 +
* Button (V2): Toggles on/off ifttt event triggering when motion is detected
 +
* Button (V3): Toggles filtering when ifttt events occur, you might just want to leave this on, as without it multiple triggers are often sent to ifttt in one motion event
 +
* Joystick (V4, V5): Controls the camera via servos
 +
  * Video Streaming: Shows the video stream of the camera when streaming is turned on, although it doesn't seem to refresh well when you turn streaming on. If it doesn't notice the stream, you can force it to refresh by stopping and starting the Blynk project from the app.
  
 
== Highlights ==
 
== Highlights ==
Line 59: Line 70:
 
== Theory of Operation ==
 
== Theory of Operation ==
  
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.
+
We are using javascript, so all of our code is event-based. When the program starts running, it first connects to Blynk, where it can be controlled from a smartphone. Using different options in the Blynk app, the program can be instructed to start or stop Motion, stream video, and send email notifications of motion detection via ifttt.
  
 
== Work Breakdown ==
 
== Work Breakdown ==
  
 
List the major tasks in your project and who did what.
 
List the major tasks in your project and who did what.
 
+
* Blynk integration - both
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.
+
* ifttt integration - Ryan
 +
* Video Streaming - Ryan
 +
* Misc. settings - Ryan
 +
* Chokidar for event detection - Ryan
 +
* Joystick control - Seun
 +
* 3D printing - Seun
  
 
== Future Work ==
 
== Future Work ==
  
Suggest addition things that could be done with this project.
+
Suggest additional things that could be done with this project.
  
 
== Conclusions ==
 
== Conclusions ==

Revision as of 16:53, 18 November 2019

thumb‎ Embedded Linux Class by Mark A. Yoder


Team members: Seun Ladipo and Ryan Oberlitner

Grading Template

I'm using the following template to grade. Each slot is 10 points. 0 = Missing, 5=OK, 10=Wow!

00 Executive Summary
00 Installation Instructions 
00 User Instructions
00 Highlights
00 Theory of Operation
00 Work Breakdown
00 Future Work
00 Conclusions
00 Demo
00 Late
Comments: I'm looking forward to seeing this.

Score:  10/100

(Inline Comment)

Executive Summary

Picture that summarizes the project.

For this project we created a security camera that can be used to monitor a determined area. This is implemented with a BeagleBone Black and a PlayStation eye as the main components. We also have a manual operation mode as well as a live video feed that goes directly to a Blynk controller. Alongside this, we are also registering motion and sending a recording to a repo whenever this motion is registered. The use of this project is to, whether manually or automatically, monitor a defined area similar to surveillance cameras that are used in many places around the world today. This could serve as a replacement to a Google Nest Camera(https://store.google.com/product/nest_cam_outdoor?gclid=CjwKCAiA_MPuBRB5EiwAHTTvMb3A4UzdK2UyQnRzqudefripDsK73L7J20r-08Z_Jn4a7763-2NOFRoCSEgQAvD_BwE&gclsrc=aw.ds) priced at about $199 while our solution is priced at the price of around $90 total.

Packaging

For packaging we decided to keep is very simple as the only device we have is the camera itself alongside the BeagleBone board. We did use a custom 3D printed housing to hold the camera in place with the servo.

Installation Instructions

Github: https://github.com/16oberryan/embeddedSecurityCam

You'll need to create a Blynk app and set up an ifttt application. There are tutorials for each online, and both are free (you'll need to make an account). Ifttt is used for notifications, and uses webhooks as the trigger for the event (I used it to trigger emails with Gmail). The Blynk app is used to control the program. For full functionality, you will need to add the following widgets: Video Streaming, Joystick, and 4 buttons (don't worry, you shouldn't have to buy more energy). The first button turns on and off Motion, and should be connected to virtual pin 0. The second button turns on and off video streaming, and is connected to virtual pin 1. The third button turns on ifttt notifications, and is connected to virtual pin 2. The fourth button filters the events that cause ifttt notifications (usually one movement caused multiple triggers), and is connected to virtual pin 3. All 4 buttons should be set to be switches. The video streaming widget should be set to the system's IP address, port 8081 (format: xxx.xxx.xxx.xxx:8081) Finally, the Joystick should be set to virtual pins 4 and 5.

Next, the program has to be authorized for Blynk and ifttt. The Blynk authentification key (sent via email) should be copied into the 'AUTH' variable. The ifttt key (found in settings) should be copied into the 'key' variable.

Now it should be ready to go, just make sure the system is connected to the internet, run the code with './security.js' (without the quotes), and you should see the device go online in the Blynk app.

User Instructions

As mentioned in the installation instructions, there are several Blynk widgets that control the program.

* Button (V0): Starts and stops Motion, which records any motion detected by the camera
* Button (V1): Toggles video streaming to the Video Streaming widget
* Button (V2): Toggles on/off ifttt event triggering when motion is detected
* Button (V3): Toggles filtering when ifttt events occur, you might just want to leave this on, as without it multiple triggers are often sent to ifttt in one motion event
* Joystick (V4, V5): Controls the camera via servos
* Video Streaming: Shows the video stream of the camera when streaming is turned on, although it doesn't seem to refresh well when you turn streaming on. If it doesn't notice the stream, you can force it to refresh by stopping and starting the Blynk project from the app.

Highlights

Here is where you brag about what your project can do.

Include a YouTube demo the audio description.

Theory of Operation

We are using javascript, so all of our code is event-based. When the program starts running, it first connects to Blynk, where it can be controlled from a smartphone. Using different options in the Blynk app, the program can be instructed to start or stop Motion, stream video, and send email notifications of motion detection via ifttt.

Work Breakdown

List the major tasks in your project and who did what.

* Blynk integration - both
* ifttt integration - Ryan
* Video Streaming - Ryan
* Misc. settings - Ryan
* Chokidar for event detection - Ryan
* Joystick control - Seun
* 3D printing - Seun

Future Work

Suggest additional things that could be done with this project.

Conclusions

Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.




thumb‎ Embedded Linux Class by Mark A. Yoder