GithubHelp home page GithubHelp logo

lewisxhe / esp32-camera-screen Goto Github PK

View Code? Open in Web Editor NEW
66.0 11.0 52.0 33.61 MB

TTGO T-camera Plus

Home Page: https://ru.aliexpress.com/item/TTGO-T-camera-Plus-ESP32-DOWDQ6-8-MB-SPRAM-OV2640-1-3/32971057846.html?fbclid=IwAR1uUoWC-UiemD8rKwg15WvpM7zhtvxUxdZhh0jnbrkFkNah6MV6Stg5Kag

Makefile 0.04% C 98.49% C++ 1.30% Objective-C 0.17% Shell 0.01%

esp32-camera-screen's Introduction

TTGO Camera Plus

TTGO Camera && TTGO Camera Plus

Function TTGO T-Câmera TTGO T-Câmera Plus
MIC not supported supported
SDCard not supported supported
BME280 supported supported
Charging supported supported
I2C supported supported
Screen OLED SSD1306/0.96 IPS Panel ST7789/1.3
Camera OV2640 OV2640
PIR supported not supported
User button supported not supported
Core ESP32-WROVER-B ESP32-DOWDQ6
PSRAM 8MBytes 8MBytes
FLASH 4MBytes 4MBytes
UART CP2104 CP2104
  • Many people can't compile because I am compiling with the latest ESP-WHO. With the update of the official framework, some files may be removed. I re-updated to the latest framework, commit id : 258751b5b615ffdc2e0f43f8815b6ffbaeb3da03 As the framework update may not be able to compile smoothly, please go back to the ESP-WHO 258751b5b615ffdc2e0f43f8815b6ffbaeb3da03 repository to compile.

  • The SCCB driver in esp-who uses the IO emulation method. I rewrote it to I2C to drive it so that I can mount multiple devices on the I2C bus ,Need to replace sccp.c in the SCCB directory with esp-who/components/esp32-camera/driver/sccb.c (Esp-who is now configured by default as a hardware I2C driver)

  • At present, the program is not stable, and the wake-up of the voice conflicts with a certain part of the program. Since the voice wake-up code cannot be viewed, this problem cannot be solved. The code just demonstrates that the TTGO Camera Plus board hardware is intact.

  • Since TTGO Camera Plus does not have physical buttons, face information entry will be entered on the web page.

  • Turn on the FACE_DETECT_IN_SCREEN macro(in main.cpp), face recognition will be displayed in the display, and the microphone will be disabled. The web page will not be viewable. Only face input and camera parameters can be adjusted.

Board Modify

  • The Camera Plus version sold by TTGO will not have the BME280 sensor, because the temperature on the board affects the accuracy of the sensor. The default program does not enable the BME280 function. If necessary, turn on the ENABLE_BME280 (on app_main.cpp line 35)
  • In a separate screen display, the wifi hotspot is only turned on, and the connection does not respond.

TTGO CAMERA PINS

Name Num
Y9 36
Y8 37
Y7 38
Y6 39
Y5 35
Y4 26
Y3 13
Y2 34
VSNC 5
HREF 27
PCLK 25
XCLK 4
SIOD 18
SIOC 23
PWD No use
RESET No use

BME280 & IP5306 Pins

Name Num
SDA 18
SCL 23

MIC Pins

Name Num
I2S_SCLK 14
I2S_LCLK 32
I2S_DOUT 33
I2S_DIN No use

TFT & SD Card Pins

Name Num
MISO 22
MOSI 19
CLK 21
DC 15
TFT_CS 12
TFT_BK 2
SD_CS 0

=========================================

If you can't compile smoothly, please follow the steps below. If you still can't compile, please issue an issue.

External extension

Test Video

YouTube

esp32-camera-screen's People

Contributors

lewisxhe avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

esp32-camera-screen's Issues

ov7670

hi
how work with ov7670 without fifo

ESPHome General Configuration

Here are all the things I discovered in my attempt to get everything working on this board with ESPHome. Hope it helps someone if you learn something interesting please share back.

ESPHome working things

TTGO-Camera-Plus Module 
ST7789 Display IPS Panel 1.3 Inch 260ppi 240x240 16-bit full color pixels
OV2640 V2.1 2Megapixel
MSM261S4030H0 I2S Mic
MPU6050 Accelerometer/Gyroscope Sensor
IP5306 Battery Management
PSRAM

ESPHome doesn't currently support SDCards

SDCard Slot 

Issues:
1.) Devices use flash pins
2.) The camera uses the same I2C pins as the other I2C devices BME, MPU6050, IP5306
3.) The display code required a non-existent reset pin.
4.) Voice Assistant requires esp-idf to function properly

Fixes:
1.) Use DIO mode
2.) ESPHome ssieb added a patch below to fix this issue.
3.) ESPHome Clyde added a patch to use a different display driver to not require the reset pin.
4.) Switch code to esp-idf but other fixes won't work as they only work with Arduino builds. :(

Uncomment different parts of the code if you want to play with different features some won't currently work with everything.

The last thing I was trying to do was to display the camera feed on the display with an imgproxy docker as online_image only supports PNG currently. Got it displaying online images just not the camera feed (Currently crashes when you try to use interval to load images)

Voice Assistant works pretty good displays what you say on the LCD display etc.

Have fun!

# TTGO-Camera Plus 001 https://www.lilygo.cc/en-ca/products/t-camera-plus

substitutions:
  device_friendly_name: ttgo-camera-plus-001
  device_name: ttgo-camera-plus-001
  created_by: "TTGO 20190214"
  device_description: "TTGO-Camera-Plus Module with ST7789 Display IPS Panel 1.3 Inch 260ppi 240x240 16-bit full color pixels, OV2640 V2.1 2Megapixel, MSM261S4030H0 I2S Mic, MPU6050 Accelerometer/Gyroscope Sensor, SDCard Slot & IP5306 Battery Management"
  
  # Pin define
 
  # SDCard
  sd_cs: GPIO0 # Chip Select

  # SPI
  spi_clk: GPIO21  # Serial Clock
  spi_mosi: GPIO19 # Main Out Sub In
  spi_miso: GPIO22 # Main In Sub Out
  
  # Display
  #1: BLK = Backlight
  #2: D/C = Data/Command
  #3: RES = Reset
  #4: SDA = Serial Data or SPI MOSI
  #5: SCL = Serial Clock or SPI SCK
  #   (These pins being active conflict with the other I2C devices on the same lines)
  #6: VCC (3.3V)
  #7: Ground
  dis_cs: GPIO12 # Chip Select
  dis_dc: GPIO15 # Data/Command
  dis_bk: GPIO2  # Backlight

  # Camera
  cam_d0: GPIO34   # Camera Data pin 0
  cam_d1: GPIO13   # Camera Data pin 1
  cam_d2: GPIO26   # Camera Data pin 2
  cam_d3: GPIO35   # Camera Data pin 3
  cam_d4: GPIO39   # Camera Data pin 4
  cam_d5: GPIO38   # Camera Data pin 5
  cam_d6: GPIO37   # Camera Data pin 6
  cam_d7: GPIO36   # Camera Data pin 7
  cam_vsync: GPIO5 # Camera VSYNC
  cam_href: GPIO27 # Camera HREF
  cam_pclk: GPIO25 # Camera Pixel Clock
  cam_xclk: GPIO4  # Camera External Clock
  cam_sda: GPIO18  # Camera SDA
  cam_scl: GPIO23  # Camera SCL

  # Non-existant DAC MAX98357 https://cdn-shop.adafruit.com/product-files/3006/MAX98357A-MAX98357B.pdf
  #dac_sd: 'GPIO_NUM_'   # DAC Serial Data Output or float?
  #dac_gain: 'GPIO_NUM_' # DAC Gain Float!
  #dac_din: GPIO         # DAC Digital In
  #dac_bclk: GPIO        # DAC Bit Clock
  #dac_lrc: GPIO         # DAC Left-Right Clock

  # Microphone https://www.makerhero.com/img/files/download/Microfone-Sipeed-MSM261S4030H0-Datasheet.pdf
  mic_sd: GPIO33   # Mic Serial Data
  #mic_lr: GPIO    # Mic Left-Right Clock
  mic_ws: GPIO32   # Mic Word Select
  mic_sck: GPIO14  # Mic Serial Clock

  rgbdin: GPIO16 #RGB LED (Doesn't exist just random pin to work with virtual LED dot on the screen)

  # I2C Bus: 0x30 Camera OV2640 2MP, 0x75 IP5306 Battery Management, 0x68 MPU6050 Accelerometer/Gyroscope Sensor
  i2c_sda: GPIO18 # I2C Serial Data
  i2c_scl: GPIO23 # I2C Serial Clock

