Programación en Python con Raspberry Pi


Miguel Ángel Abellán

Septiembre 2019, Murcia



Programo Srgo Sum
### Objetivos
#### Aprender a programar en Python y MicroPython [Air:bit](https://www.makekit.no/airbit) ![](images/objetivos-2.gif)
#### Conocer el internet de las cosas ![](images/objetivos-3.gif)
#### Domótica básica con Raspberry Pi ![](images/objetivos-4.png)
#### Conectar con el mundo analógico ![](images/objetivos-5.gif)
## 1ª Sesión Sistema Operativo Raspbian
### ¿Qué es Raspberry Pi? Un ordenador de pequeñas dimensiones destinado principalmente al desarrollo de prototipos y **ámbito educativo**. ![](images/raspberry-pi-3.png) [Raspberry Pi Documentation](https://www.raspberrypi.org/documentation)
#### Modelos | Raspberry Pi | 2 B+ | 3 B+ | 4 B+ | Zero | | :--: | :--: | :--: | :--: | :--: | | Precio | 35 | 35 | 35 - 55 | 5 | | Cores | 4 | 4 | 4 | 1 | | CPU | 900 MHz | 1.2 GHz | 1.5 GHz | 1 GHz | | RAM | 1 GB | 1 GB | 1-4 GB | 512 MB | | Ethernet | Si | Si | Si | No | | WiFi | No | Si | Si | Si | | GPIO | 40 | 40 | 40 | 40 | | Consumo | 820 mA | 1400 mA | 1800 mA | 350 mA |
#### Hardware Hardware abierto, a excepción del chip principal, el Broadcomm, basado en arquitectura ARM (Advanced RISC Machine). **RISC** (Reduced Instruction Set Computer) - Énfasis en el Hardware - Idea básica: Instrucciones sencillas - MIPS: 140 instrucciones aprox. **CISC** (Complex Instruction Set Computer) - Énfasis en el Software - Idea básica: Instrucciones complejas - MIPS: 325 instrucciones aprox.
#### Software Disponible una gran cantidad de sistemas operativos (oficiales y no oficiales) para Raspberry Pi, tanto en Linux como Windows. ![](images/software.png)
### Raspbian Sistema Operativo basado en Linux Debian optimizado para el procesador ARM y recomendado por la fundación Raspberry Pi. ![](images/raspbian.png)
#### Modos de instalación - **Mediante NOOBS:** Instalación mediante asistente de instalación (recomendada para usuarios generalmente poco expertos). - **Mediante imagen:** Instalación mediante imagen del sistema operativo (para usuarios avanzados).
#### Tipos de instalación - **Raspbian Pixel:** Versión completa con entorno gráfico (versión de escritorio con menús, ventanas, iconos, fondos de pantalla, etc). - **Raspbian Lite:** Versión reducida sin entorno gráfico para utilizar en modo terminal o consola.
## Prácticas 1. Instalar Raspbian en Raspberry Pi con NOOBs 2. Instalar Raspbian en Raspberry Pi con Etcher 3. Actualizar el sistema operativo Raspbian 4. Clonar tarjeta SD Raspbian en Raspberry Pi con piclone 5. Escritorio remoto a través de VNC 6. Acceso remoto a través de SSH (avanzado) 7. Consola arcade basada en Raspberry Pi con RetroPie (opcional) 8. Introducción al sistema operativo Raspbian
### Práctica 1: [Instalar Raspbian en Raspberry Pi con NOOBs](https://www.programoergosum.es/tutoriales/instalar-raspbian-con-noobs/) ![](https://raw.githubusercontent.com/ProgramoErgoSum/Tutoriales/master/v1/instalar-raspbian-con-noobs/img/preview.jpg)
### Práctica 2: [Instalar Raspbian en Raspberry Pi con Etcher](https://www.programoergosum.es/tutoriales/instalar-raspbian-con-etcher/) ![](https://raw.githubusercontent.com/ProgramoErgoSum/Tutoriales/master/v1/instalar-raspbian-con-etcher/img/preview.jpg)
### Práctica 3: [Actualizar el sistema operativo Raspbian](https://www.programoergosum.es/tutoriales/actualizar-raspbian-en-raspberry-pi/) ![](https://raw.githubusercontent.com/ProgramoErgoSum/Tutoriales/master/v1/actualizar-raspbian-en-raspberry-pi/img/preview.jpg)
### Práctica 4: [Clonar tarjeta SD Raspbian en Raspberry Pi con piclone](https://www.programoergosum.es/tutoriales/clonar-raspbian-en-raspberry-pi/) ![](https://raw.githubusercontent.com/ProgramoErgoSum/Tutoriales/master/v1/clonar-raspbian-en-raspberry-pi/img/preview.jpg)
### Práctica 5: [Escritorio remoto a través de VNC](https://www.programoergosum.es/tutoriales/escritorio-remoto-a-traves-de-vnc/) ![](https://raw.githubusercontent.com/ProgramoErgoSum/Tutoriales/master/v1/escritorio-remoto-a-traves-de-vnc/img/preview.jpg)
### Práctica 6: (AVANZADA) [Acceso remoto a través de SSH](https://www.programoergosum.es/tutoriales/acceso-remoto-a-traves-de-ssh/) ![](https://raw.githubusercontent.com/ProgramoErgoSum/Tutoriales/master/v1/acceso-remoto-a-traves-de-ssh/img/preview.jpg)
### Práctica 7: (OPCIONAL) [Consola arcade basada en Raspberry Pi con RetroPie](https://www.programoergosum.es/tutoriales/consola-arcade-basada-en-raspberry-pi-con-retropie) ![](https://raw.githubusercontent.com/ProgramoErgoSum/Tutoriales/master/v1/consola-arcade-basada-en-raspberry-pi-con-retropie/img/preview.jpg)
### Práctica 8: [Introducción al sistema operativo Raspbian](https://www.programoergosum.es/tutoriales/introduccion-a-raspbian-en-raspberry-pi) ![](https://raw.githubusercontent.com/ProgramoErgoSum/Tutoriales/master/v1/introduccion-a-raspbian-en-raspberry-pi/img/preview.jpg)
## 2ª Sesión Programación en Python
### Lenguaje de programación Un lenguaje de programación está compuesto por símbolos y reglas sintácticas y semánticas, expresadas en forma de instrucciones y relaciones lógicas, mediante las cuales se construye el código fuente. - **Lenguajes de bajo nivel**: Diseñados para un Hardware específico. - **Lenguajes de alto nivel**: Pueden emplearse en distintos tipos de arquitecturas.
### Tipos de lenguajes de programación - **Interpretado**: Un lenguaje interpretado se ejecuta sin necesidad de ser procesado por el compilador y se detectan los errores en tiempo de ejecución. - Python - PHP - ... - **Compilado**: Un lenguaje compilado debe ser traducido a lenguaje máquina por el compilador. - C - Arduino - ...
### Paradigmas de la programación - **Funcional**: Basados en la programación declarativa de funciones matemáticas. - **Imperativo**: El más cercano a la estructura del ordenador y programación que conocemos. - **Orientado a objetos**: Utiliza clases para representar objetos programados mediante programación imperativa.
### Sistema de tipos de la programación - **Tipado estático**: Se determina el tipo de todas las expresiones en tiempo de compilación. - **Tipado dinámico**: Se determina la validez de los tipos de datos durante la ejecución del programa.
### Python - **Interpretado**: Se ejecuta sin necesidad de ser procesado por el compilador y se detectan los errores en tiempo de ejecución. - **Multiparadigma**: Soporta programación funcional, programación imperativa y programación orientada a objetos. - **Tipado dinámico**: Las variables se comprueban en tiempo de ejecución. - **Multiplataforma**: disponible para plataformas de Windows, Linux o MAC. - **Gratuito**: No dispone de licencia para programar.
## Prácticas - Aprende Programando en Python - Clase 1: Introducción - Clase 2: Variables y tipos - Clase 4: Operadores aritméticos - Clase 5: Condicionales - Clase 6: Bucles for - **Prueba de nivel A1**
### Aprende Programando Aprende Python paso a paso [Tutorial en AprendeProgramando](https://www.aprendeprogramando.es/cursos-online/python) ![](https://www.aprendeprogramando.es/images/pages/aprende-programando.png)
## 3ª Sesión Videovigilancia
### Sistema de seguridad Utilizando una Raspberry Pi podemos crearnos un sistema de videovigilancia, realizar capturas de pantallas y verlas desde el móvil.
## Prácticas - Configura una webcam en con LUVCview - Detecta movimientos con Motion (medio) - Time lapse con fswebcam (avanzado)
### Práctica 1: [Configura una webcam en Raspberry Pi con LUVCview](https://www.programoergosum.es/tutoriales/webcam-con-luvcview-en-raspberry-pi) ![](https://raw.githubusercontent.com/ProgramoErgoSum/Tutoriales/master/v1/webcam-con-luvcview-en-raspberry-pi/img/preview.jpg)
### Práctica 2: (MEDIO) [Detecta movimientos con una webcam y Motion en Raspberry Pi](https://www.programoergosum.es/tutoriales/webcam-con-motion-en-raspberry-pi) ![](https://raw.githubusercontent.com/ProgramoErgoSum/Tutoriales/master/v1/webcam-con-motion-en-raspberry-pi/img/preview.jpg)
### Práctica 3: (AVANZADO) [Imágenes automáticas con fswebcam en Raspberry Pi](https://www.programoergosum.es/tutoriales/webcam-con-fswebcam-en-raspberry-pi) ![](https://raw.githubusercontent.com/ProgramoErgoSum/Tutoriales/master/v1/webcam-con-fswebcam-en-raspberry-pi/img/preview.jpg)
## Prácticas - Aprende Programando en Python - Clase 7 - Clase 8 - Clase 9 - Prueba de nivel A2 - Clase 13 - Clase 14
### Aprende Programando Aprende Python paso a paso [Tutorial en AprendeProgramando](https://www.aprendeprogramando.es/cursos-online/python) ![](https://www.aprendeprogramando.es/images/pages/aprende-programando.png)
## 4ª Sesión Programación en MicroPython
### ¿Qué es GitHub? GitHub es una plataforma para alojar proyectos utilizando el sistema de control de versiones de **Git**. ![](images/github.png) [GitHub ElCableAmarillo](https://github.com/ElCableAmarillo)
## Prácticas - Crea una cuenta en GitHub - Crea un repositorio para crear tu web en HTML - Haz un fork del proyecto slides
### Práctica 1: [Introducción a GitHub](https://www.programoergosum.es/tutoriales/introduccion-a-github/) ![](https://raw.githubusercontent.com/ProgramoErgoSum/Tutoriales/master/v1/introduccion-a-github/img/preview.jpg)
### Micropython MicroPython​ es una implementación de Python 3, escrita en C, optimizada para ejecutarse en un microcontrolador.
### Microbit Micro:bit es un proyecto de la BBC cuyo propósito principal es aprender a programar. [Ideas](https://microbit.org/ideas/) [Diseños](https://www.thingiverse.com/search?q=microbit) [Herramientas](https://github.com/carlosperate/awesome-microbit)
## Prácticas - Primeros pasos con Micro:bit y Mu Editor - Matriz de LEDs en Micro:bit con MicroPython - Botones en Micro:bit con MicroPython - Pines IO en Micro:bit con MicroPython - Acelerómetro en Micro:bit con MicroPython
### Práctica 1: [Programa tu Micro:bit en Raspberry Pi con MicroPython](https://www.programoergosum.es/tutoriales/introduccion-a-mu-editor-en-raspbian/) ![](https://raw.githubusercontent.com/ProgramoErgoSum/Tutoriales/master/v1/introduccion-a-mu-editor-en-raspbian/img/preview.jpg)
### Práctica 2: [Matriz de LEDs en Microbit con Python](https://www.programoergosum.es/tutoriales/matriz-de-leds-en-microbit-con-python/) ![](https://raw.githubusercontent.com/ProgramoErgoSum/Tutoriales/master/v1/matriz-de-leds-en-microbit-con-python/img/preview.jpg)
### Práctica 3: [Botones en Microbit con Python](https://www.programoergosum.es/tutoriales/botones-en-microbit-con-python/) ![](https://raw.githubusercontent.com/ProgramoErgoSum/Tutoriales/master/v1/botones-en-microbit-con-python/img/preview.jpg)
### Práctica 4: [Pines GPIO en Microbit con Python](https://www.programoergosum.es/tutoriales/pines-gpio-en-microbit-con-python/) ![](https://raw.githubusercontent.com/ProgramoErgoSum/Tutoriales/master/v1/pines-gpio-en-microbit-con-python/img/preview.jpg)
### Práctica 5: [Acelerómetro en Microbit con Python](https://www.programoergosum.es/tutoriales/acelerometro-en-microbit-con-python/) ![](https://raw.githubusercontent.com/ProgramoErgoSum/Tutoriales/master/v1/acelerometro-en-microbit-con-python/img/preview.jpg)
## 5ª Sesión Pines GPIO + Arduino
### Pines GPIO General Purpose Input Output (GPIO) es un sistema de entrada y salida de propósito general. ![](images/gpio.png) [Pinout](https://es.pinout.xyz/#)
### Modo de los pines - GPIO: se numeran de forma física que ocupan en la placa (gris) - BCM: se numeran por la correspondencia en el chip Broadcom CPU. ![](images/gpio-rpi.png)
### Thonny Python IDE Thonny Python IDE es un entorno de programación sencillo para programar en Python con Raspbian.
## Prácticas - Primeros pasos con Pines GPIO en Raspberry Pi
### Práctica 1: [Primeros pasos con Pines GPIO en Raspberry Pi](https://www.programoergosum.es/tutoriales/introduccion-a-pines-gpio-en-raspbian) ![](https://raw.githubusercontent.com/ProgramoErgoSum/Tutoriales/master/v1/introduccion-a-pines-gpio-en-raspbian/img/preview.jpg)
### PySerial con Arduino Con PySerial podemos comunicarnos a través del serial entre Arduino y Raspberry Pi.
## Prácticas - Instalar Arduino IDE en Raspberry Pi - Conectando Raspberry Pi y Arduino con PySerial
### Práctica 1: [Instalar Arduino IDE en Raspberry Pi](https://www.programoergosum.es/tutoriales/instalar-arduino-ide-en-raspbian) ![](https://raw.githubusercontent.com/ProgramoErgoSum/Tutoriales/master/v1/instalar-arduino-ide-en-raspbian/img/preview.jpg)
### Práctica 2: [Conectando Raspberry Pi y Arduino con PySerial](https://www.programoergosum.es/tutoriales/conectando-arduino-con-pyserial/) ![](https://raw.githubusercontent.com/ProgramoErgoSum/Tutoriales/master/v1/conectando-arduino-con-pyserial/img/preview.jpg)
## 6ª Sesión Internet de las cosas
## Prácticas - Servidor web con Flask en Python - Control de GPIO con Flask en Python - Arranque automático en Raspbian (AVANZADA)
### Práctica 1: [Servidor web con Flask en Python](https://www.programoergosum.es/tutoriales/servidor-web-con-flask-en-raspberry-pi/) ![](https://raw.githubusercontent.com/ProgramoErgoSum/Tutoriales/master/v1/servidor-web-con-flask-en-raspberry-pi/img/preview.jpg)
### Práctica 2: [Control de GPIO con Flask en Python](https://www.programoergosum.es/tutoriales/control-de-gpio-con-flask-en-raspberry-pi/) ![](https://raw.githubusercontent.com/ProgramoErgoSum/Tutoriales/master/v1/control-de-gpio-con-flask-en-raspberry-pi/img/preview.jpg)
### Práctica 3: (AVANZADA) [Arranque automático en Raspbian](https://www.programoergosum.es/tutoriales/arranque-automatico-en-raspbian/) ![](https://raw.githubusercontent.com/ProgramoErgoSum/Tutoriales/master/v1/arranque-automatico-en-raspbian/img/preview.jpg)
## 7ª Sesión Proyectos TIC