- Building a Home Security System with Raspberry Pi
- Matthew Poole
- 333字
- 2021-07-30 09:47:03
The most elaborate light switch in the world
By combining the two little projects earlier, we can now create a system that will do something useful when the pushbutton switch is pushed—for example, switching on the LED that we also have connected. Granted, we could just connect the LED directly to the switch and a battery, but not only would that be boring, it would defeat the point of what we're trying to do, which is programmatically sensing and controlling things.
Here's the breadboard layout for our elaborate light switch:

And here's the circuit diagram:

The illuminating script
Our full Bash script for our elaborate light switch is demonstrated next. This will loop endlessly, detecting the state of the switch GPIO pin, and will turn on the LED GPIO pin when the switch is pushed.
The code listing for light-switch.sh
is as follows:
#!/bin/bash #set up the LED GPIO pin sudo echo 17 > /sys/class/gpio/export sudo echo out > /sys/class/gpio/gpio17/direction #set up the switch GPIO pin sudo echo 27 > /sys/class/gpio/export sudo echo in > /sys/class/gpio/gpio27/direction # loop forever while true do # read the switch state SWITCH=$(sudo cat /sys/class/gpio/gpio27/value) #0=Pushed 1=Not Pushed if [ $SWITCH = "1" ] then #switch not pushed so turn off LED pin sudo echo 0 > /sys/class/gpio/gpio17/value else #switch was pushed so turn on LED pin sudo echo 1 > /sys/class/gpio/gpio17/value fi #short delay sleep 0.5 done
So, here we are—we have a script that will detect an input state and do something in response; in this case, it will switch on an LED. We're now forming the basis of how we are going to put together our home security system.
Note
Remember, don't connect anything to your Raspberry Pi in place of the LED, such as a buzzer or any other device that consumes lots of current. This is likely to irreversibly render your board dead. We'll look at ways, later on in this book, to control devices with higher power requirements.
- Learn ECMAScript(Second Edition)
- C++面向對象程序設計(第三版)
- Linux核心技術從小白到大牛
- 編寫高質量代碼:改善C程序代碼的125個建議
- Java EE 8 Application Development
- Java程序設計實用教程(第2版)
- 軟技能2:軟件開發者職業生涯指南
- Three.js Essentials
- Python Django Web從入門到項目實戰(視頻版)
- Python人工智能項目實戰
- MonoTouch應用開發實踐指南:使用C#和.NET開發iOS應用
- 語義Web編程
- JavaWeb入門經典
- 零基礎入門Python數據分析與機器學習
- Elixir Cookbook