Giter VIP home page Giter VIP logo

cyclop_plus's People

Contributors

dvogonen avatar jharmn avatar memphiz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cyclop_plus's Issues

Faulty display function in SH1106 library

From pull request by Memphiz:

Just played around with an 0,96" OLED based on SH1106 display (bought this before i realised you had a minimOSD solution available as well ;) ).
There was a corruption when i added a test sketch with your logo on my arduino nano. This pull request fixes this.
Corrupted logo before (see the garbage at column 2):
https://www.dropbox.com/s/6jurxjxnjt8csfz/sh1106_corruption.jpg?dl=0
And here with the bugfix applied:
https://www.dropbox.com/s/ermmt0xhbo77824/sh1106_fine.jpg?dl=0

Manual Mode channel seek order by Band/Channel instead of Freq.

First of all: Thanks for the great work! The project works really nice!

In my opinion it would be more useful to run through the channels by Band and not ordered by frequency.
Normally you know which band you are on and you don't change that very often. Although e.g. if you are on A7 and want to change to B3, its more obvious to go 4 ch up thant running along the band until you reach B3.

Maybe this could be added as an option to your code (rx5808-pro-diversity has this feature)
To do it hard-wired, all that has to be done is replacing the getPosition function to not use the positions table:
//uint16_t getPosition( uint8_t channel ) {
// return pgm_read_byte_near(positions + channel);
//}
uint16_t getPosition( uint8_t channel ) {
return channel;
}

High channel selection value

The minimum RSSI value for detecting a video channel is hard coded to 150. Reports state that this is way to high.

On the other hand the noise floor of some receivers seems to be as high as 100.

This issue is directly associated with issue 6.

E3 and R1 are in inverse in frequency order when using "Next channel" function or Scan

Hello Dvogonen,
First of all thank you and congratulation for this so nice project !
It is so usefull to be sure on which frequency we are locked onto !!
Great Job and your user interface is great too !

I found one little bug and I am, for instance, unable to solve it by myself. (I did not understand yet what was the logic behing progmen index, progmem value and frequencies order.)

Here is the bug description :

  • I set my VTX to R1.
  • Making a scan, Cyclops+ locks on E3 (5665 MHz), despite the fact that R1 is a lower frequency (5658).
    Not a big deal.
  • But when I want to use "previous frequency", to reach R1, I jump to E4 (5645).
  • R1 appears in fact after E3

One can leave with this but on a such well done software it should be a pity not to correct it.
It is looking like two values that are inverted.
I am convinced you will see this in a snap when checking your code... ;-)

Best regards
Marc

OLED Only Works Sometimes

