mercredi 20 juin 2012

-13- Le système YaZo - l'aspect logiciel - Versions 5 à 8, 9 et 10

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 :-12- Le système YaZo : L'aspect logiciel- versions 1 à 4
 Article suivant :-14- Le systeme YaZo- l'aspect logiciel-la version11
Statistiques

L'aspect logiciel, versions 05 à 08, versions 09 et 10


Les versions logicielles 1 à 4 sont fonctionnelles, mais un problème génant subsiste : Il est fréquent de voir un véhicule en stationnement avec à son bord un enfant dans son siège et un adulte dans la voiture. Dans ce cas l'alarme doit rester muette, l'enfant n'étant pas seul. Il faut donc trouver un moyen permettant à la fois d'assurer une surveillance sans déclencher l'alarme extérieure. C'est le but des versions 5 à 8. Ces 4 versions sont les homologues des versions 1 à 4 et seront donc étudiées ensemble.

Les versions 05 à 08

Le listing de la version 5 est visible ici.
Le listing de la version 6 est visible ici.
Le listing de la version 7 est visible ici.
Le listing de la version 8 est visible ici.


Pour permettre une surveillance continue sans déclenchement intempestif de l'alarme exterieure, il est nécessaire d'indiquer au système, d'une manière simple, la présence d'un adulte dans le véhicule. À ma connaissance il est impossible de déterminer sans ambiguité la présence d'un être vivant en plus de l'enfant dans le véhicule. Un dispositif trés simple, mais nécessitant l'intervention du conducteur est donc nécessaire. Nous l'appllerons "mode degrade" .
Cette intervention du conducteur doit être :
  • Simple
  • Être possible uniquement à un moment bien déterminé pour éviter toute action involontaire.
  • Être possible, pour la même raison, pendant un temps court.
De plus, la surveillance doit être maintenue, et l'alarme rendue à son usage initial si certaines conditions ne sont pas remplies.
Le choix retenu consiste , juste aprés avoir stoppé le véhicule, à remettre le contact pendant une durée comprise entre 1 et 2 secondes, cette action n'étant possible que durant les 5 secondes suivant le bip émis sur le buzzer juste aprés l'arrêt de la voiture.
Si "le mode dégradé"  est actionné, l'alarme extèrieure est rendue muette.
À partir de ce moment, la surveillance est efectuée comme auparavant si le siège est occupé, mais la température est surveillée par une mesure toutes les 3 minutes . Tant que cette mesure donne une valeur inférieure à une température maximum (fixée ici à 32°C) rien ne se passe. Si la température dépasse ce seuil, un bip sonore est émis sur le buzzer à l'attention de l'adulte présent. Si le bip a été émis 3 fois, le système repasse en mode normal et l'alarme extérieure est ré-activée, ceci afin de s'affranchir d'un comportement irresponsable du conducteur qui aurait utilisé ce mode pour rendre muet le système en laissant seul l'enfant dans son siège.

Pour ce faire on a créé une variable booléene degrade qui a la valeur false en mode normal et la valeur true si ce mode a été activé.
Pour différencier ce mode du mode normal, on a rajouté la fonction BlinkLed() qui permet de faire clignoter la Led rouge au rythme de 1200ms ON et 800ms OFF en mode normal, alors que la Led rouge est allumée fixement en mode dégradé.(Sur le listing, je viens de constater que dans cette fonction la période ON est de 1800ms , ce qui est une erreur , cela ne changeant rien au principe).
En cas de dépassement par 3 fois de la température maximum, la variable degrade reprend sa valeur d'origine, à savoir false.

La version 09

Le listing de la version 09 est visible ici.

Cette version est une amélioration du fonctionnement , mais ne change rien au principe étudié dans les versions précédentes.
Dans les versions 1 à 8 , les temporisations sont de l'ordre de quelques secondes(2s)  à quelques minutes.
Ce n'est en rien génantdans la mesure où tous les évenements surveillés sont longs. Malgré tout, l'instruction Arduino delay() bloque toute action du logiciel pendant son exécution.
Toutes les temporisations ont donc été  découpées en temporisations élémentaires de 2 secondes exécutées dans une boucle le nombre de fois nécessaire pour atteindre la valeur voulue. Ceci permet , au sein de cette boucle de tester les évenements pouvant se produire (test de présence, de boucle, etc...) et si un tel évenement nécessite une action on sort de cette boucle, aprés avoir remis à leur valeur normale certaines variables. C'est la raison d'être de l'instruction honnie par tout programmeur qui se respecte , à savoir l'instruction goto .
Il est probablement possible de s'en passer, mais le système étant composé de boucles imbriquées, cela m'a paru le moyen le plus simple à utiliser sans pour cela changer complètement la structure du logiciel.

