PIR-а е датчик за движение. Идеята е да следи дали в стаята има движение и според осветеността и времето от денонощието да гаси или включва осветлението.
Моят сензор се води SE-10 и в
описанието му пише, че се захранва с напрежение между 5 и 12V. Трябва му и pull up резистор - при мен 10k свърши работа. Между другото в описанието му пише, че трябват 12V, но при мен с 5V от втори пин на Pi-то си сработи съвсем добре.
Свързването е лесно. На самия сензор са означени захранването и AL, което са съответно 5V и алармата. Неозначения пин е масата.
Аз ползвах пин 22 на Pi-то, което е GPIO 25, пин 25 за масата и пин 2 за 5V. Резистора в включен между 5V и AL на сензора.
В Интернет можете да намерите
схема на свързване и без резистор, която ползва вътрешните pull up/down резистори на GPIO пиновете на Pi-то, но опитите да ги подкарам не бяха сполучливи и резултатите бяха малко случайни.
Ето и една примерна програмка (pir.c) за следене на резултатите от PIR-а:
#include
#include
#include
#include
#include
#define PIR_PIN 25
int main()
{
uint8_t last = 0;
// init
if (!bcm2835_init()) {
printf("Init error");
return 1;
}
bcm2835_gpio_fsel(PIR_PIN, BCM2835_GPIO_FSEL_INPT);
bcm2835_gpio_set_pud(PIR_PIN, BCM2835_GPIO_PUD_OFF);
//BCM2835_GPIO_PUD_OFF - external pull up resistor
//BCM2835_GPIO_PUD_DOWN - internal pull down
//BCM2835_GPIO_PUD_UP - internal pull up resistor
while (1)
{
time_t now;
char buffer[100];
struct tm* tm_info;
uint8_t value = bcm2835_gpio_lev(PIR_PIN);
if (last != value)
{
time(&now);
tm_info = localtime(&now);
strftime(buffer, 100, "%Y/%m/%d %H:%M:%S", tm_info);
printf("%s> ", buffer);
if (value == 1) printf("OFF"); else printf("ON");
last = value;
}
delay(500);
}
return 0;
}
За да я компилирате ще ви трябва
bcm2835 библиотеката: gcc -o pir pir.c -l bcm2835
След като я стартирате и има някакво движение ще видите нещо като:
2013/12/28 15:47:40> ON
2013/12/28 15:47:41> OFF
2013/12/28 15:49:08> ON
2013/12/28 15:49:09> OFF
2013/12/28 15:49:15> ON
2013/12/28 15:49:16> OFF
2013/12/28 15:49:17> ON
2013/12/28 15:49:18> OFF
2013/12/28 15:49:18> ON
2013/12/28 15:49:19> OFF
2013/12/28 15:49:26> ON
2013/12/28 15:49:27> OFF
ON е времето на възникване на събитието, OFF e времето в което събитието е свършило.
Някой може да си направи и алармена система вероятно :)
Е, как без снимка:
напиши нов коментар