| "Descrizione" by Al222 (24887 pt) | 2026-May-17 12:37 |
Progetto rotore Azimut/Elevazione per ricezione satelliti
Scegliere la centralina
Tabella comparativa completa
Soluzione Vantaggi Svantaggi Ideale per Arduino UNO + PCA9685 Più semplice, molto stabile via USB, facile con Hamlib, adatto al primo test Niente Wi-Fi integrato Prima realizzazione del rotore ESP32 + PCA9685 Wi-Fi integrato, più potente, possibile controllo da browser, più flessibile Più complesso da configurare Versione finale wireless
Tabella costi indicativi
Componente Arduino + PCA9685 ESP32 + PCA9685 Scheda principale Arduino Uno circa 12/29 € Mega circa 53 € ESP32 circa 8–17 € Modulo PCA9685 10–20 € 10–20 € Convertitore 12 V → 5 V 5–15 € 5–15 € Cavi, morsetti, fusibili 10–20 € 10–20 € Totale senza alimentatore 12 V Circa 55–105 € Circa 35–72 € Alimentatore 5 V 1 A + 30–80 € + 30–80 €
Il PCA9685 non è indispensabile; per solo 2 servomotori, ho optato per partire senza PCA9685e in configurazione minima:
SCHEDA " UNO REV.3" COMPATIBILE CON CAVO USB costo 10 €
+ un po' di connettori Dupont maschio/maschio per i collegamenti
Conviene prendere il pacco da 40, costa 5/6 euro.
Testiamo un solo servo alla volta.
Collegamenti:
- Cavetto negativo dell'alimentatore 5v al pin femmina GND di Arduino nella sezione POWER (in basso nella foto).
L’alimentatore 5 V alimenta direttamente il servo:
+5 V alimentatore → filo rosso servo -5 V alimentatore → filo marrone servoArduino invece manda solo il segnale di comando:
D9 Arduino → filo giallo servoE serve la massa comune:
GND Arduino → -5 V alimentatoreQuindi Arduino non alimenta il servo: lo comanda soltanto.
Prossimo passo: testiamo solo il servo azimut con Arduino, senza Hamlib.
Prima cosa: servo libero, senza antenna collegata, se possibile.
Caricare sketch (programma) su Arduino
Scarica Arduino IDE (io ho W11): https://www.arduino.cc/en/software/
Lanciare l'exe e controllare che compaia questa finestra
Collegare Arduino al PC con USB: questo serve per selezionare la porta COM e caricare lo sketch cioè il programma che farà muovere il servo.
Sulla scheda Arduino deve lampeggiare un led verde ON e un led giallo accanto alla lettera L; se è così, la scheda funziona.
Adesso dalla finestra Arduino IDE:
Tools → Board → Arduino AVR Boards → Arduino Uno
Poi:
Tools → Port → scegliere la COM che compare.
Nella finestra Arduino cancellare tutto il codice presente
Poi incollare questo codice:
#include
Servo servoAz;
void setup() {
servoAz.attach(9);
// Rotazione in un senso
servoAz.writeMicroseconds(1200);
delay(2000);
// Stop
servoAz.writeMicroseconds(1500);
delay(2000);
// Rotazione nell'altro senso
servoAz.writeMicroseconds(1800);
delay(2000);
// Stop finale
servoAz.writeMicroseconds(1500);
}
void loop() {
// Vuoto: il programma non viene ripetuto
}Accendere l’alimentatore 5 V del servo.
Premere Upload (freccia verso destra in alto) e il servo dovrebbe eseguire 4 movimenti e fermarsi.
Se il test è OK, Arduino comanda correttamente il servo azimut.
Spegnere l’alimentatore 5 V del servo.
Ora passiamo direttamente allo sketch compatibile Hamlib / EasyComm II.
Caricare questo su Arduino:
#include
Servo servoAz;
Servo servoEl;
const int AZ_PIN = 9;
const int EL_PIN = 10;
const int MIN_US = 800;
const int MAX_US = 2200;
float azDeg = 180.0;
float elDeg = 90.0;
int degToUs(float deg, float minDeg, float maxDeg) {
deg = constrain(deg, minDeg, maxDeg);
return map((int)(deg * 10), (int)(minDeg * 10), (int)(maxDeg * 10), MIN_US, MAX_US);
}
bool parseValue(String line, const char *key, float &value) {
int idx = line.indexOf(key);
if (idx < 0) return false;
int i = idx + strlen(key);
while (i < line.length() && line[i] == ' ') i++;
if (i >= line.length()) return false;
char c = line[i];
if (!(c == '-' || c == '+' || c == '.' || (c >= '0' && c <= '9'))) return false;
value = line.substring(i).toFloat();
return true;
}
void moveServos() {
servoAz.writeMicroseconds(degToUs(azDeg, 0, 360));
servoEl.writeMicroseconds(degToUs(elDeg, 0, 180));
}
void setup() {
Serial.begin(9600);
Serial.setTimeout(50);
servoAz.attach(AZ_PIN);
servoEl.attach(EL_PIN);
moveServos();
}
void loop() {
if (Serial.available()) {
String line = Serial.readStringUntil('\n');
line.trim();
line.toUpperCase();
if (line == "AZ") {
Serial.print("AZ");
Serial.println(azDeg, 1);
return;
}
if (line == "EL") {
Serial.print("EL");
Serial.println(elDeg, 1);
return;
}
if (line == "AZ EL") {
Serial.print("AZ");
Serial.print(azDeg, 1);
Serial.print(" EL");
Serial.println(elDeg, 1);
return;
}
float newAz, newEl;
bool gotAz = parseValue(line, "AZ", newAz);
bool gotEl = parseValue(line, "EL", newEl);
if (gotAz) azDeg = newAz;
if (gotEl) elDeg = newEl;
if (gotAz || gotEl) {
moveServos();
}
}
}
Click sulla freccia destra per fare l'Uploading
Dopo Done uploading:
Accendere l’alimentatore 5 V del servo.
Chiudere la finestra di Arduino
Salvare con un nome semplice, per esempio:
Rotore_AZ_EL_EasyCommCosì si potrà riaprirlo e modificarlo in seguito. Dopo il salvataggio, Arduino IDE si chiuderà. Lasciare però Arduino collegato via USB al PC.
Scaricare e testare il software Hamlib
Sul PC scaricare Hamlib dalla pagina ufficiale delle release GitHub. Le release recenti includono anche pacchetti binari Windows a 32 e 64 bit.
Scaricare la versione Windows 64-bit ZIP o installer EXE che installerà il programma Hamlib sul computer.
Dopo l’installazione devono comparire questi programmi nella cartella Program Files o Programmi>bin
rotctld.exe
rotctl.exe
Nella cartella bin nella barra in alto, dove c’è il percorso, scrivere: cmd e premere invio
poi scrivere, inserendo la porta rilevata da Arduino (in questo caso COM4)
rotctld.exe -m 202 -r COM4 -s 9600 -t 4533 -v
Hamlib è avviato correttamente: quindi lasciare questa finestra aperta e
-Aprire un secondo Prompt dei comandi nella stessa cartella bin e scrivere
rotctl.exe -m 2 -r localhost:4533
premere invio
Provare questi comandi uno alla volta:
P 180 90Questo dovrebbe mettere l’azimut al centro.
Poi:
P 90 90Il servo azimut dovrebbe muoversi da una parte.
Poi:
P 270 90Dovrebbe muoversi dall’altra parte.
Per leggere la posizione:
pIl primo numero è azimut, il secondo è elevazione.
Collegamento servo elevazione
Il secondo servo ha gli stessi fili:
Filo servo elevazione Collegamento Giallo Arduino D10 Rosso +5 V alimentatore Marrone GND / negativo alimentatore 5 V Schema:
Arduino D10 → filo giallo servo elevazione +5 V alimentatore → filo rosso servo elevazione -5 V alimentatore → filo marrone servo elevazioneIl GND Arduino deve restare collegato al negativo dell’alimentatore 5 V, come già collegato.
Accendere l'alimentatore 5v
Aprire un prompt di Hamlib in Program files o Programmi
scrivere: cd "C:\Program Files\hamlib-w64-4.7.1\bin"
scrivere(attenzione a inserire il numero giusto della porta COM, in questo caso ho inserito 4, ma dipende dalla configurazione in Arduino): rotctl.exe -m 202 -r COM4 -s 9600
Portiamo i due servo in posizione centrale
scrivere P maiuscola e premere invio
inserire i valori
Azimut 180 (premere invio)
Elevazione 90 (premere invio)
Provare l'azimut
scrivere P maiuscola e premere invio
inserire i valori
Azimut 90 (premere invio)
Elevazione 90 (premere invio)
si deve muovere solo il servo azimut
Provare l'azimut lato opposto
scrivere P maiuscola e premere invio
inserire i valori
Azimut 270 (premere invio)
Elevazione 90 (premere invio)
si deve muovere solo il servo azimut in senso opposto
Posizionare al centro l'azimut
scrivere P maiuscola e premere invio
inserire i valori
Azimut 180 (premere invio)
Elevazione 90 (premere invio)
il servo azimut si posiziona al centro
Provare l'elevazione
scrivere P maiuscola e premere invio
inserire i valori
Azimut 180 (premere invio)
Elevazione 45 (premere invio)
il servo elevazione si deve muovere di 45°
Provare l'elevazione lato opposto
scrivere P maiuscola e premere invio
inserire i valori
Azimut 180 (premere invio)
Elevazione 135 (premere invio)
si deve muovere solo il servo elevazione in senso opposto
Riportare l'elevazione al centro
scrivere P maiuscola e premere invio
inserire i valori
Azimut 180 (premere invio)
Elevazione 90 (premere invio)
il servo elevazione è al centro così come il servo azimut
Collegare Gpredict a rotctld
Chiudere tutte le finestre di prompt (cmd)Aprire un solo Prompt e scrivere
cd "C:\Program Files\hamlib-w64-4.7.1\bin"Poi:
rotctld.exe -m 202 -r COM3 -s 9600 -t 4533 -ve premere InvioDeve restare aperto con:
Opened rot model 202, 'EasycommII'
Scaricare e installare la release aggiornata di Gpredict.eseguire l'exe
in Gpredict dal menu in alto cliccare:
Edit → Preferencescercare nella finestra delle preferenze una sezione chiamata:
Interfacese poi
RotatorsDentro devi trovare la configurazione dei rotators.
Aggiungere il rotore
In basso ci sono i pulsanti Add, Edit, Delete
Cliccare Add / Add New. Gpredict usa questo percorso: Edit → Preferences → Interfaces → Rotators → Add New.
Campo Valore Name Arduino AZ-EL Host localhost Port 4533 Min Az 0 Max Az 360 Min El 0 Max El 90 Salvare con OK / Apply.
Chiudere anche la finestra Preferences.ùLasciare aperto il Prompt con:
Prima di usare il tracking occorre impostare la propria Ground Station, altrimenti Gpredict calcolerà i satelliti da Copenhagen, Denmark
Quindi:Edit → Preferences → GeneralGround Stationscompletare i campi
Confermare con OK, chiudere e riaprire Gpredict.
Aggiornare i TLE (Two-Line Element) sono i dati orbitali aggiornati dei satelliti.
Edit → Update TLE data from networkPoi:Edit → Update transponder dataDopo l’aggiornamento, Gpredict userà i dati satellitari aggiornati dalla posizione salvata.Calibrazione meccanica della direzione.
Gpredict usa questo riferimento:
Azimut Direzione 0° Nord 90° Est 180° Sud 270° Ovest Nel nostro sistema il centro dell’azimut è:
Azimuth: 180Quindi, accendere l'alimentazione 5v, aprire un solo Prompt e scrivere:
cd "C:\Program Files\hamlib-w64-4.7.1\bin"Poi:
rotctl.exe -m 202 -r COM3 -s 9600Quando compare:
Rotator command:scrivere:
PPoi:
Azimuth: 180
Elevation: 90Così si porta il rotore al centro, nel caso in cui fosse spostato. Se i servo non si muovono è perché sono già nella posizione giusta.
Ruotare fisicamente tutta la base del rotore in modo che l’antenna punti verso Sud e fissare la base in modo che non si muova.
Poi:
P Azimuth: 90 Elevation: 90L’antenna deve andare verso Est.P Azimuth: 270 Elevation: 90L’antenna deve andare verso Ovest.A questo punto la calibrazione base AZ/EL è corretta.
Azimuth: 180
Elevation: 90Rotore è in centro.
Premere q
Poi scollegare Arduino dalla USB per evitare errori di memoria e ricollegare Arduino alla USB
rotctld.exe -m 202 -r COM3 -s 9600 -t 4533 -vDeve restare aperto con:Opened rot model 202, 'EasycommII'Aprire Gpredict. Aprire Antenna Control.Selezionare Arduino_UNO. Selezionare un satellite con Elevation positiva. Premi Engage. Poi premi Track. Se il rotore si muove verso la posizione del satellite, il collegamento Gpredict → rotctld → Arduino → servi funziona.
...continua domani...
| Evaluate |