Je eigen set programmeren.  

In een vorig blog heb ik jullie kennis laten maken met de Patriot transceiver. Een ‘Open Source’ zend-ontvanger concept, waarbij de hardware en software vrij toegankelijk is. Ten-Tec is als leverancier met dit concept op de markt gekomen en ondertussen zijn er al twee transceivers gepubliceerd en te koop. Beide transceivers hebben een eigen Yahoo Group en er is veel belangstelling voor met name het gebruiken van de setjes en in de beschikbare software. In dit blog wil ik jullie een beetje inwijden wat je zoals nodig hebt om zelf je setje te gaan programmeren.

patriot

Arduino kloon, ChipKIT UNO32.
Ten-Tec gebruikt in zijn ontwerpen een UNO32 processor bordje van ChipKIT. Dit is een Arduino kloon met betere eigenschappen dan een ‘standaard’ Arduino. Zo heeft het bordje veel meer digitale en analoge aansluiting met de buitenwereld en is de processorsnelheid 80MHz. Hierdoor is het mogelijk om real time functionaliteit zoals CW decodering of een bandscope te implementeren of een voor ons zendamateurs zo belangrijke S-meter.

De ChipKIT heeft ook lekker wat geheugen aan boord en kan dus ook de wat grotere bestanden aan. Daarnaast ligt hij ook nog gunstig in de markt qua prijs en zijn er diverse Nederlandse verkopers die de UNO32 voeren. Overigens worden de Rebel en Patriot door Ten-Tec geleverd inclusief de UNO32, dus je hoeft niet zelf te gaan shoppen.

MPIDE.
In Arduino termen heet een programma een sketch en bevat alle code nodig om het aangesloten apparaat te laten functioneren. Om een dergelijke sketch te maken is er een speciaal en niet onbelangrijk, gratis verkrijgbare MPIDE te downloaden via de Digilent Inc site (de leverancier van de UNO32). Met dit Multi-Platform Integrated Development Environment kun je op je gewone Windows PC via een USB kabel de code naar de UNO32 uploaden. Als je de instructies volgt kun je al vrij snel een voorbeeld sketch laden, compileren en uploaden. Het is mij ook gelukt hi.

RAM en PAM.
Nog voordat Ten-Tec met de ‘Open Source’ setjes op de markt kwam, waren een paar radioamateurs al aan het programmeren geslagen. We wisten dat Ten-Tec de setjes zou leveren met een minimale sketch, waarbij alleen de basale functionaliteit aanwezig zou zijn om de set te kunnen afstemmen en het bandfilter te kunnen kiezen. Omdat we met een aantal mensen bezig waren, ontstond al snel de naam Alliance Mod. Een bondgenootschap dus om de software van Ten-Tec te modificeren. Voor de Rebel resulteerde dit in de Rebel Alliance Mod en voor de Patriot… ach je raad het al. Grappig is dat de samenstelling van de groep van de Rebel anders is als die van de  Patriot. Ik ben zelf de constante factor en heb ook de meeste code geschreven of bij elkaar geharkt. Want dat is het leuke bij ‘Open Source’: beter goed gekopieerd dan slecht bedacht. Uiteraard voldoe je aan een aantal GNU regels zoals het vermelden van bronnen en namen (callsigns) van de oorspronkelijke bedenkers van de code.

GitHub en de Yahoo Group
Je vraagt je natuurlijk al af, hoe komt die groep met elkaar in contact en waar wissel je de gemaakte programma’s uit. Gaat dat via email? Nou nee. Daar hebben we tegenwoordig mooiere methodes voor zoals GitHub. Hier kun je de software uploaden en kunnen anderen wijziging voorstellen en automatisch laten verwerken in jouw versie. Is wel een beetje hogere wiskunde, maar voor de Rebel Alliance Mod sketch hebben we hier gebruik van gemaakt.
Daarnaast vind er veel uitwisseling van ideeën plaats op de Yahoo Group. Dit is denk ik bij velen van jullie wel een bekend platform en om het voor ons, radioamateurs, wat makkelijk te maken, wordt de uiteindelijke sketch in de Yahoo Group geplaatst.

