pxbee-trigger
-
The project uses Programmable XBee connected to a relay. When appropriate signal is received, the relay is operated for 125ms signaling the connected device to operate. To control this device through iPhone "Home" app the following full setup is used:
graph LR iPhone --> Apple[Apple Servers] Apple --> Home[Home Router] Home --> AppleTV AppleTV -->RaspberryPi RaspberryPi --> XBee[XBee Coordinator] XBee --> XBee-TriggerPotentially with SmartThings:
graph LR iPhone --> STServers[SmartThings Servers] STServers --> Home[Home Router] Home --> SmartThings SmartThings --> XBee-TriggerFor the latter flow to work, the XBee-Trigger would need to operate as a standard ZigBee HA device so that it would successfully pair with SmartThings Hub. Some additional discovery work is needed to understand what is needed to make this work.
-
4 channel relay circuit driven by pxbee-trigger
BOM
Standard 3.5 width headers are used. Option A) uses pluggable termination; Fixed screw termination; Components can be easily switched with other termination blocks or use direct wire soldering.
Power consumption / characteristics
- Relay 110mW
- XBee ~ 400mW +14mA ~= 450mW
- DI / DO 4mA with total of 40mA
- Output 13mW @ 3.3V
Switching transistor circuit
The digital output pin power of XBee will be insufficient to drive the general purpose relay. A switching transistor circuit will be used to drive the relay.\(\raisebox{0.25em}{1}\)
- \(V_s =\) Load Supply Voltage
- \(R_L =\) Load Resistance (APAN03 Coil resistance)
- \(I_c =\) Load Current \(= V_s / R_L\)
- \(I_{IC} =\) Maximum Output current from Integrated Circuit - 4mA
Due to the fact that the switched load consists a coil, a protection diode is required in the circuit.
Transistor properties
- Transistor's maximum collector current \(I_{c_{max}}\) must be greater than Load current:
I_{c_{max}} > \frac{\text{Supply Voltage } V_s}{\text{Load Resistance } R_L}\Longrightarrow 100mA > \frac{3.3V}{82\Omega} \approxeq 40.24mA \Longrightarrow 100mA > 40.24mA \Longrightarrow \textcolor{#228B22}{OK!}
- Transistor's minimum current gain \(h_{FE{min}}\) must be at least 5 times the load current \(I_c\) divided by the maximum output urrent from the Integrated Circuit:
h_{FE{min}} > 5 \cdot \frac{I_c}{I_{IC}} \Longrightarrow 110 > 5 \cdot \frac{0.040243902}{0.004} \Longrightarrow 110 > 50.3048775 \Longrightarrow \textcolor{#228B22}{OK!}
Resistor properties
The transistor switch circuit relies on a single resistor which is sized as follows.
R_B = 0.2 \cdot R_L \cdot h_{FE} \Longrightarrow0.2 \cdot 82 \cdot 110 = 1804 \Omega \Longrightarrow \textcolor{#228B22}{1k8}
User interfaces - Door opener
Altough the trigger hardware is generic to drive different use-cases, the userland should have more precise functionality. As main use case, the trigger will be used to drive swing and sliding gates.
BFT Thalia P controller
AUX 2 (Pins 24 & 25) - Free Contact; NO; Gate open light as default.
Assumption is here, that when gate is closed, the contact remains open and closes when the gate is opened.
For our project, it means that the STATUS GPIO acts as:
- Closed state = GPIO pin = 1
- Opened state = GPIO pin = 0
SmartThings
General reference
Icon library reference: http://scripts.3dgo.net/smartthings/icons/
Door opener DH
SmartThings does not work nicely with different endpoints. A custom Device Handler (DH) must be written to have proper functioning tiles but operate as a single device:
- Main toggle switch (endpoint 0xEA, 0x0006)
- Open gate (endpoint 0xEB, cluster 0x0006)
- Close gate (endpoint 0xEC, cluster 0x0006)
- Open pedestrian (endpoint 0xED, cluster 0x0006)
Binary Input Cluster (0x000F)
On endpoints 0xEA and 0EB, a status indicator can be queried (XBee in 18 and Pin 19), default state is OPEN
On state change send the: 0x0055 (Present value attribute), bool
Report Attributes (0x0A) command to target cluster 0x0001Pin layout
PIN Assignment Notes 1 GND Common for Input pins 2 STATUS_1 Input 3 STATUS_2 Input 4 COMMON 1 Relays 1 & 2 5 ACT 1 Relay 1 6 ACT 2 Relay 2 7 COMMON 2 Relays 3 & 4 8 ACT 3 Relay 3 9 ACT 4 Relay 4 References
1: Transistor Circuits - https://electronicsclub.info/transistorcircuits.htm
2: SmartThings Classic - ZigBee Reference - https://docs.smartthings.com/en/latest/ref-docs/zigbee-ref.html#zigbee-ref
3: Undocumented SmartThings Classic ZigBee Reference - https://community.smartthings.com/t/zigbee-something-commands-reference/110615/5 -
Useful Eagle commands:
grid mm
grid mil
run length
via 'gnd'
ratsnest
ripup @;
- Changes routed wires back to airwires for all polygons (Usually GND plane)
-
Apparently the 24VAC to DC circuit does not work correctly because the DC/DC conversion to 3.3V doesn't seem to properly work. Is the full bridge rectifier with wrong specs? https://rayshobby.net/wordpress/24vac-to-5vdc-conversion/
Ok, some clarity is beginning to form around where I went wrong... ouch.
Simulators
- http://lushprojects.com/circuitjs/circuitjs.html
- http://www.spectrum-soft.com/download/download.shtm
Signal strength
RSSI - Receiver Signal Strength Indication
LQI - Link Quality IndexEDGE interrupt for HIGH and LOW (gpio.c):
#ifdef KBI1PE_KBIPE3_XPIN #ifdef KBI1PE_KBIPE3_XPIN /* XPIN_19 */ if (irqcandidate & 0x08) { if (kbimod1_reg & 0x08) { KBI1ES_KBEDG3 = !KBI1ES_KBEDG3; if (~(kbi1_val ^ kbiedg1_reg) & 0x08) if (~(kbi1_val ^ kbiedg1_reg) & 0x08) { /* Edge irq on active slope */ puts("IRQ EDGE: Active slope"); gpio_irq_handler_KBI1PE_KBIPE3_XPIN(); } else { puts("IRQ EDGE: Inactive slope"); } } else { gpio_irq_handler_KBI1PE_KBIPE3_XPIN(); /* Level irq */ } } #endif
-
Moving from Eagle to Fusion 360
Migration video: https://www.youtube.com/watch?v=tClWJg8zxZc
Benefits of the Fusion 360
- F allows one schematic to reference multiple board layouts! e.g. TH vs SMD?