In offerta!

Micro servo 9g SG90 Motore per modellismo RC elicotteri aerei robotica amatoriale arduino

Il prezzo originale era: 6,46 €.Il prezzo attuale è: 4,00 €. Escluso IVA

Micro servo 9g SG90 Motore per modellismo RC elicotteri aerei robotica amatoriale arduino

32 disponibili (ordinabile)

COD: ARD0090 Categorie: ,

Descrizione


🛠 Descrizione Completa del Micro Servo 9g SG90

Il Micro Servo SG90 9g è un piccolo servo motore utilizzato comunemente in modellismo RC (elicotteri, aerei), robotica amatoriale, progetti con Arduino e automazione fai-da-te. È apprezzato per la sua leggerezza, basso costo e semplicità d’uso.

✅ Caratteristiche Tecniche:

Specifica Valore
Modello SG90 Micro Servo
Peso 9g
Coppia 1.8 kg/cm (a 4.8V)
Tensione operativa 4.8V – 6V
Angolo di rotazione Circa 180° (limitato meccanicamente)
Velocità 0.12 sec/60° (a 4.8V)
Tipo di controllo PWM (modulazione a larghezza d’impulso)
Connettori 3 pin: GND (marrone), VCC (rosso), segnale (arancione)
Materiale ingranaggi Nylon

📦 Contenuto tipico della confezione:

  • 1x Micro Servo SG90
  • 3x Braccetti (horns)
  • 3x Viti

🔌 Collegamento del Micro Servo SG90 con Arduino

Servo Arduino UNO
GND (marrone) GND
VCC (rosso) 5V
Segnale (arancione) Pin digitale (es. D9)

⚠️ Nota: Per più servomotori o carichi pesanti, usa un alimentatore esterno (5V) per evitare di sovraccaricare l’Arduino.


🔧 Libreria Necessaria

Arduino ha una libreria ufficiale chiamata Servo.h che semplifica molto l’uso dei servo.

📦 Installazione (se non già presente):

  • Apri l’IDE Arduino
  • Vai su: Sketch > Include Library > Manage Libraries…
  • Cerca “Servo” e installa quella ufficiale di Arduino

🧪 Esempio di Codice Base

🎯 Obiettivo: Far ruotare il servo da 0° a 180° e ritorno

#include <Servo.h>

Servo mioServo; // Crea un oggetto servo

void setup() {
  mioServo.attach(9); // Collega il servo al pin 9
}

void loop() {
  for (int angolo = 0; angolo <= 180; angolo++) {
    mioServo.write(angolo);      // Imposta l'angolo
    delay(15);                   // Attendi che il servo si muova
  }
  delay(500);
  for (int angolo = 180; angolo >= 0; angolo--) {
    mioServo.write(angolo);
    delay(15);
  }
  delay(500);
}

💡 Esempi Avanzati di Utilizzo

📍 Controllo tramite potenziometro

#include <Servo.h>

Servo mioServo;
int potPin = A0; // Potenziometro collegato ad A0

void setup() {
  mioServo.attach(9);
}

void loop() {
  int lettura = analogRead(potPin);          // Legge il valore (0–1023)
  int angolo = map(lettura, 0, 1023, 0, 180); // Lo converte in gradi
  mioServo.write(angolo);
  delay(10);
}

🎮 Controllo via seriale

#include <Servo.h>

Servo mioServo;

void setup() {
  Serial.begin(9600);
  mioServo.attach(9);
  Serial.println("Inserisci un angolo tra 0 e 180:");
}

void loop() {
  if (Serial.available() > 0) {
    int angolo = Serial.parseInt();
    if (angolo >= 0 && angolo <= 180) {
      mioServo.write(angolo);
      Serial.print("Angolo impostato a: ");
      Serial.println(angolo);
    } else {
      Serial.println("Valore non valido. Inserisci 0-180.");
    }
  }
}

