If you where using the Version 1 of the watermeter you can easily transfer the configuration to the new system by following the steps in this migration description
+If you where using the Version 1 of the water meter you can easily transfer the configuration to the new system by following the steps in this migration description
The principle is very simple and can most easily be described as a flow of processing steps. Each step has a dedicated parameter description in the config.ini, which is indicated by brackets [name_of_step]. The steps are processed in the order written in the config file. That means, that you first have to describe the image taking, then the aligning and cutting and only after that you can start to config a neural network. The last step is the post processing.
diff --git a/Correction Algorithm/index.html b/Correction Algorithm/index.html
index 7750c2d..b0ea69b 100644
--- a/Correction Algorithm/index.html
+++ b/Correction Algorithm/index.html
@@ -90,7 +90,7 @@
Configuration
- Analog/Digital Transition on Watermeters
+ Analog/Digital Transition on Water Meters
Collect images to improve the models
@@ -160,12 +160,12 @@
- Asorted Pages
+ Assorted Pages
Graphical Configuration
@@ -216,9 +216,9 @@
Analogs
This are value derived from a pointer like meter. This never has the state "N".
CheckDigitIncreaseConsistency
-If this is enabled an "inteligent" algorithm is used to derive from zero-crossing of discrete digit positions, if the number should have been increased. This is relevant because in some of the digit meters, the increase of a digit to the next number can be seen, before the subdigit has gone through zero.
+If this is enabled an "intelligent" algorithm is used to derive from zero-crossing of discrete digit positions, if the number should have been increased. This is relevant because in some of the digit meters, the increase of a digit to the next number can be seen, before the sub-digit has gone through zero.
For example: 16.6 --> 16.7 --> 1N.8 --> 17.9 corrected to 16.9 --> 17.0 --> 17.1
-As you can see, the 17.9 is a false reading as the 7 is assumed to be already readable, although the subdigit has not crossed the zero. In this case the CheckDigitIncreaseConsistency algorithm will correct this to 16.9
+As you can see, the 17.9 is a false reading as the 7 is assumed to be already readable, although the sub-digit has not crossed the zero. In this case the CheckDigitIncreaseConsistency algorithm will correct this to 16.9
A detailed description of the algorithm can be found below (not yet ready!)
Negative Rate allowed
Most of the meters only have increasing numbers and do not count backwards. Therefore a negative rate (= negative change compared to the PreValue) is surely a false value. This can be checked an flagged as false reading
diff --git a/Demo-Mode/index.html b/Demo-Mode/index.html
index 8705b77..de3bb0d 100644
--- a/Demo-Mode/index.html
+++ b/Demo-Mode/index.html
@@ -90,7 +90,7 @@
Configuration
- Analog/Digital Transition on Watermeters
+ Analog/Digital Transition on Water Meters
Collect images to improve the models
@@ -113,7 +113,7 @@
Demo Mode
How does it work
- Example Data of a Watermeter
+ Example Data of a Water Meter
Animation
@@ -160,12 +160,12 @@
- Asorted Pages
+ Assorted Pages
Graphical Configuration
@@ -197,11 +197,11 @@
Demo Mode
For Demo and Testing Purpose, the device can use pre-recorded images.
-You need to enable it in the configuration (TakeImage > Demo) and also provide the needed files on the SD-Card.
+You need to enable it in the configuration (TakeImage > Demo) and also provide the needed files on the SD card.
For each round one image gets used, starting with the first image for the first round.
For the reference image and the alignment also the first image gets used.
Once the last image got reached, it starts again with the first one.
-SD-Card Structure
+SD Card Structure
demo/
├── 520.8983.jpg
├── 520.9086.jpg
@@ -252,8 +252,8 @@ done
Installation
Just install the zip file using the OTA Update functionality.
How does it work
-The Demo Mode tries to interfere as less as possible with the normal behavior. Whenever a Cam Framebuffer gets taken (esp_camera_fb_get()), it replaces the framebuffer with the image from the SD-Card.
-Example Data of a Watermeter
+The Demo Mode tries to interfere as less as possible with the normal behavior. Whenever a Cam framebuffer gets taken (esp_camera_fb_get()), it replaces the framebuffer with the image from the SD card.
+Example Data of a Water Meter
You can use the following demo images if you want:
It covers a meter range from 530.00688 to 531.85882.
diff --git a/Error-Codes/index.html b/Error-Codes/index.html
index b3a71c0..c7f7c94 100644
--- a/Error-Codes/index.html
+++ b/Error-Codes/index.html
@@ -90,7 +90,7 @@
Configuration
- Analog/Digital Transition on Watermeters
+ Analog/Digital Transition on Water Meters
Collect images to improve the models
@@ -146,12 +146,12 @@
- Asorted Pages
+ Assorted Pages
Graphical Configuration
diff --git a/Error-Debugging/index.html b/Error-Debugging/index.html
index 8ac1cae..77bf9c6 100644
--- a/Error-Debugging/index.html
+++ b/Error-Debugging/index.html
@@ -90,7 +90,7 @@
Configuration
- Analog/Digital Transition on Watermeters
+ Analog/Digital Transition on Water Meters
Collect images to improve the models
@@ -160,12 +160,12 @@
- Asorted Pages
+ Assorted Pages
ROI misaligned
-This typically happens if you have suboptimal "Alignement Marks". A very simple and working solution is to put put higly contrasted stickers on your meter and put "Alignement Marks" on it (see picture below)
+This typically happens if you have suboptimal "Alignment Marks". A very simple and working solution is to put put higly contrasted stickers on your meter and put "Alignment Marks" on it (see picture below)
-If after those adjustement you still have some issues, you can try to adjust your aligmenet settings in expert mode:
+
If after those adjustment you still have some issues, you can try to adjust your alignment settings in expert mode:
My Analog Meter are recognized as Digital Counter or vice versa
diff --git a/External-LED/index.html b/External-LED/index.html
index adcfca7..24ac4f2 100644
--- a/External-LED/index.html
+++ b/External-LED/index.html
@@ -96,7 +96,7 @@
Configuration
- Analog/Digital Transition on Watermeters
+ Analog/Digital Transition on Water Meters
Collect images to improve the models
@@ -144,12 +144,12 @@
- Asorted Pages
+ Assorted Pages
Graphical Configuration
@@ -181,7 +181,7 @@
External LED
The internal flash LED is very close to the camera axis. This results in reflection, especially in case of flat glass surfaces such as for power meters.
-To circumvent this problem, it is now possible to control external LEDs, which than can be places somewhere else in the setup. As not simples LEDs are used, but RGB leds with a digital interface like WS2812 not only the position, but also the color and intensity of the illumination can now be adjusted. The following image shows a direct comparision of the "old" internal flash LED and two off axis LEDs.
+To circumvent this problem, it is now possible to control external LEDs, which than can be places somewhere else in the setup. As not simples LEDs are used, but RGB LEDs with a digital interface like WS2812 not only the position, but also the color and intensity of the illumination can now be adjusted. The following image shows a direct comparison of the "old" internal flash LED and two off axis LEDs.
There is also a new meter adapter available. This has two features: designed for small clearings in front of the meter and prepared for WS2812 LEDs .
diff --git a/FAQs/index.html b/FAQs/index.html
index 24e88bf..babe936 100644
--- a/FAQs/index.html
+++ b/FAQs/index.html
@@ -104,7 +104,7 @@
Configuration
- Analog/Digital Transition on Watermeters
+ Analog/Digital Transition on Water Meters
Collect images to improve the models
@@ -152,12 +152,12 @@
- Asorted Pages
+ Assorted Pages
Graphical Configuration
@@ -193,7 +193,7 @@
Frequent HTML requests
Wrong configuration, missing configuration files
-Unstable hardware - see [[Hardware Compatibility]]
+Unstable hardware - see Hardware Compatibility .
There is a dedicated page about this: Frequent Reboots .
How accurate are the detections?
@@ -215,10 +215,12 @@
How can I ensure invalid numbers are never reported?
As mentioned above, the AI algorithm is not perfect. Sometimes it may read an incorrect value.
We can tune the software to almost never report an incorrect value. There is a tradeoff though: the software may report stale values - i.e. it will drop incorrect values for a potentially long period of time, resulting in the meter reading being outdated by hours. If never receiving an incorrect value is important to you, consider tolerating this tradeoff.
-You can change the following settings to reduce incorrect readings (but potentially increase staleness of data):
-* Set a prevalue via the UI, then change PostProcessing configuration option PreValueAgeStartup to a much larger number (e.g. 43200 = 30 days).
-* Change PostProcessing configuration option MaxRateType to be time based instead of absolute. Set MaxRateValue to something realistic (e.g. 5 gal/min). You can often find the max flow rate your meter supports directly on the cover.
-* Reduce AutoTimer configuration option Intervall to the lowest it can be (e.g. 3 min). The more often you take readings, the less likely for data staleness to occur.
+You can change the following settings to reduce incorrect readings (but potentially increase staleness of data):
+
+Set a prevalue via the UI, then change PostProcessing configuration option PreValueAgeStartup to a much larger number (e.g. 43200 = 30 days).
+Change PostProcessing configuration option MaxRateType to be time based instead of absolute. Set MaxRateValue to something realistic (e.g. 5 gal/min). You can often find the max flow rate your meter supports directly on the cover.
+Reduce AutoTimer configuration option Interval to the lowest it can be (e.g. 3 min). The more often you take readings, the less likely for data staleness to occur.
+
Even after I have setup everything perfect there is a false reading - especially around the zero crossing (roll over to next number)
The roll over behavior is different for the different meters. E.g.:
@@ -230,7 +232,7 @@
The "PostProcessingAlgo" is trying to judge out of the individual readings, what number it should be.
-For example if the previous number is a "1", but the next number seems to be a "8.9", mos probably there was a "zero crossing" and the number is a "9" and not still an "8"
+For example if the previous number is a "1", but the next number seems to be a "8.9", most probably there was a "zero crossing" and the number is a "9" and not still an "8"
Currently the setting of the algorithm is set to fit most of the meters and cases. But the parameters do not fit perfectly for all situations. Therefore there might be intermediate states, where the reading is false.
diff --git a/Frequent-Reboots/index.html b/Frequent-Reboots/index.html
index ce952fd..9af8bd2 100644
--- a/Frequent-Reboots/index.html
+++ b/Frequent-Reboots/index.html
@@ -90,7 +90,7 @@
Configuration
- Analog/Digital Transition on Watermeters
+ Analog/Digital Transition on Water Meters
Collect images to improve the models
@@ -166,12 +166,12 @@
- Asorted Pages
+ Assorted Pages
Graphical Configuration
@@ -264,7 +264,7 @@ There is noting you can do about it, beside testing different hardware.
SD card recognized but not supported
This is the most annoying error. The SD card is detected, but the files cannot be read. Most probably this results in a problem with the WLAN connection, as the first file needed is the wlan.ini in the root directory.
PSRAM too low
-In order to work, there are 4 MB of PSRAM necessary. Normaly the ESP32CAM is equiped with 8 MB, whereof only 4 MB can be used effectively.
+
In order to work, there are 4 MB of PSRAM necessary. Normally the ESP32CAM is equipped with 8 MB, whereof only 4 MB can be used effectively.
Sometimes, there is hardware, where only 2 MB of PSRAM is present - even if you have bought a 8 MB module
You can identify the amount of PSRAM in the serial log file:
09:38:21.224 -> [0;32mI (881) psram: This chip is ESP32-D0WD[0m
diff --git a/Graphical-Configuration/index.html b/Graphical-Configuration/index.html
index aadfc2f..3936860 100644
--- a/Graphical-Configuration/index.html
+++ b/Graphical-Configuration/index.html
@@ -90,7 +90,7 @@
Configuration
- Analog/Digital Transition on Watermeters
+ Analog/Digital Transition on Water Meters
Collect images to improve the models
@@ -138,12 +138,12 @@
- Asorted Pages
+ Assorted Pages
Graphical Configuration
@@ -180,7 +180,7 @@
»
- Asorted Pages »
+ Assorted Pages »
Graphical Configuration
Edit on GitHub
@@ -202,7 +202,7 @@
partially the commands needs processing on the ESP32 device. This is not very fast - so please be patient.
Access to the graphical user interface
-
The graphical configuration mode can be reached via the "Edit Configuration" button in the main menue (/index.html):
+
The graphical configuration mode can be reached via the "Edit Configuration" button in the main menu (/index.html):
@@ -219,24 +219,24 @@
b. Define alignment structures
Definition of ROIs for digits and analog pointers
Test the settings
-
Back to main menue ("index.html")
+
Back to main menu ("index.html")
1. Edit Config.ini
-
This is a text editor for the config.ini. Changes commited with the button on the lower left.
+
This is a text editor for the config.ini. Changes committed with the button on the lower left.
Details see Configuration-Parameter-Details .
2a. Create Reference Image
The reference image is the basis for the coordination of the ROIs. Therefore it is very important, to have a well aligned image, that is not rotated.
-
‼️ Attention: Updating the reference image, also means, that all alignment images and ROIs needs to be teached again. Therefore do this step only with caution.
+
‼️ Attention: Updating the reference image, also means, that all alignment images and ROIs needs to be taught again. Therefore do this step only with caution.
At first the current image is shown and no adjustment is possible. To reload the actual image push the button "Show actual Reference" (1). To define a new reference image push the button "Create new Reference" (2).
-Then the last taken raw image from the camera is loaded. If you want to update this, you can push the button "Make new raw image (raw.jpg)". If you need to mirror your image (e.g. mirror before camera) you can do this by selecting "mirror image". After loading the mirroring (in case checked) and the prerotation angle from the config.ini are applied. Then use the rough and fine adjustment to get the image straight aligned (3).
+Then the last taken raw image from the camera is loaded. If you want to update this, you can push the button "Make new raw image (raw.jpg)". If you need to mirror your image (e.g. mirror before camera) you can do this by selecting "mirror image". After loading the mirroring (in case checked) and the pre-rotation angle from the config.ini are applied. Then use the rough and fine adjustment to get the image straight aligned (3).
If everything is done, you can save the result with "Update Reference Image" (4).
-
If you have problems with reflections, you can turn the camera in a positions, where the reflection is at a position, where no important information is. To reduce the intensity of the reflection you can also a peace of felt ("Filz") as diffusior at the LED.
+
If you have problems with reflections, you can turn the camera in a positions, where the reflection is at a position, where no important information is. To reduce the intensity of the reflection you can also a peace of felt ("Filz") as diffusor at the LED.
2b. Define Alignment References
The alignment references are used to realign every taken image to the reference coordinates. Therefore two alignment structures are identified and the image is shifted and rotated according to their position with the target to be in exactly the same position as the reference image.
@@ -259,7 +259,7 @@ The order of the ROIs correspond to the position of the digit / analog pointer i
The outer rectangle is the final size of the ROI
-More important is the inner smaller rectangle. This should tightly fit around the number itself in x- and in y-dimension. Maybe you need to unlock the aspect ratio to change x- and y-size independendly
+More important is the inner smaller rectangle. This should tightly fit around the number itself in x- and in y-dimension. Maybe you need to unlock the aspect ratio to change x- and y-size independently
The line in the middle should go through the middle of the number (in case it is not moving in or out)
To save the result push "Save all to config.ini" (4).
diff --git a/Hardware-Compatibility/index.html b/Hardware-Compatibility/index.html
index 8931ab2..7b327e3 100644
--- a/Hardware-Compatibility/index.html
+++ b/Hardware-Compatibility/index.html
@@ -94,7 +94,7 @@
Configuration
- Analog/Digital Transition on Watermeters
+ Analog/Digital Transition on Water Meters
Collect images to improve the models
@@ -142,12 +142,12 @@
- Asorted Pages
+ Assorted Pages
Graphical Configuration
@@ -179,7 +179,7 @@
Hardware Compatibility
-Altrough a board looks similair, it can have major differences, eg.:
+Although a board looks similar, it can have major differences, e.g.:
Processor
Ram (Size! & Type) -> this Project needs at least 4MB RAM!
@@ -193,7 +193,7 @@
etc.
This can cause different Power Consumption, Power Requirements, compatibility issues, etc.
-Most manufacturers and sellers buy what's cheap today on the Asian markets. In the end, it looks like it is sometimes a trial and error approach which ESP32-CAM Module works reliable.
+Most manufacturers and sellers buy what's cheap today on the Asian markets. In the end, it looks like it is sometimes a trial and error approach which ESP32-CAM Module works reliably.
Below you find some remarks and experiences from the community:
ESP32 core itself
PSRAM
There seems to be a lot of "fake" chips, or maybe wrongly configured ESP32 Boards.
-For AP MEMORY, all "real" APS64 04*3SQR Chips should work.
-For ESP PSRAM, all "real" PSRAM64 * should work
+For AP MEMORY, all "real" APS64 04*3SQR chips should work.
+For ESP PSRAM, all "real" PSRAM64 * should work.
64Mbit density = 8Mbyte PSRAM
This Table is just a snapshot of chips which worked
@@ -338,15 +338,15 @@
✔️ with >=4 MB PSRAM!
-ESP32-S3-EYE No Flash LED, pins different used (e.g. LCD diskplay)
+ESP32-S3-EYE No Flash LED, pins different used (e.g. LCD display)
NOT OKAY
-SD-Cards
-Due to the limited free available gpios (due to all the extensions needed like: camera, sd-card, LED-flash, ...) the sd card is connected in 1-wire mode. There are some cards, that are compatible with the esp32cam module for unknown reasons.
-It is observed, that smaller cards (up to 4 GB) tend to be more stable and larger cards have more problems. But quite some exceptions in the forums (4 GB cards not working, 16 G cards working like a charm).
+SD Cards
+Due to the limited free available GPIOs (due to all the extensions needed like: camera, SD card, LED-flash, ...) the SD card is connected in 1-wire mode. There are some cards, that are compatible with the esp32cam module for unknown reasons.
+It is observed, that smaller cards (up to 4 GB) tend to be more stable and larger cards have more problems. But quite some exceptions in the forums (4 GB cards not working, 16 GB cards working like a charm).
Devices known to work
Modules (Old list, not up-to-date anymore):
See https://github.com/jomjol/AI-on-the-edge-device/discussions/1732 for a more recent list.
@@ -361,7 +361,7 @@ It is observed, that smaller cards (up to 4 GB) tend to be more stable and large
https://www.reichelt.de/entwicklerboards-esp32-kamera-2mp-25--debo-cam-esp32-p266036.html?PROVID=2788&gclid=CjwKCAiAqaWdBhAvEiwAGAQlttJnV4azXWDYeaFUuNioMICh-jvxKp6Cifmcep9vvtoT2JRCDqBczRoC7Q0QAvD_BwE (27.12.2022)
-SD-Card
+SD Card
Sandisk 2GB Micro SD Class 2 Sandisk 2GB
AITRIP ESP32 and CAM ESP-32/CAM
diff --git a/Influx-DB/index.html b/Influx-DB/index.html
index 3b684f7..50b764e 100644
--- a/Influx-DB/index.html
+++ b/Influx-DB/index.html
@@ -90,7 +90,7 @@
Configuration
- Analog/Digital Transition on Watermeters
+ Analog/Digital Transition on Water Meters
Collect images to improve the models
@@ -140,12 +140,12 @@
- Asorted Pages
+ Assorted Pages
Graphical Configuration
@@ -176,7 +176,7 @@
Influx DB
-
The device also supports direct sending of data to an Influ DB.
+
The device also supports direct sending of data to an Influx DB.
‼️ Only Influx DB 1 is supported!
diff --git a/Installation/index.html b/Installation/index.html
index f221542..d398f49 100644
--- a/Installation/index.html
+++ b/Installation/index.html
@@ -77,11 +77,11 @@
- 3. SD-Card
+ 3. SD Card
Configuration
- Analog/Digital Transition on Watermeters
+ Analog/Digital Transition on Water Meters
Collect images to improve the models
@@ -182,12 +182,12 @@
- Asorted Pages
+ Assorted Pages
Graphical Configuration
@@ -222,7 +222,7 @@
Get the right hardware and wire it up
Flash the firmware onto the ESP32
-Write the data to the SD-Card
+Write the data to the SD card
Start it
For point 2 and 3 we provide multiple ways to do it. Pick the one that looks the easiest for you!
@@ -230,15 +230,15 @@
ESP32-CAM
OV2640 camera module
-Micro SD-Card slot
+Micro SD card slot
4 or 8 MB PSRAM.
It can be easily found on the typical internet stores, searching for ESP32-CAM for less than 10 EUR.
-How ever since the hardware is cheap and coming from China, you unluckily could pick a malfunction device. See Hardware Compatibility for further advice!
+How ever since the hardware is cheap and coming from China, you unluckily could pick a malfunctioning device. See Hardware Compatibility for further advice!
USB->UART interface
For first time flashing the firmware a USB -> UART connector is needed. Later firmware upgrades than can be flashed via OTA.
Power supply
-For power supply a 5V source is needed. Most easily this can be done via an USB power supply. The power supply should support minimum 500mA. For buffering current peaks some users reported to use a large elco condensator like a 2200uF between ground and VCC.
+For power supply a 5V source is needed. Most easily this can be done via a USB power supply. The power supply should support minimum 500mA. For buffering current peaks some users reported to use a large electrolytic capacitor like a 2200uF between ground and VCC.
‼️ Attention: in several internet forums there are problems reported, in case the ESP32-CAM is only supplied with 3.3V.
Housing
A small 3D-printable example for a very small case can be found in Thingiverse here: https://www.thingiverse.com/thing:4571627
@@ -251,7 +251,7 @@ How ever since the hardware is cheap and coming from China, you unluckily could
A example for wiring can be found here:
-It is also possible to use external LEDs for the illumination instead of the internal flash LED. This is described here: [[External-LED]]
+It is also possible to use external LEDs for the illumination instead of the internal flash LED. This is described here
2. Firmware
Web Installer
There is a Web Installer available which will work right out of the web browser Edge and Chrome.
@@ -263,7 +263,7 @@ You can access it with the following link: Releases page (Stable, tested versions), or the
-
Automatically build development branch (experimental, untested versions). Please have a look on Living on the Edge ] first!
+Automatically build development branch (experimental, untested versions). Please have a look on Living on the Edge first!
You need:
@@ -274,7 +274,7 @@ You can access it with the following link: Flashing using the Flash Tool from Espressif (GUI)
Get the Flash Download Tool from Espressif.
Download and extract the Flash tool, after starting choose "Developer Mode", then "ESP32-DownloadTool" and you are in the setup of the flashing tool. Connect the ESP32-CAM with the USB-UART connection and identify the COM-Port.
-‼️ Attention : if you reflashing the code again, it is strongly recommended to erase the flash memory before flashing the firmware. Especially if you used OTA in between, which might cause remaining information on the flash, to still boot from an old image in the OTA-area, which is not erased by a normal flash.
+‼️ Attention : if you are re-flashing the code again, it is strongly recommended to erase the flash memory before flashing the firmware. Especially if you used OTA in between, which might cause remaining information on the flash, to still boot from an old image in the OTA-area, which is not erased by a normal flash.
But your ESP32 in bootloader mode and push start, then it will identify the board and you can configure the bin-configuration according to the following table:
@@ -304,45 +304,45 @@ You can access it with the following link: https://techoverflow.net/2022/02/08/how-to-fix-esp32-a-fatal-error-occurred-esp32-rom-does-not-support-function-erase_flash/
-With some Python installations this may not work and you’ll receive an error, try python -m pip install esptool or pip3 install esptool
-Further recommendations can be found on the espressif webpage
-3. SD-Card
-The software expects a SD-Card prepared with certain directory and file structure in order to work properly.
-SD-Card most top directory should look like this:
+With some Python installations this may not work and you’ll receive an error, try python -m pip install esptool or pip3 install esptool.
+Further recommendations can be found on the espressif webpage .
+3. SD Card
+The software expects an SD card prepared with certain directory and file structure in order to work properly.
+SD card most top directory should look like this:
-This initial setup needs only to be done once as further updates (Firmware as well as SD-Card content) are possible with the Over-The-Air Update mechanism.
+This initial setup needs only to be done once as further updates (Firmware as well as SD card content) are possible with the Over-The-Air Update mechanism.
Notes
-Due to the limited availability of GPIOs (OV2640, Flash-Light, PSRAM & SD-Card) the communication mode to the SD card is limited to 1-line SD-Mode. It showed up, that this results in problems with very large SD-Cards (64GB, sometimes 32 GB) and some no name low cost SD-cards.
+Due to the limited availability of GPIOs (OV2640, Flash-Light, PSRAM & SD card) the communication mode to the SD card is limited to 1-line SD-Mode. It showed up, that this results in problems with very large SD-Cards (64GB, sometimes 32 GB) and some no name low cost SD-cards.
There must be no partition table on the SD-card (no GPT, but only MBR for the single partition)
-Following setting are necessary for formating the SD-card: SINGLE PARTITION, MBR, FAT32 - 32K. NOT exFAT
+Following setting are necessary for formatting the SD-card: SINGLE PARTITION, MBR, FAT32 - 32K. NOT exFAT
Some ESP32 devices share their SD-card and/or camera GPIOs with the pins for TX and RX. If you see errors like “Failed to connect” then your chip is probably not entering the bootloader properly. Remove the respective modules temporarily to free the GPIOs for flashing. You may find more information about troubleshooting on the homepage of Espressif .
The ESP32 indicates problems with the SD card during startup with a fast, endless blinking.
In this case, please try another SD card.
-Manual Setup with a SD-Card-Reader on a PC
+Manual Setup with an SD Card Reader on a PC
Take the AI-on-the-edge-device__manual-setup__*.zip from the Release page.
Open it and extract the sd-card.zip.
-Open it and extract all files onto onto your SD-Card.
-On the SD-Card, open the wlan.ini file and configure it as needed:
+Open it and extract all files onto onto your SD card.
+On the SD card, open the wlan.ini file and configure it as needed:
Set the corresponding SSID and password
The other parameters are optional
-Note: The device provides a File Server which can be used to show, edit or delete the files on the SD-Card. For security reasons, the wlan.ini file is excluded from this and is hidden from external access to protect the password.
-After this, you can insert the SD-Card into the ESP32 board and start it.
+Note: The device provides a File Server which can be used to show, edit or delete the files on the SD card. For security reasons, the wlan.ini file is excluded from this and is hidden from external access to protect the password.
+After this, you can insert the SD card into the ESP32 board and start it.
Remote Setup using the built-in Access Point
-On startup of the ESP32, it checks if the wlan.ini or the config/config.ini are available on the SD-Card.
+
On startup of the ESP32, it checks if the wlan.ini or the config/config.ini are available on the SD card.
If not, the ESP32 switches to a special mode. In this mode, it provides a Wifi Access Point which can be used to add the missing wlan.ini or the config/config.ini file.
Take the AI-on-the-edge-device__remote-setup__*.zip from the Release page.
@@ -352,21 +352,21 @@ If not, the ESP32 switches to a special mode. In this mode, it provides a Wifi A
The device has the following fixed IP: http://192.168.4.1 .
-Upload initial configuration to sd-card
+Upload initial configuration to SD card
Use the select file and upload button to start the upload.
-A warning will show up if you have choosen a possible wrong file (without default configuration).
+A warning will show up if you have chosen a possible wrong file (without default configuration).
-Store WLAN acces information.
+Store WLAN access information.
After the upload, a new page will be shown:
Enter your SSID and password.
Note: Only basic settings are supported. If you need advanced configuration (fixed ip, ...), you need to use the manual setup as documented above.
‼️ Attention:
-Carefully check your wifi settings. To change them later on, you need to take out the sd-card and edit the wlan.ini manually (or delete it and start again).
-The informations are transfered without encryption!
+Carefully check your wifi settings. To change them later on, you need to take out the SD card and edit the wlan.ini manually (or delete it and start again).
+The information is transferred without encryption!
Finish the step by pushing Write wlan.ini
@@ -379,7 +379,7 @@ It will take up to 3 minutes. Afterwards you can find your device in the local n
4. Initial Startup
-After the firmware is flashed and the SD-Card is setup properly, you can start it.
+
After the firmware is flashed and the SD card is setup properly, you can start it.
After power on the connection status is indicated by 3x blinking of the red on board LED.
WLAN-Status indication:
diff --git a/Integration-Home-Assistant/index.html b/Integration-Home-Assistant/index.html
index b0a670e..3e7139e 100644
--- a/Integration-Home-Assistant/index.html
+++ b/Integration-Home-Assistant/index.html
@@ -82,7 +82,7 @@
Integration into Home Assistant
- Using MQTT (Automatically Setup Entities using Homeassistant MQTT Discovery)
+ Using MQTT (Automatically Setup Entities using Home Assistant MQTT Discovery)
Configuration
- Analog/Digital Transition on Watermeters
+ Analog/Digital Transition on Water Meters
Collect images to improve the models
@@ -158,12 +158,12 @@
- Asorted Pages
+ Assorted Pages
Graphical Configuration
@@ -196,14 +196,14 @@
Integration into Home Assistant
There are 3 ways to get the data into your Home Assistant:
-Using MQTT (Automatically Setup Entities using Homeassistant MQTT Discovery)
+Using MQTT (Automatically Setup Entities using Home Assistant MQTT Discovery)
Using MQTT (Manually Setup Entities)
Using REST calls
The first one is the easier way if you already have MQTT in use.
-Using MQTT (Automatically Setup Entities using Homeassistant MQTT Discovery)
+Using MQTT (Automatically Setup Entities using Home Assistant MQTT Discovery)
‼️ This feature will be available with the next release!
-Starting with Version >12.0.1, AI-on-the-edge-devices support Homeassistant Discovery.
+Starting with Version >12.0.1, AI-on-the-edge-devices support Home Assistant Discovery.
Check here to learn more about it and how to enable it in Homeassistant.
@@ -212,7 +212,7 @@
Make sure to select the right Meter Type to get the right units!
-On the next start of the device, it will send discovery topics and Homeassistant should pick them up and show them under Settings > Integrations > MQTT:
+On the next start of the device, it will send discovery topics and Home Assistant should pick them up and show them under Settings > Integrations > MQTT:
@@ -226,7 +226,7 @@
unique_id: watermeter_value
unit_of_measurement: 'm³'
state_class: total_increasing
- device_class: water # Needs Homeassistant 2022.11!
+ device_class: water # Needs Home Assistant 2022.11!
icon: 'mdi:water-pump'
availability_topic: wasserzaehler/connection
payload_available: connected
@@ -237,7 +237,7 @@
unique_id: watermeter_rate
unit_of_measurement: 'm³/min'
state_class: measurement
- device_class: water # Needs Homeassistant 2022.11!
+ device_class: water # Needs Home Assistant 2022.11!
icon: 'mdi:water-pump'
availability_topic: wasserzaehler/connection
payload_available: connected
@@ -303,12 +303,12 @@ it is a helper and can be used to reset the total increasing values once a day
Statistics Graph
-Creating Statistics Graphs (eg. usage per day) is easy using the Energy Dashboard :
+
Creating Statistics Graphs (e.g. usage per day) is easy using the Energy Dashboard :
Note that there seems to be a bug in the graph, see https://github.com/home-assistant/frontend/issues/13995 !
InfluxDb Graphs
See also Influx-DB .
-If you have setup InfluxDB already, it is also possible to fetch statistics from there, eg. daily usage:
+If you have setup InfluxDB already, it is also possible to fetch statistics from there, e.g. daily usage:
from(bucket: "HomeAssistant")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["entity_id"] == "wasserverbrauch_tag")
@@ -321,7 +321,7 @@ it is a helper and can be used to reset the total increasing values once a day
Using REST
When using REST, Home Assistant has to periodically call an URL on the ESP32 which in return provides the requested data.
See REST API for a list of available URLs.
-The most practical one is the json entrypoint which provides the most relevant data JSON formated:
+
The most practical one is the json entrypoint which provides the most relevant data JSON formatted:
http://<IP>/json
This would return:
{
diff --git a/Learn-models-with-your-own-images/index.html b/Learn-models-with-your-own-images/index.html
index 83ba973..6b14cc2 100644
--- a/Learn-models-with-your-own-images/index.html
+++ b/Learn-models-with-your-own-images/index.html
@@ -90,7 +90,7 @@
Configuration
- Analog/Digital Transition on Watermeters
+ Analog/Digital Transition on Water Meters
Collect images to improve the models
@@ -148,12 +148,12 @@
- Asorted Pages
+ Assorted Pages
Graphical Configuration
diff --git a/MQTT-API/index.html b/MQTT-API/index.html
index 9ff8342..24cd1ec 100644
--- a/MQTT-API/index.html
+++ b/MQTT-API/index.html
@@ -90,7 +90,7 @@
Configuration
- Analog/Digital Transition on Watermeters
+ Analog/Digital Transition on Water Meters
Collect images to improve the models
@@ -208,12 +208,12 @@
- Asorted Pages
+ Assorted Pages
Graphical Configuration
@@ -306,7 +306,7 @@
Rate_per_time_unit
-The time Unit gets set with the Homeassistant Discovery, eg. h or m (minutes)
+The time Unit gets set with the Home Assistant Discovery, e.g. h or m (minutes)
Rate_per_digitalization_round
diff --git a/Neural-Network-Types/index.html b/Neural-Network-Types/index.html
index 357c346..8acc13e 100644
--- a/Neural-Network-Types/index.html
+++ b/Neural-Network-Types/index.html
@@ -130,7 +130,7 @@
Configuration
- Analog/Digital Transition on Watermeters
+ Analog/Digital Transition on Water Meters
Collect images to improve the models
@@ -178,12 +178,12 @@
- Asorted Pages
+ Assorted Pages
Graphical Configuration
@@ -243,7 +243,7 @@
Technically a wrong network will work and create output, but that would be totally arbitrary
Not all type of pointers are trained in all networks.
For the 11 classes digits network there many different types of digits trained. The reason is, that you 1) only need 20-30 training images and 2) the data collection is ongoing much longer
-For the continious and 100 classes network especially for the digits, there are only a few types of digits trained up to now
+For the continuous and 100 classes network especially for the digits, there are only a few types of digits trained up to now
Therefore sometimes for the digits it is more effective to choose the simpler 11 classes network type (= default).
Naming convention
@@ -291,7 +291,7 @@
Overview of trained types and details
Analog Pointer ("ana-cont_XXX.tflite" & "ana-class100_XXX.tflite")
-This is to transfer the direction of a pointer into a continuous number between 0 and 1, whereas 0 (=1) is the upwards position (12 o'clock), 0.25 corresponds to the 3 o'clock positions and so on. This network is a envolop for all different types of pointers. Currently there are no dedicated network trainings for specific types of pointers.
+This is to transfer the direction of a pointer into a continuous number between 0 and 1, whereas 0 (=1) is the upwards position (12 o'clock), 0.25 corresponds to the 3 o'clock positions and so on. This network is a envelop for all different types of pointers. Currently there are no dedicated network trainings for specific types of pointers.
There are two types of network structure, currently both are supported. The "class100" is a pure classification network, that might need a bit more accuracy in the labeling. "cont" is a no classic approach with a continuous output off only 2 neurons (details see below).
Types of counters trained:
@@ -321,7 +321,7 @@
Training data needs
Quadratic images, minimum size: 32x32 pixel
-Typically 100 - 200 images with a resultion of 1/100 of the full rotation (every 0.1 value or 3.6°)
+Typically 100 - 200 images with a resolution of 1/100 of the full rotation (every 0.1 value or 3.6°)
Naming: x.y_ARBITRARY.jpg, where x.y = value 0.0 ... 9.9
CNN Technical details:
@@ -332,9 +332,9 @@
Output
ana-cont _XXX.tflite:
-2 neurons with output in range [-1, 1] - representing a sinus / cosinus encoding of the angle
+2 neurons with output in range [-1, 1] - representing a sinus / cosine encoding of the angle
-needs to be converted to angle with arctan-hyperbolicus function
+needs to be converted to angle with arctan-hyperbolic function
ana-class100 _XXX.tflite
@@ -405,10 +405,10 @@
11 neurons for image classification (last layer normalized to 1)
Neuron 0 to 9 represent the corresponding numbers "0" to "9"
-Neron 10 represent the "Not-A-Number" class, telling, that the image is not uniquely classified
+Neuron 10 represents the "Not-A-Number" class, telling, that the image is not uniquely classified
Digits with rolling results ("dig-class100_XXX.tflite" & "dig-cont_XXX.tflite")
-This type of network tries to overcome the problem, that there are intermediate values, when a rolling digit is between two numbers. Previous this was the "N" class. In this network type, there are also subdigit values trained, so that the intermediate state can be used as additional information for the algorithms.
+This type of network tries to overcome the problem, that there are intermediate values, when a rolling digit is between two numbers. Previous this was the "N" class. In this network type, there are also sub-digit values trained, so that the intermediate state can be used as additional information for the algorithms.
Types of counters trained:
@@ -454,7 +454,7 @@
dig-cont _XXX.tflite:
10 neurons representing the digits 0, 1, ... 9. The intermediate values are represented by weighted normalized values of two neighboring output neurons
-needs to be converted to angle with arctan-hyperbolicus function
+needs to be converted to angle with arctan-hyperbolic function
dig-class100 _XXX.tflite
diff --git a/New-Releases-Notification/index.html b/New-Releases-Notification/index.html
index 01ff7f6..f88b3ae 100644
--- a/New-Releases-Notification/index.html
+++ b/New-Releases-Notification/index.html
@@ -90,7 +90,7 @@
Configuration
- Analog/Digital Transition on Watermeters
+ Analog/Digital Transition on Water Meters
Collect images to improve the models
@@ -144,12 +144,12 @@
- Asorted Pages
+ Assorted Pages
Graphical Configuration
@@ -195,7 +195,7 @@ There are several ways for it:
See also Github Documentation .
CodeRelease.io
Alternatively or if you do not want to create a Github account, CodeRelease.io can be an alternative.
-You also have to subscribe with an emailaddress but no account is required.
+You also have to subscribe with an email address but no account is required.
diff --git a/REST-API/index.html b/REST-API/index.html
index 69f5ea0..01894ef 100644
--- a/REST-API/index.html
+++ b/REST-API/index.html
@@ -90,7 +90,7 @@
Configuration
- Analog/Digital Transition on Watermeters
+ Analog/Digital Transition on Water Meters
Collect images to improve the models
@@ -216,12 +216,12 @@
- Asorted Pages
+ Assorted Pages
Graphical Configuration
@@ -253,7 +253,7 @@
REST API
Various information is directly accessible over specific REST calls.
-To use it, just append them to the IP, separated with a /, eg. http://192.168.1.1/json
+To use it, just append them to the IP, separated with a /, e.g. http://192.168.1.1/json
Note: For more detailed information to the REST handler, have a look to the code in the repository: registered handlers
Control
Status
@@ -370,7 +370,7 @@
Show system infos in JSON syntax
-Example: [{"firmware": "","buildtime": "2023-01-25 12:41","gitbranch": "HEAD","gittag": "","gitrevision": "af13c68+","html": "Development-Branch: HEAD (Commit: af13c68+)","cputemp": "64","hostname": "WaterMeterTest","IPv4": "192.168.xxx.xxx","freeHeapMem": "2818330"}]
+Example: [{"firmware": "","buildtime": "2023-01-25 12:41","gitbranch": "HEAD","gittag": "","gitrevision": "af13c68+","html": "Development-Branch: HEAD (Commit: af13c68+)","cputemp": "64","hostname": "WaterMeterTest","IPv4": "192.168.xxx.xxx","freeHeapMem": "2818330"}]
starttime
diff --git a/ROI-Configuration/index.html b/ROI-Configuration/index.html
index 58289ae..707338e 100644
--- a/ROI-Configuration/index.html
+++ b/ROI-Configuration/index.html
@@ -110,7 +110,7 @@
Configuration
- Analog/Digital Transition on Watermeters
+ Analog/Digital Transition on Water Meters
Collect images to improve the models
@@ -158,12 +158,12 @@
- Asorted Pages
+ Assorted Pages
Graphical Configuration
@@ -217,7 +217,7 @@
Ensure a sharp image of the camera by adjusting the focal length of the ESP OV2640 camera. Adjust the focus for the clearest possible image!
In order to use it for reading a meter, the focal-length of the OV2640 camera has to be manipulated, as by default it only results in sharp image for distance bigger than ~40cm, causing the image of the water meter to be too small for automated readout processing.
ATTENTION: this modification will void any warranty, as the sealing of the lens objective is broken!
-ATTENTION: This modification will render the camera unsuitable for general, web-cam type applications unless the focal length is changed back to the original setting.
+ATTENTION: This modification will render the camera unsuitable for general, web-cam type applications unless the focal length is changed back to the original setting.
Remove the fixing glue of the OV2640 lens with a sharp knife. After this you can screw the lens in and out. Rotating it by about a quarter of a turn counterclockwise results in a focus plane of about 10cm. You need to figure out your best setting with a little bit of trial and error for your specific environment.
Horizontal Alignment
diff --git a/Release-creation/index.html b/Release-creation/index.html
index e5df89c..7b56030 100644
--- a/Release-creation/index.html
+++ b/Release-creation/index.html
@@ -90,7 +90,7 @@
Configuration
- Analog/Digital Transition on Watermeters
+ Analog/Digital Transition on Water Meters
Collect images to improve the models
@@ -142,12 +142,12 @@
- Asorted Pages
+ Assorted Pages
Graphical Configuration
diff --git a/Testing/index.html b/Testing/index.html
index 7721f58..0e57836 100644
--- a/Testing/index.html
+++ b/Testing/index.html
@@ -90,7 +90,7 @@
Configuration
- Analog/Digital Transition on Watermeters
+ Analog/Digital Transition on Water Meters
Collect images to improve the models
@@ -140,12 +140,12 @@
- Asorted Pages
+ Assorted Pages
Graphical Configuration
@@ -192,10 +192,10 @@
Now you can use Visual Studio Code or a standard console to upload the test code. In VS Code (tab platformio) open Advanced and select Test .
-Alternativ you can run it in console/terminal with platformio test --environment esp32cam.
+Alternatively you can run it in console/terminal with platformio test --environment esp32cam.
In my environment the serial terminal not opens. I have to do it for myself. You will see much logging. If any test fails it logs it out. Else it logs all test passed in the end.
Troubleshooting
-If you test very much cases in one function, the device runs in stackoverflow and an endless boot. Reduce the count of test cases or split the test function in multiple functions.
+If you test very much cases in one function, the device runs in Stack Overflow and an endless boot. Reduce the count of test cases or split the test function in multiple functions.
diff --git a/Upload-files-by-script/index.html b/Upload-files-by-script/index.html
index 5862f45..5c9f6bf 100644
--- a/Upload-files-by-script/index.html
+++ b/Upload-files-by-script/index.html
@@ -90,7 +90,7 @@
Configuration
- Analog/Digital Transition on Watermeters
+ Analog/Digital Transition on Water Meters
Collect images to improve the models
@@ -140,12 +140,12 @@
- Asorted Pages
+ Assorted Pages
Graphical Configuration
@@ -176,7 +176,7 @@
Scripted File Upload
-
To upload a file eg. using curl, you first have to delete it and then upload it:
+
To upload a file e.g. using curl, you first have to delete it and then upload it:
curl -d '' http://192.168.1.153/delete/html/index.html
curl --data-binary @ota_page.html http://192.168.1.153/upload/html/index.html
diff --git a/Watermeter-specific-analog---digital-transition/index.html b/Watermeter-specific-analog---digital-transition/index.html
index 0889fdc..bd6c872 100644
--- a/Watermeter-specific-analog---digital-transition/index.html
+++ b/Watermeter-specific-analog---digital-transition/index.html
@@ -5,14 +5,14 @@
-
Analog/Digital Transition on Watermeters - AI on the Edge Device
+
Analog/Digital Transition on Water Meters - AI on the Edge Device
@@ -90,7 +90,7 @@
Configuration
-
Analog/Digital Transition on Watermeters
+ Analog/Digital Transition on Water Meters
"Normal" transition
@@ -148,12 +148,12 @@
- Asorted Pages
+ Assorted Pages
Graphical Configuration
@@ -173,7 +173,7 @@
»
Advanced »
- Analog/Digital Transition on Watermeters
+ Analog/Digital Transition on Water Meters
Edit on GitHub
@@ -183,8 +183,8 @@
-
Analog/Digital Transition on Watermeters
-
At first, for the most watermeters the default configuration should be work. But the digit, especially the last digit differs in some devices.
+
Analog/Digital Transition on Water Meters
+
At first, for the most water meters the default configuration should be work. But the digit, especially the last digit differs in some devices.
"Normal" transition
In most cases, the transition of the last digit starts when the analogue pointer is > 9.
Often the last digit "hangs" a bit on this devices and comes not over zero. So it is not easy to see which digit is correct. In the first example 4 or still 3? (3 is correct).
diff --git a/collect-new-images/index.html b/collect-new-images/index.html
index 08c9920..fd988c7 100644
--- a/collect-new-images/index.html
+++ b/collect-new-images/index.html
@@ -90,7 +90,7 @@
Configuration
-
Analog/Digital Transition on Watermeters
+ Analog/Digital Transition on Water Meters
Collect images to improve the models
@@ -152,12 +152,12 @@
- Asorted Pages
+ Assorted Pages
Graphical Configuration
@@ -189,24 +189,24 @@
Collect images to improve the models
If your device has new, different digits or pointers it might be that the existing models don't recognize them well. In such case you can collect your images and so we can train the model better. This helps you and also others as the models get more accurate. Adding more images also helps if you have a model that is already known, but the neural models do not produce good results.
-Experienced users can do the training also by themself, see Learn a model with your own images .
+Experienced users can do the training also by themselves, see Learn a model with your own images .
Before you start
Before you go ahead, please check if your digits/pointers are not yet contained in the training data. A visual overview is available at digits resp. pointers .
Poor recognition is often caused by blurred images, low contrast or incorrect setting of the ROIs. Therefore, check these possibilities first, as additional training will bring little improvement here. See ROI Configuration for details.
Collecting images
The neural network is trained based on a set of images that have already been collected over time. If your digits are included or at least very similar to included images, the chance is very high that the neural network is working fine for you as well.
-The neural network configuration is stored in the TensorFlow Lite format as *.tfl or *.tflite in the /config directory on the SD-Card. A model can be updated (or a new one added) by uploading the new file and activating it on the configuration page or in the config file /config/config.ini.
+The neural network configuration is stored in the TensorFlow Lite format as *.tfl or *.tflite in the /config directory on the SD card. A model can be updated (or a new one added) by uploading the new file and activating it on the configuration page or in the config file /config/config.ini.
In order to incorporate new digits a training set of images is required. The training images needs to be collected in the final setup with the help of the Digits or Analog log settings (not to be confused with the Data or Debug log). Enable the logging of the images on the configuration page or in the config file /config/config.ini:
-Now be patient! You have to wait until it has collected an image of each digit of every type. They wil lbe placed on the SD-Card inthe folder /log/digit/ resp. /log/anaolog/.
+Now be patient! You have to wait until it has collected an image of each digit of every type. They wil lbe placed on the SD card in the folder /log/digit/ resp. /log/analog/.
After some days, there will be a lot of images, many of them very similar. Because of this, it is important to select only a subset of them for the model training.
The tools shown below can help you with that.
Collecting images for dig-class100/dig-cont/ana-class100
-For digits use Collectmeterdigits resp. for pointers use collectmeteranalog to fetch the images from the device and select a subset of them. Please read the detailed instructions on the mentionded links for details!
+For digits use Collectmeterdigits resp. for pointers use collectmeteranalog to fetch the images from the device and select a subset of them. Please read the detailed instructions on the mentioned links for details!
If the fetching of the images is too slow for you, a faster way to get the images to your PC is to remove the SD-card from the ESP32 module and insert it into the card reader of yur PC.
Then search for two..three images of each digit (not more! :-) ). You will have to make sure to label the images yourself matching the effective value they are supposed to show.
Share your images
-In most cases we will integrate your images in the training dataset of the models. Only if we fear a degradation of the models or you need a different behaviour, we might not include the data in the standard models (see at bottom of page for reasons).
+In most cases we will integrate your images in the training dataset of the models. Only if we fear a degradation of the models or you need a different behavior, we might not include the data in the standard models (see at bottom of page for reasons).
To provide your images to us for training the model, open an Github Issue and append the zipped images ito it.
Images can be rejected if
@@ -220,7 +220,7 @@ Then search for two..three images of each digit (not more! :-) )
diff --git a/index.html b/index.html
index 5341f43..f8f37b3 100644
--- a/index.html
+++ b/index.html
@@ -104,7 +104,7 @@
Configuration
-
Analog/Digital Transition on Watermeters
+ Analog/Digital Transition on Water Meters
Collect images to improve the models
@@ -152,12 +152,12 @@
-
Asorted Pages
+
Assorted Pages
Graphical Configuration
@@ -190,17 +190,17 @@
Welcome
Welcome to the AI-on-the-edge-device project!
This is the documentation. For the source code, please head to github.com/jomjol/AI-on-the-edge-device .
-Artificial intelligence based systems have been established in our every days live. Just think of speech or image recognition. Most of the systems relay on either powerful processors or a direct connection to the cloud for doing the calculations up there. With the increasing power of modern processors the AI systems are coming closer to the end user - which is usually called edge computing .
-Here this edge computing is brought into a practical oriented example, where a AI network is implemented on a ESP32 device so: AI on the edge .
+Artificial intelligence based systems have been established in our everyday lives. Just think of speech or image recognition. Most of the systems rely on either powerful processors or a direct connection to the cloud for doing the calculations up there. With the increasing power of modern processors the AI systems are coming closer to the end user - which is usually called edge computing .
+Here this edge computing is brought into a practice-oriented example, where a AI network is implemented on a ESP32 device so: AI on the edge .
Key features
Tensorflow Lite (TFlite) integration - including easy to use wrapper
-Inline Image processing (feature detection, alignment, ROI extraction)
+Inline image processing (feature detection, alignment, ROI extraction)
Small and cheap device (3x4.5x2 cm³, < 10 EUR)
-camera and illumination integrated
+Camera and illumination integrated
Web surface to administrate and control
OTA-Interface to update directly through the web interface
-Full integration into Homeassistant
+Full integration into Home Assistant
Support for Influx DB 1
MQTT
REST API
@@ -217,10 +217,10 @@ Here this edge computing is brought into a practical oriented example, where a A
Have fun in studying the new possibilities and ideas
This is about image recognition and digitalization, done totally on a cheap ESP32 board using artificial intelligence in form of convolutional neural networks (CNN). Everything, from image capture (OV2640), image preprocessing (auto alignment, ROI identification) all the way down to the image recognition (CNN structure) and result plausibility is done on a cheap 10 EUR device.
-This all is integrated in an easy to do setup and use environment, taking care for all the background processing and handling, including regular job scheduler. The user interface is an integrated web server, that can be easily adjusted an offers the data as an API in different options.
-The task to be demonstrated here is a automated readout of an analog water meter. The water consumption is to be recorded within a house automatization and the water meter is totally analog without any electronic interface. Therefore the task is solved by taking regularly an image of the water meter and digitize the reading.
+This all is integrated in an easy to do setup and use environment, taking care for all the background processing and handling, including regular job scheduler. The user interface is an integrated web server, that can be easily adjusted and offers the data as an API in different options.
+The task to be demonstrated here is an automated readout of an analog water meter. The water consumption is to be recorded within a house automatization and the water meter is totally analog without any electronic interface. Therefore, the task is solved by regularly taking an image of the water meter and digitizing the reading.
There are two types of CNN implemented, a classification network for reading the digital numbers and a single output network for digitalize the analog pointers for the sub digit readings.
-This project is a evolution of the water-meter-system-complete , which uses ESP32-CAM just for taking the image and a 1GB-Docker image to run the neural networks backbone. Here everything is integrated in an ESP32-CAM module with 8MB of RAM and a SD-Card as data storage.
+This project is an evolution of the water-meter-system-complete , which uses ESP32-CAM just for taking the image and a 1GB-Docker image to run the neural network's backbone. Here everything is integrated in an ESP32-CAM module with 8MB of RAM and a SD card as data storage.
diff --git a/initial-setup/index.html b/initial-setup/index.html
index 4e74e12..57733dc 100644
--- a/initial-setup/index.html
+++ b/initial-setup/index.html
@@ -69,7 +69,7 @@
5. General Settings
@@ -120,7 +120,7 @@
Configuration
- Analog/Digital Transition on Watermeters
+ Analog/Digital Transition on Water Meters
Collect images to improve the models
@@ -168,12 +168,12 @@
- Asorted Pages
+ Assorted Pages
Graphical Configuration
@@ -204,7 +204,7 @@
Initial Setup
-
After setting up the device (firmware, sd-card, wlan) the device will connect to the wifi access point and start in an initial setup configuration:
+
After setting up the device (firmware, SD card, WLAN) the device will connect to the wifi access point and start in an initial setup configuration:
In the top you can navigate through 5 steps, that guide you through the necessary setup. All settings can be accessed also later in the normal operation mode (see below).
1. Reference Image
@@ -228,7 +228,7 @@
-‼️ Attention: Updating the reference image, also means, that all alignment images and ROIs needs to be teached again. Therefore do this step later only with caution.
+‼️ Attention: Updating the reference image, also means, that all alignment images and ROIs needs to be taught again. Therefore do this step later only with caution.
If everything is done, you can save the result with "Update Reference Image" (4). Please do not reboot at this stage, but go to the next section.
2. Alignment References
The alignment references are used to realign every taken image to the reference coordinates. Therefore two alignment structures are identified and the image is shifted and rotated according to their position with the target to be in exactly the same position as the reference image. The alignment structures needs to be unique and have a good contrast. You can switch between this two marks with (1).
@@ -242,9 +242,9 @@
First of all, if you don't have that kind of numbers on you meter, you can disable it with the check box at the top (1).
In contrast to the reference images, here there are more ROIs possible. You can switch between them with the drop down box (2). If you need additional ROIs or delete them you can do this with the control at (2).
-Attention: The order of the ROIs defines, how the indiviual digits are combined to the total number. The first ROI is the digit with the highest order, then the second and so on. You can control the order in the selector tab and change it with the buttons "move Next" or "move Previous".
+Attention: The order of the ROIs defines, how the individual digits are combined to the total number. The first ROI is the digit with the highest order, then the second and so on. You can control the order in the selector tab and change it with the buttons "move Next" or "move Previous".
As for the reference images you can change position, size and name of the ROI in the text fields or define them via drag and drop through the mouse button.
-In most cases the digits are ordered in a aequidistant order and have the same size, you can synchronize them with the control in (4).
+In most cases the digits are ordered in a equidistantly and have the same size, you can synchronize them with the control in (4).
Don' t forget to save the settings with "Save" and do not reboot at this stage.
Detail for ROI configuration - Analog Meters
For analog meters the ROI setting is rather straight forward as the meter is usually quadratic with a clear center. The circle should exactly fit to the outer size of the meter and the cross should be in the middle.
@@ -253,13 +253,13 @@
Detail for ROI configuration - Digital Meters
For the digital meters it is a little bit more complicated, as there are different options of digital models, that you can choose.
-Digital meter, that only recognized full digits (0, 1, 2, 3, ... 9) - Naming: dig-class11-....tfl
- Advantage: broad variety of types included in the training
- Disadvantage: partially rotated numbers cannot be detected
-Model with subdigit resulition (0.0, 0.1, 0.2, .... 9.8, 9.9) - Naming: dig-cont-....tfl or dig-class100-....tfl
- Advantage: partial numbers can be detected and a better post processing is possible
- Disadvantage: only limited types of meter types are trained due to the high effort for the training data
+Digital meter, that only recognized full digits (0, 1, 2, 3, ... 9) - Naming: dig-class11-....tfl
+Advantage: broad variety of types included in the training
+Disadvantage: partially rotated numbers cannot be detected
+2. Model with sub-digit resolution (0.0, 0.1, 0.2, .... 9.8, 9.9) - Naming: dig-cont-....tfl or dig-class100-....tfl
+Advantage: partial numbers can be detected and a better post processing is possible
+Disadvantage: only limited types of meter types are trained due to the high effort for the training data
Details and the corresponding "perfect" setting is explained here: Details ROI Configuration
For a first run you can choose the following general settings:
@@ -303,7 +303,7 @@
PostProcessing
MQTT
InfluxDB
-GPIOSettings
+GPIO Settings
Autotimer
DataLogging
Debug
@@ -313,14 +313,14 @@
Some of the sections as well as parameters are mandatory. They can be en/disabled in the first column (1).
The setting itself is done in the next column (2) and a brief explanation you can find in the last column (3).
Don' t forget to save the settings with "Save" and do not reboot at this stage.
-Expert Modus
-With the normal parameters you should be able to make the needed settings for most of the system. Sometimes there is some fine tunning needed. For this there is an expert modus available. This can be enabled with the check box at the top (4). After this you see much more parameters. But before modifiying them you should be really sure, what they are about.
+Expert Mode
+With the normal parameters you should be able to make the needed settings for most of the system. Sometimes there is some fine tunning needed. For this there is an expert mode available. This can be enabled with the check box at the top (4). After this you see much more parameters. But before modifying them you should be really sure, what they are about.
Finish Setup and change to normal operation
After setting up everything, there is a last step to be done:
-With (1) you leave the setup modus and reboot to normal operation mode.
+With (1) you leave the setup mode and reboot to normal operation mode.
Access to setup in normal operation mode
-You can access all the settings also during the normal working mode via the "Settings" menue:
+You can access all the settings also during the normal working mode via the "Settings" menu:
(1) Access to configuration parameters
(2) Update of reference image
diff --git a/nav.yml b/nav.yml
index 44bc08b..4cb1812 100644
--- a/nav.yml
+++ b/nav.yml
@@ -60,7 +60,7 @@ nav:
- outdated--Gasmeter-Log-Downloader.md
- outdated--Migrate-Old-Config-To-New-Config.md
- - Asorted Pages:
+ - Assorted Pages:
# List all pages which are not covered by above list
# Step by step we should migrate those page to the above list
- ...
diff --git a/ota/index.html b/ota/index.html
index ca04e01..bff8bc8 100644
--- a/ota/index.html
+++ b/ota/index.html
@@ -100,7 +100,7 @@
Configuration
- Analog/Digital Transition on Watermeters
+ Analog/Digital Transition on Water Meters
Collect images to improve the models
@@ -148,12 +148,12 @@
- Asorted Pages
+ Assorted Pages