la soluzione con ponte frksy/ppm (quindi un modulo frsky che trasmette a una rx frsky, prendendo un input di segnali ppm generati da arduino che a sua volta prende dal pc i valori e li converte) è una scelta di velocità ed economia.
il software richiede al massimo qualche oretta per lo sviluppo (lato arduino e lato pc), e ho un range di 1,5km spendendo meno di 40 sterline.
ed effettivamente funziona tutto e bene.
sparo una stringa con valori separati da punto e virgola e fine riga con il carattere ascii 10 (\n o vblf o linefeed, o come lo volete chiamare)
arduino attende il fine riga,
legge la stringa e memorizza i valori
ogni 22ms un interrupt richiama una funzione che genera il treno di impulsi ppm, nulla più di una serie di high e low sul pin che va alla tx frsky, di durata variabile in base a quello che invio dalla seriale del pc.
questo richiede una 50ina di righe di codice lato arduino e altrettante lato pc (compresa la lettura dei valori da un joystick collegato al pc)
sinceramente non so quanto invece cubi in termini di tempo implementare uno dei protocolli "seri" che vengono utilizzati da marche che fanno tx/rx.
per quello pensavo di fare un protocollo "light"
e che, magari in futuro, mi permetta, lato pc, di pilotare più tx, tramite le varie uscite di arduino.
poi le mie erano esempi di considerazioni sul perché dare attenzione al messaggio più che a come si invia, non tanto quesiti su come fare un protocollo.
ad ora una stringa di testo svolge egregiamente questa funzione mentre le logiche sono gestite dal pc.
arduino si occupa solo di tenere sotto controllo i valori massimi dei comandi che riceve, in modo da non inviare segnali malformati in caso di comunicazione seriale problematica.
quando tutto sarà più consolidato spero invece di poter implementare una comunicazione più efficace.
Citazione:
Originalmente inviato da romoloman Riguardo al protocolo, perche no prevedi di implementare in arduino un protocollo documentato tipo il DSM2 o il PXX frsky ?
La logica che ti vorrei suggerire è la seguente:
partendo dall'assunto che tu voglia generare un treno di impulsi PPM per comandare un modulo tu vuoi comandare in seriale un'arduino per fargli generare il PPM.
Se tu usassi come protocollo arduino/pc un protocollo standard seriale tipo il DSM/DSMX dei moduli della DX4/DX5 o il PXX frsky, potresti pensare di evitare, in un futuro, arduino, utilizzandolo solo come interfaccia di compatibilità per altri tipi di moduli.
A volte reinventare la ruota non conviene.
La regolazione dei trim non la farei calcolare ad arduino ma la includerei in modo trasparente.
Se hai bisogno di documentazione su quei protocolli chiedi pure. |