CT-V1 — ESP32 simulation

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

Components

Sketch code

#include <TinyGPSPlus.h>
#include <HardwareSerial.h>
#include <SPI.h>
#include <SD.h>

TinyGPSPlus gps;
HardwareSerial GPSserial(2);

//apelido gpio//
#define ace 32
#define fre 33
#define vol 34
#define GPS_RX 16
#define GPS_TX 17
#define SD_CS   5
#define SD_SCK  18
#define SD_MISO 19
#define SD_MOSI 23

File arquivo;

unsigned long ultimaGravacao = 0;

const unsigned long intervalo = 100; // 100 ms = 10 Hz

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

  pinMode(ace, INPUT);
  pinMode(fre, INPUT);
  pinMode(vol, INPUT);
  pinMode(4, OUTPUT);

  GPSserial.begin(
    115200,
    SERIAL_8N1,
    GPS_RX,
    GPS_TX
  );
  Serial.println("CONECTRACK CT-V1");
  delay(1000);

  SPI.begin(
   SD_SCK,
   SD_MISO,
   SD_MOSI,
   SD_CS
  );

  if (!SD.begin(SD_CS)) {

    Serial.println("ERRO: SD CARD NAO ENCONTRADO");

  } else {

    Serial.println("SD CARD OK");

    arquivo = SD.open("/CT001.CSV", FILE_WRITE);

    if (arquivo) {

      arquivo.println(
        "TEMPO,TPS,BRK,STR,LAT,LON,VEL,ALT"
      );

      arquivo.close();

      Serial.println("ARQUIVO CT001.CSV CRIADO");

    } else {

      Serial.println("ERRO AO CRIAR ARQUIVO");

    }
  }

  Serial.println("GPS iniciado");
}

void loop() {
  int TPS = map(analogRead(ace), 0, 4095, 0, 100);
  int BRK = map(analogRead(fre), 0, 4095, 0, 100);
  int STR = map(analogRead(vol), 0, 4095, -80, 80);
  while (GPSserial.available()) {
     gps.encode(GPSserial.read());
   }
   if (millis() - ultimaGravacao >= intervalo) {

    ultimaGravacao = millis();
   }
  Serial.print("tempo");
  Serial.print(millis()/1000);
  Serial.print("S");

  Serial.print("TPS ");
  Serial.print(TPS);
  Serial.print("%");

  Serial.print("  BRK ");
  Serial.print(BRK);
  Serial.print("%");

  Serial.print("  STR ");
  Serial.print(STR);
  Serial.print("°");

  Serial.print("  LAT ");
  Serial.print(gps.location.lat(), 6);

  Serial.print("  LON ");
  Serial.print(gps.location.lng(), 6);

  Serial.print("  VEL ");
  Serial.print(gps.speed.kmph());
  Serial.print(" km/h");

  Serial.print("  ALT ");
  Serial.print(gps.altitude.meters());
  Serial.println("m");

 arquivo = SD.open("/CT001.CSV", FILE_APPEND);

    if (arquivo) {
      arquivo.print(millis()/1000);
      arquivo.print("S");
      arquivo.print(",");

      arquivo.print(TPS);
      arquivo.print("%");
      arquivo.print(",");

      arquivo.print(BRK);
      arquivo.print("%");
      arquivo.print(",");

      arquivo.print(STR);
      arquivo.print("°");
      arquivo.print(",");

      arquivo.print(gps.location.lat(), 6);
      arquivo.print("°");
      arquivo.print(",");

      arquivo.print(gps.location.lng(), 6);
      arquivo.print("°");
      arquivo.print(",");

      arquivo.print(gps.speed.kmph(), 1);
      arquivo.print(" km/h");
      arquivo.print(",");

      arquivo.print(gps.altitude.meters(), 1);
      arquivo.print("M");
      arquivo.println(",");

      arquivo.close();

    } else {

      Serial.println("ERRO: NAO FOI POSSIVEL GRAVAR NO SD")