How to add button for sound

Hi everyone.
The ESP32CAM AP sketch shown camera image in phone OK, question is how to add a button on phone which make voice ('A pressed') when pressed.
the sketch included two subs, don't how to post.

The attached picture shown a interface to operate the ESP32CAM, say the last button Flash which can control the LED flash on camera.

Can I added a button and got a SOUND when pressed?
Thanks
Adam
The sketch from:

SKETCH:

#include "esp_camera.h"
#include <WiFi.h>

//
// WARNING!!! Make sure that you have either selected ESP32 Wrover Module,
//            or another board which has PSRAM enabled
//

// Select camera model
//#define CAMERA_MODEL_WROVER_KIT
//#define CAMERA_MODEL_ESP_EYE
//#define CAMERA_MODEL_M5STACK_PSRAM_
//#define CAMERA_MODEL_M5STACK_WIDE
#define CAMERA_MODEL_AI_THINKER

#include "camera_pins.h"

const char* ssid = "ESP32-CAM Access Point";
const char* password = "123456789";

void startCameraServer();

void setup() {
  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.softAP(ssid, password);
  IPAddress IP = WiFi.softAPIP();
  Serial.print("AP IP address: ");
  Serial.println(IP);

  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);
}

Yes, it's technically possible to add a button to the existing Web Server. Is it easy... No... not for a beginner.

That example contains some pretty advanced coding and changing it is not something that I would attempt unless you really know what you are doing. The main HTML for the page is compressed/encoded... all you get is bunch of HEX - it's not easy to update.

Check out...

1 Like

Thank you red_car for the link.
actually I did added and edited button from HTML code, my question is how to get HTML page speak out the sentence in ESP32CAM?

The ESPCAM boards that I am aware do not have any audio capability, although there may be some around.

I guess you could always hook up an external amplifier and play pre-recorded sound. Check out this example

1 Like

Thank for the solution.
yes, the ESP32 don't have audio, what I was thinking is use (html + js) generate audio which is so easy in HTML page, but hard when used in ESP32, decode audio file into base 64, these be able to load file now, but my ESP32 keep crash, do't know why?

the reason make things complex is what I like to have is let my phone speak instead of the ESP32 speak itself.

Ah I see... so you want the web page to "speak".. not the ESP32.

That is something quite different.

This may help [Solved] Play audio on website - ESP32 Forum

1 Like

Thank you red_car.
I'll dig it and see.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.