Generic - Pulse counter NORMAL



The ESP8266 module can be used as an general purpose digital pulse counter device for various digital sensors. Think about optical sensors with a digital output. To be used for things like gas, water, electricity, door open/close counters, etc.

In this example we will connect an optical sensor. Connect the digital output to a GPIO pin on the ESP module.

  • IR emitter + phototransistor (for ex. water/electricity meters)

  • Distance


ESP                TCR5000
GPIO (14)   <-->   S

5.0V        <-->   V+
GND         <-->   G




Only task number 1..4 is currently supported for the pulse plugin!

Task settings

  • Device: Name of plugin

  • Name: Name of the task (example name PowerMeter)

  • Enable: Should the task be enabled or not


  • GPIO <– Pulse: Pulse input is generally set to GPIO 14 (D5).

  • Debounce time: Debounce time is generally set to 100.

  • Counter type: In this example the type is set to Delta/Total/Time.

  • Mode type: Pulse input is generally set to Falling

    LOW = count when signal go from not low to low (0.8+V to 0.8-V)

    CHANGE = count on signal being changed, low to high (0.8-V to 2.4+V) or high to low (2.4+V to 0.8-V)

    RISING = count if signal is rising, from low to not low (0.8-V to 0.8+V)

    FALLING = count if signal is falling, from high to not high (2.4+V to 2.4-V)


GPIO 16 (D0) is not compatible with pulse counters.

Data acquisition

  • Send to controller 1..3: Check which controller (if any) you want to publish to. All or no controller can be used.

  • Interval: How often should the task publish its value (5..15 seconds is normal).

Rules examples

On PowerMeter#W Do
 If [PowerMeter#W]>1500
   NeoPixelAll,255,0,0 //using too much energy!
   NeoPixelAll,0,255,0 //good job, low energy consumption

Where to buy




Link 1 ($)


Link 2 ($)


Link 3 ($)

$ = affiliate links which will give us some money to keep this project running, thank you for using those.

More pictures


A really nice feature of SOME digital pulse counters is the small red led diode which flash for each detected pulse. Using the adjustment wheel you can fine tune the detection level which makes the device really robust and withstand unwanted signals from the outside. Turn the wheel until the red led light shines constantly and then turn it back slowly until it start to detect pulses, this is the level you want to have.

../_images/P003_TCR5000_3.jpg ../_images/P003_TCR5000_4.jpg

It is sometimes good to mask the LED used to measure distance/pulses since the reflection could trigger a pulse.