Escolar Documentos
Profissional Documentos
Cultura Documentos
En enero de 2012, encuestas hechas en el Reino Unido acerca de la penetracin en las aulas de
Raspberry Pi concluyeron que por cada placa que haba en un colegio pblico, haba cinco en
colegios privados. Por ello se espera que en un futuro empresas patrocinen la adquisicin de
placas en colegios pblicos
El CEO de Premier Farnell declar que el gobierno de un pas de medio oriente expres inters en
proveer una placa a cada chica estudiante, con el objetivo de mejorar sus expectativas de empleo
en el futuroA finales de enero de 2013, se dio a conocer que Google, junto con la ayuda de otros 6 socios,
repartira 15.000 placas entre estudiantes del Reino Unido que mostraran motivacin por las
ciencias de la computacin.
METODOS Y PROCEDIMIENTOS:
Instalacin del Sistema Operativo en la Raspberry Pi:
Raspbian es una distribucin (por supuesto libre) basada en Debian optimizada
para correr sobre el hardware de la Raspberry Pi.
A modo de ejemplo, se instalara Raspbian utilizando una tarjeta de memoria SD.
En mi sistema la tarjeta de memoria es detectada como el dispositivo /dev/sdc.
Se observa que la tarjeta no posee tabla de particiones:
Luego del proceso de inicio del sistema se abre la herramienta raspi-config, la cual se utiliza
para configurar Raspbian.
Expansin del sistema de archivos
La imagen est preparada para utilizar cualquier dispositivo de al menos 4Gb. El primer paso
consiste en expandir el filesystem para que ocupe toda la capacidad de la tarjeta SD:
INSTALACION DE WEBCAM:
Aplicacin para visualizar la imagen a travs de un navegador: mjpg-streamer-code-181
Putty para conectarnos a la raspberry.
Una vez conectada la cmara ejecutamos lsusb para comprobar que nos la reconoce el
sistema.
-lsusb
Debera aparecer algo asi:
Bus 001 Device 004: ID 046d:0804 Logitech, Inc. Webcam C250
Actualizamos y instalamos librerias necerias
sudo apt-get update
sudo apt-get install libjpeg8-dev imagemagick subversion
Descomprimimos la aplicacin streamer descargada y compilamos
cd mjpg-streamer/mjpg-streamer
make
Lanzamos la aplicacin
./mjpg\_streamer -i "./input\_uvc.so -y -n " -o "./output_http.so -n -w ./www" &
Y nos debera mostrar las configuraciones predeterminadas
MJPG Streamer Version: svn rev: 3:172
i: Using V4L2 device.: /dev/video0 i: Desired Resolution: 640 x 480
i: Frames Per Second.: 5
i: Format............: YUV
i: JPEG Quality......: 80
o: www-folder-path...: ./www/
o: HTTP TCP port.....: 808
0 o: username:password.: disabled
o: commands..........: disabled
ESTRUCTURA DE ACRILICO:
Primero se empez Realizando las estructuras en acrlico tomando en cuenta el
tamao de los servomotores.
PROGRAMACION:
Posteriormente se Realiz la programacin para el control del robot hexpodo. La
programacin se realiz en Procesing que es el lenguaje del Arduino.
TRANSMISOR
Diagrama de Flujo:
INICIO
P=5
P=6
P=7
P=8
ENVIAR C = J
ENVIAR C = A
ENVIAR C = D
ENVIAR C = F
ENVIAR C = H
PROGRAMA:
#include <VirtualWire.h>
int boton = 5;
int boton2 = 6;
int boton3 = 7;
int boton4 = 8;
char *msg = "";
int ab = 0;
int eb = 0;
int ib = 0;
int ob = 0;
void setup(){
vw_setup(7000);
pinMode(boton, INPUT);
pinMode(boton2, INPUT);
pinMode(boton3, INPUT);
pinMode(boton4, INPUT);
}
void loop () {
ab = digitalRead(boton);
if ( ab == HIGH) {
msg = "A";
vw_send((uint8_t *)msg,
}
else {
msg = "B";
vw_send((uint8_t *)msg,
}
// y lo enviamos
eb = digitalRead(boton2);
if( eb == HIGH){
msg = "C";
vw_send((uint8_t *)msg,
}
else {
msg = "D";
vw_send((uint8_t *)msg,
strlen(msg));
strlen(msg));
strlen(msg));
strlen(msg));
}
ib = digitalRead(boton3);
if ( ib == HIGH) {
msg = "E";
vw_send((uint8_t *)msg, strlen(msg));
}
else {
msg = "F";
vw_send((uint8_t *)msg, strlen(msg));
}
ob = digitalRead(boton4);
if ( ob == HIGH) {
msg = "G";
vw_send((uint8_t *)msg, strlen(msg));
}
else {
msg = "H";
vw_send((uint8_t *)msg, strlen(msg));
}
}
RECEPTOR:
Diagrama de Flujo:
INICIO
C=A
P=C
P=E
P=G
PIN 6, 7, 8, 9 = 0
PIN6 = 1
PIN7 = 1
PIN8 = 1
PIN9 = 1
PROGRAMA:
#include <VirtualWire.h>
int
int
int
int
led = 6;
led2 = 7;
led3 = 8;
led4 = 9;
void setup() {
vw_setup(7000);
vw_rx_start();
pinMode(led, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
}
void loop(){
uint8_t msg[VW_MAX_MESSAGE_LEN];
uint8_t len = VW_MAX_MESSAGE_LEN;
if (vw_get_message(msg, &len)){
if ( msg[0] == 'A') {
digitalWrite(led, HIGH);
delay (100);
}
if (msg[0] == 'B'){
digitalWrite(led, LOW);
delay(100);
}
if ( msg[0] == 'C') {
digitalWrite(led2, HIGH);
delay (100);
}
if (msg[0] == 'D'){
digitalWrite(led2, LOW);
delay(100);
}
if ( msg[0] == 'E') {
digitalWrite(led3, HIGH);
delay (100);
}
if (msg[0] == 'F'){
digitalWrite(led3, LOW);
delay(100);
}
if ( msg[0] == 'G') {
digitalWrite(led4, HIGH);
delay (100);
}
if (msg[0] == 'H'){
digitalWrite(led4, LOW);
delay(100);
}
}
Diagrama de Flujo:
INICIO
PIN6
=1
AVANZAR
PIN7
=1
RETROCEDER
PIN8
=1
DERECHA
PIN9
=1
IZQUIERDA
PIN 6, 7, 8, 9 = 0
PROGRAMA:
#include <Servo.h>
int pin2 = 2;
int pin3 = 3;
int pin4 = 4;
int pin5 = 5;
int pin6 = 6;
int pin7 = 7;
int pin8 = 8;
int pin9 = 9;
int valor6 = 0;
int valor7 = 0;
int valor8 = 0;
int valor9 = 0;
Servo servo20;
Servo servo21;
Servo servo22;
Servo servo24;
Servo servo26;
Servo servo28;
Servo servo30;
Servo servo32;
Servo servo34;
Servo servo36;
Servo servo38;
Servo servo40;
Servo servo42;
Servo servo44;
Servo servo46;
Servo servo48;
Servo servo50;
Servo servo52;
void setup() {
pinMode(pin2, OUTPUT);
pinMode(pin3, OUTPUT);
pinMode(pin4, OUTPUT);
pinMode(pin5, OUTPUT);
pinMode(pin6, INPUT);
pinMode(pin7, INPUT);
pinMode(pin8, INPUT);
pinMode(pin9, INPUT);
servo20.attach(20);
servo21.attach(21);
servo22.attach(22);
servo24.attach(24);
servo26.attach(26);
servo28.attach(28);
servo30.attach(30);
servo32.attach(32);
servo34.attach(34);
servo36.attach(36);
servo38.attach(38);
servo40.attach(40);
servo42.attach(42);
servo44.attach(44);
servo46.attach(46);
servo48.attach(48);
servo50.attach(50);
servo52.attach(52);
servo52.write(90);
servo40.write(90);
servo26.write(90);
servo20.write(90);
servo21.write(90);
servo22.write(90);
servo24.write(90);
servo28.write(90);
servo30.write(90);
servo32.write(90);
servo34.write(90);
servo36.write(90);
servo38.write(90);
servo42.write(90);
servo44.write(90);
servo46.write(90);
servo48.write(90);
servo50.write(90);
}
void loop(){
valor6 = digitalRead(pin6); //Adelante
if (valor6 == HIGH) {
digitalWrite(pin2, HIGH);
digitalWrite(pin3, LOW);
digitalWrite(pin4, LOW);
digitalWrite(pin5, LOW);
servo52.write(95);
servo50.write(110);
servo48.write(100);
servo40.write(95);
servo38.write(110);
servo36.write(100);
servo26.write(85);
servo28.write(70);
servo24.write(80);
servo22.write(90);
servo34.write(90);
servo46.write(90);
delay(250);
servo50.write(90);
servo48.write(90);
servo38.write(90);
servo36.write(90);
servo28.write(90);
servo24.write(90);
servo22.write(95);
servo34.write(95);
servo46.write(85);
delay(250);
servo22.write(85);
servo21.write(70);
servo20.write(80);
servo34.write(85);
servo32.write(70);
servo30.write(80);
servo46.write(95);
servo44.write(110);
servo42.write(100);
servo52.write(90);
servo40.write(90);
servo26.write(90);
delay(250);
servo20.write(90);
servo21.write(90);
servo30.write(90);
servo32.write(90);
servo44.write(90);
servo42.write(90);
servo52.write(85);
servo40.write(85);
servo26.write(95);
delay(250);
}
else {
digitalWrite(pin2, LOW);
digitalWrite(pin3, LOW);
digitalWrite(pin4, LOW);
digitalWrite(pin5, LOW);
}
valor7 = digitalRead(pin7); //Atras
if (valor7 == HIGH){
digitalWrite(pin2, LOW);
digitalWrite(pin3, HIGH);
digitalWrite(pin4, LOW);
digitalWrite(pin5, LOW);
servo52.write(85);
servo50.write(110);
servo48.write(100);
servo40.write(85);
servo38.write(110);
servo36.write(100);
servo26.write(95);
servo28.write(70);
servo24.write(80);
servo22.write(90);
servo34.write(90);
servo46.write(90);
delay(250);
servo50.write(90);
servo48.write(90);
servo38.write(90);
servo36.write(90);
servo28.write(90);
servo24.write(90);
servo22.write(85);
servo34.write(85);
servo46.write(95);
delay(250);
servo22.write(95);
servo21.write(70);
servo20.write(80);
servo34.write(95);
servo32.write(70);
servo30.write(80);
servo46.write(85);
servo44.write(110);
servo42.write(100);
servo52.write(90);
servo40.write(90);
servo26.write(90);
delay(250);
servo20.write(90);
servo21.write(90);
servo30.write(90);
servo32.write(90);
servo44.write(90);
servo42.write(90);
servo52.write(95);
servo40.write(95);
servo26.write(85);
delay(250);
}
else{
digitalWrite(pin2, LOW);
digitalWrite(pin3, LOW);
digitalWrite(pin4, LOW);
digitalWrite(pin5, LOW);
}
valor8 = digitalRead(pin8); //Derecha
if (valor8 == HIGH){
digitalWrite(pin2, LOW);
digitalWrite(pin3, LOW);
digitalWrite(pin4, HIGH);
digitalWrite(pin5, LOW);
servo52.write(95);
servo50.write(110);
servo48.write(100);
servo40.write(95);
servo38.write(110);
servo36.write(100);
servo26.write(95);
servo28.write(70);
servo24.write(80);
servo22.write(90);
servo34.write(90);
servo46.write(90);
delay(250);
servo50.write(90);
servo48.write(90);
servo38.write(90);
servo36.write(90);
servo28.write(90);
servo24.write(90);
servo22.write(85);
servo34.write(85);
servo46.write(85);
delay(250);
servo22.write(95);
servo21.write(70);
servo20.write(80);
servo34.write(95);
servo32.write(70);
servo30.write(80);
servo46.write(95);
servo44.write(110);
servo42.write(100);
servo52.write(90);
servo40.write(90);
servo26.write(90);
delay(250);
servo20.write(90);
servo21.write(90);
servo30.write(90);
servo32.write(90);
servo44.write(90);
servo42.write(90);
servo52.write(85);
servo40.write(85);
servo26.write(85);
delay(250);
}
else{
digitalWrite(pin2, LOW);
digitalWrite(pin3, LOW);
digitalWrite(pin4, LOW);
digitalWrite(pin5, LOW);
}
valor9 = digitalRead(pin9); //Izquierda
if (valor9 == HIGH){
digitalWrite(pin2, LOW);
digitalWrite(pin3, LOW);
digitalWrite(pin4, LOW);
digitalWrite(pin5, HIGH);
servo52.write(85);
servo50.write(110);
servo48.write(100);
servo40.write(85);
servo38.write(110);
servo36.write(100);
servo26.write(85);
servo28.write(70);
servo24.write(80);
servo22.write(90);
servo34.write(90);
servo46.write(90);
delay(250);
servo50.write(90);
servo48.write(90);
servo38.write(90);
servo36.write(90);
servo28.write(90);
servo24.write(90);
servo22.write(95);
servo34.write(95);
servo46.write(95);
delay(250);
servo22.write(85);
servo21.write(70);
servo20.write(80);
servo34.write(85);
servo32.write(70);
servo30.write(80);
servo46.write(85);
servo44.write(110);
servo42.write(100);
servo52.write(90);
servo40.write(90);
servo26.write(90);
delay(250);
servo20.write(90);
servo21.write(90);
servo30.write(90);
servo32.write(90);
servo44.write(90);
servo42.write(90);
servo52.write(95);
servo40.write(95);
servo26.write(95);
delay(250);
}
else{
digitalWrite(pin2,
digitalWrite(pin3,
digitalWrite(pin4,
digitalWrite(pin5,
}
}
LOW);
LOW);
LOW);
LOW);
CONCLUSIONES:
Me ha gustado mucho el compendio de acciones llevadas a cabo para la
consecucin del robot. Los objetivos alcanzados han sido la realizacin de:
REFERENCIAS BIBLIOGRAFICAS:
-Diseo e implementacin de un robot mvil hexpodo
Alejandor Arango S.
ANEXOS: