danjperron
Posts: 2833
Joined: Thu Dec 27, 2012 4:05 am
Location: Québec, Canada

Re: liaison i2c

Fri Mar 23, 2018 2:22 pm

J'ai parcouru ton programme "Arduino Timer", c'est une 'usine à gaz'.
Oui je sais c'est long et pénible à lire. Beaucoup de code mais c'est plus que du bonbon! (Je sais que tu adores les expressions).

Je ne me soucis pas du tout du binaire ou bcd puisque la classe RTClib d'Adafruit converti tout du RTC à datetime (ce n'est pas la même que la version python).
Et en plus je n'utilise pas les registres d'alarmes puisque j'ai décidé d'avoir beaucoup plus d'alarmes et d'ajouter des fonctions comme les jours pairs et impairs qui sont très utile chez nous avec nos règlement municipaux qui nous permet d'arroser à l'extérieur selon le jour et notre adresse civique de notre maison.

En fait j'ai l'écran OLED fonctionnel avec la fonction 'touch' aussi. Il me reste à faire une ébauche sur un papier de la façon de configurer et d'afficher l'heure, les alarmes et les actions.

Voici les librairies que j'ai installé pour ce projet

- Pour le ds3231 -> https://github.com/adafruit/RTClib
- Pour les touches capacitives -> http://playground.arduino.cc/Main/CapacitiveSensor
- Pour l'écran OLED -> https://github.com/adafruit/Adafruit-SS ... or-Arduino
Pour l'écran j'ai téléchargé directement de waveshare https://www.waveshare.com/w/upload/8/8e ... D-Code.zip


J"ai une bonne semaine de travail encore pour l'ajout de l'écran. Ensuite ce sera le boîtier 3D!

Toutes ces librairies peuvent être acquises avec le système de librairie inclus dans l'IDE de l'arduino.

mandrin
Posts: 61
Joined: Tue Feb 06, 2018 4:49 pm

Re: liaison i2c

Sat Mar 24, 2018 1:35 pm

Bonjour,

Tout ça pour ne pas prendre l'arrosoir avec un pommeau pour arroser ton gazon!!
C'est pas un peu trop ?

Bon courage, l'été approche et il faut encore faire les circuits imprimés.

Je vais rester sur mon application c'est mieux pour moi de ne pas trop diverger.

Bon week end
Amicalement

danjperron
Posts: 2833
Joined: Thu Dec 27, 2012 4:05 am
Location: Québec, Canada

Re: liaison i2c

Sat Mar 24, 2018 3:19 pm

Tout ça pour ne pas prendre l'arrosoir avec un pommeau pour arroser ton gazon!!
C'est pas un peu trop ?
Non ça va mieux avec un arroseur oscillant mais il ne faut pas l'oublié et c'est pour cela qu'il faut une horloge . En réalité je n'utiliserai pas ce module pour le gazon mais pour le potager donc je n'ai pas vraiment besoin des jours pairs et impairs. Et il y a des fortes chances que j'utilise seulement mes circuits MultiIO puisqu'ils sont directement liés à un Raspberry Pi via Xbee.
https://docs.google.com/document/d/1JIR ... sp=sharing

Mais une horloge programmable est une bonne idée de projet pour démontrer l'utilisation d'un arduino pour un groupe d'amateurs auxquels je fais partie.


Tu ne m 'as toujours pas dit ce que tu veux faire vraiment avec le RTC et l'eerom.

mandrin
Posts: 61
Joined: Tue Feb 06, 2018 4:49 pm

Re: liaison i2c

Sat Mar 24, 2018 3:35 pm

Intégrer cet ensemble dans la gestion de ma chaudière à pellets (granulés de bois), avec régulation en fonction de la température extérieure et suivi des D.J.U. pour comprendre des écarts de consommations un peu anarchiques.

Rien de très spectaculaire mais je débute seulement en explorant les fonctions à ma disposition.

Amicalement

danjperron
Posts: 2833
Joined: Thu Dec 27, 2012 4:05 am
Location: Québec, Canada

