Skip to main content

Stop-motion studio — NEO One × ThingEdu × Maker Việt

Project description

Maker Việt

NeoStopMotion

Maker Việt × ThingEdu — NEO One

Stop-motion studio cho trẻ em 6-14 tuổi. Chụp frame bằng nút bấm vật lý ThingBot (UART), ghép phim MP4+GIF kèm watermark Maker Việt, upload tự động lên cloud, sinh QR code cho phụ huynh quét tải về.

Repo public License: MIT


✨ Tính năng v1.0

  • Live preview webcam với onion skin (frame trước hiện mờ chồng lên)
  • 2 nút ThingBot: IO1 (xanh) chụp frame · IO2 (đỏ) tạo phim
  • Phím tắt: Space, Z (undo), Enter (export)
  • Ghép phim MP4 (H.264 1280×720 10fps) + GIF (640×360 palette) qua ffmpeg
  • Watermark Maker Việt logo nhúng vào mỗi frame video (góc dưới phải, 85% opacity)
  • Upload cloud tự động (catbox.moe vĩnh viễn, fallback 0x0.st)
  • QR code sinh local trỏ tới link cloud
  • Auto-reset: bấm IO1 trên SuccessPage để bắt đầu phim mới ngay
  • Onion skin chỉ ở live preview, không ghi vào file (giữ chất lượng)
  • Synthetic capture fallback cho dev không có webcam

🎬 Trải nghiệm 25-30 phút (cho HS 6-14 tuổi)

1. Đón tiếp + flipbook 20 trang giải thích nguyên lý hoạt hình
2. Chọn vật liệu (hộp A đơn giản hoặc hộp B mở)
3. Sắp đặt sân khấu trên mặt phẳng 60×60cm
4. Chụp 30-50 frame:
   bấm IO1 → tách → di chuyển nhân vật → bấm IO1 → ...
5. Bấm IO2 → ghép phim MP4 + GIF + upload + QR
6. PH quét QR bằng iPhone Camera/Zalo → tải MP4 về
7. Bấm IO1 lần nữa → tự động làm phim mới

🚀 Quick start

macOS dev

git clone https://github.com/makerviet/NeoStopMotion.git
cd NeoStopMotion
python3 -m venv .venv && source .venv/bin/activate
pip install -e .
brew install ffmpeg
make run                            # webcam thật (cần camera permission)
make run-sim                        # synthetic capture (không cần camera)

Test headless (CI hoặc verify nhanh)

NEO_STOPMOTION_AUTOSHOOT=8 NEO_STOPMOTION_AUTOEXPORT=1 \
  python -m neo_stopmotion
# Tự chụp 8 frame → ghép phim watermarked → upload catbox →
# in URL ra log; MP4/GIF/QR lưu trong ~/neostopmotion_sessions/session_*/

Triển khai NEO One (Linux ARM64)

curl -sSL https://raw.githubusercontent.com/ThingEdu/NeoStopMotion/main/scripts/install_on_neo.sh | bash
neo-stopmotion

Installer sẽ cài ffmpeg, Qt6/PyQt6 và Python OpenCV bằng apt package trên ARM để tránh build Qt6/OpenCV từ source.

⌨️ Phím tắt / Nút

Phím Nút ThingBot Hành động
Space IO1 (xanh) Chụp frame; trên SuccessPage = auto-reset + chụp
Z Xoá frame mới nhất
Enter IO2 (đỏ) Tạo phim (cần ≥5 frame)

🛠 Stack

Python 3.10+ · PyQt6 · QML 6 · OpenCV · pyserial · ffmpeg · qrcode · loguru · catbox.moe

📁 Sản phẩm mỗi session

~/projects/session_2026_05_10_193722/
├── frames/frame_0001.png … frame_0008.png    # PNG raw (no watermark)
├── output.mp4                                 # 1280×720 H.264 + watermark
├── output.gif                                 # 640×360 lanczos + watermark
├── qr.png                                     # QR 360px → cloud URL
└── project.json                               # metadata (session_id, exported, urls…)

📚 Tài liệu

🎯 Triết lý

  • Constructionism (Papert): trẻ học bằng cách tự tay tạo ra phim có ý nghĩa cá nhân
  • Tinkering (Exploratorium): vật liệu mở, môi trường là người thầy thứ ba
  • Bình Dân Học STEM: Made in Vietnam, mã nguồn mở MIT, giá phổ thông

🤝 Đóng góp

Issues + PRs welcome. Chạy test trước khi PR:

make test     # 29 tests
make lint     # ruff + mypy

📜 License

MIT — theo cam kết Bình Dân Học STEM, mã nguồn mở, Made in Vietnam.


"Trao cho một đứa trẻ 8 tuổi quyền lực kể câu chuyện của riêng mình bằng công nghệ."

Maker Việt × ThingEdu — 05/2026

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

neo_stopmotion-1.0.0.tar.gz (41.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

neo_stopmotion-1.0.0-py3-none-any.whl (48.6 kB view details)

Uploaded Python 3

File details

Details for the file neo_stopmotion-1.0.0.tar.gz.

File metadata

  • Download URL: neo_stopmotion-1.0.0.tar.gz
  • Upload date:
  • Size: 41.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for neo_stopmotion-1.0.0.tar.gz
Algorithm Hash digest
SHA256 bbdf0fc65597d02c8f45913ed6a1389d0dfba48b925410bc4f54c2a095ca91d0
MD5 26ac344dc42807e4866a55e0c0caba64
BLAKE2b-256 ccd5e2cf2d8cda1d2cc063da5462d07c73b5c37fc61863050e99802c3796d903

See more details on using hashes here.

File details

Details for the file neo_stopmotion-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: neo_stopmotion-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 48.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for neo_stopmotion-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0c41047d3d98a72a345c214e459fe211ac261221813b65c78b517e2f7d4d01cc
MD5 ca1a6fe68241d0050f8273c9156a4e66
BLAKE2b-256 a77e4cbb975b55be9cc6a0a2716abd4089bc4e80288234e6639ac67e7b6342e2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page