ITSASPEKOA

ITSASPEKOA

Don Boscon, departamentu bat baino gehiagoren artean eginiko proiektu bat da oraingoan azalduko duguna.

Mekatronika, Eraikuntza metalikoak eta elektronikako departamentuak parte hartu dute bertan, momentu oro hiru departamentuen arteko komunikazioa beharrezkoa izanda.

Itsaspeko bat eraikitzea izan da proiektu honen helburua, departamentu bakoitzari bere lana emanaz.

Post honetan, eraikuntza metaliko eta mekatronikako lanari buruz gainetik hitz egingo da, elektronikan zentratuz.

Eraikuntza fisikoari buruz, hona hemen argazki bat, hasiberria zenekoa:

Ikusi daiteken bezala, erdialdea bi zatitan bananduta dago: Goiko zatian bateriak, elektronika, bonbak, elektrobalbulak etab. joango dira, eta beheko aldea beste bi zatitan bananduta dago, urez beteko diren bi kamerakin.

Gure helburua, itsaspekoa WIFI bitartez kontrolatu ahal izatea izan da. WiFi bitartez tablet batetik antena batera egingo da komunikazioa. Antena hori, momentuz, buia batean egongo da eta bertatik RaspberryPi batera joango da seinalea. RaspberryPi-a, serie bitartez, Arduino batekin komunikatuko da, mikrokontroladoreak itsaspekoa kontrolatu dezan.

Orain arte funtzio desberdinak jarri zaizkio itsaspekoari:

  • Aurrerako martxa (propultsio motorea alde batera biratuz)
  • Atzerako martxa  (propultsioa beste aldera mugituz)
  • Ezker / Eskubi bira (servoa biratuz)
  • Servomotorea zentratu (servoa dagoen lekuan dagoela, erdira eramateko)
  • Eskuz kamerak bete ala hustu (bi kamerak banaka bete ala hustutzeko)
  • Automatikoki urperatu ala azaleratu  (bi kamerak batera bete ala hustutzeko)
  • Estabilizatu (ezarritako inklinazio gradu batetik pasatzean, automatikoki estabilizatzeko)
  • Flotabilidade neutroko puntua gogoratu eta bertara joan.

Proiektu irekia da, hurrengo urteetan hobetu ahal izateko. Adibidez, RaspberryPi-a kamera bat jarri ahal izateko prest dago. Ez dugu kamera hori estankoa uztea lortu (ura sartu ez dadin), baina egin ezkero, kamera jarri ahal zaio. Aurrerago aztertuko ditugu proiektuak izan ditzazken hobekuntza eta berritasunak.

Erabilitako konponenteak (click bakoitzaren gainean datasheet edo webgunera sartzeko)

1x ARDUINO UNO
1x RASPBERRYPI
2x L293D QUADRUPLE HALF-H DRIVERS
1x ULN2003A DARLINTONG TRANSISTOR ARRAY
1x MX2125 2-AXIS ACCELEROMETER MODULE
1x SERVO BMS-630MG
2x RELAY FINDER 40.31

Eskema

Eskeman ikusi dezakegunez 4 zati garrantzitsu dauzkagu:

1 – Azelerometroa: Azelerometro hau (MX2125), 2 ardatzeko azelerometro bat da, hau da, X eta Y ardatzak kontrolatzen ditu. Hala ere, proiektu honetarako X ardatza da kontrolatu behar izan dugun bakarra. Funtzionamendu teknikoa oso logikoa da: erdian gas bola bero bat dauka eta lau «termometro» eskin bakoitzean, beraz, azelerometroa biratzean, eta beroa goruntza joatean, termometro hoietako bat, bestea baino beroago egongo da. Pultsoaren luzeera jasoko dugu bueltan, hori jakinda, eta ariketa aritmetiko batzu egin ondoren, zenbat graduko inklinazioa daukagun azelerometroan, beraz, itsaspekoan ere, asmatu dezakegu.

2 – Bonbak + Elektrobalbulak: Mekatronika/konstrukzio metalikoen ikasleak aukeratu dituzte erabiliko diren motoreak, bonbak etab.. Pausu hau gure kasuan pixkat astuna izan da, azkeneko momentuko aldaketak egon zirelako, eskema eta plaka aldaraztera behartuz. Hasieran bonbak besterik eziran jarri behar, horretarako L293D driver bat erabiliko genuke hauek kontrolatzeko. 12V-koak direnez, 8. pinetik 12V sartuko ditugu, 5V 16. pinetik eta bi «Enable» pinetatik, 10KΩ-ko erresistentzi batetik pasata 5V. Enableak konektatuak egonda, 5Vkin sarrerak aktibatzean, irteerak aktibatuko dira 12V emanda. Bideo honetan L293D chip-aren funtzionamendua ikusi daiteke: hemen.

Proiektua aurrera zihoan einean bonbei, elektrobalbula batzu jarri behar genizkiela konturatu ginen, anti-retorno bezala, ura sartzen zen zulotik berriz ere ez ateratzeko. Hauek kontrolatzeko ULN2003A chip-a erabili dugu, pin komunetik (COM) 12V pasarazten ditugu, elektrobalbulara ere konektatuz, sarreran aktibatzen duguna, irteeran ikusten dugu. Pista berdina erabiltzen dugu bonbak eta elektrobalbulentzat, batera aktibatu eta desaktibatu nahi ditugu eta.
 

3 – Propultsio motorea: Gure kasuan hemen izan ditugu aldaketa gehienak, hasieran 12Vkoa zen, 5206 driver-a erabili behar genuen hasiera batean, baina gero aldaketak egon ziren eta 24Vko DC motore bat jartzea proposatu zen.

Azkenean, eta beste saiakera batzu eta gero, L293D batekin 5Vko Relay batzu aktibatzea aukeratu genuen. Relay-ak bi zati ditu, aktibatzekoa (alde batetik 5V eta bestetik 0V sartuz) eta aktuatzekoa (interruptore baten antzeko funtzionamendua du, alde bat 24Vra konektatzen dugu eta bestea motorearen alde batera). Motorea, alde batetik 24V baldin baditu eta bestetik 0V, martxan jarriko da.
4 – Nibel sentsoreak: Bi kameretan zenbateko ur nibela daukagun jakitea garrantzitsua da, batez ere «flotabilidade neutro» puntu hori lortzeko orduan. Esan beharra dago asko kostatu zitzaigula nahi edo behar genituen sentsore batzuk aurkitzea. Azkenean hauek aurkitu genituen.

Potentziometro baten funtzionamendua dauka. Erdian ikusten den flotadore hori gora ta behera mugitzen da, ur nibela non dagoen arabera. 10 eta 180Ω bitarteko erresistentzi baten konportamendua du, gero eta gorago, geroz eta erresistentzi txikiagoa dauka. Praktikoki, beste 180Ωko erresistentzi bat seriean jarrita, hauek bien tartetik, zatitzaile erresistibo baten moduan funtzionaraziz, nibela (flotadorea) zein puntutan dagoen kokatuta jakingo dugu.

Beranduago konturatu ginen ez ditula balore guztiak ematen, diskretoa dela eta 10 balore desberdin ematen ditula, horregatik Arduinon jarri ditugun 10 posizioak. Esan beharra dago, sentsore honek balore guztiak eman beharko zituela askoz erosoago eta hobeto egiteko flotabilidade neutroaren kalkulua.

Lau puntu hauetaz gain, servoa ikusi daiteke eskeman, baina honek ez dauka misterio haundirik konektatzeko orduan. Hanka bat 5Vra doa, bestea GNDra eta bestea, seinalea, Arduinoko PWM pin batera.

PROGRAMAZIOA:

    1. Programazioan 3 puntu desberdin daude:
  1. Android: Tablet baterako aplikazio bat egingo da Eclipse programa erabiliz. Programa honekin bisualizatu ahal izango dugu RaspberryPi-ra bidaltzen dugun komandoa.
  2. RaspberryPi: Access point bezala konfiguratuko dugu WIFI puntu bat sortuz, tabletetik konektatu ahal izateko, Arduinora komandoak bidaliz TX pinetik.
  3. Arduino(Eclipse): RaspberryPi-tik komandoak jasoko ditu RX pinetik, beste pinetatik aktuadoreak aktibatuz

Arduino

