Capítulo 6
Interfaz de entrada/salida en el Raspberry Pi
Introducción
Entrada/salida de propósito general
Salida digital GPIO
Entrada digital GPIO
Resistencias pull-up y pull-down internas
Interfaz con circuitos DC con alimentación
Uso de C++ para el control de la salida GPIO con sysfs
Más sobre programación con C++
Funciones de retrollamada
Hilos de ejecución POSIX
Linux poll (sys/poll.h)
Una clase GPIO mejorada
Uso de la memoria para el control de la salida GPIO
Control de GPIO mediante devmem2
Control de GPIO mediante C y /dev/mem
Cambiar la configuración de las resistencias internas
WiringPi
Cómo instalar wiringPi
El comando gpio
Programación con wiringPi
Cambiar el estado de un LED mediante wiringPi
Pulsación de un botón: respuesta LED
Comunicación con sensores One-Wire
PWM y los relojes de propósito general
Pulse-Width Modulation (PWM)
Aplicación PWM: oscurecimiento de un LED
Aplicación PWM: control de un servomotor
Señales de reloj de propósito general
Las salidas GPIO y los permisos
Cómo escribir reglas udev
Los permisos y wiringPi
Resumen
Capítulo 7
Compilación cruzada y el IDE Eclipse
Cómo configurar una toolchain para compilación cruzada
La cadena de herramientas Linaro Toolchain para Raspbian
Comprobación de la toolchain
Cómo actualizar la variable de entorno PATH
Cadenas de herramientas de compilación cruzada para Debian
Emulación de la arquitectura armhf
Compilación cruzada con librerías de terceras partes (multiarch)
Compilación cruzada a través de Eclipse
Cómo instalar Eclipse en Linux
Configuración de Eclipse para compilación cruzada
El explorador de sistemas remotos
Cómo integrar GitHub en Eclipse
Depuración en remoto
Documentación automática en Doxygen
Cómo añadir soporte Doxygen a Eclipse
Compilación de Linux
Cómo descargar el código fuente del núcleo
Compilación del núcleo de Linux
Cómo instalar el núcleo de Linux
Cómo crear una distribución de Linux (avanzado)
Resumen
Otras lecturas
Capítulo 8
Interfaz con los buses del Raspberry Pi
Introducción a las comunicaciones por bus
I2C
Hardware I2C
El bus I2C en el RPi
Cómo habilitar el bus I2C en el RPi
Cómo habilitar un segundo bus I2C
Un circuito de prueba I2C
Un reloj de tiempo real
El acelerómetro ADXL345
Cableado del circuito de pruebas
Utilización de las herramientas I2C-tools de Linux
i2cdetect
i2cdump
i2cget
i2cset
Comunicaciones en C por el bus I2C
Encapsulación de dispositivos I2C en clases C++
SPI
Hardware SPI
SPI en el RPi
Pruebas en el bus SPI
Una primera aplicación SPI (74HC595)
Cableado del circuito de pruebas 74HC595
Comunicaciones SPI utilizando lenguaje C
Comunicación bidireccional SPI en C/C++
La interfaz ADXL345 SPI
Conexión del ADXL345 al RPi
Encapsulación de dispositivos SPI en clases C++
Comunicación SPI de tres hilos
Múltiples dispositivos esclavos SPI en el RPi
UART
El UART del RPi
Ejemplos de UART en C
Cliente serie RPi
Servidor serie LED RPi
Aplicaciones UART: GPS
Traducción de nivel lógico
Resumen
Otras lecturas
Capítulo 9
Mejora de las interfaces de entrada/salida en el RPi
Introducción
Conversión analógico-digital
Conversores analógico-digitales (ADC) SPI
El ADC SPI MCP3208
Cómo cablear el MCP3208 al RPi
Cómo comunicarse con el MCP3208
Una aplicación ADC: fotómetro analógico
Cómo comprobar el rendimiento del ADC SPI
La librería C para el BCM2835 (avanzado)
Conversión digital-analógica
Un conversor digital-analógico de bus I2C
Un conversor digital-analógico SPI
Cómo añadir salidas PWM al RPi
Cómo ampliar las salidas GPIO del RPi
El MCP23017 y el bus I2C
Cómo controlar el circuito LED GPIO
Cómo leer el estado del pulsador GPIO
Un ejemplo de configuración de interrupciones (avanzado)
El MCP23S17 y el bus SPI
Una clase C++ para dispositivos MCP23x17
Cómo añadir UART al RPi
Resumen
Capítulo 10
Cómo interaccionar con el entorno físico
Interfaces con los actuadores
Motores de corriente continua (DC)
Propulsión de motores DC pequeños (hasta 1,5 A)
Propulsión de motores DC mayores (más de 1,5 A)
Motores paso a paso
El controlador de motor paso a paso EasyDriver
Un circuito de control para un motor paso a paso en el RPi
Cómo controlar un motor paso a paso usando C++
Relés
Interfaz con sensores analógicos
Sensores analógicos lineales
Sensores analógicos no lineales
Acondicionamiento de la señal en un sensor analógico
Escalado de la señal mediante división de voltaje
Escalado y voltaje de desequilibrio o desplazamiento (offset) de la señal
Interfaz con un acelerómetro analógico
Interfaz con pantallas locales
Módulos de pantalla MAX7219
Módulos LCD de caracteres
Pantallas OLED
Compilación de librerías C/C++
Makefiles
CMake
Un ejemplo "Hello World"
Compilación de librerías C/C++
Usando una librería compartida (.so) o estática (.a)
Resumen
Capítulo 11
Interfaz en tiempo real con el Arduino
El Arduino
Un dispositivo esclavo serie Arduino
Ejemplo: una prueba de eco UART
Eco de la información de minicom (con parpadeo de LED)
Ejemplos de eco UART en C
Control de comandos UART en un Arduino
Un dispositivo esclavo Arduino I2C
Un circuito de prueba I2C
Ejemplo de eco de registro I2C
Ejemplo de sensor de temperatura I2C
Sensor de temperatura I2C con LED de advertencia
Comunicación en modo esclavo del Arduino usando C/C++
Ejemplo de sensor ultrasónico I2C
Un dispositivo esclavo SPI Arduino
Programación del Arduino en línea de comandos del RPi
Resumen
Parte III
Comunicación e interacción avanzadas
Capítulo 12
IoT (Internet of Things)
IoT (Internet of Things)
El RPi como sensor IoT
El RPi como sensor de servidor web
Nginx
Cómo configurar el servidor web Nginx
Cómo crear scripts y páginas web
PHP en el RPi
Aplicaciones GNU Cgicc (avanzado)
Un cliente web C/C++
Introducción a las comunicaciones en red
Un cliente web C/C++
Comunicaciones seguras mediante OpenSSL
El RPi como "Thing"
ThingSpeak
El programador de tareas Cron de Linux
El sistema crontab
User crontab
Cómo enviar correo electrónico desde el RPi
"Si esto, entonces aquello" (If This Then That, IFTTT)
Frameworks IoT a gran escala
MQ Telemetry Transport (MQTT)
IBM Bluemix Internet of Things
Ejemplo de publicación con IBM IoT MQTT usando Node.js
Ejemplo de publicación con IBM IoT MQTT usando C++
Visualización de datos con IBM Quickstart
Cliente/servidor con C++
Gestión de dispositivos IoT
Monitorización remota del RPi
Temporizadores RPi Watchdog
Direcciones IP estáticas
Alimentación por Ethernet (PoE, Power over Ethernet)
Módulos de extración PoE (PEM) (avanzado)
Resumen
Capítulo 13
Control y comunicación inalámbricas
Introducción a las comunicaciones inalámbricas
Comunicaciones Bluetooth
Cómo instalar un adaptador Bluetooth
Comprobación del módulo LKM
Читать дальше