Components
- Zigbee module: this example uses the Ebyte E18 module. You may use any board containing CC2530 (for example, E18-MS1PA2, E18-MS1PA2-IPX, E18-2G4Z27SI, or E18-TBH-27 USB Test Board).
- PIR sensor: This simple analog HC SR501 PIR sensor uses 3.3V voltage. The “OUT” signal line has 3.3V when the sensor detects movement and 0V when a signal is off.
- Power supply: CC2530 and E18 require 3.3V voltage.
Schematic

Breadboard

Firmware configuration

Please note the board type. You should select your variant here:
CC2530 – select it for simple E18.
CC2530+RFX2401 – for E18-MS1PA2, E18-MS1PA2-IPX, E18-2G4Z27SI, or E18-TBH-27.
How it works
The sensor detects movements and raises a signal on the “OUT” line to the high state (3.3V). The firmware interprets this signal level as a pressed button. Because the sensor can hold the high state for a long time, the “switch” mode is selected. The firmware links an input to a virtual output on a virtual (non-existent) pin (CC2530 virtual pins: P30 – P37). It allows you to get the ON (move) and OFF (no movements) states in a home automation system.
You can use any unused pins in this application.
Anxo
Hi! I’d like to build a similar project to this one, adding a relay to turn on a light when the sensor gets triggered. But I’d also like to ignore the sensor during the day.
I know I can have the input and output detached, and have the controller decide when to trigger the output, but it would be great if I could link it directly, just having a virtual “inhibitor switch” that I can turn on/off from the controller. Is this posible?
nakaconsan
Hi, I’ve downloaded the firmware configuration gui, but it saves as ini. How can the setting convert to bin when using objcopy.exe from hex? sorry for such an elementary question and looking forward to your reply. Thanks!
Owner
The program should save HEX when you click the “Save” button.
nakaconsan
Got it. just realised two saves are different. Really appreciated your help.
TL
Is P00 GPIO connected to +3.3V via a 4700 Ohm resistor?
Owner
You do not need this resistor. The firmware uses the internal pull-down resistor.