Project is not available for free download! If you are interested in purchasing the software part of the project with the functionality described on the given page, contact: martinius96@gmail.com
Arduino ESP8266 ESP32 Minv Ethernet WiFi Web scraper Parser ŠPZ, EVČ, VIN HTTP POST

Vehicle verification - license plate / VIN number


HAKA fan project - Hľadá sa auto krádeže automobilov
  • Vehicle verification via the website of the Ministry of the Interior of the Slovak Republic using a microcontroller.
  • The vehicle may be verified on the basis of the following parameters:
  • Plate (Vehicle registration number)
  • VIN (Vehicle identification number)

  • According to the selected verification parameter, the searched information is then sent to the website of the Ministry of the Interior of the Slovak Republic.
  • The page contains a database of reported stolen vehicles for which a search is declared.
  • Information (license plate / VIN) is sent by HTTP POST request. The server will respond with the source code (HTML) of the entire page.
  • The Arduino / ESP development board processes the source code of the entire page and verifies that the vehicle is in search based on its content.
  • The microcontroller in the source code looks for information on the number of records found for a given VIN number - it parses individual lines of the source code.
  • If there are 0, the vehicle is not in search. If the record is 1 or more, the vehicle is in search.
  • The free version contains only a listing of the wanted vehicle with information whether or not it is in search. Input method - license plate / VIN directly in the source code.
  • The paid version contains in addition to the statement whether or not there is other information about the make of the vehicle, model, (VIN number / license plate - opposite information as the searched parameter), the color of the vehicle, the date of theft. Input method - UART / RS232, I2C, SPI, WiFi webserver, buttons + display.
  • Other uses of the software - application examples:

  • OpenCV - real-time license plate recognition followed by verification. Ovládanie kúrenie hlasom v slovenčine
  • Real-time license plate recognition by implementing 1-bit image on ESP32 / ESP8266 platform with camera module OV7670, OV2640.
  • Interaction with external system with the function of taking pictures and converting license plates into characters, eg: Dahua IDE. The captured license plate number can be forwarded to the microcontroller via the WiFi / UART / RS232 / I2C / SPI communication interface. The microcontroller verifies the license plate number and, based on the response from the webserver, can block the vehicle in the parking lot, call the police, report the information to the superior system.
  • Program output - Free version

    Vozidlo v pátraní - Arduino + Ethernet - HAKA

    Program output - Paid version

    Vozidlo v pátraní - platená verzia - Arduino + Ethernet - HAKA

    License plate / VIN entry methods:

  • WiFi / Ethernet
  • UART / RS232
  • SPI / I2C
  • Display buttons
  • Supported Microcontrollers

  • Arduino + Ethernet shield Wiznet W5100 / W5500
  • ESP8266 (NodeMCU, Wemos D1 Mini)
  • ESP32 (Devkit)
  • Source codes - Free Version - only include license plate verification:


    Arduino + Ethernet W5100


    /*|----------------------------------------------------------|*/
    /*|OVERENIE ŠPZ - Arduino + Ethernet W5100                   |*/
    /*|Author: Bc. MARTIN CHLEBOVEC                              |*/
    /*|EMAIL: martinius96@gmail.com                              |*/
    /*|DONATE: https://paypal.me/chlebovec                       |*/
    /*|----------------------------------------------------------|*/
    #include <SPI.h>
    #include <Ethernet.h>
    
    byte mac[] = { 0xAA, 0xBB, 0xCC, 0xAA, 0xBB, 0xCC };
    IPAddress ip(192, 168, 1, 200);
    IPAddress gateway(192, 168, 1, 1);
    char serverName[] = "www.minv.sk"; //doména Ministerstva vnútra SR
    String my_datas = "BAXXXZZ"; //Hľadané EČV --> Možno hľadať aj C značky
    int serverPort = 80;
    EthernetClient client;
    String url = "/?odcudzene-mot-vozidla";
    void setup() {
      Serial.begin(115200);
      Ethernet.begin(mac);
      Serial.println("IP adresa Ethernet shieldu:");
      Serial.println(Ethernet.localIP());
      delay(2000);
      Serial.println("Ready");
      send_datas();
    }
    
    void send_datas() {
      String data = "ec=" + my_datas;
      if (client.connect(serverName, serverPort)) {
        client.println("POST " + url + " HTTP/1.0");
        client.println("Host: " + (String)serverName);
        client.println("User-Agent: ArduinoEthernetWiznet");
        client.println("Connection: close");
        client.println("Content-Type: application/x-www-form-urlencoded;");
        client.print("Content-Length: ");
        client.println(data.length());
        client.println();
        client.println(data);
        while (client.connected()) {
          String line = client.readStringUntil('\n');
          if (line.indexOf("Podmienke vyhovuje: 1 záznam") > 0) {
            Serial.println("Po vozidle s EČV " + my_datas + " je vyhlásené pátranie! Kontaktujte políciu na čísle 158!");
            break;
          }
          if (line.indexOf("Podmienke vyhovuje: 0 záznamov") > 0) {
            Serial.println("Po vozidle s EČV " + my_datas + " nie je vyhlásené pátranie");
            break;
          }
        }
    
      } else {
        Serial.println("Problem s pripojenim na stránku Ministerstva vnútra Slovenskej republiky!");
      }
      client.stop();
    }
    
    void loop() {
    
    }
    

    ESP8266 (NodeMCU, Wemos D1 Mini)


    /*|----------------------------------------------------------|*/
    /*|OVERENIE ŠPZ - ESP8266 (NodeMCU)                          |*/
    /*|Author: Bc. MARTIN CHLEBOVEC                              |*/
    /*|EMAIL: martinius96@gmail.com                              |*/
    /*|DONATE: https://paypal.me/chlebovec                       |*/
    /*|----------------------------------------------------------|*/
    #include <ESP8266WiFi.h>
    
    const char * ssid = "WIFI_MENO";
    const char * password = "WIFI_HESLO";
    
    const char* host = "www.minv.sk";
    String my_datas = "BAXXXZZ"; //Hľadané EČV --> Možno hľadať aj C značky
    const int serverPort = 80; //http port
    WiFiClient client;
    String url = "/?odcudzene-mot-vozidla";
    
    void setup() {
      Serial.begin(115200);
      WiFi.begin(ssid, password);
      while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
      }
      Serial.println("");
      Serial.println("WiFi uspesne pripojene");
      Serial.println("IP adresa: ");
      Serial.println(WiFi.localIP());
      delay(2000);
      Serial.println("Ready");
      send_datas();
    }
    void send_datas() {
      String data = "ec=" + my_datas;
      if (client.connect(host, serverPort)) {
        client.println("POST " + url + " HTTP/1.0");
        client.println("Host: " + (String)host);
        client.println("User-Agent: ESP32");
        client.println("Connection: close");
        client.println("Content-Type: application/x-www-form-urlencoded;");
        client.print("Content-Length: ");
        client.println(data.length());
        client.println();
        client.println(data);
        while (client.connected()) {
          String line = client.readStringUntil('\n');
          if (line.indexOf("Podmienke vyhovuje: 1 záznam") > 0) {
            Serial.println("Po vozidle s EČV " + my_datas + " je vyhlásené pátranie! Kontaktujte políciu na čísle 158!");
            break;
          }
          if (line.indexOf("Podmienke vyhovuje: 0 záznamov") > 0) {
            Serial.println("Po vozidle s EČV " + my_datas + " nie je vyhlásené pátranie");
            break;
          }
        }
    
      } else {
        Serial.println("Problem s pripojenim na stránku Ministerstva vnútra Slovenskej republiky!");
      }
      client.stop();
    }
    void loop() {
    
    }
    

    ESP32 (Devkit)


    /*|----------------------------------------------------------|*/
    /*|OVERENIE ŠPZ - ESP32 (Devkit)                             |*/
    /*|Author: Bc. MARTIN CHLEBOVEC                              |*/
    /*|EMAIL: martinius96@gmail.com                              |*/
    /*|DONATE: https://paypal.me/chlebovec                       |*/
    /*|----------------------------------------------------------|*/
    #include <WiFi.h>
    
    const char * ssid = "WIFI_MENO";
    const char * password = "WIFI_HESLO";
    
    const char* host = "www.minv.sk";
    String my_datas = "BAXXXZZ"; //Hľadané EČV --> Možno hľadať aj C značky
    const int serverPort = 80; //http port
    WiFiClient client;
    String url = "/?odcudzene-mot-vozidla";
    
    void setup() {
      Serial.begin(115200);
      WiFi.begin(ssid, password);
      while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
      }
      Serial.println("");
      Serial.println("WiFi uspesne pripojene");
      Serial.println("IP adresa: ");
      Serial.println(WiFi.localIP());
      delay(2000);
      Serial.println("Ready");
      send_datas();
    }
    void send_datas() {
      String data = "ec=" + my_datas;
      if (client.connect(host, serverPort)) {
        client.println("POST " + url + " HTTP/1.0");
        client.println("Host: " + (String)host);
        client.println("User-Agent: ESP32");
        client.println("Connection: close");
        client.println("Content-Type: application/x-www-form-urlencoded;");
        client.print("Content-Length: ");
        client.println(data.length());
        client.println();
        client.println(data);
        while (client.connected()) {
          String line = client.readStringUntil('\n');
          if (line.indexOf("Podmienke vyhovuje: 1 záznam") > 0) {
            Serial.println("Po vozidle s EČV " + my_datas + " je vyhlásené pátranie! Kontaktujte políciu na čísle 158!");
            break;
          }
          if (line.indexOf("Podmienke vyhovuje: 0 záznamov") > 0) {
            Serial.println("Po vozidle s EČV " + my_datas + " nie je vyhlásené pátranie");
            break;
          }
        }
    
      } else {
        Serial.println("Problem s pripojenim na stránku Ministerstva vnútra Slovenskej republiky!");
      }
      client.stop();
    }
    void loop() {
    
    }