Main Menu

RC altimeter and vario

Started by saxpg, June 18, 2008, 12:57:05 AM

Previous topic - Next topic

ak

#30
Evo i verzija sa MS5611 ali izlaz ide direktno na audio kanal od FPV predajnika i radi odlicno iz prve.

Spisak delova:

Osetljivost je izgleda prilicno dobra, mada me zanima kako bi radio sa promenjenim algoritmom "noise filtera", umesto moving average sa alpha-beta filter.
Simplicity is the ultimate sophistication - Leonardo Da Vinci
RCModelScout - RC Search Engine

ak

#31
Dodao sam mogucnost iskljucenja vario-a pomocu jednog kanala sa RX-a na D3 pin na Arduino Nano.


// Main code by Rolf R Bakke, Oct 2012
// Modified by Alen Komic, Mar, 2014
//    - on/off switch, on Arduino Nano pin D3

#include <Wire.h>

const byte led = 13;

unsigned int calibrationData[7];
unsigned long time = 0;

float toneFreq, toneFreqLowpass, pressure, lowpassFast, lowpassSlow ;

int ddsAcc;

volatile long pwmcount1; // temporary variable for PWM input counting
boolean switchState = true;
// #define int0 (PIND & 0b00000100) //For Nano & Uno. D2.
#define int1 (PIND & 0b00001000) //For Nano & Uno. D3.

#define borderValue 1500  // switch state border value

void handleSwitchInterrupt()
{
   if(int1) {
     pwmcount1=micros(); // we got a positive edge of the pulse
   } else {
     // we got a negative edge of the pulse, time to measure
     if( (micros()-pwmcount1)>0 ) { // did micros() counter reset? Do we have input signal at all?
       if( (micros()-pwmcount1)> borderValue ) {
         switchState = true;
       } else {
         switchState = false;
       }
     }
   }
}

void setup()
{
  Wire.begin();
  Serial.begin(115200);

  pinMode(3,INPUT);
  attachInterrupt(1,handleSwitchInterrupt,CHANGE); // Catch up and down

  setupSensor();
 
  pressure = getPressure();
  lowpassFast = lowpassSlow = pressure;
}


void loop()
{
  if( switchState==true ) {
    pressure = getPressure();
 
    lowpassFast = lowpassFast + (pressure - lowpassFast) * 0.1;
    lowpassSlow = lowpassSlow + (pressure - lowpassSlow) * 0.05;
 
    toneFreq = (lowpassSlow - lowpassFast) * 50;
 
    toneFreqLowpass = toneFreqLowpass + (toneFreq - toneFreqLowpass) * 0.1;
   
    toneFreq = constrain(toneFreqLowpass, -500, 500);
 
    ddsAcc += toneFreq * 100 + 2000;
 
    if (toneFreq < 0 || ddsAcc > 0)
    {
      tone(2, toneFreq + 510); 
    }
    else
    {
      noTone(2);
    }
 
    ledOff();
    while (millis() < time);        //loop frequency timer
    time += 20;
    ledOn();
  } else {
    Serial.println("On-hold");
    ledOff();
  }
}


long getPressure()
{
  long D1, D2, dT, P;
  float TEMP;
  int64_t OFF, SENS;

  D1 = getData(0x48, 10);
  D2 = getData(0x50, 1);

  dT = D2 - ((long)calibrationData[5] << 8);
  TEMP = (2000 + (((int64_t)dT * (int64_t)calibrationData[6]) >> 23)) / (float)100;
  OFF = ((unsigned long)calibrationData[2] << 16) + (((int64_t)calibrationData[4] * dT) >> 7);
  SENS = ((unsigned long)calibrationData[1] << 15) + (((int64_t)calibrationData[3] * dT) >> 8);
  P = (((D1 * SENS) >> 21) - OFF) >> 15;
 
  //Serial.println(TEMP);
  //Serial.println(P);
 
  return P;
}


long getData(byte command, byte del)
{
  long result = 0;
  twiSendCommand(0x77, command);
  delay(del);
  twiSendCommand(0x77, 0x00);
  Wire.requestFrom(0x77, 3);
  if(Wire.available()!=3) Serial.println("Error: raw data not available");
  for (int i = 0; i <= 2; i++)
  {
    result = (result<<8) | Wire.read();
  }
  return result;
}


void setupSensor()
{
  twiSendCommand(0x77, 0x1e);
  delay(100);
 
  for (byte i = 1; i <=6; i++)
  {
    unsigned int low, high;

    twiSendCommand(0x77, 0xa0 + i * 2);
    Wire.requestFrom(0x77, 2);
    if(Wire.available()!=2) Serial.println("Error: calibration data not available");
    high = Wire.read();
    low = Wire.read();
    calibrationData[i] = high<<8 | low;
    Serial.print("calibration data #");
    Serial.print(i);
    Serial.print(" = ");
    Serial.println( calibrationData[i] );
  }
}


void twiSendCommand(byte address, byte command)
{
  Wire.beginTransmission(address);
  if (!Wire.write(command)) Serial.println("Error: write()");
  if (Wire.endTransmission())
  {
    Serial.print("Error when sending command: ");
    Serial.println(command, HEX);
  }
}


void ledOn()
{
  digitalWrite(led,1);
}


