esp-idf-smb-camera

Take a picture and Publish it via SMB

MIT License

Stars
5

esp-idf-smb-camera

Take a picture and Publish it via SMB. You can access a picture using Windows shared folder. This project use ESP32 Camera Driver. This project use SMB2/3 userspace client.

Hardware requirements

ESP32 development board with OV2640 camera. If you use other camera, edit sdkconfig.default. From the left:

  • Aithinker ESP32-CAM
  • Freenove ESP32-WROVER CAM
  • UICPAL ESPS3 CAM
  • Freenove ESP32S3-WROVER CAM (Clone)

Software requirements

ESP-IDF V5.0 or later. ESP-IDF V4.4 release branch reached EOL in July 2024.

Installation

For AiThinker ESP32-CAM, you need to use a USB-TTL converter and connect GPIO0 to GND.

ESP-32 USB-TTL
U0TXD RXD
U0RXD TXD
GPIO0 GND
5V 5V
GND GND

Installation

git clone https://github.com/nopnop2002/esp-idf-smb-camera
cd esp-idf-smb-camera
git clone https://github.com/sahlberg/libsmb2 components/libsmb2
idf.py set-target {esp32/esp32s3}
idf.py menuconfig
idf.py flash monitor

Start firmware

For AiThinker ESP32-CAM, Change GPIO0 to open and press the RESET button.

Configuration

Set the following items using menuconfig.

Wifi Setting

You can connect using the mDNS hostname instead of the IP address. config-wifi-2

You can use static IP. config-wifi-3

SMB Server Setting

  • CONFIG_ESP_SMB_USER
    Username with shared folder permissions.
  • CONFIG_ESP_NEED_PASSWORD
    Shared access requires password.
  • CONFIG_ESP_SMB_PASSWORD
    Password with shared folder permissions.
  • CONFIG_ESP_SMB_HOST
    IP address or mDNS host name of shared host.
  • CONFIG_ESP_SMB_PATH
    Shared path name.

When a password is required to access the shared folder. config-smb-2

File Name Setting

You can select the file name to write to the shared folder from the following.

  • Always the same file name
  • File name based on date and time
    When you choose date and time file name, you will need an NTP server.
    The file name will be YYYYMMDD-hhmmss.jpg.
  • Add FrameSize to Remote file Name
    When this is enabled, FrameSize is added to remote file name like this.
    20210520-165740_800x600.jpg

Select Board

Select Frame Size

Large frame sizes take longer to take a picture.

Select Shutter

You can choose one of the following shutter methods

  • Shutter is the Enter key on the keyboard
    For operation check.
    When using the USB port provided by the USB Serial/JTAG Controller Console, you need to enable the following line in sdkconfig.
CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y
  • Shutter is a GPIO toggle

    • Initial Sate is PULLDOWN The shutter is prepared when it is turned from OFF to ON, and a picture is taken when it is turned from ON to OFF.

    • Initial Sate is PULLUP The shutter is prepared when it is turned from ON to OFF, and a picture is taken when it is turned from OFF to ON.

I confirmed that the following GPIO can be used.

GPIO PullDown PullUp
GPIO12 OK NG
GPIO13 OK OK
GPIO14 OK OK
GPIO15 OK OK
GPIO16 NG NG
  • Shutter is TCP Socket
    You can use tcp_send.py as shutter.
    python3 ./tcp_send.py
  • Shutter is UDP Socket
    You can use udp_send.py as shutter.
    Requires netifaces.
    python3 ./udp_send.py
  • Shutter is HTTP Request
    You can use this command as shutter.
    curl "http://esp32-camera.local:8080/take/picture"

Flash Light

ESP32-CAM by AI-Thinker have flash light on GPIO4.

PSRAM

When you use ESP32S3-WROVER CAM, you need to set the PSRAM type.

Built-in WEB Server

ESP32 works as a web server. You can check the pictures taken using the built-in WEB server. Enter the ESP32's IP address and port number in the address bar of your browser. You can connect using mDNS hostname instead of IP address.

Reference

https://github.com/nopnop2002/esp-idf-smb-client