When powering up the goggles (3 cell battery) normally, the OLED screen usually will not turn on. I have tested this using both the 5V and 3.3V pins. The only reliable way I have found to make the OLED turn on either by connecting the programing cable with the battery unplugged (not really useful) or by quickly pulsing the power to the goggles before fully powering (i.e. providing power for a fraction of a second and the re-applying normal power.

flashing is not working

Here is the code AVRDUDESS gives me when I want to flash the firmware:

avrdude.exe: set SCK frequency to 1500000 Hz
avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.
avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude.exe: Device signature = 0x1e950f
avrdude.exe: NOTE: "flash" memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude.exe: erasing chip
avrdude.exe: set SCK frequency to 1500000 Hz
avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.
avrdude.exe: reading input file "C:\Users\Justin\Downloads\cyclop_plus.hex"
avrdude.exe: invalid record at line 47 of "C:\Users\Justin\Downloads\cyclop_plus.hex"
avrdude.exe: read from file 'C:\Users\Justin\Downloads\cyclop_plus.hex' failed

tried it with several hex files. Nothing seems to work

OLED not always initialised on power up

I have noticed that the OLED does not always initialise on power up. once it fails it can take 4 or 5 power cycles for it to wake up. Have tried 2 OLED from different vendors. Is this a hardware fault?

Verifying the ino with option #define SH1106_OLED_DRIVE enabled results in errors.

Verifying the ino with option #define SH1106_OLED_DRIVE enabled results in errors.

C:\Users\Owner\AppData\Local\Temp\ccLrppII.ltrans0.ltrans.o: In function drawOptionsScreen(unsigned char, unsigned char)':

C:\Users\Owner\Downloads\cyclop_plus-master\cyclop_plus-master\src\cyclop_plus/cyclop_plus.ino:1131: undefined reference to `Adafruit_SH1106::clearDisplay()'

C:\Users\Owner\Downloads\cyclop_plus-master\cyclop_plus-master\src\cyclop_plus/cyclop_plus.ino:1174: undefined reference to `Adafruit_SH1106::display()'

C:\Users\Owner\AppData\Local\Temp\ccLrppII.ltrans0.ltrans.o: In function `drawChannelScreen(unsigned char, unsigned int)':

C:\Users\Owner\Downloads\cyclop_plus-master\cyclop_plus-master\src\cyclop_plus/cyclop_plus.ino:942: undefined reference to `Adafruit_SH1106::clearDisplay()'

C:\Users\Owner\Downloads\cyclop_plus-master\cyclop_plus-master\src\cyclop_plus/cyclop_plus.ino:970: undefined reference to `Adafruit_SH1106::display()'

C:\Users\Owner\AppData\Local\Temp\ccLrppII.ltrans0.ltrans.o: In function `updateScannerScreen(unsigned char, unsigned char)':

C:\Users\Owner\Downloads\cyclop_plus-master\cyclop_plus-master\src\cyclop_plus/cyclop_plus.ino:1051: undefined reference to `Adafruit_SH1106::drawFastVLine(int, int, int, unsigned int)'

C:\Users\Owner\Downloads\cyclop_plus-master\cyclop_plus-master\src\cyclop_plus/cyclop_plus.ino:1054: undefined reference to `Adafruit_SH1106::drawFastVLine(int, int, int, unsigned int)'

C:\Users\Owner\Downloads\cyclop_plus-master\cyclop_plus-master\src\cyclop_plus/cyclop_plus.ino:1062: undefined reference to `Adafruit_SH1106::display()'

C:\Users\Owner\AppData\Local\Temp\ccLrppII.ltrans1.ltrans.o: In function `setup':

C:\Users\Owner\Downloads\cyclop_plus-master\cyclop_plus-master\src\cyclop_plus/cyclop_plus.ino:199: undefined reference to `Adafruit_SH1106::begin(unsigned char, unsigned char, bool)'

C:\Users\Owner\Downloads\cyclop_plus-master\cyclop_plus-master\src\cyclop_plus/cyclop_plus.ino:201: undefined reference to `Adafruit_SH1106::clearDisplay()'

C:\Users\Owner\Downloads\cyclop_plus-master\cyclop_plus-master\src\cyclop_plus/cyclop_plus.ino:204: undefined reference to `Adafruit_SH1106::display()'

C:\Users\Owner\AppData\Local\Temp\ccLrppII.ltrans1.ltrans.o: In function `drawStartScreen':

C:\Users\Owner\Downloads\cyclop_plus-master\cyclop_plus-master\src\cyclop_plus/cyclop_plus.ino:909: undefined reference to `Adafruit_SH1106::clearDisplay()'

C:\Users\Owner\Downloads\cyclop_plus-master\cyclop_plus-master\src\cyclop_plus/cyclop_plus.ino:921: undefined reference to `Adafruit_SH1106::display()'

C:\Users\Owner\AppData\Local\Temp\ccLrppII.ltrans1.ltrans.o: In function `dissolveDisplay':

C:\Users\Owner\Downloads\cyclop_plus-master\cyclop_plus-master\src\cyclop_plus/cyclop_plus.ino:894: undefined reference to `Adafruit_SH1106::drawPixel(int, int, unsigned int)'

C:\Users\Owner\Downloads\cyclop_plus-master\cyclop_plus-master\src\cyclop_plus/cyclop_plus.ino:896: undefined reference to `Adafruit_SH1106::display()'

C:\Users\Owner\Downloads\cyclop_plus-master\cyclop_plus-master\src\cyclop_plus/cyclop_plus.ino:898: undefined reference to `Adafruit_SH1106::clearDisplay()'

C:\Users\Owner\Downloads\cyclop_plus-master\cyclop_plus-master\src\cyclop_plus/cyclop_plus.ino:899: undefined reference to `Adafruit_SH1106::display()'

C:\Users\Owner\AppData\Local\Temp\ccLrppII.ltrans1.ltrans.o: In function `drawFunctionScreen':

C:\Users\Owner\Downloads\cyclop_plus-master\cyclop_plus-master\src\cyclop_plus/cyclop_plus.ino:995: undefined reference to `Adafruit_SH1106::display()'

C:\Users\Owner\AppData\Local\Temp\ccLrppII.ltrans1.ltrans.o: In function `drawScannerScreen':

C:\Users\Owner\Downloads\cyclop_plus-master\cyclop_plus-master\src\cyclop_plus/cyclop_plus.ino:1024: undefined reference to `Adafruit_SH1106::clearDisplay()'

C:\Users\Owner\AppData\Local\Temp\ccLrppII.ltrans1.ltrans.o: In function `drawAutoScanScreen':

C:\Users\Owner\Downloads\cyclop_plus-master\cyclop_plus-master\src\cyclop_plus/cyclop_plus.ino:1003: undefined reference to `Adafruit_SH1106::clearDisplay()'

C:\Users\Owner\Downloads\cyclop_plus-master\cyclop_plus-master\src\cyclop_plus/cyclop_plus.ino:1016: undefined reference to `Adafruit_SH1106::display()'

C:\Users\Owner\AppData\Local\Temp\ccLrppII.ltrans1.ltrans.o: In function `activateScreenSaver':

C:\Users\Owner\Downloads\cyclop_plus-master\cyclop_plus-master\src\cyclop_plus/cyclop_plus.ino:1182: undefined reference to `Adafruit_SH1106::clearDisplay()'

C:\Users\Owner\Downloads\cyclop_plus-master\cyclop_plus-master\src\cyclop_plus/cyclop_plus.ino:1183: undefined reference to `Adafruit_SH1106::display()'

C:\Users\Owner\AppData\Local\Temp\ccLrppII.ltrans2.ltrans.o: In function `__static_initialization_and_destruction_0':

C:\Users\Owner\Downloads\cyclop_plus-master\cyclop_plus-master\src\cyclop_plus/cyclop_plus.ino:143: undefined reference to `Adafruit_SH1106::Adafruit_SH1106(signed char)'

collect2.exe: error: ld returned 1 exit status

exit status 1`

The receiver always starts up on 6545 MHz

The retrieval of channel number from the EEPROM does not work as it should. The receiver always uses the loweast frequency (6545 MHz) after power_on.

The reason is that the EEPROM checksum calculation is faulty. It is also unnecessary and needs to be removed since the only data we need to save this far is the channel number. MaxRSSI and MinRSSI are also stored, but are only useful if the receiver is to be calibrated, which has no meaning yet.

brainstorming: head tracker

Tjänare,

I am building myself a head tracker using and arduino nano and a sensor board:

Now, I do not have a Cyclops myself yet, but I was considering one mostly because of this project.

I realized the sensor module is also wired via i2c, and I was wondering whether the cpu would have enough IO lines and memory/cycles to deal with this task as well..

Just in case the TODO-list might run empty :-)

