This commit is contained in:
root 2018-03-29 20:03:58 +08:00
parent 6e2f39ee2b
commit e44ca69037
25 changed files with 0 additions and 446 deletions

View File

@ -1,24 +0,0 @@
CC=gcc
libs=info_infrared.o info_light.o info_pin.o info_sound.o info_ultrasound.o
all: infrared light pin sound ultrasound
infrared: info_infrared.o
$(CC) -c info_infrared.c
$(CC) info_infrared.o -o info_infrared -lwiringPi
light: info_light.o
$(CC) -c info_light.c
$(CC) info_light.o -o info_light -lwiringPi
pin: info_pin.o
$(CC) -c info_pin.c
$(CC) info_pin.o -o info_pin -lwiringPi
sound: info_sound.o
$(CC) -c info_sound.c
$(CC) info_sound.o -o info_sound -lwiringPi
ultrasound: info_ultrasound.o
$(CC) -c info_ultrasound.c
$(CC) info_ultrasound.o -o info_ultrasound -lwiringPi
.PHONY : clean
clean :
rm -f $(libs) info_infrared info_light info_sound info_ultrasound

View File

@ -1 +0,0 @@
1

View File

@ -1 +0,0 @@
0

View File

@ -1,219 +0,0 @@
#!/bin/bash
#
# reapberry zero w
# GPIO module
# Date: 20180118
# Time: 17:17
#
# AUthor: aixiao@aixiao.me.
#
function DATE()
{
y=$(date "+%y");
m=$(date "+%m");
d=$(date "+%d");
H=$(date "+%H");
M=$(date "+%M");
S=$(date "+%S");
}
function SLEEP()
{
sleep $@
}
function get18b20data()
{
MODEL="28-04174019f0ff";
while true; do
if test -d "/sys/devices/w1_bus_master1/${MODEL}"; then
temperature=$(cat /sys/devices/w1_bus_master1/28-04174019f0ff/w1_slave | grep 't=' | sed 's/^.*t=//g' | awk '{print $1/1000}');
#echo $y年$m月$d日$H时$M分$S秒
#echo -ne "当前室内温度: ";
#echo -e "\e[1;31m${temperature}℃ \e[0m";
echo "${temperature}" >> data/temperature.data;
fi
SLEEP 60;
done
}
function getcpudata()
{
MHZ=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq | awk '{print $1/1000}');
temperature=$(cat /sys/class/thermal/thermal_zone0/temp | awk '{print $1/1000}');
percentage=$(top -b -n 2 | grep ^%Cpu | sed -n "2p" | sed -e 's/^.*://g;s/..,//g;s/st//g' | awk '{print "scale=1; 100-" $4 }' | bc);
echo "Cpu Frequencyi: ${MHZ}MHZ";
echo -e "\e[1;31mCpu temperature: ${temperature}℃ \e[0m";
echo "Cpu Percentage: ${percentage}%";
}
function INIT()
{
null="/dev/null";
bindir="/root/gpio";
! test -d ${bindir} && exit 1;
#时间范围
high="1500";
low="2400";
#当前时间
now=$(date +%H%M);
bcm_lightpin="20";
wiringpi_lightpin="28";
wiringpi_infrared="6";
#判断手机是否在线
#phoneip="192.168.137.27";
#phonelogic="$(ping ${phoneip} -c 1 -S 1 &> /dev/null; echo $?)";
#判断人体红外线传感器
#infrared=$(${bindir}/info_infrared ${wiringpi_infrared});
infrared=$(cat ${bindir}/data/infrared.data 2> /dev/null);
#声音传感器
wiringpi_sound=25;
sound=$(cat ${bindir}/data/sound.data 2> /dev/null);
#距离传感器
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})";
#开灯&关灯
start_light="${bindir}/info_light ${wiringpi_lightpin} 1";
stop_light="${bindir}/info_light ${wiringpi_lightpin} 0";
}
function WHILE()
{
while true; do
${bindir}/info_infrared ${wiringpi_infrared} > data/infrared.data;
SLEEP 1;
done
}
function light()
{
while true; do
if [ "${now}" -ge "${high}" -a "${now}" -le "${low}" ]; then #检测时间段
#if [ "${phonelogic}" == "0" ]; then #检测手机IP
#echo ${infrared}
if [ "${infrared}" = "1" ]; then #检测人体红外线
#if [ "${distance}" -ge ${l} -a "${distance}" -le ${s} ]; then #检测距离范围
if test "${lightpinvalue}" = "0"; then #检测灯pin值
${start_light};
SLEEP 9;
fi
else
if test "${lightpinvalue}" = "1"; then #如果开着就关闭
${stop_light};
fi
fi
else
if test "${lightpinvalue}" = "1"; then #如果开着就关闭
${stop_light};
fi
fi
INIT; #再次获取信息
SLEEP 1; #睡眠
done
}
function light_daemon()
{
while true; do
${bindir}/info_infrared ${wiringpi_infrared} > data/infrared.data;
SLEEP 1;
done
}
function sound_daemon()
{
while :; do
${bindir}/info_sound ${wiringpi_sound} > data/sound.data
SLEEP 0.3;
done
}
function sound()
{
:
}
INIT;
while getopts :ds:x ai
do
case ${ai} in
d)
daemon='&';
;;
s)
case $OPTARG in
"stop")
array=$(ls ${bindir}/log/)
for arr in ${array[@]}; do
kill $(cat ${bindir}/log/${arr}) &> ${null}
rm ${bindir}/log/${arr} 2> ${null}
done
exit 0
;;
*)
:
;;
esac
exit 0
;;
x)
set -x
;;
h|?)
echo -ne "
\e[1;31mraspberrypi zero w 智能家居\e[0m
$0 Usage: $0 [-?|h] [-d] [-s] [-x] [light|temperature]
-d : Daemon.
-s : kill Daemon, signal: stop.
-x : Print commands and their arguments as they are executed.
light : light Modular.
temperature : temperature Modular.
by aixiao.
"
exit 0
;;
esac
done
shift $((OPTIND-1))
case ${1} in
light)
light_daemon &
light_daemon_id="$(echo $!)"
echo ${light_daemon_id} > log/infrared.pid 2> ${null}
eval light ${daemon}
echo $! > log/light.pid 2> ${null}
;;
temperature)
#get18b20data &
#echo $! > log/temperature.pid 2> ${null}
:
;;
sound)
sound_daemon &
echo $! > log/sound.pid 2> ${null};
eval sound ${daemon};
;;
*)
exit 1;
;;
esac

Binary file not shown.

View File

@ -1,23 +0,0 @@
#include <wiringPi.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int main(int argc, char *argv[])
{
if(argc != 2) {
exit(0);
}
int pin = atol(argv[1]);
int status = 0;
wiringPiSetup();
pinMode(pin, INPUT);
pullUpDnControl(pin, PUD_DOWN);
status = digitalRead(pin);
printf("%d\n", status);
}

Binary file not shown.

View File

@ -1,31 +0,0 @@
#include <wiringPi.h>
#include <stdio.h>
#include <stdlib.h>
/*
void pinMode (int pin, int mode) ;
void pullUpDnControl (int pin, int pud) ;
void digitalWrite (int pin, int value) ;
void pwmWrite (int pin, int value) ;
int digitalRead (int pin) ;
analogRead (int pin) ;
analogWrite (int pin, int value) ;
*/
int main(int argc, char *argv[])
{
if( argc != 3) {
exit(0);
}
int pin = atol(argv[1]);
wiringPiSetup();
pinMode(pin, OUTPUT);
if(atol(argv[2]) == 1) {
digitalWrite(pin, HIGH);
}
if(atol(argv[2]) == 0) {
digitalWrite(pin, LOW);
}
}

Binary file not shown.

Binary file not shown.

View File

@ -1,24 +0,0 @@
#include <wiringPi.h>
#include <stdio.h>
#include <stdlib.h>
/*
void pinMode (int pin, int mode) ;
void pullUpDnControl (int pin, int pud) ;
void digitalWrite (int pin, int value) ;
void pwmWrite (int pin, int value) ;
int digitalRead (int pin) ;
analogRead (int pin) ;
analogWrite (int pin, int value) ;
*/
int main(int argc, char *argv[])
{
if( argc != 2) {
exit(0);
}
int pin = atol(argv[1]);
wiringPiSetup();
pinMode(pin, OUTPUT);
printf("%d\n", digitalRead(pin));
}

Binary file not shown.

Binary file not shown.

View File

@ -1,23 +0,0 @@
#include <wiringPi.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int main(int argc, char *argv[])
{
if(argc != 2) {
exit(0);
}
int pin = atol(argv[1]);
int status = 0;
wiringPiSetup();
pinMode(pin, INPUT);
pullUpDnControl(pin, PUD_DOWN);
status = digitalRead(pin);
printf("%d\n", status);
}

Binary file not shown.

View File

@ -1,42 +0,0 @@
#include <wiringPi.h>
#include <sys/time.h>
#include <stdlib.h>
#include <stdio.h>
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;
}

View File

@ -1 +0,0 @@
1

View File

@ -1 +0,0 @@
14389

View File

@ -1 +0,0 @@
14392

View File

@ -1,55 +0,0 @@
#include <stdio.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <dirent.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>
#define N 80
int main(int argc, char *argv[])
{
char path[50] = "/sys/bus/w1/devices/";
char rom[20];
char buffer[N+1];
DIR *dirp;
struct dirent *direntp;
FILE *fp;
char *temp;
float value;
system("sudo modprobe w1-gpio");
system("sudo modprobe w1-therm");
if((dirp = opendir(path)) == NULL) {
exit(0);
}
while((direntp = readdir(dirp)) != NULL) {
if(strstr(direntp->d_name, "28-0")) {
strcpy(rom, direntp->d_name);
}
}
closedir(dirp);
strcat(path, rom);
strcat(path, "/w1_slave");
//printf("%s\n", path);
if ((fp = fopen(path, "r")) < 0) {
exit(0); /* 文件不存在,则退出. */
}
while(fgets(buffer, N, fp) != NULL){
;
}
temp = strchr(buffer, 't');
sscanf(temp, "t=%s", temp);
value = atof(temp) / 1000;
printf("%.0f\n", value);
fclose(fp);
return 0;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 114 KiB