7. Module și shield-uri
MODULES AND SHIELDS

Introducere:

În sine, Arduino este limitat la un control de intrare și ieșire foarte simplu. Pentru a face ceva mai mult, trebuie să construiți circuite complexe din mai multe componente electronice. Shield-ul și modulele sunt circuite complexe pre-construite concepute pentru a rezolva o anumită sarcină. Acest lucru înseamnă că, în loc să construiți și să vă conectați Arduino la un circuit complicat făcut în casă, puteți să-l atașați la terminalele corespunzătoare de pe aceste plăci și acestea vor face mult pentru dvs. Acest lucru vă permite să extindeți rapid și ușor funcționalitatea microcontroller-ului fără prea multă agitație.

Un shield Arduino este o placă de circuit specială care se conectează în partea superioară a lui Arduino și adaugă o funcționalitate specială. Se numește așa pentru că este un pic cam ca placa ce menține un scut în fața ei ca protecție.

Oamenii fac tot felul de shield-uri pentru a spori capacitățile Arduino. Ele sunt în principiu circuite speciale concepute pentru a face ceva foarte special, și apoi atașate direct la Arduino. Având în vedere că există un număr nesfârșit de circuite pe care le puteți conecta la Arduino, există, de asemenea, shield-uri nenumărate în lume, care au o mare varietate de funcții.

Unul dintre cele mai comune tipuri de shield-uri întâlnite în robotica hobby este shield-ul Motor. Un Motor Shield este un circuit pentru controlul motoarelor care utilizează una sau mai multe punți H, care - așa cum s-a discutat în secțiunea "Robot Brains" - este un tip special de circuit care vă permite să controlați direcția motorului (și, de obicei, și viteza) Acest shield are patru punți H separate, care vă permit să controlați patru motoare DC sau două motoare pas cu pas (sau o combinație a acestora). Shield-ul este, de asemenea, configurat pentru a furniza o sursă de alimentare reglabiă cu curent ridicat (relativ) la două servomotoare.

În acest exemplu, folosesc un Motor Shield Adafruit pentru a controla simplu un singur motor pe canalul 1. Pentru a realiza acest lucru doar conectați un motor DC la bornele etichetate M1 și conectați o sursă de alimentare externă (acumulator) la blocul terminalelor de putere.

Avantajul utilizării unui shield este că îl puteți conecta la o placă de circuit exterioară fără cabluri dezordonate. Se potrivește perfect cu placa Arduino, economisind spațiu. Este, de asemenea, conceput în mod explicit să lucreze cu Arduino, și de multe ori are o bibliotecă asociată cu acesta.

Deoarece shield-urile au tendințe de a avea conexiuni fixe la Arduino și o funcționalitate foarte specifică, adesea au asociate biblioteci cu ele. O bibliotecă este un set de funcții pe care le puteți apela în codul dvs. care vă ajută să efectuați sarcini comune rapid și ușor. De exemplu, în loc să scrieți codul complex Arduino pentru a interfața cu hardware-ul de pe acest Motor Shield pentru a porni motorul, puteți instala doar o bibliotecă și utilizați funcția "run" a motorului.

Acest Motor Shield special vă cere să descărcați și să plasați Adafruit Motor Shield V2 library în folderul Library al software-ului dvs. Dacă nu sunteți sigur cum să instalați o bibliotecă, consultați Clasa Arduino pentru instrucțiuni mai complete.

Odată ce este instalat, reporniți software-ul Arduino și acum veți vedea o schiță numită "DCMotorTest" sub File > Examples > Adafruit Motor Shield V2 Library. Deschideți și rulați această schiță pentru a vedea motorul în acțiune.

Totuși, există compromisuri și pentru utilizarea shield-ului. Dezavantajul este că ar putea lega mai mulți pini de pe Arduino decât ai nevoie prin conectarea unei funcționalități nedorite pe shield. Chiar dacă nu intenționați să folosiți toate aspectele shield-urilor, totdeauna conectați acele părți ale circuitului la Arduino. De exemplu, controlăm un singur motor DC, dar există doi pini conectați prin cablu pentru a controla servomotoarele pe care nu le folosim. Acest lucru este mai puțin decât ideal dacă vrem să conectăm mai multe module și componente la Arduino. Rareori poți stivui diferite tipuri de shield-uri fără ca acești pini să interfereze.

O modalitate ușoară de a rezolva această problemă este de a folosi module externe și de a conecta doar pinii de care aveți nevoie la Arduino.

Modulele, cum ar fi shield-urile, sunt plăci care se conectează la un Arduino și adaugă funcționalități speciale. Diferența cu module este că ele nu sunt specifice Arduino. Nu au nevoie să se cupleze deasupra lui Arduino, dar pot fi conectate la un număr de plăci controller diferite utilizând fir de legătură sau, uneori, pot chiar să ruleze ca dispozitive independente (adică toate ele însele).

Senzorul de mișcare IR și senzorul Ping pe care l-am folosit în lecția senzori anterior sunt ambele exemple de plăci module. Pe măsură ce începeți să lucrați cu robotică, veți întâlni în permanență tot felul de module diferite. La fel ca și în cazul shield-urilor, există nenumărate dintre ele în lume care îndeplinesc mai multe funcții decât vă puteți imagina.

Un tip obișnuit de modul pe care îl puteți utiliza pentru robotică este modulul controller-ului motorului pas cu pas DRV8833 prezentat mai sus. Această placă este în esență doar un controller de motor cu dublă punte H. Asta inseamnă că poate controla viteza și direcția a două motoare DC sau viteza și direcția unui singur motor pas cu pas.

Pentru a interfața cu un motor pas cu pas bipolar (două bobine), fiecare bobină trebuie să fie conectată la una dintre ieșirile de pe modul. Dacă nu vă puteți da seama care este firul, puteți găsi bobinele prin conectare și LED la bobina motorului și rotirea arborelui motorului cu mâna. Dacă LED-ul se aprinde, ați găsit o pereche de fire de bobină. Dacă nu, încercați din nou până când LED-ul se aprinde. Odată ce ați găsit prima bobină, cealaltă pereche de fire ar trebui să fie altă bobină în mod implicit.

Modulul controller servo are pini de intrare, care se conectează la Arduino. Acest lucru se datorează faptului că intrarea de control a modulului primește impulsurile de ieșire de la Arduino. Pinii de ieșire din modul sunt conectați la motor. Fiecare ieșire este o singură punte H și are doi pini. Bobinele servomotorului sunt conectate la fiecare ieșire.

Altfel spus, fiecare bobină din motorul pas cu pas se conectează la o punte-H separată. Modulul procesează comenzile de la Arduino pentru a angaja punțile-H în secvența corectă pentru a mișca motorul. Din fericire, nu este necesar să găsiți secvența potrivită necesară pentru alimentarea bobinelor cu polaritățile corespunzătoare. Biblioteca motorului încorporată în Arduino rezolvă această problemă pentru dvs.

Pentru a vă conecta, efectuați următoarele conexiuni de intrare:

Arduino Pin 4 > AIN1

Arduino Pin 5 > AIN 2

Arduino Pin 6 > BIN1

Arduino Pin 7 > BIN 2

Arduino + 5V > SLP

Pe partea de ieșire, doriți să conectați o pereche de fire de bobine la o pereche de pini de ieșire punte-H. Apoi urmează să se conecteze cealaltă pereche de fire de motor la celălalt ieșire.

În cele din urmă, conectați sursa de alimentare externă (acumulator) la blocul terminal al sursei de alimentare, ținând cont de menținerea unei polarități corespunzătoare.

Pentru a funcționa, trebuie să inițiem biblioteca, să inițiem o instanță a unui motor pas cu pas în cod și apoi să o configurăm pentru a se potrivi cu motorul nostru. Puteți vedea un exemplu aici:

// Include the stepper library.
// This comes default with the Arduino software.

#include <Stepper.h>

// 200 is the number of "steps" it takes the motor to make
// one 360 degree revolution. Change this number to match your
// stepper motor by dividing the step angle into 360.
// In this case, 360/1.8 = 200 steps

#define STEPS 200

// create an instance of the stepper class called "stepper"
// tell "stepper" the number of steps it takes
// the actual motor to make one revolution
// and which pins will be controlling it.

Stepper stepper(STEPS, 4, 5, 6, 7);

void setup()
{
// set the speed of the motor to 100 RPMs
stepper.setSpeed(100);
}

void loop(){

//select a random amount of steps for the motor to take
// between 0 and 500

int randomsteps = random(500);

// Power the motor coils in a clockwise sequence
// to take however many steps selected by randomsteps

stepper.step(randomsteps);
delay(1000);

// Power the motor coils in a counter clockwise sequence
// simply by adding a - symbol

stepper.step(-randomsteps);
delay(1000);

}

Beneficiul folosirii unui modul este acela că puteți alege funcționalitatea dorită de la placă și se conectează numai numărul minim absolut de pini Arduino. De asemenea, deoarece nu trebuie să stea pe Arduino, poate fi mai mic și mai compact. Această dimensiune mică este benefică, deoarece nu numai că ușurează instalarea în interiorul unor carcase restrânse a proiectului, dar menține costurile de producție scăzute. Modulele tind să aibă costuri mai mici decât shield-urile.

Cu toate acestea, poate doriți să mergeți cu un shield, deoarece este posibil mai ușor să interfațați cu el și nu veți ajunge la o dezordine de fire.

Indiferent dacă utilizați un shield sau un modul, cu cât este mai avansat robotul dvs., cu atât este mai puțin probabil ca o singură placă să facă tot ce aveți nevoie. Ambele, shield-uri și module, sunt de obicei destinate rezolvării problemelor comune de bază. Pe măsură ce robotul dvs. începe să evolueze, veți întâlni probleme complexe specifice care depășesc abilitățile acestor plăci.

Dacă nu găsiți un shield sau un modul care să facă ceea ce aveți nevoie, nu disperați. Puteți construi întotdeauna propriul circuit de comandă personalizat pentru a se potrivi nevoilor dumneavoastră. După cum s-a demonstrat mai sus, aceste noi plăci prototip pot fi chiar stivuite deasupra shield-urilor existente Arduino. Dacă vreți să mergeți mai sus și dincolo, puteți merge chiar și cu un pas înainte prin proiectarea plăcii de circuite personalizate și având-o fabricată. Poate că nu este ceva ce ați face imediat, dar va deveni mai atrăgător, cu cât vă scufundați mai adânc în robotică.

Ce urmează?

Acum că sunteți înarmați cu toate aceste cunoștințe de electronică pentru roboți, următorul pas este să construiți un robot. Vă sugerez să începeți cu robotul Telepresence. Acesta este un ghid cuprinzător care merge atât pentru construirea unui robot, cât și pentru multe concepte incluse în această clasă.