0% found this document useful (0 votes)
12 views

Code

The document includes code for setting up an ESP32 to control motors and a camera over Ethernet. It initializes libraries for Ethernet, motor control, camera control and more. It sets up an Ethernet server to listen for commands to control motors or retrieve camera images.
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views

Code

The document includes code for setting up an ESP32 to control motors and a camera over Ethernet. It initializes libraries for Ethernet, motor control, camera control and more. It sets up an Ethernet server to listen for commands to control motors or retrieve camera images.
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 3

#include <Ethernet.

h>
# <HTTPClient.h>
include <SPI.h>
include <L293D.h
#include <Motor.h>
#include <WiFi.h>
#include <camera_pins.h>
#include <FS.h>
#include <SD_MMC.h>
#include <soc/soc.h>
#include <soc/rtc_cntl_reg.h>
#include <esp_camera.h>

// MARQUESOFT's CODE
int RecievedString;
float valueB;
float valueC;
String readString = String(20);

byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x9A, 0x4D };


EthernetServer server(80); // port to listen on
EthernetClient client;

// L293D motor shield setup


L293D motor1(10, 11, 9, 8); // motor 1: left wheel
L293D motor2(5, 6, 3, 2); // motor 2: right wheel
L293D motor3(13, 12, 14, 15); // motor 3: blade

// Bluetooth setup
AF_DCMotor motor4(4); // motor 4: connected to HC-06 for manual control

// Camera setup
camera_config_t config;
config.ledc_channel = LEDC_CHANNEL_0;
config.ledc_timer = LEDC_TIMER_0;
config.pin_d0 = Y2_GPIO_NUM;
config.pin_d1 = Y3_GPIO_NUM;
config.pin_d2 = Y4_GPIO_NUM;
config.pin_d3 = Y5_GPIO_NUM;
config.pin_d4 = Y6_GPIO_NUM;
config.pin_d5 = Y7_GPIO_NUM;
config.pin_d6 = Y8_GPIO_NUM;
config.pin_d7 = Y9_GPIO_NUM;
config.pin_xclk = XCLK_GPIO_NUM;
config.pin_pclk = PCLK_GPIO_NUM;
config.pin_vsync = VSYNC_GPIO_NUM;
config.pin_href = HREF_GPIO_NUM;
config.pin_sscb_sda = SIOD_GPIO_NUM;
config.pin_sscb_scl = SIOC_GPIO_NUM;
config.pin_pwdn = PWDN_GPIO_NUM;
config.pin_reset = RESET_GPIO_NUM;
config.xclk_freq_hz = 20000000;
config.pixel_format = PIXFORMAT_JPEG;

if (psramFound()) {
config.frame_size = FRAMESIZE_UXGA;
config.jpeg_quality = 10;
config.fb_count = 2;
} else {
config.frame_size = FRAMESIZE_SVGA;
config.jpeg_quality = 12;
config.fb_count = 1;
}

esp_err_t err = esp_camera_init(&config);


if (err != ESP_OK) {
Serial.printf("Camera init failed with error 0x%x", err);
return;
}

// Voltage monitoring initialization


const int voltageDividerPin = A0;
const int voltageDividerResistor = 10000;
const float voltageDividerFactor = 1.0;

void setup() {
Serial.begin(9600);
Ethernet.begin(mac);
server.begin();

// L293D motor shield initialization


motor1.setSpeed(255);
motor2.setSpeed(255);
motor3.setSpeed(255);

// Bluetooth initialization
motor4.setSpeed(255);
}

void loop() {
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();

if (readString.length() < 100) {


readString.concat(c);
}

if (c == 'H') {
int Is = readString.indexOf("/");
int Iq = readString.indexOf("?");
int Ib = readString.indexOf("b");
int Ic = readString.indexOf("c");

if (readString.indexOf("?") > 1) {
if (Ib == (Iq + 1)) {
char carray[5];
readString.toCharArray(carray, 5, (Ib + 1));
valueB = atof(carray);
Serial.print("B is now: ");
Serial.println(valueB);
client.print(content_main_top);
client.print("B is now: ");
client.print(valueB);

// Example: control motor 3 (blade)


motor3.forward(valueB);
}

else if (Ic == (Iq + 1)) {


char carray[5];
readString.toCharArray(carray, 5, (Ic + 1));
valueC = atof(carray);
Serial.print("C is now: ");
Serial.println(valueC);
client.print("C is now: ");
client.println(valueC);

// Example: control motor 4 (manual control)


motor4.run(valueC);
}
}
}
}
}
}
}

You might also like