willwho
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights
    • Engagement control
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Versions and GitHub Sync Note Insights Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       owned this note    owned this note      
    Published Linked with GitHub
    Subscribed
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    Subscribe
    # ESP32-CAM Tiny camera ![](https://github.com/be1ieve/esp32cam-tinycamera/raw/main/pic/products.jpg) <H3><del>這專案簡單說就是把相機模組當相機看。</del></H3> ESP32號稱是maker界人手一大把的超好用MCU,搭配上可拍到最高1600*1200解析度照片的OV2640模塊,想想也該是非常有趣組合。哪知道ESP32CAM這模塊推出後是叫好不叫座,最後只能沉睡在眾人的抽屜深處。 深入探索這顆模塊後就可以發現他之所以會被眾人唾棄的原因就是一點: 可用接腳太少。ESP32CAM模塊其實掛載的東西非常多,有microSD卡槽、相機插槽、外部記憶體還有一顆夠閃瞎人的LED。這些功能如果要在其他的MCU實現,光拉線就不知道要打結成怎樣了。 # 材料 ## 3D列印外殼 ![列印放置方式](https://github.com/be1ieve/esp32cam-tinycamera/raw/main/pic/vertical/printing.png) * 外殼材料用最通用的PLA料,不須設定支撐。列印完成後把列印頂面稍微打磨,後續組裝密合程度較好。 * 握把內側放按鈕的空間會有些許下垂,直接以刀片切除取完整平面即可。 ## 模塊 ![](https://i.imgur.com/VovsruC.jpg) 下面列出的賣場是還找得到購買記錄的,並非指定店家 * ESP32-CAM模塊 + OV2640鏡頭 * 為最大化可用空間,須將ESP32-CAM與LCD模塊上所有的棑針卸除,只用導線連接。請先在麵包板上測試程式運作正常後再進行 * ESP32-CAM上的閃光燈因其與microSD卡共用接腳,開機後會全程白光點亮。須直接破壞LED部位直到見到底下銀白色載板 * [ST7735S 1.8吋 160x128 LCD模組](https://shopee.tw/ST7735-1.8%E5%90%8B-128-x-160-%E8%BF%B7%E4%BD%A065K%E5%85%A8%E5%BD%A9OLED-IPS%E6%B6%B2%E6%99%B6%E8%9E%A2%E5%B9%95-SPI%E9%80%9A%E8%A8%8A-TFT%E9%A1%AF%E7%A4%BA%E5%99%A8-i.656213378.16646367723) * 注意這塊是沒有SD卡槽的版本,兩者外觀尺寸不同不通用。且此版本只有單邊8個接腳 * [TP4056 Type-C 充電板](https://shopee.tw/TP4056-18650%E9%8B%B0%E9%9B%BB%E6%B1%A03.7v-3.6V-4.2V%E9%8B%B0%E9%9B%BB%E6%B1%A0%E5%85%85%E9%9B%BB%E6%9D%BF1A-%E9%81%8E%E6%B2%96%E9%81%8E%E6%94%BE%E4%BF%9D%E8%AD%B7-%E5%A4%9A%E4%BB%8B%E9%9D%A2%E5%8F%AF%E9%81%B8-i.171004054.2705515685) * 此次選用TYPE-C僅充電模塊主要是以尺寸與取得便利性為量。任何寬度18mm以內的充電模塊只要把外殼的固定卡榫切斷應該都可以用 * [鋰電池](https://shopee.tw/%E3%80%90%E5%85%A8%E7%AB%99%E6%9C%80%E4%BD%8E%E5%83%B9%E3%80%913.7V-%E5%85%A9%E7%B7%9A-19%E7%A8%AE-%E9%8B%B0%E9%9B%BB%E6%B1%A0-%E7%B6%AD%E4%BF%AE%E7%94%A8%E9%9B%BB%E6%B1%A0-%E9%8B%B0%E9%9B%BB%E6%B1%A0-%E8%81%9A%E5%90%88%E7%89%A9%E9%9B%BB%E6%B1%A0-%E8%A1%9D%E9%87%8F%E7%89%B9%E6%83%A0-i.78246604.2771597743) * 鋰電池選用602540的尺寸與容量應已夠用,試用到752550差不多塞滿 * HT7333 LDO + SOT-89轉接板 * ESP32無法接受鋰電池4.2V的電壓,高於3.6V有可能會使晶片故障。 * 此處用HT7333為鋰電池穩壓3.3V的方案,若手邊有其他LDO可直接取代。特別注意不要選用AMS1117,因其壓降太多無法維持3.3V * 其他參考LDO: RT9193@3.3V300mA,SPX3819@3.3V500mA * [12x12 輕觸按鍵](https://shopee.tw/%E7%9B%B4%E6%8F%92-%E8%BC%95%E8%A7%B8%E9%96%8B%E9%97%9C-%E6%8C%89%E9%8D%B512*12*4.3-5-6-7-7.5-8-9-10-11-12-15MM-%E5%BE%AE%E5%8B%9512X12-i.171004054.2781492591) * 注意須選用主體高度4mm的按鍵,部份賣場的主體高度約5mm會放不進去 * 按鍵整體高度選6mm以上就會高於外殼面,此處選用8mm * [8x4x4撥動開關](https://shopee.tw/%EF%BC%8810%E5%80%8B%EF%BC%89SS12D00VG3-4-5-6-7-8MM%E6%9F%84%E9%AB%98-%E6%92%A5%E5%8B%95%E9%96%8B%E9%97%9CSK12D00%E4%B8%89%E8%85%B3%E5%85%A9%E6%AA%94%E6%A9%AB%E6%9F%84%E5%BC%8F%E6%BB%91%E5%8B%95-i.171004054.4912814785) * M2*20mm螺絲 4隻 * 上方兩隻可用M2*16取代 ## 程式 ### Arduino程式 * 見github連結 ### TFT_eSPI設定檔 * 須修改以符合螢幕規格,見github # 轉接板接線 ![](https://github.com/be1ieve/esp32cam-tinycamera/raw/main/pcb/PCB.png) ## 模塊準備 * ESP32-CAM 1. 燒錄程式到模組中,確認運作正常 2. 將ESP32-CAM上的排針與板載LED拆除 3. 在模塊背面,左側焊接 12 13 4 共3條導線 4. 在模塊背面,右側焊接 3V GND 3 1 共4條導線 * ST7735 LCD模塊 1. 將LCD模塊的排針全部拆除 2. 將8個接點都焊接導線 * 充電模塊 1. 將模塊接電池的兩個接點都焊接導線 * 雙切開關 1. 將SWITCH三個接點各焊一條導線 * HT7333穩壓模組 1. 將晶片焊到SOT-89轉接板上 2. 將轉接板的三個接點都焊上導線 * 按鍵 1. 將按鍵其中一邊的兩隻腳剪斷 2. 將另一邊的兩隻腳焊上導線 ## 組裝過程 ![](https://github.com/be1ieve/esp32cam-tinycamera/raw/main/pic/vertical/allignment.png) 1. 先將按鈕調整位置卡入握把上方的空間並使按鍵凸出可動作,稍微旋轉角度使按鈕主體凸出的部份靠中央,最後以熱溶膠固定。 2. 將穩壓模塊放入握把中間的空間並固定 3. 將按鈕與穩壓模塊的導線從主體右上方孔洞穿出,並組合握把、鏡頭環與主體 4. 將鏡頭墊高塊短邊略為切齊OV2640並黏貼,完成後固定在ESP32CAM上使鏡頭排線接近垂直越好,但小心不要折斷 5. 將ESP32CAM與電源開關放入主體中並固定 6. 將充電模塊放入主體右側空間並固定 7. 將LCD模塊放入後蓋並固定 ![](https://github.com/be1ieve/esp32cam-tinycamera/raw/main/pic/vertical/inside.jpg) 此時除了電池尚未就定位之外,其餘元件應該都已放入定位並黏貼牢固 8. 按照PCB板孔位將所有接線剪減至適當長度後焊接在轉接板上 9. 調整位置組合主體與後蓋,以M2螺絲從後蓋往前鎖 # 補充資料 * 相關檔案放置於Github: [https://github.com/be1ieve/esp32cam-tinycamera](https://github.com/be1ieve/esp32cam-tinycamera) ## 拍照存SD卡 * 拍照時因要切換解析度,螢幕畫面會消失再恢復,若持續幾秒沒恢復那就是當機了 * SD卡須格式化為FAT32,且ESP32只支援前4GB空間存取,過大的卡片也只是浪費 * 拍照尺寸1600x1200,一張照片約110KB,可放破萬張

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully