diff --git a/firmwareCarroEsp32/.vscode/extensions.json b/firmwareCarroEsp32/.vscode/extensions.json
index 8281e64..0f0d740 100644
--- a/firmwareCarroEsp32/.vscode/extensions.json
+++ b/firmwareCarroEsp32/.vscode/extensions.json
@@ -1,7 +1,7 @@
{
- // See http://go.microsoft.com/fwlink/?LinkId=827846
- // for the documentation about the extensions.json format
- "recommendations": [
- "platformio.platformio-ide"
- ]
-}
\ No newline at end of file
+ // See http://go.microsoft.com/fwlink/?LinkId=827846
+ // for the documentation about the extensions.json format
+ "recommendations": [
+ "platformio.platformio-ide"
+ ]
+}
diff --git a/firmwareCarroEsp32/data/index.html b/firmwareCarroEsp32/data/index.html
new file mode 100644
index 0000000..a84ec9a
--- /dev/null
+++ b/firmwareCarroEsp32/data/index.html
@@ -0,0 +1,222 @@
+
+
+
+
+
+ ESP32 CARRO
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/firmwareCarroEsp32/platformio.ini b/firmwareCarroEsp32/platformio.ini
index ae9fc16..5d1b8c2 100644
--- a/firmwareCarroEsp32/platformio.ini
+++ b/firmwareCarroEsp32/platformio.ini
@@ -13,4 +13,9 @@ platform = espressif32
board = mhetesp32devkit
framework = arduino
-monitor_speed = 115200
\ No newline at end of file
+monitor_speed = 115200
+upload_protocol = espota
+upload_port = 192.168.1.109
+upload_flags =
+ --port=3232
+ --auth=un260874
\ No newline at end of file
diff --git a/firmwareCarroEsp32/src/OpenTB6612FNG/OpenTB6612FNG.cpp b/firmwareCarroEsp32/src/OpenTB6612FNG/OpenTB6612FNG.cpp
index fb16086..553b644 100644
--- a/firmwareCarroEsp32/src/OpenTB6612FNG/OpenTB6612FNG.cpp
+++ b/firmwareCarroEsp32/src/OpenTB6612FNG/OpenTB6612FNG.cpp
@@ -1,10 +1,6 @@
# include "Arduino.h"
# include "OpenTB6612FNG.h"
-
-
-
-
OpenTB6612FNG::OpenTB6612FNG(int TP) {
pinMode(AIN1, OUTPUT);
@@ -13,47 +9,16 @@ OpenTB6612FNG::OpenTB6612FNG(int TP) {
pinMode(BIN1, OUTPUT);
pinMode(BIN2, OUTPUT);
pinMode(PWMB, OUTPUT);
- analogWriteFreq(20000);
- analogWriteRange(255);
+ analogWriteResolution(10);
+ analogWriteFrequency(10000);
-
}
void OpenTB6612FNG::MotorIz(int value) {
- /* if (value >= 0) {
- // si valor positivo vamos hacia adelante
-
- digitalWrite(AIN1, HIGH);
- digitalWrite(AIN2, LOW);
- } else {
- // si valor negativo vamos hacia atras
-
- digitalWrite(AIN1, LOW);
- digitalWrite(AIN2, HIGH);
- value *= -1;
- }
- */
- // Setea Velocidad
-
analogWrite(MOTOR_IZQ, value);
}
void OpenTB6612FNG::MotorDe(int value) {
- /* if (value >= 0) {
- // si valor positivo vamos hacia adelante
-
- digitalWrite(BIN1, HIGH);
- digitalWrite(BIN2, LOW);
- } else {
- // si valor negativo vamos hacia atras
-
- digitalWrite(BIN1, LOW);
- digitalWrite(BIN2, HIGH);
- value *= -1;
- }
- */
- // Setea Velocidad
-
analogWrite(MOTOR_DER, value);
}
@@ -78,9 +43,6 @@ void OpenTB6612FNG::Backward()
digitalWrite(BIN2, HIGH);
}
-
-
-
void OpenTB6612FNG::Stop()
{
digitalWrite(AIN1, LOW);
diff --git a/firmwareCarroEsp32/src/OpenTB6612FNG/OpenTB6612FNG.h b/firmwareCarroEsp32/src/OpenTB6612FNG/OpenTB6612FNG.h
index 25f7680..eadc306 100644
--- a/firmwareCarroEsp32/src/OpenTB6612FNG/OpenTB6612FNG.h
+++ b/firmwareCarroEsp32/src/OpenTB6612FNG/OpenTB6612FNG.h
@@ -1,12 +1,13 @@
#ifndef OpenTB6612FNG_h
#define OpenTB6612FNG_h
#include "Arduino.h"
-#define PWMA D1
-#define AIN1 D2
-#define AIN2 D3
-#define BIN1 D4
-#define BIN2 D5
-#define PWMB D6
+#include
+#define PWMA 33
+#define AIN1 26
+#define AIN2 25
+#define BIN1 27
+#define BIN2 14
+#define PWMB 13
#define MOTOR_IZQ PWMB
#define MOTOR_DER PWMA
@@ -14,7 +15,7 @@
class OpenTB6612FNG{
public:
OpenTB6612FNG(int TP);
-
+
void MotorIz(int value);
void MotorDe(int value);
void Motores(int left, int righ);
diff --git a/firmwareCarroEsp32/src/carroEsp32.h b/firmwareCarroEsp32/src/carroEsp32.h
index fb5ca54..40498a0 100644
--- a/firmwareCarroEsp32/src/carroEsp32.h
+++ b/firmwareCarroEsp32/src/carroEsp32.h
@@ -1,10 +1,10 @@
#ifndef CARROESP32_h
#define CARROESP32_h
-#define OUT1 A13
-#define OUT2 A16
-#define OUT3 A15
-#define OUT4 A10
-#define OUT5 A14
+#define OUT1 36
+#define OUT2 39
+#define OUT3 34
+#define OUT4 35
+#define OUT5 32
int sensores[5] = {0, 0, 0, 0, 0};
@@ -15,6 +15,7 @@ void readSensors()
sensores[2] = analogRead(OUT3);
sensores[3] = analogRead(OUT4);
sensores[4] = analogRead(OUT5);
+
}
void printSensores()
@@ -35,8 +36,27 @@ void init_sensores(){
pinMode(OUT5, INPUT);
}
+int readSensors(int chanel)
+{
-
+ switch (chanel)
+ {
+ case 0:
+ return analogRead(OUT1);
+ case 1:
+ return analogRead(OUT2);
+ case 2:
+ return analogRead(OUT3);
+ case 3:
+ return analogRead(OUT4);
+ case 4:
+ return analogRead(OUT5);
+
+
+ default:
+ return 0;
+ }
+}
diff --git a/firmwareCarroEsp32/src/config_ota.hpp b/firmwareCarroEsp32/src/config_ota.hpp
new file mode 100644
index 0000000..97b3f46
--- /dev/null
+++ b/firmwareCarroEsp32/src/config_ota.hpp
@@ -0,0 +1,9 @@
+
+void ota_init()
+{
+ ArduinoOTA.setHostname("OtaEsp32");
+ ArduinoOTA.setPassword((const char *)"un260874");
+ ArduinoOTA.setPort(3232);
+ ArduinoOTA.begin();
+}
+
diff --git a/firmwareCarroEsp32/src/main.cpp b/firmwareCarroEsp32/src/main.cpp
index 06a3d18..2836e0f 100644
--- a/firmwareCarroEsp32/src/main.cpp
+++ b/firmwareCarroEsp32/src/main.cpp
@@ -1,30 +1,72 @@
#include
-#include "BluetoothSerial.h"
#include "carroEsp32.h"
#include "OpenTB6612FNG/OpenTB6612FNG.h"
+#include "wifi_config.hpp"
+#include "SPIFFS.h"
+#include
+#include "config_ota.hpp"
+TaskHandle_t TareaProcesador1;
+TaskHandle_t TareaProcesador2;
+void loop1(void *pvParameters);
+void loop2(void *pvParameters);
+int anterior = millis();
+char sensorCadena[16];
+
OpenTB6612FNG misMotores(0);
-BluetoothSerial ESP_BT; //Object for Bluetooth
+#include "managerServer.hpp"
-void setup() {
- init_sensores();
+void setup()
+{
Serial.begin(115200);
+ wifi();
+ ota_init();
+ SPIFFS.begin();
+ init_sensores();
+
+ webSocket.begin();
+ webSocket.onEvent(webSocketEvent);
+ server.begin();
+ xTaskCreatePinnedToCore(loop1, "Tarea1", 10000, NULL, 1, &TareaProcesador1, 0);
+ xTaskCreatePinnedToCore(loop2, "Tarea2", 10000, NULL, 1, &TareaProcesador2, 1);
+ delay(200);
+
Serial.println("Carro Esp32");
- ESP_BT.begin("CARRO ESP32"); //Name of your Bluetooth Signal
+
+ // handle index
+ server.on("/", []() {
+ File index = SPIFFS.open("/index.html", "r");
+ server.streamFile(index, "text/html");
+ index.close();
+ });
}
-void loop() {
- misMotores.Forward();
- misMotores.Motores(255,255);
- if (ESP_BT.available()) //Check if we receive anything from Bluetooth
+void loop()
+{
+}
+void loop1(void *pvParameters)
+{
+ for (;;)
{
- //incoming = ESP_BT.read(); //Read what we recevive
- Serial.print("Received:"); Serial.println(ESP_BT.read());
+ webSocket.loop();
+ ArduinoOTA.handle();
+ server.handleClient();
+ delay(10);
}
- //readSensors();
- //printSensores();
- //delay(500);
-
}
+void loop2(void *pvParameters)
+{
+ for (;;)
+ {
+
+ if (((millis() - anterior) > 100) && (nCliente > -1))
+ {
+ anterior = millis();
+
+ sprintf(sensorCadena, "%d",readSensors(0));
+ webSocket.sendTXT(nCliente, sensorCadena);
+ }
+ }
+}
\ No newline at end of file
diff --git a/firmwareCarroEsp32/src/managerServer.hpp b/firmwareCarroEsp32/src/managerServer.hpp
new file mode 100644
index 0000000..3854672
--- /dev/null
+++ b/firmwareCarroEsp32/src/managerServer.hpp
@@ -0,0 +1,63 @@
+int nCliente = -1;
+WebServer server (80);
+WebSocketsServer webSocket = WebSocketsServer(81);
+
+
+
+void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t length) {
+
+ switch (type) {
+ case WStype_DISCONNECTED:
+ Serial.printf("[%u] Disconnected!\n", num);
+ misMotores.Stop();
+ nCliente =-1;
+ break;
+
+ case WStype_CONNECTED: {
+ IPAddress ip = webSocket.remoteIP(num);
+ Serial.printf("[%u] Connected from %d.%d.%d.%d url: %s\n", num, ip[0], ip[1], ip[2], ip[3], payload);
+ webSocket.sendTXT(num, "Connected");
+ nCliente = num; // send message to client
+ }
+ break;
+
+ case WStype_TEXT:
+ //Serial.printf("Número de conexión: %u - Texto recibido: %s\n", num, payload);
+ if (num == 0) { //Únicamente va a reconocer la primera conexión (softAP).
+ String str = (char*)payload; //Ejemplo de texto recibido: Velocidad:100 Angulo:-1.88
+ int velocidad = str.substring(str.indexOf(':', str.indexOf("Velocidad:")) + 1, str.indexOf(' ', str.indexOf("Velocidad:"))).toInt();
+ float angulo = str.substring(str.indexOf(':', str.indexOf("Angulo:")) + 1).toFloat();
+
+ //uint8_t velocidadMax = velocidad*255/100; //La velocidad se envía con valores entre 0 y 100. Se debe mapear a 0-255
+ uint8_t velocidadMax = 85 + velocidad * 170 / 100; //Se corrige el mapeo porque el motor entre los valores 0-84 no se mueve, se mueve ente los valores 85-255
+
+ uint8_t velocidadSin = abs(velocidadMax * sin(angulo)); //Giro coche rápido
+ //uint8_t velocidadSin = abs(velocidadMax*sin(abs(2*angulo/3)+PI/6)); //Giro coche intermedio
+ //uint8_t velocidadSin = abs(velocidadMax*sin(abs(angulo/2)+PI/4)); //Giro coche lento
+ float anguloCos = cos(angulo);
+
+ //Sentido de giro de los motores
+ if (angulo > 0) { //Primer y segundo cuadrante
+ misMotores.Forward();
+ } else if (angulo < 0) { //Tercer y cuarto cuadrante
+ misMotores.Backward();
+ } else { //Parado
+ misMotores.Stop();
+ }
+ //Velocidad de los motores
+ uint8_t izq, der;
+ if (anguloCos > 0) { //Primer y cuarto cuadrante
+ izq = velocidadMax;
+ der = velocidadSin;
+ } else { //Segundo y tercer cuadrante
+ izq = velocidadSin;
+ der = velocidadMax;
+ }
+ misMotores.Motores(izq,der);
+
+ Serial.print(anguloCos); Serial.print(" "); Serial.print(izq); Serial.print(" "); Serial.println(der);
+ }
+ break;
+ }
+}
+
diff --git a/firmwareCarroEsp32/src/wifi_config.hpp b/firmwareCarroEsp32/src/wifi_config.hpp
new file mode 100644
index 0000000..92d097f
--- /dev/null
+++ b/firmwareCarroEsp32/src/wifi_config.hpp
@@ -0,0 +1,28 @@
+#include
+#include
+#include
+#include
+
+const char* ssid = "mdchaparror";
+const char* password = "un260874";
+int contconexion = 0;
+void wifi(){
+//setup wifi
+ WiFi.mode(WIFI_STA); //para que no inicie el SoftAP en el modo normal
+ WiFi.begin(ssid, password);
+ while (WiFi.status() != WL_CONNECTED and contconexion < 50) { //Cuenta hasta 50 si no se puede conectar lo cancela
+ ++contconexion;
+ delay(500);
+ Serial.print(".");
+ }
+ if (contconexion < 50) {
+
+ Serial.println("");
+ Serial.println("WiFi conectado");
+ Serial.println(WiFi.localIP());
+ }
+ else {
+ Serial.println("");
+ Serial.println("Error de conexion");
+ }
+}
\ No newline at end of file