Latest update: Sunday, April 1, 2013
This is a simple alarm monitoring system using Netduino Plus and a typical alarm panel. This implementation could be used in conjunction with the PC5010 Digital Security Controls (DSC) PowerSeries Security System control panel and sensors. Tested with .NET Micro Framework 4.2 (QFE1 and QFE2).
Objective
Use full capabilities of Netduino Plus to monitor home alarm system and report any sensor/motion detector activities via email (using Simple Mail Transfer Protocol (SMTP)), local web server and Pachube (now Cosm).
Programming Languages and Web Development
C# for Netduino Plus
HTML for Web Server with Cascading Style Sheets (CSS)
JavaScript for Web Server
Warning
This code contains information related to a typical home alarm systems. Please, be aware that this procedure may void any warranty. Any alarm system of any type may be compromised deliberately or may fail to operate as expected for a variety of reasons.
The author, Gilberto García, is not liable for any System Failures such as: inadequate installation, criminal knowledge, access by intruders, power failure, failure of replaceable batteries, compromise of Radio Frequency (Wireless) devices, system users, smoke detectors, motion detectors, warning devices (sirens, bells, horns), telephone lines, insufficient time, component failure, inadequate testing, security and insurance (property or life insurance).
One last thing:
DISCONNECT AC POWER AND TELEPHONE LINES PRIOR TO DOING ANYTHING.
Optional Hardware
This is a simple alarm monitoring system using Netduino Plus and a typical alarm panel. This implementation could be used in conjunction with the PC5010 Digital Security Controls (DSC) PowerSeries Security System control panel and sensors. Tested with .NET Micro Framework 4.2 (QFE1 and QFE2).
Objective
Use full capabilities of Netduino Plus to monitor home alarm system and report any sensor/motion detector activities via email (using Simple Mail Transfer Protocol (SMTP)), local web server and Pachube (now Cosm).
Programming Languages and Web Development
Warning
This code contains information related to a typical home alarm systems. Please, be aware that this procedure may void any warranty. Any alarm system of any type may be compromised deliberately or may fail to operate as expected for a variety of reasons.
The author, Gilberto García, is not liable for any System Failures such as: inadequate installation, criminal knowledge, access by intruders, power failure, failure of replaceable batteries, compromise of Radio Frequency (Wireless) devices, system users, smoke detectors, motion detectors, warning devices (sirens, bells, horns), telephone lines, insufficient time, component failure, inadequate testing, security and insurance (property or life insurance).
One last thing:
DISCONNECT AC POWER AND TELEPHONE LINES PRIOR TO DOING ANYTHING.
Required Hardware
- Micro SD Card
- SD Card Adapter
- 3mm green Light Emitting Diode (LED) per alarm zone and motion detector.
- 330 ohm for each LED.
- 5600 ohm resistor per alarm zone and motion detector.
- Schottky diode per alarm zone. Schottky diode should have low forward voltage drop like the SBR10U40CT.
- Sparkfun ProtoScrewShield (sku: DEV-09729). Other shields that will work are: Proto-Screwshield (Wingshield) kit from Adafruit or WingShield Industries.
- WiFi connection via WiFly Shield or any WiFi Internet Adapter. Tested on Netgear WNCE3001 and IOGEAR GWU627.
- Panel Mount LED (Green LED with Holder)
- USB Ruggedized / Waterproof Panel Connector (RR-211300-30)
- USB 2.0 Cable, Type A Male to A Male (10 Feet or above). Used to access the Netduino Plus board on the alarm panel.
- 200 Watts / 350 VA UPS (APC BE350G UPS System or similar).
- Push button for external reset.
- Arduino Proto Shield R3. More space for additional components. Mouser Electronics and others.
- Basic 16x2 Character LCD, 3.3V for Netduino or 5V for Arduino.
- DPDT switch (or this one from Mouser Electronics) for LCD voltage selection.
Circuitry
The following Fritzing diagram shows how the Netduino plus, LEDs and the alarm zones (or motion detector) are wired. LCD circuitry reference from Szymon Kobalczy.
Keep in mind that one or more zone consist in the following:
a) 1 Normally Open contact and 1 Normally closed contact with End Of Line (EOL) resistor.
b) Double EOL circuit, 1 Normally closed contact with 5.6kohm EOL resistor and Schottky diode. This will bring the protection needed for the Netduino or Arduino.
c) Each ground zone should be connected to the ProtoScrewShield GND.
References
Web server options
Code
The following Fritzing diagram shows how the Netduino plus, LEDs and the alarm zones (or motion detector) are wired. LCD circuitry reference from Szymon Kobalczy.
HomeAlarmPlus connection diagram (basic circuit) Rev- |
HomeAlarmPlus connection diagram (basic circuit) RevA |
HomeAlarmPlus connection diagram (enhanced circuit) RevG |
Zone/Sensor connection |
a) 1 Normally Open contact and 1 Normally closed contact with End Of Line (EOL) resistor.
b) Double EOL circuit, 1 Normally closed contact with 5.6kohm EOL resistor and Schottky diode. This will bring the protection needed for the Netduino or Arduino.
c) Each ground zone should be connected to the ProtoScrewShield GND.
Netduino/ProtoScrewShield Pin
|
Description
|
A0 | Zone #1 |
A1 | Zone #2 |
A2 | Zone #3 |
A3 | Zone #4 |
A4 | Sensor #1 [Motion Detector] |
D2 | LED Zone #1 |
D3 | LED Zone #2 |
D4 | LED Zone #3 |
D5 | LED Zone #4 |
D6 or D7 | LED Sensor #1 [Motion Detector] |
HomeAlarmPlus schematic (basic circuit) |
References
- Simple Mail Transfer Protocol (SMTP) based on BanskySPOTMail by: Pavel Bánský.
- Web Server based on MFToolkit library by: Michael Schwarz.
- Pachube Embeddable Graph Generator (Beta) by: Pachube, adapted by Gilberto García.
- NTP Server and Extensions class based on a post/implementation by: Valkyrie-MT.
- StopWatch class based on a post/implementation by: Chris Walker.
- LCD display using uLiquidCrystal library.
Web Server snapshot |
Options
|
Description
|
/ | Root page |
/open | Open last file on SD card. |
/sdcard | List files on SD card. |
/su | Super user. Shows additional options. |
/pachube | Shows Pachube activity per zone/Datastream. |
/about | Application credits and version. |
/delete-confirm | Delete last file on SD card [confirm window]. |
/delete-last | Delete last file on SD card [no confirm window]. |
/diagnostics | For now, displays available memory on Netduino and forces to clear the garbage collector. |
Config.ini file should be copied to the root directory on the SD Card. The purpose of this file is to customize parameters on SD Card and avoid minimal source code modification. CSS files (header_style.css and table_style.css) should be located in WebResources folder.
Config.ini content:
Declaration
Delegates
Main
Main Methods
Final Product
Comments from Netduino Community
http://forums.netduino.com/index.php?/topic/4202-home-alarm-system-using-netduino-plus-homealarmplus-project/
Base Code Repository
https://github.com/ferraripr/HomeAlarmPlus
microSD directory structure |
Config.ini content:
;AlarmByZones - Programmed for Netduino by Gilberto García - 5/9/2012 ;Feel free to customize this file with your own definitions. ;[NETDUINO_PLUS_HTTP_PORT] HTTP server port. ;[ALARM_ZONES] should match with ACTIVE_ZONES constant defined in AlarmByZones.cs and Definitions.cs . ;[SENSORS] should match with MOTION_SENSORS constant defined in AlarmByZones.cs and Definitions.cs . ;[USE_EMAIL] Activate/Deactivate email option. Y or N arguments expected. ;[EMAIL_FREQ] Email frequency in minutes when the alarm/sensor is active. ; This will define EMAIL_FREQUENCY in ConfigDefault.cs . ;[STORE_LOG] Saves alarm/sensor log. Y or N arguments expected. ;[STORE_EXCEPTION] Saves Netduino exceptions. Y or N arguments expected. ;[USE_PACHUBE] Activate/Deactivate Pachube option. Y or N arguments expected. ; ; ; [NETDUINO_PLUS_HTTP_PORT] 8080 [ALARM_ZONES] Zone1=FIRST FLOOR - Living room windows, Dining room windows, Porch (sliding doors), Garage door access. Zone2=SECOND FLOOR - Master Bedroom and Bathroom Windows. Zone3=FIRST FLOOR - Master Bedroom windows. Zone4=SECOND FLOOR - Bedroom 2 and bathroom windows. [SENSORS] Sensor1=Main door access [USE_EMAIL] Y [EMAIL_FREQ] 10 [STORE_LOG] Y [STORE_EXCEPTION] N [USE_PACHUBE] Y
Architecture of AlarmByZones (main) |
Declaration
/// <summary> /// Alarm zones (Analog Input) /// </summary> static SecretLabs.NETMF.Hardware.AnalogInput[] Zones = new SecretLabs.NETMF.Hardware.AnalogInput[Alarm.User_Definitions.Constants.ACTIVE_ZONES]; /// <summary> /// Alarm zones LEDs (Digital Output) /// </summary> static Microsoft.SPOT.Hardware.OutputPort[] AlarmLeds = new Microsoft.SPOT.Hardware.OutputPort[Alarm.User_Definitions.Constants.ACTIVE_ZONES]; /// <summary> /// Motion detector sensors (Analog Input) /// </summary> static SecretLabs.NETMF.Hardware.AnalogInput[] Sensors = new SecretLabs.NETMF.Hardware.AnalogInput[Alarm.User_Definitions.Constants.MOTION_SENSORS]; /// <summary> /// Motion detector LEDs (Digital Output) /// </summary> static Microsoft.SPOT.Hardware.OutputPort[] MotionLeds = new Microsoft.SPOT.Hardware.OutputPort[Alarm.User_Definitions.Constants.MOTION_SENSORS]; /// <summary> /// Gets the total elapsed time measured by the current instance of each alarm zone. /// </summary> static System.Diagnostics.Stopwatch[] stopwatchZones = new Stopwatch[Alarm.User_Definitions.Constants.ACTIVE_ZONES]; /// <summary> /// Gets the total elapsed time measured by the current instance of each motion detector sensor. /// </summary> static System.Diagnostics.Stopwatch[] stopwatchSensors = new Stopwatch[Alarm.User_Definitions.Constants.MOTION_SENSORS]; /// <summary> /// Flag for detected zones when trigger. /// </summary> static bool[] detectedZones = new bool[Alarm.User_Definitions.Constants.ACTIVE_ZONES]; /// <summary> /// Flag for detected sensors when is trigger. /// </summary> static bool[] detectedSensors = new bool[Alarm.User_Definitions.Constants.MOTION_SENSORS]; /// <summary> /// Email /// </summary> /// <example> SMTPClient.Email("mail.gmx.com", 587, "user@gmx.com", "destination@email.com", "user password"); /// </example> static SMTPClient.Email email = new SMTPClient.Email(Alarm.UserData.Email.host, Alarm.UserData.Email.port, Alarm.UserData.Email.From, Alarm.UserData.Email.To, Alarm.UserData.Email.smtpPassword); /// <summary> /// SD Card Event Logger /// </summary> public static EventLogger SdCardEventLogger = new EventLogger();
Delegates
/// <summary> /// Monitor zones delegate /// </summary> public delegate void MonitorZonesDelegate(); /// <summary> /// Monitor motion sensor delegate /// </summary> public delegate void MonitorMotionSensorDelegate();
Main
public static void Main() { Zones[0] = new SecretLabs.NETMF.Hardware.AnalogInput(SecretLabs.NETMF.Hardware.NetduinoPlus.Pins.GPIO_PIN_A0); Zones[1] = new SecretLabs.NETMF.Hardware.AnalogInput(SecretLabs.NETMF.Hardware.NetduinoPlus.Pins.GPIO_PIN_A1); Zones[2] = new SecretLabs.NETMF.Hardware.AnalogInput(SecretLabs.NETMF.Hardware.NetduinoPlus.Pins.GPIO_PIN_A2); Zones[3] = new SecretLabs.NETMF.Hardware.AnalogInput(SecretLabs.NETMF.Hardware.NetduinoPlus.Pins.GPIO_PIN_A3); AlarmLeds[0] = new Microsoft.SPOT.Hardware.OutputPort(Pins.GPIO_PIN_D2, false); AlarmLeds[1] = new Microsoft.SPOT.Hardware.OutputPort(Pins.GPIO_PIN_D3, false); AlarmLeds[2] = new Microsoft.SPOT.Hardware.OutputPort(Pins.GPIO_PIN_D4, false); AlarmLeds[3] = new Microsoft.SPOT.Hardware.OutputPort(Pins.GPIO_PIN_D5, false); Sensors[0] = new SecretLabs.NETMF.Hardware.AnalogInput(SecretLabs.NETMF.Hardware.NetduinoPlus.Pins.GPIO_PIN_A4); MotionLeds[0] = new Microsoft.SPOT.Hardware.OutputPort(Pins.GPIO_PIN_D7, false); MonitorZonesDelegate monitorZones = new MonitorZonesDelegate(MonitorZones); MonitorMotionSensorDelegate monitorMotion = new MonitorMotionSensorDelegate(MonitorSensors); //based on a post by Valkyrie-MT //http://forums.netduino.com/index.php?/topic/475-still-learning-internet-way-to-grab-date-and-time-on-startup/ Console.DEBUG_ACTIVITY("Setting NTP-time"); SetTime(); SdCardEventLogger.parseConfigFileContents(Alarm.User_Definitions.Constants.ALARM_CONFIG_FILE_PATH); InitArrays(); Console.DEBUG_ACTIVITY(Microsoft.SPOT.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()[0].IPAddress); SdCardEventLogger.SDCardAccess(); new Thread(Alarm.ProtoScrewShield_LED.Blink).Start(); new Thread(Alarm.WebServer.startHttp).Start(); if (Alarm.ConfigDefault.Data.USE_PACHUBE) { Pachube.PachubeLibrary.InitPachubleLibrary(SdCardEventLogger.IsSDCardAvailable(), Alarm.ConfigDefault.Data.STORE_EXCEPTION); new Thread(Pachube.PachubeLibrary.PachubeConnect).Start(); } while (true) { Debug.Print("Memory available: " + Debug.GC(true)); monitorZones(); monitorMotion(); Thread.Sleep(Alarm.Common.Alarm_Constants.ALARM_DELAY_TIME); } }
Main Methods
/// <summary> /// Loops thru each alarm zone /// </summary> static void MonitorZones() { for (int i = 0; i < Zones.Length; i++) { int vInput = Zones[i].Read(); float volts = ((float)vInput / 1024.0f) * 3.3f; string strZoneDescription = "N/A"; //If zone description is not found on SD Card N/A is default description. Console.DEBUG_ACTIVITY("Zone " + (i + 1).ToString() + ": Volts: " + volts); //format: //Zone number, voltage Pachube.PachubeLibrary.statusToPachube = i == 0 ? (i + 1).ToString() + "," + volts : (i + 1).ToString() + "," + volts + "\r\n" + Pachube.PachubeLibrary.statusToPachube; AlarmLeds[i].Write(volts >= 3); //elapsed seconds double eSeconds = stopwatchZones[i].ElapsedSeconds; //elapsed minutes double eMinutes = stopwatchZones[i].ElapsedMinutes; Console.DEBUG_ACTIVITY("stopwatch[" + i.ToString() + "] = " + eSeconds.ToString() + " seconds"); Console.DEBUG_ACTIVITY("stopwatch[" + i.ToString() + "] = " + eMinutes.ToString() + " minutes\n"); if (volts >= 3 ) { /* Case #1: !detectedZones[i] = not triggered before. This is the first time in this cycle and first email to send. Case #2: detectedZones[i] && eMinutes >= EMAIL_FREQUENCY = triggered before and time is up for sending another email. */ if (!detectedZones[i] || (detectedZones[i] && eMinutes >= Alarm.ConfigDefault.Data.EMAIL_FREQUENCY)) { if (Alarm.Common.Alarm_Info.zoneDescription.Count>0) { if (Alarm.Common.Alarm_Info.zoneDescription.Contains("Zone" + (i + 1).ToString())) { strZoneDescription = (string)Alarm.Common.Alarm_Info.zoneDescription["Zone" + (i + 1).ToString()]; } } string info = "Zone " + (i + 1).ToString() + " " + strZoneDescription; stopwatchZones[i] = Stopwatch.StartNew(); detectedZones[i] = true; email.SendEmail("Alarm Trigger!", info); Alarm.Common.Alarm_Info.sbActivity.AppendLine("<tr>"); Alarm.Common.Alarm_Info.sbActivity.AppendLine("<td><center>" + DateTime.Now.ToString() + "</center></td> "); Alarm.Common.Alarm_Info.sbActivity.AppendLine("<td><center> Zone " + (i + 1).ToString() + "</center></td>"); Alarm.Common.Alarm_Info.sbActivity.AppendLine("<td><center>" + strZoneDescription + "</center></td>"); Alarm.Common.Alarm_Info.sbActivity.AppendLine("</tr>"); if (Alarm.ConfigDefault.Data.USE_PACHUBE) { //supress timer and update Pachube with new status Pachube.PachubeLibrary.forceUpdate = true; } if (SdCardEventLogger.IsSDCardAvailable() && Alarm.ConfigDefault.Data.STORE_LOG) { SdCardEventLogger.saveFile(DateTime.Now.ToString("d_MMM_yyyy--HH_mm_ss") + ".log", info, "Log"); } } } else { detectedZones[i] = false; } } } /// <summary> /// Loops thru each sensor /// </summary> static void MonitorSensors() { for (int i = 0; i < Sensors.Length; i++) { int vInput = Sensors[i].Read(); float volts = ((float)vInput / 1024.0f) * 3.3f; string strSensorDescription = "N/A"; //If sensor description is not found on SD Card N/A is default description. Console.DEBUG_ACTIVITY("Sensor " + (i + 1).ToString() + ": Volts: " + volts); MotionLeds[i].Write(volts >= 3); double eSeconds = stopwatchSensors[i].ElapsedSeconds; double eMinutes = stopwatchSensors[i].ElapsedMinutes; Console.DEBUG_ACTIVITY("stopwatch[" + i.ToString() + "] = " + eSeconds.ToString() + " seconds"); Console.DEBUG_ACTIVITY("stopwatch[" + i.ToString() + "] = " + eMinutes.ToString() + " minutes\n"); if (volts >= 3) { /* Case #1: !detectedZones[i] = not triggered before. This is the first time in this cycle and first email to send. Case #2: detectedZones[i] && eMinutes >= EMAIL_FREQUENCY = triggered before and time is up for sending another email. */ if (!detectedSensors[i] || (detectedSensors[i] && eMinutes >= Alarm.ConfigDefault.Data.EMAIL_FREQUENCY)) { if (Alarm.Common.Alarm_Info.sensorDescription.Count > 0) { if (Alarm.Common.Alarm_Info.sensorDescription.Contains("Sensor" + (i + 1).ToString())) { strSensorDescription = (string)Alarm.Common.Alarm_Info.sensorDescription["Sensor" + (i + 1).ToString()]; } } string info = "Sensor " + (i + 1).ToString() + " " + strSensorDescription; stopwatchSensors[i] = Stopwatch.StartNew(); detectedSensors[i] = true; email.SendEmail("Alarm Trigger!", info); Alarm.Common.Alarm_Info.sbActivity.AppendLine("<tr>"); Alarm.Common.Alarm_Info.sbActivity.AppendLine("<td><center>" + DateTime.Now.ToString() + "</center></td> "); Alarm.Common.Alarm_Info.sbActivity.AppendLine("<td><center> Sensor " + (i + 1).ToString() + "</center></td>"); Alarm.Common.Alarm_Info.sbActivity.AppendLine("<td><center>" + strSensorDescription + "</center></td>"); Alarm.Common.Alarm_Info.sbActivity.AppendLine("</tr>"); if (Alarm.ConfigDefault.Data.USE_PACHUBE) { //supress timer and update Pachube with new status Pachube.PachubeLibrary.forceUpdate = true; } if (SdCardEventLogger.IsSDCardAvailable() && Alarm.ConfigDefault.Data.STORE_LOG) { SdCardEventLogger.saveFile(DateTime.Now.ToString("d_MMM_yyyy--HH_mm_ss") + ".log", info, "Log"); } } } else { detectedSensors[i] = false; } } } /// <summary> /// Synchronize Netduino time with NTP Server /// </summary> public static void SetTime() { //based on a post from user "Valkyrie-MT" at http://forums.netduino.com/index.php?/topic/475-still-learning-internet-way-to-grab-date-and-time-on-startup/ Extension.SetFromNetwork(DateTime.Now, new TimeSpan(-5, 0, 0)); } /// <summary> /// Initializes stopwatch and alarms/sensors arrays /// </summary> private static void InitArrays() { for (int i = 0; i < Alarm.User_Definitions.Constants.ACTIVE_ZONES; i++) { stopwatchZones[i] = Stopwatch.StartNew(); detectedZones[i] = false; } for (int i = 0; i < Alarm.User_Definitions.Constants.MOTION_SENSORS; i++) { stopwatchSensors[i] = Stopwatch.StartNew(); detectedSensors[i] = false; } }
Cosm, formerly Pachube, Alarm Console |
Final Product
LCD and WiFi Internet Adapter |
Alarm Panel with Netduino Plus, LCD and WiFi Internet Adapter |
Comments from Netduino Community
http://forums.netduino.com/index.php?/topic/4202-home-alarm-system-using-netduino-plus-homealarmplus-project/
Base Code Repository
https://github.com/ferraripr/HomeAlarmPlus
A simple security system can go a long way toward preventing burglaries. Security light systems are a common deterrent,
ReplyDeletebut be sure they cover the breadth of your property to ensure maximum effectiveness.
Motion activated sensors are a cheap and effective way to brighten areas and reduce cover.
Thank you for your interest and commenting about this project. I have a long way to go with this project. As of December 18, 2012 software version is 25 and circuit revision is A (revision B is coming soon). Also, I agree with you, at this moment I am experimenting with PIR motion sensor and redundant security using other micro-controller. Cameras are also in the near future.
ReplyDeleteHi, really interesting project. I plan to install it on my new house and implement new features as well. Is the github aligned with your changes?do you plan some sharing of code for contribution?
ReplyDeleteCheers
Manuel
Hi Manuel. Feel free to modify and contribute to the code in github. I need to add the CSS files used for the Web server. The system its been stable for almost a year now with 24 hour monitoring. The only change I did was the WiFi Internet Adapter, which currently is the IOGEAR GWU627. It is more compact in size than Netgear WNCE3001. I will be updating this page for your benefit.
DeleteManuel, I have updated github with the files you need to add to the SD Card. Keep in mind that the software is solid using .NET Framework 4.2 QFE1. I am right now testing QFE2.
DeleteDo you have diagrams which show how connections to the control panel and sensors? Any pointers to details on how sensors and panels work?
ReplyDeleteGreg, Thank you for your interest. I will be adding more details to this project.
DeleteThank you Sabiha. More modifications are coming up. I am currently testing with notification service, ATtiny85 for multi-threading and code optimization. The reason for this changes is to free up RAM and code storage.
ReplyDeleteHow goes the testing? Have you stress-tested the system yet? How does it fare in terms of false positives and false negatives?
ReplyDeleteGood read! The step-by-step procedure helps so that I don’t overshoot the settings. Might try this when I have the time to tinker with the security system. :)
Odessa Hanton
Thank you Odessa Hanton, from the circuit stand point it seems that the 4.7kohm resistors (recommended by the manufacturer) and diodes minimized a lot of problems found at the beginning. False positive/negative : A task on agenda is adding an RF receiver like http://www.adafruit.com/products/1097 and modify webserver to arm or disarm. I sort of mentioned what I am working right now actually :) .
DeleteI just bought a house with this same security system that I was looking to integrate with a Netduino. The circuit diagrams are helpful, but how did you connect it to your existing PC5010, or did you just use the sensor loops? Did your setup also integrate with fire alarms?
ReplyDeleteCD Waddell, you are right. For now I am just using the sensors and experimenting with the alarm speaker (SD 15W-ULF) which came with my home. That speaker can be activated with 5V easily. The system just send notification of events and function as a webserver. I did not integrated the fire alarm with the netduino plus. You can do this project just remember to connect for example your Zone 1 (GREEN and RED) in analog input and Zone 1 common (YELLOW and BLACK) in ground. Please share your results or let me know if you have more questions.
DeleteNice job! Indeed, having an alarm system is pretty handy. However, some alarm systems only make an annoying sound that can scare the burglar away. However, that doesn’t mean it’s pretty effective, right? For me, one alarm system must have the capability to alarm police department. Also, having surveillance cameras with motion sensors installed on every angle of the home’s surroundings can be more appropriate. It will alarm you immediately and give you the chance to figure out what to do.
ReplyDeleteThis is so informative! However, the problem is I don’t have the guts to try it out. I might mess things up for I have strong ESD in my body. Nevertheless, I’m absolutely sure that your project is very useful.
ReplyDeleteAlexander, ESD mat and wrist straps solves this problem. I do too have this problem and bought an anti-static kit. Anyways, you can do this project. I will be updating code and posting a video this week after several weeks of testing. Feel free to ask.
DeleteAlezander, here is the video as promised: http://youtu.be/8BVISWQhfTw
DeleteΤα άρθρο σας για curcuit είναι πολύ ενδιαφέρων σας ευχαριστούμε πολύ για της πληροφορίες.
ReplyDeleteσυναγερμοι
It's very interesting presentation of the system is very good congratulations your job.http://www.kameres.com/
ReplyDeleteGreat project!
ReplyDeleteI've created a similar alarm system based on Arduino.
More info here :
http://dev.kprod.net/?q=aalarm-v2-intrusion-detection-using-arduino-alarm-with-django-and-perl-en
It is another unique home alarm system that I've ever seen. The creation of this gadget is quite complicated though.
ReplyDeleteNowadays, lot of DIY tutorial about on how to create a home-made home security system are now can be found over internet.
ReplyDeleteGood Job! I enjoyed enough reading your latest article to read it again and again! It was so helpful. Waiting for your next entry.
ReplyDeleteAlarm Systems Melbourne
hey, i am doing motion sensor as my school project and have some queries for the work. i wonder if you could help me as i was desperate looking for a solution.
ReplyDeleteThis is the storyline for my project.
I want to create a motion sensor for security purpose for the house. it separated day and night. and when it is in the morning nothing will happen and when it is at night the buzzer sensor will be at work. When, if somebody stand at the house door for too long, music will sound off and alert the owner of the house.
Could you help me with this please? thank you
was using netduino plus 2
ReplyDeleteInteresting project. I'm considering doing something similar except take advantage of cloud technologies. I'm also pretty good with robotics which will make it that much more fun. I always mess with my son by closing his door whenever he tries to open it.
ReplyDeletehttp://www.americanwirelessalarm.com/monitoring/
Fantastic
ReplyDeleteHome theater San Diego
ReplyDeleteSeattle Home Theater Pros
ReplyDeleteI see some amazingly important and kept up to length of your strength searching for in your on the site alarm systems melbourne
ReplyDeleteThe last I checked on this topic was quite some time back. I am more into SEO Company. Nonetheless, fascinating post and I’d check back again soon and get myself much more updated. www.forbrukeretaten.no/
ReplyDeleteIncredible things you've generally imparted to us.
ReplyDeletealarms Dublin
You made such an interesting piece to read, giving every subject enlightenment for us to gain knowledge. Thanks for sharing the such information with us to read this... Security cameras
ReplyDeleteThis article is very informative. I appreciate your efforts and you explain very well. I suggest wireless burglar alarm to protect your home and family from burglaries. It easy to install and user-friendly.
ReplyDelete