esphome:
  name: $device_name
  friendly_name: ${device_friendly_name}
  min_version: 2023.10.0
  comment: "${device_friendly_name}"
  project:
    name: nonasuomy.ttgo-camera-plus
    version: "1.0"
  platformio_options:
    # Run flash in 2 pin mode instead of 4 pin because:
    #   Pin 12 is used for display CS
    #   Pin 13 is used for camera data 1
    board_build.flash_mode: dio
  on_boot:
    - priority: -100
      then:
        - wait_until: api.connected
        - delay: 1s
        - component.update: download_image
        # - if:
        #     condition:
        #       switch.is_on: use_wake_word
        #     then:
        #       - voice_assistant.start_continuous:
  #  - component.update: example_image
  #    online_image.set_url:
  #      url: !lambda |-
  #        return id(image_url).c_str();
  #      id: example_image

esp32:
  board: esp32dev
  framework:
    type: arduino
    #type: esp-idf

psram:
  mode: quad
  speed: 80MHz

# globals:
# #   - id: coords
# #     type: int
# #     restore_value: no
# #     initial_value: '0'
# #   - id: length
# #     type: int
# #     restore_value: no
# #     initial_value: '0'
#   # Global URL string variable
#   - id: image_url1
#     type: std::string
#     restore_value: yes
#     max_restore_data_length: 80
#     #initial_value: '"https://www.kasandbox.org/programming-images/avatars/cs-hopper-cool.png"'
#     initial_value: '"https://github-production-user-asset-6210df.s3.amazonaws.com/1906575/280905647-ca42ade8-e4a9-4bfb-88ec-081e71963b32.png"'
#     #initial_value: '"http://10.0.1.100:8080/unsafe/size:240:240/plain/http://10.0.1.101:8081@png"'
#   - id: image_url2
#     type: std::string
#     restore_value: yes
#     max_restore_data_length: 80
#     initial_value: '"https://www.kasandbox.org/programming-images/avatars/cs-hopper-cool.png"'
#     #initial_value: '"http://10.0.1.100:8080/unsafe/size:240:240/plain/http://10.0.1.101:8081@png"'
#     #initial_value: '"http://10.0.1.102/image_static/aHR0cDovLzEwLjEzLjM3LjIwNDo4MDgx.png"'
#     #initial_value: '"https://i.ibb.co/1mp3SkP/image.png"'

# This is to fix a glitch where it says it requires image.h on compile when you have Online Image Display enabled
# We use a 1x1 pixel to use less memory as it is not required just so it pulls the image.h into the build.
image:
  - file: mdi:alert-outline
    id: alert
    resize: 1x1

external_components:
  # IP5306 Battery Management
  # - source:
  #     type: git
  #     url: https://github.com/ssieb/custom_components
  #   components: [ ip5306 ]

  # Online Image Display  
  - source: 'github://pr#4710'
    components: [ online_image ]

  # Voice Prompts
  # - source: github://pr#5230
  #   components:
  #     - esp_adf
  #   refresh: 0s

# This branch is to fix so that both the Camera and sensors can run on the same I2C currently only working with type: arduino not esp-idf
  # - source: github://ssieb/esphome@cam_i2c
  #   components: [ esp32_camera ]
  #   refresh: 1min

# Do not uncomment this as it has been released properly in the esphome 
# Current builds and will complain about being defined twice
# https://github.com/esphome/issues/issues/5089
#  - source: github://pr#5406
#    components: [ ili9xxx ]

# Voice Prompts
#esp_adf:

# Enable logging
logger:
  #baud_rate: 0
  #level: VERY_VERBOSE
  #level: VERBOSE
  #level: INFO
  #level: NONE
  # logs: 
  #   voice_assistant: verbose
  #   switch: debug
  #   wifi: debug

wifi:
  ssid: !secret wifi_ssid2
  password: !secret wifi_password2
  use_address: !secret use_address_wifi0072
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "TTGO-Camera-Plus-001"
    password: !secret fallbackhotspot007

# Enable Home Assistant API
api:
  encryption:
    key: !secret encryption_key007

# Over The Air updates
ota:
  password: !secret ota_pass007

captive_portal:

web_server:

# TTGO Camera Plus
# OV2640 2Megapixel
esp32_camera:
  name: TTGOCameraPlus001
  external_clock:
    pin: $cam_xclk
    frequency: 20MHz
  i2c_pins:
    sda: $cam_sda
    scl: $cam_scl
  data_pins: [$cam_d0, $cam_d1, $cam_d2, $cam_d3, $cam_d4, $cam_d5, $cam_d6, $cam_d7]
  vsync_pin: $cam_vsync
  href_pin: $cam_href
  pixel_clock_pin: $cam_pclk
  vertical_flip: false
  horizontal_mirror: false
  resolution: QQVGA

# Camera Web Server
esp32_camera_web_server:
  #- port: 8080
  #  mode: stream
  - port: 8081
    mode: snapshot

# # Microphone & Speaker I2S Audio Pins (Camera Plus has no default speaker DAC)
# i2s_audio:
#   # Mic MSM261S4030H0
#   - id: i2s_in  
#     i2s_lrclk_pin: $mic_ws # LRCLK, WS, FS
#     i2s_bclk_pin: $mic_sck # BLCK, SCK, CLK
  # DAC MAX98357
  #- id: i2s_out
  #  i2s_lrclk_pin: $dac_lrc  # LRCLK, WS, FS
  #  i2s_bclk_pin: $dac_bclk  # BLCK, SCK

# # Mic MSM261S4030H0
# microphone:
#   platform: i2s_audio
#   id: msm261S4030h0_mic
#   i2s_audio_id: i2s_in
#   i2s_din_pin: $mic_sd # DIN, SDIN, SD, SDATA, ADCDATA
#   adc_type: external
#   bits_per_sample: 32bit
#   channel: left
#   pdm: false

#speaker:
#  - platform: i2s_audio
#    id: dac_speaker
#    i2s_audio_id: i2s_out    
#    dac_type: external
#    i2s_dout_pin: $dac_din
#    mode: stereo

# voice_assistant:
#   id: va
#   microphone: msm261S4030h0_mic
#   #speaker: dac_speaker
#   noise_suppression_level: 2
#   auto_gain: 31dBFS
#   volume_multiplier: 2.0
#   vad_threshold: 2
#   use_wake_word: true
#   on_listening:
#     - light.turn_on:
#         id: led
#         blue: 100%
#         red: 0%
#         green: 0%
#         brightness: 100%
#         effect: pulse

  # on_tts_start:
  #   - light.turn_on:
  #       id: led
  #       blue: 0%
  #       red: 0%
  #       green: 100%
  #       brightness: 100%
  #       effect: pulse
  #   - text_sensor.template.publish: 
  #       id: line2
  #       state: !lambda return x;
  
  # on_end:
  #   - delay: 100ms
  #  # - wait_until:
  #  #     not:
  #  #       speaker.is_playing:
  #   - script.execute: reset_led
  #   #- script.execute: clear_error_script
  #  # - text_sensor.template.publish:
  #  #     id: line2
  #  #     state: !lambda return x;
  
  # on_error:
  #   - light.turn_on:
  #       id: led
  #       blue: 0%
  #       red: 100%
  #       green: 0%
  #       brightness: 100%
  #       effect: none
  #   - delay: 1s
  #   - script.execute: reset_led
  #   - script.wait: reset_led
  #   - lambda: |-
  #       if (code == "wake-provider-missing" || code == "wake-engine-missing") {
  #         id(use_wake_word).turn_off();
  #       }
  #       if (message == "Could not request start.") {
  #         id(restart_script).execute();
  #       } 
  #   - text_sensor.template.publish: 
  #       id: line4
  #       state: !lambda return code;
  #   - text_sensor.template.publish: 
  #       id: line5
  #       state: !lambda return message;
  #   - delay: 10s
  #   - script.execute: clear_error_script
  
  # on_client_connected:
  #   - if:
  #       condition:
  #         switch.is_on: use_wake_word
  #       then:
  #         - voice_assistant.start_continuous:
  #         #- script.execute: clear_error_script
 
  # on_client_disconnected:
  #   - if:
  #       condition:
  #         switch.is_on: use_wake_word
  #       then:
  #         - voice_assistant.stop:

  # on_stt_end:
  #   - text_sensor.template.publish: 
  #       id: line1
  #       state: !lambda return x;

  # on_tts_end:
  #   - text_sensor.template.publish: 
  #       id: line3
  #       state: !lambda return x;

# binary_sensor:
#   - platform: status
#     id: api_connection
#     filters:
#       - delayed_on: 1s
#     on_press:
#       - if:
#           condition:
#             switch.is_on: use_wake_word
#           then:
#             - voice_assistant.start_continuous:
#     on_release:
#       - if:
#           condition:
#             switch.is_on: use_wake_word
#           then:
#             - voice_assistant.stop:

