Segundo o site do Tensorflow:
“O TensorFlow Lite é um conjunto de ferramentas para ajudar os desenvolvedores a executar modelos do TensorFlow em dispositivos móveis, incorporados e de IoT. Ele ativa a inferência de machine learning no dispositivo com baixa latência e um tamanho do binário reduzido.”
Vamos criar uma rede neural para converter dados do sensor ultrassônico HC-SR04 em distância.

O objetivo aqui é de entender como gerar um conjunto de dados, treinar um modelo de deep learning para converte-lo para o dispositivo de IoT. Aqui iremos utilizar o NodeMCU com o ESP32, o qual aparece na imagem abaixo:

O primeiro passo será o de obter a biblioteca do Tensorflow para o nosso projeto. Aqui utilizaremos o framework do Arduino.
Vamos clonar o repositório do TensorFlow na nossa máquina como o comando:
git clone https://github.com/tensorflow/tensorflow.git
Code language: PHP (php)
Após baixar o repositório, via terminal, entre na pasta e gere um programa de exemplo. Isso será útil para extrair a biblioteca do TensorFlow para o NodeMCU:
sudo make -f tensorflow/lite/micro/tools/make/Makefile TARGET=esp generate_hello_world_esp_project
Isso irá gerar um projeto na pasta
tensorflow/lite/micro/tools/make/gen/esp_xtensa-esp32/prj/hello_world
Entre na pasta anterior e encontre a pasta chamada /esp-idf. Em seguida, copie a pasta tfmicro para um outro local, pois iremos utilizá-la em nossos projetos. No arquivo zip a seguir existe um arquivo chamado library.json, sendo que esse último deve ser salvo dentro da raiz da pasta tfmicro.
O conteúdo do arquivo é apresentado a seguir.
{
"build": {
"flags": "-Ithird_party/ruy -Ithird_party/gemmlowp -Ithird_party/flatbuffers/include -DNDEBUG -Ofast -Wno-unused-variable -Wno-strict-aliasing -Wno-return-type -Wno-strict-aliasing -Wno-return-type -Wno-strict-aliasing"
}
}
Code language: JSON / JSON with Comments (json)
Modifique a partir da linha 34 do arquivo base.h, que está na pasta tfmicro/flatbuffers modifique da seguinte forma:
De:
#if defined(ARDUINO) && !defined(ARDUINOSTL_M_H)
#include <utility.h>
#else
#include <utility>
#endif
Code language: CSS (css)
Para:
#include <utility>
Code language: HTML, XML (xml)
Vamos utilizar o Platformio dentro do VSCode para criar um novo projeto.
Crie um novo projeto seguindo as figuras a seguir:



Modifique o arquivo patformio.ini para o seguinte:

Na raiz do projeto adicione o arquivo custom.csv
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 20K,
otadata, data, ota, 0xe000, 8K,
firm, app, ota_0, , 3400K,
eeprom, data, 0x99, , 4K,
spiffs, data, spiffs, , 444K,
Code language: PHP (php)
Salve a pasta tfmicro na pasta lib do projeto que acabamos de criar.
Compile o projeto e verifique se não existe nenhum erro.
Com isso temos os elementos básicos para criar um projeto usando o TensoFlow Lite para o ESP32.
No próximo post iremos criar um projeto para coletar dados do sensor HC-SR04 para treinar um modelo de deep learning capaz de determinar distâncias, embora existam bibliotecas para esse sensor, será interessante utilizar uma abordagem diferente para a determinação de distâncias. Poderíamos, por exemplo, integrar o sensor de umidade e temperatura para fornecer dados de entrada para obter a distância em condições ambientais distintas.