Homebrew FX Chrony display

Oh, turns out I'm not done :(
😀 its is not about "are we there yet?" I fully agree this is a project development, and only a sky is a limt...
I am hoping that you can value why to scratch the first number of shots, each gun is different but safe to say a first 3-5 ???? From a "cold gun" that was sitting per say overnight, and just grab it and wanna check the tune.
 
  • Like
Reactions: 177er
Core2 is still a few days away but I have the M5stack stuff installed.
What other things do I need to install?
I have a Core (black housing), got it last week and turns out must be sitting on shelfs for long time, cannot hold a OEM battery longer then 5 min. I will be ordering the Core 2 but backoredered at this moment ETA mid January.
I will be back to you probably in a month time asking for codes :)
 
Putting on the last finishing touches on the anti-cant (tilt) indicator. Will incorporate it into the shot display app. It will be shown BETWEEN shots only, taking the place of the speed display area in the middle. M5Stack next. That one is easier since there was an app already written for that wit the correct specs.

thumbnail_IMG_2959.jpg


 
This is awesome work!
The latest release doesn't compile for the Heltec ESP32
I get the following errors repeating when compiling.

Code:
\FXChronyv3\FXChronyv3.ino: In function 'void setup()':
\FXChronyv3\FXChronyv3.ino:189:28: error: 'doubleClick' was not declared in this scope
   button.attachDoubleClick(doubleClick);
                            ^~~~~~~~~~~
\FXChronyv3\FXChronyv3.ino:189:28: note: suggested alternative: 'double_t'
   button.attachDoubleClick(doubleClick);
                            ^~~~~~~~~~~
                            double_t
\FXChronyv3\FXChronyv3.ino:190:30: error: 'longPressStop' was not declared in this scope
   button.attachLongPressStop(longPressStop);
                              ^~~~~~~~~~~~~
\FXChronyv3\FXChronyv3.ino:191:22: error: 'singleClick' was not declared in this scope
   button.attachClick(singleClick);
                      ^~~~~~~~~~~
\FXChronyv3\FXChronyv3.ino:245:3: error: 'build_gun_menu' was not declared in this scope
   build_gun_menu();
   ^~~~~~~~~~~~~~
Both Heltec & TT-Go repos updated:

Things:

- You can now get into the menu during the searching phase (long btn push)
-Sleep time goes upto 60s
-You get 20 shots in a string per gun
-Stores selected pellet per gun
-There's a new shot string menu item
-- First time you use it (or after reordering / adding / deleting a gun) got to shot string | initialise
-- shot string | review - click thru each shot and view pellet speed
-- shot string | clear - resets your shot string
-- shot string | dump - prints the shot string to UART (connect your PC and look in serial monitor)
-- shot string | stats - displays the stats for the shot string

I think I'm done, maybe some UI tweaks and M5stickPlus port but otherwise I'm calling this complete.

Red Wolf owners - watch out for my Rebel GCU early next year!

Happy New Year & Slava Ukraini!

Thanks for all your hard work, like @bigHUN said -
Can I save larger shot strings (100-200 or more to the computer)?
Also, will the shot strings remain saved if I disconnect them from the battery, since there's no microSD for the Heltec ESP32
I realy like the development and what I see on the screen.
From my perspective as a 100 meters target shooter - and that is all outdoors for an ordinary airgunner - the most important data is the average + ES + SD.
But, I know that as well - the first 3 to 5 shot - are disposable !!! With every "cold start", is that you just started shooting or for every new tune. The Reg washers or orings or valve needs to warm up to stabilize.
So, a number of shots of 20 for example as a "total number" will tweak the numbers.
I am also a "large volume" shooter meaning 200 shots an average, so whatever I said is coming from "experience.
What would be involved ? to take a calculations "average" not from a total of 20 shots but a last 20 shots?
I really like the idea about removing shots, and when I'm testing, 30-50 shots might be required to get meaningful strings.
When I'm tuning my FX, it is like 5-10 shots per setting, and a string really helps visualize tuning settings by chart, so definitely a good to have.


Putting on the last finishing touches on the anti-cant (tilt) indicator. Will incorporate it into the shot display app. It will be shown BETWEEN shots only, taking the place of the speed display area in the middle. M5Stack next. That one is easier since there was an app already written for that wit the correct specs.

View attachment 319285

This looks amazing! Might I suggest changing the black to Green when aligned?
Another option could be a vertical bar on the same FPS menu, to the right of 'fps' which highlights green when not canted, and is red when there's an angle.
 
  • Like
Reactions: bigHUN
When I started learning how to tune my Impact MK2 for each day/calbre I spent like half a tin, and I was calling that tuning only, finetunning a next week of shooting. But at least I was shooting into rings and from a Bench so a learning curve is way easier that way. Years later I started learning how to tune my Leshiy2 and for each tune I spent like a half a tin, again.
Today if I want to retune - in a same calibre but different weight pellets, I know that will be at least 50-60 shots to get it in a ballpark. Swapping barrels to another caliber = back to day one.
Edit: whatever I said above don't mistaken a tuning vs tuning is a same. Fyi I can fully setup a brand new never seen scope within 3 to 5 shots.
 
  • Like
Reactions: 177er
My greatest THANKS to fe7565 he was able to manage my M5Core to this screen, now I would like to modify it a bit.

M5 display 01.JPG

- Which line (or lines) in the code defines that "connected", I would like to turn that off.
also
- Which line in the code defines the "287", I would like to move it up to the center and change the collor.

