Autor |
Zpráva |
Celeron
|
Napsal: úte 20.06.2017 15:28 |
|
Mazák
|
|
|
Registrován: 22.4.2010 Příspěvky: 10498 Bydliště: Nový Bydžov ČR Obrázky: 14
|
V jiným vlákně jsem popsal zabudování no EX telemetrie Jeti do Prism7. Tahle telemetrie má chybový stavy hlášený jedním volitelným písmenem morse abecedy. Morzeovku jsem se nikdy nenaučil a kdo si má taky pamatovat, co který písmeno je za telemetrickej alarm. Tak mě napadlo dekódovat z piezo pískače morse značky pomocí Adruina a na hlášky použít DFPlayer. To jsou destičky za pár kaček. Dekodéry morse s arduinem už na netu jsou, převážně s výstupem na dvouřádkový LCD displeje. Takže by stačilo vykuchat LCD a trochu upravit kam půjde zdekódovaný znak. DFPlayer je destička 20 x 20 mm na který je sokl na mikroSD kartu. Je na ní MP3 přehrávač, výstup L + R signálu, společný výstup se řízením hlasitosti na malý reproduktor a řízení buď přes tlačítka a nebo po sériové lince RS232 TTL. Přes tlačítka je možno ovládat asi 16 základních funkcí jako hlasitost, přehrávání, stop, další, předchozí atd. Po sériové lince jde také zvolit adresář a soubor na SD kartě, který se bude přehrávat. Takže stačí na SD kartu nahrát hlasový hlášky telemetrie a podle písmena z morse dekodéru přehrávat konkrétní hlášku. Morse dekodér na Arduinu Pro Mini s výstupem na LCD displej mám už vyzkoušenej. DFPlayer taky, na kartu jsem nahrnul asi 30 MP3 písniček a Arduino vybírá po 10 sekundách přehrávání vždy další. Teď bych to potřeboval provázat, ovšem je problém. Je to podstatně složitější, než jsou příklady v různých příručkách pro začátečníky a nějak to nezvládám. Nenašla by se náhodou nějaká dobrá duše, která by mi s tím pomohla? Jinak s tím DFPlayerem by se třeba dalo bez problémů udělat ozvučení různých modelů, záleželo by jen na tom, co se nahraje na SD kartu. Přehrávání jednotlivých MP3 je možné bez jakékoliv mezery a tak by s tím šlo udělat i změnu otáček u spalovacího motoru. Jirka
|
|
Nahoru |
|
|
|
|
|
Amper
|
Napsal: úte 20.06.2017 16:06 |
|
Mazák
|
|
Registrován: 30.8.2011 Příspěvky: 5331 Bydliště: Plzeň, CZ Obrázky: 0
|
Furt si myslim ze mnohem rozumnejsi by bylo zpracovani alarmu rovnou z telemetrie ad provazani - ty hodlas provozovat dve arduina nebo to chces nacpat do jednoho ? Vejde se to do pameti ?
_________________ coptery@FrSky X9E, 3.4m Go-3,EPP Spartan,SkySurfX8,SE.5,MPX Extra 300s@Jeti DC-16
|
|
Nahoru |
|
|
Amper
|
Napsal: úte 20.06.2017 16:12 |
|
Mazák
|
|
Registrován: 30.8.2011 Příspěvky: 5331 Bydliště: Plzeň, CZ Obrázky: 0
|
aha. DFPlayer je samostatny a ovladany po UARTu. To by melo byt trivka.
Nafot / namaluj zapojeni a dej nekam nejake zdrojaky at se na to da kouknout
_________________ coptery@FrSky X9E, 3.4m Go-3,EPP Spartan,SkySurfX8,SE.5,MPX Extra 300s@Jeti DC-16
|
|
Nahoru |
|
|
Woita
|
Napsal: úte 20.06.2017 22:21 |
|
Mecenáš serveru
|
|
|
Registrován: 8.7.2011 Příspěvky: 6961 Bydliště: Písek, ČR
|
Souhlas s Amperem. Cílem je převést A na B. S tou morseovkou je to převod A na C a následně C na B. I když, pokud už to "C" (morseovku) máš, chápu že to svádí udělat převod C na B, ale čisté řešení to není. Tohle je jenom můj názor na první pohled, třeba je tam nějaká hlubší myšlenka nebo fajnovost, kteroujsem nepostřehnul. Jenom se mi zdá, že ta morseovka by měla buď být jako konečný produkt, a pokud ne, tak jako meziprodukt je to zbytečný...
_________________ FrSky Horus, letadla, heli+koptéry. http://rc.ludl.cz
|
|
Nahoru |
|
|
Celeron
|
Napsal: stř 21.06.2017 0:22 |
|
Mazák
|
|
|
Registrován: 22.4.2010 Příspěvky: 10498 Bydliště: Nový Bydžov ČR Obrázky: 14
|
Hloubat v Jeti telemetrii, na to se necejtím. On mě úplně stačí Wiring a můžu použít dekodér morse i řízení playeru co už jsou napsaný. V tom ne exovým Jeti se dají všem alarmům přidělit písmena morse A až Z. U DFPlayeru se soubory MP3 nebo WAW ukládají do adresáře pojmenovaným 01 - 99 a v každým adresáři je možno umístit soubory 001 - 255. Takže stačí odečíst od zdetekovanýho morse znaku 65 a mám číslo souboru, co se přehraje. Zkoušel jsem různý způsoby ovládání DFPlayeru. Při použití již napsaných knihoven je problém, jak se stále zjišťuje stav přehrávače je slyšet rušení od sériový komunikace. Tak jsem použil jen co nejjednodušší ovládání bez knihoven, kdy se jen dá příkaz, co přehrát a stav se nekontroluje po sériový lince, ale čeká se na HW signál Busy, kterej hlásí, že se přehrává, nebo se dohrálo. Kontroly jestli je karta SD karta zasunutá či ne si myslím, že jsou zbytečný. Tohle je prográmek, splácanej z několika na netu s kterým testuju přehrání souborů 001 až 010 v adresáři 01. Pro kontrolu se na PC serial monitor vypisujou názvy souborů: Kód: // Příklad použití DFPlayeru s microSD // s adresáři 01-99, s názvy souborů 001.mp3-255.mp3) // Na SD kartě jsou soubory (001.mp3, 002.mp3, až 010.mp3 // v adresáři "01". // const byte pinRX = 10; // definice pin RX DFPlayeru const byte pinTX = 11; // definice pin TX -"- const byte pinBusy = 12; // definice pin Busy -"- const byte Volume = 0x28; // nastavení hlasitosti DFPLayeru - v rozsahu: 0x00-0x30 - default=0x30 #include "SoftwareSerial.h" // knihovna software serial port SoftwareSerial mySerial(pinRX, pinTX); // RX, TX definice
void setup () { Serial.begin(110200); // rychlost s PC mySerial.begin(9600); // rychlost s DFPlayer pinMode(pinBusy, INPUT); // init Busy pin pro DFPlayer (LO: hraje / HI: nehraje) Serial.println(); Serial.println(F("DFPlayer Mini Demo")); Serial.println(F("Inicializace DFPlayeru")); dfpExecute(0x3F, 0x00, 0x00); // odešli inicializační parametry DFPlayeru while (mySerial.available()<10) // Počkej, dokud nebudou přijaty inicializační parametry (10 bajtů) delay(20); // 20 ms zpoždění mezi příkazy dfpExecute(0x06,0x00,Volume); // odešli hlasitost DL=0x00-0x30, delay(20); // 20 ms zpoždění mezi příkazy Serial.println(F("DFPlayer Mini online.")); } // konec Setup
void loop () { // hlavní smyčka const byte nfiles = 10; // počet mp3 na SD kartě static byte ifile = 1; // číslo mp3 pro příště if (digitalRead(pinBusy) == HIGH) { // Pokud se nepřehrává, přehrajte další delay(500); // zpoždění Serial.print("Prehravani MP3, nazev: "); // výpis hlášky na PC Serial.println(ifile); // výpis čísla mp3 dfpExecute(0x0F,0x01,ifile); // přehraj (0x0F) soubor [ifile] z adresáře "01" ifile++; // další soubor if (ifile > nfiles) { // pokud je ifile vyšší než počet mp3 v adresáři ifile = 1; // tak začni znova od 1. delay(3000); // zpoždění před opakováním } } }
// --- Spusit příkaz DFPlayer se dvěma parametry (číslo adresáře a souboru)--- void dfpExecute(byte CMD, byte Par1, byte Par2) // parametry (0x0F,0x01,ifile) { # define Start_Byte 0x7E # define Version_Byte 0xFF # define Command_Length 0x06 # define Acknowledge 0x00 # define End_Byte 0xEF // // Kontrolní suma (2 byte) uint16_t checksum = -(Version_Byte + Command_Length + CMD + Acknowledge + Par1 + Par2); // // Vytvoření příkazového řádku uint8_t Command_line[10] = { Start_Byte, Version_Byte, Command_Length, CMD, Acknowledge, Par1, Par2, highByte(checksum), lowByte(checksum), End_Byte}; // // Odeslání příkazového řádku do DFPlayeru for (byte i=0; i<10; i++) mySerial.write( Command_line[i]); } Ten dekodér morse musím dát jinam, je to moc velký. Odzkoušený mám tohle. Ale musí se to dost vykuchat, v podstatě celá obsluha displeje musí ven. Jirka
|
|
Nahoru |
|
|
Amper
|
Napsal: stř 21.06.2017 6:09 |
|
Mazák
|
|
Registrován: 30.8.2011 Příspěvky: 5331 Bydliště: Plzeň, CZ Obrázky: 0
|
Dobry a co je za problém ?
_________________ coptery@FrSky X9E, 3.4m Go-3,EPP Spartan,SkySurfX8,SE.5,MPX Extra 300s@Jeti DC-16
|
|
Nahoru |
|
|
Celeron
|
Napsal: stř 21.06.2017 7:49 |
|
Mazák
|
|
|
Registrován: 22.4.2010 Příspěvky: 10498 Bydliště: Nový Bydžov ČR Obrázky: 14
|
Ta úprava CW dekodéru. Chtěl jsem udělat mezikrok aby odchycený znaky šly místo na LCD na PC serial monitor a nějak se mi nedaří. Třeba přemejšlím, zda budou stačit časovače. Jak to je? Když používám v ovládání playeru Serial a Software serial, tak to jsou dva časovače, to chodí. Ale nedokážu v tom CW dekodéru nalýzt, kolik časovačů potřebuje na dekódování. AT328 má dva 8 bitový a jeden 16 bitovej časovač a netuším, jak se používají a přiřazují. V nejhorším se dá zrušit komunikace na PC a jeden časovač vyšetřit, tedy jestli to jde a pomůže. Zkusím si ještě pohrát s kucháním CW dekodéru a když zabřednu, tak Ti pošlu kam jsem se dostal. Ono je to pro mě dost těžký, některý programový řádky jsou mi záhadou a v dokumentaci, co mám jsem k tomu nic nenašel. Jirka
|
|
Nahoru |
|
|
Amper
|
Napsal: stř 21.06.2017 8:07 |
|
Mazák
|
|
Registrován: 30.8.2011 Příspěvky: 5331 Bydliště: Plzeň, CZ Obrázky: 0
|
CW dekoder prece nepouziva hw uart tak pouzij ten a vyhod uplne software serial.
_________________ coptery@FrSky X9E, 3.4m Go-3,EPP Spartan,SkySurfX8,SE.5,MPX Extra 300s@Jeti DC-16
|
|
Nahoru |
|
|
Celeron
|
Napsal: stř 21.06.2017 8:21 |
|
Mazák
|
|
|
Registrován: 22.4.2010 Příspěvky: 10498 Bydliště: Nový Bydžov ČR Obrázky: 14
|
Ale používá, je tam přes serial nastavování dekodéru. Ale to by se teoreticky taky mohlo odzkoušet a potom vykuchat. Zatím nevím, ten dekodér s Goertzel Algoritmem vůbec nechápu, jak to funguje. Jirka
|
|
Nahoru |
|
|
Amper
|
Napsal: stř 21.06.2017 8:35 |
|
Mazák
|
|
Registrován: 30.8.2011 Příspěvky: 5331 Bydliště: Plzeň, CZ Obrázky: 0
|
Myslim ze mnohem rozumnejsi by bylo pracovat fakt s tou telemetrii
_________________ coptery@FrSky X9E, 3.4m Go-3,EPP Spartan,SkySurfX8,SE.5,MPX Extra 300s@Jeti DC-16
|
|
Nahoru |
|
|
Celeron
|
Napsal: stř 21.06.2017 15:40 |
|
Mazák
|
|
|
Registrován: 22.4.2010 Příspěvky: 10498 Bydliště: Nový Bydžov ČR Obrázky: 14
|
Ten prográmek, co jsem dával včera se chová nějak divně. Sice to přehrává soubory 001.MP3 až 010.MP3 ale třeba 001 až 003 trvají jen 2-3 sekundy. Pak se 004 a 005 přehrajou celý a pak jsou zase další zkrácený na 2-3 sekundy. A je to zcela nahodilý. Jako kdyby to blbě četlo výstup Busy z DFPlayeru. Když to hraje je na Busy 0,846V, to je na Arduino dost divná úroveň Low. Pokud nehraje, tak je na Busy cca 3,4V. Zkusil jsem na Mega Pro předefinovat Busy na port 13 a pak 8 a je to furt stejný. Nojo, ale ono to nereaguje správně ani když ten vstup Bysy do Mega Pro připojím přímo na GND nebo VCC. Ampére, nevidíš prosím tě v tom programu nějakou chybu? Mě nic nenapadá... No blbý čtení portu a ty bys chtěl, abych se šťoural v protokolu telemetrie. Díky Jirka
Přílohy: |
DFPlayer.jpg [ 288.08 KiB | Zobrazeno 8195 krát ]
|
|
|
|
Nahoru |
|
|
Amper
|
Napsal: stř 21.06.2017 15:47 |
|
Mazák
|
|
Registrován: 30.8.2011 Příspěvky: 5331 Bydliště: Plzeň, CZ Obrázky: 0
|
nestiham ale pokud mas jen propojene vstupy dratama tak je mozne ze to plave. Zkusil bych to stahnout na logickou nulu pres pulldown odpor http://www.resistorguide.com/pull-up-re ... -resistor/
_________________ coptery@FrSky X9E, 3.4m Go-3,EPP Spartan,SkySurfX8,SE.5,MPX Extra 300s@Jeti DC-16
|
|
Nahoru |
|
|
Celeron
|
Napsal: stř 21.06.2017 16:28 |
|
Mazák
|
|
|
Registrován: 22.4.2010 Příspěvky: 10498 Bydliště: Nový Bydžov ČR Obrázky: 14
|
Zkusil jsem Busy stáhnout do země 1k odporem. Low spadla na 0,66V ale žádná změna, furt to zkracuje nahodile některý MP3. Jirka
|
|
Nahoru |
|
|
Amper
|
Napsal: stř 21.06.2017 16:58 |
|
Mazák
|
|
Registrován: 30.8.2011 Příspěvky: 5331 Bydliště: Plzeň, CZ Obrázky: 0
|
tak to nevim, musel bych se do toho ponorit poradne a aktualne nemam cas ani dodelat SE.5 (i kdyz si rikam ze kdybych secetl cas na vsechny prispevky tak uz mam zaletnuto 2x )
_________________ coptery@FrSky X9E, 3.4m Go-3,EPP Spartan,SkySurfX8,SE.5,MPX Extra 300s@Jeti DC-16
|
|
Nahoru |
|
|
Celeron
|
Napsal: stř 21.06.2017 18:06 |
|
Mazák
|
|
|
Registrován: 22.4.2010 Příspěvky: 10498 Bydliště: Nový Bydžov ČR Obrázky: 14
|
Tak jsem to našel. Nějakej problém s časováním snímání Busy, stačilo přemístit pauzu na konec Loop. Pokud je míň než cca 25mS tak to blbne. Zajímavý, ta divná úroveň Low na to nemá vliv. Kód: void loop () { // hlavní smyčka if (digitalRead(pinDfpBusy) == HIGH) { // Pokud se nepřehrává, přehrajte další // delay(300); // zpoždění Serial.print("Prehravani MP3 nazev: "); // výpis hlášky na PC Serial.println(ifile); // výpis čísla mp3 dfpExecute(0x0F,0x01,ifile); // přehraj (0x0F) soubor [ifile] z adresáře "01" ifile++; // další soubor if (ifile > nfiles) { // pokud je ifile vyšší než počet mp3 v adresáři ifile = 1; // tak začni znova od 1. Serial.println(F("Novy cyklus")); delay(2000); // zpoždění před opakováním } delay(300); } } Ten CW dekodér bude horší. Jirka
|
|
Nahoru |
|
|
Kdo je online |
Uživatelé procházející toto fórum: mior a 6 návštevníků |
|
Nemůžete zakládat nová témata v tomto fóru Nemůžete odpovídat v tomto fóru Nemůžete upravovat své příspěvky v tomto fóru Nemůžete mazat své příspěvky v tomto fóru Nemůžete přikládat soubory v tomto fóru
|
|
|