📚 Consigli di Utilizzo

  • Non forzare il servo oltre i suoi limiti meccanici (generalmente 0°–180°).
  • Evita di alimentare più servo direttamente dal 5V di Arduino, usa un alimentatore esterno da 5V/2A per stabilità.
  • I servo SG90 non sono adatti per rotazione continua: se ti serve un motore che ruoti liberamente, considera i servo a rotazione continua o i motoriduttori.

⚙️ Applicazioni Comuni

  • Controllo timone/alettoni su modellini RC
  • Movimento braccia robotiche
  • Serrature elettroniche
  • Meccanismi animatronici
  • Puntamento sensori o camere (pan/tilt)

Perfetto! Espandiamo la guida per includere:

  1. ✅ Controllo Wireless con Bluetooth (HC-05)
  2. ✅ Controllo via Wi-Fi con ESP8266/ESP32
  3. ✅ Controllo di più servo contemporaneamente
  4. ✅ Integrazione con sensori (es. distanza ultrasuoni HC-SR04)

🟦 1. Controllo Wireless con Modulo Bluetooth HC-05

🎯 Obiettivo:

Comandare il servo SG90 via Bluetooth da un’app sullo smartphone (es. app come Serial Bluetooth Terminal su Android).

🔌 Collegamento HC-05:

HC-05 Arduino UNO
VCC 5V
GND GND
TXD Pin 10
RXD Pin 11 (⚠️ con partitore di tensione a 3.3V)

⚠️ Usa un partitore resistivo (1kΩ + 2kΩ) per abbassare il segnale da 5V a 3.3V verso l’RXD del modulo HC-05.

🔧 Codice Arduino con SoftwareSerial:

#include <Servo.h>
#include <SoftwareSerial.h>

Servo mioServo;
SoftwareSerial BT(10, 11); // RX, TX

void setup() {
  mioServo.attach(9);
  BT.begin(9600);
}

void loop() {
  if (BT.available()) {
    int angolo = BT.parseInt();
    if (angolo >= 0 && angolo <= 180) {
      mioServo.write(angolo);
    }
  }
}

🔄 Test: Invia da app mobile un numero tra 0 e 180.


🌐 2. Controllo Servo via Wi-Fi (ESP8266 o ESP32)

⚠️ Se usi ESP8266 o ESP32, NON usare Arduino UNO. I pin sono diversi e il servo va alimentato con cura.

🧠 Esempio con ESP8266 (NodeMCU):

  • Servo → alimentato con fonte esterna 5V e GND condiviso
  • Segnale → collegato a D1 (GPIO 5)

🔧 Codice base per web server che controlla il servo:

#include <ESP8266WiFi.h>
#include <Servo.h>

Servo mioServo;
const char* ssid = "TuaReteWiFi";
const char* password = "PasswordWiFi";

WiFiServer server(80);

void setup() {
  mioServo.attach(D1); // GPIO 5
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
  }
  server.begin();
}

void loop() {
  WiFiClient client = server.available();
  if (client) {
    String req = client.readStringUntil('r');
    client.flush();

    if (req.indexOf("/angle=") != -1) {
      int angolo = req.substring(req.indexOf("=")+1).toInt();
      if (angolo >= 0 && angolo <= 180) {
        mioServo.write(angolo);
      }
    }

    client.println("HTTP/1.1 200 OK");
    client.println("Content-Type: text/html");
    client.println("");
    client.println("<html><body>");
    client.println("<h1>Controllo Servo</h1>");
    client.println("<form>Angolo (0-180): <input type='number' name='angle'><input type='submit'></form>");
    client.println("</body></html>");
  }
}

💻 Vai all’indirizzo IP assegnato (es. 192.168.1.42) nel browser.


⚙️ 3. Controllare Più Servo Contemporaneamente

#include <Servo.h>

Servo servo1, servo2, servo3;

void setup() {
  servo1.attach(9);
  servo2.attach(10);
  servo3.attach(11);
}

