"Convertir" la fermeture d'un interrupteur en une impulsion

Un lieu pour discuter des composants et de leur utilisation. Un passage obligé si vous devez interfacer votre Raspberry Pi avec le monde extérieur. On y trouvera aussi les cartes type commande de moteur pas à pas, continu, servo...

Modérateurs : Francois, smba38

destroyedlolo
Raspinaute
Messages : 1390
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: "Convertir" la fermeture d'un interrupteur en une impulsion

Message par destroyedlolo » mer. 6 juil. 2016 16:55

Et pourquoi ne pas simplement utiliser une sonde 1-wire bouton ?
Je n'ai jamais essayé, mais c'est pile poile ce qu'elle est sensée faire :)
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

christophe27
Messages : 38
Enregistré le : lun. 3 nov. 2014 14:04

Re: "Convertir" la fermeture d'un interrupteur en une impulsion

Message par christophe27 » jeu. 7 juil. 2016 11:06

bonjour merci pour tous ces retour

Que voulez vous dire par une sonde 1-wire bouton ?
Le montage utilise déja un e sonde ds18b20 1-wire qui mesure la température du jus dans la bouteille,
elle est reliée a la carte esp-01 sur le GPIO2 !!! si c'est de la même chose que l'on parle!

l'objectif est de faire passer la carte esp-01 de l'état de"veille" a "actif" l'orsquelle entre dans le tunnel de pasteurisation (douche d'eau a 55°puis 65° puis 80°)

Voici pourquoi je pensé incorporer dans le bocal ou ce trouve la carte esp un inter thermique "mécanique" tous ceci afin d'économiser les batteries et de connaitre précisément l'heure de début (traçabilité oblige....)

Merci pour le schemat mais je bloc...encor quelque questions.
Pourquoi 2 résistances en série ?
1 résistance 10 Kohms http://www.gotronic.fr/art-resistance-c ... 6-2760.htm
quel valeur pour la 2eme?


D? est bien une diode 1n4148 http://www.gotronic.fr/art-1n4148-7.htm

le pin ch_pd est alimenté par une résistance 2kohms je la place entre les diodes et le pin ?

Excuser moi pour ces questions un peu... mais la panoplie de matériel est tellement vaste que je mi perd....

guillaume9344
Raspinaute
Messages : 629
Enregistré le : mar. 6 janv. 2015 19:44
Localisation : finistere

Re: "Convertir" la fermeture d'un interrupteur en une impulsion

Message par guillaume9344 » jeu. 7 juil. 2016 16:12

Au temps pour moi , j 'ai oublié le symbole de masse , donc les résistances ne sont pas en série , j 'ai également remplacé une diode par une résistance de 100homs ,car celle si aurrait bloquée la mise à zero de cd_pd par le gpio.

la pin ch_pd serat alimenté soit par l'impultion en provenance du condensateur soit par le gpio , il n'y a pas besoin d'autre alim.
Sans titre.jpg
Sans titre.jpg (104.41 Kio) Vu 2595 fois
rpi b+ ,osmc, motioneyes
rpi 2 raspbian , server minecraft 24h/24 , utilisation gpio
orange pi pc debian ,utilisation gpio, motion cam

destroyedlolo
Raspinaute
Messages : 1390
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: "Convertir" la fermeture d'un interrupteur en une impulsion

Message par destroyedlolo » jeu. 7 juil. 2016 16:37

Salut,
christophe27 a écrit :Que voulez vous dire par une sonde 1-wire bouton ?
Il y a 2 types de sondes 1-wire :
  • les sondes filaires comme le 18b20 qui sont mise donc sur le bus
  • les sondes boutons qui ressemblent à des piles boutons : ce sont des datalogger donc elles sont autonomes, stockent les informations dans leur propre mémoire et sont déchargées lorsqu'on les connecte sur un host 1-wire.
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

