»Начало 
Raspberry Pi и PIR


Raspberry Pi и PIR


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 времето в което събитието е свършило.

Някой може да си направи и алармена система вероятно :)


Е, как без снимка:





Коментари

Все още няма коментари


напиши нов коментар
Какво е това?

Това трябва да бъде нещо като микро блог или просто начин да записвам разни кратки мисли, идеи, линкове и т.н.

Към всеки пост може да има "закачени" следните елементи:

  Линк към страница
  Прикачена картинка
  Прикачен видео файл
Показва времето на публикуването, заедно с линк към страницата с поста и коментарите
2.4HGz OFF / 5GHz Only ON
bye bye Debian ... apt-get dist-upgrade може да деинсталира ядро :) E ... крайно време беше да го разкарам това недоразумение :)
drWEB Live CD е Gentoo базирано - well done!
Като едно време ... 3.11

Linux notebook 3.11.0-gentoo-dr #1 SMP PREEMPT Tue Sep 3 22:17:44 EEST 2013 i686 Intel(R) Core(TM)2 CPU T7200 @ 2.00GHz GenuineIntel
вчера 3.6.4, днеска 3.6.5 ... така е то ...
не искам глупави thumbail-и от firefox ПЪК! browser.pagethumbnails.capturing_disabled = true
... напоследък дори журналистите имат проблем с разбиране на написаното ...
Мързи ме да напиша около 20 реда код вече ... 10 дни ...
noteX31 ~ # uptime
23:12:42 up 1016 days, 14:39, 2 users, load average: 1.45, 0.64, 0.24
4:30 поздрава за всички, които отърваха Ugly Kid Joe :P
нЕкви хора си правят нЕкъв PR ... и разказват, че станали жертви ...
noteX31 ~ # uptime
10:36:05 up 939 days, 2:03, 4 users, load average: 0.11, 0.66, 0.52
... като не си гледаш разните странни E-Mail-и като например hostmaster@... ти изтича SSL сертификата ...
stretch
stretch
stretch
stretch
interoffice
interoffice
interoffice
interoffice