La version 10

Le listing de la version 10 est visible ici.

Cette version est une version "plus confortable" pour l'enfant. En effet , les bips emis sur le buzzer peuvent être trop agressifs pour un enfant en bas age, voire peuvent l'effrayer.
Tous ces bips ont été remplacés par des tonalités musicales , à savoir :
  • L'accord Do-Mi-Sol-Do à l'installation de l'enfant dans son siège et à l'arrét de véhicule.
  • La séquence Ta-Ti-Ta rappelant une sirène d'ambulance en cas de débouclage de la ceinture, la voiture étant en mouvement.
  • La séquence PinPon, rappelant la sirène des pompiers partant en intervention sur un incendie, dans le cas où la température devient trop élevée dans le véhicule.
On a donc défini la hauteur et la durée de chaque note utilisée , dans 6 tableaux (3 pour les hauteurs et 3 pour les durées) .
3 fonctions DoMiSolDo() , TaTiTa() et PinPon() sont chargées de générer à l'aide de l'instruction tone() les 3 séquences musicales .

Cette version est la dernière version complètement testée à ce jour.

Début : -1- 941 jours
Article précédent :-12- Le système YaZo : L'aspect logiciel- versions 1 à 4
 Article suivant :-14- Le systeme YaZo- l'aspect logiciel-la version11
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.



mardi 12 juin 2012

-12- Le systeme YaZo-L'aspect logiciel-Versions 1 a 4

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 :-11- Le système YaZo : Remarques importantes
 Article suivant :-13- L'aspect logiciel-Versions 5 a 8, 9 et 10
Statistiques

 

L'aspect Logiciel du système YaZo

Avertissement

Il faut garder à l'esprit le fait que je ne suis pas programmeur. De ce fait certaines tournures dans les différents listings présentés ici risquent de choquer les gens du métier. Mon but n'est que de préciser ma démarche.
Toutes les versions présentées s'articulent sur la base de la version 01 et pour la plupart, ne sont que des évolutions de cette version, ceci afin d'en préciser plus aisément le fonctionnement. Il est évident qu'un programmeur expérimenté aurait probablement fait certains choix plutôt que ceux que j'ai faits moi-même.

Fonctionnement général

Au départ,  le(s) siège(s) est(sont) inoccupé(s).
Si l'on installe un enfant dans son siège, le capteur va être passant et via l'électronique de mise en forme, provoquer le collage d'un relais qui va à son tour permettre l'alimentation du microcontrolleur via un régulateur 5V. Le microcontrolleur va alors commander , via un transistor, l'auto alimentation du système.
L'ensemble du logiciel est écrit en langage Arduino, trés proche (en fait dérivé) du langage C.
Comme tout programme Arduino (aussi appelé sketch) il est constitué de 3 blocs : 
  • Un bloc de definitions des variables 
  • Une boucle setup() exécutée lors du démarrage du programme
  • Une boucle loop() qui constitue l'essentiel du programme
D'autres blocs peuvent être ajoutés , en général pour définir des routines appelées par le programme principal.

Chaque version est composée, dans sa boucle loop() de 3 blocs principaux:
  • Un bloc while ((digitalRead(pinContact) == HIGH) && (digitalRead(pinSiege) == HIGH))
             Dans ce bloc, on traite le cas où la voiture vient d'être arrétée , le siège enfant étant inoccupé. Ce bloc sert uniquement, aprés un certain délai à mettre hors tension le système si le siège est toujours inoccupé.
  • Un bloc while((digitalRead(pinContact) == HIGH) && (digitalRead(pinSiege) == LOW))
             Dans ce bloc (le plus important), on traite le cas où la voiture est arrétée, le siège enfant étant occupé. Ce bloc est essentiellement constitué d'une boucle, de tests et de temporisations. Les différents dispositifs d'alerte intérieure (Led, buzzer) et extèrieure (klaxon) sont commandés en fonction des tests pour prévenir le conducteur et éventuellement le voisinage de la présence d'un enfant seul dans la voiture.
  • Un bloc  while (digitalRead(pinContact) == LOW)
             Dans ce cas on traite de tous les cas envisagés dans la version étudiée lorsque la voiture est en marche.



