SlideShare a Scribd company logo
1 of 14
Download to read offline
Textul si imaginile din acest document sunt licentiate
Attribution-NonCommercial-NoDerivs
CC BY-NC-ND
Codul sursa din acest document este licentiat
Public-Domain
Esti liber sa distribui acest document prin orice mijloace consideri (email, publicare pe website /
blog, printare, sau orice alt mijloc), atat timp cat nu aduci nici un fel de modificari acestuia. Codul
sursa din acest document poate fi utilizat in orice fel de scop, de natura comerciala sau nu, fara
nici un fel de limitari.
Cum se controleaza sensul de rotatie al unui motor prin Wi-Fi
In acest tutorial vei descoperi cum se poate controla sensul de rotatie al
unui motor de curent continuu, utilizand un Arduino WiFi Shield si un Driver de
motoare L298. Tutorialul poate fi un punct de start foarte bun atunci cand vrei
sa realizezi un robot pe care sa il comanzi de la distanta sau vrei sa controlezi
alte dispozitive prin WiFi.
Comanda motorului se va realiza prin reteaua locala, mai exact prin
protocolul UDP. Te vei folosi de tastatura calculatorului pentru a transmite 3
comenzi catre placa Arduino. Comenzile sau tastele apasate vor fi preluate
printr-o aplicatie scrisa in Processing.
Vei avea nevoie de urmatoarele componente:
• O placa Arduino - http://www.robofun.ro/arduino
• Arduino Wifi Shield - http://www.robofun.ro/arduino_wifi_shield
• Driver Motoare L298 versiunea 2:
http://www.robofun.ro/mecanice/driver/shield-motoare-l298-v2
• Un motor compatibil cu Driver-ul L298:
http://www.robofun.ro/mecanice/motoare
• Alimentator extern Arduino 9V @ 1A:
http://www.robofun.ro/surse_de_alimentare/alimentatoare/alimentator-
extern-arduino-9V
http://www.robofun.ro/forum
Cum se asambleaza ?
Asamblarea celor 3 placi este foarte simpla:
http://www.robofun.ro/forum
1. Shield-ul Arduino Wifi se infige in placa Arduino.
2. Shield-ul L298 se infige in pinii shield-ului WiFi.
http://www.robofun.ro/forum
http://www.robofun.ro/forum
3. Cele 2 fire ale motorului de curent continuu se infig in conectorul
MOTOR1 si se fixeaza ferm prin strangerea suruburilor.
http://www.robofun.ro/forum
4. Se conecteaza cablul USB si alimentatorul extern de 9V.
Codul sursa Arduino.
Urmatorul pas este sa incarci in placa Arduino sketch-ul de mai jos. Dupa
ce ai copiat codul in mediul Arduino, urmeaza sa modifici cateva linii de cod si
anume:
char ssid[] = "default"; // your network SSID (name)
char pass[] = "password"; // your network password (use for WPA,
or use as key for WEP)
Valoarea „default“ reprezinta SSID-ul routerului wireless. Modifica
aceasta valoare conform routerului tau.
Valoarea password reprezinta parola routerului wireless. Modifica aceasta
valoare conform parolei routerului tau.
http://www.robofun.ro/forum
#include <SPI.h>
#include <WiFi.h>
#include <WiFiUdp.h>
int status = WL_IDLE_STATUS;
char ssid[] = "default"; // your network SSID (name)
char pass[] = "password"; // your network password (use for WPA,
or use as key for WEP)
int keyIndex = 0; // your network key Index number
(needed only for WEP)
unsigned int localPort = 2390; // local port to listen on
char packetBuffer[255]; //buffer to hold incoming packet
WiFiUDP Udp;
int MOTOR1_PIN1 = 6;
int MOTOR1_PIN2 = 9;
int MOTOR2_PIN1 = 3;
int MOTOR2_PIN2 = 5;
void setup(){
pinMode(MOTOR1_PIN1, OUTPUT);
pinMode(MOTOR1_PIN2, OUTPUT);
pinMode(MOTOR2_PIN1, OUTPUT);
pinMode(MOTOR2_PIN2, OUTPUT);
http://www.robofun.ro/forum
go(255,-255);
delay(2000);
go(-255,255);
delay(2000);
go(0,0);
Serial.begin(9600);
//UDP Configuration
// check for the presence of the shield:
if (WiFi.status() == WL_NO_SHIELD) {
Serial.println("WiFi shield not present");
// don't continue:
while(true);
}
// attempt to connect to Wifi network:
while ( status != WL_CONNECTED) {
Serial.print("Attempting to connect to SSID: ");
Serial.println(ssid);
// Connect to WPA/WPA2 network. Change this line if using open
or WEP network:
status = WiFi.begin(ssid,pass);
// wait 10 seconds for connection:
delay(10000);
}
Serial.println("Connected to wifi");
printWifiStatus();
http://www.robofun.ro/forum
Serial.println("nStarting connection to server...");
// if you get a connection, report back via serial:
Udp.begin(localPort);
}
void loop() {
// if there's data available, read a packet
int packetSize = Udp.parsePacket();
if(packetSize)
{
Serial.print("Received packet of size ");
Serial.println(packetSize);
Serial.print("From ");
IPAddress remoteIp = Udp.remoteIP();
Serial.print(remoteIp);
Serial.print(", port ");
Serial.println(Udp.remotePort());
// read the packet into packetBufffer
int len = Udp.read(packetBuffer,255);
if (strcmp(packetBuffer,"1") == 0) {
go(255,-255);
} else if (strcmp(packetBuffer,"2") == 0) {
go(-255,255);
} else if (strcmp(packetBuffer,"3") == 0) {
go(0,0);
}
if (len >0) packetBuffer[len]=0;
Serial.println("Contents:");
Serial.println(packetBuffer);
}
}
void printWifiStatus() {
// print the SSID of the network you're attached to:
Serial.print("SSID: ");
Serial.println(WiFi.SSID());
// print your WiFi shield's IP address:
IPAddress ip = WiFi.localIP();
Serial.print("IP Address: ");
Serial.println(ip);
// print the received signal strength:
long rssi = WiFi.RSSI();
Serial.print("signal strength (RSSI):");
Serial.print(rssi);
http://www.robofun.ro/forum
Serial.println(" dBm");
}
void go(int speedLeft, int speedRight) {
if (speedLeft > 0) {
analogWrite(MOTOR1_PIN1, speedLeft);
analogWrite(MOTOR1_PIN2, 0);
}
else {
analogWrite(MOTOR1_PIN1, 0);
analogWrite(MOTOR1_PIN2, -speedLeft);
}
if (speedRight > 0) {
analogWrite(MOTOR2_PIN1, speedRight);
analogWrite(MOTOR2_PIN2, 0);
}
else {
analogWrite(MOTOR2_PIN1, 0);
analogWrite(MOTOR2_PIN2, -speedRight);
}
}
Aplicatia Processing.
Urmatorul pas este sa descarci, sa instalezi si sa pornesti mediul
Processing de la adresa: http://processing.org/ . Codul sursa care comanda
motorul de curent continuu este listat mai jos.
Dupa ce ai copiat codul sursa, modifica urmatoarea linie cu IP-ul placii
Arduino. Acesta il vei afla din Monitorul Serial ca in imaginea de mai jos:
String ip = "192.168.2.101"; // remote ip address
http://www.robofun.ro/forum
http://www.robofun.ro/forum
import hypermedia.net.*;
UDP udp; // define the UDP object
void setup() {
udp = new UDP( this, 6000 ); // create a new datagram connection
on port 6000
//udp.log( true ); // <-- printout the connection activity
udp.listen( true ); // and wait for incoming message
}
void draw()
{
}
void keyPressed() {
String ip = "192.168.2.101"; // remote ip address
int port = 2390; // destination port
if (key == CODED) {
if (keyCode == UP) {
udp.send("1", ip, port);
}
else if (keyCode == DOWN) {
udp.send("2", ip, port);
}
}
else if (key == BACKSPACE) {
udp.send("3", ip, port);
}
}
void receive( byte[] data ) { // <-- default handler
//void receive( byte[] data, String ip, int port ) { // <--
extended handler
for (int i=0; i < data.length; i++)
print(char(data[i]));
println();
}
http://www.robofun.ro/forum
Concluzie.
To ce trebuie sa faci acum este sa pornesti aplicatia in Processing si sa
tastezi UP, DOWN si Backspace. Apasand tasta UP motorul se va roti intr-un
sens, apasand tasta DOWN motorul se va roti in sens opus si apasand tasta
Backspace motorul se va opri.
http://www.robofun.ro/forum

