Enrico Marinoni
/
F011K4_PanPIR
PIR sensor based on: NUCLEO-L011K4 + PANASONIC PIR EKMC1603111
main.cpp@0:39600c1c28c1, 2018-04-01 (annotated)
- Committer:
- emcu
- Date:
- Sun Apr 01 22:11:36 2018 +0000
- Revision:
- 0:39600c1c28c1
PIR sensor based on: NUCLEO-L011K4 + PANASONIC PIR EKMC1603111
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
emcu | 0:39600c1c28c1 | 1 | #include "mbed.h" |
emcu | 0:39600c1c28c1 | 2 | |
emcu | 0:39600c1c28c1 | 3 | /* |
emcu | 0:39600c1c28c1 | 4 | |
emcu | 0:39600c1c28c1 | 5 | By: www.emcu.eu |
emcu | 0:39600c1c28c1 | 6 | Date: April 2018 |
emcu | 0:39600c1c28c1 | 7 | Components: NUCLEO-L011K4 + PANASONIC PIR EKMC1603111 |
emcu | 0:39600c1c28c1 | 8 | Connections: |
emcu | 0:39600c1c28c1 | 9 | |
emcu | 0:39600c1c28c1 | 10 | PIR VCC -> PB_4 |
emcu | 0:39600c1c28c1 | 11 | PIR Signal -> PB_5 |
emcu | 0:39600c1c28c1 | 12 | PIR GND -> PA_11 |
emcu | 0:39600c1c28c1 | 13 | |
emcu | 0:39600c1c28c1 | 14 | Buzzer Vcc -> PA_9 |
emcu | 0:39600c1c28c1 | 15 | Buzzer GND -> GND of NUCLEO-L011K4 |
emcu | 0:39600c1c28c1 | 16 | |
emcu | 0:39600c1c28c1 | 17 | ATTENTION: |
emcu | 0:39600c1c28c1 | 18 | For use the NUCLEO-L011K4 with an external power supply, you must do a tin soldering on JP1. |
emcu | 0:39600c1c28c1 | 19 | See the NUCLEO-L011K4 datasheet at pg.11 |
emcu | 0:39600c1c28c1 | 20 | http://www.st.com/content/ccc/resource/technical/document/user_manual/e3/0e/88/05/e8/74/43/a0/DM00231744.pdf/files/DM00231744.pdf/jcr:content/translations/en.DM00231744.pdf |
emcu | 0:39600c1c28c1 | 21 | |
emcu | 0:39600c1c28c1 | 22 | NUCLEO-L011K4 is available from here: |
emcu | 0:39600c1c28c1 | 23 | *** http://www.newark.com/stmicroelectronics/nucleo-l011k4/dev-board-nucleo-32-mcu/dp/81Y3973?ost=NUCLEO-L011K4&ddkey=http%3Aen-US%2FElement14_US%2Fsearch |
emcu | 0:39600c1c28c1 | 24 | *** https://www.mouser.it/ProductDetail/STMicroelectronics/NUCLEO-L011K4?qs=%2fha2pyFaduhQJSbhHAGqiYkL%252bo2vgvfhlGVOMPt1G42J4HVOM%2fj23Q%3d%3d |
emcu | 0:39600c1c28c1 | 25 | |
emcu | 0:39600c1c28c1 | 26 | PANASONIC PIR EKMC1603111 is available from here: |
emcu | 0:39600c1c28c1 | 27 | *** http://www.newark.com/panasonic-electric-works/ekmc1603111/pir-motion-sensor-digital-3vdc/dp/26T3945 |
emcu | 0:39600c1c28c1 | 28 | *** https://www.mouser.it/ProductDetail/Panasonic/EKMC1603111/?qs=sGAEpiMZZMvhQj7WZhFIAJaM7IUEh%252bHgM6uLDBL6vt0=&gclid=Cj0KCQjwhoLWBRD9ARIsADIRaxR7KH6LCSsPG5aDS1dEvlALL-ijmg-nd1XuzC_C1-15QGecG8rKbckaAn7AEALw_wcB |
emcu | 0:39600c1c28c1 | 29 | |
emcu | 0:39600c1c28c1 | 30 | |
emcu | 0:39600c1c28c1 | 31 | */ |
emcu | 0:39600c1c28c1 | 32 | |
emcu | 0:39600c1c28c1 | 33 | DigitalOut myled(LED1); |
emcu | 0:39600c1c28c1 | 34 | DigitalOut Buzzer(PA_9); // Drive Buzzer |
emcu | 0:39600c1c28c1 | 35 | |
emcu | 0:39600c1c28c1 | 36 | // Drive PIR |
emcu | 0:39600c1c28c1 | 37 | DigitalOut PIU(PB_4); |
emcu | 0:39600c1c28c1 | 38 | DigitalOut GND(PA_11); |
emcu | 0:39600c1c28c1 | 39 | DigitalIn ReadPIR(PB_5); // READ PIR status |
emcu | 0:39600c1c28c1 | 40 | |
emcu | 0:39600c1c28c1 | 41 | |
emcu | 0:39600c1c28c1 | 42 | |
emcu | 0:39600c1c28c1 | 43 | uint8_t n=0; |
emcu | 0:39600c1c28c1 | 44 | |
emcu | 0:39600c1c28c1 | 45 | int main() |
emcu | 0:39600c1c28c1 | 46 | { |
emcu | 0:39600c1c28c1 | 47 | Buzzer = 0; |
emcu | 0:39600c1c28c1 | 48 | myled = 0; |
emcu | 0:39600c1c28c1 | 49 | |
emcu | 0:39600c1c28c1 | 50 | // Configure PIR SIGNAL, GND and VCC |
emcu | 0:39600c1c28c1 | 51 | ReadPIR.mode(PullDown); |
emcu | 0:39600c1c28c1 | 52 | GND=0; |
emcu | 0:39600c1c28c1 | 53 | wait(0.5); |
emcu | 0:39600c1c28c1 | 54 | PIU=1; |
emcu | 0:39600c1c28c1 | 55 | wait(0.5); |
emcu | 0:39600c1c28c1 | 56 | |
emcu | 0:39600c1c28c1 | 57 | // Waiting PIR stabilization |
emcu | 0:39600c1c28c1 | 58 | for (n=0; n<15; n++) |
emcu | 0:39600c1c28c1 | 59 | { |
emcu | 0:39600c1c28c1 | 60 | myled = !myled; |
emcu | 0:39600c1c28c1 | 61 | wait(1); |
emcu | 0:39600c1c28c1 | 62 | } |
emcu | 0:39600c1c28c1 | 63 | myled = 0; |
emcu | 0:39600c1c28c1 | 64 | |
emcu | 0:39600c1c28c1 | 65 | while(1) |
emcu | 0:39600c1c28c1 | 66 | { |
emcu | 0:39600c1c28c1 | 67 | // Check PIR status |
emcu | 0:39600c1c28c1 | 68 | if (ReadPIR == 1) // PIR out at 1 == was detect a movement |
emcu | 0:39600c1c28c1 | 69 | { |
emcu | 0:39600c1c28c1 | 70 | for (n=0; n<20; n++) |
emcu | 0:39600c1c28c1 | 71 | { |
emcu | 0:39600c1c28c1 | 72 | Buzzer = !Buzzer; |
emcu | 0:39600c1c28c1 | 73 | myled = !myled; |
emcu | 0:39600c1c28c1 | 74 | wait(0.1); // 100 ms |
emcu | 0:39600c1c28c1 | 75 | } |
emcu | 0:39600c1c28c1 | 76 | } |
emcu | 0:39600c1c28c1 | 77 | else // No movement |
emcu | 0:39600c1c28c1 | 78 | { |
emcu | 0:39600c1c28c1 | 79 | Buzzer = 0; |
emcu | 0:39600c1c28c1 | 80 | myled = 0; |
emcu | 0:39600c1c28c1 | 81 | } |
emcu | 0:39600c1c28c1 | 82 | } |
emcu | 0:39600c1c28c1 | 83 | } |