Instalación de Home Assistant desde cero en Raspberry Pi


Home Assistant es una plataforma de automatización del hogar de código abierto que te permite controlar y monitorear dispositivos y servicios en tu hogar. Esta diseñado para funcionar como un concentrador central para la gestión de la domótica, lo que permite integrar una variedad de dispositivos y sistemas en una única interfaz.

Algunas de las características clave de Home Assistant incluyen:

  1. Integración de Dispositivos: Home Assistant es compatible con una amplia gama de dispositivos y tecnologías de automatización del hogar, como luces inteligentes, termostatos, cerraduras, cámaras de seguridad, sensores, entre otros. Puede integrar dispositivos de diferentes fabricantes y protocolos.
  2. Automatización y Escenas: Puede crear automatizaciones personalizadas para que los dispositivos interactúen entre sí en respuesta a ciertos eventos o condiciones. También puede configurar escenas para controlar varios dispositivos con un solo comando.
  3. Control Remoto: Puede acceder a Home Assistant de forma remota a través de una interfaz web o utilizando aplicaciones móviles, lo que permite controlar y monitorear su hogar desde cualquier lugar.
  4. Soporte para Plataformas de Voz: Home Assistant es compatible con plataformas de voz como Amazon Alexa y Google Assistant, lo que permite controlar tus dispositivos usando comandos de voz.
  5. Personalización y Extensibilidad: La plataforma es altamente personalizable y extensible. Puede crear paneles de control personalizados, utilizar temas y agregar componentes adicionales según sus necesidades.
  6. Seguridad: Home Assistant ofrece características de seguridad, como la posibilidad de habilitar la autenticación de dos factores y utilizar conexiones seguras a través de HTTPS.

Home Assistant se ejecuta en una variedad de plataformas, incluyendo Raspberry Pi, servidores Linux, contenedores Docker y más siendo una opción popular para aquellos que desean tener un control centralizado sobre sus dispositivos domésticos inteligentes y desean evitar depender de plataformas propietarias. Además, al ser de código abierto, la comunidad de usuarios contribuye al desarrollo y mejora continua de la plataforma.

Instalar Home Assistant en una Raspberry Pi es una de las opciones mas populares y viablse para muchos usuarios, especialmente aquellos que están buscando una solución de automatización del hogar de bajo costo y energéticamente eficiente. Aquí hay algunas consideraciones:

  1. Bajo Costo: Las Raspberry Pi son dispositivos de bajo costo, lo que hace que sea accesible para una amplia gama de usuarios.
  2. Consumo de Energía: Las Raspberry Pi tienen un bajo consumo de energía en comparación con computadoras más grandes. Esto las hace ideales para estar siempre encendidas y actuar como un concentrador de automatización del hogar.
  3. Soporte Oficial: Home Assistant ofrece soporte oficial para instalar la plataforma en una Raspberry Pi, lo que facilita la configuración.
  4. Comunidad Activa: Dada la popularidad de las Raspberry Pi y Home Assistant, encontrarás una comunidad activa que puede proporcionar soporte y compartir experiencias.

Sin embargo, hay algunas consideraciones que debe tener en cuenta:

  1. Recursos Limitados: Las Raspberry Pi tienen recursos limitados en términos de potencia de procesamiento, RAM y almacenamiento. Si planea integrar muchos dispositivos o usar complejas automatizaciones, podría alcanzar los límites de rendimiento de la Raspberry Pi.
  2. Almacenamiento SD: Las Raspberry Pi generalmente utilizan tarjetas SD para almacenamiento. Las tarjetas SD pueden desgastarse con el tiempo debido a la escritura constante de datos, por lo que es posible que desees considerar opciones para mitigar este desgaste, como utilizar tarjetas de alta calidad o configurar la plataforma para minimizar la escritura en la tarjeta.
  3. Evaluación de Requisitos: Antes de decidirse por una Raspberry Pi, evalúe sus necesidades específicas. Si tiene una gran cantidad de dispositivos o si planea ejecutar aplicaciones adicionales junto con Home Assistant, podría necesitar una plataforma más potente ( por ejemplo un minipc).