More Related Content

Viewers also liked

Curs gratuitarduino lectia2-senzorianalogici
Curs gratuitarduino lectia2-senzorianalogiciCurs gratuitarduino lectia2-senzorianalogici
Curs gratuitarduino lectia2-senzorianalogiciIulius Bors
 
Curs gratuitarduino lectia15-seismografcuexcel
Curs gratuitarduino lectia15-seismografcuexcelCurs gratuitarduino lectia15-seismografcuexcel
Curs gratuitarduino lectia15-seismografcuexcelIulius Bors
 
Raspberry piuln2803
Raspberry piuln2803Raspberry piuln2803
Raspberry piuln2803Iulius Bors
 
Curs gratuitarduino lectia9-senzoriatmosferici
Curs gratuitarduino lectia9-senzoriatmosfericiCurs gratuitarduino lectia9-senzoriatmosferici
Curs gratuitarduino lectia9-senzoriatmosfericiIulius Bors
 
Curs gratuitarduino lectia3-proiectesimple-1
Curs gratuitarduino lectia3-proiectesimple-1Curs gratuitarduino lectia3-proiectesimple-1
Curs gratuitarduino lectia3-proiectesimple-1Iulius Bors
 
Curs gratuitarduino lectia1-arduinoblink
Curs gratuitarduino lectia1-arduinoblinkCurs gratuitarduino lectia1-arduinoblink
Curs gratuitarduino lectia1-arduinoblinkIulius Bors
 