Re: liaison i2c

Sat Mar 24, 2018 3:54 pm

J'utilise aussi une poêle à granules ! Peux-être que tu serais plus intéressé à mon système d'arduino nRF24L01 qui est connecté sur un raspberry Pi et un echo dots d'Amazon!

J'ai un module avec thermocouple dans le github.

viewtopic.php?f=44&t=104359
https://github.com/danjperron/nRF24L01_With_Sensor

Je suis en train d'ajouter du code pour mon "Google Home" parce que le système d'Amazon est seulement anglais. Ce n'est pas un problème mais j'aimerais toutefois parler français.

mandrin
Posts: 61
Joined: Tue Feb 06, 2018 4:49 pm

Re: liaison i2c

Sat Mar 24, 2018 6:09 pm

J'ai déjà fait un programme avec une carte Arduino mega 2560 que je voulais gérer avec un PCduino mais ce dernier a rendu l'âme au moment où je voulais m'en servir. Défaut de mémoire Nand et donc perte de tout ce qu'elle contenait os compris.
D'où mon orientation vers la Raspberry.
Là je découvre que la Raspberry est capable de gérer la totalité des fonctions et possède suffisament de I/O pour commander les composants de la chaudière et la régulation du chauffage.
Le seul inconvénient est la tension de 3v3 qui exige d'interfacer avec les tensions utilisées dans l'ensemble (230v~ ,12v= ).
Ce sera à voir plus tard quand la partie python sera recomposée.

Pour l'instant je fini d'explorer cette horloge pour ne plus revenir dessus, et savoir ce qui est possible avec çà.
Il est plus élégant d'utiliser une fonction alarme cyclique que de faire une boucle qui surveille l'heure en permanence pour commander des fonctions qui sont réparties dans le temps afin que l'exécution soit pris en compte sans collision.

Un exemple avec raspi le temps de la fonction mesures() dure 2.6 sec. C'est long!

A bientôt
Amicalement

totoharibo
Posts: 3720
Joined: Thu Jan 24, 2013 8:43 am

Re: liaison i2c

Sat Mar 24, 2018 6:59 pm

pour la fonction alarme cyclique regarder cron et crontab
man cron et man crontab

danjperron
Posts: 2833
Joined: Thu Dec 27, 2012 4:05 am
Location: Québec, Canada

Re: liaison i2c

Sat Mar 24, 2018 7:19 pm

totoharibo a raison


Si tu utilises un raspberry Pi le crontab est de loin plus simple.

Le RTC dans ce cas sert seulement à ajuster l'heure si le Raspberry Pi n'est pas sur le net!


Tant qu'a moi j'aime bien des microprocesseur asservis qui utilisent beaucoup moins d'énergie et qui commencent leurs tâches dans les milii-secondes après être énergisés.
Et je n'ai pas a craindre que la carte SD se corrompt. Malgré que tout on système IOT à la maison est géré par un Raspberry PI B revision 2 j'aime bien que les périphériques autour peuvent se gérer eux mêmes.

mandrin
Posts: 61
Joined: Tue Feb 06, 2018 4:49 pm

Re: liaison i2c

Sat Mar 24, 2018 7:44 pm

Bonsoir à tous,

J'ai déjà jeter un coup d'oeil discret sur cron et crontad. Effectivement il est aussi possible de réaliser ces opérations de cette façon.
Mais, il reste des questions comme:
- que ce passe t'il si la durée de la fonction en cours dépasse le temps prévu avant le lancement de la suivante.
- Comment lancer un programme python avec crontab au démarrage du pi?

Code: Select all

@reboot /usr/bin/python3 /home/pi/Dossier_raspi/store_mesures.py
Cette instruction est elle valide dans crontab?
Je n'ai rien essayé donc je ne sais pas.

Pour le fonctionnement je suis d'accord avec ta perception des choses.
Il y a un intérêt supplémentaire c'est le remplacement des circuits qui pilotent notre matériel et qui 'tombe' en panne et ne sont plus disponibles en pièces de rechange car l'entreprise qui les fabriquait a disparue ou ne fait plus ce matériel.