# light:
#   - platform: esp32_rmt_led_strip
#     id: led
#     name: None
#     disabled_by_default: true
#     entity_category: config
#     pin: $rgbdin
#     default_transition_length: 0s
#     chipset: SK6812
#     num_leds: 1
#     rgb_order: grb
#     rmt_channel: 0
#     effects:
#       - pulse:
#           transition_length: 250ms
#           update_interval: 250ms
#     on_state: 
#       then:
#         - component.update: st7789_display
# script:
#   - id: reset_led
#     then:
#       - if:
#           condition:
#             - switch.is_on: use_wake_word
#             - switch.is_on: use_listen_light
#           then:
#             - light.turn_on:
#                 id: led
#                 blue: 100%
#                 red: 100%
#                 green: 0%
#                 brightness: 100%
#                 effect: none
#           else:
#             - light.turn_off: led
#   - id: restart_script
#     then:
#       - voice_assistant.stop
#       - delay: 1s
#       - text_sensor.template.publish: 
#           id: line4
#           state: " "
#       - text_sensor.template.publish: 
#           id: line5
#           state: " "
#       - voice_assistant.start_continuous
#   - id: clear_error_script
#     then:
#       - delay: 1s
#       - text_sensor.template.publish: 
#           id: line4
#           state: " "
#       - text_sensor.template.publish: 
#           id: line5
#           state: " "

switch:
  # OLD Backlight control use other code below much better
  #- platform: gpio
  #  pin: GPIO2
  #  name: "Display Backlight"
  #  id: backlight 
  #  disabled_by_default: True
  #  restore_mode: RESTORE_DEFAULT_ON  
  - platform: restart
    name: "Restart"
  - platform: safe_mode
    name: "Restart (Safe Mode)"
  #- platform: gpio
  #  pin: $mic_lr
  #  name: L-R Switch
  #  disabled_by_default: True
  #  restore_mode: RESTORE_DEFAULT_OFF
  # - platform: template
  #   name: Use wake word
  #   id: use_wake_word
  #   optimistic: true
  #   restore_mode: RESTORE_DEFAULT_ON
  #   entity_category: config
  #   on_turn_on:
  #     - lambda: id(va).set_use_wake_word(true);
  #     - if:
  #         condition:
  #           not:
  #             - voice_assistant.is_running
  #         then:
  #           - voice_assistant.start_continuous
  #     - script.execute: reset_led
  #   on_turn_off:
  #     - voice_assistant.stop
  #     - lambda: id(va).set_use_wake_word(false);
  #     - script.execute: reset_led
  # - platform: template
  #   name: Use Listen Light
  #   id: use_listen_light
  #   optimistic: true
  #   restore_mode: RESTORE_DEFAULT_ON
  #   entity_category: config
  #   on_turn_on:
  #     - script.execute: reset_led
  #   on_turn_off:
  #     - script.execute: reset_led

# I2C Bus Addresses
# 0x30 Camera OV2640 2Megapixel
# 0x68 MPU6050 Accelerometer/Gyroscope Sensor
# 0x75 IP5306 Battery Management
# i2c:
#   sda: $i2c_sda
#   scl: $i2c_scl
#   scan: true
#   id: bus_a

 # IP5306 Battery Management
 # Charging Current: 1A
 # Battery: 3.7V lithium battery
# ip5306:
#   i2c_id: bus_a
#   address: 0x75
#   #update_interval: 60s
#   battery_level:   # sensor
#     name: Battery Level
#   charger_connected:  # binary_sensor
#     id: connected
#     name: Battery Charger Connected
#     on_press:
#       then:
#         - lambda: ESP_LOGD("TEST", "charging");
#     on_release:
#       then:
#         - lambda: ESP_LOGD("TEST", "not charging");
#   charge_full:  # binary_sensor
#     id: full
#     name: Battery Charge Full
#     on_press:
#       then:
#         - lambda: ESP_LOGD("TEST", "fully charged");
#     on_release:
#       then:
#         - lambda: ESP_LOGD("TEST", "still charging");

# # MPU6050 Accelerometer/Gyroscope Sensor
# sensor:
#   - platform: mpu6050
#     i2c_id: bus_a
#     address: 0x68
#     update_interval: 60s
#     accel_x:
#       name: "MPU6050 Accel X"
#     accel_y:
#       name: "MPU6050 Accel Y"
#     accel_z:
#       name: "MPU6050 Accel Z"
#     gyro_x:
#       name: "MPU6050 Gyro X"
#     gyro_y:
#       name: "MPU6050 Gyro Y"
#     gyro_z:
#       name: "MPU6050 Gyro Z"
#     temperature:
#       name: "MPU6050 Temperature"

#   - platform: wifi_signal
#     name: "${friendly_name} Signal"
#     id: "wifisignal"
#     update_interval: 120s

# ST7789 Display
# IPS Panel 1.3 Inch 260ppi 240x240 16-bit full color pixels 
spi:
  clk_pin: $spi_clk
  mosi_pin: $spi_mosi
  miso_pin: $spi_miso

# text_sensor:
#   - platform: wifi_info
#     ip_address:
#       name: ESP IP Address
#       id: show_ip
#   - id: line1
#     platform: template
#     on_value: 
#       then:
#         - component.update: st7789_display
#   - id: line2
#     platform: template
#     on_value: 
#       then:
#         - component.update: st7789_display
#   - id: line3
#     platform: template
#     on_value: 
#       then:
#         - component.update: st7789_display
#   - id: line4
#     platform: template
#     on_value: 
#       then:
#         - component.update: st7789_display
#   - id: line5
#     platform: template
#     on_value: 
#       then:
#         - component.update: st7789_display
#   - id: line6
#     platform: template
#     on_value: 
#       then:
#         - component.update: st7789_display

# # time:
#   - platform: homeassistant
#     id: homeassistant_time
#     timezone: America/Toronto

# color:
#   - id: color_red
#     red: 1
#     green: 0
#     blue: 0
#   - id: color_black
#     red: 0
#     green: 0
#     blue: 0

# New Backlight code
# Define a PWM output on the ESP32
output:
  - platform: ledc
    pin: $dis_bk
    id: gpio_dis_bk_backlight_pwm

# Define a monochromatic, dimmable light for the backlight
light:
  - platform: monochromatic
    output: gpio_dis_bk_backlight_pwm
    name: "Display Backlight"
    id: back_light
    restore_mode: ALWAYS_ON

display:
  # Old display settings with no way to set anything to reset pin.
  # - platform: st7789v
  #   id: st7789_display
  #   model: Custom
  #   height: 240
  #   width: 240
  #   offset_width: 0
  #   offset_height: 0
  #   backlight_pin: $dis_bk
  #   cs_pin: $dis_cs
  #   dc_pin: $dis_dc
  #   reset_pin: 33 # Set to an unused pin as really this line is connected to chip_pu that is not controllable with GPIO.
  
  # Fixed display settings to not set a reset pin
  - platform: ili9xxx
    model: st7789v
    id: st7789_display
    dimensions:
      height: 240
      width: 240
      offset_width: 0
      offset_height: 0
    invert_colors: true 
    cs_pin: $dis_cs
    dc_pin: $dis_dc

    #update_interval: 2s
    # Simple text test
    # lambda: |-
    #  it.printf(0, 0, id(roboto16), "Test");
    # Image display
    lambda: |-
      it.image(0, 0, id(download_image));
    # Lots of stuff test
    # #pages:
    #  - id: "page1"
    # lambda: |-
    #       auto ledcolor = Color(id(led).remote_values.get_red()*255, id(led).remote_values.get_green()*255, id(led).remote_values.get_blue()*255);
    #       bool ledstatus = id(led).remote_values.get_state();
    #       int x = 0, y = 48, offs = 17;
    #       it.filled_circle(160, 10, 5, ledstatus ? ledcolor : color_black);
    #       it.printf(x, 0, id(roboto16), TextAlign::TOP_LEFT, "${device_friendly_name}");
    #       it.strftime(240, 0, id(roboto16), TextAlign::TOP_RIGHT, "%H:%M:%S", id(homeassistant_time).now());
    #       it.printf(x, 16, id(roboto16), "IP: %s", id(show_ip).state.c_str());
    #       it.printf(x, 32, id(roboto16), "Signal: %.1f dBm", id(wifisignal).state);
          
    #       //std::string printout1=id(line1).state.c_str();
    #       //int clength1 = printout1.length();
    #       //id(length)=clength1*4;
    #       //it.printf(id(coords), y, id(roboto16), printout1.c_str());

    #       //std::string printout2=id(line2).state.c_str();
    #       //int clength2 = printout2.length();
    #       //id(length)=clength2*4;
    #       //it.printf(id(coords), y=y+offs, id(roboto16), printout2.c_str());

    #       //std::string printout3=id(line3).state.c_str();
    #       //int clength3 = printout3.length();
    #       //id(length)=clength3*4;
    #       //it.printf(id(coords), y=y+offs, id(roboto16), printout3.c_str());

    #       it.printf(x, y, id(roboto16), "%s", id(line1).state.c_str());
    #       it.printf(x, y=y+offs, id(roboto16), "%s", id(line2).state.c_str());
    #       it.printf(x, y=y+offs, id(roboto16), "%s", id(line3).state.c_str());
    #       it.printf(x, y=y+offs, id(roboto16), color_red, "%s", id(line4).state.c_str());
    #       it.printf(x, y=y+offs, id(roboto16), color_red, "%s", id(line5).state.c_str());

