| "Descrizione" by Al222 (24891 pt) | 2026-May-23 21:37 |
Progetto rotore Az/El per tracking satelliti con Azimut 360° reali
Parte 2 - azimut
In questa Parte 2 facciamo funzionare un servo a 360° effettivi e nella Parte 3 monteremo il servo elevazione.
Qui dobbiamo utilizzare il software Arduino IDE già caricato nella Parte 1 in C:\Programmi
Tabella costi indicativi
| Componente | Arduino |
|---|---|
| Scheda principale | Arduino Mega circa €53 |
| Servo Waveshare ST3215-HS 360° | €35 |
| Servo RDS51150 150 kg Digital Metal Robot Servo 180° | €55 se 150 kg sono troppi, cercare alternativa |
| Waveshare Serial Bus Servo Driver Board | 12 € |
| Connettori Dupont | 10–20 € |
| Alimentatore 12 V 2 A | + 10-25 € |
| Totale | circa €175 |


+ un po' di connettori Dupont maschio/maschio e femmina/femmina per i collegamenti
Conviene prendere il pacco da 40, costa 5/6 euro.

![]() | ![]() |
Collegamenti di base:
Scheda Waveshare → alimentatore 12 V 3 A → tutti e due i ponticelli gialli in A come da foto sopra
Arduino Mega → USB del PC
GND scheda Waveshare → GND Arduino Mega
Collegare il servo ST3215-HS alla scheda Waveshare col cavo fornito con la scheda

