raspberry-muy-basico

Introduction

Vamos fijar las bases en Raspberry antes de entrar en la robótica con Rasberry

¿Qué vas a conseguir?

{% include "git+https://github.com/catedu/robotica.git/README.md" %}

1 Un vistazo rápido

1.1 De donde viene ...

En 2011 se desarrolló la Raspberry Pi como ordenador de bajo coste para facilitar la enseñanza de la informática en los colegios, pero hasta 2012 no comenzó a fabricarse. La fundación recibe apoyos del laboratorio de informática de la Universidad de Cambridge y de Broadcom.

No hay ningún secreto en su precio, ya que fue diseñada con el fin de ser lo más barato posible, libre y llegar al máximo número de usuarios. Te puedes encontrar un PI3 con carcasa, alimentación y tarjeta clase 10 de 16 GB por 50 € aprox o 30€ sólo la placa.

1.2 Modelos

Existen Modelos micros, para robots que requieran espacios reducidos, es el RASPBERRY PI ZERO equivalente al PI 1 pero sin Ethernet y el RASPBERRY PI ZERO W que se le añade Bluetooth y Wifi. +Info aquí, y para complicarlo más hay diferentes versiones de cada A, A+ B+ Rev1 Rev2.. ver

1.3 Usos de la raspberry

Aquí tienes un muro que tú mismo puedes enriquecer:

Hecho con Padlet

2 GPIO

2.1 ¿Qué es eso?¿Es importante?

Pues sí que es importante para la robótica. GPIO significa General Purpose Input Output (GPIO) es el sistema que tiene la Raspberry de entradas y salidas de uso general. En la figura lo tienes marcados como naranjas:

Su gran ventaja con respecto al Arduino es la cantidad de pines GPIO que están disponibles junto con la posibilidad de programar diréctamente en la Raspberry, pero su desventaja es que no pueden leer entradas analógicas, para ello hay que usar un componente exterior o un Arduino.

2.2 Tensiones

Otra desventaja con respecto al Arduino: Están diseñados para 3.3V NO conectes componentes de 5V o de lo contrario ESTROPEARÁS LA RASPBERRY DE FORMA IRREVERSIBLE debido a que todos los pines están sin protección de buffer.

via GIPHY

2.3 Corrientes

Los GPIO están diseñados para ofrecer 3mA por cada pin, suficiente para encender LEDs pero no pidas más o te cargarás la RASPBERRY:

Y por supuesto los leds no a lo bruto, sino a través de una resistencia ¿de qué valor?

Voltios máximos 3.3V Intensidad máxima 3mA luego:

R = V/I = 3.3/3 = 1.1 kOhm COMO MÍNIMO o sea, mejor que no!

via GIPHY

2.4 ¿QUE PUEDO CONECTAR PUES DIRÉCTAMENTE?

PRACTICAMENTE NADA sólo un led o un interruptor/pulsador con una resistencia de como mínimo 1.1K

2.5 QUE PUEDO CONECTAR INDIRECTAMENTE

Casi de todo a través de alguna Shield o interface, por ejemplo: * Shield Pibrella muy, muy básico * Shield GrovePi+ ya permite todo tipo de sensores * AlphaBot un robot ya en movimiento.

2.5.1 Pibrella

Esta shield es muy, muy básica que tiene 3 leds, un pulsador, un buzzer y dos conectores de extensión.

2.5.2 GrovePi+

Esta shield tiene un buen precio y muchas posibilidades y muy buena página web de proyectos:

2.5.3 Alphabot

Raspbian o Rasberry Pi OS

¿Es el único sistema operativo que se puede instalar?

No, podemos instalar otros sistemas operativos en nuestra Raspbery (evidentemente uno sólo cada vez, poner dos a la vez en la rasp sería forzarlo demasiado). Por ejemplo:

Hay dos opciones, elige la que quieras (nuestra preferida es la A):

Opción A Instalar el sistema operativo en la tarjeta sin NOOBS

Con esta opción no tienes que encender la Rasbperry.

Opción B Instalar la Raspbian en la tarjeta con NOOBS

Con esta opción SI que tienes que encender la Rasbperry con pantalla, teclado y ratón

Esto es válido para cualquier ordenador: Descargar la ISO de un Sistema Operativo, grabarlo en un pincho de forma autoarrancable, pero por curiosidad, no es tan fácil como en la RASPBERRY
Se añade esta presentación como curiosidad:

Conectando desde red local

Opción A La Raspberry con pantalla, teclado y ratón

Esta es más fácil, pero tienes que encender la Raspberry con teclado, pantalla y ratón:

Opción B La Raspberry sin pantalla, teclado y ratón

Con esta opción es más difícil, pero no tienes que encender la Rasbperry para la configuración, sólo manipular los ficheros de la tarjeta micro SD.

Texto que hay que poner en interfaces