Arduino, erraz erabili daitezken Software eta Hardware malgutan oinarrituta, prototipoak sortzeko plataforma elektroniko irekia da. Lenguaia propio bat erabilita programatzen da. Hala ere, beste programazio lenguaiak erabili daitezke. Informazio gehiago, beraien web orrian, eta hemen deskargak.

Programa osoa hemen behean ikusi daiteke komentatua. Hasteko, esan beharra dago, programa gaur egiten hasiko bagina, agian beste modu batean planteatuko genukela, asko optimizatu daitekelako.

RaspberryPi

RaspberryPi, plaka bakarreko kostu txikiko ordenagailu bat da (SBC), eskoletan, konputazio zientzien irakaskuntzak suspertzeko, Erresuma Batuan RaspberryPi Fundazioak sortua.

Diseinuak System-on-a-chip Broadcom bat darama, ARM1176JZF-S 700MHzko prozesadore zentral bat daukana, VideoCore IV prozesadore grafiko bat eta 512MiB-eko memoria RAM bat.

Diseinuak ez du diska gogorrik, SD txartel bat erabiltzen bait da beharrezko datuak biltegiratzeko.

RaspberryPi-a, access point bezala funtzionarazten dugu, WIFI portu bat sortzeko eta gure tabletetik, inalanbrikoki komunikatu ahal izateko. Django zerbitzari bat instalatu da API-REST bat sortzeko. API-REST-a http bidezko petizioak filtratzen dituen funtzio-URL-en multzoa da.

Google Drive-n uzten ditugu jarraitu beharrezko pausuak Access Point-a lortzeko: hemen.

Android (Eclipse)

Eclipse software librearekin, javarekin programatzen, itsaspekoaren kontrolaren interfaz-a sortu dugu. Hauetako botoi bat pultsatuz, komando bat bidaltzen diogu RaspberryPi-ari, honek exekutatu dezan.Programa deskargatzeko linka hemen.

PROIEKTUAREN ETORKIZUNA:

Proiektuaren lehenengo urtea izan da, baina horrek ez du esan nahi dena hemen bukatzen denik.

Hasieran esan bezala, funtzio gehiago ipini ahal zaizkio itsaspekoari, adibidez, kamera bat. Horretarako prest daukagu RaspberryPi-a. Hemen enlazea. Honen arazoa, kamera guztiz estankoa (urik ez sartzea) izatea beharrezkoa dela, eta izan dugun denborarekin ezinezkoa izan dela hau lortzea. Beste aukera bat, goPro kamera bat jartzea izan liteke… baina aurrekontua asko igotzen zitzaigun. Halere, hona hemen tutorial bat goProa eta raspberryPi-a batera konektatzeko. Kamerarekin batera, argi bat jartzea interesgarria izango zen, itsas hondoan argi gutxi dagoenez, zaila izango zelako irudi onak ateratzea.

Beste gehigarri bat, ultrasoinuko sentsoreak ipintzea izango litzateke, bai azpikaldean, itsas hondora zenbat distantzia dagoen jakiteko, edota aurrean, atzean eta aldetan, oztopo batekin aurkitzen bada, talka egin aurretik, itsaspekoa geldiarazteko adibidez.

Buia nola kendu eta itsaspekoa libre uretan ibiltzea interesgarria izango zen, ultrasoinuen bidez urazpitik kontrolatruz edota beste modu batez.

Bestelako ideiak badaude, adibidez RFID irakurgailu batekin, objektuak edota pertsonak bilatzeko balioko zuen, elurretan bezala, itsasoan dabilen jendea (arrantzaleak, urpekariak, etab.), RFID TAG bat izango bazuten errazagoa izango zen horrelako herraminta batekin jendea itsaso azpian aurkitzea, urpekari bat uretara sartzea arriskutsua izan daiteken kasuetan (adibidez, 2014ko martxoan desagertutako Maylasia Airlineseko hegazkina galdu zenean, Bluefin-21 itsaspekoa hondoratu zuten, hegazkina eta jendearen gorpuak aurkitzeko).

Irudimena erabilita, hobekuntzak (bai programan, baita hardwarean ere) eta gehigarriak ipiniz, beste nibel sentsore batzuk bezala (zuzenak, diskretoen ordez, adibidez), proiektu ikaragarri batean bilakatu daiteke Itsaspekoa.

