samedi 28 juillet 2012

-15- Le systeme YaZo-Complements,remarques,ameliorations

Licence Creative Commons
Le Système YaZo de PapyDeYannis est mis à disposition selon les termes de la licence Creative Commons Paternité - Partage à l'Identique 3.0 non transposé.
Les autorisations au-delà du champ de cette licence peuvent être obtenues à PapyDeYannis@gmail.com.

Début : -1- 941 jours
Article précédent :-14- Le systeme YaZo- l'aspect logiciel-la version 11
Article suivant :-16- Le rôle de la technologie dans ces tragédies(1)
Statistiques

 

AVERTISSEMENT IMPORTANT

Cet article termine (provisoirement ? ) la description du système YaZo.
Je rappelle que ce système n'existe actuellement qu'à l'état de prototype et doit donc être considéré comme tel.
Toute personne décidant de le réaliser doit le faire en toute connaissance de cause. Rien de ce que je décris ici ne doit être considéré comme "parole d'Évangile" et doit faire l'objet d'un examen approfondi, que ce soit au niveau matériel ou au niveau logiciel. Il ne faut surtout pas hésiter à en tester le fonctionnement "sur table" et ceci de façon répétée. Le matériel doit être réalisé dans les règles de l'art et ne doit souffrir aucun à-peu-prés. Il en est de même pour ce qui est de l'installation dans le véhicule qui ne doit être faite que par quelqu'un connaissant parfaitement son sujet. Il est en effet hors de question qu'un enfant puisse être mis en danger par un système censé le protéger. Toute personne désirant le réaliser le ferait en engageant sa totale responsabilité.
D'autre part , il faut ABSOLUMENT considérer ceci : Un système d'alarme , même le plus prefectionné qui soit, N'EST PAS LA SEULE ET UNIQUE SOLUTION . Il n'est qu'une aide destinée à faire qu'un oubli, qui, même s'il est absolument inimaginable pour un être humain, reste  possible, quoiqu'on en dise, soit sans conséquences néfastes pour un enfant.
EN AUCUN CAS IL NE DOIT ÊTRE CONSIDÉRÉ COMME UNE NOUNOU.
La toute première solution est la Prévention, à tous niveaux et la vigilance la plus totale.

 

Compléments

 

-->

Les connecteurs

Le connecteur K1 (liaisons vers les équipements du véhicule)

Numéro de pin Fonction Remarques
1 0V Masse du véhicule ou - batterie
2 Sorties du relais Rel 2 Contact sec pour commande d'alarme extérieure
3
4 +12V aprés contact (+12Vapc) Signal indiquant l'état du véhicule arrété ou en marche
5 +12V permanent Alimentation +12V ou + de la batterie (aprés fusble)



Le connecteur K2 (liaisons vers le capteur placé dans le siège)

Numéro de pin Fonction Remarques
1 0V (masse)

2 Info boucle 0V= boucle ouverte sinon boucle fermée ou siège inoccupé
3 Info assise 0V= Siège occupé sinon siège vide