[As a side note, I can brows through some menu's with a C button, but looks like the metric speed doesn't toggle between mps and fpsm so I would need that line number as well]

View attachment chrony_menu_M5Stack_Rev6.zip
 
  • Like
Reactions: 177er
My greatest THANKS to fe7565 he was able to manage my M5Core to this screen, now I would like to modify it a bit.

View attachment 319935
- Which line (or lines) in the code defines that "connected", I would like to turn that off.
also
- Which line in the code defines the "287", I would like to move it up to the center and change the collor.

[As a side note, I can brows through some menu's with a C button, but looks like the metric speed doesn't toggle between mps and fpsm so I would need that line number as well]

View attachment 319938
Glad you like it. In order to become self-sufficient in customizing colors and moving numbers around the screen, you can study the codes here: https://docs.m5stack.com/en/arduino/arduino_home_page?id=m5core_api

The code is very well-commented with explanations. For now, this should get you started:
- To remove "Connected", under Arduino IDE Menu => Edit => Find search for "M5.Lcd.print("Connected"); and uncomment the line(s) with this: //
In may case they are at lines : 435, 489, 568, 927

Moving up the speed display digits: in my code in lines 460, 469, 515 change the numbers after setCursor. The first number is the horizontal, and the second is vertical. This moves both the fps and the m/s digits:

M5.Lcd.setCursor(10, 220);
M5.Lcd.print(fspeed, 0);//

Button B, the middle button supposed to control the Menu. On my Rev6 (same as yours) it works changing from m/s to fps and vice versa. Please, use Button B instead of C for the menu control.
 
As you know, at 100 yards with a 16" drop even a 2 degrees rifle-cant (tilt) can result in a 0.75" windage error.

The Tilt Indicator (anti-cant) for now is stand-alone. I will incorporate it in the chrono display program hopefully by tomorrow. It will be under the menus and will take place of the speed display area of the screen, and will auto appear between shots. Here is a working sample of the stand alone version.

It does not need calibration as long as your scope/gun is level to the ground and you also mount this module level to the ground. When you turn on the module, it will show you the zero-level to ground. So, optimally, you should make an effort to mount the display module level (just like your scope).

If you cannot mount the display module level, then you can calibrate it with a press of a button (within limits: up to about +/20 degrees).

Install ALL three files in the same folder in your Arduino sketches folder. Click on the ino file and then click OK next to install as Arduino will prompt.

How to use: If your scope/gun are already level with your display module, there is nothing to do. Just turn on and shoot.

If there is a level discrepancy between your scope and the module display, then line up your scope/gun zero to ground and hold it in that position. While the scope/gun are still zeroed, press Button A (large M5) for over 2 seconds. This will calibrate the display module to your scope/gun. If you need to re-calibrate, just repeat the Button A press. If you need to go back to zero level again, press Button B (top) for at least 10 sec to RESET to zero.. Or restart the display module.

Later on may add your adjusted calibration settings into permanent memory, although that assumes that if you remove the display module and put it back into its mount/with its mount, it will be exactly at the same angle.

The internal buzzer is too weak to hear anywhere but indoors, but if anyone can add it. Also, can flash the LED, but it's not very visible in outdoor daylight.

View attachment M5StickC Plus Tilt_rev1.zip
 
Last edited:
  • Like
Reactions: 177er and Mendo2
I know that would be a best option having a laptop in a garage and shoot my high power airgun and change the "txt" location on the spot, but I don't have that convenience, my PC room is upstairs and other corner of a house and I cannot shoot my gun in that room :)
How can I create a gost number let say "0000" for a speed text that will show on screen until the Core is connected to PC (same font size and color), and I can move it around without shooting the gun. When I am done just uncomment, or at least alternating when a first shot is registered?
 
I know that would be a best option having a laptop in a garage and shoot my high power airgun and change the "txt" location on the spot, but I don't have that convenience, my PC room is upstairs and other corner of a house and I cannot shoot my gun in that room :)
How can I create a gost number let say "0000" for a speed text that will show on screen until the Core is connected to PC (same font size and color), and I can move it around without shooting the gun. When I am done just uncomment, or at least alternating when a first shot is registered?
If you would take a look at the code next to the same lines I pointed you to in my last post, you would see where and how you can add dummy numbers for testing. If you get stuck, ask for help. But do try first.

I am sorry I cannot micro-manage detailed and personal one-off desires. I have my own life too and my time is as precious as yours. . I helped you up until 3am the other day for over 3 hours. This is not a turn-key paid commercial solution, but an open source project. I posted for you numerous links to tools and codes previously. You need to to dive in and learn. Or someone else may jump in and help you.
 
Last edited:
Success! Now I'll move to other revisions as I learn.
That's great! Are you using the Core2? The touch screen? I like that a lot more than the Basic Core. It also has a 3x battery capacity compared to the Stick and the M5Stack Basic.

The rev6 version of the code that BigHun and I managed to simplify significantly by getting rid of the special fonts, was ported for the M5Stack Core Basic originally. Because the Core2 has touchscreen, that code needs some changes to make it touchscreen compatible. I did not look at it yet, but it may be as simple as a few changes to the button related codes using the "factory" touchscreen guide for the Core2....or may be a lot more involved. I came across this library that may be easier to use than the "factory" touchscreen library, but I did not dive into it:

 
  • Like
Reactions: M0ist0ne