Le logiciel existe en 10 versions, toutes fonctionnelles, chacune étant une évolution de la (ou des ) précédente.

La version 01 

Le listing est visible ici.

Les déclarations

On définit ici les affectations de différentes entrées sorties du microcontrolleur:

#define pinSiege 2                              /* detection presence dans le siege                     */
#define pinPower 7                              /* maintien alim                                        */
#define pinContact 4                            /* contact mis                                          */
#define pinBuzzer 9                             /* Sortie buzzer interne                                */
#define pinKlaxon 8                             /* Sortie commande Klaxon                               */

#define pinLed 13                                /* Led allumée si le sieg est occupe ou                */
                                                 /* si le siege est occupe  et en situation de risque   */    

ainsi que la variable booléene Voiture qui indique que l'enfant vient d'être installé dans son siège ou que le véhicule vient d'être arrété.

Le bloc setup()

Dans ce bloc , on définit  le type d'entrée/sortie utilisée. On s'en sert aussi pour activer la résistance de pull-up interne lorsque la pin est utilisée en entrée. Ceci explique pourquoi les optocoupleurs vus dans le schéma de principe ne possèdent pas de résistance de charge sur le collecteur de leur transistor interne.

On commande aussi l'auto-maintien de l'alimentation dans ce bloc :

digitalWrite(pinPower,HIGH) ;                        /* Le siege est occupé - On alimente l'alarme  */

et on positionne la Variable Voiture à la valeur true .

Le bloc loop()

 Le premier cas traité est le plus simple, à savoir , c est le cas où le siège est vide et le véhicule en stationnement.
Une simple temporisation de 3 minutes (pour être sur que le siège est bien inoccupé) fait tout le travail.À la fin de cette temporisation, on coupe l'auto-maintien de l'alimentation, et le système est arrété.

Le dernier cas traité est celui où la voiture est en marche. Ce cas est trés simple lui aussi. si le siège est occupé, on alimente la Led rouge, et si ce n'est pas le cas elle est éteinte, puis on positionne la variable Voiture à la valeur true.

Le deuxième cas est le coeur du système. On traite du cas où le véhicule est en stationnement ET le siège est occupé.

À l'entré dans cette boucle on allume la Led rouge car le siège est occupé. D'autre part la variable Voiture est positionnée à la valeur true, on envoie alors un bip de 2 secondes sur le buzzer interne à l'attention du conducteur, puis on démarre une temporisation de 3 minutes afin de permettre à l'adulte de prendre un éventuel ticket de stationnement ou de récupérer un caddie au supermarché. À la fin de cette temporisation on met la variable Voiture à la valeur false et si le siège est toujours occupé on actionne l'alarme exterieure pendant 2 secondes, et on redémarre une temporisation de 1 minute.
À la fin de cette temporisation on entre dans une boucle qui ne peut prendre fin que si l'on enlève l'enfant de son siège ou si l'on redémarre la voiture.
Cette boucle commence par une temporisation de 1 minute à l'issue de laquelle on commande l'alarme exterieure au rythme du signal SOS en morse (c'est la raison d'être des 3 fonctions dot() , dash() et morse() ).

La version 02

Le listing est visible ici 

 Cette version est identique à la version 01 sauf en ce qui concerne le cas où le véhicule est en marche.
On commence par définir la pin utilisée pour la boucle dans la section des déclarations. Puis dans le bloc setup() on définit cette pin en entrée et on active la résistance de pull-up interne.
On commence par verifier si le siège est occupé. Si c'est le cas, on allume la Led rouge et on teste l'état de la boucle si celle-ci le permet. Si la boucle est ouverte, on envoie une série de 3 bips d'une durée de 200mS espacés de 200mS et on recommence toutes les 800mS tant que la boucle est déverrouillée.
Si la boucle est verrouillée on se contente d'allumer la Led rouge pour signaler la présence de l'enfant. 
Si le siège est inoccupé , la Led rouge reste éteinte. Enfin , on positionne la variable Voiture à true

La version 03 

Le listing est visible ici 
 