christophe27
Messages : 38
Enregistré le : lun. 3 nov. 2014 14:04

Re: "Convertir" la fermeture d'un interrupteur en une impulsion

Message par christophe27 » ven. 8 juil. 2016 10:07

Bonjour destroyedlolo

si j'ai bien compris les sondes bouton 1-wire sont des enregistreur autonome.
Je veut un contrôle des température en "temps réel."
Ce matériel ne me convient pas car j'aurais les enregistrements que lorsque la sonde sera sortie du tunnel.
Les données arriveront trop tardivement si il y a problème!!
Nous avons deja des "enregistreurs "(je ne connais pas leur fonctionnement!).

Merci pour l'info ça peut toujours être utile

christophe27
Messages : 38
Enregistré le : lun. 3 nov. 2014 14:04

Re: "Convertir" la fermeture d'un interrupteur en une impulsion

Message par christophe27 » ven. 8 juil. 2016 10:17

une petite "grande" photo
WP_20160705_002.jpg
WP_20160705_002.jpg (1.34 Mio) Vu 2581 fois
sonde.jpg
sonde.jpg (1.38 Mio) Vu 2581 fois
Je commande les composants et reviens vers vous ....MERCI

christophe27
Messages : 38
Enregistré le : lun. 3 nov. 2014 14:04

Re: "Convertir" la fermeture d'un interrupteur en une impulsion

Message par christophe27 » jeu. 14 juil. 2016 22:22

Bonsoir, le facteur est passé!
J'ai donc essayé le montage...
lorsque je chauffe le contacteur il y a bien une impulsion (mis une led pour vérifier)mais la carte esp ne "démarre" pas...
Il me semble que l'impulsion soit trop courte pour que le qpio0 deviens "true" et donc prennent la suite de l'impulsion...
Voici 2 photo
montage.jpg
montage.jpg (1.92 Mio) Vu 2556 fois
essai.jpg
essai.jpg (1.99 Mio) Vu 2556 fois
Merci

spourre
Raspinaute
Messages : 735
Enregistré le : lun. 22 déc. 2014 16:50
Localisation : 67380 LINGOLSHEIM

Re: "Convertir" la fermeture d'un interrupteur en une impulsion

Message par spourre » ven. 15 juil. 2016 01:17

christophe27 a écrit :une petite "grande" photoWP_20160705_002.jpgsonde.jpg

Je commande les composants et reviens vers vous ....MERCI
Bonsoir,

C'est vrai qu'une photo c'est plus parlant.
Ma suggestion du jour (respect du concept kiss):

Utiliser un bête interrupteur à lames souples (reed ) pour couper l'alimentation.
Ce contact sera placé au plus près du fond du bocal qui assure la protection et l'étanchéité.
Par défaut, le contact est ouvert et le module non alimenté ne consomme rien.
Poser un aimant permanent sur le bocal, juste avant de mettre la bouteille/capteur au four (on est loin du point de Curie).
Enlever l'aimant à la sortie du four.

http://www.conrad.fr/ce/fr/product/5036 ... 3?ref=list


Si l'avance de la chaîne provoque des secousses qui risquent de faire tomber l'aimant, on peut inverser le fonctionnement c'est à dire utiliser une ILS qui s'ouvre en présence du champ magnétique. Ça existe comme il existe aussi des inverseurs ILS. Dans ce cas, on enlève l'aimant pour activer le capteur et on le repose pour le stockage.

Sylvain

guillaume9344
Raspinaute
Messages : 629
Enregistré le : mar. 6 janv. 2015 19:44
Localisation : finistere

Re: "Convertir" la fermeture d'un interrupteur en une impulsion

Message par guillaume9344 » ven. 15 juil. 2016 08:41

