GithubHelp home page GithubHelp logo

calibrator-9000's Introduction

Device: Calibrator-9000

Firmwares and drivers for an Arduino-based 6-DOF calibrator tool.

Concept art: concept art rendering

Final prototype: final prototype

I want one

Do you want to make one yourself? Nice!

What you need to buy

# Name Qty Link
1 3D model - 2 parts (.STL) 1 https://www.tinkercad.com/things/1XgNqGJ9kwN
2 PCB board (34*26 holes) 1 any
3 Resistance 180 Ohm 1 any
4 Resistance 220 Ohm 3 any
5 Resistance 270 Ohm 1 any
6 Resistance 510 Ohm 1 any
7 M3x8 screws (PCB holders) 4 any
8 M3x16 screws (Bottom part) 4 any
9 M3 nuts 8 any
10 5mm RGB LED 6 any
11 10K linear potentiometer 6 https://www.adafruit.com/product/562
12 Potentiometer knob 30 x 10mm 6 https://www.aliexpress.com/item/Potentiometer-Knob-30-x-10mm-1-Pieces/32745439004.html
13 Adafruit Itsy Bitsy M0 Express 1 https://www.adafruit.com/product/3727
14 3D printable PCB holder 4 https://www.tinkercad.com/things/asoKI28gtia
15 Header pins and wires * any

Instructions

Step 1. 3D print the PCB holders, find screws and nuts

step1

Step 2. Prepare the potentiometers

step2

Step 3. Prepare the LEDs for X(red), Y(green), Z(blue), R(cyan), P(magenta), W(yellow)

step3a step3b

Step 4. Prepare the PCB

step4

Step 5. Use the 3D printed holders to secure the PCB to the bottom plate

step5

Step 6. Mount potentiometers and LEDs on the top plate

step6

Step 7. Use 4 M3x16 screws and 4 nuts to secure the case

step7

Step 8. Flash the firmware using the Arduino IDE
Step 9. Use the python drivers to calibrate/initialize the device and receive data from it

step9

Step 10. Enjoy the lights

step10

calibrator-9000's People

Contributors

afdaniele avatar

Watchers

 avatar  avatar

calibrator-9000's Issues

second call to `initialize()` sends the firmware in CALIBRATING mode

The first time I call initialize() after plugging in the device, the device goes in INITILIZING mode, which is correct since the knobs are calibrated (even though the X is not, but that is not implemented yet, issue 1).

If I then call initialize() again without unplugging the device, the firmware goes in CALIBRATING mode. This should not happen.

CALIBRATING mode when a fraction of knobs is already calibrated

When the device is initialized, the device loads the calibration file but it does not check which knobs are calibrated and which ones are not. Enabling x, and y with only y calibrated sends the device in INITIALIZING mode. It should go in CALIBRATING mode with x=UNCALIBRATED and y=UNITIALIZED.

Empty DATA escaping firmware

Sometimes a DATA packet leaves the firmware with all zeros.

Example output:

Axis: [x:0.9561111330986023, y:-0.2471461147069931, z:0.0, r:0.015303682535886765, p:0.0, w:0.0]
Axis: [x:0.9566666483879089, y:-0.0861872136592865, z:0.0, r:0.015303682535886765, p:0.0, w:0.0]
Axis: [x:0.9572222232818604, y:0.054569654166698456, z:0.0, r:0.015303682535886765, p:0.0, w:0.0]
Axis: [x:0.9572222232818604, y:0.1659272462129593, z:0.0, r:0.01578192226588726, p:0.0, w:0.0]
Axis: [x:0.9572222232818604, y:0.26530611515045166, z:0.0, r:0.015303682535886765, p:0.0, w:0.0]
Axis: [x:0.9561111330986023, y:0.3593611419200897, z:0.0, r:0.015303682535886765, p:0.0, w:0.0]
Axis: [x:0.9566666483879089, y:0.4516415297985077, z:0.0, r:0.015303682535886765, p:0.0, w:0.0]
Axis: [x:0, y:0, z:0, r:0, p:0, w:0]
Axis: [x:0.9566666483879089, y:0.6242235898971558, z:0.0, r:0.015303682535886765, p:0.0, w:0.0]
Axis: [x:0.9566666483879089, y:0.6969831585884094, z:0.0, r:0.015303682535886765, p:0.0, w:0.0]
Axis: [x:0.9566666483879089, y:0.7670807242393494, z:0.0, r:0.015303682535886765, p:0.0, w:0.0]
Axis: [x:0.9566666483879089, y:0.7910381555557251, z:0.0, r:0.015303682535886765, p:0.0, w:0.0]
Axis: [x:0.9572222232818604, y:0.793700098991394, z:0.0, r:0.01578192226588726, p:0.0, w:0.0]
Axis: [x:0.9566666483879089, y:0.793700098991394, z:0.0, r:0.01578192226588726, p:0.0, w:0.0]
Axis: [x:0.9566666483879089, y:0.7724046111106873, z:0.0, r:0.01578192226588726, p:0.0, w:0.0]
Axis: [x:0.9566666483879089, y:0.7724046111106873, z:0.0, r:0.01578192226588726, p:0.0, w:0.0]

This is either an empty DATA packet that escapes the firmware or a failure in interpreting the payload on the drivers' side.

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.