Comme la version 02 cette version est identique à la version 01 sauf dans le cas où le véhicule est en marche et si le siège enfant est occupé. Dans ce cas on a ajouté la possibilité de surveiller la température dans le véhicule et de déclencher une alarme si cette température dépasse un seuil arbitraire fixé ici à 32°C . Il faut savoir qu'une petite fille de 2 ans a gravement souffert lors d'un départ en vacances dans le midi de la France alors que la voiture où elle était installée a été bloquée dans un important ralentissement. Heureusement ses parents ont constaté son état qui était une hyperthermie avancée et l'intervention d'un medecin , pris lui aussi dans ce ralentissement a permis d'appeler le SAMU et elle a pu être évacuée par hélicoptère vers l'hopital le plus proche.

Apres definitions dans les blocs de déclarations et dans le bloc setup() , on trouve une fonction qui sera appelée pour la mesure de température : la fonction MesureTemp(). Dans cette fonction constituée d'une boucle for (), on mesure 10 fois de suites à intervalles de 200 mS la température dans la voiture, puis on calcule la moyenne de ces 10 mesures. Cette valeur est alors retournée au programme appelant.
Ce programme se trouve dans le bloc où le véhicule est en marche. On effectue la mesure toutes les 3 minutes. Si la température est supérieure à la température maximum fixée à 32°C, on envoie sur le buzzer un bip égal à 10 fois la température mesurée , soit au moins égal en durée à 320mS. on allume aussi la Led rouge pendant 1200mS puis on l'éteint pendant 800mS et ce , tant que le problème n'est pas résolu (ventilation, climatisation du véhicule, etc....)

Si la température est inferieure à la valeur maximum, la LED rouge est allumée fixement si le siège est occupé et eteinte si le siège est inoccupé.
La variable Voiture , comme dans les versions précédentes est positionnée à la valeur true.

La version 04

Le listing est visible ici

Cette version regroupe les fonctionalités des 3 versions précédentes. Le bloc correspondant au cas où le véhicule est en marche a été remanié pour imbriquer les fonctionalités des versions 02 et 03.
La variable de boucle j est utilisée pour permettre la mesure de température toutes les 3 minutes (j=90) . 
Si j<90 on surveille la bonne fermeture de la boucle du siège. 
Si une situation de danger est présente (temperature trop élevée ou boucle déverrouillée) , outre les alarmes correspondantes sur le buzzer, la Led rouge clignote au rythme de 1200 mS ON /  800 mS OFF .
Si le siège est occupé et qu'aucune situation de risque immédiat n'est présente, la Led rouge est allumée , et elle est éteinte si le siège est inoccuppé.
On repositionne comme précédemment la variable Voiture à la valeur true



Le prochain article traitera des versions 5 à 8 ainsi que des versions 9 et 10

Début : -1- 941 jours
Article précédent :-11- Le système YaZo : Remarques importantes
Article suivant :-13- L'aspect logiciel-Versions 5 a 8, 9 et 10
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.

   


mardi 5 juin 2012

-11- Le système YaZo - Remarques importantes

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 :-10- Le système YaZo : Réalisation-Cablage
 Article suivant :-12- Le système YaZo-L'aspect logiciel-Versions 1 a 4
Statistiques


Avant de parler de l'aspect logiciel du système, je publie aujourd'hui quelques remarques transmises par un lecteur (pseudo fdfnews) sur le forum Arduino. Merci à lui, car il permet de préciser certains points que j'avais passés sous silence.