D = dati servo
V = positivo alimentazione servo
G = massa / negativo
A scheda ancora spenta, collegare l’alimentatore 12 V tramite connettore jack
Collegare GND tra Waveshare e Arduino Mega
A scheda ancora spenta con un cavo Dupont maschio-femmina.
GND scheda Waveshare → GND Arduino Mega
Con schede ancora spente, collegare, con cavi Dupont maschio-femmina.
TX Waveshare → TX1 Arduino Mega, pin 18 RX Waveshare → RX1 Arduino Mega, pin 19
Primo test alimentazione
Controllare:
ST3215-HS → connettore D V G Waveshare TX → Arduino Mega pin 18 Waveshare RX → Arduino Mega pin 19 Waveshare GND → Arduino Mega GND Ponticelli → A / A
Ora alimentare:
Arduino Mega → USB del PC Scheda Waveshare → alimentatore 12 V
Scheda Waveshare: LED acceso
Arduino Mega: LED acceso + LED lampeggiante
Servo ST3215-HS: fermo/inattivo
Installare la libreria Arduino
Per comandare lo ST3215-HS serve la libreria:
SCServo
Scaricarla dalla pagina Waveshare dello ST3215 (https://files.waveshare.com/upload/d/d8/ST_Servo.zip)
Installazione della libreria SCServo
Aprire il programma Arduino IDE dall’icona sul desktop o dal menu Start.
Andare in:
File → Preferences
Nella riga:
Sketchbook location
impostare la cartella principale degli sketch, ad esempio:
C:\Users\alber\Documenti\Arduino
Attenzione: non bisogna indicare direttamente la cartella libraries.
In Esplora file di Windows, aprire la cartella indicata in Sketchbook location e creare al suo interno la sottocartella:
libraries
Poi copiare dentro la cartella della libreria:
SCServo
Il percorso finale corretto deve essere:
C:\Users\tuo nome\Documenti\Arduino\libraries\SCServo
Dentro la cartella SCServo devono essere presenti direttamente i file della libreria, ad esempio:
SCServo.h SMS_STS.h SMS_STS.cpp
Infine chiudere e riaprire il programma Arduino IDE.
Per installare Arduino Mega su una porta COM
Scollegare il cavo USB di Arduino Mega
Scaricare il driver ufficiale
https://www.wch-ic.com/downloads/ch341ser_exe.htmlÈ il driver ufficiale WCH CH341SER per chip CH340/CH341, compatibile con Windows 10/11.Scaricare CH341SER.EXE
Eseguire il file con doppio clic.
Click su INSTALL
attendere la fine dell'installazione e chiudere la finestra.Ricollegare USB Arduino Mega
In Gestione dispositivi deve comparire sotto:
Porte (COM e LPT)USB-SERIAL CH340 (COMx)
Dopo questo passaggio, nel programma Arduino IDE è possibile selezionare quella porta COM e caricare il codice.
Carichiamo un codice che porta il servo al centro e poi resta fermo.
Cliccare sull'icona di Arduino IDE, cancellare l'eventuale contenuto e inserire questo codice:
#include
SMS_STS st;
const byte SERVO_ID = 1;
void setup() {
Serial1.begin(1000000); // Mega: TX1=18, RX1=19
st.pSerial = &Serial1;
delay(1000);
st.WritePosEx(SERVO_ID, 2048, 1000, 50); // posizione centrale
}
void loop() {
}
Poi nel menu Sketch > Verify > Compile
compare questo messaggio

poi click sulla freccia a destra per effettuare l'upload del programma

e attribuire un nome al programma (nell'esempio il nome era già stato attribuito nella Parte 1).
Alimentare col 12v la scheda Waveshare per calibrare lo zero azimut.
Prima testiamo tutta la rotazione.
Nel programma Arduino IDE, sostituire tutto il codice con questo:
#include
SMS_STS st;
const byte SERVO_ID = 1;
void setup() {
Serial1.begin(1000000); // Mega: TX1=18, RX1=19
st.pSerial = &Serial1;
delay(1000);
st.WritePosEx(SERVO_ID, 0, 800, 50); // circa 0°
delay(3000);
st.WritePosEx(SERVO_ID, 1024, 800, 50); // circa 90°
delay(3000);
st.WritePosEx(SERVO_ID, 2048, 800, 50); // circa 180°
delay(3000);
st.WritePosEx(SERVO_ID, 3072, 800, 50); // circa 270°
delay(3000);
st.WritePosEx(SERVO_ID, 4095, 800, 50); // circa 360°
delay(3000);
st.WritePosEx(SERVO_ID, 2048, 800, 50); // ritorno al centro
}
void loop() {
}
Poi nel programma Arduino IDE
Sketch / Verify / Compile
Se non dà errori, premi:
→ Upload / Carica
Il servo deve fare circa:
0° → 90° → 180° → 270° → 360° → centro
Il test conferma che:
ST3215-HS ruota correttamente su 0–4095 Rotazione 360° funzionante Arduino Mega comunica con la scheda Waveshare Serial1, alimentazione e TX/RX sono corretti
Ora possiamo usarlo come servo azimut.
Riferimento da usare:
0 = AZ 0° / Nord 1024 = AZ 90° / Est 2048 = AZ 180° / Sud 3072 = AZ 270° / Ovest 4095 = AZ 360° / Nord
Prossimo passo: caricare il codice EasyComm con:
ST3215-HS = azimut Servo 25 kg PWM su D10 = elevazione
Codice test azimut da comando seriale
Nel programma Arduino IDE, cancellare tutto e incollare questo codice:
#include SMS_STS st; const byte SERVO_ID = 1; float azDeg = 180.0; int azToPos(float az) { az = constrain(az, 0.0, 360.0); return (int)((az / 360.0) * 4095.0); } void moveAzimuth() { int pos = azToPos(azDeg); st.WritePosEx(SERVO_ID, pos, 1000, 50); } void setup() { Serial.begin(9600); // USB PC Serial.setTimeout(50); Serial1.begin(1000000); // Arduino Mega: TX1=18, RX1=19 st.pSerial = &Serial1; delay(1000); moveAzimuth(); Serial.println("Test azimut ST3215-HS pronto"); Serial.println("Scrivi: AZ 0, AZ 90, AZ 180, AZ 270, AZ 360"); } void loop() { if (Serial.available()) { String line = Serial.readStringUntil('\n'); line.trim(); line.toUpperCase(); if (line.startsWith("AZ")) { azDeg = line.substring(2).toFloat(); moveAzimuth(); Serial.print("AZ = "); Serial.println(azDeg, 1); } } }
Poi nel programma Arduino IDE :
Sketch / Verify / Compila
Se non ci sono errori
→ Upload / Carica
Poi
Tools → Serial Monitor
Oppure premere l’icona lente in alto a destra.
Nel Serial Monitor

impostare:
Baud: 9600 Line ending: Newline
Poi inviare questi comandi, uno alla volta e dopo ogni comando premere Invio
| Comando | Posizione del servo |
| AZ 0 | 0° Nord |
| AZ 90 | 90° Est |
| AZ 180 | 180° Sud |
| AZ 270 | 270° Ovest |
| AZ 360 | 0° Nord |
Segue Parte 3
| Evaluate |