Bonjour, la solution de spourre et bien aussi .
pour le montage , le condensateur est à l 'envers , le coté + est du coté de l 'intérupteur , de plus je n 'arrive pas a voir si c'est un 10µf ou 1µf. vous pouvez essayez le montage avec un simple intérupteur pour déterminer les temps de commutation du la pin de l'esp.
Dans le programme de l 'esp , il faut également au plus tot metre le gpio au niveau haut puis ensuite cconfigurer la pin en sortie , car si la pin est mise en premier en sortie au niveau bas , le condensateur se décharge casiment instentanement.
@+
rpi b+ ,osmc, motioneyes
rpi 2 raspbian , server minecraft 24h/24 , utilisation gpio
orange pi pc debian ,utilisation gpio, motion cam

christophe27
Messages : 38
Enregistré le : lun. 3 nov. 2014 14:04

Re: "Convertir" la fermeture d'un interrupteur en une impulsion

Message par christophe27 » ven. 15 juil. 2016 16:27

Merci pour vos reponses
J'avais pensée a ce type d'interrupteur que propose spourre...mais si l'opérateur oublie ou "traine"ou...etc ont aura pas un top départ précis.
IL y aura un compteur sur le tapis pour mesurer la position des bouteilles
Je veut faire des contrôle:
-exemple 30% d'avancement = 60°C dans la bouteille
afin de moduler la temperture des douche.... et puis c'est aussi pour le "FUN" de bidoullier et découvrir l'éléctronique

