ARDUINO a FrSky Telemetrie
Re: ARDUINO a FrSky Telemetrie
Halo, halo, chodí sem ještě někdo z těch, co uměj? Potřeboval bych poradit ohledně načítání dat z Tx modulu FrSky do Arduina.
Futaby T14SG, T9CP+Duplex, FC16+FrSky
už jen elektry, LMS Beckov
už jen elektry, LMS Beckov
Re: ARDUINO a FrSky Telemetrie
Zdar, zrovna se v tom opet vrtam. Jak mohu pomoci?
Re: ARDUINO a FrSky Telemetrie
Mám FrSky modul DHT, z něj mám na Arduino UNO propojenu zem (minus), z DHT beru z pinu TxD data, proženu je přes invertor z tranzistoru a dvou rezirtorů (současně upraví úroveň na 5V) a na straně Arduina je přijímám na Rx (pin1 nebo 0 - teď nevím). Rychlost mám 9600 kbps. Něco přijímám, zobrazuju si to hexadecimálně na LCD, ale nikde tam není byte 7E. To je jedna věc a druhá je jakým způsobem zpracováváš data? Kdybych tam tu 7E nějak vyloudil, jak zjišťuješ kde začíná datový blok? Tím, že dostaneš 2x po sobě 7E nebo se řídíš tou mezerou mezi bloky. Mohl bys, prosím, poslat nebo sem vložit kousek kódu, který to chytá a zpracovává? Já jsem v Arduinu skoro lama , takže se teprv učím z různých hotových prográmků, co se kde namane
. Díky moc.
Naposledy upravil(a) Asek dne pát 12.09.2014 11:37, celkem upraveno 1 x.
Futaby T14SG, T9CP+Duplex, FC16+FrSky
už jen elektry, LMS Beckov
už jen elektry, LMS Beckov
Re: ARDUINO a FrSky Telemetrie
Na tom postupu co pises mi prijde ze je vsechno v poradku. Hrozne blbe se to ale ladi a chyba muze byt prakticky kdekoliv. Ja se kdysi taky snazil si zobrazit vystup na LCD, ale to je dalsi vec co se muze pokazit. Casem jsem doiteroval k tomu, ze nejlepsi je pouzivat dva seriove porty - jeden na komunikaci s FrSky, druhy na komunikaci s pocitacem. Arduino ma jen jeden HW seriovy port, takze druhy je treba resit softwarove. Cirou nahodou, ten softwarovy seriovy port umi i invertovat, takze odpada potencialni problem s hardwarem - ten tvuj invertovaci tranzistor uz nebude potreba. I tak bych ale doporucil mezi TX na vysilacce a RX na arduinu (pin 10 v mem programu) zapojit odpor, treba 2K.
Nize posilam kod ktery mi funguje pro cteni seriovych dat z vysilacky ve ktere je ten DIY FrSky modul. Z nej mam vyvedene tri draty, pouzivam zatim jen dva: TX a GND.
Kod je rozdelany, rozhodne to neni zadna referencni implementace
Tenhle programek se pripoji k vysilacce a do seriove konzole (rychost 115200) v arduinu nebo cehokoliv pise vypisy co naparsoval z FrSky. Pokud si s vystupem nebudes vedet rady, posli uryvek, podivam se na to.
Mimochodem, vsiml jsem si ze pouzivas APM - pracuju na prenosu telemetrie Mavlink protokolu z APM pres FrSky protokol do PC nebo mobilu. Uz umim readonly pristup k APM po FrSky!
Nize posilam kod ktery mi funguje pro cteni seriovych dat z vysilacky ve ktere je ten DIY FrSky modul. Z nej mam vyvedene tri draty, pouzivam zatim jen dva: TX a GND.
Kod je rozdelany, rozhodne to neni zadna referencni implementace
Kód: Vybrat vše
/*
D10 = RX na vysilacce (idealne pres 2K+ odpor)
GND = GND na vysilacce
1) zapojim arduino do PC pres USB kabel
2) otevru seriovou konzoli - at uz v arduinu nebo treba putty
3) zapnu vysilacku
4) zapojim RX z vysilacky na D10. Tento krok az po kroku 3! Mozna uz netreba??
*/
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11, true); // RX, TX, true = inverted
bool wasLast7E=false;
unsigned char ch;
void setup() {
Serial.begin(115200);
mySerial.begin(9600);
}
unsigned char primReadFromMySerial() {
while(!mySerial.available()) ;
return mySerial.read();
}
unsigned char readFromMySerial() {
ch = primReadFromMySerial();
//TODO: Tady udelat magii s tim, ze pokud je ch rovno 0x7D tak musim nacist dalsi byte a ten xornout s 0x20
if (ch == 0x7D) {
ch = primReadFromMySerial();
ch = ch ^ 0x20;
}
return ch;
}
void readUserFrame() {
Serial.println(); Serial.print("UD: ");
byte len = readFromMySerial();
if (len == 0x7E) {Serial.println("NEW FRAME"); return;}
Serial.print("("); Serial.print(len, HEX); Serial.print(") ");
readFromMySerial(); //ignore one byte
for (int i = 0; i < 6; i++) {
ch = readFromMySerial();
if (ch == 0x7E) {Serial.println("NEW FRAME"); return;}
if (i < len) {Serial.print(ch, HEX); Serial.print(" ");}
}
ch = readFromMySerial();
if (ch != 0x7E) {Serial.print("KO: "); Serial.println(ch, HEX);}
}
void readInternalFrame() {
Serial.println(); Serial.print("ID: ");
byte nr = readFromMySerial();
Serial.print("AD1: "); Serial.print(nr, HEX);
nr = readFromMySerial();
Serial.print(" AD2: "); Serial.print(nr, HEX);
nr = readFromMySerial();
Serial.print(" RSSI: "); Serial.print(nr, HEX);
for (int i = 0; i < 5; i++) {ch=readFromMySerial();} //ignored bytes
ch = readFromMySerial();
if (ch != 0x7E) {Serial.print("KO: "); Serial.println(ch, HEX);}
}
void loop() {
while (true) {
if (mySerial.available()) {
bool ok=false;
ch = mySerial.read();
if ((ch == 0xFE) && (wasLast7E)) {readInternalFrame(); ok = true;}
if ((ch == 0xFD) && (wasLast7E)) {readUserFrame(); ok = true;}
if (ch == 0x7E) {wasLast7E = true; ok = true;} else {wasLast7E = false;}
if (!ok) {Serial.print("?"); Serial.print(ch, HEX); Serial.print(" ");}
/* Serial.print(ch, HEX); Serial.print(" ");
if (ch == 0x7E) {Serial.println();}*/
}
}
}
Tenhle programek se pripoji k vysilacce a do seriove konzole (rychost 115200) v arduinu nebo cehokoliv pise vypisy co naparsoval z FrSky. Pokud si s vystupem nebudes vedet rady, posli uryvek, podivam se na to.
Mimochodem, vsiml jsem si ze pouzivas APM - pracuju na prenosu telemetrie Mavlink protokolu z APM pres FrSky protokol do PC nebo mobilu. Uz umim readonly pristup k APM po FrSky!
Re: ARDUINO a FrSky Telemetrie
Díky moc za ochotu, jdu študovat.
Futaby T14SG, T9CP+Duplex, FC16+FrSky
už jen elektry, LMS Beckov
už jen elektry, LMS Beckov
Re: ARDUINO a FrSky Telemetrie
Chodí to suprově:
ID: AD1: 5F AD2: 91 RSSI: 63
ID: AD1: 5F AD2: 91 RSSI: 61
ID: AD1: 5F AD2: 91 RSSI: 63
ID: AD1: 5F AD2: 91 RSSI: 64
ID: AD1: 5F AD2: 91 RSSI: 62
ID: AD1: 5F AD2: 91 RSSI: 63
ID: AD1: 5F AD2: 91 RSSI: 61
Jen se vloudila chybička v prvním řádku komentáře - D10 jde na Tx na modulu.
Ještě jednou moc děkuju!
ID: AD1: 5F AD2: 91 RSSI: 63
ID: AD1: 5F AD2: 91 RSSI: 61
ID: AD1: 5F AD2: 91 RSSI: 63
ID: AD1: 5F AD2: 91 RSSI: 64
ID: AD1: 5F AD2: 91 RSSI: 62
ID: AD1: 5F AD2: 91 RSSI: 63
ID: AD1: 5F AD2: 91 RSSI: 61
Jen se vloudila chybička v prvním řádku komentáře - D10 jde na Tx na modulu.
Ještě jednou moc děkuju!
Futaby T14SG, T9CP+Duplex, FC16+FrSky
už jen elektry, LMS Beckov
už jen elektry, LMS Beckov
Re: ARDUINO a FrSky Telemetrie
modul WTV020-SD-16P
Zkoušel jste někdo tento modul místo SOMO14D ? Nedaří se mi ho rozchodit. Nějak neumím vytvořit ty správné soubory .ad4, pokud si stáhnu hotové, ty hrajou, pokud si je vytvořím, nehrajou. Dodržuju názvy (0000.ad4 až 0511.ad), dodržuju sampl rate do 32 kHz, ale místo zvuku to jen kratince "skřípne" a šmytec. Zvuk jsem vytvořil v Balabolce, do ad4 konvertoval v USB recorderu v1.3 (SOMO tools). Wavy jsem zkusil taky, taky nehrajou, ale jak jsem se dočetl (už ani nevím kde), tak WTV020 přehrává jen ad4.
Zkoušel jste někdo tento modul místo SOMO14D ? Nedaří se mi ho rozchodit. Nějak neumím vytvořit ty správné soubory .ad4, pokud si stáhnu hotové, ty hrajou, pokud si je vytvořím, nehrajou. Dodržuju názvy (0000.ad4 až 0511.ad), dodržuju sampl rate do 32 kHz, ale místo zvuku to jen kratince "skřípne" a šmytec. Zvuk jsem vytvořil v Balabolce, do ad4 konvertoval v USB recorderu v1.3 (SOMO tools). Wavy jsem zkusil taky, taky nehrajou, ale jak jsem se dočetl (už ani nevím kde), tak WTV020 přehrává jen ad4.
Futaby T14SG, T9CP+Duplex, FC16+FrSky
už jen elektry, LMS Beckov
už jen elektry, LMS Beckov
Re: ARDUINO a FrSky Telemetrie
beyboy píše:...Arduino ma jen jeden HW seriovy port...
Jen pro informaci k tomu doplním následující. Pokud by Asek použil Arduino Mega 2560 namísto Arduino UNO tak by měl k dispozici 4 sériové porty s plnou hardwarovou podporou na úrovni UARTu.
- ddano007
- Příspěvky: 2896
- Registrován: čtv 18.03.2010 0:00
- Bydliště: Zavar, SK
- Kontaktovat uživatele:
Re: ARDUINO a FrSky Telemetrie
Chlapci, spytam sa z ineho sudka: kupil som Ublox NEO-6M GPS Module s tym, ze ked sa budem raz nudit, tak by som z toho cez Arduino Mini Pro cital data a posielal ich cez TX port na D8R prijimaci do Taranisa.
Neskusali ste niekto nieco podobne?
Dovod je ten, ze pre D8R radu nerobi FrSky ziadne rozumne GPSka ( aspon som nenasiel) a to stare potrebovalo tu medzidosku a aj tak nefungovalo
Tym, ze MiniPro ma len jeden seriovy port, mozno by som zavesil RX na vystup Ublox-u, TX na prijimacovy RX vstup a striedavo prepinal prenosove rychlosti. Pripadne by som vystup do prijimaca softwarovo emuloval.
Vdaka za kazdy dobry tip.
Neskusali ste niekto nieco podobne?
Dovod je ten, ze pre D8R radu nerobi FrSky ziadne rozumne GPSka ( aspon som nenasiel) a to stare potrebovalo tu medzidosku a aj tak nefungovalo
Tym, ze MiniPro ma len jeden seriovy port, mozno by som zavesil RX na vystup Ublox-u, TX na prijimacovy RX vstup a striedavo prepinal prenosove rychlosti. Pripadne by som vystup do prijimaca softwarovo emuloval.
Vdaka za kazdy dobry tip.
X9D & T16Pro & TX16S & nejaké lietadlá, heli a koptéry www.rcmodelytt.sk
Re: ARDUINO a FrSky Telemetrie
Jo, to půjde. Dokonce bych se rovnou vydal tím směrem že bych použil SW sériový port pro komunikaci s FrSky, a HW sériový port pro komunikaci s GPS ať to máš co nejjednodušší. Nevím totiž jestli je možné v Arduinu přesvědčit HW UART aby měl invertované logické hodnoty, což je pro FrSky potřeba.
Re: ARDUINO a FrSky Telemetrie
Ahoj, tiež som si niečo podobné urobil, dáta si posielam z Ublox GPS a z tlakomera (rozumej výškomera) cez FrSky telemetrickú linku vo "vlastnom" protokole" a na zemi ich spracovávam tiež pomocou Pro Mini - zobrazujem ich na display a ukladám na SD kartu.
Na vysielacej strane som GPS pripojil na HW sériový port na 38400 baudov, na výstup do portu FrSky prijímača používam softvérový sériový port, na 9600 baudov s nastaveným invertovaním signálu (bolo tuším treba opraviť chybu v originánej Arduino SoftwareSerial knižnici, kde bola chyba pre invert).
Na vysielacej strane som GPS pripojil na HW sériový port na 38400 baudov, na výstup do portu FrSky prijímača používam softvérový sériový port, na 9600 baudov s nastaveným invertovaním signálu (bolo tuším treba opraviť chybu v originánej Arduino SoftwareSerial knižnici, kde bola chyba pre invert).
Re: ARDUINO a FrSky Telemetrie
Vyřešeno, smazáno. Rychleji jsem psal než četl.
https://fokker1.rajce.idnes.cz/
Re: ARDUINO a FrSky Telemetrie
Pokouším se propojit telemetrické čidla ( FCS-40A a FLVSS) přímo s arduinem. Bez toho abych používal přijímač nebo vysílač od Frsky.
Našel jsem na netu tuto skvělou knihovnu pro arduino https://www.rcgroups.com/forums/showthr ... nfigurable
Pro získání dat z čidla přes S.port je potřeba nějaké pravidelné dotazování, které normálně řeší například přijímač.
Pro použití bez přijímače se v kódu zapne dotazování, ale data pak chodí tak nějak nepravidelně a ne vždy aktuální.
Máte s tím někdo zkušenosti? Nebo používáte jinou knihovnu pro čtení dat.
Našel jsem na netu tuto skvělou knihovnu pro arduino https://www.rcgroups.com/forums/showthr ... nfigurable
Pro získání dat z čidla přes S.port je potřeba nějaké pravidelné dotazování, které normálně řeší například přijímač.
Pro použití bez přijímače se v kódu zapne dotazování, ale data pak chodí tak nějak nepravidelně a ne vždy aktuální.
Máte s tím někdo zkušenosti? Nebo používáte jinou knihovnu pro čtení dat.
- ddano007
- Příspěvky: 2896
- Registrován: čtv 18.03.2010 0:00
- Bydliště: Zavar, SK
- Kontaktovat uživatele:
Re: ARDUINO a FrSky Telemetrie
Skúsenosti s tým nemám, len mám zvedavú otázku: Čo z toho má byť?
X9D & T16Pro & TX16S & nejaké lietadlá, heli a koptéry www.rcmodelytt.sk
Re: ARDUINO a FrSky Telemetrie
Je to ze zvědavosti, spíš si tak bastlím a zjišťuji jak věci fungují.
Můžu čidla připojit k přijímači a data logovat ve vysílači. Ale proč to nezkusit propojit i s něčím jiným
A když už se mi válí to arduino v šuplíku ...
Můžu čidla připojit k přijímači a data logovat ve vysílači. Ale proč to nezkusit propojit i s něčím jiným
A když už se mi válí to arduino v šuplíku ...