void loop() {
  for (int ang = 0; ang <= 180; ang++) {
    servo1.write(ang);
    servo2.write(180 - ang);
    servo3.write(ang / 2);
    delay(15);
  }
}

✅ Ogni Servo viene collegato a un pin diverso. Arduino UNO può gestire fino a 12 servo, ma con limiti di alimentazione!


📏 4. Controllo Servo con Sensore di Distanza HC-SR04

🎯 Obiettivo:

Far muovere il servo in base alla distanza letta dal sensore ultrasuoni.

🔌 Collegamenti:

Sensore HC-SR04 Arduino
VCC 5V
GND GND
Trig D7
Echo D6

🔧 Codice:

#include <Servo.h>

Servo mioServo;
const int trigPin = 7;
const int echoPin = 6;

void setup() {
  Serial.begin(9600);
  mioServo.attach(9);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
}

void loop() {
  // Invio impulso
  digitalWrite(trigPin, LOW); delayMicroseconds(2);
  digitalWrite(trigPin, HIGH); delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  long durata = pulseIn(echoPin, HIGH);
  float distanza = durata * 0.034 / 2;

  int angolo = map(distanza, 5, 100, 0, 180); // Da 5 cm a 100 cm
  angolo = constrain(angolo, 0, 180);

  mioServo.write(angolo);
  delay(100);
}

🔚 Conclusione e Possibili Estensioni

✅ Ora puoi:

  • Controllare il servo via Bluetooth, Wi-Fi o sensori
  • Gestire più servo per robotica o bracci articolati
  • Integrare input da remoto o ambiente (es. distanza, potenziometri)

Perfetto! Approfondiamo i due aspetti per un robot con braccio articolato controllato da servo SG90:


🦾 1. Sincronizzazione dei movimenti servo (Braccio Robotico)

🎯 Obiettivo:

Coordinare più servo (es. spalla, gomito, polso) per far compiere movimenti fluidi e sincronizzati a un braccio robotico.

🎮 Esempio: 3 DOF (gradi di libertà)

🔌 Collegamenti:

Parte del braccio Servo Pin Arduino
Spalla servo1 9
Gomito servo2 10
Polso servo3 11

🔧 Codice sincronizzato:

#include <Servo.h>

Servo servoSpalla;
Servo servoGomito;
Servo servoPolso;

void setup() {
  servoSpalla.attach(9);
  servoGomito.attach(10);
  servoPolso.attach(11);
}

void loop() {
  // Esegui una sequenza sincrona
  for (int ang = 0; ang <= 90; ang++) {
    servoSpalla.write(ang);
    servoGomito.write(90 - ang);
    servoPolso.write(ang / 2);
    delay(20); // Tempo per il movimento fluido
  }

  delay(1000); // Pausa

  for (int ang = 90; ang >= 0; ang--) {
    servoSpalla.write(ang);
    servoGomito.write(90 - ang);
    servoPolso.write(ang / 2);
    delay(20);
  }

  delay(1000);
}

✅ Tutti i servomotori si muovono in modo coordinato e si possono modificare le relazioni per creare movimenti articolati.


💾 2. Memorizzazione delle posizioni servo

🧠 Obiettivo:

Salvare delle “pose” del braccio robotico in memoria (EEPROM) o da inviare via seriale, per poi richiamarle con un comando.


📦 Soluzione 1: Memorizzare in EEPROM (persistente dopo riavvio)

#include <Servo.h>
#include <EEPROM.h>

Servo s1, s2, s3;

void setup() {
  s1.attach(9);
  s2.attach(10);
  s3.attach(11);

  // Carica posizione salvata all'avvio
  int a1 = EEPROM.read(0);
  int a2 = EEPROM.read(1);
  int a3 = EEPROM.read(2);

  s1.write(a1);
  s2.write(a2);
  s3.write(a3);
  delay(1000);
}

