By

Un ordinateur solaire en Bretagne !

Un ordinateur allumé en permanence, mais sans utiliser d’électricité, enfin venant d’EDF. Est ce un peu audacieux comme projet en Bretagne ? Ça se discute …

Bon, d’accord le panneau solaire est assez grand, et l’ordinateur est un raspberry pi.

wp-1456252010877.jpgLa partie alimentation et gestion de l’énergie est composée de :

  • un panneau solaire 18V de 80W
  • une batterie 12V de 7.2 VA
  • une batterie 12V de 40 VA (update du 11 juin 2016)
  • un module de gestion de la charge (batterie 12v plomb-acide)
  • un régulateur de tension 5v (prise USB sur allume-cigare)

 

 

wp-1456251996247.jpg

La partie informatique est composée de :

  • un Raspberry Pi (modele B)
  • une carte WiFi USB (Alpha 036)

 

 

 

 

A venir : tester un convertisseur de tension continue (DC-DC), dont l’efficacité doit approcher les 92%

wp-1456251974544.jpg

Je vais aussi superviser la charge de la batterie et l’alimentation venant du panneau solaire. Je vais donc suivre les tensions et les courants autours de la batterie. Un Arduino fera très bien l’affaire. Il pourrait même, à terme, optimiser l’exposition du panneau solaire, en l’inclinant pour qu’il « suive » le soleil …

 

dongle-voltmetre-USBUpdate du 31/03/2016

J’ai commandé un dongle USB qui mesure la tension électrique (V), l’intensité (A), et la capacité (mAh).

Le modèle de Raspberry pi que j’ai retenu initialement est un modèle B, donc la première version. La mauvaise nouvelle, c’est que ce modèle consomme finalement le double de courant que la version 3 !

Avec une carte Wifi en USB, le Raspberry Pi v1 modele B consomme environ 0.53A
Le Raspberry pi 3 consomme environ 0.23A. (avec son Wifi intégré)img_20160331_211411.jpg
Fort de ce constat, j’ai remplacé le raspberry v1 par un v3. Je devrai donc doubler l’autonomie de cette machine. A suivre …

 

By

Transmission RF entre un Arduino et un Raspberry Pi – version 2

Présentation