Curs gratuitarduino lectia5-accelerometre
Curs gratuitarduino lectia5-accelerometreCurs gratuitarduino lectia5-accelerometre
Curs gratuitarduino lectia5-accelerometreIulius Bors
 
Conector bluetoothmatesilver arduino-pc
Conector bluetoothmatesilver arduino-pcConector bluetoothmatesilver arduino-pc
Conector bluetoothmatesilver arduino-pcIulius Bors
 
Curs gratuitarduino lectia6-senzoriforta
Curs gratuitarduino lectia6-senzorifortaCurs gratuitarduino lectia6-senzoriforta
Curs gratuitarduino lectia6-senzorifortaIulius Bors
 
Cum instaleziapachesimysql peraspberrypi
Cum instaleziapachesimysql peraspberrypiCum instaleziapachesimysql peraspberrypi
Cum instaleziapachesimysql peraspberrypiIulius Bors
 
Arduino flexsensorbrickbionicfinger
Arduino flexsensorbrickbionicfingerArduino flexsensorbrickbionicfinger
Arduino flexsensorbrickbionicfingerIulius Bors
 
Asamblare statie meteo
Asamblare statie meteoAsamblare statie meteo
Asamblare statie meteoIulius Bors
 
Arduino matriceled8x8
Arduino matriceled8x8Arduino matriceled8x8
Arduino matriceled8x8Iulius Bors
 
Arduino yun arduino-wifi-ethernet-linux
Arduino yun arduino-wifi-ethernet-linuxArduino yun arduino-wifi-ethernet-linux
Arduino yun arduino-wifi-ethernet-linuxIulius Bors
 
Raspberry pi firmata - arduino
Raspberry pi   firmata - arduinoRaspberry pi   firmata - arduino
Raspberry pi firmata - arduinoIulius Bors
 
Raspberry pi lcd-shield20x4
Raspberry pi lcd-shield20x4Raspberry pi lcd-shield20x4
Raspberry pi lcd-shield20x4Iulius Bors
 
Arduino releemodio2
Arduino releemodio2Arduino releemodio2
Arduino releemodio2Iulius Bors
 
Programare in prolog_pentru_inteligenta_artificiala
Programare in prolog_pentru_inteligenta_artificialaProgramare in prolog_pentru_inteligenta_artificiala
Programare in prolog_pentru_inteligenta_artificialaIulius Bors
 

