Week 9

(29/03/2021 - 02/04/2021)

Activity :

1. Generate coding for ESP32-Cam
2. Participating in 'Low Touch High Impact' (LOTHI) 2021
3. Meeting with Supervisor about the progress of the project 

Objective :

1. To generate the coding for ESP32-Cam
2. To gain experience in joining the project competition.
3.To update the progress of the FYP project

Content / Procedure :

Generate coding for ESP32-Cam

This week, I continue working on generating the coding for ESP32-Cam by using Arduino IDE. It's quite hard because the connection of my hotspot data in my room is very slow. Besides, my USB to TTL driver also cannot be read by my computer. So, I decided to overcome the issue by connecting my friend's Arduino UNO with ESP32-Cam. Below are the coding and the step on how I manage to overcome the issue.

Connection Diagram :

The connection diagram is simple. Follow the diagram below

Before uploading the code, connect GPIO0 to GND.

Arduino UNO        ESP32-Cam

        5V            -            5V
      GND          -          GND
        Tx            -            Tx
        Rx            -            Rx



Arduino IDE Setup :

In order to upload the code in ESP32-Cam, I have to install the ESP32 board first.

After installing the board, go to File > Example > Camera > CameraWebserver



Code :

#include "esp_camera.h"
#include <WiFi.h> ;
#include "soc/soc.h"
#include "soc/rtc_cntl_reg.h"

 
#define CAMERA_MODEL_AI_THINKER
#include "camera_pins.h"
 
const char* ssid = "********";
const char* password = "*********";
 
void startCameraServer();
 
void setup()
{
WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0
);
Serial.begin(115200);
Serial.setDebugOutput(true);
Serial.println();
 
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;
//init with high specs to pre-allocate larger buffers
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;
}
 
#if defined(CAMERA_MODEL_ESP_EYE)
pinMode(13, INPUT_PULLUP);
pinMode(14, INPUT_PULLUP);
#endif
 
// camera init
esp_err_t err = esp_camera_init(&config);
if (err != ESP_OK) {
Serial.printf("Camera init failed with error 0x%x", err);
return;
}
 
sensor_t * s = esp_camera_sensor_get();
//initial sensors are flipped vertically and colors are a bit saturated
if (s->id.PID == OV3660_PID) {
s->set_vflip(s, 1);//flip it back
s->set_brightness(s, 1);//up the blightness just a bit
s->set_saturation(s, -2);//lower the saturation
}
//drop down frame size for higher initial frame rate
s->set_framesize(s, FRAMESIZE_QVGA);
 
#if defined(CAMERA_MODEL_M5STACK_WIDE)
s->set_vflip(s, 1);
s->set_hmirror(s, 1);
#endif
 
WiFi.begin(ssid, password);
 
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
 
startCameraServer();
 
Serial.print("Camera Ready! Use 'http://");
Serial.print(WiFi.localIP());
Serial.println("' to connect");
}
void loop()
{
// put your main code here, to run repeatedly:
delay(10000);
}

Uploading the code using Arduino IDE :

Before uploading the code, go to Tools and make the below configurations :



Once uploading is finished, remove the wire jumper from GPIO0.

Testing : 

Open the Serial Monitor and press the RST button of ESP32-Cam. At the Serial monitor, it will show the IP Address on which the cam web server has started.


Enter the same IP Address in any internet browser and press Enter.


The web server will now open with some settings.


Scroll down and click on Start Stream


The ESP32-Cam will start streaming video.



Participating in 'Low Touch High Impact' (LOTHI) 2021

After I have generated the coding for ESP-32-Cam. I decided to join the 'Low Touch High Impact' (LOTHI) 2021 competition which been organized by Yayasan Inovasi Malaysia (YIM) for Minggu Sains Negara 2021. The winner of the competition will be announced later.


Meeting with Supervisor about the progress of the project

On Friday (2nd April 2021), I am discussing with my supervisor the progress of my project. My project is 90% done and needs to do some final troubleshoot before Presentation Day. Besides, I am discussing the survey questions that I need to do for my FYP Report. Madam Afifah gives some ideas of the questions and I plan to do the survey questions to nurses on Week 11.




Conclusion :

As a result, I am able to complete my project by adding video streaming even it occurred some issue with uploading the coding. Besides, I also able to join the project competition during this pandemic in our country and able to discuss with my supervisor the progress of my project, and planning on further tasks for my FYP2 report.

Comments