Alarm sound level

The alarm sound level is currently fixed. Making it configurable would make it possible to adapt to different buzzers.

1.5 version

3s battery meter not working and buzzer not working period

OLED wakeup call

When using screen saver and the OLED is dimmed, it would be nice to just wake up OLED with one button press. Now if you press button, OLED wakes up, but also receiver jumps to next channel.

Very nice firmware for cyclops, thx a lot for your contribute to this hobby!

BR
Jani

Cant change channels.

I got it all flashed and working. However it doesn’t seem to change channels. The frequency changes on the little display but not on the screen i seem to be locked into c1. I have an eachine racer 250 and was able to use it to scan through and connect and the OSD from the quad says voltage flight time and channel comes up as c1. If i use the Frequency scanner with waveform it looks like im broadcasting on every channel. But im not because i had to manually go thru each channel on the quad end to find what channel the reciver was on. Im confused

I can send pictures or video if you need to see it

Implement graphical band scanner / Channel selector

A graphical band scanner that scans frequencies rather than channel positions would be nice.
It would also be nice to be able to manually select to use any of the active frequencies that are discovered.

Functionality:
The band scanner should be updated in real time and show progress clearly, so it is obvious which part of the spectrum that is being scanneed.
The signal strength is expressed as bar graphs.
The update should be so slow that it is possible to select a fpv frequency by clicking the button when the scanner passes it.
A LONG-LONG should trigger the frequency scan.
A DOUBLE or LONG or LONG-LONG click exits the scan and returns to the previous channel.
A single click chooses any acceptable channel that is close to the scanning position.