Viewers also liked (20)

Curs gratuitarduino lectia2-senzorianalogici
Curs gratuitarduino lectia2-senzorianalogiciCurs gratuitarduino lectia2-senzorianalogici
Curs gratuitarduino lectia2-senzorianalogici
 
Curs gratuitarduino lectia15-seismografcuexcel
Curs gratuitarduino lectia15-seismografcuexcelCurs gratuitarduino lectia15-seismografcuexcel
Curs gratuitarduino lectia15-seismografcuexcel
 
Raspberry piuln2803
Raspberry piuln2803Raspberry piuln2803
Raspberry piuln2803
 
Curs gratuitarduino lectia9-senzoriatmosferici
Curs gratuitarduino lectia9-senzoriatmosfericiCurs gratuitarduino lectia9-senzoriatmosferici
Curs gratuitarduino lectia9-senzoriatmosferici
 
Curs gratuitarduino lectia3-proiectesimple-1
Curs gratuitarduino lectia3-proiectesimple-1Curs gratuitarduino lectia3-proiectesimple-1
Curs gratuitarduino lectia3-proiectesimple-1
 
Arduino pid
Arduino pidArduino pid
Arduino pid
 
Curs gratuitarduino lectia1-arduinoblink
Curs gratuitarduino lectia1-arduinoblinkCurs gratuitarduino lectia1-arduinoblink
Curs gratuitarduino lectia1-arduinoblink
 
Curs gratuitarduino lectia5-accelerometre
Curs gratuitarduino lectia5-accelerometreCurs gratuitarduino lectia5-accelerometre
Curs gratuitarduino lectia5-accelerometre
 
Conector bluetoothmatesilver arduino-pc
Conector bluetoothmatesilver arduino-pcConector bluetoothmatesilver arduino-pc
Conector bluetoothmatesilver arduino-pc
 
Curs gratuitarduino lectia6-senzoriforta
Curs gratuitarduino lectia6-senzorifortaCurs gratuitarduino lectia6-senzoriforta
Curs gratuitarduino lectia6-senzoriforta
 
Cum instaleziapachesimysql peraspberrypi
Cum instaleziapachesimysql peraspberrypiCum instaleziapachesimysql peraspberrypi
Cum instaleziapachesimysql peraspberrypi
 
Arduino flexsensorbrickbionicfinger
Arduino flexsensorbrickbionicfingerArduino flexsensorbrickbionicfinger
Arduino flexsensorbrickbionicfinger
 
Arduino sht11
Arduino sht11Arduino sht11
Arduino sht11
 
Asamblare statie meteo
Asamblare statie meteoAsamblare statie meteo
Asamblare statie meteo
 
Arduino matriceled8x8
Arduino matriceled8x8Arduino matriceled8x8
Arduino matriceled8x8
 
Arduino yun arduino-wifi-ethernet-linux
Arduino yun arduino-wifi-ethernet-linuxArduino yun arduino-wifi-ethernet-linux
Arduino yun arduino-wifi-ethernet-linux
 
Raspberry pi firmata - arduino
Raspberry pi   firmata - arduinoRaspberry pi   firmata - arduino
Raspberry pi firmata - arduino
 
Raspberry pi lcd-shield20x4
Raspberry pi lcd-shield20x4Raspberry pi lcd-shield20x4
Raspberry pi lcd-shield20x4
 
Arduino releemodio2
Arduino releemodio2Arduino releemodio2
Arduino releemodio2
 
Programare in prolog_pentru_inteligenta_artificiala
Programare in prolog_pentru_inteligenta_artificialaProgramare in prolog_pentru_inteligenta_artificiala
Programare in prolog_pentru_inteligenta_artificiala
 

Similar to Arduino wifi shield-drivermotoarel298

Arduino comunicatie i2c
Arduino comunicatie i2cArduino comunicatie i2c
Arduino comunicatie i2cIulius Bors
 
Arduino indicatoare cp-usiram
Arduino indicatoare cp-usiramArduino indicatoare cp-usiram
Arduino indicatoare cp-usiramIulius Bors
 
