From 28c5a00d19edb97dedd02819cc7613b1714ae5b1 Mon Sep 17 00:00:00 2001 From: aixiao Date: Sun, 28 Jan 2018 17:48:27 +0800 Subject: [PATCH] 20180128 --- raspberrypi_zero/gpio/info.sh | 50 ++++++++++++++++++------ raspberrypi_zero/gpio/info_infrared | Bin 0 -> 8472 bytes raspberrypi_zero/gpio/info_infrared.c | 37 ++++++++++++++++++ raspberrypi_zero/gpio/info_ultrasound | Bin 0 -> 8524 bytes raspberrypi_zero/gpio/info_ultrasound.c | 42 ++++++++++++++++++++ 5 files changed, 118 insertions(+), 11 deletions(-) create mode 100644 raspberrypi_zero/gpio/info_infrared create mode 100644 raspberrypi_zero/gpio/info_infrared.c create mode 100644 raspberrypi_zero/gpio/info_ultrasound create mode 100644 raspberrypi_zero/gpio/info_ultrasound.c diff --git a/raspberrypi_zero/gpio/info.sh b/raspberrypi_zero/gpio/info.sh index 78c3feb..ac2f90d 100644 --- a/raspberrypi_zero/gpio/info.sh +++ b/raspberrypi_zero/gpio/info.sh @@ -8,7 +8,6 @@ # AUthor: aixiao@aixiao.me. # - function DATE() { y=$(date "+%y"); @@ -47,20 +46,31 @@ function lightinfo() bindir="/root/gpio" ! test -d ${bindir} && exit 1; #时间范围 - high="1400"; - low="1430"; + high="1900"; + low="2400"; #当前时间 now=$(date +%H%M); - bcm_lightpin="20"; - wiringpi_lightpin="28"; + bcm_lightpin="21"; + wiringpi_lightpin="29"; + #wiringpi_infrared="20"; #判断手机是否在线 - phoneip="192.168.137.175"; + phoneip="192.168.137.27"; phonelogic="$(ping ${phoneip} -c 1 -S 1 &> /dev/null; echo $?)"; + #判断人体红外线传感器 + infrared=$(${bindir}/info_infrared ${wiringpi_infrared}); + + #距离传感器 + l="60"; + s="150"; + wiringpi_tring="8"; + wiringpi_echo="9"; + #distance="$(${bindir}/info_ultrasound ${wiringpi_tring} ${wiringpi_echo})"; + #读取灯pin值 lightpinvalue="$(${bindir}/info_pin ${wiringpi_lightpin})"; - lightpinvalue="$(gpio -g read ${bcm_lightpin})"; + #lightpinvalue="$(gpio -g read ${bcm_lightpin})"; #开灯&关灯 start_light="${bindir}/info_light ${wiringpi_lightpin} 1"; @@ -73,10 +83,14 @@ DATE; #get18b20data >> ~/temperature.txt; lightinfo; +function main_() +{ while true; do - if [ "${now}" -ge "${high}" -a "${now}" -le "${low}" ]; then #检测时间段 - if [ "${phonelogic}" == "0" ]; then #检测手机IP - if test "${lightpinvalue}" = "0"; then #检测灯pin值 + if [ "${now}" -ge "${high}" -a "${now}" -le "${low}" ]; then #检测时间段 + if [ "${phonelogic}" == "0" ]; then #检测手机IP + #if [ "${infrared}" = "1" ]; then #检测人体红外线 + #if [ "${distance}" -ge ${l} -a "${distance}" -le ${s} ]; then #检测距离范围 + if test "${lightpinvalue}" = "0"; then #检测灯pin值 ${start_light}; fi else @@ -90,6 +104,20 @@ while true; do fi fi lightinfo; #再次获取信息 - sleep 9; #睡眠 + sleep 7; #睡眠 +done +} + +while getopts :d pi +do +case ${pi} in + d) + daemon='&'; + ;; + h|?) + : + ;; +esac done +eval main_ ${daemon} diff --git a/raspberrypi_zero/gpio/info_infrared b/raspberrypi_zero/gpio/info_infrared new file mode 100644 index 0000000000000000000000000000000000000000..8c0c55e648444f9383412169c98316a54bc21c3e GIT binary patch literal 8472 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 BXmtPp literal 0 HcmV?d00001 diff --git a/raspberrypi_zero/gpio/info_infrared.c b/raspberrypi_zero/gpio/info_infrared.c new file mode 100644 index 0000000..1226d91 --- /dev/null +++ b/raspberrypi_zero/gpio/info_infrared.c @@ -0,0 +1,37 @@ +#include +#include +#include +#include + +int main(int argc, char *argv[]) +{ + if(argc != 2) { + exit(0); + } + int pin = atol(argv[1]); + int status = 0; + wiringPiSetup(); + + //设置为输入模式 + pinMode(pin, INPUT); + + //很重要。控制默认情况下此PIN处于下拉低电平状态 + pullUpDnControl(pin, PUD_DOWN); + +/* + while(true) + { + delay(1000); + //读取当前pin的输入状态 + if(digitalRead(pin) == 1) { + printf("There is somebody here\n"); + } + else { + printf("There is no one here\n"); + } + } +*/ + status = digitalRead(pin); + printf("%d\n", status); + +} diff --git a/raspberrypi_zero/gpio/info_ultrasound b/raspberrypi_zero/gpio/info_ultrasound new file mode 100644 index 0000000000000000000000000000000000000000..740f89de24b833c94bb722b4fd8a5331bb47efbc GIT binary patch literal 8524 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 literal 0 HcmV?d00001 diff --git a/raspberrypi_zero/gpio/info_ultrasound.c b/raspberrypi_zero/gpio/info_ultrasound.c new file mode 100644 index 0000000..e17200e --- /dev/null +++ b/raspberrypi_zero/gpio/info_ultrasound.c @@ -0,0 +1,42 @@ +#include +#include +#include +#include + +int main(int argc, char * argv[]) +{ + int i; + if( argc != 3) { + exit(0); + } + + int pin_tring = atol(argv[1]); + int pin_echo = atol(argv[2]); + struct timeval tv1; + struct timeval tv2; + long start_time, stop_time; + float distance; + + if(wiringPiSetup() == -1) { + exit(0); + return 0; + } + digitalWrite(pin_tring, LOW); + digitalWrite(pin_tring, HIGH); + delayMicroseconds(10); + digitalWrite(pin_tring, LOW); + + while(!(digitalRead(pin_echo) == 1)); + gettimeofday(&tv1, NULL); + + while(!(digitalRead(pin_echo) == 0)); + gettimeofday(&tv2, NULL); + + start_time = tv1.tv_sec * 1000000 + tv1.tv_usec; + stop_time = tv2.tv_sec * 1000000 + tv2.tv_usec; + + distance = (float)(stop_time - start_time) / 1000000 * 34000 / 2; + + printf("%0.0f\n", distance); + return distance; +}