En general, instalar Home Assistant en una Raspberry Pi es una excelente opción para muchos usuarios, especialmente aquellos que están comenzando con la automatización del hogar y desean una solución asequible y fácil de configurar. Sin embargo, tenga en cuenta las limitaciones de recursos y asegúrese de que se adapte a sus necesidades específicas.

Esta guía muestra cómo instalar el sistema operativo Home Assistant en su Raspberry Pi usando Raspberry Pi Imager , por línea de comando o mediante un contenedor. Si su plataforma no admite Raspberry Pi Imager también es posible porque puede utilizar Balena Etcher en su lugar (es el ultimo método que describimos al final de este post).

Photo by Frank Cone on Pexels.com

METODO 1:ESCRIBIR LA IMAGEN EN SU TARJETA SD.

Sin duda es el método mas sencillo de realizar porque básicamente vamos a instalar una imagen de Raspbian con todo instalado y solo tendremos que personalizar los aspectos mas generales. Estos son los pasos a seguir:

  1. Descargue e instale Raspberry Pi Imager en su ordenador como se describe en https://www.raspberrypi.com/software/ .Instalar el generador de imágenes Raspberry Pi
  2. Abra Raspberry Pi Imager y seleccione su dispositivo Raspberry Pi.Abra el generador de imágenes Raspberry Pi
  3. Elija el sistema operativo:
    1. Seleccione Elegir sistema operativo .
    2. Seleccione Otro SO específico > Asistentes del hogar y domótica > Home Assistant .
    3. Elija el sistema operativo Home Assistant que coincida con su hardware (RPi 3 o RPi 4).Elige el sistema operativo
  4. Elija el almacenamiento:
    1. Inserte la tarjeta SD en la computadora. Nota: se sobrescribirá el contenido de la tarjeta.
    2. Selecciona tu tarjeta SD.Seleccione el almacenamiento
  5. Escriba el instalador en la tarjeta SD:
    1. Para iniciar el proceso, seleccione Siguiente .
    2. Espere a que el sistema operativo Home Assistant se escriba en la tarjeta SD.Seleccione escribir
  6. Expulse la tarjeta SD.

INICIE SU RASPBERRY PI

  1. Inserte la tarjeta SD en tu Raspberry Pi.
  2. Conecte un cable Ethernet y asegúrese de que la Raspberry Pi esté conectada a la misma red que su computadora.
  3. Conecte la fuente de alimentación para iniciar el dispositivo.

ACCEDER AL ASISTENTE DE INICIO

Unos minutos después de conectar la Raspberry Pi, podrá comunicarse con su nuevo Home Assistant.

  • En el navegador de su sistema de escritorio, ingrese homeassistant.local:8123 .Si está ejecutando una versión anterior de Windows o tiene una configuración de red más estricta, es posible que necesite acceder a Home Assistant en homeassistant:8123 o `http://XXXX:8123` (reemplace XXXX con la dirección IP de su Raspberry Pi).
  • El tiempo que tarda esta página en estar disponible depende de su hardware. En una Raspberry Pi 4, esta página debería estar disponible en un minuto.
    • Si no aparece después de 5 minutos en un Pi 4, tal vez la imagen no se escribió correctamente.
      • Intente actualizar la tarjeta SD nuevamente, posiblemente incluso pruebe con una tarjeta SD diferente.
    • Si esto no ayuda, vea la salida de la consola en Raspberry Pi.
      • Para hacer esto, conecte un monitor a través de HDMI.

¡Felicidades! ¡Terminaste la configuración de Raspberry Pi!

METODO 2:Instalar el núcleo de Home Assistant con linea de comandos

Este es un proceso de instalación avanzado y algunos pasos pueden diferir en su sistema. Teniendo en cuenta la naturaleza de este tipo de instalación, asumimos que puede manejar diferencias sutiles entre este documento y la configuración del sistema que está utilizando. En caso de duda, considere uno de los otros métodos de instalación , ya que podrían ser más adecuados.

Requisitos previos

Esta guía asume que ya tiene un sistema operativo configurado y ha instalado Python 3.11 (incluido el paquete python3-dev) o una versión más reciente.