Make bands selectable

Being able to limit which bands are used will make it easier to step between channels. If someone uses the A-band for his transmitter, he/she will not be interested in stepping through all other channels on band b, c etc.

Options menu

An options menu would be convenient to be able to select if the screen should be flipped or not etc.

Battery sound level setting is faulty

Setting the level to values between 1 and 7 produces ever higher sound levels but setting it to 8 produces a sound level lower than 1!
Clearly a bug, but a very minor one.

User blacklisted band's are available on reboot again

The initialization code doesn't read the user settings for blacklisted band. If you disable all band except race band, all other bands are available again after reboot. Opening settings menu shows the user done settings as expected.

Battery voltage mod + changes

I just got done doing a slight mod to my Cyclops Goggles.
2016-07-02 15 17 34

Added a voltage divider to A2 pin (A1 seems to be mislabeled? It actually goes to A3 so i just decided to use the correctly labeled A2)

I'm using a 10K and 4.7K resistor for the voltage divider. But now that I realize this is a 3.3v based system that won't be good enough for 3s battery sensing. The resistor values are currently configurable in code I have written so anyone can choose a suitable divider for their application.

Open to suggestions of standardizing the resistor values to make it more noob friendly and reduce code complexity.

Still working on the code but figured I would open the discussion

Curtis

Battery alarm recalibration

The battery alarm sets in to early according to this post by awap at RCGroups:
"Hi, I'm very happy with version 1.4 and the Eachine DVR installed. One whish however: I'm on a 3S battery and the beeper starts at 11.4V (3.8V per cel) and the second level beep starts at 11,2V (3,73V per cel). This is too soon. Is there a way to start the beeper at 3x3.65= 10.95 -11.0 V?"

The behavior is not really a bug, the level was set unnecessarily low.

RSSI calibration

The receiver modules are not all created alike. The RSSI output differs significantly for the same signals. This has a direct impact on the display of signal strength in the band scanner. It would be a good thing to be able to calibrate the min and max values

Battery monitoring not working in screensaver mode

Hi, tested yesterday: if screensaver is on, and I lower the input voltage from my bench supply, there is no battery warning. Battery warning kicks in if button is pressed, and oled leaves screensaver mode.

Screen saver

The screen should automatically be turned off after 10 seconds without key press. This should only apply to the main channel display mode, not in either scan mode or during configuration.

The feature should be optional and the factory setting should be OFF

The background for the improvement is to be able to mount the display inside the visor.

Button timing

The click type timing is very sensitive. It is especially hard to issue a proper double click. There is a huge potential for improvement in this area.

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.