- 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.
- 騰訊iOS測試實踐
- JavaScript+jQuery開發實戰
- 算法精粹:經典計算機科學問題的Python實現
- 零基礎學Java(第4版)
- R的極客理想:工具篇
- Xamarin.Forms Projects
- Learning ELK Stack
- 學習正則表達式
- 劍指大數據:企業級數據倉庫項目實戰(在線教育版)
- Citrix XenServer企業運維實戰
- JavaScript應用開發實踐指南
- Kubernetes進階實戰
- 從Power BI到Analysis Services:企業級數據分析實戰
- Implementing Microsoft Dynamics NAV(Third Edition)
- Java Web動態網站開發(第2版·微課版)