Para instalar Python 3.11 en su Raspberry Pi, hay varias formas de hacerlo. Aquí hay una forma de hacerlo:

  1. Abra la terminal en su Raspberry Pi.
  2. Escriba el siguiente comando en la terminal: sudo apt-get update
  3. Escriba el siguiente comando en la terminal: sudo apt-get install software-properties-common
  4. Escriba el siguiente comando en la terminal: sudo add-apt-repository ppa:deadsnakes/ppa
  5. Escriba el siguiente comando en la terminal: sudo apt-get update
  6. Escriba el siguiente comando en la terminal: sudo apt-get install python3.11

Esto debería instalar Python 3.11 en su Raspberry Pi. Si tiene algún problema, asegúrese de que su Raspberry Pi esté conectada a Internet y que los comandos se hayan escrito correctamente.

También puede descargar Python 3.11 desde el sitio web oficial de Python y compilarlo desde la fuente. Sin embargo, esta es una opción más avanzada y no se recomienda para principiantes.

INSTALAR DEPENDENCIAS

Antes de comenzar, asegúrese de que su sistema esté completamente actualizado, todos los paquetes de esta guía están instalados con apt, si su sistema operativo no lo tiene, busque alternativas.

sudo apt-get update
sudo apt-get upgrade -y

Instale las dependencias:

sudo apt-get install -y python3 python3-dev python3-venv python3-pip bluez libffi-dev libssl-dev libjpeg-dev zlib1g-dev autoconf build-essential libopenjp2-7 libtiff6 libturbojpeg0-dev tzdata ffmpeg liblapack3 liblapack-dev libatlas-base-dev

Las dependencias mencionadas anteriormente pueden diferir o faltar, según su sistema o el uso personal de Home Assistant.

CREAR UNA CUENTA

Agregue una cuenta para Home Assistant Core llamada homeassistant. Dado que esta cuenta es solo para ejecutar Home Assistant Core, se agregan argumentos adicionales -rm para crear una cuenta del sistema y crear un directorio de inicio. Los argumentos -G dialout,gpio,i2cagregan al usuario al dialoutgpioal i2cgrupo. El primero es necesario para utilizar controladores Z-Wave y Zigbee, mientras que el segundo es necesario para comunicarse con GPIO.

sudo useradd -rm homeassistant -G dialout,gpio,i2c

CREAR EL ENTORNO VIRTUAL

Primero crearemos un directorio para la instalación de Home Assistant Core y cambiaremos el propietario de la homeassistantcuenta.

sudo mkdir /srv/homeassistant
sudo chown homeassistant:homeassistant /srv/homeassistant

El siguiente paso es crear y cambiar a un entorno virtual para Home Assistant Core. Esto se hará con la cuenta homeassistant.

sudo -u homeassistant -H -s
cd /srv/homeassistant
python3 -m venv .
source bin/activate

Una vez que haya activado el entorno virtual (observe que el mensaje cambia a (homeassistant) homeassistant@raspberrypi:/srv/homeassistant $), deberá ejecutar el siguiente comando para instalar un paquete de Python requerido.

python3 -m pip install wheel

Una vez que haya instalado el paquete Python requerido, ¡es el momento de instalar Home Assistant Core!

pip3 install homeassistant==2023.11.3

Inicie Home Assistant Core por primera vez. Esto completará la instalación por usted, creará automáticamente el .homeassistantdirectorio de configuración en el /home/homeassistantdirectorio e instalará las dependencias básicas.

hass

Ahora puede acceder a su instalación a través de la interfaz web en http://homeassistant.local:8123.

Si esta dirección no funciona, también puede probar http://localhost:8123http://X.X.X.X:8123(reemplace XXXX con la dirección IP de su máquina).

Cuando ejecute el comando hass por primera vez, descargará, instalará y almacenará en caché las bibliotecas/dependencias necesarias. Este procedimiento puede tardar entre 5 y 10 minutos. Durante ese tiempo, es posible que reciba un error de «no se puede acceder al sitio» al acceder a la interfaz web. Esto sólo sucederá la primera vez. Los reinicios posteriores serán mucho más rápidos.

SSH remoto