Tu est bien meilleur que moi en Anglais, je ne vaut rien.
Courage on avance!
Amicalement

mandrin
Posts: 61
Joined: Tue Feb 06, 2018 4:49 pm

Re: liaison i2c

Tue Mar 27, 2018 1:51 pm

Bonjour,

Une petite question:
Sur "SQW" du circuit la sortie est bien à '1' durant une seconde ou bien est ce fugitif? si les autres conditions sont remplies.

A1IE, A2IE, INTCN, A1F, A2F sont à '1'.

Amicalement

danjperron
Posts: 2833
Joined: Thu Dec 27, 2012 4:05 am
Location: Québec, Canada

Re: liaison i2c

Tue Mar 27, 2018 10:44 pm

Je suppose que pour toi 1 c'est ~3.3V et 0 c'est 0V.


La sortie SQW est open collector donc il est jamais à 1 par elle même. Il faut une pull-up pour qu'elle soit à 1.


Lorsqu'il y a une interruption SQW est activé et la sortie tombe à 0 (~0V).

A savoir si SQW restera activé après une seconde je ne sais pas. Il est facile de vérifier de toute façon.

mandrin
Posts: 61
Joined: Tue Feb 06, 2018 4:49 pm

Re: liaison i2c

Wed Mar 28, 2018 11:02 am

Bonjour,

La sortie SQW est toujours à 0v (GND) quelle que soit l'état du comptage. Donc l'horloge ne déclenche pas la coïncidence entre l'heure et les consignes d'alarme.
Les bits (A1M1 A1M2 A1M3 A1M4) sont configurés "1100" pour toutes les minutes et toutes les secondes
Les bits (A2M2 A2M3 A2M4) sont configurés "110" pour toutes les minutes
Les bits (A1IE A2IE INTCN) sont configurés "111" soit activés
Les bits (A1F A2F) passent bien à 1 (3v3) lorsque le temps correspond à l’heure (vérifications faites avant et après la correspondance des temps).
La sortie SQW ne passe pas à 1 (3v3) a l'activation des alarmes et une résistance de pullup est bien câblée.
Ai- je oublié quelque chose ?
C'est le dernier truc qui me reste à faire sur cette horloge.
Amicalement
Last edited by mandrin on Wed Mar 28, 2018 2:22 pm, edited 1 time in total.

danjperron
Posts: 2833
Joined: Thu Dec 27, 2012 4:05 am
Location: Québec, Canada

Re: liaison i2c

Wed Mar 28, 2018 12:26 pm

La sortie SQW ne passe pas à 1 (3v3) a l'activation des alarmes et une résistance de pullup est bien câblée.
Et non lorsque la sortie SQW est activée elle passe à zéro! La barre par dessus le INT veut dire que c'est une sortie inversée!

Donc la broche SQW indique une alarme a été enclenché si elle est à zéro. Il faut donc vérifier les bits du registre d'état, (status register 0xf),
Et de ce fait tu as ta réponse. Pour enlever l'interruption il faut écrire à zéro le bit de status qui a enclenché l'interruption.(A2F ou A1F)

mandrin
Posts: 61
Joined: Tue Feb 06, 2018 4:49 pm

Re: liaison i2c

Wed Mar 28, 2018 2:20 pm

Oui ok.

Si tu lis ce que je t"écrit, peut tu me dire si, dans les états décrits, il y a une faute, un oubli, car au repos, sans alarme AVEC une résistance de pullup, et, AVANT d'avoir des alarmes, la sortie SQW est déjà à 0v (GND) soit en alarme, ce qui est anormale et ne peut donc pas passer de 1(3v3) à 0(GND) puisqu'elle y est déjà alors que le temps n'est pas encore ateint .

Peut tu jeter un oeil sur les bits de configuration si je n'ai rien oublié. Si tout est OK alors le circuit a un défaut.
Merci d'avance

