{"id":16239675,"url":"https://github.com/nopnop2002/esp-idf-smb-camera","last_synced_at":"2025-06-30T08:03:29.288Z","repository":{"id":108987877,"uuid":"370939810","full_name":"nopnop2002/esp-idf-smb-camera","owner":"nopnop2002","description":"Take a picture and Publish it via SMB","archived":false,"fork":false,"pushed_at":"2025-03-03T10:26:10.000Z","size":149,"stargazers_count":6,"open_issues_count":0,"forks_count":5,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-17T09:06:45.524Z","etag":null,"topics":["esp-idf","esp32","esp32-cam","esp32-camera","samba","smb","smbclient"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nopnop2002.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-05-26T07:09:35.000Z","updated_at":"2025-03-03T10:26:14.000Z","dependencies_parsed_at":null,"dependency_job_id":"96d79e0c-23b2-4966-9cb2-a775c985bac5","html_url":"https://github.com/nopnop2002/esp-idf-smb-camera","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nopnop2002%2Fesp-idf-smb-camera","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nopnop2002%2Fesp-idf-smb-camera/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nopnop2002%2Fesp-idf-smb-camera/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nopnop2002%2Fesp-idf-smb-camera/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nopnop2002","download_url":"https://codeload.github.com/nopnop2002/esp-idf-smb-camera/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244463802,"owners_count":20456944,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["esp-idf","esp32","esp32-cam","esp32-camera","samba","smb","smbclient"],"created_at":"2024-10-10T13:44:39.017Z","updated_at":"2025-03-19T16:31:33.651Z","avatar_url":"https://github.com/nopnop2002.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# esp-idf-smb-camera\nTake a picture and Publish it via SMB.   \nYou can access a picture using Windows shared folder.   \nThis project use [this](https://components.espressif.com/components/espressif/esp32-camera) Camera Driver.   \nThis project use [this](https://github.com/sahlberg/libsmb2) SMB2/3 userspace client.   \n\n![slide-0001](https://user-images.githubusercontent.com/6020549/119617916-454eb280-be3d-11eb-8ba4-d898780ed01d.jpg)\n![slide-0002](https://user-images.githubusercontent.com/6020549/119617924-45e74900-be3d-11eb-83ae-03dd86cfd407.jpg)\n\n# Hardware requirements\nESP32 development board with OV2640 camera.   \nIf you use other camera, edit sdkconfig.default.   \nFrom the left:   \n- Aithinker ESP32-CAM   \n- Freenove ESP32-WROVER CAM   \n- UICPAL ESPS3 CAM   \n- Freenove ESP32S3-WROVER CAM (Clone)   \n\n![es32-camera](https://github.com/nopnop2002/esp-idf-websocket-camera/assets/6020549/38dbef9a-ed85-4df2-8d22-499b2b497278)\n\n\n# Software requirements\nESP-IDF V5.0 or later.   \nESP-IDF V4.4 release branch reached EOL in July 2024.   \n\n# Installation\nFor AiThinker ESP32-CAM, you need to use a USB-TTL converter and connect GPIO0 to GND.   \n\n|ESP-32|USB-TTL|\n|:-:|:-:|\n|U0TXD|RXD|\n|U0RXD|TXD|\n|GPIO0|GND|\n|5V|5V|\n|GND|GND|\n\n\n# Installation   \n```\ngit clone https://github.com/nopnop2002/esp-idf-smb-camera\ncd esp-idf-smb-camera\ngit clone https://github.com/sahlberg/libsmb2 -b libsmb2-6.2 components/libsmb2\ncp esp-idf/CMakeLists.txt components/libsmb2/\nidf.py set-target {esp32/esp32s3}\nidf.py menuconfig\nidf.py flash monitor\n```\n\n# Start firmware\nFor AiThinker ESP32-CAM, Change GPIO0 to open and press the RESET button.\n\n# Configuration\nSet the following items using menuconfig.\n\n![config-main](https://user-images.githubusercontent.com/6020549/66692052-c17e9b80-ecd5-11e9-8316-075350ceb2e9.jpg)\n![config-app](https://user-images.githubusercontent.com/6020549/201548817-960220da-a6cf-4dab-8cc0-dc85bbc054cd.jpg)\n\n## Wifi Setting\n\n![config-wifi-1](https://user-images.githubusercontent.com/6020549/119243503-529c4080-bba2-11eb-92c5-b59f66f9fea6.jpg)\n\nYou can connect using the mDNS hostname instead of the IP address.   \n![config-wifi-2](https://user-images.githubusercontent.com/6020549/119243504-5334d700-bba2-11eb-8c77-f958251d8611.jpg)\n\nYou can use static IP.   \n![config-wifi-3](https://user-images.githubusercontent.com/6020549/119243505-5334d700-bba2-11eb-9677-47cb6d1f9536.jpg)\n\n\n## SMB Server Setting\n\n- CONFIG_ESP_SMB_USER   \nUsername with shared folder permissions.\n- CONFIG_ESP_NEED_PASSWORD   \nShared access requires password.\n- CONFIG_ESP_SMB_PASSWORD   \nPassword with shared folder permissions.\n- CONFIG_ESP_SMB_HOST   \nIP address or mDNS host name of shared host.   \n- CONFIG_ESP_SMB_PATH   \nShared path name.\n\n![config-smb-1](https://user-images.githubusercontent.com/6020549/183030948-2e077e33-7cc6-414f-8f3c-69c29f2dab80.jpg)\n\nWhen a password is required to access the shared folder.\n![config-smb-2](https://user-images.githubusercontent.com/6020549/183030955-4dccc112-beaf-43a0-ae43-ccc797a911fa.jpg)\n\n## File Name Setting\n\nYou can select the file name to write to the shared folder from the following.   \n- Always the same file name   \n\t![config-filename-1](https://user-images.githubusercontent.com/6020549/119243498-5203aa00-bba2-11eb-87d5-053636dbb85a.jpg)\n\n- File name based on date and time   \n\tWhen you choose date and time file name, you will need an NTP server.   \n\tThe file name will be YYYYMMDD-hhmmss.jpg.   \n\t![config-filename-2](https://user-images.githubusercontent.com/6020549/119243499-5203aa00-bba2-11eb-8c0f-6bb42d125d64.jpg)\n\n- Add FrameSize to Remote file Name   \n\tWhen this is enabled, FrameSize is added to remote file name like this.   \n\t`20210520-165740_800x600.jpg`   \n\t![config-filename-3](https://user-images.githubusercontent.com/6020549/119243501-529c4080-bba2-11eb-8ba4-85cdd764b0fc.jpg)\n\n\n## Select Board\n![config-board](https://github.com/nopnop2002/esp-idf-smb-camera/assets/6020549/5a19cc82-d53a-45ed-9ebf-530f884fe8b2)\n\n\n## Select Frame Size\nLarge frame sizes take longer to take a picture.   \n\n![config-framesize-1](https://user-images.githubusercontent.com/6020549/122480400-c0078980-d007-11eb-9e91-75b30dad065c.jpg)\n![config-framesize-2](https://user-images.githubusercontent.com/6020549/122480403-c0a02000-d007-11eb-9cd7-ee1a4250d120.jpg)\n\n## Select Shutter\n\nYou can choose one of the following shutter methods\n\n- Shutter is the Enter key on the keyboard   \n\tFor operation check.   \n\tWhen using the USB port provided by the USB Serial/JTAG Controller Console, you need to enable the following line in sdkconfig.\n\t```\n\tCONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y\n\t```\n\t![config-shutter-1](https://user-images.githubusercontent.com/6020549/193154988-0de5f305-7bdb-4d05-8a74-8760b39a0161.jpg)\n\n- Shutter is a GPIO toggle   \n\n\t- Initial Sate is PULLDOWN   \n\t\tThe shutter is prepared when it is turned from OFF to ON, and a picture is taken when it is turned from ON to OFF.   \n\n\t- Initial Sate is PULLUP   \n\t\tThe shutter is prepared when it is turned from ON to OFF, and a picture is taken when it is turned from OFF to ON.   \n\n\tI confirmed that the following GPIO can be used.   \n\n\t|GPIO|PullDown|PullUp|\n\t|:-:|:-:|:-:|\n\t|GPIO12|OK|NG|\n\t|GPIO13|OK|OK|\n\t|GPIO14|OK|OK|\n\t|GPIO15|OK|OK|\n\t|GPIO16|NG|NG|\n\n\t![config-shutter-2](https://user-images.githubusercontent.com/6020549/193154991-1271a408-2ac4-43ef-a7f4-482cf51985ee.jpg)\n\n- Shutter is TCP Socket   \n\tESP32 acts as a TCP server and listens for requests from TCP clients.   \n\tYou can use tcp_send.py as shutter.   \n\t`python3 ./tcp_send.py`\n\t![Image](https://github.com/user-attachments/assets/4c301018-2f8c-4644-be3f-417222fb1842)\n\n- Shutter is UDP Socket   \n\tESP32 acts as a UDP listener and listens for requests from UDP clients.   \n\tYou can use this command as shutter.   \n\t`echo -n \"take\" | socat - UDP-DATAGRAM:255.255.255.255:49876,broadcast`   \n\tYou can use udp_send.py as shutter.   \n\tRequires netifaces.   \n\t`python3 ./udp_send.py`\n\t![Image](https://github.com/user-attachments/assets/3dcd72be-d0ef-4bd9-9273-f420ca88f11b)   \n\tYou can use these devices as shutters.   \n\t![Image](https://github.com/user-attachments/assets/cc97da4e-6c06-4604-8362-f81c6fb6eb58)   \n\tClick [here](https://github.com/nopnop2002/esp-idf-selfie-trigger) for details.   \n\n- Shutter is HTTP Request   \n\tESP32 acts as an HTTP server and listens for HTTP GET requests.   \n\tYou can use this command as shutter.   \n\t`curl \"http://esp32-camera.local:8080/take/picture\"`\n\t![config-shutter-5](https://user-images.githubusercontent.com/6020549/193154996-4d783d74-6e24-482a-9ebc-681bc40cf570.jpg)\n\n## Flash Light   \nESP32-CAM by AI-Thinker have flash light on GPIO4.   \n\n![config-flash](https://user-images.githubusercontent.com/6020549/122480398-bf6ef300-d007-11eb-929e-88a5b9aa994f.jpg)\n\n## PSRAM   \nWhen using ESP32S3, you need to set the PSRAM type according to the hardware.   \nESP32S3-WROVER CAM has Octal Mode PSRAM.   \nUICPAL ESPS3 CAM  has Quad Mode PSRAM.   \n![config-psram](https://github.com/nopnop2002/esp-idf-websocket-camera/assets/6020549/ba04f088-c628-46ac-bc5b-2968032753e0)\n\n# Built-in WEB Server\nESP32 works as a web server.   \nYou can check the pictures taken using the built-in WEB server.   \nEnter the ESP32's IP address and port number in the address bar of your browser.   \nYou can connect using mDNS hostname instead of IP address.   \n\n![browser](https://user-images.githubusercontent.com/6020549/124227364-837a7880-db45-11eb-9d8b-fa15c676adac.jpg)\n\n# Reference\nhttps://github.com/nopnop2002/esp-idf-smb-client\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnopnop2002%2Fesp-idf-smb-camera","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnopnop2002%2Fesp-idf-smb-camera","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnopnop2002%2Fesp-idf-smb-camera/lists"}