Mikel Tife (2ME3M) / IEFPS Don Bosco GLHBI

RASPZEPPELIN, Dron controlado por Android

RASPZEPPELIN, Dron controlado por Android

Proiektu honen helburua jendetza handiko jazoeratan iragarkiak ahalik eta jende gehienari iritsi ahal izatea da, baina baita ere ingurugiroko datuak hartu eta imaginak denbora errealean gure Android gailura bidaltzea.
Zeppelina Wifi bidez dago konektaturik Android gailu mugikorrera. Android gailuan Zeppelina kontrolatzeko sortutako aplikazio bat egozten da, aplikazio honen bidez Zeppelinarekin interaktuatu ahal izango dugu.

 

Aplikazio honek Zeppelinaren kontrolaz gain beste ainbat datu ere erreztuko dizkigu, horietatik garrantzitsuena denbora errealean jasotako bideoa da.

RaspZeppelinaren egituran Raspberry Pi bat dago kontrolaz arduraturik. Raspberry Pi bat, Hardware libreko SBC bat da eta Linuxen oinarrituriko sistema eragilea erabiltzen du. Sofwar hau librea denez, proiektu honentzako aproposa da gure nahietara egoki baitezakegu. Raspberriaren funtzio nagusiak ondorengoak dira: Arduino mikrokontrolatzaileari egin beharrekoa adieraztea, Acces Point bezela jokatzea gailu mugikorrarekin wifi konexioa lortzeko eta kamararen kontrolaz arduratzea. Wifi konexia lortzeko Wi-Pi wifi moduloa erabili da.

Raspberry Piaren aginduak Arduino Mega plakara doaz. Arduino Mega ATmega2560 mikrokontrolagailu batetan oinarrituriko plaka bat da. Plaka honek agindu bakoitzeko irteera bat edo beste aktibatuko du bere barnean duen programari esker.

Arduino plakak azkenik aktuadoreei bidaliko die agindua. Aktuadoreak RaspZeppelinaren norabidea eta kameraren kontrola erregulatuko dute. 5V-ko bi servomotorek kameraren angelua eta propultsio servoen angelua kontrolatuko dute. 5V-ko ak direnez zuzenean lotu daitezke Arduino Megarekin. Beste bi brushless motore RaspZeppelinaren propulsioaz arduratuko dira. Hauek Arduino plaka eta beraien artean control etapa bat dute, ESC zirkuito elektroniko bat. Azkenik RaspZeppelinaren norabidea kontrolatzeko DC-ko 5v-ko motore bat hau isatsan dagoenez RaspZeppelina altuera konstate batean geldirik egonik bere Z ardatzarekiko biratzea ahalbidetzen du. Zuzenki polarizatzen denean zentzu batean biratzen du eta alderantziz polarizatzean beste alderuntz biratzen du.

Hurrengo lerroetan proiektua gartzeko eman ditugun pausuak:

1. Eskemaren edizioa eta Zirkuituaren simulazioa:

RaspZeppelinaren Arduinoko programa simulatzeko, Isis-en sortutako eskema bat beharrezkoa da programan egon daitezkeen akatsak aurrez topatzeko. Isis-eko programak serboak zuzenean konektatzea onartzen duen arren, brushless motoreen eta Arduinoaren artean, ESC etapa bat beharrezkoa da.

2. PCB-aren fabrikazioa:

Areseko PCB-a método mekaniakoren bidez eraiki da. Areseko artxiboa, .LYT izeneko extensioa dauka, baina extensio hau irakurezina da Board Master programan. Artxiboa egokitzeko CircuitCam-en .LMD extensiora pasa da, Board Master-ek irakur ahal dezan. Board Masterren LPKF-aren lan sistema konfiguratzen da eta fresatu beharrekoa adierazten zaio LPKF-ari.

Lehenik eta behin zuloak egiten dira metalizatu ahal izateko, metalizatu prosezua pasa eta gero, berriz LPKF-ra eramaten dugu plaka, bi aldeetako pistak egiteko.

3. Konponenteen kokapena eta soldadura:

Behin PCBaren plaka eraikita, konponenteak jarri eta soldatu dira, ondorengo argazkian eraikitako Shiedaren irudi bat.

