Control de frambuesa pi. Frambuesa Pi: control LED. Trabajando con Python y GPIO, LED parpadeante

La Raspberry Pi no es sólo una minicomputadora diseñada para reproducir música en ella. También se puede utilizar en aplicaciones eléctricas más serias. Para ello dispone de líneas de entrada/salida. propósito general(GPIO), que veremos hoy.



Los GPIO están ubicados en un conector 2x13, en el que se pueden encontrar interfaces SPI, I2C, UART y líneas de alimentación de 3,3V y 5V.



Ocho de estos pines se pueden utilizar directamente como entrada o salida digital. Por lo tanto, se pueden utilizar para controlar LED, controladores de motor y otros dispositivos similares. Naturalmente, se les pueden conectar botones e interruptores para ingresar información en la Raspberry Pi.



Entonces, ¿cómo gestionar Líneas GPIO en frambuesa pi?


Primero necesitas instalar la biblioteca RPi.GPIO Python. Es posible que ya haya estado preinstalado en su distribución. Sistema operativo Sistema operativo Raspbian. Para comprobar esto, ingrese:


sudo pitón


Luego ingresa en la línea:


importar RPi.GPIO como GPIO


Si no aparece ningún error, entonces todo está bien. Pero si surge, entonces debes seguir los siguientes pasos.


Primero, descargue la biblioteca RPi GPIO:


wget http://pypi.python.org/packages/source/R/RPi.GPIO/RPi.GPIO-0.3.1a.tar.gz


Luego extraiga los archivos:


tar zxf RPi.GPIO-0.3.1a.tar.gz


Luego vamos al directorio extraído:


CD RPi.GPIO-0.3.1a


E instale la biblioteca:


instalación de sudo python setup.py


Usando la biblioteca RPi.GPIO Python


# importar biblioteca importar RPi.GPIO como GPIO # usar la numeración del conector Raspberry Pi GPIO.setmode(GPIO.BOARD) # o GPIO.setmode(GPIO.BCM) # configurar los pines GPIO como entrada o salida GPIO.setup(11, GPIO.IN ) GPIO.setup(13, GPIO.OUT) # toma el valor de entrada del pin 11 input_value = GPIO.input(11) # establece valor de salida al pin 13 GPIO.output(13, GPIO.HIGH) #GPIO.output(13, GPIO.LOW)

La diferencia entre GPIO.setmode(GPIO.BOARD) Y GPIO.setmode(GPIO.BCM) Consiste en el sistema de numeración de pines. En el primer caso se utiliza la numeración del conector P1 a bordo de la Raspberry Pi, y en el segundo caso, la numeración de los pines del sistema en chip Broadcom, que es el núcleo de la Raspberry Pi. Debes saber que en el caso de BCM, la numeración de pines entre la primera y la segunda revisión es ligeramente diferente, y cuando usando TABLERO La revisión no importa, todo sigue igual.


Ahora conectemos los LED y los botones a la Raspberry Pi. Disponemos de ocho GPIO en el conector.



Conexiones:



Los valores de resistencia se pueden calcular de la siguiente manera. Utilizado en en este caso Los LED de 5 mm consumen 20 mA de corriente. El voltaje suministrado desde la Raspberry Pi es de 3,3 V. Entonces la resistencia será de 3,3 V / 20 mA = 165 ohmios. Para los botones se utilizaron resistencias de 1KOhm.




desde el momento importar suspensión importar RPi.GPIO como GPIO GPIO.setmode(GPIO.BOARD) GPIO.setup(16, GPIO.IN) GPIO.setup(18, GPIO.IN) GPIO.setup(11, GPIO.OUT) GPIO. setup(13, GPIO.OUT) GPIO.setup(15, GPIO.OUT) GPIO.output(11, GPIO.LOW) GPIO.output(13, GPIO.LOW) GPIO.output(15, GPIO.LOW) # estado - determina si el LED debe estar encendido o apagado = 0 # incremento - dirección del cambio de estado inc = 1 mientras es Verdadero: # botón presionado if (GPIO.input(16) == True): if (inc == 1): estado = estado + 1; más: estado = estado - 1; # estado máximo alcanzado, retroceder (disminuir) si (estado == 3): inc = 0 #estado mínimo alcanzado, retroceder (incrementar) elif (estado == 0): inc = 1 si (estado == 1): GPIO.output(11, GPIO.HIGH) GPIO.output(13, GPIO.LOW) GPIO.output(15, GPIO.LOW) elif (estado == 2): GPIO.output(11, GPIO.HIGH) GPIO. salida(13, GPIO.ALTO) GPIO.salida(15, GPIO.BAJO) elif (estado == 3): GPIO.salida(11, GPIO.ALTO) GPIO.salida(13, GPIO.ALTO) Salida GPIO(. 15, GPIO.HIGH) más: GPIO.output(11, GPIO.LOW) GPIO.output(13, GPIO.LOW) GPIO.output(15, GPIO.LOW) print("presionado B1 ", estado) # botón de reinicio presionado si (GPIO.input(18) == Verdadero): estado = 0 inc = 1 GPIO.output(11, GPIO.LOW) GPIO.output(13, GPIO.LOW) GPIO.output(15, GPIO. LOW) print("presionado B2 ", estado) dormir(0.2);

Entonces, como podemos ver, usar GPIO en Raspberry Pi es bastante simple. Aunque no hay tantos como Arduino, pero junto con poder de computación sistema en chip, esta minicomputadora será útil en

Para la toma de decisiones, por ejemplo en problemas. gestión técnica Los dispositivos deben tener información que pueda obtenerse de los sensores. Los sensores pueden ubicarse a grandes distancias entre sí y del centro de control. Por lo tanto, puede utilizar Internet para acceder a ellos.

para recibir acceso remoto Es posible utilizar microcontroladores o minicomputadoras de placa única para sensores. En este trabajo, se considera que las minicomputadoras de placa única resuelven el problema de acceso a los sensores. Actualmente, los más populares y comprados son Raspberry Pi 2, Banana Pi 2 y Orange Pi PC (ver Figura 1).

Fig.1. Una minicomputadora paga

Estos ordenadores están unidos por:

  1. Tamaños pequeños, del tamaño de una tarjeta de crédito;
  2. Procesador de cuatro núcleos que se ejecuta en todas las computadoras a aproximadamente 1-1,2 GHz;
  3. RAM 1 GB;
  4. Tarjeta SD en lugar de disco para cargar el sistema operativo y los programas;
  5. Puerto Ethernet para conectarse a la red;
  6. Salida HDMI para conectar un monitor o televisor;
  7. Puertos USB para conectar, por ejemplo, teclados, ratones, memorias flash.
  8. Sistema operativo Linux;
  9. Y lo más importante, un puerto GPIO de 40 pines al que se conectan los dispositivos y sensores que hay que controlar.

La tarea principal es elegir una computadora para mando a distancia.

  1. Costo (a partir del 25/02/2016, sitio web http://ru.aliexpress.com con entrega):

Frambuesa Pi 2: $36,99;

Plátano Pi 2 (BPI-M2 A31S) - $ 50,21

Computadora Pi naranja - $ 18,99

  1. Velocidad de procesador + memoria:

Según pruebas informáticas utilizando 4 núcleos.

Plátano Pi 2 (BPI-M2 A31S);

Frambuesa Pi 2.

Cuando se utiliza un núcleo para trabajo computacional (la tarea no está paralelizada)

Plátano Pi 2 (BPI-M2 A31S);

Frambuesa Pi 2.

Señalan que Orange Pi tiene 3 núcleos, el cuarto no siempre arranca.

3.Soporte técnico y disponibilidad de un buen funcionamiento. software:

Frambuesa Pi 2 - (1); Plátano Pi 2 - (2); Computadora Pi naranja - (3).

La PC Orange Pi aún no tiene la condición principal para administrar dispositivos: esto soporte de software Puerto GPIO.

El control remoto de sensores y dispositivos se puede realizar mediante microcontroladores:

  1. Arduino Mega256 con Ethernet Shied w5100 - 12-15 dólares;
  2. Arduino nano con controlador de red enc28j60: 8-9 dólares;
  3. ESP8266-12-$2-3;

La experiencia demuestra que en red local Los microcontroladores funcionan bien, en red mundial Cuando se pierden paquetes, el control se vuelve poco confiable. Las minicomputadoras ejecutan el sistema operativo Linux, que tiene protocolos de red bien depurados. se puede hacer alto grado protección para ingresar al sistema administrado. Para microcontroladores buenos protocolos y no hay suficientes recursos para protegerse contra la piratería.

Con base en lo anterior, se utiliza una minicomputadora Raspberry Pi 2 para el trabajo remoto con sensores. Como ejemplo, consideramos conectar el sensor de presión y temperatura BMP180 al bus de la computadora I2C. Se deben resolver los siguientes problemas:

Cuando se conecta a una computadora mediante un navegador, la presión y la temperatura deben mostrarse en la pantalla. Sus valores deberían cambiar cada 5 segundos.

El script de Python debe registrar la presión y la temperatura en los archivos cada 5 minutos. Se utilizan para trazar gráficos.

Es necesario prever la gestión del dispositivo incluso si no tiene una dirección IP real (nombre DNS). Todo lo que necesita es una conexión a Internet, por ejemplo a través de un módem ADSL estándar con NAT instalado.

Consideremos la secuencia de resolución del problema.

1. Instalación del sistema operativo Raspbian.

Para hacer esto, debe copiar la imagen del sistema operativo RASPBIAN JESSIE desde el sitio https://www.raspberrypi.org/downloads/raspbian/, por ejemplo, a una computadora que ejecute control de ventanas 8.1. Descomprima este archivo. Copie la utilidad de disco Win32DiskImager del sitio http://sourceforge.net/projects/win32diskimager y descomprímala. Instale la tarjeta SD en su computadora y use utilidad de disco Instale la imagen del sistema operativo en la SD. Después de esto, esta tarjeta SD se instala en la computadora Raspberry Pi. Necesita conectar un monitor, teclado, mouse y cable ethernet. Después de conectar la alimentación, la computadora se inicia automáticamente y aparece un menú en la pantalla. programar, que es generado por raspi-config. Las opciones para este archivo están en el enlace https://www.raspberrypi.org/documentation/configuration/raspi-config.md

2. Asignar una dirección IP estática a Raspberry Pi

Raspberry Pi funciona función web- servidor, por lo que debe tener una dirección IP estática. Para hacer esto:

Cambie el contenido del archivo /etc/network/interfaces a

bucle invertido iface lo inet

iface eth0 inet estático

dirección 172.20.0.138

máscara de red 255.255.0.0

puerta de enlace 172.20.200.1

servidores de nombres dns 8.8.8.8

Elimine completamente dhcpcd5 del sistema ejecutando el comando

sudo apt-get purga dhcpcd5

3. El siguiente paso es la instalación del WebIOPi Framework.

El marco WebIOPi es un paquete de software diseñado específicamente para Raspberry Pi para la administración remota de dispositivos. Junto con Raspberry Pi 2 implementa tecnología de internet de las Cosas (Internet de las Cosas). El paquete WebIOPi le permite crear varias aplicaciones personalizadas.

WebIOPi tiene las siguientes características:

Servidor web integrado implementado en Python

Soporte integrado para más de 30 dispositivos con interfaces UART, SPI, I2C y 1-Wire

Bibliotecas Javascript/HTML para crear una interfaz web

Bibliotecas Python/Java para crear aplicaciones de Android

Admite el protocolo CoAP, diseñado para el control y la interacción entre dispositivos electrónicos simples a través de una red.

WebIOPi tiene fuente abierta, que puede ser modificado por el usuario. Esto le permite aumentar la cantidad de tareas a resolver. Para configurar el paquete para tarea especifica Se cambia el archivo de configuración. Por ejemplo, los pines GPIO a los que están conectados los dispositivos se escriben en este archivo. Si se utilizan sensores, también se incluyen en archivo de configuración. Sin embargo, en algunos casos es necesario habilitar el controlador del dispositivo (por ejemplo, el sensor bmp180). Considere instalar la versión 0.71 de WebIOPi. Este nueva versión Soporta bien Raspberry Pi 2, que tiene un puerto GPIO de 40 pines. Para instalar WebIOPi, vaya a Raspberry Pi 2 a través del puerto 22 programas de masilla(iniciar sesión - pi, contraseña - frambuesa) y en la terminal ingresar uno por uno siguientes comandos:

$wget http://sourceforge.net/projects/webiopi/files/WebIOPi-0.7.1.tar.gz

$ tar xvzf WebIOPi-0.7.1.tar.gz

$cd WebIOPi-0.7.1

Instale el parche para trabajar con 40 GPIO Raspberry Pi 2:

$wget https://raw.githubusercontent.com/doublebind/raspi/master/webiopi-pi2bplus.patch

$ parche -p1 -i webiopi-pi2bplus.patch

$ sudo ./setup.sh

Para iniciar WebIOPi automáticamente después de reiniciar el sistema, debe ejecutar el comando (válido para la imagen 2015-05-05-raspbian-wheezy.img):

valores predeterminados de sudo update-rc.d webiopi

Para más versiones posteriores inicio automático hecho así:

$ cd /etc/systemd/sistema/

$ sudo wget https://raw.githubusercontent.com/doublebind/raspi/master/webiopi.service

$ sudo systemctl iniciar webiopi

$ sudo systemctl habilitar webiopi

Luego reiniciamos la Raspberry Pi 2:

Ahora necesitas comprobar el funcionamiento de WebIOPi. Desde cualquier ordenador de la red local marcamos dirección de red, asignado a Raspberry Pi 2 especificando el puerto 8000. Por ejemplo:

http://172.20.0.138:8000/app/gpio-header

Para acceder a WebIOPi, debe ingresar su nombre de usuario y contraseña en el formulario que se abre. El inicio de sesión predeterminado es "webiopi" y la contraseña es "frambuesa". El navegador mostrará la interfaz del programa WebIOPi, que muestra los números de los 40 pines del puerto GPIO y su propósito. Para cambiar el nombre de usuario y la contraseña, ingrese el comando:

sudo webiopi-contraseña

Para Configuración de WebIOPi Para la tarea es necesario registrar el sensor de presión y temperatura BMP180 en el archivo de configuración /etc/webiopi/config Webiopi en la sección:

La Figura 2 muestra un diagrama de cómo conectar el sensor a los pines del puerto GPIO.

Fig.2. Conexión de BMP180 a GPIO

Debe agregar la línea al archivo /boot/config.txt

dtparam=i2c_arm=encendido

El cambio de contraseña de Webiopi se realiza con el comando

Puede comprobar el funcionamiento del sensor de temperatura conectándose a:

http://172.20.0.138:8000/app/devices-monitor

El valor de temperatura y presión del sensor debería aparecer en el navegador (Fig. 3).

Fig.3. Datos leídos del sensor BMP180

Para recargar WebIOPi después de realizar cambios en el archivo de configuración, omita en Python y archivo html, necesitas hacer:

/etc/init.d/webiopi reiniciar

Los mensajes de error al ejecutar Webiopi se encuentran en el archivo /var/log/webiopi. Se puede imprimir usando el comando:

gato /var/log/webiopi

4. Crear un archivo index.html y un script de Python script.py

La necesidad de estos archivos es la siguiente. Una página HTML, utilizando JavaScript, realiza una solicitud a un script (subrutina) escrito en Python y Python, a su vez, devuelve los datos recibidos del sensor BMP180 a la página HTML para su visualización. Cada 5 minutos el script registra los valores de presión y temperatura en archivo de texto. Este archivo se utiliza para trazar gráficos de presión y temperatura a lo largo del tiempo.

En el directorio /home/pi/myproject/html creamos un archivo index.html, cuyo contenido se presenta en la Fig. 4. Y en el directorio /home/pi/myproject/python creamos un archivo script.py en Python, como se muestra en la Fig. 5

Fig.4. archivo index.html

El archivo press.html se muestra en la Fig. 6. El archivo temp.html para generar un gráfico de temperatura tiene un aspecto similar.

Fig.5. archivo script.py

Fig.6. Archivo Press.html para generar un gráfico de presión

Los archivos HTML press.html y temp.html para trazar gráficos de presión y temperatura utilizan la biblioteca dygraph ya preparada, que está escrita en JavaScript. El archivo dygraph-combined-dev.js de esta biblioteca se copia del sitio

http://dygraphs.com al directorio /home/pi/myproject/html.

Después de reiniciar la computadora, WebIOPi funcionará de acuerdo con los scripts presentados. Si se conecta a través de un navegador, la información sobre presión y temperatura se presentará como en la Figura 7.

Fig.7. Datos obtenidos del sensor BMP180

Fig.8. Gráfico de presión obtenido utilizando la biblioteca dygraph.

5. Conexión de una computadora Raspberry Pi 2 a Internet, si no tiene dirección IP real o nombre de dominio, pero tiene acceso a Internet (a través de un módem, enrutador, firewall).

Una forma de acceder a Raspberry Pi como dispositivo de Internet de las cosas es utilizar el servicio Weaved. Ofrece los siguientes servicios:

SSH: le permite iniciar sesión en su Raspberry Pi desde cualquier parte del mundo a través de SSH;

Web (http) en el puerto 80: puede ver páginas web desde cualquier parte del mundo alojadas en Raspberry Pi;

WebIOPI: le permite administrar pines Puerto GPIO Raspberry Pi utilizando software desarrollado por el usuario.

Antes de instalar Weaved, es recomendable crear un directorio /home/pi/myproject/my, ir allí y trabajar con los archivos Weaved allí.

Instalación de Weaved en Raspberry Pi:

Debe obtener una cuenta en el sitio web https://developer.weaved.com/portal/login.php;

Conecte Raspberry Pi 2 a Internet;

Descargue el software tejido en Raspberry Pi:

wget https://github.com/weaved/installer/raw/master/binaries/weaved-nixinstaller_1.2.13.bin

Haga ejecutable el archivo weaved-nixinstaller_1.2.13.bin:

chmod +x tejido-nixinstaller_1.2.13.bin

Ejecute el instalador:

./weaved-nixinstaller_1.2.13.bin

Seleccione un servicio

Cuando inicie el programa por primera vez, se le pedirá que instale uno de los servicios: SSH en el puerto 22, Web (HTTP) en el puerto 80, WebIOPi en el puerto 8000, VNC en el puerto 5091 (probado con Tightvncserver) o TCP personalizado en el puerto seleccionado.

Aquí seleccionamos el 3er servicio, Web (HTTP) en el puerto 8000.

Ingrese su información de inicio de sesión de Weaved (ingrese la cuenta que recibió en el sitio web de Weaved).

Comprobamos si se ha creado un nuevo dispositivo:

Vaya a https://developer.weaved.com/portal/login.php e ingrese su cuenta. Después de iniciar sesión, debería aparecer la siguiente página (Fig.9), donde se indica el nombre del dispositivo creado:

Fig.9. Listado de servicios creados.

Conclusiones.

  1. Alta confiabilidad en el control de sensores (equipos) remotos utilizando minicomputadoras a través de Internet en comparación con los microcontroladores. Los protocolos de red de los microcontroladores son livianos, por lo que no funcionan con tanta confiabilidad.
  2. El alto costo de los sistemas de control en minicomputadoras a través de una red en comparación con los microcontroladores.
  3. Fácil programación del sistema gestión de red para minicomputadoras, gracias al software desarrollado como WeBIOPi.
  4. La capacidad de acceder a minicomputadoras a través de Internet si es imposible utilizar direcciones IP y nombres de dominio reales.
  5. Se han detectado problemas al trabajar con el módulo BMP085 para el sensor de presión BMP180. Después de varias horas de funcionamiento, el servidor web WebIOPi deja de funcionar. En lugar de trabajar con el módulo BMP085

desde webiopi.devices.sensor.bmp085 importar BMP085

Es mejor usar el módulo deviceInstance

desde la instancia del dispositivo de importación de webiopi

bmp = webiopi.deviceInstance("bmp")

Aquí ("bmp") es para obtener el dispositivo llamado bmp, que se encuentra en el archivo

/etc/webiopi/config, en la sección .

  1. Las minicomputadoras permiten no solo recibir datos de los sensores, sino también procesarlos. Un ejemplo es la construcción de gráficos de cambios en los valores de los sensores.

Literatura.

  1. WebIOPi: el marco de Internet de las cosas de Raspberry Pi. . - Modo de acceso: http://webiopi.trouch.com/, 2016.
  2. Internet de las cosas para todos. . - Modo de acceso: https://www.weaved.com/, 2016.
  3. Sistema completo domótica en Frambuesa Pi. . - Modo de acceso: http://electromost.com/, 2014.
  4. Myasishchev A.A. Toma de corriente de Internet basada en una mini computadora Raspberry Pi y el framework WebIOPi. Práctica para estudiantes. . - Modo de acceso: https://sites.google.com/site/webstm32/internet_rozetka, 2016.

Cuando compras una Raspberry Pi, solo estás comprando placa de circuito impreso, que viene incluso sin fuente de alimentación ni sistema operativo. Este artículo tiene como objetivo darte una idea de cómo configurar tu Raspberry Pi para que puedas comenzar a utilizarla.

Raspberry Pi es una minicomputadora que tiene muchos puertos que se pueden usar para conectar varios periféricos. Puede conectar un monitor independiente a través de Puerto HDMI y teclado y ratón mediante conectores USB, la Raspberry Pi también dispone de un puerto Ethernet, para que puedas utilizar Internet en tus proyectos de Raspberry Pi.

EN este manual Se le guiará por una serie de pasos que le permitirán conectar su Raspberry Pi a su computadora portátil o de escritorio, eliminando la necesidad de usar dispositivos individuales Para frambuesa Pi.

Hardware y software

  • 1x;
  • 1 cable Ethernet;
  • 1 x computadora portátil o de escritorio;
  • 1 x tarjeta SD (tamaño mínimo 4 GB);
  • 1x microcable USB (para alimentar la Raspberry Pi).

Antes de continuar, necesitaremos algún software que deba descargarse. A continuación se muestra una lista de software y enlaces donde puede descargarlo de forma gratuita:

  • Sistema operativo Raspbian: Cuando compras una Raspberry Pi, tienes la opción (en algunas tiendas) de comprar un sistema operativo preinstalado en la tarjeta SD, o simplemente descargar un archivo zip desde https://www.raspberrypi.org/downloads/ que contiene la imagen del sistema operativo Raspbian, para escribirla en tu tarjeta SD;
  • SDFormateador: La SD Card Association tiene un software muy bueno que puede usarse para formatear su tarjeta SD. Visite https://www.sdcard.org/downloads/formatter_4/index.html y descargue SDFormatter para su sistema operativo;
  • Win32DiskImager: Para grabar el sistema operativo Raspbian en su tarjeta SD, necesitará utilidad útil Win32DiskImager. Puedes descargarlo aquí;
  • : Deberá determinar la dirección IP de su Raspberry Pi cuando la conecte a su computadora. Simplemente descargue este programa http://www.advanced-ip-scanner.com/;
  • Masilla: PuTTy es un cliente SSH que se utilizará para conectarse a Raspberry Pi. Puedes descargarlo aquí http://www.putty.org/;
  • VNC: Y el último es un servidor VNC. Puedes descargarlo aquí https://www.realvnc.com/download/.

Una vez que haya descargado todo este software, descomprímalo e instálelo.

Instalación del sistema operativo

  1. Inserte la tarjeta SD en el lector de tarjetas y verifique qué letra fue asignada a la unidad.
  2. Abra Win32DiskImager, es posible que deba ejecutarlo como administrador.
  3. Seleccione la imagen del sistema operativo Raspbian descomprimido.
  4. Seleccione la letra asignada a su tarjeta SD en la lista desplegable del dispositivo. Asegúrate de seleccionar letra correcta unidad para evitar dañar los datos de cualquier otra unidad.
  5. Hacer clic Anotar(Escribir) y espere a que finalice.
  6. Cierre Win32DiskImager, retire la tarjeta SD e insértela en la Raspberry Pi.

Nota: Después de grabar el sistema operativo, notarás que solo quedan unos pocos megabytes en la tarjeta SD. Esto se debe a la partición creada, el resto espacio libre oculto. Podrás solucionar este problema una vez que nos conectemos a la Raspberry Pi.

Internet compartido a través del puerto Ethernet

Una vez que la tarjeta SD esté lista, insértala en la Raspberry Pi. Conecte el cable de alimentación USB. Y también conecta la Raspberry Pi y el portátil con un cable Ethernet.

Si está conectando la Raspberry Pi a un enrutador con acceso a Internet, puede omitir este paso.

Comprobando la dirección IP asignada a su Raspberry Pi

Es simple, asegúrese de que su Raspberry Pi esté conectada a Redes Ethernet su computadora (directamente o a través de un enrutador). Si todo funciona bien, verás que los LED del tablero parpadean.


Conexión a Raspberry Pi a través de PuTTy

¡Excelente! Antes de continuar, veamos lo que ya hemos hecho hasta ahora.

Sucede que el primer programa que escribe una persona cuando aprende programación se llama “ Hola Mundo! La esencia de este programa es que después del lanzamiento aparece en la pantalla la frase simple especificada. Normalmente, esto sólo requiere unas pocas líneas de código.

En el mundo de la microelectrónica, tarea similar Se puede considerar control LED. Es decir, encendido y apagado periódico: parpadeo. En este tutorial simplemente conectaremos el LED a la Raspberry Pi y escribiremos un programa en lenguaje pitón, haciendo que este LED parpadee.

1. Pines de uso general de Raspberry Pi (GPIO)

Una de las principales ventajas de Raspberry Pi es la presencia de entradas/salidas de uso general. GPIO es un grupo de pines que se pueden controlar mediante el programa. Además, este control puede ser bastante sencillo, por ejemplo, encender/apagar un LED. O muy complejo: intercambio de datos con dispositivos periféricos según protocolos especializados.

En términos electrónica digital, controlar significa cambiar el nivel de voltaje en la salida. En otras palabras, lo único que podemos hacer con el programa es conectar el pin deseado ya sea al pin de alimentación (+3.3V) o a tierra (Gnd). Representemos esto en un diagrama esquemático.

En el diagrama hay una resistencia conectada a tierra a la derecha: esta es nuestra carga. En lugar de una resistencia puede haber un LED, un relé, un zumbador, etc. El pin GPIO23 y el interruptor directamente detrás de él simbolizan estructura interna cada pin de uso general. Funciona de la siguiente manera.

Si aplicamos True al pin número 23 del programa, entonces la Raspberry Pi conectará este pin a la fuente de alimentación de +3,3 V y la corriente fluirá a través de la resistencia. Si transmitimos falso - Falso, entonces el controlador conectará el pin No. 23 a tierra y habrá potenciales iguales en ambos extremos de la resistencia; la corriente no fluirá a ninguna parte. Es decir, con la ayuda del programa parece que accionamos un interruptor invisible, ahora hacia arriba, ahora hacia abajo.

Cuando toquemos la programación de un LED para que parpadee, aprenderemos cómo pasar señales verdaderas y falsas a los pines de propósito general de la Raspberry Pi.

Un LED es un dispositivo que representa dispositivo semiconductor, capaz de emitir luz cuando una corriente eléctrica lo atraviesa en dirección directa (de ánodo a cátodo). A continuación se muestra un diagrama de un LED típico con lente.

Para poder conectar correctamente un LED a un circuito eléctrico es necesario distinguir el cátodo del ánodo. Esto se puede hacer de dos maneras:

  • El ánodo LED tiene un conductor más largo;
  • en el lado del cátodo, el cuerpo del LED está ligeramente cortado.

Y así es como se ven los LED "en vivo".

Estos son LED ordinarios de un solo color. Y también los hay de dos, e incluso de tres colores. Por ejemplo, así es como se ve un LED de tres colores (RGB):

Este LED tiene cuatro patas a la vez. Uno es el cátodo y los otros tres son ánodos para tres colores diferentes.

La microelectrónica moderna utiliza LED de montaje en superficie en miniatura. Estos indicadores, por ejemplo, están disponibles en Raspberry Pi para informar al usuario sobre el estado del sistema.

3. Diagrama de conexión

Para encender el LED, necesitaremos conectarlo a uno de los pines digitales de la Raspberry Pi. Que esta sea la conclusión número 23.

Diagrama esquemático

Aspecto del diseño

Además del propio LED, el circuito contiene una resistencia. ¿Por qué es necesario? El hecho es que si conecta el LED directamente a una fuente de voltaje de 3,3 voltios (es decir, este es el voltaje de funcionamiento de la Raspberry Pi), ¡el LED seguramente fallará!

Para que el LED funcione correctamente, es necesario mantener estrictamente la corriente y el voltaje de funcionamiento. Por ejemplo, un LED rojo normal tiene una corriente de funcionamiento de 20 mA, a un voltaje de 1,8 a 2 voltios. Una resistencia nos permite reducir el voltaje en el circuito y establecer la corriente deseada. Una resistencia de este tipo también se denomina resistencia de ajuste de corriente.

I = U/R;

La corriente que fluye a través de un elemento es igual a la relación entre el voltaje aplicado a este elemento y su resistencia.

Expresemos la resistencia R a partir de esta fórmula:

Como ya se señaló, la Raspberry Pi funciona a 3,3 voltios. Esto significa que para que permanezcan 2 voltios en el LED, debemos quitar los 1,3 voltios adicionales en alguna parte. ¡Hagamos que la resistencia se los coma!

Resulta que necesitamos seleccionar la resistencia de la resistencia de tal manera que elimine los 1,3 voltios adicionales a una corriente de 20 mA. Sustituyamos estos números en la fórmula resultante:

R = 1,3 V/20 mA = 1,3 V/0,02 OA = 130/2 = 65 ohmios

Por lo tanto, en la Raspberry Pi, la resistencia de ajuste de corriente para el LED rojo es de 65 ohmios. Esto es lo que debemos instalar en el circuito.

Si no tiene una resistencia de 65 ohmios a mano, puede usar cualquier otro valor superior, por ejemplo, 100 ohmios o incluso 200 ohmios. El LED simplemente se iluminará un poco menos.

4. Programa

Ahora comencemos a escribir un programa que controlará el encendido y apagado del LED según el algoritmo que necesitemos. Por ejemplo, encendamos el LED durante 5 segundos y luego lo apaguemos.

Lo primero que debemos hacer es configurar el tipo de numeración de pines de uso general. Hay dos tipos. El primer tipo es la numeración de conectores y el segundo tipo es la numeración de pines del microprocesador. La imagen muestra el conector GPIO.

De izquierda a derecha comienza la numeración del primer tipo: 1,2. No está firmado, pero va en orden: 3,4 - 5,6 - etc. Al final del conector - 39,40.

Arriba y abajo está la numeración del procesador (BCM). En nuestro diagrama, conectamos el LED al pin No. 23 de acuerdo con la numeración del BCM.

En el programa, el tipo de numeración se especifica mediante la función modo de configuración:

GPIO.setmode(GPIO.BCM)

Ahora necesita configurar el modo de funcionamiento del pin No. 23. Hay dos modos: salida (OUT) y entrada (IN). Queremos controlar el LED, lo que significa que necesitamos el modo de "salida". Pero si quisiéramos leer alguna señal, por ejemplo, de un sensor, entonces deberíamos seleccionar el modo “entrada”.

GPIO.configuración(23, GPIO.OUT)

Para aplicar la verdad al pin No. 23, usamos la función producción:

GPIO.salida(23, Verdadero)

Además de estas funciones, necesitaremos una pausa. dormir. Esta función detiene la ejecución del programa. El argumento especifica el número de segundos de pausa.

Dormir(5)

Finalmente, para que funcionen las funciones de trabajar con GPIO y dormir, incluiremos dos bibliotecas al comienzo del programa:

Desde RPi importar GPIO desde el momento importar suspensión

Entonces, todo el programa en su totalidad.

Desde RPi importar GPIO desde el momento importar dormir GPIO.setmode(GPIO.BCM) GPIO.setup(23, GPIO.OUT) GPIO.output(23, Verdadero) dormir(5) GPIO.output(23, Falso) GPIO.cleanup( )

5. LED parpadeando en un ciclo

Mejoremos el programa para que el LED parpadee continuamente a una frecuencia de 1 Hertz (es decir, una vez por segundo). Para hacer esto, necesitaremos agregar un operador de bucle al programa. mientras.

Desde RPi importar GPIO desde el momento importar dormir GPIO.setmode(GPIO.BCM) GPIO.setup(23, GPIO.OUT) mientras es Verdadero: GPIO.output(23, Verdadero) dormir(0.5) GPIO.output(23, Falso) dormir (0.5) GPIO.limpieza()

Ciclo mientras funcionará siempre que la condición especificada en él sea verdadera. Para que el bucle se ejecute sin parar, ponemos como condición Verdadero.

El programa que compilamos tiene un defecto desagradable. Si lo ejecutamos entrará en un bucle infinito y no podremos detenerlo. medios regulares. Y si lo detenemos de forma anormal, la función no se ejecutará. limpieza, lo cual es indeseable.

Agreguemos una construcción más al programa, que nos permitirá interrumpir el ciclo en cualquier momento usando la combinación de teclas Ctrl+C. El programa finalizará en modo normal y ejecutará la función limpieza.

Desde RPi importar GPIO desde el momento importar dormir GPIO.setmode(GPIO.BCM) GPIO.setup(23, GPIO.OUT) intente: mientras es Verdadero: GPIO.output(23, Verdadero) dormir(0.5) GPIO.output(23, Falso ) dormir (0.5) excepto KeyboardInterrupt: imprime "detención del programa" GPIO.cleanup()

Misiones

Finalmente, juguemos un poco con los LED en la Raspberry Pi.

  1. Sirena. Conecte dos LED y enciendalos como una sirena de policía: el primero se apaga y el segundo se enciende. Deje un LED en el pin No. 23, el segundo se puede conectar al adyacente No. 24.
  2. LLAMADA DE SOCORRO. Generar señal de emergencia utilizando el código Morse. Parpadea tres veces rápidamente - con un período de 0,5 segundos, luego tres veces con un período de 1 segundo, finalmente tres veces más rápidamente.

Figura 1. Diagrama de bloques del hardware del sistema

Describir el proceso de instalación del hardware del sistema lleva mucho tiempo, pero es bastante sencillo. En primer lugar, debe conectar la fuente de alimentación a la toma de corriente mediante un cable de extensión, cortando el enchufe del cable de extensión. Pele los cables y asegúrelos con tornillos a los terminales de la fuente de alimentación. A continuación, conecte la Raspberry Pi a la fuente de alimentación cortando el conector tipo A de Cable USB y conectando los cables a los terminales correspondientes de la fuente de alimentación, e insertando el conector microusb en el conector de alimentación RPi. Después de esto, deberás pelar ambos extremos de los dos núcleos del cable flexible y conectarlos a los terminales correspondientes marcados como GND y JDVcc del bloque de alimentación y relés. Finalmente, debes quitar el puente que conecta el pin etiquetado como JDVcc al pin etiquetado como Vcc. Si no retira este volcador, se aplicará un voltaje de 5 V a los pines de 3,3 V del RPi, lo que probablemente destruirá la computadora.

Ahora que se suministra energía a todos los terminales, conecte las líneas IN1-IN8 del módulo de relé a los pines GPIO correspondientes usando un cable flexible como se muestra en la Figura 2. El código presentado en este artículo fue diseñado para el caso en el que el IN1-IN7 pines conectados a los pines GPIO1-GPIO7. Si decide conectar estos pines de manera diferente, deberá modificar su código en consecuencia.

La distribución de pines GPIO de Raspberry Pi se muestra en la Figura 2. Los puertos de E/S de Raspberry Pi funcionan a 3,3 V y el módulo de relé funciona a 5 V. Sin embargo, los relés están aislados de los pines GPIO de Raspberry Pi mediante optoacopladores. Los optoacopladores se pueden alimentar con un voltaje de 3,3 V desde el pin Vcc. El pin Vcc del módulo de relé se puede alimentar con un voltaje de 3,3 V desde el conector GPIO de Raspberry Pi. Asegúrese de quitar el puente que pone en cortocircuito los terminales Vcc y JDVcc del módulo de relé. El pin JDVcc debe ser de 5V para funcionamiento correcto relé. El módulo de relé en cuestión abre los contactos en estado activo. De ello se deduce que debe poner a tierra los terminales IN1-IN8 para encender el relé.

Figura 2. Distribución de pines GPIO de Raspberry Pi

Advertencia: Tenga mucho cuidado al conectar componentes de hardware del sistema. Consecuencias de la derrota descarga eléctrica puede resultar ser ¡fatal!

Recorte los cables de extensión restantes con enchufes y asegure los cables a los terminales apropiados en el módulo de relé. Conecte también los hilos del cable que posteriormente conectará el sistema a la toma de pared a los terminales correspondientes del módulo de relé. Todo el hardware del sistema se puede colocar en un estuche para lápices o en un contenedor similar. Piense en el gabinete con anticipación para evitar tener que desconectar y volver a conectar los cables a los terminales del módulo de relé una vez que haya terminado de trabajar en el hardware del sistema. También inserté varias abrazaderas de cable atornilladas en los orificios correspondientes del chasis para limitar la tensión del cable (Figura 3).

Figura 3. Instalación del hardware del sistema

Entorno de software

Empecé a crear el mío propio. entorno de software desde la instalación de la imagen del sistema operativo Raspbian. Antes de comenzar a instalar la imagen del sistema operativo, deberá preparar una pantalla que admita HDMI, un teclado y un mouse con Conectores USB, y también cable de red para conectarse al sistema a través de protocolo ethernet. También puede establecer una conexión con el sistema a través de adaptador wifi. Cree una tarjeta SD de arranque para iniciar su sistema por primera vez, siguiendo las instrucciones en http://www.raspberrypi.org/documentation/installation/installing-image. Durante el primer arranque del sistema, el instalador configurará el sistema operativo y colocará los datos de su imagen en todo el espacio disponible de la tarjeta de memoria. Después del primer inicio, debería poder iniciar sesión con las credenciales de su cuenta de usuario estándar (nombre de usuario "pi" y contraseña "raspberry").

Actualizar el sistema es una acción inteligente que debe realizarse inmediatamente después de iniciar sesión correctamente. La imagen del sistema operativo Raspbian se basa en paquetes de software de la distribución Debian y utiliza la aplicación aptitude como administrador de paquetes de software. Además, necesitará paquetes de software llamados python, pip y git. También recomendaría instalar Webmin para simplificar el proceso de administración del sistema. Instrucciones para instalando webmin se encuentran en http://www.webmin.com/deb.html (siga las recomendaciones dadas en la sección "Uso del repositorio APT de Webmin"):

Sudo apt-get update && sudo apt-get dist-upgrade sudo apt-get install python python-pip git git-core

Después de esto, tendrás que configurar una conexión mediante un adaptador Wi-Fi. puedes encontrar instrucciones detalladas en el recurso http://www.raspberrypi.org/documentation/configuration/wireless. Recomiendo usar la opción wicd-courses. En en esta etapa puedes cambiar la configuración Configuraciones de frambuesa Pi usando comandos sudo raspi-config. Luego de ingresar este comando, tendrá acceso a una conveniente interfaz gráfica que le permitirá configurar los valores de parámetros como el volumen. RAM compartido con GPU, parámetros de rendimiento procesador central, modo de uso GUI durante el proceso de carga y otros.

a otros herramienta útil es el IDE de Cloud 9. Cloud 9 IDE le permitirá editar su código a nivel de Raspberry Pi a través de un navegador web. Este IDE también le dará acceso a la interfaz. línea de comando dentro de un navegador web. Puede desarrollar y ejecutar cualquier código sin salir de su navegador web. Colud 9 IDE requiere versión específica Marco NodeJS. El uso de una versión no compatible del marco resultará en una pérdida permanente accidentes Rendimiento del servidor Cloud 9, que puede desanimar a cualquier usuario. Las instrucciones para instalar el marco NodeJS en una computadora Raspberry Pi se proporcionan en http://weworkweplay.com/play/raspberry-pi-nodejs.

Software

Decidí crear la interfaz de usuario de mi sistema utilizando tecnologías HTML5, CSS3 y JavaScript. La combinación de las tres tecnologías mencionadas es poderosa herramienta para crear interfaces de usuario. Idioma programación javascript le permite utilizar una API simple para interactuar con los servidores. Además, existen muchas bibliotecas para el lenguaje de programación JavaScript, como JQuery, Bootstrap y otras, entre las que puedes elegir la más adecuada. HTML5 proporciona la API WebSocket, que permite a un navegador web mantener una conexión y comunicarse a través de esa conexión. Esta circunstancia hace que la API WebSocket sea especialmente útil para la implementación. aplicaciones dinámicas y aplicaciones de streaming como juegos y chats. Mesas en cascada estilos CSSútil para peinar varios elementos páginas HTML. Si se usan correctamente, le permiten crear dinámicas. interfaces de usuario cambiando los estilos de los elementos de la página cuando ocurren ciertos eventos. Para de este proyecto Elegí JQuery para manejar los eventos, Bootstrap CSS para diseñar los botones en una cuadrícula y JavaScript para implementar los mecanismos de comunicación de la API WebSocket.

Bibliotecas

Una aplicación de servidor que se ejecuta a nivel de Raspberry Pi debe controlar el estado de los pines GPIO Tablas de frambuesa Pi. También debe proporcionar una interfaz HTTP para pasar datos GUI y una interfaz WebSocket para pasar mensajes con comandos y datos de estado. Listo para instalar aplicación de servidor con una funcionalidad tan específica simplemente no existe, así que decidí crear mi propia implementación de servidor usando el lenguaje Programación en Python. Para simplificar el desarrollo de la aplicación de servidor descrita utilizando el lenguaje de programación Python, se encuentran disponibles módulos con implementaciones de métodos para trabajar con la interfaz GPIO de Raspberry Pi para crear servidor HTTP y para trabajar con la interfaz WebSockets. Dado que todos los módulos enumerados están diseñados para realizar las tareas asignadas, tuve que desarrollar una cantidad mínima de código.

Sin embargo, los módulos mencionados no están incluidos con el intérprete de Python y deben instalarse por separado. En primer lugar, necesitarás un módulo para controlar el estado de los pines del conector GPIO de la Raspberry Pi. La forma más sencilla cambiar el estado de los pines de este conector es utilizar la biblioteca RPi.GPIO, disponible en https://pypi.python.org/pypi/RPi.GPIO. Puede instalar el módulo correspondiente usando el siguiente comando:

Sudo pip instala RPi.GPIO

Trabajar con el módulo RPi.GPIO no presenta ninguna dificultad. Puedes encontrar ejemplos de uso. de este módulo en . El primer paso para trabajar con un módulo es importar su código al código del proyecto. Después de esto, tendrás que seleccionar un modo de funcionamiento. Se puede utilizar la constante GPIO.BOARD o la constante GPIO.BCM como identificador del modo de funcionamiento. La elección del modo de funcionamiento determina el uso del chip BCM o de los pines del conector de E/S cuando se hace referencia a los números de pin en todos los comandos posteriores. A continuación deberás indicar si los pines del conector en cuestión se utilizan para entrada o salida. Ahora puede utilizar las clavijas de este conector para el fin previsto. Finalmente, tendrás que llamar al método cleanup() para restablecer los pines GPIO. El Listado 1 muestra un ejemplo simple del uso del módulo RPi.GPIO.

Listado 1. Usando el módulo RPi.GPIO

Importar RPi.GPIO como GPIO # importa el código del módulo al código del proyecto GPIO.setmode(GPIO.BOARD) # indica que la numeración se usa para identificar los pines del conector GPIO.setup(0, GPIO.IN) # indica que el canal 0 se usará para la entrada GPIO.setup(1, GPIO.OUT) # indicando que el canal 1 se usará para la salida var1=GPIO.input(0) # lee el estado del canal 0 GPIO.output(1, GPIO.HIGH ) # configurando uno lógico en el canal 1 GPIO.cleanup() # restableciendo el estado de los pines del conector GPIO.




Arriba