" L'électronique automobile est assez délicate. L'environnement est dur:
   - entre l'hiver et l'été les écarts de température sont importants. Sous un tableau de bord on peut facilement passer de -20°C l'hiver à +70°C l'été (je parle bien de la France pas de la Sibérie ou l'Afrique)
   - l'alimentation fluctue (encore que maintenant sur les voitures la régulation soit de meilleur qualité). Mais les chutes de tension lors du démarrage par exemple peuvent être la cause de corruption de la mémoire.
   - les vibrations sont importantes  (et les chocs aussi)
   - il peut y avoir de l'humidité dans l'habitacle

Il faut donc prendre des précautions dans la réalisation.
Les écarts de température imposent par exemple le choix de TOUS les composants en gamme industrielle et non pas en gamme commerciale.
Les écarts de température peuvent entraîner une dérive de la référence du convertisseur analogique numérique et donc de la mesure de la température.
Le circuit imprimé doit être verni sinon il va s'oxyder dans le temps.
En ce qui concerne le capteur pour la même raison que ci-dessus il ne faut pas laisser le cuivre nu. Mais on ne peut évidemment pas le vernir. il faudrait l'étamer pour le protéger de la corrosion.
Concernant la réalisation du capteur, je déconseille l'utilisation de colle cyanoacrilate. Ces colles en séchant créent un dépôt à proximité du collage qui pourrait être source de mauvais contact. Le plus simple serait de riveter les plaques en prenant l'intercalaire en sandwich (il faut évidement prévoir une épargne dans le cuivre au passage des rivets)
Les connecteurs doivent être robustes et posséder un verrouillage (à cause des vibrations). Pas de connecteurs soudés, les fils doivent être sertis (à cause des vibrations).

Un système de sécurité n'est utile que s'il est exceptionnellement fiable. Sinon il donne une fausse impression de sécurité ce qui est encore pire. Toute les pièces qui le compose doivent être de très bonne qualité et tenir dans le temps.
Il faut absolument prévoir un moyen quelconque permettant de tester le système périodiquement, la chaîne complète du capteur jusqu'à l'organe d'alarme.

Il faut absolument insister sur tous ces points sur ton site, il ne faudrait pas que les personnes qui vont se monter leur système fassent des choix qu'ils puissent regretter plus tard. Il ne faut pas donner l'impression que la réalisation est trop simple sinon elle risque d'être bâclée.

Et il ne faut pas perdre de vue les problèmes de responsabilité:
   - la conception du matériel comme du logiciel doit être sûre, irréprochable (crash proof) c'est ta responsabilité en tant que créateur du produit
   - par contre les personnes qui se lancent dans la réalisation sont responsables de la fabrication
"

Il est évident que le système , tel que je le décris est un prototype et toutes les contributions allant dans le sens d'un plus grande fiabilité et/ou sécurité sont les bienvenues.

Début : -1- 941 jours
Article précédent :-10- Le système YaZo : Réalisation-Cablage
 Article suivant :-12- Le système YaZo-L'aspect logiciel-Versions 1 a 4
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.



vendredi 1 juin 2012

-10- Le système YaZo : Réalisation, cablage

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 :-9- Le système YaZo : Le détecteur de présence
 Article suivant : -11- Le système YaZo : Remarques importantes  
Statistiques


Réalisation du système YaZo


Réalisation de la carte électronique


Tous les composants du système, à l'exception du cablage, de l affichage, du capteur de présence et éventuellement de la sonde de température, tiennent sans problème sur une carte d'environ 10x10cm. Ces dimensions pourraient sans problème être réduites d'environ 1/3. Le prototype a été réalisé sous forme d'un circuit imprimé simple face, moyennant 4 straps en fil de cablage coté cuivre.
Je ne diffuserai pas le tracé de ce circuit imprimé car il a été à plusieurs reprises "charcuté" au cours de la mise au point. De plus, les relais utilisés dans le prototype peuvent se présenter sous différentes formes, ce qui ne permet pas de réaliser un circuit imprimé universel.
Sur ce schéma d'implantation, on a une idée de la disposition des différents composants.
Cette carte pourra être installée dans un coffret de dimensions raisonnables similaire en taille a un coffret de poste auto-radio. En face avant les diodes LED et le buzzer pourrant aisément prendre place tandis que les liaisons provenant des connecteurs K1,K2 et K3 pourront être ramenées vers des connecteurs montés en face arrière.
Une autre solution serait de ramener tous les connecteurs sous forme de cables terminés par des connecteurs classiques : Sur le prototype, j'ai utilisé cette methode. Les fils reliés aux installations de la voiture (+12V permanent, masse, +12V apres contact ainsi que les 2 fils du contact de commande d'alarme exterieure) pourront être équipés de cosses du type de celles utilisées en automobile, les informations venant du capteur de siege transitant via un "jack" audio stéréo ( la pointe transportant l'information d'assise, la bague interédiaire transportant l'information de boucle et le corps étant relié à la masse)et le capteur de température est connecté via un connecteur DIN 5 broches. La photo suivante montre le prootype ainsi équipé.
Sur cette photo on voit que le connecteur K3 est constitué d'un support DIL 14 broches. La partie de gauche sert à connecter le panneau d'affichage et la partie de droite sert au raccordement exterieur du capteur de température.
Les fils du connecteur K1 (vers les equipements de la voiture) sont directement soudés sur la carte. Les 2 fils de commande de l'alarme exterieure ne sont pas installés (pour les essais , le "bagottement" du relais était suffisant pour en constater le bon fonctionnement). La pin 1 sera reliée à la masse, la pin 5 sera reliée au +12V permanent, donc non commuté (+12V de la batterie) . La pin 4 devra être reliée à un signal de +12V lorsque la voiture est en marche et 0V lorsqu'elle est arrétée. Sur la plupart des véhicules ce signal peut être le +12V Aprés Contact (+12VAPC). Les liaisons +12V et +12VAPC pourront se faire via des fusibles d'environ 1A . Les pins 2 et 3 servant à commander une alarme exterieure seront reliés en parallele sur le contact de commande de l'avertisseur sonore du véhicule (au niveau du "comodo" par exemple. ATTENTION : Si votre véhicule est équipé du système de super-condamnation des ouvrants, il sera impératif d'utiliser une alarme exterieure autre, le klaxon étant coupé lorsque ce dispositif est actif.  Les signaux arrivant sur le connecteur K1 doivent donc etre disponibles en toutes circonstances .
Sur la gauche de la carte, on peut voir 4 fils munis de picots enfichables. Ils sont simplement connectés sur les pins Tx,Rx,Reset et GND du microcontroller et permettent de connecter la carte a une carte Arduino DEMUNIE de son Atmega et fonctionnant donc en convertisseur USB<>série, lors de la mise au point, permettant le "download du logiciel dans l'Atmega sans avoir à manipuler celui-ci.
Le petit connecteur de couleur marron à gauche de l'Atmega a été ajouté au court des essais. Son utilité sera expliquée lors de la description de la version 11 du logiciel.

Réalisation du capteur à placer dans le siège


Comme montré sur le croquis , la réalisation est trés simple: Elle se résume à :
  • Découper 2 plaques d'époxy cuivré de 8/10eme de mm d'épaisseur, d'une longueur d'environ 10 com pour une largeur d'environ 8cm.
  • Découper 2 calles isolantes d'environ 1mm d'épaisseur et 8 cm de longueur pour 1cm de largeur.
  • Assembler le tout à l'aide de colle forte (genre cyano-acrilate) , les faces cuivrées étant en regard l'une de l'autre.
  • Cabler la diode, le connecteur vers le contact de boucle, et environ 60cm de cable coaxial à 2 conducteurs, terminé par une fiche "jack" audio stéréo mâle de 3,5mm.
La photo montre un capteur terminé

On peut connecter plusieurs capteurs au système YaZo en utilisant un cable comme celui-ci . Il devra avoir une longueur suffisante pour arriver à proximité des sièges à surveiller sans risque de déconnexion intempestive due à une tension excessive des cables en place.

Réalisation du capteur de température


Le capteur de température est trés simple comme le montre le croquis . Il faut simplement veiller à connecter le LM35DZ dans le bon sens sous peine de le détruire et utiliser sans modération la gaine thermo-retractable partout où cela est necessaire. La photo montre un capteur terminé .La résistance de 2,2Kohms est cablée directement au niveau du LM35DZ.
ATTENTION. Le LM35DZ ne peut pas piloter de charges trop fortement capacitives. C'est une des raisons d'être de la résistance de 2,2K. Il ne FAUT PAS utiliser de cable coaxial pour le connecter au système sous peine d'obtenir des informations de température erratiques. Sur le prototype, j'ai utilisé du cable destiné à la réalisation de rallonge téléphonique. Ce cable est plat et comporte 4 conducteurs dont seulement 3 sont utilisés ici.
Le capteur de température peut aussi être monté sur le panneau display. Dans ce cas , le connecteur male servant à la liaison avec la carte électronique pourra avantageusement être du genre de ceux-ci.

Les tests

Avant toute installation, VÉRIFIEZ, RE-VÉRIFIEZ, RE-RE-VÉRIFIEZ votre travail. La chasse aux courts circuits doit être ouverte .
Il est HORS DE QUESTION DE METTRE EN DANGER UN ENFANT À CAUSE D'UN CIRCUIT MAL RÉALISÉ OU CABLÉ EN DÉPIT DU BON SENS.

Les tests visuels et à l'ohmmètre doivent être la règle avant toute mise sous tension.
Ensuite, lorsque la carte est complètement équipée, ne pas installer l'ATmega dans son support.
Alimenter le montage à partir d'une alimentation 12V . Rien ne doit se passer. Les Leds doivent rester éteintes et les relais ne doivent pas coller.
Connectez une LED en serie avec une resistance de l'ordre de 1Kohm entre les broches 4 et 7 du support de l'Atmega (cathode de la LED en 4 et extremité de la resistance en 7). Connectez la broche 3 du connecteur K3 à la masse. le relais Rel1 doit coller et la LED de test doit s'allumer , de même que la LED verte sur le panneau avant.
On doit mesurer sur la pin7 du connecteur de l'atmega une tension de +5V.
Si cette étape est concluante, tout en maintenant la pin 3 du connecteur K2 à la masse, connecter la pin 13 de l'Atmega au +5V (pin 7 ou pin 20 de l'Atmega). Rien ne doit se produire. Deconnecter la pin 3 du connecteur K2. Rien ne doit changer. Deconnecter alors deconnecter la pin 13 de l'Atmega du +5V . Le relais Rel1 doit décoller , le +5V repasser à 0V , la LED de test s'eteindre de même que la LED verte.

Si cette étape est concluante, charger la pin 5 de l'Atmega avec la LED de test (en serie avec sa résistance de 1Kohm) qui était précedemment connectée sur la pin 4. Porter la pin 2 du connecteur K2 à la masse. La led de test ne doit pas s'allumer. Porter alors la pin 3 du connecteur K2 à la masse en maintenant la pin 2 de ce connecteur à la masse. Comme précédemment, le relais Rel1 doit coller, la LED verte s'allumer et la LED de test doit s'illuminer.

A ce moment, porter la pin 4 du connecteur K1 au +12V, la led de test étant maintenant connectée à la pin 6 de l'Atmega. Elle doit s'illuminer tant que la pin 4 du connecteur K1 est reliée au +12V, la pin 3 du connecteur K2 étant à la masse.


Si tous ces essais sont concluants, deconnectez la LED de test , coupez le +12V . on doit revenir à l'état qui était celui au début des tests (LED's éteintes, relais décollés). À ce moment vous pouvez implanter l'Atmega sur son support (attention à son orientation ! )

