Sommario:

Servocomando wireless: 6 passaggi
Servocomando wireless: 6 passaggi

Video: Servocomando wireless: 6 passaggi

Video: Servocomando wireless: 6 passaggi
Video: Как настроить систему Nighthawk Mesh WiFi 6 от NETGEAR 2024, Novembre
Anonim
Servocomando wireless
Servocomando wireless
Servocomando wireless
Servocomando wireless

Questo progetto controlla la rotazione di un servo in modalità wireless tramite un potenziometro (manopola). La rotazione è vincolata a 180 gradi.

Passaggio 1: componenti

Componenti
Componenti
Componenti
Componenti
Componenti
Componenti

Questo progetto consiste in

  • 2 schede controller Arduino UNO con cavo connettore USB
  • 2 moduli ricetrasmettitore RF nRF24L01 – 2,4 GHz (per assistenza con questi moduli fare riferimento a
  • 2 schede adattatore socket (chip per zaino) per nRF24L01
  • 1 scheda di espansione prototipo ProtoShield 328 compatibile con Arduino opzionale
  • 1 servo
  • 1 potenziometro analogico
  • saldatore e saldatore
  • filo
  • pinze ad ago
  • involucro isolante, ho usato del nastro isolante

Passaggio 2: scheda server

Scheda server
Scheda server

La scheda server è composta da un modulo ricetrasmettitore, la scheda shield (che si collega direttamente alla scheda Arduino in un solo modo) e il servo. Ho deciso di includere la tavola dello scudo per evitare la goffa breadboard e dare al progetto e una finitura complessiva più ordinata.

Il codice e la risorsa web inclusi nell'elenco dei componenti descrivono in dettaglio le connessioni del modulo ricetrasmettitore. Ho deciso di saldare le connessioni invece di utilizzare connessioni temporanee come nei progetti precedenti. Dato che sono un principiante, ho isolato ogni giunto di saldatura con nastro isolante (non erano belli).

I pin della shield board corrispondono direttamente ai pin di Arduino. Prima di collegare la scheda di schermatura, ho collegato i pin di terra e 5 volt alle guide della scheda con filo e saldatura. Ho anche saldato i cavi da 5 volt e di terra dei componenti alle guide della scheda di schermatura, quindi ho finalmente collegato l'Arduino alla scheda di schermatura.

Il servo è collegato al pin 3volt per l'alimentazione e al pin digitale 2 per la comunicazione.

** Nota: solo dopo aver completato questa build ho notato che le mie schede Arduino non sono identiche. Il mio ricetrasmettitore server è alimentato dalla guida a 5 volt sulla scheda shield, mentre il ricetrasmettitore client è alimentato dal pin a 3 volt, anche se sono stato portato a credere che una funzione del chip adattatore sul ricetrasmettitore sia quella di fornire la tensione corretta. Tutto quello che posso dire con certezza è che il codice fornito abbinato alla configurazione mostrata nelle immagini produce l'effetto descritto.

Passaggio 3: codificatore del server: copia e incolla

//CODICE SERVER/* NRF24L01 Arduino CE > D8 CSN > D10 SCK > D13 MO > D11 MI > D12 RO > Non utilizzato GND > GND VCC > 5V */ //Cablaggio ricetrasmettitore

#includere

// libreria servo

#includere

// libreria ricetrasmettitori

#define Servopin 2

//dichiarazione pin di uscita servo

ServoTimer2 serv;

//dichiarazione del nome del servo

RH_NRF24 nrf24;

//dichiarazione del nome del ricetrasmettitore

int timeOUT = 0;

//variabile per servo

int impulsi = 90;

//variabile per memorizzare gli impulsi

configurazione nulla()

{ serv.attach(Servopin); //servo roba

Serial.begin(9600); // roba del ricetrasmettitore

if (!nrf24.init())

Serial.println("inizializzazione fallita"); //cose del monitor seriale if (!nrf24.setChannel(12)) //imposta il canale su 125 Serial.println("setChannel fallito"); if (!nrf24.setRF(RH_NRF24::DataRate2Mbps, RH_NRF24::TransmitPower0dBm)) Serial.println("setRF failed"); // roba del monitor seriale }

ciclo vuoto()

{ if (nrf24.available()) { uint8_t buf[RH_NRF24_MAX_MESSAGE_LEN]; uint8_t len = sizeof(buf); if (nrf24.recv(buf, &len)) //serial monitor stuff { Serial.print("got request: "); impulsi = strtol((const char*)buf, NULL, 10); // modifica del tipo di dati

int prin = map(impulsi, 750, 2250, 0, 180); // modifica del tipo di dati

Serial.println(stampa); serv.write(impulsi); //fa muovere il servo } }

}

Passaggio 4: scheda cliente

Consiglio del cliente
Consiglio del cliente

La scheda client è composta da un modulo ricetrasmettitore e dal potenziometro. Il modulo ricetrasmettitore è cablato allo stesso modo** della scheda server con l'eccezione che senza la scheda shield, è collegato direttamente ai pin della scheda Arduino.

Il potenziometro prende 5v, massa ed è collegato al pin analogico 2.

**Nota: come menzionato nel passaggio della scheda server, le mie schede Arduino non sono identiche. In questo caso il ricetrasmettitore è collegato al pin etichettato 3.3V, direttamente adiacente al pin 5V, ma, ancora una volta, tutto sembra funzionare correttamente.

Passaggio 5: Codice cliente: copia e incolla

//CODICE CLIENT/* NRF24L01 Arduino CE > D8 CSN > D10 SCK > D13 MO > D11 MI > D12 RO > Non utilizzato GND > GND VCC > 5V */ //Cablaggio ricetrasmettitore

#includere

//libreria ricetrasmettitori

int potpin = A2; //dearazione del potenziometro

valore int;

char tempChar[5];

String valString = ""; // modifica del tipo di dati

RH_NRF24 nrf24; // roba del ricetrasmettitore

configurazione nulla()

{ Serial.begin(9600); if (!nrf24.init()) Serial.println("init fallito"); // I valori predefiniti dopo init sono 2,402 GHz (canale 2), 2 Mbps, 0 dBm if (!nrf24.setChannel(12)) Serial.println("setChannel failed"); if (!nrf24.setRF(RH_NRF24::DataRate2Mbps, RH_NRF24::TransmitPower0dBm)) Serial.println("setRF failed"); } // roba del ricetrasmettitore

ciclo vuoto() {

val = analogRead(potpin); //roba del potenziometro

val = map(val, 0, 1023, 750, 2250);

valString = val; Stringa str = (valStringa); str.toCharArray(tempChar, 5); // modifica del tipo di dati nrf24.send(tempChar, sizeof(tempChar));

}

Passaggio 6: una nota sul codice:

Il codice contiene alcune funzionalità limitate di risoluzione dei problemi sotto forma di feedback dal monitor seriale nell'interfaccia del software Arduino. Quando si visualizza il monitor seriale dal codice SERVER (ctrl + shift + M), dovresti essere in grado di vedere lo stato del potenziometro sotto forma di un numero compreso tra 1 e 180.

Inoltre, ecco la libreria per il wireless e il servo:

www.airspayce.com/mikem/arduino/RadioHead/

github.com/nabontra/ServoTimer2

Consigliato: