voroshkov / chorus-rf-laptimer Goto Github PK
View Code? Open in Web Editor NEWLicense: MIT License
License: MIT License
After launch of Chronos app there's only white screen, No any keys/writings is shown.
I'm using Yotaphone 2 (android 5.0)
I think it will be great to hear last lap time once app got it from Chorus device.
Also it will be useful to hear best lap time right after last lap time.
smth like "Last lap: 23.6 sec... Best lap: 18.2 sec"
For the new best lap it will be just like "New Best lap: 15.8 sec"
Add possibility to
Useful in situations when someone makes invalid lap time due to missing gates etc.
(Exported reports must be consistent with the updates made)
Hey Guys,
Whats your Bluethooth Range? HC05 has a pretty bad range so here is an idea.
To keep the Tracker Compact, we might use a class 1 bluethooth module. That will get us 100+ meters range: https://www.sparkfun.com/products/12580
The bad thing is, that most smartphones dont support class 1 except the iPhone 7 i think.
So, maybe its possible to write an Chrome App, or standalone App for a Laptop and use this Class 1 Bluethooth Adapter.
https://www.sparkfun.com/products/9434
A friend also tested various wifi modules like ESP... he only got 10 meters and had TCP/IP packages losts
...or..
is there any "Android App" Emulator which accepts bluethooth connectivity? So we can emulate the App on WIN/MAC
Improvement to #33:
Instead of numerous checkboxes and pre-configured messages for announcing lap times, accept a user- specified message with predefined constants, like "PILOT. Lap LAPNUM Time LAPTIME..."
I see that Freq. was added, then removed from the .csv report. Is it possible to make it an option to select what you'd like in report?
Examples to turn on/off:
Lap
pilot name
freq.
band/channel
RSSI (for better tuning)
Thanks in advance.
Can there be an added feature in the near future to click on the RSSI value and type in a number, rather than only being able to press the buttons?
In MultiGP style races, we use a timer to see how many laps can be completed in a specified time.
I've added a rudimentary version of this feature in my branch, and if others are interested maybe this can be added to the master branch.
Right now it's very simple, you can specify how long you want the timed race (1,1.5,2,2.5 minutes) and it reads out verbal warnings at 1 minute, 30 seconds, 10 seconds, and when the timer is up.
Hi!,
Would it be possible to create apps for different platforms like IOS or a as standard webapp for different embedded platforms like the Rasberry PI?
I recently ordered 4 rx5808 modules from Banggood and when they finally arrived and I removed the metal casing, the resistor that you explain how to remove is not installed from the beginning. I solder the wires following the diagram and cannot get the app to let me calibrate/change the frequency or pilot. What does the "Lipo Voltage" go into (Red lead on the diagram), and how might I go about fixing this issue?
It would be nice, if the results could be saved as csv or something similar.
Reason: BT and 2.4GHz are often jammed by frsky and other stuff. 433MHz for example will handle without a problem with much more longer distances.
Idea: Connect FTDI converter through OTG cable.
To FTDI you can connect any device like:
Application: need to be changed.
Arduino side: no need - just any other device than BT module.
Hardware: For example FTDI based on CH340G (tested with library) and pair of transmiting devices which can handle 115kbps on air.
Proposed library: https://github.com/mik3y/usb-serial-for-android
I'm not so expeirenced with java but for now only FTDI library is merged.
I have to use Arduino 1.0.5 because it`s the only version which is running without problems on my GalliumOS, while compiling i always get the following error message:
#################################################################################
/usr/share/arduino/hardware/tools/avr/bin/avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=8000000L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=105 -D__PROG_TYPES_COMPAT__ -I/usr/share/arduino/hardware/arduino/cores/arduino -I/usr/share/arduino/hardware/arduino/variants/standard /tmp/build7368876175063967868.tmp/chorus_rf_laptimer.cpp -o /tmp/build7368876175063967868.tmp/chorus_rf_laptimer.cpp.o
In file included from chorus_rf_laptimer.ino:225:0:
sendSerialHex.h: In function ‘uint8_t send4BitsToSerial(uint8_t, uint8_t)’:
sendSerialHex.h:80:16: error: ‘class HardwareSerial’ has no member named ‘availableForWrite’
if (Serial.availableForWrite() >= 5) { // e.g. "S1R1\n"
^
sendSerialHex.h: In function ‘uint8_t sendByteToSerial(uint8_t, uint8_t)’:
sendSerialHex.h:93:16: error: ‘class HardwareSerial’ has no member named ‘availableForWrite’
if (Serial.availableForWrite() >= 6) {
^
sendSerialHex.h: In function ‘uint8_t sendIntToSerial(uint8_t, uint16_t)’:
sendSerialHex.h:106:16: error: ‘class HardwareSerial’ has no member named ‘availableForWrite’
if (Serial.availableForWrite() >= 8) {
^
sendSerialHex.h: In function ‘uint8_t sendLongToSerial(uint8_t, uint32_t)’:
sendSerialHex.h:119:16: error: ‘class HardwareSerial’ has no member named ‘availableForWrite’
if (Serial.availableForWrite() >= 12) {
^
sendSerialHex.h: In function ‘uint8_t sendLaptimeToSerial(uint8_t, uint8_t, uint32_t)’:
sendSerialHex.h:132:16: error: ‘class HardwareSerial’ has no member named ‘availableForWrite’
if (Serial.availableForWrite() >= 14) {
^
chorus_rf_laptimer.ino: In function ‘void readSerialDataChunk()’:
chorus_rf_laptimer.ino:731:67: error: invalid conversion from ‘uint8_t* {aka unsigned char*}’ to ‘char*’ [-fpermissive]
In file included from /usr/share/arduino/hardware/arduino/cores/arduino/HardwareSerial.h:28:0,
from /usr/share/arduino/hardware/arduino/cores/arduino/Arduino.h:193,
from chorus_rf_laptimer.ino:51:
/usr/share/arduino/hardware/arduino/cores/arduino/Stream.h:76:10: note: initializing argument 1 of ‘size_t Stream::readBytes(char*, size_t)’
size_t readBytes( char *buffer, size_t length); // read chars from stream into buffer
^
chorus_rf_laptimer.ino: In function ‘void sendProxyDataChunk()’:
chorus_rf_laptimer.ino:788:36: error: ‘class HardwareSerial’ has no member named ‘availableForWrite’
##################################################################################
Can someone help me fixing that ? or is there a workaround ? I goggled a lot but didnt found a working fix for that.
Thanks
Moe
Hello, I built a Chorus version with 5 SOLO. I have an issue when selecting players: name of 5th and 1st are the same and 5th SET rssi value doesn't change from 0, rtx receive the signal, but button SET doesn t work..only strange bip...any idea?
(Wirimg is ok, Uno pro are all ok...)
thanks
It would be nice to have a low voltage alarm in the application if Chorus device is powered from accumulator.
is it possible to add com connection to the android app? I would like to use a 3dr Radio 433mhz as link to the unit as the bluetooth connection isnt working reliable for me. But Android app only shows WIFI or Bluetooth as option.
I think the reliability and precision of the timing system can be improved by using analog edge triggering instead of a simple trigger value. Eg: https://zone.ni.com/reference/en-XX/help/370466AC-01/mxcncpts/analogtriggering/
This would improve the reliability and precision of the system.
Hi Andrey,
Is it possible to implement analogue of Band Scanner from sheaivey/rx5808-pro-diversity?
It would be pretty useful.
https://hackadaycom.files.wordpress.com/2016/01/bandscanner.jpg?w=800
Need ability to disable some channels/pilots when number of racing pilots is less than amount of Solo devices in Chorus. Otherwise you have to setup thresholds for each channel, even for those that are not used.
Request for manual RSSI input in Text format in android APP.
RSSI can only be Set/Clear and Increased or decreased by the value of 1, every time +/- is pressed.
It would be a plus to allow RSSI values to be directly inserted, as text format, for manually set the value.
E.g.. if we want to set manually an RSSI of 243, "+" must be pressed until that values is reached. In text, we would be able to directly input the value "243".
Hi,
this is not an issue but a question about documentation.
In the code quoted (5lines), why did you do that ?
How did you know you have to do this transformation of data ?
Thx
Hello everyone,
I can not connect to the Windows application.
I connect my CHORUS 5 in 1 through a FTDI to my pc, I open the windows GUI and I get the startup window, but I only get the baud rate dropdown, I put it in 11520 and the COM port dropdown does not appear .
What's going on? My FTDI works correctly, I installed the firmware on all my mini arduino with it. And in the Windows Device Manager I appears as connected on the COM3 port.
Let's see if someone can help me.
I've also tried connecting it to GOOGLE CHROME's EASYRACELAPTIMER app, but it will not let me.
I always hate to calibrate the RSSI values before the race when you are two groups.
Why not measure the RSSI of each quad when they passes the first time the start/-finish gate like its done by the Delta5 Tracker?
Why not hooking up a WS2812 LED Stripe to the first node?
Pilot Colors
Every Pilot gets a color and the start gate will shine in the pilots color when passing it.
Visual Countdown
add a bright ws2812 led panel in front of the starting pads or even the whole start gate.
So there is a visual start sign. When the race is finished or the pilot has max laps, the gate will show red.
What do you think?
OK guys,
a while ago, i created a 8in1 PCB for the Chorus Tracker. It was my first design and of course the PCB was not 100% correct. There were some GND Pins of the Arduino not connected together "GND Island Fail".
Now i came up with the Idea to create a stackable design.
So there will be a 10x10 PCB with all the RX5808 receiver on top. You can either direct solder them or stackable with Pin Headers.
A second PCB, the Main PCB will be connected also with pin headers.
I will create a second Main PCB for the Delta 5 Tracker as well. So one can choose if he wants to build delta5 or chorus.... or even another tracker.
All Arduinos from the PCB before can be used for this PCB as well. 2 pin headers were added becaus i included a buzzer which is shared with all 8 nodes via some schottky diodes.
There is also an option to mount two XT30 connectors to the PCB and also a stepdown (Pololu 5V, 2.5A Step-Down D24V25F5) to power the whole unit via a LiPo. Second option is to power the unit via a external 5V source (powerbank)
Why two XT30? If the battery will run out of power, just connect a fresh one and charge the old one.
An other feature is the Rj45 jack where you can plug in a network cable to extend the range of your bluethooth.
What is your opinion? Whats missing?
Hi Voroshkov,
Let me start by saying: THANK YOU SO MUCH for this great project and making it opensource.
I noticed that in the hardware schematics you use a voltage divider with 10K and 1K, however, I found this a bad choice for a 3S lipo that I will use since the resolution is really low with this kind of voltage divider and the use of a 3S Lipo:
Full 3S lipo: 12.6V --> 1.145V out of the voltage divider
Empty 3S lipo: 9.9V --> 0.9V out of the voltage divider
The resolution with this divider is 0.245 volt (+/- 50 digital resolution)
I choose to use a voltage divider with 10K and 22K, since it gives much better resolution:
Full 3S lipo: 12.6V --> 3.938V out of the voltage divider
Empty 3S lipo: 9.9V --> 3.094V out of the voltage divider
The resolution with this divider is 0.844V (+/- 172 digital resolution)
In the app (AppState.java) on line 43 you hardcoded the voltage divider constant that is used for the final battery voltage calculation:
public static final double VOLTAGE_DIVIDER_CONSTANT = 11; //(10K + 1K)/1K
It would be great to not hard code this, but make it editable in a configuration menu (or maybe advanced configuration menu?).
Need a sequence of beeps after the button "Start race" is clicked to allow racers start the race synchronously.
Why not implementing the fixed channels?
https://connexuav.zendesk.com/hc/en-us/articles/211648026-Frequency-Management
RSSI trigger values should be assigned to pilots to improve accuracy and mitigate mis-triggers / early triggers.
In below table if Node 3 (5800) is calibrated for Pilot C having an ideal rssi trigger at 195 when he passes the gate then a slightly powerful or a well tuned antenna/vtx as in the case of Pilot G would trigger the timer earlier than expected.
Of course with the current version, one could just simply adjust the trigger level for each and every heat/run for each node but that would be a lot of time wasted in the end.
Hi,
wouldn't it be possible to use one Arduino only. Wire all the spi pins as in the rx5808 diversity, but use different pins for the chip Select pins. So if you have for rx5808, wire chipselect 1 to d1, cs 2 to d2 ...
So you would use only one arduino, the stackability is a bit worse, because you have to limit it to number of rx5808, but to be honest who needs more than 8 different modules?
If my rx5808s ever arrive, I will test this.
Greetings
Mario
Hi Andrew,
I've got several ideas regarding frequencies management in Android app:
P.s. Timer mode is just like Race mode, but without limitations of lap number - just to save the timings
Trigger lap time on peak RSSI. With only rssi > rssiThreshold, precision is very sensitive to vtx/antenna power and rssiThreshold value.
A nice feature would be if the system could remember the last used settings for each device:
Also (but less important) store these preferences: Enable Sounds, Enable Speech, Laps To Go, Min Lap Time
For example, at our weekly meetups, we always use the same 5 channels, (IMD5) and often even the same Pilots so it would be nice to be able to turn on the Chorus and the app automatically sets them all to the last used settings. This would make setup time very fast.
Hi,
I just finished assembling a Solo device, but with Arduino Nano (not having Arduino Pro Mini). For now I have missed the part for voltage Lipo monitoring. That said, everything connects to the application via the bluetooth module, but I did not understand, the FREQ android app page, what is that number next to Device # 1, in my case 234. Going to the PILOTS page, RSSI Threshold gives me Always 1, and until I insert the above mentioned number (234), but it does not give me the option to set it, START RACE (1PILOT) does not appear on the RACE page. Once START RACE starts and I try to make a ride with the quadcopter (walking naturally for now, both with powered and non armed motors, but I do not think it makes any difference) when I step in front of the device nothing happens and does not ring buzzer. I would need help to figure out what the problem is, especially with wiring, since I am using Arduino Nano, but it should be compatible. I have only one device, so I did not connect the 4 pins to series more devices; In addition I did not even have the bridge to shorten two pins of Bluetooth (loopback jumper in scheme), I seemed to understand that it was to do for multiple connected devices.
My PinOut and configuration:
I supply everything from lipo - bec USB to mini USB - Arduino nano;
Ch1-Ch2-Ch3 (RX5808) - 1k resistors - D12-D11-D10 (Arduino nano);
GND (RX5808) - GND (HC-06 Module) - one of the 2 GNDs (Arduino nano);
It would be nice to have possibility to use Chorus devices in MultiGP LapSync Race Timing Desktop Software.
https://www.facebook.com/groups/FPVRaceTimer/
I am not Android developer, so maybe stupid question, but I am not able to compile the application with this error:
FAILURE: Build failed with an exception.
Could not resolve all dependencies for configuration ':app:_debugApk'.
Project :app declares a dependency from configuration 'compile' to configuration 'default' which is not declared in the descriptor for project :bluetoothspp.
Please could you help me?
Sometimes my friends dont know the band and channel, but the frequency in MHz.
Could this be shown under the band and channel in the freq tab?
Would be very simple and useful if a new best lap was announced
I have two lap timers and when they connect with the phone, the lap timer with the Stepdown (Timer 1/ Pilot 1) does not give an accurate RSSI level. The second lap timer on the other hand, does work in the app and pc version. All of the wiring is the exact same on both devices and in the diagram, and I have tried everything in the troubleshooting section.
Hi,
First thanks for sharing this, it is really great.
Why didn't you link more receiver per Arduino? I think you can put up to 3 per arduino.
Was it because the loop will take more than 1ms?
If not, it might be an improvment that allow to have cheaper kit for 3 drones (which is great for friend racing!)
Thanks!
Hi there !
Congratulations for this Project! i am impressed.!!!
i made my self a firmware mixed for Realacc RX5808 Diversity Moduel Fatsharks , i added some OSD also .
I wanted to ask you something if you know , i want to implement "a fine tuning" method . or even free channel search ,
What i am saying is that i want to search throught the channels
from 5865 way to 5917
with step ++ 5865 , 5866, 5867 ....
i know that the channels goes through SPI registers like
0x2906, 0x2910, 0x291A, 0x2984, 0x298E, 0x2998, 0x2A02, 0x2A0C, // Band F / Airwave
What i dont know is how to pass through for example 5866 (not exists to the table of channels) spi register !! so the problem is how to find the register for the right channel
Hi,
This is the first issue I write on GitHub... :)
I made several laptimer modules since a few days, and it works like a charm. I'm using Bluetooth to UART modules as recommended, but the range is not so great.
I was thinking : in fact, the whole thing is based on serial communication. To extend the range of operation, we could use something else instead of Bluetooth, that would be connected as an OTG USB device on the smartphone.
For instance, I was thinking about using a 3DR radio telemetry combo like this one : https://www.banggood.com/3DR-Radio-Telemetry-433MHZ-Module-For-APM-APM2-Europe-p-85233.html?rmmds=search
Unfortunately, for the moment the LapTimer app only connects to Bluetooth devices. Do you think you could implement something to improve the application, so that any other supported serial communication device connected via OTG USB can be used ? I'm thinking about EZ-GUI app also, which supports this kind of thing.
Thank you for reading :)
BR,
Fabien (sky022)
If connected 5 or 6 units, Android app, can controll only 4 first, 5ft unit will change 1 unit values, 6th unit not changing band/channel (tested with 9600 and 57600 baud rate)
Hi! Great features so far! We tried it on the rc track for buggies, and is working superb! Only needed option for time limit for counting the laps/best lap. Can it be added 5 10 15 20 and 30 min of race, for counting the laps? This can be very usefull for rc car training
Hello, I have been using the Android app a lot and love it, but I was wondering if there was a modded version of the app that includes a point mode where there is a countdown timer and during that set time, people race to get the most amount of laps. When the time is over people can finish their lap and then they are done. This is similar to how normal multigp races are scored.
I do not if this is meant to happen, but when the race starts the values go to zero. Are there any more descriptive details on how to setup the RSSI values to racing?
Now that the lap timers that will connect, I have all of the functionality except in the race tab, the calibrate timers button does not show when the app connects with the device. Also, where is the button to set the current threshold?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.