#      - id: "page2"
#        lambda: |-
#          auto ledcolor = Color(id(led).remote_values.get_red()*255, id(led).remote_values.get_green()*255, id(led).remote_values.get_blue()*255);
#          bool ledstatus = id(led).remote_values.get_state();
#          int x = 0, y = 43, offs = 17;
#          it.filled_circle(10, 10, 5, ledstatus ? ledcolor : color_black);
      #    it.printf(x, y, id(roboto16), "L1: %s", id(line1).state.c_str());
      #    it.printf(x, y=y+offs, id(roboto16), "L2: %s", id(line2).state.c_str());
      #    it.printf(x, y=y+offs, id(roboto16), "L3: %s", id(line3).state.c_str());
      #    it.printf(x, y=y+offs, id(roboto16), color_red, "L4: %s", id(line4).state.c_str());
      #    it.printf(x, y=y+offs, id(roboto16), color_red, "L5: %s", id(line5).state.c_str());
#          it.printf(x, y=y+offs, id(roboto16), color_red, "L6: %s", id(line6).state.c_str());

# 35 Characters @ Size 16, 15 lines.
# font:
#   - file: "gfonts://Roboto"
#     id: roboto16
#     size: 14
#     glyphs: "'!%()[]{}+,-/_.:°0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyzμ₂³"

online_image:
  #url: "https://www.kasandbox.org/programming-images/avatars/cs-hopper-cool.png"
  #url: "http://10.0.1.100:8080/sig/size:16:16/aHR0cDovLzEwLjEzLjM3LjIwNDo4MDgx.png"
  #url: "http://10.0.1.100:8080/unsafe/size:240:240/plain/http://10.0.1.101:8081@png"
  #url: "http://10.0.1.102/image_static/aHR0cDovLzEwLjEzLjM3LjIwNDo4MDgx.png"
  #url: "https://i.ibb.co/1mp3SkP/image.png"
  url: "https://github-production-user-asset-6210df.s3.amazonaws.com/1906575/280905647-ca42ade8-e4a9-4bfb-88ec-081e71963b32.png"
  # Has to be PNG so this won't work as it is a JPG stream
  #url: "http://10.0.1.101:8081" 
  timeout: 20s
  id: download_image
  type: RGB565
  buffer_size: 16384
  on_download_finished:
    - component.update: st7789_display
  on_error:
    - logger.log: "Could not download the image"

# interval:
# #  - interval: 2s
# #    then:
# #        lambda: |-
# #            if (id(coords) < -(id(length))) {
# #             id(coords) = 0;
# #                }
# #            else  {
# #               id(coords) -= 2;
# #            }
#   - interval: 10s
#     then:
#       - component.update: st7789_display
#      - delay: 15s
#      - display.page.show_next: st7789_display

# Update the displayed URL image every nth min
# interval:
#  - interval: 1min
#    then:
#    - delay: 20s
#    - online_image.set_url:
#       url: !lambda |-
#                return id(image_url1).c_str();
#       id: download_image
#    #- delay: 10s
#    - component.update: download_image
#    #- delay: 10s
#    #- component.update: st7789_display
#    - delay: 20s
#    - online_image.set_url:
#       url: !lambda |-
#                return id(image_url2).c_str();
#       id: download_image
#    #- delay: 10s
#    - component.update: download_image
#    #- delay: 10s
#    #- component.update: st7789_display

How do you enrol new faces?

This is a very interesting board. Can you please make a video on how you enrol new users (faces) ?

Also what would be the maximum limit of users (faces) that can be supported with this architecture?
Say, can it scale to 1,000 faces? Trying to understand the limitations that comes with large amount of faces enrolled and how the architecture deals with it.

Keep up the great work!

Is there the factory firmware for downloading?

I have compiled github's source code under esp-who platform.
It can be compiled but not same as the factory firmware.

I want to test the factory firmware again.
Please put the factory firmware for downloading too.

Thank you.

Same issues

Hello,

I have same issues as above :

  • Reboots upon connecting WiFi
  • fatal error: iot_lcd.h No such file or directory
  • and dl_lib.h: No such file or directory

fatal error: iot_lcd.h No such file or directory

I am trying to compile esp32-camera-screem and get this error. I am aware that this problem has been reported previously and the solution was supposed to be to use the esp-who framework. I installed the esp-who framework and still get the error. The file iot_lcd.h appears to be a component of esp-iot-solution and I have not been able to locate it in the esp-who framework. Am I missing something simple here?

Reboots upon connecting WiFi

I have finally received the TTGO plus board, downloaded the latest build here and burned the NoBme under bin folder according to the PNG image.

However whenever I try to connect to the the TTGO-Camera-Plus_xxx the board reboots following an exception. Please see line starting with "Guru Meditation Error: Core 0 panic'ed (StoreProhibited). Exception was unhandled.** right after i connect to the AP

For backgrodund I am using a brand new genuine TOSHIBA M203 16gb sd card connected.

Following is the serial output prior to the reboot:

any idea on what is going wrong here?