Sketch
Het voert een beetje te ver om de hele sketch in dit blog op te nemen. De PAM V1.2 sketch bestaat uit ruim 1500 regels code. Dit is code gebaseerd op C/C++ en maakt gebruik van uitgebreide bibliotheken die beschikbaar zijn voor de UNO32. Hieronder een stukje code waarbij twee bibliotheken worden geladen en een matrix display wordt verbonden met de UNO32.

// 4BIT LCD 20 x 4 line display
#include <Wire.h>
#include <LiquidCrystal.h>
//  Set de LCD pins
LiquidCrystal lcd(26, 27, 28, 29, 30, 31);    

Je kunt heel overzichtelijk of heel rommelig programmeren. Je moet enige zelfdiscipline hanteren anders raak je het overzicht kwijt. Belangrijk gegeven is om bij herhaling van dezelfde code dit in een aparte routine te plaatsen. Zo is er bijvoorbeeld de ‘TX_on’ routine, waarbij de zender aan gaat. Deze routine wordt in SSB gebruikt in de PTT functie en in CW bij zowel de Keyer als de handsleutel functie.

void TX_on()  {
TX_Frequency = frequency;
frequency_tune  = TX_Frequency;
digitalWrite ( FREQ_REGISTER_BIT,   HIGH);
UpdateFreq1(frequency_tune);
lcd.setCursor(13, 3);
  // print the s meter on line 4
lcd.print(“T ###  “);
old_b = b;
// save original band width
b = 0x00;
Select_Multi_BW_Ored();
if (mode==0) {
digitalWrite ( MIC_LINE_MUTE, HIGH );
// turns Q35, Q16 off, unmutes mic/line
digitalWrite ( SSB_CW, HIGH );
// this causes the ALC line to connect
} else {
digitalWrite ( SSB_CW, LOW );
// enables the cw pull down circuit
digitalWrite ( Side_Tone, HIGH );
// enables side-tone source
digitalWrite ( Band_End_Flash_led, HIGH );
}
digitalWrite ( TX_OUT, HIGH );
// Turns on Q199 (pwr cntrl)
}

Op deze manier zijn er in de PAM versie heel wat herbruikbare routines geschreven. Overigens , door gebruik te maken van bestaande of voorbeeld code kun je vrij snel zelf een werkende sketch maken. Dus kijk eerst wat er al is en modificeer dat. Een soort operating practice voor software ontwikkelaars. Net als bij zendamateurs: eerst luisteren dan zenden.

Trial-and-Error.
Ik ben zelf nogal een proberen en missen of vallen en opstaan programmeur. Dus stukje code schrijven, proberen en verbeteren. Dit betekent dat je wel vaak moet compileren en uploaden, maar dat duurt gelukkig niet langer dan twee minuten. In die tijd kun je mooi weer googelen of je een nog slimmere code kunt vinden om je sketch te verbeteren. Want google is je grote vriend bij dit soort hobby activiteiten heb ik gemerkt.

blueOndertussen is de PAM V1.2 al weer een paar weken geleden gepubliceerd en er zijn al heel wat downloads geweest vooral in Amerika. Er kunnen wat mij betreft nog wel een paar extra functionaliteiten worden aangebracht maar ik laat die actie even over aan mijn ‘bondgenoten’ hi.

Ondertussen heb zelf een mini OLED display erbij geprogrammeerd en communiceer ik mijn CAT commando’s met HRD via Bluetooth. Een kleine Android applicatie staat op stapel zodat ik de Patriot snel en modern kan bedienen via mijn smartphone. Dan snappen mijn schoonzoons het ook weer.

De source code kun je vinden in de files library van de Patriot Yahoo Group en ik zal ook weer een plekje reserveren op GitHub.

Ik ben benieuwd welke amateurs nog meer aan het programmeren slaan en een mooie Sketch maken voor de Patriot.