Raspberry pi wirelesshotspot
Raspberry pi wirelesshotspotRaspberry pi wirelesshotspot
Raspberry pi wirelesshotspotIulius Bors
 
Arduino multiplexarea le-durilor
Arduino multiplexarea le-durilorArduino multiplexarea le-durilor
Arduino multiplexarea le-durilorIulius Bors
 
instalare conectare echipamente Internet TV_ro.pdf
instalare conectare echipamente Internet TV_ro.pdfinstalare conectare echipamente Internet TV_ro.pdf
instalare conectare echipamente Internet TV_ro.pdfMartin585249
 
Smart ax mt882_adsl_router_01
Smart ax mt882_adsl_router_01Smart ax mt882_adsl_router_01
Smart ax mt882_adsl_router_01apashu
 
Arduino uno rfidid-12
Arduino uno rfidid-12Arduino uno rfidid-12
Arduino uno rfidid-12Iulius Bors
 
Arduino comparatorul intern
Arduino comparatorul internArduino comparatorul intern
Arduino comparatorul internIulius Bors
 
Arduino gyro stabilizator
Arduino gyro stabilizatorArduino gyro stabilizator
Arduino gyro stabilizatorIulius Bors
 
Arduino alcoolmetru
Arduino alcoolmetruArduino alcoolmetru
Arduino alcoolmetruIulius Bors
 
Motoare pascupasarduinoeasydriver
Motoare pascupasarduinoeasydriverMotoare pascupasarduinoeasydriver
Motoare pascupasarduinoeasydriverIulius Bors
 
Raspberry pi bmp085blueedition
Raspberry pi bmp085blueeditionRaspberry pi bmp085blueedition
Raspberry pi bmp085blueeditionIulius Bors
 
Adxl345 raspberry pi
Adxl345 raspberry piAdxl345 raspberry pi
Adxl345 raspberry piIulius Bors
 
Curs gratuitarduino lectia12-conexiunewifi-googledocs
Curs gratuitarduino lectia12-conexiunewifi-googledocsCurs gratuitarduino lectia12-conexiunewifi-googledocs
Curs gratuitarduino lectia12-conexiunewifi-googledocsIulius Bors
 
Curs gratuitarduino lectia8-comunicareethernet
Curs gratuitarduino lectia8-comunicareethernetCurs gratuitarduino lectia8-comunicareethernet
Curs gratuitarduino lectia8-comunicareethernetIulius Bors
 
Computer Networks. Internet programming basics
Computer Networks. Internet programming basicsComputer Networks. Internet programming basics
Computer Networks. Internet programming basicsSabin Buraga
 

Similar to Arduino wifi shield-drivermotoarel298 (20)

Arduino comunicatie i2c
Arduino comunicatie i2cArduino comunicatie i2c
Arduino comunicatie i2c
 
Arduino indicatoare cp-usiram
Arduino indicatoare cp-usiramArduino indicatoare cp-usiram
Arduino indicatoare cp-usiram
 
Raspberry pi wirelesshotspot
Raspberry pi wirelesshotspotRaspberry pi wirelesshotspot
Raspberry pi wirelesshotspot
 
Arduino multiplexarea le-durilor
Arduino multiplexarea le-durilorArduino multiplexarea le-durilor
Arduino multiplexarea le-durilor
 
instalare conectare echipamente Internet TV_ro.pdf
instalare conectare echipamente Internet TV_ro.pdfinstalare conectare echipamente Internet TV_ro.pdf
instalare conectare echipamente Internet TV_ro.pdf
 
Smart ax mt882_adsl_router_01
Smart ax mt882_adsl_router_01Smart ax mt882_adsl_router_01
Smart ax mt882_adsl_router_01
 
Arduino uno rfidid-12
Arduino uno rfidid-12Arduino uno rfidid-12
Arduino uno rfidid-12
 
Aiesec University 2012-arduino
Aiesec University 2012-arduinoAiesec University 2012-arduino
Aiesec University 2012-arduino
 
Arduino comparatorul intern
Arduino comparatorul internArduino comparatorul intern
Arduino comparatorul intern
 
Arduino gyro stabilizator
Arduino gyro stabilizatorArduino gyro stabilizator
Arduino gyro stabilizator
 
Arduino alcoolmetru
Arduino alcoolmetruArduino alcoolmetru
Arduino alcoolmetru
 
Motoare pascupasarduinoeasydriver
Motoare pascupasarduinoeasydriverMotoare pascupasarduinoeasydriver
Motoare pascupasarduinoeasydriver
 
Raspberry pi bmp085blueedition
Raspberry pi bmp085blueeditionRaspberry pi bmp085blueedition
Raspberry pi bmp085blueedition
 
Adxl345 raspberry pi
Adxl345 raspberry piAdxl345 raspberry pi
Adxl345 raspberry pi
 
Curs gratuitarduino lectia12-conexiunewifi-googledocs
Curs gratuitarduino lectia12-conexiunewifi-googledocsCurs gratuitarduino lectia12-conexiunewifi-googledocs
Curs gratuitarduino lectia12-conexiunewifi-googledocs
 
Curs gratuitarduino lectia8-comunicareethernet
Curs gratuitarduino lectia8-comunicareethernetCurs gratuitarduino lectia8-comunicareethernet
Curs gratuitarduino lectia8-comunicareethernet
 
Proiect PP
Proiect PPProiect PP
Proiect PP
 
Retea1
Retea1Retea1
Retea1
 
Computer Networks. Internet programming basics
Computer Networks. Internet programming basicsComputer Networks. Internet programming basics
Computer Networks. Internet programming basics
 
Laborator 5
Laborator 5Laborator 5
Laborator 5
 

More from Iulius Bors

Raspberry pi timelapse
Raspberry pi timelapseRaspberry pi timelapse
Raspberry pi timelapseIulius Bors
 
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...Iulius Bors
 
Curs gratuitarduino lectia13-mousesitastatura
Curs gratuitarduino lectia13-mousesitastaturaCurs gratuitarduino lectia13-mousesitastatura
Curs gratuitarduino lectia13-mousesitastaturaIulius Bors
 
Curs gratuitarduino lectia11-muzicacuarduino
Curs gratuitarduino lectia11-muzicacuarduinoCurs gratuitarduino lectia11-muzicacuarduino
Curs gratuitarduino lectia11-muzicacuarduinoIulius Bors
 
Curs gratuitarduino lectia10-lcd-uri
Curs gratuitarduino lectia10-lcd-uriCurs gratuitarduino lectia10-lcd-uri
Curs gratuitarduino lectia10-lcd-uriIulius Bors
 
Curs gratuitarduino lectia7-senzoridistanta
Curs gratuitarduino lectia7-senzoridistantaCurs gratuitarduino lectia7-senzoridistanta
Curs gratuitarduino lectia7-senzoridistantaIulius Bors
 
Arduino yala electronicabazatapecodsecret
Arduino yala electronicabazatapecodsecretArduino yala electronicabazatapecodsecret
Arduino yala electronicabazatapecodsecretIulius Bors
 

More from Iulius Bors (7)

Raspberry pi timelapse
Raspberry pi timelapseRaspberry pi timelapse
Raspberry pi timelapse
 
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...
 
Curs gratuitarduino lectia13-mousesitastatura
Curs gratuitarduino lectia13-mousesitastaturaCurs gratuitarduino lectia13-mousesitastatura
Curs gratuitarduino lectia13-mousesitastatura
 
Curs gratuitarduino lectia11-muzicacuarduino
Curs gratuitarduino lectia11-muzicacuarduinoCurs gratuitarduino lectia11-muzicacuarduino
Curs gratuitarduino lectia11-muzicacuarduino
 
Curs gratuitarduino lectia10-lcd-uri
Curs gratuitarduino lectia10-lcd-uriCurs gratuitarduino lectia10-lcd-uri
Curs gratuitarduino lectia10-lcd-uri
 
Curs gratuitarduino lectia7-senzoridistanta
Curs gratuitarduino lectia7-senzoridistantaCurs gratuitarduino lectia7-senzoridistanta
Curs gratuitarduino lectia7-senzoridistanta
 
Arduino yala electronicabazatapecodsecret
Arduino yala electronicabazatapecodsecretArduino yala electronicabazatapecodsecret
Arduino yala electronicabazatapecodsecret
 

