I'm working with the ESP32-CAM for recognizing QR codes.

Hi all,I'm working with the ESP32-CAM for recognizing QR codes. Everything worked perfectly, and I was able to recognize QR codes until I used SoftSerial to transmit the SBUS signal. I can receive the SBUS signal via RX2, but in my project, I need to transmit it to the flight controller.
7 Replies
Ben
Ben3mo ago
attachment 0
Ben
Ben3mo ago
Here is just the camera configuration and the two UARTs I need to use. The problem occurs when I use SoftSerial.
Ben
Ben3mo ago
Can anyone please help me solve this problem? I'm trying to send the SBUS signal via a GPIO pin, and I'm not sure if that's going to work.
Ben
Ben3mo ago
attachment 0
wafa_athmani
wafa_athmani3mo ago
the issue appears to be caused by the use of Software Serial library,Use (UART) instead of Software Serial, Here's an example of the configuration on how you could use hardware UART for transmitting the SBUS signal
attachment 0
Enthernet Code
Enthernet Code3mo ago
Am unable to access and see your code but from your question you can use the code below: #include <HardwareSerial.h> #include <Wire.h> #include "esp_camera.h" #include "QR_Code.h" HardwareSerial MySerial(2); // Use Serial2 for SBUS void setup() { Serial.begin(115200); MySerial.begin(100000, SERIAL_8E2, RX2, TX2); // Initialize SBUS with appropriate baud rate and pins // Camera initialization code 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; } // Initialize the camera esp_err_t err = esp_camera_init(&config); if (err != ESP_OK) { Serial.printf("Camera init failed with error 0x%x", err); return; } // QR Code recognition setup // ... } void loop() { // QR Code recognition logic // ... // SBUS communication logic if (MySerial.available()) { // Read and transmit SBUS data while (MySerial.available()) { int incomingByte = MySerial.read(); // Process SBUS data } } // Attach your code logic here } This only works if you use the hardware esp32 ports instead of the software
Ben
Ben3mo ago
With both codes, I can only receive an SBUS signal via RX2 (pin 16). However, I need to send the same SBUS signal via TX, which is not available on the ESP32-CAM. That's why I created a softSerial. The problem is that when I use the camera, everything works perfectly except the camera itself, which gives the error (GPIO is already installed)