Ciertamente todos los comandos comentados lo podemos ejecutar r desde la consola de Raspberry pi con un teclado, monitor y ratón , pero seguramente desde un ordenador convencional será mucho mas fácil, para ello desde W11, puede usar SSH. Hay varias formas de hacerlo, pero aquí hay una forma de hacerlo:

  1. Asegúrese de que su Raspberry Pi esté conectada a la misma red que su computadora.
  2. Abra PowerShell en su computadora presionando Ctrl + Shift + P.
  3. Escriba el siguiente comando en PowerShell: ssh [nombre de usuario]@[dirección IP de Raspberry Pi].
  4. Reemplace [nombre de usuario] con el nombre de usuario de su Raspberry Pi y [dirección IP de Raspberry Pi] con la dirección IP de su Raspberry Pi.
  5. Presione Enter y escriba la contraseña de su Raspberry Pi cuando se le solicite.

Si no ha habilitado SSH en su Raspberry Pi, deberá hacerlo primero.

Recuerde por cierto que para obtener la dirección IP de su Raspberry puede usar el comando ifconfig.

METODO 3:INSTALACIÓN CON DOCKER

Este método rivaliza con el método inicial pues la instalación con Docker es sencilla. Estos son los pasos a realizar:

En primer lugar ajuste el siguiente comando para que:

  • /PATH_TO_YOUR_CONFIGapunta a la carpeta donde desea almacenar su configuración y ejecutarla. Asegúrate de conservar la :/configpieza.
  • MY_TIME_ZONEes un nombre de base de datos tz , como TZ=America/Los_Angeles.
  • D-Bus es opcional pero necesario si planea utilizar la integración Bluetooth

Una vez que el contenedor de Home Assistant se esté ejecutando, se debería poder acceder a Home Assistant usando http://<host>:8123(reemplazar con el nombre de host o IP del sistema). Puede continuar con la incorporación.

REINICIAR EL ASISTENTE DE INICIO

Si cambia la configuración, debe reiniciar el servidor. Para hacerlo tienes 3 opciones.

  1. En la interfaz de usuario de Home Assistant, vaya a Configuración > Sistema y haga clic en el botón Reiniciar .
  2. Puede ir a Herramientas de desarrollador > Servicios , seleccionar el servicio homeassistant.restarty seleccionar Llamar al servicio .
  3. Reinícielo desde una terminal.

DOCKER COMPOSER

docker composeya debería estar instalado en su sistema. De lo contrario, puede instalarlo manualmente .

A medida que el comando Docker se vuelve más complejo, docker composepuede ser preferible cambiar a y admitir el reinicio automático en caso de falla o reinicio del sistema. Cree un archivo compose.yml:

version: '3'
services:
  homeassistant:
    container_name: homeassistant
    image: "ghcr.io/home-assistant/home-assistant:stable"
    volumes:
      - /PATH_TO_YOUR_CONFIG:/config
      - /etc/localtime:/etc/localtime:ro
      - /run/dbus:/run/dbus:ro
    restart: unless-stopped
    privileged: true
    network_mode: host

Inícielo ejecutando:

docker compose up -d

Una vez que el contenedor Home Assistant se esté ejecutando, se debería poder acceder a Home Assistant usando http://<host>:8123(reemplazar con el nombre de host o IP del sistema). Puede continuar con la incorporación.

DISPOSITIVOS DE EXPOSICIÓN

Para utilizar Zigbee u otras integraciones que requieran acceso a dispositivos, debe asignar el dispositivo apropiado al contenedor. Asegúrese de que el usuario que ejecuta el contenedor tenga los privilegios correctos para acceder al /dev/tty*archivo, luego agregue la asignación del dispositivo a las instrucciones de su contenedor:CLI de ventana acoplableComposición acoplable

docker run ... --device /dev/ttyUSB0:/dev/ttyUSB0 ...

OPTIMIZACIONES

Home Assistant Container utiliza una biblioteca de asignación de memoria alternativa, jemalloc, para una mejor administración de la memoria y acelerar el tiempo de ejecución de Python.

Como jemalloc puede causar problemas en cierto hardware, se puede desactivar pasando la variable de entorno DISABLE_JEMALLOCcon cualquier valor, por ejemplo:

El mensaje de error <jemalloc>: Unsupported system page sizees un indicador conocido.

METODO 4:Escribiendo la imagen con Balena Etcher