nihaotianmao DETECTED.
�[0;32mI (53377) app_wifi: ESP_WIFI_MODE_AP�[0m
I (53379) wifi: wifi driver task: 3ffe6f24, prio:23, stack:3584, core=0
I (53380) wifi: wifi firmware version: a85ca5e
I (53381) wifi: config NVS flash: enabled
I (53385) wifi: config nano formating: disabled
�[0;32mI (53389) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE�[0m
�[0;32mI (53398) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE�[0m
I (53468) wifi: Init dynamic tx buffer num: 32
I (53468) wifi: Init data frame dynamic rx buffer num: 32
I (53468) wifi: Init management frame dynamic rx buffer num: 32
I (53472) wifi: Init static rx buffer size: 1600
I (53477) wifi: Init static rx buffer num: 10
I (53480) wifi: Init dynamic rx buffer num: 32
I (53486) wifi: Set ps type: 0

�[0;32mI (53656) phy: phy_version: 4000, b6198fa, Sep 3 2018, 15:11:06, 0, 2�[0m
�[0;33mW (53656) phy_init: saving new calibration data because of checksum failure, mode(0)�[0m
I (53670) wifi: mode : softAP (80:7d:3a:b9:5c:69)
I (53670) wifi: Init max length of beacon: 752/752
I (53671) wifi: Init max length of beacon: 752/752
�[0;32mI (53675) app_wifi: wifi_init_softap finished.SSID:TTGO-Camera-Plus-5c69 �[0m
�[0;32mI (53982) camera_httpd: Starting web server on port: '80'�[0m
�[0;32mI (53983) camera_httpd: Starting stream server on port: '81'�[0m
I (71660) wifi: n:1 0, o:1 0, ap:1 1, sta:255 255, prof:1
I (71661) wifi: station: a4:xx:xx:20:xx:xx join, AID=1, bg, 20
�[0;32mI (71661) app_wifi: station:a4:xx:xx:20:xx:xx join, AID=1�[0m
Guru Meditation Error: Core 0 panic'ed (StoreProhibited). Exception was unhandled.
Core 0 register dump:
PC : 0x4013d987 PS : 0x00060c30 A0 : 0x800d7d01 A1 : 0x3ffcca30
A2 : 0x00000400 A3 : 0x3ffffcc0 A4 : 0x00000080 A5 : 0x00000080
A6 : 0x00000000 A7 : 0x00000000 A8 : 0x008c108c A9 : 0x00000000
A10 : 0x00000000 A11 : 0x0000008c A12 : 0x00000100 A13 : 0x3ffcbba0
A14 : 0x20149336 A15 : 0x2ed72c32 SAR : 0x00000000 EXCCAUSE: 0x0000001d
EXCVADDR: 0x00000000 LBEG : 0x4009abb0 LEND : 0x4009abde LCOUNT : 0xffffffff

Backtrace: 0x4013d987:0x3ffcca30 0x400d7cfe:0x3ffcca60 0x40061b1b:0x3ffccac0 0x400d835b:0x3ffccb40 0x400d6214:0x3ffccc60 0x400d1c48:0x3ffccda0 0x400937b1:0x3ffccdc0

Rebooting...
ets Jun 8 2016 00:22:57

Using the TTGO-CAMERA-PLUS WITH MICROPYTHON

I've built my own distribution of micropython that supports the esp32 and the camera; however, I'm getting an error from the camera.c esp-idf program when performing camera.init() I get camera probe failed with error 0x103. I'm guessing that the camera.c module is expecting responses to the SCCB_Write [ff] and SCCB_Write [12] which it is not getting. Can you tell me the responses to these writes and can you tell me what the camera I2C address is?

make -j Error

idf is V3.3.4, how can i fit it

make -j

Toolchain path: /opt/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc
Toolchain version: crosstool-ng-1.22.0-96-g28523988
Compiler version: 5.2.0
Python requirements from D:/esp32/esp-idf-v3.3.4/requirements.txt are satisfied.
App "ttgo_camera_plus" version: 66c7f11-dirty

LD build/ttgo_camera_plus.elf
d:/msys32/opt/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/5.2.0/../../../../xtensa-esp32-elf/bin/ld.exe: cannot find -lwifi_provisioning
collect2.exe: error: ld returned 1 exit status
make: *** [D:\esp32\esp-idf-v3.3.4/make/project.mk:483: /d/esp32/esp-who/examples/single_chip/esp32-camera-screen/build/ttgo_camera_plus.elf] Error 1

Detected camera not supported

Hello, after compile and flash new build i have this error. How fix it? Camera: OV2640.

"E (220) i2c: i2c driver install error
E (224) sccb: SCCB_Write Failed addr:0x3c, reg:0xff, data:0x01, ret:-1
E (231) sccb: SCCB_Write Failed addr:0x3c, reg:0x12, data:0x80, ret:-1
E (1284) camera: Detected camera not supported.
E (1284) camera: Camera probe failed with error 0x20004
E (1284) app_camera: Camera init failed with error 0x20004
E (27727) [main]: Camera capture failed"

wifi crash with ttgo t-camera plus, ESP_ERR_NO_MEM?

followed the directions here: Xinyuan-LilyGO@66c7f11

and the device crashes and reboots in app_wifi.c. ESP_ERROR_CHECK(esp_wifi_init(&cfg)); throws an ESP_ERR_NO_MEM error. How is it out of memory already?

LD build/ttgo_camera_plus.elf
esptool.py v3.1-dev
Merged 1 ELF section
Flashing binaries to serial port '/dev/cu.usbserial-02249115' (app at offset 0x10000)...
esptool.py v3.1-dev
Serial port /dev/cu.usbserial-02249115
Connecting.....
Chip is ESP32-D0WDQ6-V3 (revision 3)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 24:0a:c4:fa:19:34
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Flash will be erased from 0x00001000 to 0x00007fff...
Flash will be erased from 0x00010000 to 0x0013cfff...
Flash will be erased from 0x00008000 to 0x00008fff...
Compressed 26576 bytes to 16405...
Wrote 26576 bytes (16405 compressed) at 0x00001000 in 0.7 seconds (effective 325.1 kbit/s)...
Hash of data verified.
Compressed 1230640 bytes to 747142...
Wrote 1230640 bytes (747142 compressed) at 0x00010000 in 11.7 seconds (effective 840.7 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 103...
Wrote 3072 bytes (103 compressed) at 0x00008000 in 0.1 seconds (effective 411.2 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...
MONITOR
--- idf_monitor on /dev/cu.usbserial-02249115 115200 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
ets Jul 29 2019 12:21:46

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:7140
load:0x40078000,len:14952
load:0x40080400,len:4400
entry 0x40080690
I (27) boot: ESP-IDF v4.3 2nd stage bootloader
I (27) boot: compile time 14:22:14
I (27) boot: chip revision: 3
I (30) boot_comm: chip revision: 3, min. bootloader chip revision: 0
I (37) qio_mode: Enabling default flash chip QIO
I (42) boot.esp32: SPI Speed      : 80MHz
I (47) boot.esp32: SPI Mode       : QIO
I (51) boot.esp32: SPI Flash Size : 4MB
I (56) boot: Enabling RNG early entropy source...
I (61) boot: Partition Table:
I (65) boot: ## Label            Usage          Type ST Offset   Length
I (72) boot:  0 factory          factory app      00 00 00010000 00300000
I (80) boot:  1 nvs              WiFi data        01 02 00310000 00004000
I (87) boot:  2 fr               unknown          20 20 00320000 00020000
I (95) boot: End of partition table
I (99) boot_comm: chip revision: 3, min. application chip revision: 0
I (106) esp_image: segment 0: paddr=00010020 vaddr=3f400020 size=5d980h (383360) map
I (226) esp_image: segment 1: paddr=0006d9a8 vaddr=3ffb0000 size=02670h (  9840) load
I (229) esp_image: segment 2: paddr=00070020 vaddr=400d0020 size=ab880h (702592) map
I (436) esp_image: segment 3: paddr=0011b8a8 vaddr=3ffb2670 size=0333ch ( 13116) load
I (441) esp_image: segment 4: paddr=0011ebec vaddr=40080000 size=1db08h (121608) load
I (483) esp_image: segment 5: paddr=0013c6fc vaddr=50000000 size=00010h (    16) load
I (500) boot: Loaded app from partition at offset 0x10000
I (500) boot: Disabling RNG early entropy source...
I (512) psram: This chip is ESP32-D0WD
I (512) spiram: Found 64MBit SPI RAM device
I (512) spiram: SPI RAM mode: flash 80m sram 80m
I (517) spiram: PSRAM initialized, cache is in low/high (2-core) mode.
I (524) cpu_start: Pro cpu up.
I (528) cpu_start: Starting app cpu, entry point is 0x40081700
0x40081700: call_start_cpu1 at /Users/r/esp/esp-idf/components/esp_system/port/cpu_start.c:141

I (0) cpu_start: App cpu up.
I (1028) spiram: SPI SRAM memory test OK
I (1036) cpu_start: Pro cpu start user code
I (1036) cpu_start: cpu freq: 240000000
I (1036) cpu_start: Application information:
I (1039) cpu_start: Project name:     ttgo_camera_plus
I (1044) cpu_start: App version:      66c7f11-dirty
I (1050) cpu_start: Compile time:     Jun 29 2021 14:22:27
I (1056) cpu_start: ELF file SHA256:  a78fad50fe762db6...
I (1062) cpu_start: ESP-IDF:          v4.3
I (1067) heap_init: Initializing. RAM available for dynamic allocation:
I (1074) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (1081) heap_init: At 3FFC7A10 len 000185F0 (97 KiB): DRAM
I (1087) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (1093) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (1100) heap_init: At 4009DB08 len 000024F8 (9 KiB): IRAM
I (1106) spiram: Adding pool of 4096K of external SPI memory to heap allocator
I (1114) spi_flash: detected chip: generic
I (1119) spi_flash: flash io: qio
I (1123) sleep: Configure to isolate all GPIO pins in sleep state
I (1130) sleep: Enable automatic switching of GPIO sleep configuration
I (1137) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
I (1152) esp-eye: Version 0.9.0
E (1156) vfs_fat_sdmmc: slot init failed (0x103).
E (1161) [SD]: Failed to initialize the card (ESP_ERR_INVALID_STATE). Make sure SD card lines have pull-up resistors in place.
I (1173) gpio: GPIO[13]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1182) gpio: GPIO[5]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1192) gpio: GPIO[13]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1201) gpio: GPIO[25]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1210) gpio: GPIO[26]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1220) gpio: GPIO[27]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1229) gpio: GPIO[34]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1238) gpio: GPIO[35]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1248) gpio: GPIO[36]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1257) gpio: GPIO[37]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1267) gpio: GPIO[38]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1276) gpio: GPIO[39]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1285) sccb: pin_sda 18 pin_scl 23

I (1407) camera: Detected OV2640 camera
I (1408) camera: Allocating 2 frame buffers (30 KB total)
I (1408) camera: Allocating 15 KB frame buffer in OnBoard RAM
I (1413) camera: Allocating 15 KB frame buffer in OnBoard RAM
I (1563) gpio: GPIO[12]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
wake word number = 1, word1 name = nihaotianmao
I (7988) I2S: DMA Malloc info, datalen=blocksize=2400, dma_buf_count=3
wake word number = 1, word1 name = nihaotianmao
I (7988) I2S: PLL_D2: Req RATE: 16000, real rate: 16025.000, BITS: 32, CLKM: 39, BCK: 4, MCLK: 4096000.000, SCLK: 1025600.000000, diva: 64, divb: 4
W (7993) I2S: I2S driver already installed
nihaotianmao DETECTED.
I (14334) app_wifi: ESP_WIFI_MODE_AP
I (14339) wifi:wifi driver task: 3fff2eec, prio:23, stack:6656, core=0
I (14339) system_api: Base MAC address is not set
I (14341) system_api: read default base MAC address from EFUSE
I (14349) wifi:wifi firmware version: c7d0450
I (14352) wifi:wifi certification version: v7.0
I (14356) wifi:config NVS flash: enabled
I (14360) wifi:config nano formating: disabled
I (14364) wifi:Init data frame dynamic rx buffer num: 32
I (14369) wifi:Init management frame dynamic rx buffer num: 32
I (14374) wifi:Init management short buffer num: 32
I (14379) wifi:Init dynamic tx buffer num: 32
W (14384) wifi:esf_buf_setup_static: alloc eb fail(9)
I (14388) wifi:Deinit lldesc rx mblock:0
I (14391) wifi:Deinit lldesc rx mblock:0
I (14395) wifi:Deinit lldesc rx mblock:0
I (14401) wifi_init: rx ba win: 6
I (14403) wifi_init: tcpip mbox: 32
I (14407) wifi_init: udp mbox: 6
I (14411) wifi_init: tcp mbox: 6
I (14415) wifi_init: tcp tx win: 5744
I (14419) wifi_init: tcp rx win: 5744
I (14423) wifi_init: tcp mss: 1436
I (14427) wifi_init: WiFi IRAM OP enabled
I (14432) wifi_init: WiFi RX IRAM OP enabled
ESP_ERROR_CHECK failed: esp_err_t 0x101 (ESP_ERR_NO_MEM) at 0x40107e25
0x40107e25: _esp_error_check_failed at /Users/r/esp/esp-idf/components/esp_common/src/esp_err.c:41

file: "/Users/r/esp-who/examples/single_chip/esp32-camera-screen/main/app_wifi.c" line 96
func: wifi_init_softap
expression: esp_wifi_init(&cfg)

abort() was called at PC 0x40107e2b on core 0
0x40107e2b: _esp_error_check_failed at /Users/r/esp/esp-idf/components/esp_common/src/esp_err.c:42


Backtrace:0x4008f296:0x3ffca780 0x4008faa1:0x3ffca7a0 0x4009782e:0x3ffca7c0 0x40107e2b:0x3ffca830 0x400d444e:0x3ffca850 0x400d462b:0x3ffcaa30 0x400d386a:0x3ffcaa50 0x4017b577:0x3ffcab90 0x40093169:0x3ffcabb0
0x4008f296: panic_abort at /Users/r/esp/esp-idf/components/esp_system/panic.c:356

0x4008faa1: esp_system_abort at /Users/r/esp/esp-idf/components/esp_system/system_api.c:112

0x4009782e: abort at /Users/r/esp/esp-idf/components/newlib/abort.c:46

0x40107e2b: _esp_error_check_failed at /Users/r/esp/esp-idf/components/esp_common/src/esp_err.c:42

0x400d444e: wifi_init_softap at /Users/r/esp-who/examples/single_chip/esp32-camera-screen/main/app_wifi.c:96 (discriminator 1)

0x400d462b: app_wifi_init at /Users/r/esp-who/examples/single_chip/esp32-camera-screen/main/app_wifi.c:160 (discriminator 13)

0x400d386a: app_main at /Users/r/esp-who/examples/single_chip/esp32-camera-screen/main/app_main.cpp:682

0x4017b577: main_task at /Users/r/esp/esp-idf/components/freertos/port/port_common.c:133

0x40093169: vPortTaskWrapper at /Users/r/esp/esp-idf/components/freertos/port/xtensa/port.c:168



ELF file SHA256: a78fad50fe762db6

Rebooting...
ets Jul 29 2019 12:21:46

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:7140
load:0x40078000,len:14952
load:0x40080400,len:4400
entry 0x40080690
I (27) boot: ESP-IDF v4.3 2nd stage bootloader
I (27) boot: compile time 14:22:14
I (27) boot: chip revision: 3
I (30) boot_comm: chip revision: 3, min. bootloader chip revision: 0
I (37) qio_mode: Enabling default flash chip QIO
I (42) boot.esp32: SPI Speed      : 80MHz
I (47) boot.esp32: SPI Mode       : QIO
I (51) boot.esp32: SPI Flash Size : 4MB
I (56) boot: Enabling RNG early entropy source...
I (61) boot: Partition Table:
I (65) boot: ## Label            Usage          Type ST Offset   Length
I (72) boot:  0 factory          factory app      00 00 00010000 00300000
I (80) boot:  1 nvs              WiFi data        01 02 00310000 00004000
I (87) boot:  2 fr               unknown          20 20 00320000 00020000
I (95) boot: End of partition table
I (99) boot_comm: chip revision: 3, min. application chip revision: 0
I (106) esp_image: segment 0: paddr=00010020 vaddr=3f400020 size=5d980h (383360) map
I (226) esp_image: segment 1: paddr=0006d9a8 vaddr=3ffb0000 size=02670h (  9840) load
I (229) esp_image: segment 2: paddr=00070020 vaddr=400d0020 size=ab880h (702592) map
I (436) esp_image: segment 3: paddr=0011b8a8 vaddr=3ffb2670 size=0333ch ( 13116) load
I (440) esp_image: segment 4: paddr=0011ebec vaddr=40080000 size=1db08h (121608) load
I (483) esp_image: segment 5: paddr=0013c6fc vaddr=50000000 size=00010h (    16) load
I (500) boot: Loaded app from partition at offset 0x10000
I (500) boot: Disabling RNG early entropy source...
I (511) psram: This chip is ESP32-D0WD
I (512) spiram: Found 64MBit SPI RAM device
I (512) spiram: SPI RAM mode: flash 80m sram 80m
I (517) spiram: PSRAM initialized, cache is in low/high (2-core) mode.
I (524) cpu_start: Pro cpu up.
I (528) cpu_start: Starting app cpu, entry point is 0x40081700
0x40081700: call_start_cpu1 at /Users/r/esp/esp-idf/components/esp_system/port/cpu_start.c:141

I (521) cpu_start: App cpu up.
I (1028) spiram: SPI SRAM memory test OK
I (1035) cpu_start: Pro cpu start user code
I (1035) cpu_start: cpu freq: 240000000
I (1035) cpu_start: Application information:
I (1038) cpu_start: Project name:     ttgo_camera_plus
I (1044) cpu_start: App version:      66c7f11-dirty
I (1050) cpu_start: Compile time:     Jun 29 2021 14:22:27
I (1056) cpu_start: ELF file SHA256:  a78fad50fe762db6...
I (1062) cpu_start: ESP-IDF:          v4.3
I (1067) heap_init: Initializing. RAM available for dynamic allocation:
I (1074) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (1080) heap_init: At 3FFC7A10 len 000185F0 (97 KiB): DRAM
I (1087) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (1093) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (1100) heap_init: At 4009DB08 len 000024F8 (9 KiB): IRAM
I (1106) spiram: Adding pool of 4096K of external SPI memory to heap allocator
I (1114) spi_flash: detected chip: generic
I (1118) spi_flash: flash io: qio
I (1123) sleep: Configure to isolate all GPIO pins in sleep state
I (1129) sleep: Enable automatic switching of GPIO sleep configuration
I (1137) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
I (1152) esp-eye: Version 0.9.0
E (1156) vfs_fat_sdmmc: slot init failed (0x103).
E (1161) [SD]: Failed to initialize the card (ESP_ERR_INVALID_STATE). Make sure SD card lines have pull-up resistors in place.
I (1173) gpio: GPIO[13]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1182) gpio: GPIO[5]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1192) gpio: GPIO[13]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1201) gpio: GPIO[25]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1210) gpio: GPIO[26]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1220) gpio: GPIO[27]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1229) gpio: GPIO[34]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1238) gpio: GPIO[35]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1248) gpio: GPIO[36]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1257) gpio: GPIO[37]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1267) gpio: GPIO[38]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1276) gpio: GPIO[39]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1285) sccb: pin_sda 18 pin_scl 23

