- Wiring ist einfach, man muß eigentlich nur wissen, dass DE und RE zu verbinden sind und zusammen auf Arduino-Pin-D2 gehen, RO nach Arduino-D8 und DI nach Arduino-D9, VCC, GND.
Wollte mal den Urlaub creativ nutzen, komme aber nicht so recht voran.
Ich habe Platinchen bekommen für den MAX487 /SMD. Nachdem das nicht läuft habe ich das ganze nochmals etwas gröber aufgebaut.
Was läuft:
-Kleine Testumgebung mit Gateway+Motionsensor auf jeweils Arduino Nano. Die unterhalten sicht prächtig und ich kann z.B. Beim Einschalten sehen dass die Spannung auf A+B hochgeht (das Oszi oder Logic-Analalyzer würde den Inhalt zeigen)
Nicht läuft:
-identischer Aufbau, aber Pro-Mini mit 8MHz (Takt in Arduino richtig eingestellt, Spannung 3,3 oder 5V, Node-ID Manuell vergeben, Debug mit 115200 Baud klappt)
(-das ganze mit dem MAX487/SMD verghält sich gleich)
Es tut sich m.E. gar nichts auf dem RS485 Bus. (Somit scheint es ja wohl ein Problem mit D8,9 oder D2 zu geben?)
Oder was könnte ich sonst übersehen haben ?
0 MCO:BGN:INIT NODE,CP=RSNNA--,VER=2.1.1
4 TSM:INIT
4 TSF:WUR:MS=0
6 TSM:INIT:TSP OK
8 TSM:INIT:STATID=111
10 TSF:SID:OK,ID=111
12 TSM:FPAR
30 TSF:MSG:SEND,111-111-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
2039 !TSM:FPAR:NO REPLY
2041 TSM:FPAR
2060 TSF:MSG:SEND,111-111-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
4069 !TSM:FPAR:NO REPLY
4071 TSM:FPAR
4089 TSF:MSG:SEND,111-111-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
6100 !TSM:FPAR:NO REPLY
6103 TSM:FPAR
6121 TSF:MSG:SEND,111-111-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
8130 !TSM:FPAR:FAIL
8132 TSM:FAIL:CNT=1
8134 TSM:FAIL:PDT
18137 TSM:FAIL:RE-INIT
18139 TSM:INIT
18141 TSM:INIT:TSP OK
18143 TSM:INIT:STATID=111
18145 TSF:SID:OK,ID=111
18147 TSM:FPAR
18165 TSF:MSG:SEND,111-111-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
20174 !TSM:FPAR:NO REPLY
20176 TSM:FPAR
20195 TSF:MSG:SEND,111-111-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
22204 !TSM:FPAR:NO REPLY
22206 TSM:FPAR
22224 TSF:MSG:SEND,111-111-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
24236 !TSM:FPAR:NO REPLY
24238 TSM:FPAR
24256 TSF:MSG:SEND,111-111-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
26265 !TSM:FPAR:FAIL
26267 TSM:FAIL:CNT=2
26269 TSM:FAIL:PDT
Im Sketch habe ich nur die Node-ID ergänzt:
**
* 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-2015 Sensnology AB
* Full contributor list: https://github.com/mysensors/Arduino/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
#define MY_NODE_ID 111
// Enable this if RS485 is connected to a hardware serial port
//#define MY_RS485_HWSERIAL Serial1
#include <MySensors.h>
unsigned long 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);
}