ITCooky Recetas

Vamos a cocinar it cositas

Controlador de ventilador casero para Orange Pi PC Plus!

дата noviembre 7, 2019

El circuito ya se ha realisado para otra naranja, pero justo ahora tomé el soldador, y Orange Pi PC Plus se convirtió en la naranja principal gracias a eMMC y su estabilidad y consume menos electricidad (ahora es importante, todo se está volviendo importante ahora).

Aquí está la esquema de conexión. Transistor S9012, todas las resistencias son 220 Ohm. En la placa, el ventilador está conectado al conector, el rojo negro es importante, pero no hay tal conexión en el circuito porque dibujat en Fritzing es un dolor insoportable.

IMPORTANTE: Interesante, pero este circuito no funciona en absoluto en la Raspberry Pi 3 en el carcasa NesPi: allí la energía proviene de los pines de la carcasa, no de la Raspberry. Pues no, solo el ventilador tiembla un poco, cuando desconecto todo de la base …

Aqui esta la foto de la placa terminada, la resistencia es la misma, la marca es diferente

Enlaces a componentes, quizás ya viejos, los he comprado hace mucho tiempo
Ventilador de 5V 0.2A
https://ru.aliexpress.com/item/Raspberry-PI-Fan-Active-Cooling-Fan-for-Customized-Acrylic-Case-5V-plug-in-and-play-Support/32294328071.html
Mix placas 5×7 4×6 3×7 2×8
Mix de transistoreshttps://ru.aliexpress.com/item/15Values-TO-92-Transistor-Assorted-Kit-S9012-S9013-S9014-S8050-S8550-2N3904-2N3906-BC327-BC337-Tl431/32384690394.html

Para comunicarse con GPIO hay que instalar WiringOP

git clone https://github.com/zhaolei/WiringOP.git -b h3
cd WiringOP
chmod +x ./build
sudo ./build

La forma más fácil es ejecutar un script a través de cron, que mirará la temperatura y ejecutará el arranque del ventilador

Ademas se enciende el LED,si la temperatura es más de 45 grados es rojo, si menos es azul. Verifique la ruta al script
whereis bash
lo interesante, si la ruta no es correcta, entonces el script funcionará desde la consola, pero desde cron no, quien sabra porque

Crearemos un script en el directorio raíz

vi cool.sh

Añádele código

#!/bin/bash
C=`/bin/cat /sys/class/thermal/thermal_zone0/temp`
if [ $C -ge 45000 ]
then
  /usr/local/bin/gpio mode 1 out&&/usr/local/bin/gpio write 1 off&&/usr/local/bin/gpio mode 3 out&&/usr/local/bin/gpio write 3 on&&/usr/local/bin/gpio write 2 off
else
/usr/local/bin/gpio write 1 on&&/usr/local/bin/gpio write 3 off&&/usr/local/bin/gpio mode 2 out&&/usr/local/bin/gpio write 2 on
fi

hazlo ejecutivo
chmod +x cool.sh
y agregamoslo al horario
crontab -e
la linea

*/1 * * * * /root/cool.sh

y funciona

Pero solo una vez por minuto … pero puedes hacerlo en C y se lanzara una vez por segundo, y es demasiado repetido, hasta habra que pausarlo

Vamos a la carpeta con ejemplos de WiringOP
cd /root/WiringOP/examples
Editamos file
vi acool.c
Añádele código

#include <stdio.h>
#include <wiringPi.h>


#define LEDB 3
#define LEDR 2
#define COOLER 1
#define WARNING_TEMP 45000

int main (void)
{
  int number1;

  wiringPiSetup ();
  pinMode (LEDB, OUTPUT);
  pinMode (LEDR, OUTPUT);
  pinMode (COOLER, OUTPUT);
 for (;;)
  {

FILE *in_file;


  in_file = fopen("/sys/class/thermal/thermal_zone0/temp", "r");
  if (in_file == NULL)
    {
        printf("Can't open file for reading.\n");
    }
    else
    {
        fscanf(in_file, "%d", &number1);
        fclose(in_file);
    }
 if ( number1 <= WARNING_TEMP)
{
    digitalWrite (LEDB, HIGH);  // On
    digitalWrite (COOLER, HIGH);   // Off
    digitalWrite (LEDR, LOW);   // Off
    delay (500);               // mS
    digitalWrite (LEDB, LOW);   // Off
    delay (500);

}
else
{
    digitalWrite (LEDR, HIGH);  // On
    digitalWrite (COOLER, LOW);  // On
    delay (50000);               // mS

}


  }
  return 0 ;
}

Esa es la ruta al file con temperatura en Armbian /sys/class/thermal/thermal_zone0/temp

PRECAUCIÓN: Resulta que los programas C con ciclos cargan el procesador al 100%, pensandolo pues no hay nada sorprendente aquí. Pero en este script, el LED parpadeante proporciona un ciclo de frenado para que la sobrecarga del CPU no suceda … pero debes estar listo

Compilamos el programma C
make acool

Y ejecutamos
./acool

Y el programa funciona. Cuando la temperatura es menos de 45000 (45 Celsius), una luz azul parpadea, comprueba una vez por segundo (este periodo establece el intervalo de parpadeo: los LEDs juegan un papel importante aquí), cuando se eleva por encima, la luz roja se enciende y el script se congela durante 50 segundos, para no arrancar repentinamente el ventilador.

Este es solo un programa C, no entendí cómo convertirlo en un system demon. Pero simplemente se puede ejecutar desde el principio en boot!

el programma ya compilado, pongo en el directorio root
cp /root/WiringOP/examples/acool /root/acool
editamos cron
crontab -e
cambio la linea por esa nieva

@reboot /root/acool

y funciona!


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *