Vieille Maison

De Sam's Projects.
Aller à : Navigation, rechercher

Sommaire

Interface

  • Emoncms
  • NodeJS + Serial Port + Websocket

Energie

Fioul

Pour suivre le fonctionnement complet du bruleur (off, prechauffage, electrovanne, default,...) :

  • Convertisseur 230V AC / 15V AC : 10€
  • ATTINY85
  • RF433 Emetteur
  • Pont diviseur de tension 15VAC => 5V avec offset pour l'alternatif

OU

Pour juste l'electrovanne :

  • Convertisseur 230VAC/5VDC => Arduino pin => interrupt on change
  • ATTINY85
  • RF433
  • 2x piles 1.5V ou une pile 18650

Node Chaudiere.png

Electricité

J'ai un vieux compteur électrique avec un disque qui fait 1.8Wh/tour. Le disque est en métal blanc sauf un bout qui est noir.

J'utilise donc un phototransistor pour détecter le passage du bout noir. Après deux essais infructueux avec des réflecteur optique tout montés (point de détection trop proche <5mm hors j'ai besoin d'au moins 10mm), j'ai décidé de le faire moi-même.

  • Arduino Pro Mini 5V
  • Un LED IR de 940nm
  • Un phototransistor de 940nm LTR4206
  • Emetteur RF433MHz
  • Une LED
  • Des résistances (100 ohms et 10K)

Node Compteur Electrique.png

Le signal du phototransistor arrive sur une entrée analogique car à la base je récupérais les infos d'un réflecteur sharp analogique et du coup j'avais déjà fabriqué la platine.

Une amélioration serait de mettre l'entrée sur une interruption et mettre en veille l'arduino.

20151024 111854.jpg


Compteur_Electrique.ino.c

//Compteur_Electrique.ino
 
#include <Manchester.h>
 
#define TX_PIN 7
 
const int ledPin = 10;
const int emmiterPin = 12;
const int analogSensorPin = 1;
 
int threshold = 500;
 
unsigned long oldTime = 0;
unsigned long c = 0;
 
uint8_t data[2] = {0, 1};
 
 
 
void setup() {
  // put your setup code here, to run once:
  pinMode(ledPin, OUTPUT);
  pinMode(emmiterPin, OUTPUT);
  digitalWrite(ledPin, LOW);
  digitalWrite(emmiterPin, HIGH);
  Serial.begin(9600);
  man.setupTransmit(TX_PIN, MAN_1200);
  delay(2000);
  Serial.print("Node Compteur Electrique V1");
 
}
 
void loop() {
 
  // On est dans le noir
  while (analogRead(analogSensorPin) > threshold) {
    while (analogRead(analogSensorPin) > threshold) {
      digitalWrite(ledPin, LOW);
    }
    delay(20);
  }
 
// On est dans le blanc
  while (analogRead(analogSensorPin) < threshold) {
    while (analogRead(analogSensorPin) < threshold) {
      digitalWrite(ledPin, HIGH);
    }
    delay(20);
  }
  c++;
  data[0] = 1;
  data[1] = (millis() - oldTime) / 100;
  oldTime = millis();
  man.transmitArray(2, data);
  Serial.print(" data[1] en 1/10 de seconde: ");
  Serial.print(data[1]);
  Serial.print(" millis : ");
  Serial.println(millis());
 
}

Eau

Mettre capteur sur compte tour

Outils personnels
Espaces de noms

Variantes
Actions
Farfouillage
Liens divers
Boîte à outils