Le connecteur K3 (liaisons vers l'affichage et le capteur de température)

Numéro de pin Fonction Remarque
1,2,3,4,5,6,7 Masse

8 Signal du capteur de température

9,10 +5V Alimentation du capteur de température
11 Poussoir de passage en mode dégradé Version 11 seulement
12 Led Rouge

13 Led Verte

14 Buzzer






Le connecteur K4 (Contact de porte- VERSION 11 seulement)
Numéro de pin Fonction Remarque
1 Masse (0V)

2 Contact de porte 0 → porte ouverte
3 Validation contact de porte 0 → contact de porte installé



La correspondance entre les pins de l'Arduino et celles de l'Atméga

-->

Correspondance entre Arduino et Atmega168

Pin Arduino Pin Atmega 168 Nom du signal Remarques
Digital pin 2 4 (INT0) PD2 pinSiege Entrée - 0 si siege occupé
Digital pin 3 5 (INT1) PD3 pinBoucle Entrée - 0 si boucle ouverte
Digital pin 4 6 (XCK/T0) PD4 pinContact Entrée – 0 si voiture en marche sinon voiture arrétée
Digital pin 5 11 (T1) PD5 pinPorte Entrée – 0 si porte ouverte sinon porte fermée
Digital pin 6 12 (AIN0) PD6 pinValPorte Entrée – 0 si contact de porte installé
Digital pin 7 13 (AIN1) PD7 pinPower Sortie – 1 → automaintien de l'alimentation
Digital pin 8 14 (ICP1) PB0 pinKlaxon Sortie – 1 → Klaxon ON
Digital pin 9 15 (OC1A) PB1 pinBuzzer Sortie – PWM commande du buzzer
Digital pin 10 16 (SS/OC1B) PB2 pinBouton Entrée – 0 si bouton appuyé (Version 11 seulement)
Digital pin 13 19 (SCK) PB5 pinLed Sortie – Led rouge
Analog input 0 23 (ADC0) PC0 pinTemp Entrée analogique (info du capteur de température)

Téléchargement

Les fichiers (sketches) des différentes versions ont été compilés avec différentes versions du logiciel Arduino allant de la version 017 pour les premiers essais jusqu'à la version 1.0 pour la version 11. Toutes ont ensuite été compilées avec la version Arduino 1.0 sans aucun problème.
Tous les fichiers ".ino" sont disponibles en téléchargement ici.

Améliorations possibles

Le capteur a placer dans le siège

Il est possible de tester d'autres matériaux que celui utilisé (epoxy cuivré de 0,8 mm). Il existe des tissus conducteurs pouvant être cousus et ainsi pouvant permettre l'intégration du capteur dans le siège.
Le cas du capteur de fermeture de la boucle est plus complexe mais pas irréaliste. Au moins un constructeur français dispose d'un système de detection d'ouverture de boucle. Il s'agit des établissements TeamTex (sièges Nania) . Je n'ai malheureusement pas pu examiner une telle boucle faute de réponse de M. Nania à mes mails. Une autre société française  a déposé un brevet pour le même objectif. Je sais que la boucle contient un contact correspondant à celui nécessaire sur le système YaZo. Il s'agit de la société AmpaFrance (marques Bebe confort, Dorel). Malheureusement ce système n'a pas été , à ma connaissance , commercialisé.
D'autres chercheurs (ou sociétés) ont travaillé sur le sujet et déposé des brevets allant dans ce sens.
La connexion du capteur au système peut être un inconvénient, qui, si les équipementiers voulaient l'examiner, pourrait probablement être résolu par couplage mécanique de la connexion au système de boucle ISOFIX dont sont équipées de nombreuses voitures actuelles.

L'électronique du système

Le but était de réaliser un système simple , efficace et de coût le plus réduit possible pour ne pas en freiner la diffusion, et eventuellement en permettre une installation en série par les constructeurs sur leurs véhicules.
Le micro-controlleur utilisé n'est bien évidemment pas une obligation. tout autre micro-controlleur possédant un nombre suffisant d'entrées/sorties, un capacité de programme suffisante peut être utilisé, au prix , bien évidemment de la ré-écriture complète du logiciel. Dans le cas de l'Atmega168 (ou 328 ) utilisé, le quartz à 16MHz et ses condensateurs associés de 22pf pourraient être omis, moyennant une reprogrammation des "fuses" definissant la configuration ainsi qu'une refonte du programme (temporisations , etc...) .
Il est possible d'utiliser un Atmega8 à condition de remplacer une ligne dans la section des déclarations comme suit :  remplacer "#define Ref 1.1" par "#define Ref 2.56"  pour tenir compte de la référence de tension interne qui est différente sur ce micro-controlleur.
L'affichage pourrait être remplacé par un afficheur moderne à cristaux liquides (par exemple), ce qui permettrait éventuellement l'affichage des paramètres du système (mode normal/dégradé, siège occupé, boucle ouverte, température, etc...)
Il faut malgré tout garder à l'esprit le fait que transfomer YaZo en "usine à gaz" ne serait pas forcément une bonne chose. Le but n'est pas de "pondre" un bijou de technologie, mais de créer un système destiné à éviter le pire à des enfants dans un véhicule, la technologie n'étant dans ce cas qu'un outil et non un but. De plus le coût est un élément à considérer.

Le logiciel du système YaZo

Le logiciel a été écrit en langage Arduino qui est directement dérivé du langage C. Je ne suis pas programmeur et les puristes risquent de "sauter au plafond" en voyant certains choix que j'ai pu faire. Mon objectif était de réaliser un logiciel facile à comprendre, donc à modifier éventuellement, c'est pourquoi j'ai ajouté de nombreux commentaires. J'ai publié les 10 versions finalisées ainsi que la version 11 pour permettre cette progression dans la compréhension.
Il est évident que d'autres choix auraient pu être faits, comme une gestion plus fine des temporisations par programmation directe des "timers" et/ou utilisation des interruptions.

Le capteur de température

Le LM35DZ utilisé a pour avantage son faible prix et sa facilité de mise en oeuvre. La valeur précise de la température n'est pas nécessaire, ce qui compte , c'est une bonne reproductibilité des valeurs mesurées. Il aurait été possible d'utiliser d'autres capteurs. 
Quelques mesures réalisées sur ma voiture personnelle (une vieille Mazda 323 GLX de 1986) m'a permis quelques constatations qui pourraient être prises en compte. En effet , l'élévation de température dans le véhicule est fonction de nombreux paramètres comme l'heure (soleil bas ou au zénith), la météo (ciel clair ou couvert) ainsi que la température exterieure. Il pourrait être interressant de tester  la vitesse d'évolution de la température dans le véhicule plutot que la valeur absolue de cette température.

Conclusion (provisoire ?)

De toutes mes recherches durant de (trop) longs mois , il ressort plusieurs constatations :
  • La température N'EST PAS le critère essentiel à prendre en compte: Le tout premier paramètre à vérifier est la présence ou l'absence d'un enfant dans un véhicule à l'arrêt.
  • Si l'on ne cherche pas à tout prix à créer un objet doté d'une technologie de trés haut niveau, on peut arriver  à réaliser un système simple, de faible coût et d'une bonne efficacité.
  • En partant du principe précédent, on permet son installation sur n'importe quel véhicule quel que soit sa marque, son modèle ou son age, ce qui en autorise une diffusion trés large.
  • Il est surprenant de constater que, à l'exception du capteur à placer dans le siège, tous les autres dispositifs, alimentation, capteurs, affichage ou signalisation, existent dans TOUS les véhicules. Même "l'intelligence" necessaire à l'acquisition et aux traitement des divers paramètres est présente dans les voitures modernes. En effet , on estime que dans nos voitures il y a environ 15 à 80 microprocesseurs. La société Peugeot mettait en avant, il y a quelques années, la puissance de calcul dans la 607, puissance de calcul qui était comparée à celle présente dans un avion de type Airbus.  Cela signifierait il que ce qui manque aux constructeurs n'est pas une affaire de moyens techniques, humains ou financiers et encore moins LA VOLONTÉ DE NE RIEN FAIRE ?
  • Au fil de mes recherches , j'ai constaté que dans différents pays, des particuliers, des écoles (comme en Belgique ) se penchent sur le problème, ce qui à priori semble démontrer le point précédent. Les constructeurs attendent ils qu'un tel système leur soit amené sur un plateau pour enfin bouger ?

Remerciements

Tout d'abord , je tiens à remercier tous ceux qui nous ont soutenu il y a maintenant 4 ans, que ce soient la personne qui a prévenu les secours, la jeune fille qui a proposé spontanement son aide, la gendarmerie de Pont de Cheruy (Isère), les sapeurs pompiers, le SAMU, et tous les particuliers qui ont manifesté leur soutien à ma fille, mon gendre et à toute ma famille.
Pour ce qui est du système YaZo, je remercie encore M. David Tardiveau qui m'a autorisé à utiliser ce nom.
Je remercie aussi tous ceux qui m'ont aiguillé vers le système Arduino . Il s'agit de l'entreprise interface-Z.
Tous les logiciels utilisés pour concevoir le système YaZo sont des logiciels sous licence libre. Il s'agit d'un PC sous Linux Ubuntu, du système Arduino, du système Kicad pour les schémas ainsi que tous les logiciels libres présents sur ma distribution Linux. Merci a leurs créateurs.
Enfin, je tiens à envoyer 1000 mercis à Yannis, Zoé, Noémie, Maxine, Harold et tous les autres petits anges trop tôt envolés pour tout le bonheur et l'amour qu'ils ont donné durant leur trop court passage sur cette terre.


Début : -1- 941 jours
Article précédent :-14- Le systeme YaZo- l'aspect logiciel-la version 11
Article suivant :-16- Le rôle de la technologie dans ces tragédies(1)
Statistiques

 



 Mode de diffusion et licence

Tous les documents (y compris cet article) sont diffusés sous licence libre Creative Commons sous les termes spécifiés au début de cet article
Cette licence donne le droit à tous de copier, diffuser, traduire, etc... ces documents sous réserve d'en diffuser les éventuelles modifications selon les dispositions de cette licence.
Toute autre utilisation de ces documents doit faire au préalable l'objet d'une demande d'autorisation.

Hors des termes de cette licence, je souhaite que toute utilisation commerciale de ces documents ou du dispositif créé à partir de ces documents soit assortie du versement d'une partie des bénéfices générés à une (des) association(s) d'aide à l'enfance en danger ou(et) de lutte contre la violence routière.






jeudi 5 juillet 2012

-14- Le systeme YaZo- l'aspect logiciel-la version11

Licence Creative Commons
Le Système YaZo de PapyDeYannis est mis à disposition selon les termes de la licence Creative Commons Paternité - Partage à l'Identique 3.0 non transposé.
Les autorisations au-delà du champ de cette licence peuvent être obtenues à PapyDeYannis@gmail.com


Début : -1- 941 jours
Article précédent :-13- Le système YaZo - l'aspect logiciel - Versions 5 à 8, 9 et 10
Article suivant :15- Le systeme YaZo-Complements,remarques,ameliorations
Statistiques

Retour sur le mode dégradé - La version 11 


AVERTISSEMENT:
Cette version est experimentale et n'a pas été testée entièrement. certaines fonctionalités ont seulement quelques jours.

Retour sur le mode "degradé"

Le mode "dégradé" sert à permettre de laisser un enfant dans son siège, le véhicule étant en stationnement, EN PRÉSENCE D'UN ADULTE.
Cependant , ce mode est loin d'être parfait. Il souffre de 2 problèmes potentiels liés à la technologie utilisée sur les véhicules récents.



  • Le cas des véhicules sans clé de contact.

    Ces véhicules ne possèdent qu'un bouton poussoir de type ON/OFF pour démarrer le véhicule , la clé de contact étant remplacée par un système à carte (vraisemblablement de type RFID) qui doit être en possession de la personne désirant démarrer.
    Cela peut être aussi une carte à introduire dans un logement sur la planche de bord (utilisé entre autres par la société RENAULT).
    Ces systèmes ne permettent pas d'activer le mode "dégradé" simplement comme cela est possible sur un véhicule muni de clé de contact classique.
    Cela peut être résolu simplement en ajoutant un bouton poussoir qu'il suffit de maintenir enfoncé le temps nécessaire et au moment voulu pour actionner ce mode , comme on peut le faire en remettant le contact pendant ce temps voulu et cette durée nécessaire.
    C'est le poussoir qui apparait sur le schéma de la partie affichage du système YaZo. Il est relié , via la pin 11 du connecteur K3, et signalé par la mention voir version 11,  à la pin 16 du micro-controlleur (voir schéma électronique).
     
  • Impossibilité de savoir simplement si un adulte est resté avec l'enfant dans le véhicule.

    Il est quasiment impossible avec des moyens simples de déterminer combien de personnes se trouvent dans le véhicule ni de savoir combien parmi ces personnes sont des adultes.
    Il n'existe qu'un seul cas où l'on est certain de la présence d'un adulte. C'est le moment où le véhicule est arrété. Dans ce cas, on est sur qu'il y a un adulte qui est le conducteur, et cela tant qu'il n'a pas ouvert sa portière.
    Il suffit donc de surveiller, à partir de l'arrêt de la voiture (juste aprés la mise en action du bip sonore) si la porte conducteur est toujours fermée.
    À ce moment se pose le problème de savoir si le mode "degradé" a été actionné ou pas .
    Si le mode "dégradé" a été activé, rien ne se passe .
    Si ce n'est pas le cas, une série de bips retentit sur le buzzer. A la fermeture de la porte, l'avertisseur sonore est active pour prévenir le conducteur au cas où il n'aurait pas entendu le bip. À ce moment on repasse en surveillance en mode "normal".
    Tant que la porte n'a pas été ouverte, puis tant qu'elle est ouverte, si le mode dégradé a été activé, la surveillance s'effectue par mesure de la température dans l'habitacle avec avertissement sonore sur le buzzer et passage en mode "normal" au bout de 3 bips (9 minutes environ).

    Le problème vient là aussi de la technologie propre au véhicule.
    Sur les véhicules déja anciens, les contacteurs de portières s'ils sont accessibles, sont souvent connectés en parallèle, ce qui ne permet pas de savoir quelle porte à été ouverte.                                                                            Sur les véhicules récents, c'est le contraire, ces contacteurs étant inaccessibles et agissant indépendament les uns des autres.La solution serait d'installer sur la portière coté conducteur, un contacteur du type de ceux utilisés sur certaines alarmes anti-intrusion, contacteur  qui serait fermé lorsque la portière est ouverte.
    C'est en partant de ce choix (trés imparfait) que la version 11 a été imaginée.

La version 11

Le cas des véhicules sans cle de contact pose problème pour le passage en mode dégradé. La solution (imparfaite) vient de l'ajout d'un bouton poussoir accessible du conducteur et qui doit être maintenu enfoncé entre 1 et 2 secondes pendant une fenêtre de temps maximum de 5 secondes. 
Aprés ajout de la ligne   "#define pinBouton 10 "  dans la section des déclarations , on ajoute les 2 lignes suivantes dans le setup : " pinMode(pinBouton,INPUT) ;   " pour déclarer la pin correspondante en entrée  et "digitalWrite(pinBouton,HIGH) ; " pour activer la résistance de pull-up interne au micro-controlleur.
 Dans la boucle "loop()" il suffit de remplacer la ligne " if (digitalRead(pinContact) == LOW) "  par la ligne suivante :
" if ((digitalRead(pinContact) == LOW) || (digitalRead(pinBouton) == LOW))" . 
le passage en mode dégradé pouvant se faire en utilisant la cle de contact (si le véhicule en dispose) ou le bouton-poussoir.

Le cas de la détection "porte ouverte"/"porte fermée" , sans préjuger du moyen de détection utilisé, se fait par le test de l'état de la pin "pinPorte" aprés déclaration dans la section adéquate et activation en entrée de cette pin et activation de la résistance de "pull-up" correspondante dans la section "setup() " du programme. Si cette pin est à 0V , alors la porte est ouverte et si elle est à +5V elle est fermée.
Tant que cette porte est fermée, on incrémente un compteur toutes les 2 secondes , et ce, jusqu'à la valeur 90 , ce qui correspond à une durée de 3 minutes. Au bout de ces 3 minutes, on mesure la température dans l'habitacle . Si la température atteint ou dépasse le seuil fixé ici à 32°C, on envoie la tonalité "Pinpon" sur le buzzer interne. Au bout de 3 mesures de température superieure à 32°C, on considère qu 'il y a un problème et on sort de cette boucle en repassant en mode "normal".
Parallélement, toutes les 2 secondes, on verifie que l'enfant est toujours dans son siège ou que le véhicule est toujours en stationnement. Si aucun de ces 2 cas n'est vrai, on sort et le programme passe alors dans la boucle correspondant à ce cas de figure (c'est le role de l'horrible "goto" précédé d'une ré-initialisation de quelques variables).
Si le mode "dégradé" n'a pas été activé, on entre immediatement dans le cycle normal.
Si la porte coté conducteur vient à être ouverte, le mode "dégradé" étant activé, rien ne se passe.
Si à ce moment on est en mode "normal", le buzzer émet une série de "bips" pour prévenir le conducteur.
Lorsque celui-ci referme la porte, un bref coup de "klaxon" est émis à titre de dernier avertissement et on passe immédiatement en mode "normal".

Cette version fonctionnerait parfaitement dans un seul cas : Il faut que la porte soit équipée d'un contact et que ce contact soit effectivement connecté au système YaZo. Si ce n'est pas le cas, on reste dans la section testant si la porte est ouverte ou fermée, quelque soit l'état de la porte, ce qui peut être tres dangereux , car à ce moment les seuls moyens d'en sortir sont : Le retrait de l'enfant de son siège, le démarrage du véhicule, ou plus grave une élévation anormale de la température dans l'habitacle, et ce par 3 fois avant passage en mode "normal" avec à ce moment possibilité d'alarme.
Heureusement cela peut être évité , au prix de l'utlisation d'une pin supplementaire sur le micro-controlleur, nommée ici "pinValPorte". Cette pin , configurée en entrée indique si elle est portée à 0V que le contact de porte est effectivement installé et surveillé. Si cette pin est portée au +5V (par l'intermédiaire de la resistance de "pull-up" interne) alors le contact de porte n'existe pas et on saute dans le programme toute la partie correspondante. On se trouve alors dans les conditions de la version 12.

Un autre problème peut se poser si l'on place l'enfant dans son siège (donc portiere coté conducteur fermée) et que, pour une raison quelconque on le laisse ainsi sans monter dans le véhicule. Dans ce cas , la porte conducteur étant fermée, on se trouve dans un cas où le risque est important pour l'enfant, car la seule surveillance est celle de la température dans le véhicule.
Il faut donc, si le véhicule est arrété que l'on passe immédiatement en mode "normal" afin de bénéficier d'une surveillance complète avec avertissements sur le "klaxon".
Cela peut être réalisé en utilisant une variable booléene "Arret" positionnée à la valeur "true" durant l'exécution de la section "setup()". Un test de cette variable permet alors de sauter toute la partie concernant le test de l'état de la portière coté conducteur.
À ce moment, la variable "Voiture" qui était utilisée lorsque l'enfant est placé dans son siège OU lorsque le vehicule vient d'être arrété, ne serait utilisée que dans ce dernier cas.


Début : -1- 941 jours
Article précédent :-13- Le système YaZo - l'aspect logiciel - Versions 5 à 8, 9 et 10
Article suivant :15- Le systeme YaZo-Complements,remarques,ameliorations
Statistiques


 Mode de diffusion et licence

Tous les documents (y compris cet article) sont diffusés sous licence libre Creative Commons sous les termes spécifiés au début de cet article
Cette licence donne le droit à tous de copier, diffuser, traduire, etc... ces documents sous réserve d'en diffuser les éventuelles modifications selon les dispositions de cette licence.
Toute autre utilisation de ces documents doit faire au préalable l'objet d'une demande d'autorisation.

Hors des termes de cette licence, je souhaite que toute utilisation commerciale de ces documents ou du dispositif créé à partir de ces documents soit assortie du versement d'une partie des bénéfices générés à une (des) association(s) d'aide à l'enfance en danger ou(et) de lutte contre la violence routière.