void ledOff()
{
  digitalWrite(led,0);
}
Simplicity is the ultimate sophistication - Leonardo Da Vinci
RCModelScout - RC Search Engine

Milosh

Pozdrav svima,
@AK imas li neku ideju kako da povezem arduino variometar i walkie talkie na 446 Mhz?
Imao samo par (walkie talkie) ali sam jedan izgubio, a mislim da bi bilo idealno da iskoristim u ovu svrhu,
posto vec duze vreme radim na ovome. Pokusavao sam da nadjem nekakav transmiter ali nisam uspeo.

rolex

Ako jedini toki voki iskoristiš kao predajnik, na čemu ćeš slušati zvuk?
Mislim da je idealno rešenje iskoristiti audio kanal od video predajnika kao što je Alen uradio.

Milosh

Voki toki koji imam bih koristio kao prijemnik, a ono sto trazim je kako da nadjem ili napravim predajnik na 446 mhz kao sto
postoji gomila recimo na 433 mhz, koji bih povezao sa variometrom. Trazio sam ali mi nije polazilo za rukom.

ak

Quote from: Milosh on October 07, 2014, 07:27:53 PM
Voki toki koji imam bih koristio kao prijemnik, a ono sto trazim je kako da nadjem ili napravim predajnik na 446 mhz kao sto
postoji gomila recimo na 433 mhz, koji bih povezao sa variometrom. Trazio sam ali mi nije polazilo za rukom.

Lakse ti je da nadjes neki rasparen polovan na 433mhz za koje je lakse naci module.
Simplicity is the ultimate sophistication - Leonardo Da Vinci
RCModelScout - RC Search Engine

saxpg

A da probas sa ovim?

http://www.banggood.com/Wireless-Transmitter-Bug-Covert-RF-FM-Audio-Listening-Device-p-86290.html



I ja sam kupio davno arduino komplet za vario, ali ga nikada nisam ni sastavio.

Milosh

Danas su mi stigli  Tx/Rx na 433 Mhz pa cu najpre probati sa tim, mada mislim sto se dometa tice da bih\sa voki tokijem daleko vise ostvario. Javljam utiske. Hvala.
Pozdrav

mad_mangod

Toki voki na 446MHz koji se prodaju u paru imaju 0,5W snagu sto je dovoljno za domet oko 8km bez prepreka, uglavnom rade na 4.8v i imaju opciju VOX gde pocinje sam da predaje bez pritiska na taster kada se mikrofon pobudi nekim zvukom.
Biti ili (ne)biti,
pitanje je koga.

Goran
YU1SIS
Niš

Milosh

Hvala @mad_mangod, zanimljive informacije.  Naime, primetio sam tu opciju a nisam znao cemu sluzi, eto sad razjasnih i to  :)aplauz
Pozdrav

ak

Simplicity is the ultimate sophistication - Leonardo Da Vinci
RCModelScout - RC Search Engine

Milosh

#41
Ovo je opis modela:

DOMET (u zavisnosti od reljefa): do 500m - grad i do 7 km (na morskoj površini)
Standard: PMR446 - evropski standard za voki toki uredjaje
Frekfencija: 446,0-446,1 MHz
Izlazna snaga predajnika: 500 mW max
8 kanala i 38 CTCSS kodova (podkanala) po svakom kanalu
VOX (aktiviranje predaje glasom) i SCAN (pretraga svih kanala)
Funkcija sata i štoperice
Osvetljen displej
Lampica za osvetljavanje prostora
Autonomija baterije: do 40 sati
Dimenzije slušalice: 96 X 55 X 34 mm
Masa slušalice (sa baterijama): 156 g
set uključuje:
PMR uredjaj...................................................2 kom
AC/DC adapter za punjenje baterija............................2 kom
NiMh AA baterije .............................................6 kom

mad_mangod

Mozes da ga razbucas tj. da skines sve plastike i sve sto ga otezava.
Koji signal izlazi iz variometra?
Biti ili (ne)biti,
pitanje je koga.

Goran
YU1SIS
Niš

ak

Mislio sam na te module sto si dodatno porucio. Ja bih pre to probao.
Simplicity is the ultimate sophistication - Leonardo Da Vinci
RCModelScout - RC Search Engine

Milosh

#44
@ak moduli su poruceni sa ebay-a, konkretno ovi http://www.ebay.com/itm/121413733788?_trksid=p2059210.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT
a snage 10mW. Tako ce i biti, najpre cu da se igram sa njima, pa cemo videti kakve ce rezultate dati.
Pravicu po ovoj semi sa rcgroups forumahttp://www.rcgroups.com/forums/showthread.php?t=1749208

@mad_mangod mislio sam da nadjem predajnik velicine ovog sto sam pomenuo gore da su mi stigli, posto su bas minijaturni, pa da ga zakacim za vario i zajedno ubacim u model, a onda uparim sa v.tokijem koji ce se nalaziti kod mene i na kojem cu dobijati zvuk.  mmmm
Razmisljao sam i da nabavim jos jedan voki toki pa da ga razbucam i iskoristim njegove delove. Nesto sam nasao slicno na youtubu, ali mislim da cu to "igranje" ostaviti da saceka  :big smile

P.S.  nadam se da sam linkove postavio po pravilima foruma.