Je reviens à l’attaque pour optimiser la transmission en Radio Fréquence entre un arduino (capteurs) et un Raspberry Pi (collecteur).
Un article précédent (http://www.raulet.net/WP/?p=174) présentait une version simple voir simpliste en utilisant le protocol RS232 directement sur ces petits modules RF en mode ACK. Cette méthode subie beaucoup de bruit et donne des résultats moyens dans la durée.

La librairie retenue pour ce besoin est RCSwitch, qui existe pour Arduino et Raspberry !

Câblages

Arduino

ARL-Arduino-RF-emetter-1

Schéma de l’emetteur (Arduino)

 

 

 

 

 

 

 

 

 

Raspberry Pi

Coté Raspberry Pi :

ARL-RPi-RF-receiver-1

 

Schéma de la partie Raspberry Pi :
GPIO2 / pin 13  -> DATA

 

 

 

 

GPIO du RPi :

Raspberry-Pi-GPIO-Layout-Revision-2

GPIO Raspberrry Pi (Rev 2) : brochage & fonctions

 

 

 

 

 

Programmation

Protocole de communication

Structure des paquets :

 PREFIX
3 bits
MODULE
4 bits
TYPE
4 bits
CAPTEUR
4 bits
DATA
16 bits
 111  1111  1111  1111  1111111111111111

Types :

  1. Température : en dizième de degrés kelvin
  2. Hygrométrie : en pourcent d’humidité.
  3. xxx
  4. xxx
  5. xxx
  6. xxx
  7. xxx
  8. xxx
  9. xxx

Arduino

Hello World

 

 

By

Module bluetooth série

Module

image

RS232 en TTL

By

Ecran 4.0″ LCD 16:9 pour Raspberry Pi

wpid-IMG_20140201_103851.jpgOn trouve sur eBay ou ailleurs, des écran TFT de 3 à 7 pouces. Ils sont alimentés en 12V, puisque leur usage premier est de visualiser une caméra de recul dans les voitures.

Voici les autres caractéristiques de l’écran :
Pixels : 480×272
Format video : PAL / NTSC
Nombre d’entrées video : 2
Power : 3 Watt
Dimensions : 104x80x17 (mm)
Poids : 150g

Référence chez DX.COM

wpid-IMG_20140201_103915.jpg
La connexion avec le Raspberry Pi se fait via un câble RCA. (ici un câble noir à bouts jaunes)
La sortie video analogique du Raspberry Pi fournit le signal à l’écran, sur l’entrée « AV1 ».

La configuration video du Raspberry Pi, se fait via le fichier « /boot/config.txt »

framebuffer_width=480
framebuffer_height=272
disable_overscan=1
sdtv_mode=0
overscan_left=15
overscan_right=20
overscan_top=-26
overscan_bottom=-26

Montage complet :

wpid-IMG_20140201_184853.jpg

Et voila un (petit) panneau d’affichage, pour indiquer la température et l’hygrométrie (DHT22), les prochains bus de la « star » en partance de l’arrêt à coté de la maison, la hauteur d’eau de la Vilaine au niveau du village, …

By

Piloter un moteur DC en PWM via un TIP122

 

TIP-122_pinouts

http://us.100y.com.tw/PNoInfo/30217.htm

 

 

 

 

 

 

TIP122_pin_layout_S

 

http://www.ecs.umass.edu/ece/m5/tutorials/tip122_transistor_tutorial.html

TIP122_transistor_schematic_S

By

Rasp & refroidissement

Un rasp avec des radiateurs

image

L’ajout de radiateurs fait baisser la température du processeur de quelques degrés pendant 1 minute, mais revient à son niveau initial (soit environ 57°C).

La tépérature du rpi est disponible ici : /sys/class/thermal/thermal_zone0/temp    (il faut juste diviser par 1000 !)

voici un script munin-node pour superviser ce paramètre :
[crayon]
. $MUNIN_LIBDIR/plugins/plugin.sh

if [ « $1 » = « autoconf » ]; then
if [ -r /sys/class/thermal/thermal_zone0/temp ];then
echo yes
exit 0
else
echo « no (missing /sys/class/thermal/thermal_zone0/temp) »
exit 0
fi
fi

if [ « $1 » = « config » ]; then
echo graph_title CPU core temperature
# echo graph_args –base 1000 -l 0
echo graph_args –lower-limit 30 –upper-limit 40
echo graph_info CPU core temperature
echo graph_category sensors

echo temp0.label Core
echo temp0.cdef temp0,1000,/
exit 0;
fi
echo temp0.value `cat /sys/class/thermal/thermal_zone0/temp`
[/crayon]
Avec une légère ventilation (vitesse 1 sur 3 d’un ventilo de 8cm et alimenté en 9v au lieu de 12v), les effets sont beaucoup plus impressionnants et durables sur la température du CPU : dans mon cas, j’ai perdu environ 15°C !!!

Température du cpu du RPI

Température du cpu du RPI

Il me reste à faire des tests en charge CPU et à ajouter de la pâte thermique

By

Arduino vers Raspberry en 433MHz

Capteur dh22 sur un arduino, transmis en radio fréquence vers un raspberry.

Le capteur arduino :

image

Le récepteur raspberry pi :

image

Transmission en rs232, à 300 bit/s.

Coté Raspberry, le programme de capture affiche les informations au fur et à mesure qu'elles arrivent :
RPI-reception-RF

Source du script "arduino2.pl"

#!/usr/bin/perl
use Device::SerialPort;
my $filename = "/dev/ttyUSB0";

my $port = Device::SerialPort->new($filename);
$port->databits(8);
$port->baudrate(300);
$port->parity("none");
$port->stopbits(1);
$port->write_settings;

if (open(my $fh, '<', $filename)) {
  while (my $row = <$fh>) {
    chomp $row;
    #print ">>>$row\n";
    if ($row =~ /(\d\d\.\d\d)<\/TEMP1>/){ print "Got temperature =>  $1 \n"; }
    if ($row =~ /(\d\d\.\d\d)<\/HYGRO1>/){ print "Got humidity =>  $1 \n"; }
  }
} else {
  warn "Could not open file '$filename' $!";
}

[/crayon]

Source du code arduino (capture du DHT22 + envoi sur l'UART donc le transmetteur RF)

[crayon]
#include 

// Data wire is plugged into port 7 on the Arduino
// Connect a 4.7K resistor between VCC and the data pin (strong pullup)
#define DHT22_PIN 7

// Setup a DHT22 instance
DHT22 myDHT22(DHT22_PIN);

void setup(void)
{
  // start serial port
  Serial.begin(300);
  Serial.println("DHT22 Library Demo");
}

void loop(void)
{
  DHT22_ERROR_t errorCode;
 
  // The sensor can only be read from every 1-2s, and requires a minimum
  // 2s warm-up after power-on.
  delay(5000);
 
  Serial.print("\n\nRequesting data...\n\n");
 
  errorCode = myDHT22.readData();
  switch(errorCode)
  {
    case DHT_ERROR_NONE:
      Serial.print("\n\n");
      Serial.print(myDHT22.getTemperatureC());
      Serial.println("");
      delay( random(800, 4500));
      Serial.print("\n\n");
      Serial.print(myDHT22.getHumidity());
      Serial.println("");
      // Alternately, with integer formatting which is clumsier but more compact to store and
      // can be compared reliably for equality:
      //      
      break;
    case DHT_ERROR_CHECKSUM:
      Serial.print("check sum error ");
      Serial.print(myDHT22.getTemperatureC());
      Serial.print("C ");
      Serial.print(myDHT22.getHumidity());
      Serial.println("%");
      break;
    case DHT_BUS_HUNG:
      Serial.println("BUS Hung ");
      break;
    case DHT_ERROR_NOT_PRESENT:
      Serial.println("Not Present ");
      break;
    case DHT_ERROR_ACK_TOO_LONG:
      Serial.println("ACK time out ");
      break;
    case DHT_ERROR_SYNC_TIMEOUT:
      Serial.println("Sync Timeout ");
      break;
    case DHT_ERROR_DATA_TIMEOUT:
      Serial.println("Data Timeout ");
      break;
    case DHT_ERROR_TOOQUICK:
      Serial.println("Polled to quick ");
      break;
  }
}
[/crayon]

By

Transmetteur & récepteur 315 MHz

Comment utiliser les modules 315MHz et 433 MHz

Les modules sont vendus sans antennesArduino RF transmiter 315MHz

Il ne faut pas trop en demander en terme de débit RS232. J’ai lu quelque part que le maximum est 2400 bauds.
Personnellement, j’utilise actuellement des vitesses RS232 de 300 bits/s en 8N1.

Pour les antennes, il semble qu’il faille utiliser un fil du quart de la longueur d’onde.

Fréquences et 1/4 de longueur d’ondes
Fréquence 1/4 de la longueur d’onde
433 MHz 17.25 cm
315 MHz 23.79 cm

 

By

Raspberry & i2c LCD

Utilisation de ‘lcdproc’ pour gérer l’affichage.

image

Il a fallu patcher le driver hd44780, pour correspondre au câblage de l’adaptateur i2c.
http://sourceforge.net/p/lcdproc/discussion/312/thread/00298b2f/

By

Raspberry & DHT22

Capteur de température et hygrométrie.

image

Résultat de la mesure :
RPi_DHT22

Ici, Température = 18.0 °C  et 55.3 % d’humidité.

Lien utilisé pour ce montage : http://learn.adafruit.com/dht-humidity-sensing-on-raspberry-pi-with-gdocs-logging/overview