{"id":14967274,"url":"https://github.com/gyroflow/flowshutter","last_synced_at":"2025-05-02T22:31:07.549Z","repository":{"id":37726982,"uuid":"441333640","full_name":"gyroflow/flowshutter","owner":"gyroflow","description":"Firmware for FC based gyro logger device","archived":false,"fork":false,"pushed_at":"2022-10-10T06:17:00.000Z","size":18496,"stargazers_count":167,"open_issues_count":5,"forks_count":13,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-07T07:42:50.428Z","etag":null,"topics":["camera","esp32","flowbox","flowshutter","gyroflow","gyrologger","hacktoberfest","hacktoberfest2022","micropython","motion-logger","sony-camera"],"latest_commit_sha":null,"homepage":"https://docs.gyroflow.xyz/flowshutter/flowshutter/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gyroflow.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-12-24T01:16:11.000Z","updated_at":"2025-03-21T03:08:50.000Z","dependencies_parsed_at":"2023-01-19T13:03:04.194Z","dependency_job_id":null,"html_url":"https://github.com/gyroflow/flowshutter","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gyroflow%2Fflowshutter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gyroflow%2Fflowshutter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gyroflow%2Fflowshutter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gyroflow%2Fflowshutter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gyroflow","download_url":"https://codeload.github.com/gyroflow/flowshutter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252116116,"owners_count":21697313,"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":["camera","esp32","flowbox","flowshutter","gyroflow","gyrologger","hacktoberfest","hacktoberfest2022","micropython","motion-logger","sony-camera"],"created_at":"2024-09-24T13:37:46.473Z","updated_at":"2025-05-02T22:31:02.538Z","avatar_url":"https://github.com/gyroflow.png","language":"Python","readme":"![](images/flowshutter.png)\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://gyroflow.xyz\"\u003eHomepage\u003c/a\u003e •\n  \u003ca href=\"https://docs.gyroflow.xyz/flowshutter/flowshutter/\"\u003eDocumentation\u003c/a\u003e •\n  \u003ca href=\"https://discord.gg/WfxZZXjpke\"\u003eDiscord\u003c/a\u003e •\n  \u003ca href=\"https://github.com/gyroflow/flowshutter/issues\"\u003eReport bug\u003c/a\u003e •\n  \u003ca href=\"https://github.com/gyroflow/flowshutter/issues\"\u003eRequest feature\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/gyroflow/flowshutter/languages/top\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/languages/top/gyroflow/flowshutter\" alt=\"Languages\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/gyroflow/flowshutter/graphs/contributors/\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/contributors/gyroflow/flowshutter?color=dark-green\" alt=\"Contributors\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/gyroflow/flowshutter/issues/\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/issues/gyroflow/flowshutter\" alt=\"Issues\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/gyroflow/flowshutter/\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/languages/code-size/gyroflow/flowshutter\"\u003e\n  \u003c/a\u003e\n    \u003ca href=\"https://github.com/gyroflow/flowshutter/tree/master\"\u003e\n    \u003cimg src=\"https://github.com/gyroflow/flowshutter/actions/workflows/build.yml/badge.svg?branch=master\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/gyroflow/flowshutter/tree/master\"\u003e\n    \u003cimg src=\"https://github.com/gyroflow/flowshutter/actions/workflows/check.yml/badge.svg?branch=master\"\u003e\n  \u003c/a\u003e\n    \u003ca href=\"https://github.com/gyroflow/flowshutter/tree/beta\"\u003e\n    \u003cimg src=\"https://github.com/gyroflow/flowshutter/actions/workflows/check.yml/badge.svg?branch=beta\"\u003e\n  \u003c/a\u003e\n    \u003ca href=\"https://github.com/gyroflow/flowshutter/tree/stable\"\u003e\n    \u003cimg src=\"https://github.com/gyroflow/flowshutter/actions/workflows/check.yml/badge.svg?branch=stable\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n**Flowshutter** is a custom camera remote. When used in conjunction with readily available hardware, this results in a flexible and reliable external camera motion logger for Gyroflow. It can provide precise synchronization of camera video recording and motion logger (betaflight/emuflight FC) recording. \n\n**Flowshutter** aims to make all cameras ready for stabilization with [Gyroflow](https://github.com/gyroflow/gyroflow) software to provide you with one of the best open-source video stabilization experiences.\n\n\n## Features\n\nFlowshutter has the following features:\n\n- '1-click' - (1) start/stop camera recording and (2) arm/disarm FC, via one click \n- Camera recording start/stop control\n- FC arm/disarm control\n- FC blackbox flash chip erasion\n- OLED display\n\nwith many more features on the way!\n\n## Hardwares\n### Basic View\n\n![](images/basic_inner_structure.png)\n\n### Supported Hardware\n\nCurrently we are wroking with NeutronRC for a small range of sales in China. Subsequent versions are in production, please stay tuned.\n\n![NeutronRC SDB](https://user-images.githubusercontent.com/31283897/167240748-b82fc3fc-d208-40f8-b3eb-7423204c46a4.jpg)\n\nAt the same time you can try to DIY your own flowshutter hardware. We have two open sourced designs:\n\n- [Credit card sized design](https://oshwhub.com/AirFleet/xiang-ji-kong-zhi-ban):\n\n[![build](images/flowshutter-credit-card-sized.png)](https://youtu.be/ELaQPYE9ncA)\n\n- [FC sized design](https://oshwhub.com/AirFleet/xiang-ji-kong-zhi-ban_copy_copy): \n\n[![build](images/flowshutter-fc-sized.png)](https://youtu.be/ry7Ey54Z7s8)\n\n\n### Compatible camera protocol/trigger mechanisms\n\n- [x] Sony MULTI Terminal protocol\n- [x] Momentary Ground\n- [x] 3.3V Schmitt trigger\n- [x] ZCAM UART protocol\n- [x] Sony LANC protocol *\n- [ ] 5V Schmitt trigger (WIP)\n- [ ] HDMI CEC protocol (WIP)\n\nFor more information about support camera list, please check the [list](https://docs.gyroflow.xyz/flowshutter/clist/) on the [documentation website](https://docs.gyroflow.xyz/).\n\n_*Note:_ We need an extra Arduino board to send the Sony LANC protocol, triggering mechnism is based on momentary ground, but needs to add opto-coupling module between arduino and flowshutter to prevent overvoltage.\n\n### Compatible FC\n\nFC is short for flight controller, more specifically with betaflight/emuflight running on.\n\n- flowbox (highly recommended)\n- modern FC with BMI270 gyroscope (recommended)\n- any other FC that support CRSF protocol\n\n## Development Guide\n### Flash micropython firmware\n\nThe micropython firmware we used is [v1.19.1](https://micropython.org/resources/firmware/esp32-20220618-v1.19.1.bin), You can find a copy in the `/tools` directory. Also, a `uPyCraft` windows version is also provided in the `/tools` directory. You can try to use that to flash your ESP32 without the help of ESP-idf.\n\n### Set up debug environment\n\nPre-requisite:\n- Python3\n\n#### Visual Studio Code with Pymakr extension\n\n1. Install `node`\n2. Install `Visual Studio Code`\n3. Install `Pymakr` extension in `Visual Studio Code`\n4. Edit `address` in `pymakr.conf` to your flowshutter's COM port\n5. Pull flowshutter code from `https://github.com/gyroflow/flowshutter`\n6. Then you can connect and upload the flowshutter code\n\n#### Thonny IDE\nTBD\n\n### Start debugging\n\n1. Modify the `pymakr.conf` to match up with your flowshutter's COM port\n2. `python build.py debug` to prepare the debug environment (move modules to `/obj` directory)\n3. Upload all modules to the hardware and reboot it.\n\nNote:\n- `python build.py debug`: copy modules to `/obj` directory\n- `python build.py debug clean`: clean the `/obj` directory. Useful when you are suffering from memory leak.\n\n### Compile flowshutter firmware (single bin)\n\nThere's a CI that can help us to this. For compiling it locally, please check `build.py` for more information.\n\n\n## License\n\nThis project is licensed under:\n\n- CC-BY-NC-ND 4.0\n- AGPL 3.0\n\n**Note:** AGPL 3.0 is only avaliable after you signed our CLA.\n\nThis software is provided as is, and please feel free to use this on your own camera which will be used for shooting/recording comercial images/videos. Please contact [DusKing1](1483569698@qq.com) if you intend to use it for other commercial purposes.\n\n## Pillar of shame\n\n**Due to egregious abuse of open source in Wuxi, China, this project refuses to provide any support to any user in Wuxi, or to cooperate in any form with any company or individual in Wuxi. Please do something worthy of your conscience.**\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgyroflow%2Fflowshutter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgyroflow%2Fflowshutter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgyroflow%2Fflowshutter/lists"}