4. Arduinoren programazioa:

#include <Servo.h>
Servo servokamera;          //altuera kontrolatzeko servoa
Servo servoaltuera;         //kamera kontrolatzeko servoa
Servo esc7;                //nombramos el esc7. Aurrera
Servo esc8;                //nombramos el esc8. Aurrera
int motor1=6;              //Direccion
int motor2=5;               //Direccion
float bateria=A1;         //asignamos al pin A1 la entrada de la bateria
int estadobateria=0;
int ledbateriabaja=4;     //asignamos el pin 4 a los led bateriabaja
float estadobateriav;
int F=’J’;
int kamerakontrol =500; //Poner servo de camara en posición «0»

void setup (){

servoaltuera.attach(10); //asignamos el pin 10 al servoaltuera
servokamera.attach(9); //asignamos el pin 9 al servokamera
esc7.attach(7);   //asignamos el pin 7 al esc11
esc8.attach(8);  //asignamos el pin 8 al esc12
pinMode(motor1, OUTPUT);   //Direccion
pinMode(motor2, OUTPUT);   //Direccion
pinMode (A1,INPUT); //pin analogico para control bateria
pinMode (4,OUTPUT);  //pin para encender leds de aviso

esc7.write(0);    //Armamos el esc11 enviandole «0»
esc8.write(0);   //Armamos el esc12 enviandole «0»
delay (1000);
esc7.write (20);  //Le enviamos «20» y se escucha un pitido
esc8.write (20);   //Le enviamos «20» y se escucha un pitido
delay(1000);
Serial.begin (9600);
digitalWrite(ledbateriabaja,LOW);
}

void loop(){
estadobateria = analogRead(bateria); //leer bateria y escribir en estadobateria
estadobateriav = estadobateria * (5.0 / 1023.0); //conversión de lectura
if(estadobateriav < 4.18){
digitalWrite(ledbateriabaja,HIGH);
//mandar informacion a raspi
}
else{
digitalWrite(ledbateriabaja,LOW);
}

Serial.print( » «);
Serial.println( » «);
Serial.print(estadobateriav);   //escribe en purto serial valor de la bateria

if (Serial.available() > 0) {
F = Serial.read();
}
switch(F){
case ‘A’:
mover(90,40,40,0,0);     //A letra ASCII, gora juteko
break;
case ‘B’:
mover(180,40,40,0,0);    //B letra ASCII, behera juteko
break;
case ‘C’:
mover(45,40,40,0,0);     //C letra ASCII, aurrera juteko
break;
case ‘D’:
mover(135,40,40,0,0);     //D letra ASCII, atzera juteko
break;
case ‘E’:
mover(0,20,20,255,0);    //E letra ASCII, eskubira juteko
break;
case ‘F’:
mover(0,20,20,0,255);    //F letra ASCII, ezkerrera juteko
break;
case ‘G’:
mov_camara(1,50);        //G letra ASCII, kamera behera juteko
break;
case ‘H’:
mov_camara(0,50);        //H letra ASCII, kamera gora juteko
break;
case ‘I’:
mov_camara(1,0);         //I letra ASCII, kamera GERATU
break;
case ‘J’:
mover(0,20,20,0,0);      //J letra ASCII, dena gelditzeko
break;
}
}

/************************************************************
funcion para control del movimiento del Zepellin
Le pasamos 5 parametros:
ang_motores  (0-180)
vel_esc7     (20-180)
vel_esc8     (20-180)
motor_cola_izq  (0-255)
motor_cola_dch  (0-255)
***********************************************************/

void mover(int ang_motores,int vel_esc1,int vel_esc2,int motor_cola_izq,int motor_cola_dch  ){

servoaltuera.write(ang_motores);
esc7.write(vel_esc1);          //Damos marcha al motot a «90»
esc8.write( vel_esc2);          //Damos marcha al motot a «90»
analogWrite(motor1, motor_cola_izq);   //Direkzioa 0ra
analogWrite(motor2, motor_cola_dch);   //Direkzioa 0ra
}

/***********************************************************
función para control del movimiento de la camara
Le pasamos dos parametro:
direccion (1 –> suma , 0 –> resta)
var_angulo  (0 a 50)
************************************************************/
void mov_camara (int direccion, int var_angulo) {

if(direccion==1){
kamerakontrol = kamerakontrol + var_angulo;
}
else{
kamerakontrol = kamerakontrol – var_angulo;
}
servokamera.writeMicroseconds (kamerakontrol);
delay (500);
}

4. Android Aplikazioa:

Eclipse programa erabiliz, edozein mugikor edo tabletekin Zeppelina guidatu ahal izateko aplikazio bat garatu dugu. Tablet bertatik Zeppelina guztiz gidatzeaz gain, bideoa ikusi daiteke eta argazkiak atera ere bai.

5. Materialen metaketa:

• Arduino mega 2560
• Raspberry-py
• Raspberry-ren kamera
• 2xBrushless motore
• 2xESC
• Servo Motor
• Micro Servo
• Arduino megarentzat Shield-a
• 3xDiodo led
• 1xInterruptore
• 1xResistencia 10K
• 3xResistencia 330 ohm.
• 2xBaterias lipo de tres celdas y 2200mA
• H Zubia


6. Prototipoaren kableaketa eta froga:

Behin servo guztiak eta korronte zuzenezko motorea kontrolatutak dauzkagunean, denak elkarrekin frogatzera pasako gara.

7. 3D Osagaien diseinu eta fabrikazioa:

3D inpresoran sortutako konponenteak asko izan dira RaspZeppelinean. Serboen kontrolarako engranaiak, brushlessak eje transmisorera lotzeko piezak, zeppelinaren hegalak, isatseko motorraren gurutze hegalak, elektronika sartzeko gondola, gondolaren ankak eta kamera lotzeko kutxa.

Diseinatu ditugun pieza guztien .stl artxiboak blog-aren bukaerako link-aren barruan daude.

8. Heliorekin betetzea:

Heliorekin puzteko orduan, kontuz ibili behar da helio botilak presio handia duelako barruan eta gaizki erabiltzea oso arriskutsua delako.

9. Lehenengo hegalaldiak:

Azkenik, frogatzeko hegalaldi frogak egin ditugu funtzionamendua ona delako bermatzeko.

Deskargatu proiektuko artxiboak.

Programador de ESC con arduino

Programador de ESC con arduino

Para el control de los motores brushless, ampliamente utilizados en radiocontrol, se utiliza un circuito electrónico denominado ESC.


Estos controladores se programan con una emisora de Radio Control y su correspondiente receptor al que conectamos el ESC. Una vez programados, se controlan como si fueran servos normales.
Hay una serie de códigos acústicos a base de pitidos que emite el ESC con los que sabemos los parámetros que estamos configurando.
Habrá que consultar el datasheet del ESC para conocer esos códigos.

Para nuestro proyecto (un zepellin) no necesitabamos la emisora, ya que pensamos controlar el zepellin desde una tablet por WIFI. El control lo haremos con un arduino y una RaspberryPi.

Aquí os presentamos un circuito con arduino UNO que nos permite programar los ESC sin necesidad de comprarnos una emisora de RC. Dispone de tres botones que hacen el efecto de mando al máximo, medio y mínimo que genera el mando de RC. Os dejamos el esquema y el programa del arduino. Sólo hay que conectar el ESC y seguir los códigos de pitidos para programarlos como nos interese.

Aquí va el programa que hay que cargar en el arduino:

#include <Servo .h>

Servo esc;

int ACELERAMAX;
int ACELERAMED;
int ACELERAMIN;
void setup(){
pinMode (2,INPUT);
pinMode (3,INPUT);
pinMode (4,INPUT);
esc.attach (9);
// esc.writeMicroseconds(0);
Serial.begin (9600);
}
void loop() {
ACELERAMIN = digitalRead(2);
ACELERAMED = digitalRead(3);
ACELERAMAX = digitalRead(4);

if(ACELERAMAX == 0) {
esc.writeMicroseconds(1990);
Serial.println («Max»);
}

else if(ACELERAMED == 0) {
esc.writeMicroseconds(1470);
Serial.println («Med»);
}

else if(ACELERAMIN == 0) {
esc.writeMicroseconds(1130);
Serial.println («Min»);
}

}