La liste des composants 

Le somposants de la carte

 C1         22pF        
 C2         22pF        
 C3         47µF      
 C4         0.1µF     
 C5         0.1µF     
 D1         1N4007     
 D2         1N4007     
 IC1        ATMEGA168-PU
 K1         CONN_5     
 K2         CONN_3     
 K3         CONN_14DIP 
 Q1         2N2907     
 Q2         2N2907     
 Q3         2N1711     
 Q4         2N1711     
 Q5         2N1711     
 R1         1K         
 R2         2.2K       
 R3         1K         
 R4         2.2K       
 R5         10K        
 R6         10K        
 R7         4.7K       
 R8         1K         
 R9         1K         
 R10        2.2K       
 R11        10K        
 R12        330        
 R13        330        
 REL1       RELAY_1RT  
 REL2       RELAY_1RT  
 U1         TIL111     
 U2         TIL111     
 U3         TIL111     
 U4         7805       
 X1         16MHz  

Les composants du capteur à placer dans le siège

Epoxy cuivré simple face de 8/10eme d'épaisseur . Environ 2x 10x10cm
1 diode genre 1N4004
Cable
Jack mâle audio stéréo 3,5mm
Connecteur plat 2 points (pour le contact de boucle

Les composants du capteur de température

1 LM35DZ
1 résistance de 2,2kohms
1 fiche din 5 broches mâle
Cable

Les composants du panneau d'affichage

1 LED verte
1 LED rouge
1 buzzer piezo
Fil de cablage
1 connecteur DIP 2x7 pins

 

Les fichiers Kicad utiles

En cliquant ici, il est possible de charger le fichier .sch correspondant au schéma de la carte électronique (créé avec Kicad) ainsi que le fichier .lib contenant les symboles de chaque composant utilisé dans ce schéma. 

Conclusion

La description de la partie Hardware du système YaZo est terminée . Les prochains articles seront consacrés à la description de la partie logicielle.


Début : -1- 941 jours
Article précédent :-9- Le système YaZo : Le détecteur de présence
 Article suivant : -11- Le système YaZo : Remarques importantes  
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.