Giter VIP home page Giter VIP logo

aaatimer's Introduction

Action Air Timer

Problem Statement

Competitive shooting measures time taken over the course of fire (COF). A stop plate is recommended for recording last shot attempted on a COF for airsoft as shots are not loud enough for consistent microphone pickup. Competition grade hardware are often expensive and hard to source. A home brew solution can be a good back up.

Solution Scope

  • Support commercial off the shelf stop plates or PC microphones strapped to a steel plate(see stop plate section).
  • Random 1 to 4 seconds delay of start signal after timer trigger.

Hardware

Timer

  • M5Stack ESP32 Basic Core IoT Development Kit (Other model would likely work as this is Blockly/MicroPython)
    • Timer listens to stop plate signal on ADC
    M5Stack ADC --- LM386 module --- mini plug socket --- stop plate
    
  • Using your favorite shooting timer app on mobile phone
    • App with adjustable sensitivty and tune towards dry fire level
    • Build a TRRS plug cable to connect with stop plate and external speaker
    • For phone with USB type C or lightning port, an adptor with TRRS support is required, not all adaptor have TRRS support for microphone
                               TRS plug --- Powered Speaker
                               LRG
                               |||
                 +-------------+||
                 |+-------------+|
                 ||+-------------+
                 |||
                 LRGM                
Mobile Phone --- TRRS plug (in CITA format for Android and iPhone)
                 LRGM
                   ||
                   |+----------+
                   +----------+|
                              ||
                              MG
                              TS socket -- Stop Plate

Stop Plate

  • Stop Plate using M5Stack Atom Lite
Knock Sensor
Piezoelectric ------------------------------ DAC0 pin 33 on M5Stack Atom Lite
Speaker               |         
                Resistor 1M Ohm
                      |
Piezoelectirc ------------------------------- GND pin on M5Stack Atom Lite
Speaker GND
Output To CED700 Timer
Mini Plug +   ------------------------------- ADC0 pin 25 on M5Stack Atom Lite
Mini Plug GND ------------------------------- GND pin on M5stack Atom Lite
  • Stop Plate using Raspberry Pi Pico
Knock Sensor
Piezoelectric ------------------------------ TBD pin on Raspberry Pi Pico
Speaker               |         
                Resistor 1M Ohm
                      |
Piezoelectirc ------------------------------- GND pin on Raspberry Pi Pico
Speaker GND
Output To CED700 Timer
Mini Plug +   ------------------------------- TBD pin on Raspberry Pi Pico
Mini Plug GND ------------------------------- GND pin on Raspberry Pi Pico

Software

Micro Python built from UIFLow with Blocky, targeting M5Stack devices

Timer (Built on M5Stack ESP32 Basic Core IoT Development Kit)

  • Open uiflow/main.m5f from UIFlow
  • Put your M5Stack device under proper mode (e.g. Internet mode or USB mode) for programming
  • Hit the "Play" (Right Arrow) button
  • logo.png for customized logo
  • Time for last 20 stop plate hit is displayed

Stop Plate (Built on M5Stack Atom Lite)

  • Open uiflow/stop_plate_atomlite.m5f from UIFlow
  • Put your M5Stack device under proper mode (e.g. Internet mode or USB mode) for programming
  • Hit the "Play" (Right Arrow) button

Stop Plate (Built on Raspberry Pi Pico)

  • Use Arudino IDE, open arduino/stopplate/stopplate.ino

Design Notes

  • Minimalize global variable, but still unavoidlable in Blockly/MicroPython
    • Globals are accessed by event handlers (e.g. button etc), pretty bad for multithreading but necessary evil the way how Blockly works now. Assuming we don't have this advanced MicroPython enabled yet :)
  • NOT IMPLEMENTED, A HINT FOR FUTURE EXPANSION Action camera supporting SJCAM API over Wifi (tested on SJ4000 Wifi) the great guide.

Caveats

  • Basic ESP32 turn out having enough juice with following caveats
    • The countdown screen refresh taken much of CPU load, buttons are less responsive there but we don't care during count down
    • Hence the refresh timer is stopped before start signal beeps to disable the frequent refresh of stopwatch, plus matching behavior of most shot timers out there

aaatimer's People

Contributors

hfcs avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.