Amicalement

danjperron
Posts: 2833
Joined: Thu Dec 27, 2012 4:05 am
Location: Québec, Canada

Re: liaison i2c

Wed Mar 28, 2018 3:29 pm

Salut,

Je ne peux rien vérifier avant demain soir. Je reviens à la maison pas avant 11PM ce soir et je suis au boulot demain.


En théorie il faudrait mettre le registre 0xe (Control register) à 0x4. La broche INT/SQW devrait être à 1

Tu peux vérifier la broche avec l'onde carré avec la valeur 0x0. Tu devrais avoir une onde qui est 0.5 sec ON et 0.5 sec OFF sur INT/SQW

mandrin
Posts: 61
Joined: Tue Feb 06, 2018 4:49 pm

Re: liaison i2c

Wed Mar 28, 2018 3:55 pm

OK pas de problème.

Je voulais simplement finir cette partie. Je comprends très bien que nous avons d'autres occupations.

Bon courage, à bientôt

Amicalement

mandrin
Posts: 61
Joined: Tue Feb 06, 2018 4:49 pm

Re: liaison i2c

Fri Mar 30, 2018 7:56 am

Bonjour,

Pour information, la sortie SQW fonctionne. J'ai bien une alarme après le temps passé par l'alarme1 la sortie passe à 0 (GND) donc déclenchement de l'alarme, mais, oui il y a encore un "mais", Elle ne reviens pas à 1(3v3) après. Ce qui interdit d'avoir une seconde alarme en cascade.
Existe t'il un moyen de repositionner la sortie SQW à 1 au bout de une seconde ou moins sans faire une boucle ou un sleep?
Cette sortie (SQW) étant surveillée par une fonction interrupt.

Bonne journée,
Amicalement

danjperron
Posts: 2833
Joined: Thu Dec 27, 2012 4:05 am
Location: Québec, Canada

Re: liaison i2c

Fri Mar 30, 2018 12:55 pm

Pour enlever l'interruption il faut écrire à zéro le bit de status qui a enclenché l'interruption.(A2F ou A1F)
C'était dans un de mes derniers posts! L'as -tu essayé?

mandrin
Posts: 61
Joined: Tue Feb 06, 2018 4:49 pm

Re: liaison i2c

Thu Apr 12, 2018 7:23 am

Bonjour,

Les fonctions de l'horloge DS3231 sont toutes explorées.
Ca fonctionne très bien.
Sujet classé.

A bientôt
Amicalement

mandrin
Posts: 61
Joined: Tue Feb 06, 2018 4:49 pm

Re: liaison i2c

Sun Apr 15, 2018 8:28 am

Bonjour,

Il y a bien longtemps que je n’ai pas posté.

Je croyais avoir fini avec l’horloge, et, surprise ! il y a un bug.
Dans la configuration de cette dernière, il est stipulé dans le tableau des Mask que la configuration de :
Mask1 pour les registres 0x07 à 0x0A , si ils sont tous les quatre à 1 il y a une alarme toute les secondes.
Or il n’en est rien car l’alarme1 dure 32 secondes et ensuite elle attend la minute pour reprendre le cycle.
Soit un trou de 28 secondes.
Cela et fort probablement dû à la mesure de température interne qui a lieu toutes les 64 secondes.
Cette procédure interdirait l’utilisation des secondes dans l’alarme 1.

Je donc vais supprimer l’horloge de mon montage et explorer une autre solution.
J’ai besoin d’activer un programme toutes les secondes pendant que d’autres s’exécutent en cascade.
Certains programmes durent plus que la seconde, ce qui m’oblige à des utilisations simultanées.

Voir probablement du côté de multiprocess ou des thread. Peut être une horloge plus simple ferait l’affaire.
L’utilisation de crontab ne va pas dans les secondes, le temps minimum est la minute.

De ton coté, l’espère que tout progresse bien et que tu avance dans ton projet.

Bon courage
Amicalement

Return to “Français”

Who is online

Users browsing this forum: No registered users and 1 guest