HC-SR501: Skirtumas tarp puslapio versijų
Jump to navigation
Jump to search
12 eilutė: | 12 eilutė: | ||
VVC = PIN 2 | VVC = PIN 2 | ||
− | OUTPUT = PIN | + | OUTPUT = PIN 7 |
GND = PIN 6 | GND = PIN 6 | ||
− | == Kodas == | + | == Golang kodas == |
+ | |||
+ | <syntaxhighlight lang="go"> | ||
+ | package main | ||
+ | |||
+ | import ( | ||
+ | . "github.com/cyoung/rpi" | ||
+ | "fmt" | ||
+ | "time" | ||
+ | ) | ||
+ | |||
+ | func main() { | ||
+ | WiringPiSetup() | ||
+ | pin := 7 | ||
+ | go func() { | ||
+ | last_time := time.Now().UnixNano() / 1000000 | ||
+ | motion_detected := 0 | ||
+ | for pinas := range WiringPiISR(BoardToPin(pin), INT_EDGE_FALLING) { | ||
+ | if pinas > -1 { | ||
+ | n := time.Now().UnixNano() / 1000000 | ||
+ | delta := n - last_time | ||
+ | if delta > 800 { //software debouncing | ||
+ | fmt.Printf("Motion detected (Total detected %d times)\n",motion_detected) | ||
+ | last_time = n | ||
+ | motion_detected++ | ||
+ | } | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | }() | ||
+ | |||
+ | for { | ||
+ | // empty cycle | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == Python Kodas == | ||
<syntaxhighlight lang="python"> | <syntaxhighlight lang="python"> | ||
#!/usr/bin/python | #!/usr/bin/python | ||
− | |||
import RPi.GPIO as GPIO | import RPi.GPIO as GPIO | ||
import time | import time | ||
− | |||
+ | GPIO.setmode(GPIO.BCM) | ||
+ | |||
+ | PIR_PIN = 4 | ||
+ | CNT = 0 | ||
− | + | GPIO.setup(PIR_PIN, GPIO.IN) | |
+ | |||
+ | def MOTION(PIR_PIN): | ||
+ | print "Motion Detected" | ||
+ | |||
+ | print "PIR Module Test (CTRL+C to exit)" | ||
+ | time.sleep(2) | ||
+ | print "Ready" | ||
− | |||
− | |||
− | + | try: | |
− | + | GPIO.add_event_detect(PIR_PIN, GPIO.RISING, callback=MOTION) | |
+ | while 1: | ||
+ | time.sleep(100) | ||
+ | except KeyboardInterrupt: | ||
+ | print "Quit" | ||
+ | GPIO.cleanup(); | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</syntaxhighlight> | </syntaxhighlight> | ||
13:47, 14 rugsėjo 2020 versija
Judesio daviklis.
Sensitivity reguliatorių patartina atsukti beveik iki max, time delay į minimum. Perjungti jumperį į kitą padėtį nei parodyta pav.
RaspberryPI
Sujungimas
Visi pinai aprašyti čia. Sujungimas:
VVC = PIN 2 OUTPUT = PIN 7 GND = PIN 6
Golang kodas
package main
import (
. "github.com/cyoung/rpi"
"fmt"
"time"
)
func main() {
WiringPiSetup()
pin := 7
go func() {
last_time := time.Now().UnixNano() / 1000000
motion_detected := 0
for pinas := range WiringPiISR(BoardToPin(pin), INT_EDGE_FALLING) {
if pinas > -1 {
n := time.Now().UnixNano() / 1000000
delta := n - last_time
if delta > 800 { //software debouncing
fmt.Printf("Motion detected (Total detected %d times)\n",motion_detected)
last_time = n
motion_detected++
}
}
}
}()
for {
// empty cycle
}
}
Python Kodas
#!/usr/bin/python
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
PIR_PIN = 4
CNT = 0
GPIO.setup(PIR_PIN, GPIO.IN)
def MOTION(PIR_PIN):
print "Motion Detected"
print "PIR Module Test (CTRL+C to exit)"
time.sleep(2)
print "Ready"
try:
GPIO.add_event_detect(PIR_PIN, GPIO.RISING, callback=MOTION)
while 1:
time.sleep(100)
except KeyboardInterrupt:
print "Quit"
GPIO.cleanup();
OrangePI
Sujungimas
Visi pinai aprašyti čia. Sujungimas:
VVC = PIN 2 OUTPUT = PIN 11 GND = PIN 6
Kodas
Sujudėjus bandytams, bus įjungta šviesa ir pranešta į telegramą.
#!/usr/bin/python
from pyA20.gpio import gpio
from pyA20.gpio import port
import requests
from time import gmtime, strftime
import time
import os
# initialize GPIO
TG_BOTHSH = ""
TG_CHATID = ""
SENSOR_LOCATION = "Main room"
sensor = port.PA6
gpio.init()
gpio.setcfg(sensor, gpio.INPUT)
print "Sensor initializing..."
time.sleep(2)
print "Active"
print "Press Ctrl+C to abort the program"
previous_state = False
current_state = False
LOW = 1
HIGH = 0
LIGHT_PORT = 20
URL = "https://api.telegram.org/{}/".format(TG_BOTHSH)
def switch_lights(state):
url = "http://192.168.13.102:1415/turn/{}/{}".format(LIGHT_PORT,state)
print "Turning lights: ",state
requests.get(url)
def send_message(text):
url = URL + "sendMessage?text={}&chat_id={}".format(text, TG_CHATID)
requests.get(url)
if os.getenv("TZ"):
os.unsetenv("TZ")
while True:
previous_state = current_state
current_state = gpio.input(sensor)
if current_state != previous_state:
new_state = "LOW" if current_state else "HIGH"
print("GPIO pin %s is %s" % (sensor, new_state))
if current_state == HIGH:
d1 = strftime("%Y-%m-%d %H:%M:%S", gmtime())
print d1,"-> Motion detected"
#turn lights on for 10 seconds
switch_lights("on")
time.sleep(10)
#turn the lights off again
switch_lights("off")
send_message("Motion detected on {}".format(SENSOR_LOCATION))