void loop() {
  // Sposta braccio in nuova posizione
  s1.write(60);
  s2.write(120);
  s3.write(90);
  delay(2000);

  // Salva questa "pose" nella EEPROM
  EEPROM.write(0, 60);  // s1
  EEPROM.write(1, 120); // s2
  EEPROM.write(2, 90);  // s3

  while (1); // Ferma il loop
}

💾 Quando riavvii Arduino, il braccio tornerà nella posizione salvata.


📦 Soluzione 2: Inviare pose da Serial Monitor e salvarle in RAM

#include <Servo.h>

Servo s1, s2, s3;
int pos[3];

void setup() {
  Serial.begin(9600);
  s1.attach(9);
  s2.attach(10);
  s3.attach(11);

  Serial.println("Invia tre valori separati da virgole (es. 30,90,120):");
}

void loop() {
  if (Serial.available()) {
    String input = Serial.readStringUntil('n');
    input.trim();

    int idx1 = input.indexOf(',');
    int idx2 = input.lastIndexOf(',');

    if (idx1 > 0 && idx2 > idx1) {
      pos[0] = input.substring(0, idx1).toInt();
      pos[1] = input.substring(idx1 + 1, idx2).toInt();
      pos[2] = input.substring(idx2 + 1).toInt();

      s1.write(pos[0]);
      s2.write(pos[1]);
      s3.write(pos[2]);

      Serial.println("Posizione eseguita.");
    } else {
      Serial.println("Formato errato. Usa: ang1,ang2,ang3");
    }
  }
}

📱 Puoi inviare pose da PC o Bluetooth. Esempio: 45,90,135


➕ Estensione Avanzata (Opzionale)

✅ Memorizzare più pose in EEPROM con tasti per richiamarle
✅ Salvare sequenze animate per playback
✅ Interfaccia via web (ESP32) per programmare movimenti da browser
✅ Joystick per controllare il braccio in tempo reale e poi “registrare”


🔚 Conclusione

Con queste soluzioni puoi:

  • Far muovere il braccio come un sistema articolato
  • Memorizzare pose o sequenze personalizzate
  • Integrare con comandi da remoto (Bluetooth, Wi-Fi o seriale)

Tutorial: Come usare Micro Servo SG90

Il micro servo SG90 è un piccolo motore ideale per progetti di robotica e modellismo RC come elicotteri, aerei e automobiline. Con una massa di soli 9g, questo servo è perfetto per i maker principianti che desiderano iniziare con Arduino.

Cosa serve

  • Arduino Uno o compatibile
  • Cavo USB
  • Connessione da 5V
  • Connessione GND
  • Connessione di dati

Passi

  1. Collega il servo SG90 all’Arduino utilizzando i cavi specificati.
  2. Carica lo sketch Arduino fornito per controllare il servo.
  3. Modifica l’angolo del movimento del servo modificando le righe dello sketch.
  4. Testa la rotazione completa del servo da 0° a 180°.

Codice di esempio

void setup() {
  pinMode(9, OUTPUT);
}

void loop() {
  for(int pos = 0; pos <= 180; pos += 1) {
    servos.write(pos);
    delay(15);
  }
}

Mini-progetto

Creare un braccio robotico con due SG90 che si muovono in sincronia per prendere oggetti.

Errori comuni

  • Non verificare la tensione di alimentazione del servo.
  • Collegare il servo senza protezione contro le correnti indotte.
  • Usare un angolo di movimento non conforme alle specifiche del datasheet.
  • Omettere l’installazione della libreria Servo per Arduino.

Accessori consigliati

  • Connettore JST
  • Alimentatore RC 5V-6V
  • Batteria LiPo 3S
  • Carta di protezione contro le correnti indotte

Domande frequenti

Qual è la tensione di alimentazione del servo SG90?
Verifica sul datasheet.

Quanto pesa il servo SG90?
Il peso è di 9g.

Ho bisogno di una libreria speciale per controllare questo servo con Arduino?
Sì, usa la libreria Servo.

Informazioni aggiuntive

Peso 21 g