I (1407) camera: Detected OV2640 camera
I (1408) camera: Allocating 2 frame buffers (30 KB total)
I (1408) camera: Allocating 15 KB frame buffer in OnBoard RAM
I (1413) camera: Allocating 15 KB frame buffer in OnBoard RAM
I (1563) gpio: GPIO[12]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
wake word number = 1, word1 name = nihaotianmao
I (7988) I2S: DMA Malloc info, datalen=blocksize=2400, dma_buf_count=3
wake word number = 1, word1 name = nihaotianmao
I (7988) I2S: PLL_D2: Req RATE: 16000, real rate: 16025.000, BITS: 32, CLKM: 39, BCK: 4, MCLK: 4096000.000, SCLK: 1025600.000000, diva: 64, divb: 4
W (7993) I2S: I2S driver already installed
nihaotianmao DETECTED.
I (50074) app_wifi: ESP_WIFI_MODE_AP
I (50079) wifi:wifi driver task: 3fff2f78, prio:23, stack:6656, core=0
I (50079) system_api: Base MAC address is not set
I (50081) system_api: read default base MAC address from EFUSE
I (50090) wifi:wifi firmware version: c7d0450
I (50092) wifi:wifi certification version: v7.0
I (50096) wifi:config NVS flash: enabled
I (50100) wifi:config nano formating: disabled
I (50104) wifi:Init data frame dynamic rx buffer num: 32
I (50109) wifi:Init management frame dynamic rx buffer num: 32
I (50114) wifi:Init management short buffer num: 32
I (50119) wifi:Init dynamic tx buffer num: 32
W (50124) wifi:esf_buf_setup_static: alloc eb fail(9)
I (50128) wifi:Deinit lldesc rx mblock:0
I (50132) wifi:Deinit lldesc rx mblock:0
I (50135) wifi:Deinit lldesc rx mblock:0
I (50141) wifi_init: rx ba win: 6
I (50143) wifi_init: tcpip mbox: 32
I (50147) wifi_init: udp mbox: 6
I (50151) wifi_init: tcp mbox: 6
I (50155) wifi_init: tcp tx win: 5744
I (50159) wifi_init: tcp rx win: 5744
I (50163) wifi_init: tcp mss: 1436
I (50168) wifi_init: WiFi IRAM OP enabled
I (50172) wifi_init: WiFi RX IRAM OP enabled
ESP_ERROR_CHECK failed: esp_err_t 0x101 (ESP_ERR_NO_MEM) at 0x40107e25
0x40107e25: _esp_error_check_failed at /Users/r/esp/esp-idf/components/esp_common/src/esp_err.c:41

file: "/Users/r/esp-who/examples/single_chip/esp32-camera-screen/main/app_wifi.c" line 96
func: wifi_init_softap
expression: esp_wifi_init(&cfg)

abort() was called at PC 0x40107e2b on core 0
0x40107e2b: _esp_error_check_failed at /Users/r/esp/esp-idf/components/esp_common/src/esp_err.c:42