auto wlan0
iface wlan0 inet static
address 192.168.1.xxx
gateway 192.168.1.1
netmask 255.255.255.0
wpa-ssid el_nombre_tu_red_wifi
wpa-psk la_contraseña_de_tu_wifi
dns-nameservers 8.8.8.8 188.244.82.1

Texto que hay que poner en wpa_supplicant.conf

# /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid="nombre de tu router o SSID"
    psk="tu contraseña del wi-fi"
    key_mgmt=WPA-PSK
}

SSH

Controlar Raspberry pi de forma remota y de forma textual es muy rápido y eficaz, sobre todo para la robótica con AlphaBot.

SSH (Secure Shell) según Wikipedia es el nombre de un protocolo y del programa que lo implementa, y sirve para acceder servidores privados a través de una puerta trasera. Te recomiendo visitar esta página de Luis Llamas.

Recuerda que lo que hemos hecho es:

Ya podemos trabajar por SSH con la Raspberry, no nos hace falta que conectemos la raspberry a una pantalla, teclado, etc....

YA PODEMOS ENCENDER LA RASPBERRY si has elegidos las opciones A de 3.-Raspbian y 4.-Conectando aún no habrás encendido la Raspberry.

Si trabajas con Windows

No lo tiene nativo, tenemos que instalar Putty

Y rellenamos los campos de la IP (la que hayas determinado, en la imagen es 192.168.1.111), puerto y el protocolo SSH, es recomendable grabar la sesión para tenerlo en futuras entradas.

Se abre una ventana pidiendo el usuario pi y contraseña por defecto rasbperry

Si trabajas con Linux

Linux tiene de forma nativa el protocolo SSH, lo activamos en el icono en negro que es el Terminal:

Supongamos que la IP fija que le hemos asignado a la Rasbperry la IP 192.168.1.131 Tecleamos

ssh pi@192.168.1.131

Te pide usuario y contraseña, por defecto es usuario pi y la contreseña raspberry, la tecleas no la puedes ver, te tiene que salir algo así en la pantalla:

Cuando te sale pi@raspberrypi: es que ya está preparado para recibir órdenes

cat@cat-Aspire-E5-571 ~ $ ssh pi@192.168.1.131
pi@192.168.1.131's password: 
Linux raspberrypi 4.9.80-v7+ #1098 SMP Fri Mar 9 19:11:42 GMT 2018 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Fri Mar 23 18:03:09 2018 from 192.168.1.131
pi@raspberrypi:~ $
Nota por si te pasa

Si después de un intento fallido, o realizar la conexión con otra computadora.... te sale este error al intentar conectarte por ssh:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed. The fingerprint for the RSA key sent by the remote host is
Please contact your system administrator. Add correct host key in /home/user/.ssh/known_hosts to get rid of this message. Offending key in /home/user/.ssh/known_hosts:1 RSA host key for ras.mydomain.com has changed and you have >requested strict checking. Host key verification failed.


Entonces antes de intentar conectarte por ssh, hay que obligar a la Raspberry que reinicie las claves de conexión de ssh, ejecuta esta orden :

Supongamos que la IP fija que le hemos asignado a la Rasbperry en el punto 4 es 192.168.1.131 Tecleamos

ssh-keygen -R 192.168.1.131


6 Cambiar usuario y contraseña

El usuario por defecto es pi y su contraseña es raspberry pero lo podemos cambiar perfectamente

Opción A remota con SSH

Entramos por SSH como hemos aprendido, y tecleamos

sudo passwd pi

y nos pide enseguida la contraseña, la tenemos que insertar dos veces no se puede ver.

Opción B local por pantalla

Entramos por VNC o conectamos una pantalla, teclado y ratón a la raspberry y en Preferencias- RaspberryPi configuration

Y entramos en System

7 Apagar

Apagar de forma caliente (es decir simplemente quitando de la fuente de alimentación la corriente) daña al sistema operativo Rasbpian dejando ficheros corruptos.

7.1 Opción de forma remota con SSH

Muy fácil, teclea

sudo poweroff

7.2 Opción local de forma gráfica

Igual que en otros sistemas operativos Windows o Linux tenemos que apagar desde el menú Shutdown

8 VNC

VNC es un programa que nos permite la conexión remota con los servidores pero de forma gráfica. Es el sistema elegido por RASPBIAN pues ya lo tiene incorporado, pero no activado.

Hay que tener claro que son dos programas: * VNC SERVER que es el programa que se ejecuta en la RASPBERRY y que aunque viene instalado, hay que activarlo. Es el programa que lanza el escritorio para que lo lea: * VNC VIEWER es el programa que tenemos que tener en nuestro ordenador para ver lo que lanza VNC SERVER.

En la imagen podemos ver un pantallazo de mi ordenador, el escritorio negro es mi escritorio y el de la careterra es el de la Raspberry:

9 Transferencia ficheros

Para hacer una transferencia de ficheros, necesitamos un lugar común entre nuestro Raspberry y nuestro PC.

Podemos hacer una carpeta compartida en el Linux de Raspbian instalando un servidor Samba para que nuestro PC lo vea ... o también podemos compartir una carpeta compartida en nuestro PC, añadir usuarios y permisos apropiados y depende si nuestro ordenador es Windows7, Windows10, Linux, Mac... todas estas opciones son muy interesantes, en Internet puedes encontrar tutoriales muy buenos y .... siempre hay fallos.

O dejarnos de ser tan tecnológicos .....

Opción sencilla A: utilizar el adaptador y la micro tarjeta de la Raspberry

A1.- En mi PC tengo LINUX

Pues mejor, ves las dos particiones de la micro tarjeta SD:

Create una carpeta en rootfs en la carpeta /home/pi y ahí guarda tus proyectos.

A2.- En mi PC tengo Windows

Pues sólo ves una de las dos particiones, almacena todo en la boot y luego en Rasbian por VNC pasa los archivos a la otra partición rootfs en la carpeta /home/pi:

Opción sencilla B: Utilizar un pendrive USB

Exacto, como un ordenador, grabamos lo que queremos en un pendrive, luego lo conectamos a la Raspberry y saldrá automáticamente el gestor de archivos:

Si no sale, lo tienes en /media/pi en este caso he insertado un pendrive llamado Jorge:

Opción C con VNC pues tengo la raspberry inaccesible

Por ejemplo está en Alphabot

Si estás conectado por VNC entonces hay una opción de transferir archivos:

Opción C1 de mi ordenador a la Raspberry

Vas a la parte superior de tu pantalla y aparecerá un menú de VNC de tu ordenador, pulsa en el botón de transferencia de archivos:

Opción C2 de la Raspberry a mi ordenador

Tienes que ir al icono de VNC negro superior derecha que hay en el escritorio de la Raspberry viéndolo a través del VNC de tu ordenador (sí, ya sé que es un poco lioso pero es fácil):

Opción C3 No quiero un archivo, quiero una carpeta entera

Pues no va a poder ser, VNC sólo admite archivos, pero existe un truco: comprimir.

Hay que tener en cuenta que VNC sólo permite formato ZIP, tar.. pero no rar que no lo admitirá:

Dentro de la Raspberry navegando con VNC puedes descomprimir el archivo con el botón derecho


O sea, nuestro consejo es elegir la opción menos complicada que veas.

Divagando un poco...

Esto de que el camino sencillo es lo mejor, me recuerda a una historia en la carrera espacial: Hay un problema a la hora de usar los bolígrafos en gravedad 0 pues sólo funcionan por la caída de la tinta. La NASA gastó 4.382,50$ en desarrollar un bolígrafo capaz de escribir en el espacio pero el proyecto fue cancelado por duras críticas ¿por qué? ... porque los rusos usaban un lápiz. :DD

Luego una empresa SpacePen acabó inventandolo. Ahora tanto rusos como americanos usan el SpacePen a 6$ ya que es peligroso que la mina de un lápiz se rompa, es infamable, etc..

Extraido de Taringa.net

10 Robótica con Raspberry

Con este minilibro ya hemos aprendido a: * Instalar Raspbian * Conectarnos con la RASPBERRY via: * Comandos con SSH * Gráfica con VNC

Ahora toca otra aventura, con esta base ya podemos programar la Raspberry

¿Qué ventaja tiene?

La principal ventaja de hacer robótica con la Raspberry es que PROGRAMAMOS EN EL MISMO ROBOT para que veas la diferencia:

Otras ventajas es que al ser un ordenador en sí mismo, se puede realizar muchas cosas sin necesidad de añadir nuevo hardware. Por ejemplo una WebCam, Wifi con Internet, etc...

Para que lo veas más claro:

Nuestra propuesta:

Hemos pensado las siguientes opciones: - Propuesta A: Pibrella. Muy básico con Scratch. - Propuesta B: Rover marciano Alphabot. Avanzado con Python.

Propuesta A. PIBRELLA Robot muy básico CON SCRATCH

Propuesta B ROVER MARCIANO ALPHABOT Programación con Python

Fuera de nuestra propuesta

En este muro, puedes enriquecerlo:

Hecho con Padlet

Para frikis fuera del curso

Para frikis fuera del curso

11 Conectando desde Internet

Hasta ahora todas las conexiones ha sido a través de red local, pero ...

¿Podríamos comunicarnos con nuestra Raspberry ya sea de forma textual SSH como gráfica VNC desde Internet? Imagínate las posibilidades... ¡¡a que sería fascinante !!!

Vale, vale... ya veo que no te emocionas

via GIPHY

11.1 Remote.it