GUIlLLAUME
je confirme le condensateur est bien un 10µf
Je l'ai retourner verfié le code ...mais c'est pareille.
Avec un bouton poussoir, a "l'oeil" il faut 1 seconde!
Voici le programme de l'ESP
(c'est mix de:
https://github.com/Hackable-magazine/Ha ... dallas.ino
et
https://github.com/Hackable-magazine/Ha ... sp/esp.ino)

Code : Tout sélectionner

#include <ESP8266WiFi.h>
#include <OneWire.h>
#include <DallasTemperature.h>

const char* ssid = "domoAP";
const char* password = "mot2passe";

#define ONE_WIRE_BUS 2  // DS18B20 pin
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature DS18B20(&oneWire);


// Créé le serveur Web en spécifiant le port TCP/IP
// 80 est le port par défaut pour HTTP
WiFiServer server(80);

// démarrage
void setup() {
  uint8_t mac[WL_MAC_ADDR_LENGTH];
  float temp;
  
  // communication série 115200
  Serial.begin(115200);
  // petit pause
  delay(10);
  
  // GPIO0 à haut //////comfiguration du GPIO0 qui doit alimenter le pin ch_pd
  digitalWrite(0, 1); 
  // GPIO0 en sortie
  pinMode(0, OUTPUT);
  
  // Deux sauts de ligne pour faire le ménage car
  // le module au démarrage envoi des caractères sur le port série
  Serial.println();
  Serial.println();
  
  do {
    DS18B20.requestTemperatures(); 
    temp = DS18B20.getTempCByIndex(0);
  } while (temp == 85.0 || temp == (-127.0));
  Serial.print("Temperature: ");
  Serial.println(temp);
    
  if(WiFi.macAddress(mac) != 0) {
    for(int i=0; i<WL_MAC_ADDR_LENGTH; i++) {
//      Serial.print(mac[i],HEX);
      if(mac[i]<16) Serial.print ("0");
      Serial.print(mac[i],HEX);
      Serial.print((i < WL_MAC_ADDR_LENGTH-1) ? ":" : "\n");
    }
  }

  WiFi.mode(WIFI_STA);
  WiFi.disconnect();
  delay(100);

  Serial.print("Connexion a : ");
  Serial.println(ssid);  
  // Connexion au point d'accès
  WiFi.begin(ssid, password);
  
  // On boucle en attendant une connexion
  // Si l'état est WL_CONNECTED la connexion est acceptée
  // et on a obtenu une adresse IP
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
  
  // Démarrage du serveur Web
  server.begin();
  Serial.println("Server started");

  // On affiche notre adresse IP
  Serial.println(WiFi.localIP());
}

// boucle principale
void loop() {
  float temp;
  char strbuffer[10];
  
  // Est-ce qu'un client Web est connecté ?
  WiFiClient client = server.available();
  if (!client) {
    // non, on abandonne ici et on repart dans un tour de loop
    return;
  }
  
  // Un client est connecté
  Serial.println("new client");
  // On attend qu'il envoi des données
  while(!client.available()){
    delay(1);
  }
  
  // On récupère la ligne qu'il envoi jusqu'au premier retour chariot (CR)
  String req = client.readStringUntil('\r');
  // On affiche la ligne obtenue pour information
  Serial.println(req);
  // La ligne est récupérée, on purge 
  client.flush();
  
  // Test de la requête
  int val;
  
  
  // est-ce que le chemin dans la requête est "/gettemp" ?
  if (req.indexOf("/gettemp") != -1) {
    do {
      DS18B20.requestTemperatures(); 
      temp = DS18B20.getTempCByIndex(0);
    } while (temp == 85.0 || temp == (-127.0));
    
    Serial.print("Temperature: ");
    Serial.println(temp);}
  
  // est-ce que le chemin dans la requête est "/gpio/0" ?
  else if (req.indexOf("/gpio/0") != -1){
    // oui, ceci correspond à "0" (OFF)
    val = 0;
    }
  // non, est-ce que le chemin est "/gpio/1" ?
  else if (req.indexOf("/gpio/1") != -1){
    // oui, ceci correspond à "1" (ON)
    val = 1;
  } 
  else {
  // C'est un autre chemin qui est demandé et il ne correspond à rien
  
    // On signal que cette demande est invalide
    Serial.println("invalid request");
    // et on déconnecte le client du serveur Web
    client.stop();
    // et on repart dans un tour de boucle
    return;
  }

  // Nous avons obtenu l'état demandé pour la sortie GPIO0
  // Nous pouvons écrire l'état de la sortie
  digitalWrite(0, val);
  // Peut-être le client a-t-il envoyé d'autres données,
  // mais nous purgeons la mémoire avant d'envoyer notre réponse
  //client.flush();

  // Composition de la réponse à envoyer au client
  // On commence avec le texte d'une réponse HTTP 200 standard et un début de page HTML
  //   String m = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nLa sortie est a l'etat ";
  // puis on complète avec "haut" ou "bas" en fonction de la la valeur de val
  //m += (val)?"haut":"bas";
  // et on termine la page HTML
  //m += "</html>\n";

  // On envoi la réponse au client
  //client.print(m);
  // petite pause
  //delay(1);
  // et on le déconnecte du serveur Web
  //Serial.println("Client disonnected");

  // client.stop() n'est pas utilisé ici,
  // le client est automatiquement déconnecté à la fin de la fonction loop(),
  // lorsque l'objet "client" est détruit, car la déclaration est locale.}{
    // On signal que cette demande est invalide
   // Serial.println("invalid request");
    // et on déconnecte le client du serveur Web
    //client.stop();
    // et on repart dans un tour de boucle
   // return;
  //}

  // Peut-être le client a-t-il envoyé d'autres données,
  // mais nous purgeons la mémoire avant d'envoyer notre réponse
  client.flush();
  if (req.indexOf("/gettemp") != -1) {
  //  do {
  // Composition de la réponse à envoyer au client
  String s = "HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r\n";
  dtostrf(temp, 4, 3, strbuffer);
  /*
  for(int i=0;i<sizeof(strbuffer);i++){
    s += strbuffer[i];
  }
  */
  s += strbuffer;
  s += "\n";
  client.print(s);
  }
  // petite pause
  delay(1);
  // et on le déconnecte du serveur Web
  Serial.println("Client disonnected");
  
}
MERCI

Répondre

Retourner vers « L'électronique et le Raspberry Pi »