Backtrace:0x4008f296:0x3ffca780 0x4008faa1:0x3ffca7a0 0x4009782e:0x3ffca7c0 0x40107e2b:0x3ffca830 0x400d444e:0x3ffca850 0x400d462b:0x3ffcaa30 0x400d386a:0x3ffcaa50 0x4017b577:0x3ffcab90 0x40093169:0x3ffcabb0
0x4008f296: panic_abort at /Users/r/esp/esp-idf/components/esp_system/panic.c:356

0x4008faa1: esp_system_abort at /Users/r/esp/esp-idf/components/esp_system/system_api.c:112

0x4009782e: abort at /Users/r/esp/esp-idf/components/newlib/abort.c:46

0x40107e2b: _esp_error_check_failed at /Users/r/esp/esp-idf/components/esp_common/src/esp_err.c:42

0x400d444e: wifi_init_softap at /Users/r/esp-who/examples/single_chip/esp32-camera-screen/main/app_wifi.c:96 (discriminator 1)

0x400d462b: app_wifi_init at /Users/r/esp-who/examples/single_chip/esp32-camera-screen/main/app_wifi.c:160 (discriminator 13)

0x400d386a: app_main at /Users/r/esp-who/examples/single_chip/esp32-camera-screen/main/app_main.cpp:682

0x4017b577: main_task at /Users/r/esp/esp-idf/components/freertos/port/port_common.c:133

0x40093169: vPortTaskWrapper at /Users/r/esp/esp-idf/components/freertos/port/xtensa/port.c:168



ELF file SHA256: a78fad50fe762db6

Rebooting...
ets Jul 29 2019 12:21:46

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:7140
load:0x40078000,len:14952
load:0x40080400,len:4400
entry 0x40080690
I (27) boot: ESP-IDF v4.3 2nd stage bootloader
I (27) boot: compile time 14:22:14
I (27) boot: chip revision: 3
I (30) boot_comm: chip revision: 3, min. bootloader chip revision: 0
I (37) qio_mode: Enabling default flash chip QIO
I (42) boot.esp32: SPI Speed      : 80MHz
I (47) boot.esp32: SPI Mode       : QIO
I (51) boot.esp32: SPI Flash Size : 4MB
I (56) boot: Enabling RNG early entropy source...
I (61) boot: Partition Table:
I (65) boot: ## Label            Usage          Type ST Offset   Length
I (72) boot:  0 factory          factory app      00 00 00010000 00300000
I (80) boot:  1 nvs              WiFi data        01 02 00310000 00004000
I (87) boot:  2 fr               unknown          20 20 00320000 00020000
I (95) boot: End of partition table
I (99) boot_comm: chip revision: 3, min. application chip revision: 0
I (106) esp_image: segment 0: paddr=00010020 vaddr=3f400020 size=5d980h (383360) map
I (226) esp_image: segment 1: paddr=0006d9a8 vaddr=3ffb0000 size=02670h (  9840) load
I (229) esp_image: segment 2: paddr=00070020 vaddr=400d0020 size=ab880h (702592) map
I (436) esp_image: segment 3: paddr=0011b8a8 vaddr=3ffb2670 size=0333ch ( 13116) load
I (440) esp_image: segment 4: paddr=0011ebec vaddr=40080000 size=1db08h (121608) load
I (483) esp_image: segment 5: paddr=0013c6fc vaddr=50000000 size=00010h (    16) load
I (500) boot: Loaded app from partition at offset 0x10000
I (500) boot: Disabling RNG early entropy source...
I (511) psram: This chip is ESP32-D0WD
I (512) spiram: Found 64MBit SPI RAM device
I (512) spiram: SPI RAM mode: flash 80m sram 80m
I (517) spiram: PSRAM initialized, cache is in low/high (2-core) mode.
I (524) cpu_start: Pro cpu up.
I (528) cpu_start: Starting app cpu, entry point is 0x40081700
0x40081700: call_start_cpu1 at /Users/r/esp/esp-idf/components/esp_system/port/cpu_start.c:141

I (521) cpu_start: App cpu up.
I (1028) spiram: SPI SRAM memory test OK
I (1035) cpu_start: Pro cpu start user code
I (1035) cpu_start: cpu freq: 240000000
I (1035) cpu_start: Application information:
I (1039) cpu_start: Project name:     ttgo_camera_plus
I (1044) cpu_start: App version:      66c7f11-dirty
I (1050) cpu_start: Compile time:     Jun 29 2021 14:22:27
I (1056) cpu_start: ELF file SHA256:  a78fad50fe762db6...
I (1062) cpu_start: ESP-IDF:          v4.3
I (1067) heap_init: Initializing. RAM available for dynamic allocation:
I (1074) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (1080) heap_init: At 3FFC7A10 len 000185F0 (97 KiB): DRAM
I (1087) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (1093) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (1100) heap_init: At 4009DB08 len 000024F8 (9 KiB): IRAM
I (1106) spiram: Adding pool of 4096K of external SPI memory to heap allocator
I (1114) spi_flash: detected chip: generic
I (1118) spi_flash: flash io: qio
I (1123) sleep: Configure to isolate all GPIO pins in sleep state
I (1129) sleep: Enable automatic switching of GPIO sleep configuration
I (1137) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
I (1152) esp-eye: Version 0.9.0
E (1156) vfs_fat_sdmmc: slot init failed (0x103).
E (1161) [SD]: Failed to initialize the card (ESP_ERR_INVALID_STATE). Make sure SD card lines have pull-up resistors in place.
I (1173) gpio: GPIO[13]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1182) gpio: GPIO[5]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1192) gpio: GPIO[13]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1201) gpio: GPIO[25]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1210) gpio: GPIO[26]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1220) gpio: GPIO[27]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1229) gpio: GPIO[34]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1238) gpio: GPIO[35]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1248) gpio: GPIO[36]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1257) gpio: GPIO[37]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1267) gpio: GPIO[38]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1276) gpio: GPIO[39]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1285) sccb: pin_sda 18 pin_scl 23

I (1407) camera: Detected OV2640 camera
I (1408) camera: Allocating 2 frame buffers (30 KB total)
I (1408) camera: Allocating 15 KB frame buffer in OnBoard RAM
I (1413) camera: Allocating 15 KB frame buffer in OnBoard RAM
I (1563) gpio: GPIO[12]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
wake word number = 1, word1 name = nihaotianmao
I (7988) I2S: DMA Malloc info, datalen=blocksize=2400, dma_buf_count=3
wake word number = 1, word1 name = nihaotianmao
I (7988) I2S: PLL_D2: Req RATE: 16000, real rate: 16025.000, BITS: 32, CLKM: 39, BCK: 4, MCLK: 4096000.000, SCLK: 1025600.000000, diva: 64, divb: 4
W (7993) I2S: I2S driver already installed

Where is the code for orientation detection?

I got a TTGO Camera Plus (H306) marked as 20190214 / OV2640_V2.1 and the stock firmware on that device does rotate the screen orientation according to the orientation of the board, but I can neither see which chip on the board would be the motion sensor/accelerometer nor can I find a repository for that firmware.

Unlike this original the stock firmware on my board asks for a wake phrase of "Please say hi le xing!"

Anybody a clue where to find a repo for this board and how to read the motion sensor?

Is there any pins or interface to connect relay?

For TTGO Camera Plus module, is there any way to connect a relay ?

I have ordered one, on the way, looking at the explanations given the BME sensor can be turned off but not sure if the pins can be used for connecting or relay.

Or is there any way at all to connect a relay to this board?

Crash with "queue.c:728 (xQueueGenericSend)- assert failed!"

Builing and flashing as described to an TTGO-Camera Plus Board gives me this:

ubuntu@s0028:~/dev/official/esp32-camera-screen (master *)$ make monitor
Toolchain path: /home/ubuntu/.espressif/tools/xtensa-esp32-elf/esp-2020r1-8.2.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc
Toolchain version: esp-2020r1
Compiler version: 8.2.0
Python requirements from /home/ubuntu/dev/official/esp-idf/requirements.txt are satisfied.
MONITOR
--- idf_monitor on /dev/ttyUSB0 115200 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
ets Jun  8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:4
load:0x3fff0034,len:7380
load:0x40078000,len:15024
load:0x40080400,len:4652
entry 0x4008069c
I (29) boot: ESP-IDF v4.2-dev-1660-g7d7521367-dirty 2nd stage bootloader
I (29) boot: compile time 11:57:54
I (30) boot: chip revision: 1
I (34) boot_comm: chip revision: 1, min. bootloader chip revision: 0
I (41) qio_mode: Enabling default flash chip QIO
I (46) boot.esp32: SPI Speed      : 80MHz
I (51) boot.esp32: SPI Mode       : QIO
I (55) boot.esp32: SPI Flash Size : 4MB
I (60) boot: Enabling RNG early entropy source...
I (65) boot: Partition Table:
I (69) boot: ## Label            Usage          Type ST Offset   Length
I (76) boot:  0 factory          factory app      00 00 00010000 00300000
I (84) boot:  1 nvs              WiFi data        01 02 00310000 00004000
I (91) boot:  2 fr               unknown          20 20 00320000 00020000
I (99) boot: End of partition table
I (103) boot_comm: chip revision: 1, min. application chip revision: 0
I (110) esp_image: segment 0: paddr=0x00010020 vaddr=0x3f400020 size=0x5eeb0 (388784) map
I (232) esp_image: segment 1: paddr=0x0006eed8 vaddr=0x3ffb0000 size=0x01140 (  4416) load
I (234) esp_image: segment 2: paddr=0x00070020 vaddr=0x400d0020 size=0xa49e0 (674272) map
0x400d0020: _stext at ??:?

