Het OpenTX draadje (nieuws, handige weetjes, hardware, diy)

Discussie in 'Modelbouwsoftware' gestart door Tadango, 2 apr 2020.

  1. arjan191

    arjan191 Vriend van modelbouwforum.nl PH-SAM

    Lid geworden:
    16 sep 2014
    Berichten:
    244
    Locatie:
    Utrecht
    Op Radiomaster-site bedrading foto's gevonden. Wat blijkt: de uitbreidingsspeaker-set was geplaatst, met maar een van de twee plugjes verbonden. Beide speakertjes, een onder de hoofd-printplaat en 1 in het deksel, doen t. Ze geven de beep die ik op een schakelaar ter test heb ingesteld.

    Het chassis deel op de printplaat zit niet goed vast. Kijken of ik die goed vast kan zetten.

    Als ik een testschakelaar wil configureren op een amber-sound, dan geeft scherm foutmelding "no sounds on SD".
    Afspelen via system-sdcard-sound-speel af, dan spreekt amber weer.
    Met taal-instelling op Engels, zijn de Amber-sound wel aan een schakelaar te koppelen.

    Conclusie:
    1. Slechte connectie op printplaat van chassideel;
    2. Amber speaks not if ingesteld op Dutch, maar wel in Engels.
     
    Laatst bewerkt: 14 mrt 2021
  2. arjan191

    arjan191 Vriend van modelbouwforum.nl PH-SAM

    Lid geworden:
    16 sep 2014
    Berichten:
    244
    Locatie:
    Utrecht
    Chassideel op z'n plek aangedrukt, want solderingen zagen er goed uit. Connector erin, en de boel doet t nu.
    t gekopieerde model spreekt nu ook Amber's
     
    Thedo vindt dit leuk.
  3. alm

    alm

    Lid geworden:
    20 jun 2015
    Berichten:
    927
    Locatie:
    Hellevoetsluis
    Ah, neem aan dat het werkend is getoond bij de verkoop/aankoop, maar fijn dat het opgelost is nu.
     
  4. arjan191

    arjan191 Vriend van modelbouwforum.nl PH-SAM

    Lid geworden:
    16 sep 2014
    Berichten:
    244
    Locatie:
    Utrecht
    Nope, marktplaats-koop :)
     
  5. Hein.z

    Hein.z

    Lid geworden:
    26 jul 2019
    Berichten:
    1.464
    Locatie:
    Kraggenburg / MVC Cumulus Kampen
    Je weet dat je per taal een map met spraakbestanden moet hebben? Kan zijn dat de directory-benaming niet klopt waardoor hij 'm niet vindt.

    Ik heb zelf alle talen behalve engels van de SD kaart gekiept omdat het veel ruimte inneemt (wat lastig is bij kopiƫren van de SD inhoud van/naar kaart). Als dat bij jouw zender ook gebeurd is verklaart het waarom hij in andere talen niet wil praten.
     
  6. arjan191

    arjan191 Vriend van modelbouwforum.nl PH-SAM

    Lid geworden:
    16 sep 2014
    Berichten:
    244
    Locatie:
    Utrecht
    Mapnaam klopte. Ik zet ook alleen de Engelse map erop. Denk ook dat de zender taal-instelling bepaalt in welke map ie gaat zoeken bij een "play track" instructie, ook al programmeer je m op zender om een speciefieke wav af te spelen.
     
  7. Hobby4Life

    Hobby4Life

    Lid geworden:
    20 nov 2009
    Berichten:
    1.329
    Locatie:
    Avenhorn, NL
    Correct,, selecteer je Engels, kiest ie de EN map, kies je dutch kiest ie de NL map.. etc etc.
     
  8. hmeijdam

    hmeijdam

    Lid geworden:
    29 jan 2010
    Berichten:
    1.884
    Locatie:
    Barneveld
    Brutus (Bert) en ik zijn bezig met een electronische mengselregeling waarbij ik Bert geholpen heb met het maken van een drivertje voor de electronische brandstofklep. In het kort komt het er op neer dat hij zijn gaskanaal kloont en aan dat gekloonde kanaal een 7-punts curve toevoegt, die ervoor zorgt dat het mengsel bij elke gasstand afzonderlijk bijgestuurd kan worden. Werkt als een tierelier en er vliegen al tientallen kisten mee rond.

    Nu willen we dat graag uitbreiden met compensatie voor luchtdruk en temperatuur. Dat zou ik kunnen oplossen door aan het drivertje een druksensor (BMP180) te hangen en er dan een vaste correctieformule op los te laten, maar ik heb ook aan Bert voorgesteld om het met een telemetriesensor te gaan proberen. Ik maak dan met behulp van Tadango's library een S-port sensor, die de luchtdruk en temperatuur terugstuurt naar de zender.
    In de zender willen we dan de correctieberekening laten uitvoeren. Dat betekent dat ik moet leren hoe ik een LUA mixer script kan maken. Maar ik heb nog nooit met LUA gewerkt.
    Ik heb de OpenTX LUA reference guide er bij gepakt, maar dat is ook niet echt een tutorial.
    Wat ik verder op Youtube kon vinden ging ook meer over het gebruiken van kant en klare LUA scripts.

    Wie heeft voor mij tips of pointers om te leren simpele mixer scripts te programmeren in LUA voor OpenTX? Als input een gekloond kanaal met zijn curve, en dan een correctiefactor op basis van twee telemetriewaarden. Dat zou het ongeveer moeten zijn.

    Hans
     
    Hobby4Life en AHoogendijk vinden dit leuk.
  9. Tadango

    Tadango Forum veteraan

    Lid geworden:
    25 jun 2003
    Berichten:
    16.352
    Locatie:
    Groningen
    Kijk eens naar https://github.com/RealTadango/FrSky/tree/master/OpenTX/Start Dat is een mixer scripts met inputs en outputs.

    Maar wat ik eigenlijk zou maken als ik jouw was was een sensor die alles zelf regelt maar waarbij de parameters via lua instelbaar zijn. Dan heb je niet de vertraging via de zender (ongeveer 1 seconde).
     
  10. hmeijdam

    hmeijdam

    Lid geworden:
    29 jan 2010
    Berichten:
    1.884
    Locatie:
    Barneveld
    Hmm.. dat is wel een goeie. Ik had gedacht dat het hooguit een halve seconde zou zijn, gezien de refresh rate van de telemetrie. Een seconde kan misschien nog net, maar is niet optimaal. Ik ga ervan uit dat dat wat verder gaat dan een simpel mix script schrijven. Dus ik ga maar gewoon met wat simpels beginnen en dan zien of het kwartje valt.
     
  11. hmeijdam

    hmeijdam

    Lid geworden:
    29 jan 2010
    Berichten:
    1.884
    Locatie:
    Barneveld
    De vertraging vanuit de zender blijkt gelukkig mee te vallen.
    Ik heb even 3 custom sensors gemaakt mbv Tadango's S-Port library in een Arduino met een potmeter er op aangesloten om de telemetriewaarde te kunnen verstellen Ook stuur ik een 10Hz en 100Hz teller mee om de verversingsfrequentie van de telemetriesensoren te kunnen loggen op de SD kaart in mijn zender.

    Mijn Arduino sketch
    Code:
    #include <SPort.h>
    SPortHub hub(0x13, 2);
    CustomSPortSensor sensor1(getSensorData1);
    CustomSPortSensor sensor2(getSensorData2);
    CustomSPortSensor sensor3(getSensorData3);
    
    void setup() {
      hub.registerSensor(sensor1);
      hub.registerSensor(sensor2);
      hub.registerSensor(sensor3);
      hub.begin();
    }
    
    void loop() {
      hub.handle();                    
    }
    
    sportData getSensorData1(CustomSPortSensor* sensor1) {
      sportData data;
      data.applicationId = 0x1001;
      int sensorValue = analogRead(A0);
      float customval = sensorValue;
      // data.value = customval;
      data.value = millis()/100;
      return data;
    }
    
    sportData getSensorData2(CustomSPortSensor* sensor2) {
      sportData data;
      data.applicationId = 0x1002;
      int sensorValue = analogRead(A0);
      float customval = sensorValue / 10;
      data.value = customval;
      return data;
    }
    
    sportData getSensorData3(CustomSPortSensor* sensor3) {
      sportData data;
      data.applicationId = 0x1003;
      int sensorValue = analogRead(A0);
      float customval = sensorValue / 100;
      data.value = millis()/ 10;
      return data;
    }
    Vervolgens een LUA telemetriescript gebruikt wat al op de SD kaart bleek te staan.
    Als ik daar als input de door mij aangemaakte sensor "1001" opgeef en de output "SlNd" (solenoid) weer als input gebruik in een extra mixer, dan zie ik mijn solenoid kanaal op de zender vrijwel meteen 50% heen en weer bewegen als ik aan de potmeter van de Arduino draai. Zo op het oog met een 5Hz verversingsfrequentie
    Als ik mijn telemetrielogs (0,1 seconde interval) bekijk dan is de verversingsfrequentie van mijn "1001" sensor tussen de 5 en 10Hz gemiddeld krijg ik 3 unieke waarden en dan wordt de volgende dubbel getoond en daarna een sprong van 2. Dan zou je op ongeveer 8Hz uitkomen.

    Lua script wat ik gebruik
    Code:
    local inputs = {
                     { "Input", SOURCE },
                     { "Percent", VALUE, -100, 100, 50 }
                   }
    local outputs = { "SlNd" }
    local function run(i, p)
      return i*p/100
    end
    return { input=inputs, output=outputs, run=run }
    
    Volgens mij kan ik de output waarden naar mijn ontvanger niet loggen op mijn SD kaart, of ik weet niet hoe. Ik zie in het "Mixer" en "Output" scherm op mijn Taranis geen vakje voor "logging" wat ik aan kan klikken. Of ik kijk met mijn neus.
     
    Laatst bewerkt: 23 apr 2021
  12. hmeijdam

    hmeijdam

    Lid geworden:
    29 jan 2010
    Berichten:
    1.884
    Locatie:
    Barneveld
    Noob vraagje: Heb ik het goed begrepen dat de 5 parameters van de "local function run" de local inputs zijn in de volgorde waarin je ze bij local inputs achter elkaar hebt gezet?
    En dan hetzelfde voor de twee "local outputs" welke ik als twee argumenten bij "return" zie terugkomen. Ook hier de volgorde waarin ze staan de bepalende factor voor welk veld welk argument is? Ik zou niet weten hoe anders het juiste veld op de juiste plek gebruikt kan worden.

    screenshot.jpg
     
  13. Tadango

    Tadango Forum veteraan

    Lid geworden:
    25 jun 2003
    Berichten:
    16.352
    Locatie:
    Groningen
    Ja, zo werkt dat systeem. De volgorde in de functies is gelijk aan de volgorde in de definitie.
     
  14. hmeijdam

    hmeijdam

    Lid geworden:
    29 jan 2010
    Berichten:
    1.884
    Locatie:
    Barneveld
    Het scriptje wat ik nu gemaakt heb stelt niks voor en is in staat om het gekloonde gaskanaal een finetuning van tussen -10% en 10% naar boven of beneden te geven, waarbij het percentage finetuning proportioneel is aan de gasstand. Zet de finetuning bijvoorbeeld op +10% dan komt er bij een gasstand van 20% twee procent bij (10% van 20% = 2%). bij een gasstand van 50% komt er 5% bij en bij een gasstand van 80% komt er 8% bij.

    scriptje.jpg

    Mijn vraag is echter over de input en output.
    Ik gebruik nu als input in het script ("In_Chan") het gekloonde gaskanaal, met de curve die het brandstofmengsel voor elke gasstand bepaalt. Vervolgens een slider "TuneInp" om de uitkomst van die curve te finetunen van -10% naar +10%. Dat wordt later dus een telemetriesensor input, die de finetuning verzorgt afhankelijk van druk en temperatuur.
    Ik krijg het echter niet voor elkaar om de output van de curve direct als input voor het LUA script te nemen. Ik moet de curve aan een kanaal toewijzen, ondanks dat ik dat kanaal niet naar de ontvanger wil sturen omdat het LUA script er nog op losgelaten moet worden.

    Wat ik zou willen is:
    Gasstick zonder trim >> Curve >> LUA script voor finetunen >> Kanaal (voor solenoid)

    Wat ik nu slechts voor elkaar krijg is:
    Gasstick zonder trim >> Kanaal waar een Curve aan hangt >> LUA script voor finetunen >> Kanaal (voor solenoid)

    Het werkt verder wel, want ik gebruik voor het kanaal met de curve wel kanaal 25 of zo, wat toch niet naar de 8 kanaals ontvanger gaat, maar vroeg me af of er een manier is om een gedefineerde curve direct in een LUA script te gebruiken.
     
  15. Tadango

    Tadango Forum veteraan

    Lid geworden:
    25 jun 2003
    Berichten:
    16.352
    Locatie:
    Groningen
    Ik denk dat het via een input wel kan? Dus bij een input definieer je de curve en de input gebruikt je als input voor de lua.
     
  16. hmeijdam

    hmeijdam

    Lid geworden:
    29 jan 2010
    Berichten:
    1.884
    Locatie:
    Barneveld
    Jij hebt je werk voor vandaag weer gedaan, dus ga maar weekeind vieren. Werkt perfect! :goal
     
  17. brutus

    brutus Vriend van modelbouwforum.nl PH-SAM Forum veteraan

    Lid geworden:
    18 nov 2008
    Berichten:
    27.780
    Locatie:
    Oldeberkoop
    Dat klinkt goed...
     
  18. hmeijdam

    hmeijdam

    Lid geworden:
    29 jan 2010
    Berichten:
    1.884
    Locatie:
    Barneveld
    Hoe zit het nu in OpenTX met de telemetrie waarden in de zender als de telemetrieverbinding verbroken wordt?
    Bij telemetry-lost blijft op het display van de zender de laatst ontvangen waarde staan en die komt dan tussen vierkante haken te staan.
    Voor mijn LUA script, had ik de aanname gedaan dat de laatst ontvangen waarde als input naar het script blijft gaan. Dat is echter niet het geval. De waarde voor het script gaat naar nul.

    Is er een manier om wel de laatst ontvangen telemetrie waarde te onthouden in het LUA script en die te gebruiken als de telemetrie wegvalt?
     
  19. r3wd

    r3wd

    Lid geworden:
    9 okt 2020
    Berichten:
    140
    Locatie:
    Tilburg
    Kun je de telemetriestatus uitvragen? Dan kun je daar de update van de variabele aan ophangen.
     
  20. hmeijdam

    hmeijdam

    Lid geworden:
    29 jan 2010
    Berichten:
    1.884
    Locatie:
    Barneveld
    Het enige wat ik kan vinden in de LUA reference guide is sportTelemetryPop() maar of ik al te laat ben als die queue leeg is...geen idee.

    Als ik niet snap hoe dat werkt, ga ik maar even testen wat er nu per telemetrieveld exact mijn script binnenkomt bij "sensor lost" of "telemetry lost". Dan kan ik mijn sensor wellicht zo tweaken dat ik de waarde "0" uitsluit en bij "1" begin te tellen met mijn reeks aan telemetriewaarden. Komt er dan een "0" binnen dan keur ik die af. Dat is dan een workaround.

    Mijn mixerscript zelf lijkt niet gekilled te worden door OpenTX als de telemetrie input niet binnenkomt. Zonder telemetrie input, blijft mijn script output wel reageren op mijn gasstick. dat is in elk geval een meevaller.
     
    AHoogendijk vindt dit leuk.

Deel Deze Pagina