1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- /*
- * The MySensors Arduino library handles the wireless radio link and protocol
- * between your home built sensors/actuators and HA controller of choice.
- * The sensors forms a self healing radio network with optional repeaters. Each
- * repeater and gateway builds a routing tables in EEPROM which keeps track of the
- * network topology allowing messages to be routed to nodes.
- *
- * Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
- * Copyright (C) 2013-2018 Sensnology AB
- * Full contributor list: https://github.com/mysensors/MySensors/graphs/contributors
- *
- * Documentation: http://www.mysensors.org
- * Support Forum: http://forum.mysensors.org
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2 as published by the Free Software Foundation.
- *
- *******************************
- *
- * REVISION HISTORY
- * Version 1.0 - Henrik Ekblad
- *
- * DESCRIPTION
- * This is an example of sensors using RS485 as transport layer
- *
- * Motion Sensor example using HC-SR501
- * http://www.mysensors.org/build/motion
- *
- * If your Arduino board has additional serial ports
- * you can use to connect the RS485 module.
- * Otherwise, the transport uses AltSoftSerial to handle two serial
- * links on one Arduino. Use the following pins for RS485 link
- *
- * Board Transmit Receive PWM Unusable
- * ----- -------- ------- ------------
- * Teensy 3.0 & 3.1 21 20 22
- * Teensy 2.0 9 10 (none)
- * Teensy++ 2.0 25 4 26, 27
- * Arduino Uno 9 8 10
- * Arduino Leonardo 5 13 (none)
- * Arduino Mega 46 48 44, 45
- * Wiring-S 5 6 4
- * Sanguino 13 14 12 *
- *
- */
-
- // Enable debug prints to serial monitor
- #define MY_DEBUG
-
- // Enable RS485 transport layer
- #define MY_RS485
-
- // Define this to enables DE-pin management on defined pin
- #define MY_RS485_DE_PIN 2
-
- // Set RS485 baud rate to use
- #define MY_RS485_BAUD_RATE 9600
-
- // Enable this if RS485 is connected to a hardware serial port
- //#define MY_RS485_HWSERIAL Serial1
-
- #include <MySensors.h>
-
- uint32_t SLEEP_TIME = 120000; // Sleep time between reports (in milliseconds)
- #define DIGITAL_INPUT_SENSOR 3 // The digital input you attached your motion sensor. (Only 2 and 3 generates interrupt!)
- #define CHILD_ID 1 // Id of the sensor child
-
- // Initialize motion message
- MyMessage msg(CHILD_ID, V_TRIPPED);
-
- void setup()
- {
- pinMode(DIGITAL_INPUT_SENSOR, INPUT); // sets the motion sensor digital pin as input
- }
-
- void presentation()
- {
- // Send the sketch version information to the gateway and Controller
- sendSketchInfo("Motion Sensor", "1.0");
-
- // Register all sensors to gw (they will be created as child devices)
- present(CHILD_ID, S_MOTION);
- }
-
- void loop()
- {
- // Read digital motion value
- bool tripped = digitalRead(DIGITAL_INPUT_SENSOR) == HIGH;
-
- Serial.println(tripped);
- send(msg.set(tripped?"1":"0")); // Send tripped value to gw
-
- // Sleep until interrupt comes in on motion sensor. Send update every two minute.
- sleep(digitalPinToInterrupt(DIGITAL_INPUT_SENSOR), CHANGE, SLEEP_TIME);
- }
-
|