I (435) esp_image: segment 3: paddr=0x00114a08 vaddr=0x3ffb1140 size=0x0343c ( 13372) load
I (440) esp_image: segment 4: paddr=0x00117e4c vaddr=0x40080000 size=0x00400 (  1024) load
0x40080000: _WindowOverflow4 at /home/ubuntu/dev/official/esp-idf/components/freertos/xtensa/xtensa_vectors.S:1730

I (442) esp_image: segment 5: paddr=0x00118254 vaddr=0x40080400 size=0x1d9c8 (121288) load
I (508) boot: Loaded app from partition at offset 0x10000
I (509) boot: Disabling RNG early entropy source...
I (509) psram: This chip is ESP32-D0WD
I (514) spiram: Found 64MBit SPI RAM device
I (518) spiram: SPI RAM mode: flash 80m sram 80m
I (523) spiram: PSRAM initialized, cache is in low/high (2-core) mode.
I (531) cpu_start: Pro cpu up.
I (534) cpu_start: Application information:
I (539) cpu_start: Project name:     ttgo_camera_plus
I (545) cpu_start: App version:      66c7f11-dirty
I (550) cpu_start: Compile time:     Jun 21 2020 11:57:58
I (556) cpu_start: ELF file SHA256:  820429a5fb308b92...
I (562) cpu_start: ESP-IDF:          v4.2-dev-1660-g7d7521367-dirty
I (569) cpu_start: Starting app cpu, entry point is 0x400816b4
0x400816b4: call_start_cpu1 at /home/ubuntu/dev/official/esp-idf/components/esp32/cpu_start.c:286

I (0) cpu_start: App cpu up.
I (1070) spiram: SPI SRAM memory test OK
I (1070) heap_init: Initializing. RAM available for dynamic allocation:
I (1071) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (1077) heap_init: At 3FFC82F0 len 00017D10 (95 KiB): DRAM
I (1083) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (1089) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (1096) heap_init: At 4009DDC8 len 00002238 (8 KiB): IRAM
I (1102) cpu_start: Pro cpu start user code
I (1107) spiram: Adding pool of 4096K of external SPI memory to heap allocator
I (1127) spi_flash: detected chip: generic
I (1128) spi_flash: flash io: qio
I (1128) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
I (1141) esp-eye: Version 0.9.0
W (1145) BJ LOG: TEST l 30
E (1149) vfs_fat_sdmmc: slot init failed (0x103).
W (1154) BJ LOG: TEST l 32
E (1158) [SD]: Failed to initialize the card (ESP_ERR_INVALID_STATE). Make sure SD card lines have pull-up resistors in place.
I (1170) gpio: GPIO[13]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1179) sccb: pin_sda 18 pin_scl 23

I (1275) gpio: GPIO[36]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1275) gpio: GPIO[37]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1282) gpio: GPIO[38]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1292) gpio: GPIO[39]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1301) gpio: GPIO[35]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1311) gpio: GPIO[26]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1320) gpio: GPIO[13]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1329) gpio: GPIO[34]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1339) gpio: GPIO[5]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1348) gpio: GPIO[27]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1357) gpio: GPIO[25]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (1367) camera: Allocating 2 frame buffers (30 KB total)
I (1373) camera: Allocating 15 KB frame buffer in OnBoard RAM
I (1379) camera: Allocating 15 KB frame buffer in OnBoard RAM
I (1542) gpio: GPIO[12]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
wake word number = 1, word1 name = nihaotianmao
wake word number = 1, word1 name = nihaotianmao
I (7967) I2S: DMA Malloc info, datalen=blocksize=2400, dma_buf_count=3
W (7967) I2S: I2S driver already installed
I (7972) I2S: PLL_D2: Req RATE: 16000, real rate: 16025.000, BITS: 32, CLKM: 39, BCK: 4, MCLK: 4096000.000, SCLK: 1025600.000000, diva: 64, divb: 4
/home/ubuntu/dev/official/esp-idf/components/freertos/queue.c:728 (xQueueGenericSend)- assert failed!

abort() was called at PC 0x40090e77 on core 1
0x40090e77: xQueueGenericSend at /home/ubuntu/dev/official/esp-idf/components/freertos/queue.c:728 (discriminator 5)


Backtrace:0x4008dc16:0x3ffd9cb0 0x4008e2d5:0x3ffd9cd0 0x40095142:0x3ffd9cf0 0x40090e77:0x3ffd9d60 0x400f9aa6:0x3ffd9da0 0x400f9d5e:0x3ffd9e30 0x400d6c90:0x3ffd9e70 0x400d6ca7:0x3ffd9ed0 0x400900a5:0x3ffd9f00
0x4008dc16: panic_abort at /home/ubuntu/dev/official/esp-idf/components/esp_system/panic.c:330

0x4008e2d5: esp_system_abort at /home/ubuntu/dev/official/esp-idf/components/esp_system/system_api.c:100

0x40095142: abort at /home/ubuntu/dev/official/esp-idf/components/newlib/abort.c:46

0x40090e77: xQueueGenericSend at /home/ubuntu/dev/official/esp-idf/components/freertos/queue.c:728 (discriminator 5)

0x400f9aa6: i2s_set_clk at /home/ubuntu/dev/official/esp-idf/components/driver/i2s.c:480

0x400f9d5e: i2s_driver_install at /home/ubuntu/dev/official/esp-idf/components/driver/i2s.c:969

0x400d6c90: i2s_init at /home/ubuntu/dev/official/esp32-camera-screen/main/app_speech_recsrc.c:40

0x400d6ca7: recsrcTask at /home/ubuntu/dev/official/esp32-camera-screen/main/app_speech_recsrc.c:47

0x400900a5: vPortTaskWrapper at /home/ubuntu/dev/official/esp-idf/components/freertos/xtensa/port.c:143



ELF file SHA256: 820429a5fb308b92

Rebooting...
ets Jun  8 2016 00:22:57

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:4
load:0x3fff0034,len:7380
load:0x40078000,len:15024
load:0x40080400,len:4652
entry 0x4008069c
I (29) boot: ESP-IDF v4.2-dev-1660-g7d7521367-dirty 2nd stage bootloader
I (29) boot: compile time 11:57:54
I (30) boot: chip revision: 1

Which environment to compile in ?

Using the esp-idf vers. 4.0, the project won't compile : the idf.py script is seaching for a missing CMakeLists.txt file.

Did you use a specific IDE to automate the build ?


$:esp32-camera-screen>idf.py menuconfig
Checking Python dependencies...
Python requirements from C:\Users\Jean-Louis\Desktop\esp-idf\requirements.txt are satisfied.
Executing action: menuconfig
CMakeLists.txt not found in project directory c:\users\jean-louis\source\esp32\esp32-camera-screen

turn on/off screen by pushing button secuentially

Hi, I wonder if it is possible to turn on the ldc screen of a TTGo Camera Plus module by pushing the reset button, and turning off wether by pushing again the button or after several seconds. Is it doable?

I guess reset button only allows to reset the module. In that case, is it possible to physically integrate another button using some GPIO pin available?

If possible, may you suggest an example of code to include in the module?

Many thanks.

Missing "iot_lcd.h"

Hello,
I download "esp32-camera-screen" at my ESP-IDF-enviroment and then I started "make menuconfig". All worked fine. If I compiled I got:

In file included from /Users/<username>/esp/esp32-camera-screen/components/lvgl_gui/lvgl.c:21:0:
/Users/<username>/esp/esp32-camera-screen/main/include/app_screen.h:4:21: fatal error: iot_lcd.h: No such file or directory
 #include "iot_lcd.h"
                     ^
compilation terminated.
make[1]: *** [lvgl.o] Error 1

Did "esp32-camera-screen" need some more libraries from Express? I only installed ESP-IDF.

Working with TTGO T-Camera (not TTGO T-Camera Plus) ?

I can compile the project successfully and the ESP32 started on my TTGO T-Camera. The TTGO T-Camera-hardware is without SDCard, without MIC, with OLED SSD1306/0.96 and at ESP32-WROVER-B.

I got this errors on boot:

E (212) [SD]: Failed to initialize the card (ESP_ERR_TIMEOUT). Make sure SD card lines have pull-up resistors in place.
I (223) gpio: GPIO[13]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
SCCB_Write [ff]=01 failed
SCCB_Write [12]=80 failed
E (638) camera: Camera probe failed with error 0x20001
E (638) app_camera: Camera init failed with error 0x20001

How can I easy change from TTGO T-Camera Plus to TTGO T-Camera?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.