Arduino wifi shield-drivermotoarel298

  • 1. Textul si imaginile din acest document sunt licentiate Attribution-NonCommercial-NoDerivs CC BY-NC-ND Codul sursa din acest document este licentiat Public-Domain Esti liber sa distribui acest document prin orice mijloace consideri (email, publicare pe website / blog, printare, sau orice alt mijloc), atat timp cat nu aduci nici un fel de modificari acestuia. Codul sursa din acest document poate fi utilizat in orice fel de scop, de natura comerciala sau nu, fara nici un fel de limitari.
  • 2. Cum se controleaza sensul de rotatie al unui motor prin Wi-Fi In acest tutorial vei descoperi cum se poate controla sensul de rotatie al unui motor de curent continuu, utilizand un Arduino WiFi Shield si un Driver de motoare L298. Tutorialul poate fi un punct de start foarte bun atunci cand vrei sa realizezi un robot pe care sa il comanzi de la distanta sau vrei sa controlezi alte dispozitive prin WiFi. Comanda motorului se va realiza prin reteaua locala, mai exact prin protocolul UDP. Te vei folosi de tastatura calculatorului pentru a transmite 3 comenzi catre placa Arduino. Comenzile sau tastele apasate vor fi preluate printr-o aplicatie scrisa in Processing. Vei avea nevoie de urmatoarele componente: • O placa Arduino - http://www.robofun.ro/arduino • Arduino Wifi Shield - http://www.robofun.ro/arduino_wifi_shield • Driver Motoare L298 versiunea 2: http://www.robofun.ro/mecanice/driver/shield-motoare-l298-v2 • Un motor compatibil cu Driver-ul L298: http://www.robofun.ro/mecanice/motoare • Alimentator extern Arduino 9V @ 1A: http://www.robofun.ro/surse_de_alimentare/alimentatoare/alimentator- extern-arduino-9V http://www.robofun.ro/forum
  • 3. Cum se asambleaza ? Asamblarea celor 3 placi este foarte simpla: http://www.robofun.ro/forum
  • 4. 1. Shield-ul Arduino Wifi se infige in placa Arduino. 2. Shield-ul L298 se infige in pinii shield-ului WiFi. http://www.robofun.ro/forum
  • 6. 3. Cele 2 fire ale motorului de curent continuu se infig in conectorul MOTOR1 si se fixeaza ferm prin strangerea suruburilor. http://www.robofun.ro/forum
  • 7. 4. Se conecteaza cablul USB si alimentatorul extern de 9V. Codul sursa Arduino. Urmatorul pas este sa incarci in placa Arduino sketch-ul de mai jos. Dupa ce ai copiat codul in mediul Arduino, urmeaza sa modifici cateva linii de cod si anume: char ssid[] = "default"; // your network SSID (name) char pass[] = "password"; // your network password (use for WPA, or use as key for WEP) Valoarea „default“ reprezinta SSID-ul routerului wireless. Modifica aceasta valoare conform routerului tau. Valoarea password reprezinta parola routerului wireless. Modifica aceasta valoare conform parolei routerului tau. http://www.robofun.ro/forum
  • 8. #include <SPI.h> #include <WiFi.h> #include <WiFiUdp.h> int status = WL_IDLE_STATUS; char ssid[] = "default"; // your network SSID (name) char pass[] = "password"; // your network password (use for WPA, or use as key for WEP) int keyIndex = 0; // your network key Index number (needed only for WEP) unsigned int localPort = 2390; // local port to listen on char packetBuffer[255]; //buffer to hold incoming packet WiFiUDP Udp; int MOTOR1_PIN1 = 6; int MOTOR1_PIN2 = 9; int MOTOR2_PIN1 = 3; int MOTOR2_PIN2 = 5; void setup(){ pinMode(MOTOR1_PIN1, OUTPUT); pinMode(MOTOR1_PIN2, OUTPUT); pinMode(MOTOR2_PIN1, OUTPUT); pinMode(MOTOR2_PIN2, OUTPUT); http://www.robofun.ro/forum
  • 9. go(255,-255); delay(2000); go(-255,255); delay(2000); go(0,0); Serial.begin(9600); //UDP Configuration // check for the presence of the shield: if (WiFi.status() == WL_NO_SHIELD) { Serial.println("WiFi shield not present"); // don't continue: while(true); } // attempt to connect to Wifi network: while ( status != WL_CONNECTED) { Serial.print("Attempting to connect to SSID: "); Serial.println(ssid); // Connect to WPA/WPA2 network. Change this line if using open or WEP network: status = WiFi.begin(ssid,pass); // wait 10 seconds for connection: delay(10000); } Serial.println("Connected to wifi"); printWifiStatus(); http://www.robofun.ro/forum
  • 10. Serial.println("nStarting connection to server..."); // if you get a connection, report back via serial: Udp.begin(localPort); } void loop() { // if there's data available, read a packet int packetSize = Udp.parsePacket(); if(packetSize) { Serial.print("Received packet of size "); Serial.println(packetSize); Serial.print("From "); IPAddress remoteIp = Udp.remoteIP(); Serial.print(remoteIp); Serial.print(", port "); Serial.println(Udp.remotePort()); // read the packet into packetBufffer int len = Udp.read(packetBuffer,255); if (strcmp(packetBuffer,"1") == 0) { go(255,-255); } else if (strcmp(packetBuffer,"2") == 0) { go(-255,255); } else if (strcmp(packetBuffer,"3") == 0) { go(0,0); } if (len >0) packetBuffer[len]=0; Serial.println("Contents:"); Serial.println(packetBuffer); } } void printWifiStatus() { // print the SSID of the network you're attached to: Serial.print("SSID: "); Serial.println(WiFi.SSID()); // print your WiFi shield's IP address: IPAddress ip = WiFi.localIP(); Serial.print("IP Address: "); Serial.println(ip); // print the received signal strength: long rssi = WiFi.RSSI(); Serial.print("signal strength (RSSI):"); Serial.print(rssi); http://www.robofun.ro/forum
  • 11. Serial.println(" dBm"); } void go(int speedLeft, int speedRight) { if (speedLeft > 0) { analogWrite(MOTOR1_PIN1, speedLeft); analogWrite(MOTOR1_PIN2, 0); } else { analogWrite(MOTOR1_PIN1, 0); analogWrite(MOTOR1_PIN2, -speedLeft); } if (speedRight > 0) { analogWrite(MOTOR2_PIN1, speedRight); analogWrite(MOTOR2_PIN2, 0); } else { analogWrite(MOTOR2_PIN1, 0); analogWrite(MOTOR2_PIN2, -speedRight); } } Aplicatia Processing. Urmatorul pas este sa descarci, sa instalezi si sa pornesti mediul Processing de la adresa: http://processing.org/ . Codul sursa care comanda motorul de curent continuu este listat mai jos. Dupa ce ai copiat codul sursa, modifica urmatoarea linie cu IP-ul placii Arduino. Acesta il vei afla din Monitorul Serial ca in imaginea de mai jos: String ip = "192.168.2.101"; // remote ip address http://www.robofun.ro/forum
  • 13. import hypermedia.net.*; UDP udp; // define the UDP object void setup() { udp = new UDP( this, 6000 ); // create a new datagram connection on port 6000 //udp.log( true ); // <-- printout the connection activity udp.listen( true ); // and wait for incoming message } void draw() { } void keyPressed() { String ip = "192.168.2.101"; // remote ip address int port = 2390; // destination port if (key == CODED) { if (keyCode == UP) { udp.send("1", ip, port); } else if (keyCode == DOWN) { udp.send("2", ip, port); } } else if (key == BACKSPACE) { udp.send("3", ip, port); } } void receive( byte[] data ) { // <-- default handler //void receive( byte[] data, String ip, int port ) { // <-- extended handler for (int i=0; i < data.length; i++) print(char(data[i])); println(); } http://www.robofun.ro/forum
  • 14. Concluzie. To ce trebuie sa faci acum este sa pornesti aplicatia in Processing si sa tastezi UP, DOWN si Backspace. Apasand tasta UP motorul se va roti intr-un sens, apasand tasta DOWN motorul se va roti in sens opus si apasand tasta Backspace motorul se va opri. http://www.robofun.ro/forum