arduino <> esp32 test2 — ESP32 simulation

An interactive ESP32 circuit simulation you can run free in your browser on Velxio, by aleenasrky.

Components

Sketch code

#include <Arduino.h>
#include <math.h>
#include <ArduTFLite.h>

#include "sine_model_data.h"

constexpr int tensor_arena_size = 4 * 1024;

uint8_t tensor_arena[tensor_arena_size];

void setup() {
  Serial.begin(115200);
  delay(1000);

  Serial.println();
  Serial.println("==============================");
  Serial.println("ESP32 TENSORFLOW LITE");
  Serial.println("HELLO WORLD");
  Serial.println("==============================");

  // Initialize model
  if (!modelInit(
        g_sine_model_data,
        tensor_arena,
        tensor_arena_size
      )) {

    Serial.println("MODEL INIT: FAIL");
    return;
  }

  Serial.println("MODEL INIT: PASS");
  Serial.println("MODEL READY");
  Serial.println();
}

void loop() {

  const float test_inputs[] = {
    0.0f,
    0.5f,
    1.0f,
    1.5f,
    3.0f
  };

  const int number_of_tests = 5;

  for (int i = 0; i < number_of_tests; i++) {

    float x = test_inputs[i];

    // Set model input
    if (!modelSetInput(x, 0)) {
      Serial.println("INPUT: FAIL");
      continue;
    }

    unsigned long start = micros();

    // Run inference
    if (!modelRunInference()) {
      Serial.println("INFERENCE: FAIL");
      continue;
    }

    unsigned long elapsed = micros() - start;

    // Read model output
    float prediction = modelGetOutput(0);

    float expected = sin(x);
    float error = fabs(prediction - expected);

    Serial.println("------------------------------");

    Serial.print("Input: ");
    Serial.println(x, 4);

    Serial.print("Model prediction: ");
    Serial.println(prediction, 6);

    Serial.print("Expected sin(x): ");
    Serial.println(expected, 6);

    Serial.print("Error: ");
    Serial.println(error, 6);

    Serial.print("Inference time: ");
    Serial.print(elapsed);
    Serial.println(" microseconds");

    Serial.println("INFERENCE: PASS");

    delay(500);
  }

  Serial.println();
  Serial.println("TEST COMPLETE");

  while (true) {
    delay(3000);
  }
}

More projects by aleenasrky