There is nothing groundbreaking in this mini-project, but maybe someone will find it useful. One day I decided to make animated stairs (steps) lighting. Illumination of steps sequentially up or down depending on the direction of entering the stairs. But that's not what we're talking about here. While the backlight control system was working properly, the trigger systems at the bottom and top of the flight of stairs needed development. At the beginning, the cheapest solution, i.e. PIR sensors. I will say right away that PIR in such a system is a misunderstanding. Very slow reaction time (1 - 2 seconds) and unpredictable activation zone. You can climb up to three steps in two seconds. I could not set it in any way, the more so that about 1 m from the stairs there is a home communication route. The next idea was an IR barrier. Amazing reaction speed. As far as I remember about 3ms from beam interruption. The disadvantage of this solution (at least in my case) was the placement of the transmitter and receiver on opposite sides of the entrance to the stairs. And finally I found a solution that is a compromise of response time and quite precise setting of object detection. Laser reflective sensor. The module takes about 50 measurements per second. This is sufficient to quickly start the lighting control system.
System description: The VL53L1x laser module in this case works in the "short" mode (catalogue note) with a maximum range of 135 cm and communicates with the ESP03 via the I2C bus. The latter receives data about the measured distance and, based on them, sends a low or high state to the output. ESP in AP (configuration) mode is used to set the operating distance in real time, which facilitates calibration after installation of the system at the final location. Of course, the system can be extended with additional functions. Here is the basic version.
The waveform at the GPIO01 VL53L1x output. Low status informs about the completed measurement.
I often forgot myself, so if I sit for more than 50 minutes, the system reminds me to take a break. Similarly, sitting in an unhealthy position, too close to the screen for a long time also causes an alarm The data from this sensor also includes other scripts for controlling lighting, power supply in other rooms, etc.
Very cool idea with configuration via the browser. I once faced a similar problem. The solution for me were ultrasonic sensors HC-SR04. They are subordinated in a box soldered from a laminate oiled with veneer. The ATtiny85 handles the sensor. The operating range is set from 20 cm to 80 cm. It's been doing this for 3 years.
A question for the author, maybe a very layman's one. How to make such a configuration page? Are there any generators for this?
I haven't heard of such GUI generators, but maybe there are The keywords for such a menu are html, CSS and if the page is to be interactive in real time, also Ajax. In other words, sending data from the page to the device without refreshing the entire page. For example, you click a button and it causes the LED in the device to light up, or some other operation. In this case, the displayed page is the file "configuration_sensor.h". After changing the extension to *html, you can view it in a web browser. This is typical html with a changed extension. Once I wrote such a fairly universal code and I change it as needed. Note that I am an amateur and I can probably do better. On ESP, use the ESP8266WebServer.h library. I suggest you trace the link between the website code and the device code. It can be a bit confusing at first , but with time you can master it and make your own template for different devices. Look at the design of an NTP clock or weather station. The menu is graphically identical, only the functions are different. And with such a GUI there is a bit of a paradox, because it almost always takes up more code than the device code