Verifying stolen vehicles - Arduino + Ethernet / ESP32 / ESP8266 (Slovak region)

As a fan of Facebook group HAKA, I decided to make an interface using microcontrollers to verify license plates that could potentially be stolen. As a communication tool I used up to three platforms, and for each platform I made source code with the same functionality.

I used Arduino with Ethernet module (shield) Wiznet W5100 and two WiFi platforms - ESP8266 and ESP32. Since the website of the Ministry of the Interior of the Slovak Republic is under HTTP protocol, it is also possible to use the mentioned Ethernet shield, since HTTPS does not support connections, it will be sufficient for HTTP.

The principle of the program is to send the entered license plate number to the website of the Ministry of the Interior of the Slovak Republic and to derive from the webserver response whether the vehicle is stolen or not. Content of HTTP POST request is parameter - (parameter input window for license plate) with its value, in this case car license plate.

The webserver responds by listing the entire HTML page that the microcontroller can handle line by line. Based on the data that is present in the source code, we can output the output.

Program implementation:
If the license plate number is entered and the search is not declared, the webserver writes the information: "Condition satisfies: 0 records". When loading a page by line, the microcontroller verifies that it has not encountered such text. In its language, Arduino has the option of comparing whether the fetched string also contains such a string, functions for the String object, for example: indexOf. If so, I can say with 100% certainty that the car with the license plate is not stolen. I can then programmatically end the load cycle in advance, rather than loading hundreds of lines of source code.

If the vehicle is stolen, listing is a bit tricky. If the vehicle is stolen, we record the HTML program listing: "Condition satisfies: 1 record". Then, by examining the source code, we find out how a formatted vehicle statement is formatted. The listing exists in the form of an HTML table, with the element between the OUR INFORMATION tags. We also retrieve this information in one of the rows. Using the C - strok () function, we can obtain information by parsing, which is between the> and <tagging tags, based on the terminators. Using strokes requires casting a String to a character array!

However, how to correctly identify this line?
Above each line with (important to us) information is a line containing a heading for that information, for example: Vehicle type, Vehicle make, VIN code. This means that we can software expect that the next line will contain the information that we get the spomedzihtml pair tag. So we can say that by scraping the web through a microcontroller we can get the information we need about the vehicle.

System entry methods:
The system contains several input methods. It is possible to use a one-time license plate number entry into the source code for the microcontroller. It is possible to use the UART interface, or send it via RS232 license plate and automatically generate an output based on the input. (Attached Image). Or other methods - Arduino as a webserver into HTML input reads the given license plate, which is then sent, input via a touch-screen TFT display, buttons with representation on the LCD character display, etc.

After RS232 or UART it is possible to enter more license plates at the same time, which I will load from this field. License plate numbers in the field must be separated by a new line, ie \ n. Each platform has a different size of UART hardware buffers. In the case of Arduino it is 64 bytes, ESP8266 offers a 128 byte buffer, in the case of ESP32 it is possible to emulate up to 1024 byte buffer.

Since each license plate has 7 bytes, it is possible to use a field with 9 license plates at the same time for Arduino, for ESP8266 18 license plates, for ESP32 to 146. The interface also supports entering C marks or other - special registration numbers with variable length. The system response is up to 7 seconds, depending on the microcontroller. Arduino with Ethernet shield is the slowest of all supported platforms, which will also be reflected in the response time, while Arduino can only load all lines of source code (they load one by one and overwrite).

Other practical uses of this system:
The system can be easily integrated into OpenCV technology, where it is possible to retrieve license plates in real time and use HTTP to verify that the vehicle is stolen. This means that we can verify in real time whether the vehicle in front of us or in the opposite direction is stolen or its registration number. Can be used directly on the car during its operation. Alternatively, statically monitor traffic from a central location and verify individual vehicles that are on the road.

Use also in the case of various parking meters that take pictures of license plates of cars at the entrance to the parking lot. This information can be sent to the microcontroller just via the UART / RS232 interface and, based on the verification, the parking system / vendor can block the car and leave the parking lot, call the police, contact the parking manager.

More interesting projects can be found on my website: https://arduino.php5.sk/

Comments

Popular posts from this blog

Web scraper via Arduino & NodeMCU & ESP32

ESP32 control via UDP datagrams

IR RPM meter with Arduino