Por ultimo ,utilice este procedimiento si su plataforma no admite Raspberry Pi Imager.

  1. Inserte la tarjeta SD en la computadora. Nota: se sobrescribirá el contenido de la tarjeta.
  2. Descargue e inicie Balena Etcher . Es posible que necesite ejecutarlo con privilegios de administrador en Windows.
  3. Descargue la imagen a su ordenador.
    • Copie la URL correcta para Raspberry Pi 3 o 4 (Nota: ¡hay 2 enlaces diferentes a continuación!):
https://github.com/home-assistant/operating-system/releases/download/11.1/haos_rpi4-64-11.1.img.xz

Seleccione y copie la URL o use el botón «copiar» que aparece cuando pasa el cursor sobre ella.

  1. Pegue la URL en tu navegador para iniciar la descarga.
  2. Seleccione Flash del archivo y seleccione la imagen que acaba de descargar.
    • Flash desde URL no funciona en algunos sistemas.

6. Seleccione el objetivo

 Captura de pantalla del software Etcher que muestra el botón de selección de destino resaltado.

7. Seleccione la tarjeta SD que desea utilizar para su instalación. Captura de pantalla del software Etcher que muestra los objetivos disponibles.

8. Seleccione ¡Flash! para empezar a escribir la imagen. Captura de pantalla del software Etcher que muestra el botón Flash resaltado.

9. Una vez que Balena Etcher haya terminado de escribir la imagen, verá una confirmación.Captura de pantalla del software Etcher que muestra que la instalación se ha completado.

Mas información en https://www.home-assistant.io/installation/raspberrypi/

Control de puertos en Raspberry Pi


La versión original B de la Raspberry Pi Modelo A y B era una computadora de una tarjeta individual de $ 35 con un conector de entrada / salida de uso general (GPIO) de 26 pines  !y esto lleva un conjunto de señales y buses!. Hay 8 pines de E / S digitales de uso general – estos pueden ser programados como salidas digitales o entradas. Dos de estos pines (en Pi de 40 pines, sólo uno de 26 pines Pi) se puede designar para la salida de hardware PWM también. Además, hay una interfaz I2C de 2 hilos y una interfaz SPI de 4 hilos (con una segunda línea de selección, lo que hace 5 pines en total) y el UART serie con otros 2 pines.

