Communication radio HC12.

Bonjour à tous,

Après plusieurs jours de tests et bidouilles en tous genre sans résultat satisfaisant, je dois finalement admettre que je vais avoir besoin d’un petit coup de pouce pour mener à bien mon projet.

Une dame âgée de mon quartier tombe fréquemment pendant ses balades dans son jardin et dernièrement elle est restée plusieurs heures sous la pluie avant que je ne la trouve.
J’aimerais pouvoir lui bricoler un petit boitier “panic button” qu’elle prendrait avec elle lors de ses sorties et qui pourrait me prévenir plus rapidement en cas d’incident.

Je pense faire un boitier mobile avec un arduino pro mini et un module radio HC-12 (doc jointe) qui communique avec une base fixe dans la maison contenant une autre paire pro mini/HC-12 et un Wemos d1 mini pour envoyer des notifications sur mon téléphone via le wifi.

Je cherche le moyen le plus fiable d’être sur que l’alerte soit transmise en cas d’appuis sur le bouton du boitier.
Je ne sais pas si c’est la meilleure solution mais j’imagine qu’en cas d’appuis, le boitier émet un code continuellement jusqu’à réception d’un code de confirmation de la base. Ensuite éventuellement allumer une led sur le boitier ou émettre un bip pour informer que l’info est bien passée.

J’ai bidouillé deux bouts de code pour le boitier et la base mais c’est pas génial. Ça “marche” mais c’est capricieux et pas très réactif. Tout sauf fiable. Je pense que je m’y prends mal.

En jouant un peu avec des delay() c’est plus ou moins bien. On dirait qu’il y a surcharge d’information mais je ne vois pas comment améliorer ça.

Le boitier mobile:

En cas d’appuis sur le bouton on bascule dans la boucle “emission” qui envois le code 1111 continuellement jusqu’à recevoir le code de confirmation 2222 de la base.

#include <SoftwareSerial.h>
SoftwareSerial mySerial(4, 3);

int ledPin = 13;
int buttonPin = 2;

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT);
  mySerial.begin(9600);
  Serial.begin(19200);
}

void loop() {

  int buttonState = digitalRead(buttonPin);
  if (buttonState == 0) {
    emission();
  }
}

void emission() {

  if (mySerial.available() > 1) {
    int input = mySerial.parseInt();
    if (input == 2222) {
      digitalWrite(ledPin, HIGH);
      Serial.println("ok");
      mySerial.flush();

    }

  }
  else {
    mySerial.println(1111);
    Serial.println("1111");
    emission();

  }
delay(20);

}

La base :

Renvois le code 2222 en cas de reception de 1111.

#include <SoftwareSerial.h>
SoftwareSerial mySerial(0, 1);

int ledPin = 13;

void setup() {
  mySerial.begin(9600);
  pinMode(ledPin, OUTPUT);
  Serial.begin(19200);
}

void loop() {
  if (mySerial.available() > 0) {
    int input = mySerial.parseInt();
    if (input == 1111) {
      digitalWrite(ledPin, HIGH);
      Serial.println("2222");
      mySerial.println(2222);
    }
  }

  else {
    digitalWrite(ledPin, LOW);
  }

  delay(20);

}

Si une âme charitable pouvait me donner son avis et quelques conseils ce serait vraiment sympa.

Merci.

2016-01-14_122335_HC-12_v2.3B.pdf (237 KB)

Sérieusement si vous voulez l’aider acheter lui un VRAI produit normé et certifié - on ne joue pas avec la vie des personnes...

Malheureusement elle refuse. je le lui ai proposé. Même de le payer pour elle. Ce serait peut-être différent si cela venait de moi. C'est une vielle dame avec un certain caractère mais qui a beaucoup d'affection pour moi.

J'apprécie la leçon de morale et vous en remercie, néanmoins j'aimerais pouvoir progresser sur ce projet et trouver une méthode de "confirmation" pour la communication entre deux HC-12 qui me fait aussi défaut pour d'autres projets à base de HC12.

Des pistes ou conseils ?

Il ne s’agit aucunement de leçon de morale, juste de bon sens. Demandez vous comment vous allez vous sentir Si elle meurt sous la pluie parce qu’un fil de votre bidouille s’est débranché, qu’il y a eu un bug, que la pile ne s’est pas chargée, etc.. et que vous l’imaginez appuyant désespérément cent fois sur son bouton...

Pour ce qui me concerne Je me refuse à apporter des conseils pour ce genre d’usage, je ne voudrais pas avoir ma part de responsabilité et vous engage à lui faire un joli cadeau si vous en avez les moyens ou vous rapprocher de la mairie et associations qui peuvent aider.

(De plus ça ressemble fortement à un sujet du bac à la bourre, déguisé en habillage bonne conscience vu le code présenté... même si je vous donne le bénéfice du doute)