11.1.1 Servicios de dominio virutal

Primero lo que necesitamos es alguien que nos consiga un dominio virtual, hay varios, aquí te contamos dos :

¿Qué es eso de dominio virtual? vamos a poner las cosas claras: * Cuando contratas un servicio de Internet, navegas por el mundo con unas IP dinámicas, es decir, van cambiando, no navegas con una IP fija. Por lo tanto no puedes acceder a tu Raspberry como lo hacíamos a nivel local pues no sabes que IP tienes, y si la sabes, te la van cambiando, al menos que contrates una IP fija. * Un servicio de dominio virtual permite que te den un nombre de dominio y asocian ese nombre a la IP de tu dispositivo con la ventaja de que aunque cambie tu IP, el nombre que te han asignado no cambia.

OPCIÓN REMOTE.IT https://remot3it.zendesk.com

Registrarse en remote.it No tiene dificultades, y nos registraremos con nuestro correo electrónico y eligiremos una contraseña válida. Hay varios planes, elegiremos la personal-no comercial y gratuita.

NO-IP https://www.noip.com/

A pesar que noip.com es muy famoso y hay buenos tutoriales, en este tutorial vamos a elegir remote.it pues está especializado en la Raspberry.

11.2 Instalar remote.it en la Raspberry y añadir servicios

Tienes dos opciones:

OPCIÓN A Instalar ya una imagen RASBIAN con todos los servicios (recomendado)

Es el método más sencillo:

  1. Desgarcar la imagen del Raspbian con los servicios Remote.it ya preinstalados desde esta página
  2. Instalar la imágen en la Raspberry ver instalar Raspbian
  3. Arrancar la Raspberry en modo gráfico, utilizando un monitor, teclado y ratón.
  4. Aparece los diálogos típicos que pongas contraseña al usuario pi y configuración de teclado, idiomas...
  5. Importante, configura la Raspberry para que esté en Internet (doble click en el icono Wifi arriba a la derecha)
  6. Hay un nuevo diálogo que abre remote.it y te pide loguearte, entra con tu usuario y contraseña (OJO estamos hablando del navegador de la Raspberry no de tu ordenador) y te pide un nombre para el dispositivo y ... ya está!!
  7. Entra ahora desde tu ordenador a https://remote.it/ te logueas, y automáticamente aparece tu raspberry con el botón verde si está conectado a Internet y con la opción de activar VNC y SSH

OPCIÓN B Instalar remote.it en tu raspbian

Si optas por querer instalar remote.it en tu Raspbian sin utilizar la imagen, hay que seguir las instrucciones de esta página https://support.remote.it/hc/en-us/articles/360047542051-Installing-remoteit-on-a-Raspberry-Pi-running-Raspbian-or-Raspberry-Pi-OS

Que en definitiva los pasos importantes son :

  1. sudo apt update //Actualizar raspbian
  2. sudo apt install remoteit //instala servicio remoteit
  3. sudo remoteit add //añade el servicio que quieras tener SSH, VNC ...

11.3 SSH y VNC de mi Raspberry desde Internet

Nos vamos a la página de Remote.it y al logearnos nos aparecerá nuestro dispositivo si hemos hecho los pasos anteriores correctamente

Pinchamos en el dispositivo y nos aparece los servicios que tenemos instalados:

Vemos que tenenemos SSH, VNC y HTTP que eso lo verás si haces el curso de Alphabot

11.3.1 Conexión SSH

Pinchamos en la anterior imagen en SSH y nos aparece los valores que tenemos que necesitamos para nuestra conexión SSH

Entramos en nuestra aplicación SSH por ejemplo en Windows con PUTTY

Y ya nos sale la terminal SSH, ponemos nuestro usuario y contraseña, ¿no la sabes? y ya estamos conectados:

11.3.2 Conexión por VNC

En los servicios de nuestro dispositivo, pinchamos en VNC

Nots, puedes observar que antes remote.it ofrecía servicio HTTP que venía muy bien para manejar la cámara de Alphabot, ahora no lo ofrece

Salta una nueva página web que nos da un enlace web para conectar por VNC

o nos da la configuración que tenemos que añadir a VNC Viewer en el campo VNC Server:

evidentemente nos preguntará por nuestro usuario y nuestra contraseña en la raspberry, ¿no la sabes?.

Créditos

Créditos

Créditos

2018 por CATEDU (Javier Quintana Peiró).

Cualquier observación o detección de error en soporte.catedu.es

Los contenidos se distribuyen bajo licencia Creative Commons tipo BY-NC-SA excepto en los párrafos que se indique lo contrario.

image-1648462225402.gif

image-1648462299882.png

image-1648462361893.png

Excepto para las imágenes embebidas de GIFPY que están en estos términos.

[via GIPHY](https://giphy.com/gifs/models-older-raspberry-kh9CRgRpKlXnG)