A lo largo de los años ha habido algunas actualizaciones:

  • El modelo B, Revisión 1.1 Raspberry Pi tiene un adicional de 4 líneas GPIO en un conector separado que tiene que soldar en el tablero.
  • El modelo A + y B + Raspberry Pi’s representa 2 años de investigación, desarrollo y pruebas y  cuenta con un solo conector GPIO de 40 pines con 28 clavijas GPIO utilizables y 4 tomas USB.
  • El modelo 2 cuenta con un procesador quad-core Arm A7 con 1 GB de RAM. Mismo GPIO.
  • El modelo Zero es un corte de Pi A + (1GHz). 40-pines GPIO conector y muy poco más. En efecto en 2015 la Fundación Raspberry Pi lanzaba la Zero, un modelo que destaca por ser baratísimo – del orden de 5 dólares – más compacto, con menos componentes y también menor oferta de puertos. En este caso para conectarla a internet podremos emplear su puerto Ethernet o enchufarle un dongle USB para el Wi-Fi. Dos años después se lanzaba la Zero W (10,53 euros), que seguía la estela de precios bajos – 10 dólares – pero implementaba Wi-Fi y Bluetooth, una novedad de lo más útil para usarla en proyectos. Para paliar uno de esos problemas inherentes a su sencilla propuesta disponemos de la Raspberry Pi Zero WH (14,60 euros), que en este caso lleva los pines GPIO presoldados. Si se es principiante, mejor apostar por otros modelos ya que pese a su bajo coste y reducidas dimensiones, es un modelo básico, adolece de puertos USB estándar y como hemos visto, en algunos casos no incluye pines GPIO, lo que en la práctica se traduce en tener que soldar los pines y tener que emplear un adaptador microUSB-USB. No es ni mucho menos el modelo más rápido, pero resulta particularmente útil para proyectos que conllevan iluminación, motores o cámaras.
  • El modelo 3 cuenta con un procesador quad-core Arm A8 (64 bits) con la misma RAM y GPIO que el modelo 2, sin embargo también cuenta con Wi-Fi y Bluetooth. Aún el mismo precio de $ 35.Las interfaces I2C, SPI y UART también se pueden utilizar como pines de E / S de uso general cuando no se usan en sus modos de bus, dando un total de 8 + 2 + 5 + 2 = 17 pines E / S en el conector P1 Además de 4 más en el conector P5 en un Revision 2 Pi) y 28 pines E / S en las tarjetas B + y 2 y 3 (aunque 2 se reservan para la interfaz HAT I2C, pero se pueden utilizar como GPIOs normales si no se utiliza un Tablero.
  • El modelo  4B  es la última y más potente de las Rpi y llega con avances que los usuarios agradecemos mucho. El primero es su mayor rendimiento, gracias a las especificaciones de su procesador y sus opciones de memoria de acceso aleatorio, llegando incluso a los 8GB. Gracias a este salto puede emplearse para aplicaciones más exigentes en RAM como puede ser el formato de ordenador de escritorio o como servidor. La segunda gran novedad tiene que ver con el abanico de opciones que ofrecen sus puertos. Así, cuenta con una oferta de puertos USB 3.0 y 2.0 donde las generaciones anteriores se quedaban en el estándar antiguo, un estándar que ofrece una mayor transferencia de datos.

raspberrypi

WiringPi es una biblioteca  bajo la licencia LGPLv3 de GNU de acceso GPIO basada en PIN escrita en C para el BCM2835 utilizado en la RP . Es utilizable desde C, C ++ y RTB (BASIC), así como muchos otros lenguajes con envolturas adecuadas Está diseñado para ser familiar a las personas que han usado el sistema de » cableado » de Arduino 

WiringPi incluye una utilidad de línea de comandos gpio que se puede utilizar para programar y configurar los pines GPIO. Tambine puede usarse  para leer y escribir los pines e incluso utilizarlo para controlarlos desde scripts de shell.

WiringPi es extensible y se proporcionan módulos para extender el cableado Pi para usar dispositivos de interfaz analógica en el Gertboard y para usar los populares chips de expansión GPIO MCP23x17 / MCP23x08 (I2C 7 SPI), así como módulos que permitirá bloques de hasta 4 × 74 × 595 para ser encadenados juntos por un valor adicional de 32 bits de salida como una sola unidad. (Usted puede tener varios bloques de 4 74x595s si es necesario)

Además, puede escribir fácilmente sus propios módulos de expansión para integrar sus propios dispositivos periféricos con el cableadoPi según sea necesario.

WiringPi soporta lectura analógica y escritura, y aunque no hay hardware analógico nativo en un Pi por defecto, se proporcionan módulos para soportar los chips analógicos Gertboards y otros dispositivos A / D y D / A se pueden implementar con relativa facilidad.

Adicionalmente , devLib es un conjunto de rutinas de la biblioteca implementadas usando wiringPi para darle acceso fácil a algunos periféricos populares. Los dispositivos soportados incluyen pantallas LCD de caracteres (basadas en los chips Hitachi HD44780U) y gráficas – por ejemplo, las pantallas comunes de 128 × 64 píxeles con el chip 12864H genérico. El chip de reloj DS1302 RTC, sensores basados ​​en los chips Maxdetect (por ejemplo, RHT003), las tarjetas de interfaz Gertboard y PiFace y así sucesivamente.

PINES

La numeración de pines de los puertos GPIO  en la Raspberry Pi  ha sido una fuente de gran confusión desde que los diseños para el Pi fueron publicados por primera vez. En los primeros días (incluso antes de que el hardware estuviera disponible) los pines GPIO utilizables por defecto se denominaban simplemente por número como GPIO0 a GPIO7. Además hubo pines para otros fines  como  SPI, I2C y serial, pero esto no es diferente a cómo funciona el Arduino  ( por ejemplo el  Pin 13 en el Arduino es el puerto B, bit 5, por ejemplo).

Resumidamente pues las definiciones de hardware subyacentes se ocultan mediante un esquema de numeración simplificado. En el Pi, usando el cableadoPi , el pin 0 es BCM_GPIO pin 17 por ejemplo)
Sin embargo esto se ha visto posteriormente como «incorrecto» y varias personas han expresado su preocupación por este esquema de numeración, . Y ha demostrado su valía sobre las revisiones de la placa del hardware donde algunos pines cambiaron sus definiciones del hardware, aunque aun asi  wiringPi podía ocultar esto al  usuario. Como resultado (por ejemplo), un programa que utiliza el cableadoPi pin 2 en un Rev. 1 Pi funcionará sin cambios en un Rev 2. Pi, sin embargo alguien que use BCM_GPIO pin 21 en un Rev 1 Pi tendrá que cambiar su programa para usar BCM_GPIO Pin 27 en una Rev 2.

Así que wiringPi soporta su propio esquema de numeración de pines, así como el esquema de numeración de pin BCM_GPIO. Ya a partir de la versión 2, también soporta los números de pines de hardware físico (para el conector P1 solamente), pero es interesante  sugerir que se adhiera a la simplificación WiringPi número de pin. De esta manera sus programas serán portátiles a través de diferentes revisiones de hardware sin necesidad de cambios.

Las siguientes tablas proporcionan la asignación de los pines GPIO en la Raspberry Pi al conector GPIO (P1) en relación con los números de pin y la ubicación física en el conector. Esta es una representación del conector GPIO como se ve mirando la placa desde arriba. El conector GPIO se encuentra en la parte superior derecha de la placa con los conectores Ethernet y USB en la parte inferior.

gpio1.png

Gpio1 revisiones del tablero

Observe por favor las diferencias entre las revisiones 1 y 2 de la tarjeta (Rv1 y Rv2 arriba) La revisión 2 es fácilmente identificable por la presencia de los 2 agujeros de montaje.

gpio21.png

Gpio2

El conector P5 está diseñado para tener el cabezal soldado en la parte inferior de la placa. El pin 1 se identifica mediante la almohadilla de soldadura cuadrada. Así que si usted suelda  el encabezado en la parte superior de la placa tenga en cuenta que las ubicaciones de pin será el contrario!

Desde los conectores GPIO de 26 pines, un nuevo conector de 40 pines ha aparecido en los nuevos Pi’s. También hay las tarjetas de módulo de cálculo. La mejor manera de obtener una descripción del conector GPIO en cualquier Pi que esté ejecutando actualmente es usar el comando gpio:

$ gpio readall

Esto le dará una imagen completa de los conectores GPIO de Pi con todos los esquemas de numeración presentes.

UTILIDAD GPIO

WiringPi viene con un programa separado para ayudar a administrar el GPIO. Este programa, llamado gpio , también se puede usar en scripts para manipular los pines GPIO – establecer salidas y entradas de lectura. Incluso es posible escribir programas enteros usando el comando gpio en una shell-script, aunque no es muy eficiente hacerlo de esa manera . Otra forma de llamarla es usando la función system () en C / C ++ o es equivalente en otra programación Idiomas.

El comando gpio está diseñado para ser instalado como un programa setuid y llamado por un usuario normal sin usar el comando sudo (o iniciar sesión como root).
Además de utilizar la utilidad gpio para controlar los pines GPIO, puede:

  • Export / Unexport a través de la interfaz / sys / class / gpio , donde luego estarán disponibles para los programas de usuario (que luego no necesitan ser ejecutados como root o con sudo)
  • Exportar pines para activar las interrupciones activadas por el borde a través de la interfaz / sys / class / gpio .
  • Controlar los pines del dispositivo periférico PiFace .
  • Cargar módulos SPI e I2C y establezca / dev / permisos para permitir la lectura / escritura por el usuario que ejecuta el programa gpio .
  • Ajustar el tamaño del búfer SPI y la velocidad en baudios I2C (al cargar los módulos)
    Valores de salida al DAC de Gertboard
  • Leer las entradas del Gertboard ADC
  • Determinar su revisión del hardware de la tabla de Frambuesa Pi.

Vea la página de manual del programa gpio para ver lo que todas las características están escribiendo.

COMANDOS BASICOS

Home gpio
En el símbolo del sistema.

Uso

Desde la línea de comandos de Linux:

Gpio-v
Esto imprime la versión.

Gpio-g …
El indicador opcional -g hace que los números de pin sean interpretados como números de pin BCM_GPIO en lugar de números de pin estándar de cableadoPi .

Comandos de entrada y salida estándar

Modo gpio [-g] in / out / pwm / arriba / abajo / tri
Esto establece el modo de un pin para ser entrada, salida o pwm y, además, puede configurar las resistencias pull-up / down para pull-up, pull-down o none.

Gpio [-g] escribe 0/1
Esto establece un pin de salida a alto (1) o bajo (0)

Gpio [-g] pwm
Ajuste el pin a un valor PWM (se admite 0-1023)

Gpio [-g] read 

Lee e imprime el valor lógico del pin indicado. Se imprimirá 0 (bajo) o 1 (alto).

Gpio readall
Esto lee todos los pines normalmente accesibles e imprime una tabla de sus números (tanto wiringPi y BCM_GPIO, por lo que hace un gráfico de referencia cruzada útil), junto con sus modos y valores actuales.

Comandos de carga del módulo

Gpio load spi [tamaño del búfer en KB]
Esto carga los módulos del kernel SPI y, opcionalmente, establece el búfer interno en el tamaño dado en KB (múltiplos de 1024). El valor predeterminado es 4KB y suele ser más que suficiente para la mayoría de las aplicaciones que sólo cambian un byte o 2 a la vez por el bus SPI.

Las entradas / dev / spi * están configuradas para ser propiedad de la persona que utiliza el programa gpio , por lo que no hay necesidad de ejecutar programas posteriores como root (a menos que utilicen otras funciones wiringPi)

Gpio load i2c [velocidad de transmisión en Kb / s]
Esto carga los módulos del kernel I2C y, opcionalmente, establece la velocidad en baudios a la velocidad dada en Kb / seg (múltiplos de 1000). El valor predeterminado es 100Kb / seg.

Las entradas / dev / I2c * están configuradas para ser propiedad de la persona que usa el programa gpio , por lo que no hay necesidad de ejecutar programas posteriores como root (a menos que usen otras funciones wiringPi )

Comandos de modo / sys / class / gpio

Gpio export entrada / salida
Esto exporta el pin dado (número PIN de BCM-GPIO) como una entrada o salida y lo hace disponible para un programa de usuario que se ejecuta como el mismo usuario para usar.

Gpio unexport

Elimina la exportación del pin especificado.

Gpio unexportall
Elimina todas las exportaciones de / sys / class / gpio .

Export gpio
Esto imprime una lista de todos los pines gpio que se han exportado a través de la interfaz / sys / class / gpio y sus modos.

Gpio edge sube / baja / ambos / ninguno
Esto permite que el pin dado para la interrupción del borde dispare en el aumento, la caída o ambos bordes. (O ninguna que lo deshabilite)

Nota: Los números de pin en el modo sys siempre son números de pin BCM-GPIO.

Ejemplos

Gpio mode 0 out
Gpio write 0 1
Esto utiliza los números de pin del cableadoPi para establecer el pin 0 como una salida y luego establece el pin en una lógica 1.

Gpio -g mode 0 in
Gpio -g read 0
Esto utiliza el esquema de numeración de pines BCM_GPIO y lee el pin 0 (SDA0 en una Rev. 1 Raspberry Pi)

Resistencias de pulldown hacia arriba / abajo

Las líneas GPIO tienen resistencias pull up o pull-down internas que pueden ser controladas mediante software cuando un pin está en modo de entrada.

Gpio mode 0 up
Gpio mode 0 down
Modo gpio 0 tri
Estos fijan las resistencias para tirar hacia arriba, pull-down y ninguno respectivamente en el pin 0 del cableado .

Comandos PiFace

El PiFace es algo limitado en que tiene 8 pines de entradas y 8 pines de salida y estos se fijan en el hardware, por lo que sólo los comandos de escritura y lectura se implementan:

Gpio -p write 0/1
Escribe el valor 0 (desactivado) o 1 (activado) en el pin de salida del PiFace

Gpio -p read Lee e imprime el valor en el pin de entrada dado.

Gpio -p mode up / tri
Esto habilita (arriba) o desactiva (tri) la resistencia pull-up interna en el pin de entrada dado. Debe habilitar el pull-up si desea leer cualquiera de los interruptores de a bordo de la placa PiFace.

Mas información en http://wiringpi.com/