Quantcast
Channel:

Explorer des éléments de domotique

$
0
0

Lampe de bureau IOT

Titillé par ce qui est proposé sur le marché, j’ai testé pour vous deux éléments : un relais électronique et une lampe de bureau. Commençons par celle-ci.

La lampe de bureau est présentée comme suit, avec le titre un peu pompeux « Original Xiaomi LED Smart Table Lamp Dimming Reading Light For Cellphone » sur le site de Banggood, au prix de environ 50.-. Comptez 3 semaines pour la livraison, mais le port est gratuit. Elle correspond physiquement complètement à la description, son maniement est simple (heureusement, car le mode d’emploi est … en chinois). Le bouton par impulsion sert à allumer/éteindre ; sa rotation diminue/augmente la luminosité ; et maintenu pressé, change la température couleur.

Mais que peut-on piloter par soft ? Le nom de l’application (ci-après nommée Apps), pas mentionné, m’est donnée via le forum : c’est Yeelight. Pour Androïd et IPhone (iOS). Une fois chargée, il faut s’inscrire sur un site, avec email (ou n° de téléphone) et password. Ensuite, il s’agit d’appairer le/les éléments contrôlables par l’Apps.

Pour la bonne compréhension, voici le schéma (partiel) de liaison que j’ai à la maison. Il y a un répéteur WiFi pour que le signal soit assez fort au 1er étage, le routeur étant au sous-sol.

schema-lan-masur

En cherchant l’appairage, je n’ai pas réussi en le faisant par le répéteur ; alors que PC portable ou le mobile passent sans difficulté du WiFi AP du sous-sol au répéteur au rez. J’ai donc déménagé la lampe près du routeur/WiFi pour ce faire ; malgré tout, il m’a fallu quelques essais pour y parvenir avec succès.

Une fois connecté, l’Apps Yeelight permet d’enclencher/déclencher la lampe ; de commuter sur une température couleur.

Les fonction sont : On-Off, une température couleur élevée pour de la lecture ; et une basse pour consulter un écran de PC sans trop de lumière bleue.

On peut renommer l’élément et même mettre un raccourci de bouton On-Off sur le bureau Androïd, ici « LED Bureau » :

Ceci a du sens lorsqu’on a plusieurs éléments commutables, pour les atteindre rapidement avec son mobile.

Conclusion provisoire

L’apps ne sert pas à grand-chose. En effet, si on travaille sur son bureau, pourquoi sortir son portable pour allumer ou éteindre la lampe qui y trône plutôt qu’allonger le bras? Il serait plus intéressant d’y avoir une commutation pour simuler une présence, par exemple. Ou un allumage progressif à partir d’une heure donnée pour servir de réveil sympathique.

De plus, comme mentionné peu avant, elle essaie de se connecter sur le routeur ; la communication est mauvaise, donc inutilisable. Souvent, le On-Off est inopérant.

17-yeelight-offline

Et l’aide pour le reset, pas secourable :

18-yeelight-how

 

Switch Sonoff

Le switch est aussi disponible par le site de Banggood, sous le nom de « DIY Wi­Fi Wireless Switch For Smart Home » pour moins de 7.-. Il fonctionne sur le 230 VAC et un pouvoir de coupure de 7 A, un courant maximal de 10A. Le voici inséré dans une rallonge secteur.

Dommage qu’il n’y ait pas de bornes pour le fil de terre…

00-sonoff

Attention : dans la description qui suit, « switch » nomme cet élément, et non un switch informatique.

Le constructeur Slampher a d’autres produits, dont des culots E27 permettant des commutations. Ce qui est moins clair est : comment sont faites les transmissions ? Sur le site, il est dit que la transmission est à 433 MHz, mais aussi WiFi. Avec sur le croquis un nuage, un AP et un smartphone… Le texte est un peu plus clair : Sonoff and Slampher will send data to cloud platform through Wi­Fi Router, they pair with the Wi­Fi through the APP, thus you can control all added appliances and lights with your smart phone or tablet.

Application

L’Apps à charger sur smartphone est : EWeLink. Son installation demande une inscription, un login, un mot de passe. Ce qui peut inquiéter toutefois est ceci :

01-ewelink-droits

Pourquoi une telle Apps a besoin de la position, du micro, de la caméra ? très intrusif, tout ça ! En tous cas, j’hésiterais à l’utiliser pour, disons, enclencher/déclencher un réacteur nucléaire.

La confirmation qui suit n’est pas de nature à tranquilliser :

02-securite

De mon expérience précédente, je n’essaie même pas d’appairer le switch via le répéteur ; mais je le fait directement au sous-sol, où se situe mon atelier de bricolage. Je commence bien sûr par un câblage du réseau et d’une prise femelle, et y branche une lampe. Le témoin vert commence à clignoter.

Malgré les précautions prises, cet appairage s’avère ardu. Il faut de la patience… 3 minutes par essai.

03-ewelink-pairing

Après x essais, je prends le parti d’y aller « à la main », comme proposé à l’écran suivant.

03-ewelink-pair-fail

Mécanisme d’appairage

Là, je comprends mieux le système : lorsqu’on appuie 5 secondes sur le bouton du switch (il sert aussi à enclencher/déclencher à la main), le WiFi interne du module se met en mode AP et présente une identification WiFi ; l’Apps connecte le WiFi du mobile sur le switch en mode AP, lui configure quelque chose, puis retourne sur la connexion WiFi « normale » et finalise la connexion sur le serveur. Il faut évidemment que ceci joue dans un certain laps de temps. Il suffit que le switch soit passé en mode client ; ou que le mobile n’ait pas eu le temps de tout faire pour « programmer » l’appairage et c’est à refaire.

Après quelques combats insoutenables, l’appairage est fait. Une fois le switch connecté, un bouton (renommable) se présente, et permet de le commuter.

Un coup d’œil sur la liste des appareils connectés sur le routeur montre ceci :

06-dhcp

Le genre de chip WiFi doit être le même pour la lampe Xiaomi et le switch que nous testons présentement. Intéressant, ce « ESP » au début de l’identification… Notez aussi le « computer » dont l’adresse finit par 107 : c’est mon portable Windows 10, qui demande un nombre impressionnant d’adresses IPV6. Les « android » sont le mobile de ma femme et le mien.

Essai de timer

L’Apps propose une tempo pour enclencher/déclencher ; ainsi qu’un maximum 8 timers programmables à date fixe ou selon les jours de la semaine. La question est : que se passe-t-il si je programme un timer et que mon mobile se déconnecte du WiFi ?

Le test est effectué, en programmant un déclenchement dans 2 minutes, puis en mettant le mobile en mode « avion »… Test passé avec succès. Ceci signifie que c’est bien par le serveur distant que les ordres sont stockés et effectués. Ou que la puce du switch maintient l’heure et une liste d’enclenchement déclenchement ?

Essai via la connexion GSM

La connexion WIFI du mobile est coupée. Comment va réagir le switch, si l’Apps n’est plus en connexion WiFi locale ?

Test : c’est fonctionnel. Donc, là on est sûr que ça passe bien par un serveur distant. Ou en bonne partie.

Essai avec réseau local, sans Internet

Est-ce que la liaison locale ne suffit pas pour commander en On-Off ? Pour en voir le cœur net, je coupe la liaison Internet du routeur ; le téléphone fixe de la maison devient hors service… Malgré la liaison WiFi active, par lequel tout le potentiel local subsiste, pas moyen d’actionner le switch. La preuve est bien là : les ordres de commutation instantanés passent aussi via le serveur chinois.

04-ewelink-device-offline

Réponse aux sollicitations

Passant par un serveur distant, on peut s’attendre à quelque délai. Toutefois, si la connexion et établie, c’est-à-dire que l’application est en avant-plan et que le réseau est stable, le délai entre le moment où l’on clique sur le bouton et l’activation du relais ne dépasse pas les 200 ms. A l’oreille bien sûr, je n’ai pas mis en place des conditions de labo pour cette mesure ! Et à l’oreille, parce que c’est bien un relais électromécanique qui clique dans le switch, et non un triac qui commute silencieusement.

 

Un ping sur www.ewelink.com montre une réponse de 27 ms. C’est peu. Comment est-ce possible ? Un coup d’œil sur le site répond à la question : ils utilisent le service « amazone cloud AWS » pour ce faire. Et via ce dominateur de la WebSphere qu’est Amazone, dont les serveurs sont distribués partout sur la planète. C’est aussi pourquoi l’Apps demande la localisation à l’inscription…

Essais de coupure d’alimentation du switch

Dans un tel cas, le switch doit reprendre la connexion WiFI avec le routeur/AP. Pour vérifier son temps de reconnexion, je lance un ping -t sur son adresse. Et lui coupe le jus.

Test : j’allume la barrette sur laquelle le switch est connecté et enclenche le chrono, puis observe la fenêtre des pings… il reprend la ligne en 5 secondes ! Si tous les appareils connectés en faisaient autant…

Conclusion provisoire

Le switch remplit sa fonction. Il est à dispo, reconnecté et reconnectable, rapide. L’état est à jour sur l’Apps, même en cas de changement manuel par le bouton. Les renommages, ajouts, ou encore du groupage (pas essayé avec 1 élément…) sont pratiques. Les fonctions de timers sont raisonnablement sûres.

On peut toutefois blâmer la difficulté à appairer les devices. Pour un bricoleur/développeur, on attend de pourvoir utiliser en direct de tels éléments avec une API de sorte ; ce qui ne semble pas le cas. A moins de sortir l’artillerie lourde et d’espionner les flux TCP-IP, on ne saura pas quel est le protocole. C’est bien dommage.

Tout bouge et tout change, c’est à surveiller.

Yves Masur (1/2017)

Références:
lampe LED Xiaomi
Relais Sonoff

 

 

 

 

 

 


CNC GRBL

$
0
0

Les imprimantes 3D se sont démocratisées ces dernières années. Une grande partie des modèles « amateurs » sont basées sur des cartes à micro contrôleur Arduino. Les firmewares utilisés interprètent un protocole de commande très proche du code G utilisé pour les machines d’usinage à commandes numériques appelées CNC.

Il n’y a donc qu’un pas à faire pour utiliser ce même hardware et pouvoir piloter une machine 3 axes et en faire une fraiseuse numérique par exemple ou une graveuse (découpeuse) laser.

C’est ce qui a été développé par la communauté et donné naissance au firmware GRBL. J’utilise depuis une année la version 0.9j et maintenant la version 1.1 est disponible pour des cartes à micro contrôleur Atmega328 ou Atmega2560 type Arduino.

Comme pour les imprimantes 3D il faut encore ajouter des contrôleurs de moteurs. Le hardware utilisé est le même que pour les imprimantes 3D. Pour les cartes Mega2560, j’ai utilisé la fameuse RAMPS 1.4. Pour la fraiseuse, j’utilise la plus petite carte CNC shield, voir ci-dessous.

CNC-V3-1

Il faut encore de la mécanique 3 axes. Pour ma part j’ai hésité longtemps à fabriquer mon propre assemblage, mais lorque j’ai vu le prix du système ci-dessous, j’en ai fait l’acquisition; il s’agit du modèle Sable CNC 2015 . J’en suis très content. On trouve également la broche avec un moteur DC.

CNC

Voilà, le hardware est assemblé, le câblage réalisé, il faut encore un logiciel pour envoyer les commandes « code G » pour piloter la machine. Pour cela j’ai utilisé Universal G code Sender, un logiciel simple mais efficace; il y a aussi cette version dite “classic”.

GCodeSender version PlateForm
GCodeSender version PlateForm

Plus tard, une fois bien familiarisé avec la machine, j’ai utilisé le logiciel bCNC, un logiciel bien abouti. Il permet également de calibrer le plan XY par palpage matriciel. Etant écrit en Python, je vous conseille d’installer la version 2.7 de Python ainsi que le plugin seriel pour Python.

bCNC, un magnifique logiciel !
bCNC, un magnifique logiciel !

Ce logiciel permet de fraiser par contourage des circuits imprimés. Je l’utilise avec des fichiers importés directement depuis le logiciel CAO de Target.

En conclusion, je n’ai pas encore tout découvert, mais cette évolution des CNC’s pour des amateurs devient très intéressante. Merci à Gaël pour ses précieux essais.

 

Laurent Francey (1/2017)

Fabrication de prototypes PCB mon marché, finition avec une CNC

$
0
0

Nous avons récemment découvert que le shop en ligne « Seeedstudio » offrait la fabrication de circuits imprimés aux dimensions de 100x100mm pour la somme modique de $9.90 pour 10 circuits (19.80 avec livraison). Il était donc intéressant de passer commande d’un circuit que je n’aurais pas fabriqué sans avoir un prix très attractif.

Dessin et commande du circuit :

Je me lance donc dans un dessin avec le logiciel CAO Eagle (Autodesk), la version limitée à 100x180mm est gratuite pour les utilisations non-professionnelles.

  

Mon projet est un interrupteur basé sur un module Wifi ESP8266, un relai et un module 230V/5V (schéma).

Circuit 2 couches, je vais dessiner des fentes pour mettre le circuit aux normes concernant la tension 230V.

Avant d’envoyer les fichiers au fabricant, je vérifie le contenu avec « gerbv », un logiciel gratuit qui permet de visualiser les couches du circuit.

Le site de commande en ligne de Seeedstudio et d’autres fabricants tels que Eurocircuits permettent également d’effectuer cette vérification en ligne avant de passer la commande, ce qui est très pratique et évite des surprises. Une fois satisfait du contrôle visuel, j’envoie les fichiers gerber (zip) au fabriquant.

Livraison:

Il ne reste plus qu’à attendre la livraison. Attente un peu longue (4 semaines), mais finalement les 10 circuits arrivent et sont d’un état très acceptable.

2017-04-13 11.53.26.jpg

A première vue tout va pour le mieux, les circuits sont propres et correspondent exactement à mon attente. Il ne me reste plus qu’à découper les circuits au format circulaire et avec des entailles pour isoler les pistes 230V. Faire effectuer cette opération aurait juste fait exploser le prix de l’offre, raison pour laquelle je décide d’effectuer cette étape dans mon petit atelier. Vu le nombre de circuits, je vais utiliser ma petite CNC.

Découpe du circuit :

Pour la découpe sur la CNC , j’ai dessiné les contours et fentes dans la couche CAM du logiciel Eagle. Une fonction d’Eagle permet de convertir cette information en format dxf. Ces données doivent maintenant être transformées en commandes pour ma machine (CNC), ceci se fera au moyen d’un logiciel CAO mécanique.

Autodesk a publié dernièrement le nouveau logiciel « Fusion 360 ». Ce logiciel permet la création d’objets 2D et 3D et la génération des fichiers CAM pour une CNC ou pour imprimantes 3D. J’utilisais auparavant divers logiciels, chacun dans un but bien précis, chacun avec des commandes spécifiques ce qui compliquait passablement le travail. D’après la description de « Fusion 360 » je dois pouvoir remplacer tous ces logiciels par ce dernier (fraisage, contournage, perçage) ce qui devrait me simplifier passablement le travail dans l’avenir! Mon petit projet est donc idéal pour apprendre à utiliser et à tester « Fusion 360 ».

Fusion 360:  

La prise en main est plutôt facile si l’on a déjà utilisé des outils CAO auparavant. L’équipe d’Autodesk nous fournis une aide précieuse en tutoriels « YouTube » et en articles en ligne. Le logiciel contient divers modes, l’un pour dessiner et modéliser, l’autre pour générer les données pour la machine qui effectuera le travail (CNC ou autre).

En mode Modèle, j’importe les données de la CAO Eagle au moyen du fichier « dxf » que j’attribue à l’axe Z. De cette façon, le plan du dessin est perpendiculaire à l’axe de travail des outils. Il faut maintenant définir la surface exacte à découper et la largeur des ouvertures (fentes) dans le circuit (Je désire contourner le circuit avec une forme circulaire qui rentre dans le boitier d’un interrupteur mural et de tailler des fentes d’isolation pour la partie courant fort).

Vue du logiciel Fusion 360 et des données du fichier «dxf» importées. Il ne reste qu’à ajuster les éléments graphiques.

Remarque : Avant d’envoyer les fichiers, j’ai ajouté 4 trous qui me permet de centrer le circuit sur ma CNC, en fait il n’en faut que 2, un premier trou comme point de référence (zéro) et un deuxième pour l’orientation dans l’axe x/y. Ces 2 trous sont visibles sur l’image ci-dessus.

Opérations en mode 2D

  1. La fonction « Slot » me permet de donner une largeur aux fentes à fraiser (image de gauche). Je choisis une largeur de 1.5mm correspondant à un outil en stock et je suis les lignes déjà présentes.
  2. Il me reste à ajuster les contours et à corriger les lignes non contigües (image de droite), le travail en mode dessin 2D est terminé.

 

La fonction “extrusion” me permet de donner du volume à mon circuit, j’obtiens ainsi le modèle exact de la forme à découper.

   

A gauche: Les traits continus permettent de délimiter automatiquement la surface.

A droite: Après extrusion on voit le volume de la pièce. La surface supérieure du circuit est définie comme niveau zéro (Z=0). Avec un Z>0 on éloigne l’outil de la pièce, avec un  Z négatif, on taille dans la pièce.

Étapes de fabrication:

Je prévois la découpe en 3 étapes :

  1. Perçage de 2 trous de référence (3mm) dans la plaque martyre de la CNC: (sans circuit), ces trous dans le bois solidaire à la machine me permettent d’y planter 2 tiges de 3mm et d’aligner chaque circuit.
  2. Avec l’aide des 2 tiges, fixer un circuit sur le martyre (avec du ruban autocollant double face)
  3. Lancer le programmer de découpe (J’utilise la même largeur d’outil pour les fentes et pour le contournage, ce qui m’évite de changer d’outils à chaque circuit).
  4. Je répète l’opération 2 et 3 pour les circuits suivants.

Suite à la création du modèle 3d (dessin ci-dessus) et à la définition de chaque étape de fabrication, je bascule en mode CAM dans Fusion 360.

Mode CAM dans Fusion : Dans ce mode, il existe de multitudes de possibilités de générer des donnes CAM

Il me faut :

  1. Drill (perçage)
  2. Slot (fentes)
  3. Contour (détourage de la pièce)

Les données pour le perçage iront dans un premier fichier utilisé qu’une seule fois, les données pour l’étape 2et 3 iront dans un 2ème fichier utilisé pour chaque circuit. Le logiciel permet de visualiser le déplacement de l’outil (simulation) ce qui me rend plus confiant quand à l’exécution du travail.

   

Affichage et simulation du perçage et du découpage. On peut distinguer en grisé la tête de la fraisage et l’outil qui sont définis dans les paramètres outils de “Fusion”.

 

Le logiciel Fusion 360 contient déjà toutes les fonctions pour la génération du fichier à charger sur la machine, entre autres la définition d’un magasin d’outils et les paramètres pour diverses machines CNC, cette phase est la plus difficile à réaliser vu le nombre de paramètres et le vocabulaire utilisé qui m’est inconnu. Sur ma petite CNC, j’utilise le logiciel « MACH3 ». Ce logiciel faisant partie des interfaces supportées par « Fusion » je ne suis donc pas trop inquiet.

Exemple de fichier CNC, on y reconnait les commandes (G-Code) qui vont piloter la CNC.

 

Il me faudra plusieurs itérations entre la CAO et la machine avant de lancer la première découpe. Les premiers essais se font sans outils et sans matière. A ma surprise, les déplacements se font correctement, il n’y a qu’a modifier le paramètre pour la vitesse de déplacement horizontale de l’outil et à enlever un mystérieux code G28 qui semble envoyer la CNC hors limites en fin de programme. L’apprentissage de cette dernière étape me sera utile pour d’autres projets.

Travail sur la machine (CNC).

2017-04-15 14.13.36.jpg     2017-04-15 14.14.13.jpg

  1. Perçage des trous de référence                    2. Ajustement du circuit sur la machine (martyre)

2017-04-15 13.47.17.jpg   2017-04-15 14.18.56.jpg

3. Circuit après découpe.                                                                       4. Circuit nettoyé

Suit le nettoyage, enlever les bavures et les restes de ruban double face.

J’ai finalement traversé toute la chaine des outils depuis le dessin jusque à la pièce découpée.

2017-04-14 00.01.56.jpg

Dernière étape, souder les composants et mise sous tension.
Tout a fonctionné du premier coup !!!

Rolf Ziegler (4/2017)

Router Internet en NAT avec un PC

$
0
0

Besoin

La configuration est la suivante : vous avez un PC portable (ou pas…) qui est connecté en Wi-Fi à Internet, et vous voulez router l’internet sur sa prise LAN sur laquelle peuvent être connectés différents hardwares, mais qui n’ont, eux, pas de Wi-Fi. Ou une connexion Wi-Fi est obtenue avec un code, et vous avez besoin de la partager.  Les différentes possibilités de partage sont décrites sur ce blog : https://anwaarullah.wordpress.com/2013/08/12/sharing-Wi-Fi-internet-connection-with-raspberry-pi-through-lanethernet-headless-mode/

Le matériel minimum suivant est requis :

  • Un routeur Wi-Fi, connecté sur l’Internet
  • PC avec 2 connexions LAN : Wi-Fi et RJ45 ; l’OS Win10 (Win7 aussi testé)
  • Un câble LAN croisé (rouge)
  • Un « device » à connecter, par exemple un RaspBerry Pi 2

Bien entendu, le « device » peut être autre : Arduino, second PC, etc.

Bref, un schéma est plus simple pour l’expliquer.


Le PC est connecté sur le routeur internet par son Wi-Fi, et le RaspBerry Pi par un câble croisé (câble rouge) à la prise LAN du PC. Bien entendu, un petit switch qui s’occupe du croisement automatiquement irait très bien aussi.

Partager la connexion

Il y a 3 options (ou peut être plus) pour établir la liaison :

  • Le Network Translation Adress, ou NAT
  • Le pont – transparence de connexion
  • Le partage de la connexion

Activer le NAT

On va utiliser la première, car vu du routeur Wi-Fi, seule l’adresse du PC est distribuée. Les autres options demandent au routeur Wi-Fi de distribuer en DHCP une adresse supplémentaire pour le RaspBerry.

Le NAT s’occupe de modifier les paquets IP pour changer l’adresse de la carte A en adresses de la carte B. C’est utilisé pour créer des sous-réseaux, et grouper une série de machines avec une seule adresse sur l’Internet. Voir : https://fr.wikipedia.org/wiki/Network_address_translation

Réglage des cartes LAN

Partage du WI-FI

  • Clic Droit sur icone Windows de la barre des tâche-> Connexions réseau
  • Clic droit sur le Wi-Fi -> Propriétés
  • Onglet « partage »
  • Cocher « Autoriser… » et décocher la seconde option si besoin

Si vous avez plus d’une carte, il faut choisir laquelle sera utilisée pour ce partage:

Après quelques secondes, la carte Ethernet obtient la configuration suivante, à vérifier en ligne de commande par ipconfig :

Ou encore en ouvrant la carte Ethernet et en lisant ses propriétés IPV4. Au départ, les champs sont vides : ils sont remplis par le partage de connexion. La carte prend l’adresse 192.168.137.1/24. L’adresse de la passerelle reste vide, ainsi que les DNS.

Contrôle de la connexion NAT

  • Connecter le RaspBerry sur le LAN du PC, à savoir la carte Ethernet
  • L’enclencher, pour qu’il prenne une adresse IP

Si le Raspberry était déjà allumé, il aura pris une adresse bidon, genre 169.x.y.z et un masque réseau 255.0.0.0. On peut redémarrer les services réseau avec les commandes Linux:

sudo ifdown -a

sudo ifup -a

  • Vérifier l’adresse prise par : ifconfig et la noter pour la suite
  • Vérifier l’accès à Internet avec : ping ch.ch (ou autre site répondant au ping)

Limites de la connexion NAT avec Win10

L’adressage du sous réseau ne peut pas être choisi ; c’est Windows qui décide. Selon les essais, l’adresse de base est toujours 192.168.137.1, avec un réseau de classe C, à savoir 253 adresses à disposition, ce qui suffit amplement.

Avec un laptop qui se met en veille… le partage disparait ! La carte Ethernet (du PC donc) reprend une adresse du genre : 169.254.245.127, et un masque 255.255.0.0. Remettre la coche du partage sur la carte Wi-Fi relance la fonction NAT ; et si cela n’a pas duré trop longtemps, le « device » connecté aura gardé son adresse et reprend sa liaison. On peut bien sûr tester avec la commande ping ch.ch pour en vérifier la fonctionnalité.

Yves Masur (4/2017)

Attention aux erreurs de dédouanement ! A méditer !!

$
0
0

 

Le 12 mai, je commande un lot de PCB (design maison) chez Seeedstudio qui offre à un prix très intéressant 10 circuits électroniques 2 couches (100x100mm) pour la modique somme de CHF 12.50 (version sans plomb) . Je me décide de passer commande avec l’option livraison DHL pour un surcout de CHF 22.80.

Suite à l’acceptation de la commande et de la vérification des fichiers GERBER par le fabriquant (le suivi peut se faire en ligne) le 23 mai, je reçois un message que ma commande est envoyée par DHL. Le suivi d’envoi montre que la déclaration en douane se fait par DHL en avance et le 26 mai je reçois mes circuits moins de 3heures après l’arrivée à Genève. Tout me semble en ordre. La facture jointe par Seeedstudio, importante pour la suite de l’histoire indique : Valeur PCB  US$12:90 Freight Cost  US$ 23.56, total $ 36.46. Je crois l’histoire de l’envoi terminé ce qui ne sera pas le cas.

Le 2 juin je reçois de DHL une facture pour les frais de TVA et de dédouanement de CHF 28.- qui se compose de CHF 6.- de TVA, provision pour avance de CHF 3.- et  CHF 19.- de frais de gestion. Les taux sont correct mais je me demande comment il est possible que je sois taxé vu que ma commande n’excède pas le montant critique (CHF 62.-). Ma commande devrait être franc de douane comme toutes les commandes de petit montants que j’ai passé en Chine par le passé. La facture jointe correspondant bien à ma commande, je vérifie la décision de taxation et je constate qu’en plus de la valeur de ma commande, le déclarant DHL ou notre cher office des douanes a ajouté CHF 39.- de transport (FRACHT). Enervé j’envoie de suite un message (courriel) à DHL (vatquery) et en parallèle à la FRC dont je suis membre. Les 2 institutions confirment la réception de mon message par courriel automatique mais après c’est le silence !

5 jours plus tard, impatient, je me décide de vérifier qui est à la tête de DHL Suisse et j’envoie un courriel aux personnes en charge (on les trouve facilement sur la page DHL en ligne). A ma grande surprise, je reçois le lendemain matin déjà une réponse du service de dédouanement de DHL  s’excusant de l’erreur qui a été faite et m’annonçant que la facture DHL est annulée.

A retenir : Réclamer si vous avez l’impression d’une erreur, insister si vous ne recevez pas de réponse et ceci même si le montant n’est pas important. Ceci afin d’éviter que les erreurs ne deviennent la règle ce  qui pourrait permettre à certaines entreprises d’arrondir leurs fins de mois !

Rem : La FRC ne m’a toujours pas répondu !

Rolf Ziegler (6/2017)

Petit rappel des différences de processeurs en programmation de C.

$
0
0
Je travaille depuis quelques semaines sur mon interface/télécommande pour mon enregistreur Revox B77. J’ai presque terminé mon interface WEB au niveau fonctionnalités (j’ai appris à utiliser HTML, JS, CSS, WEBSOCKETS, JSON dans tous les sens) la télécommande fonctionne presque mais j’aimerais ajouter des délais pour retarder ou avancer le freinage des bandes du B77. Je crée donc une page web supplémentaire avec les délais, j’utilise pour ceci la fonction HTML « input type=nombres ». Je veux lire un nombre entier (de -100 à  +100) à mémoriser dans l’EEPROM de mon ESP8266. Je déclare les variables pour le stockage intermédiaire en « int » et les premiers essais sont concluants, les nombres sont bien mémorisés (Serial.print… m’indique le bon fonctionnement).

 

<Interfaces après correction>

Surprise, après Reset du module ESP, les nombres restitués s’affichent juste pour les nombres positifs, mais faux pour les nombres négatifs ! J’ai l’impression que “C” utilise un « unsigned int » pour restituer les nombres alors que je les ai bien déclarés en « int ». L’effet est qu’à la place de m’afficher par exemple « -100 » il m’affiche « 65436 » Damned!
Après 4h de tests et une revue de chaque ligne de code, il est passé 2h du matin, quand je me dis que « int » n’est peut-être pas la bonne définition !!!! Processeur 32 bits => « int » correspond à « int32_t » et non pas « int16_t » ce qui expliquerait le comportement ! Je remplace les déclarations des variables en int16_t (-32767 à +32767) et tout rentre dans l’ordre ! je peux enfin aller me coucher ! Mon code est prêt pour un nouveau test pratique !!!
Super la programmation, mais pleine d’embûches !!!

 

Rolf Ziegler 7/2017
Présentation du projet au printemps 2018

Nouveaux ateliers au Microclub !

$
0
0

Chers membres et amis !

Nous avons le plaisir de vous proposer une série d’ateliers qui auront lieu selon vos réponses entre octobre et début décembre 2017 à l’EPFL. Pour nous aider dans l’organisation nous vous prions de nous communiquer vos intérêts en remplissant ce formulaire.

Les ateliers proposés sont les suivants :
● Atelier Arduino-C pour débutants
● Atelier Arduino – Debugging – Scheduling
● Atelier RaspBerry Pi
● Atelier HTML embarqué
● Atelier Neo-Pixels

 

Donnez nous votre avis sur vos intérêts et priorités !

Les ateliers sont ouverts au non-membres !

Lien vers le sondage

Le comité

Quel est le nom du programme dans cette vieille carte?

$
0
0

Vous retrouvez une carte Arduino sur un vieux montage que vous voulez améliorer, ou vous vous souvenez qu’il y avait des routines intéressantes. Diable, quel est le nom de ce programme, j’en ai fait des tas à cette époque et depuis?

Avec les PICs et le PicKit2, c’était facile. Avec Arduino, je cherchais la solution depuis longtemps; Jean-Marc Paratte l’a trouvée et avec l’UART en mode minimal, cela coûte 180 bytes en flash, 2 lignes à ajouter dans votre programme (même pas le nom!), et 23 lignes dans un .h astucieux.
Vous connectez la carte, vérifiez le COM port, cliquez sur le teminal série. Miracle, le nom du programme, la date et l’heure de création est affichée!
Sous pouvez aussi afficher sur une tablette si vous avez un adaptateur UART-USB.
Détails sous http://www.didel.com/FileIdSer.pdf

JDN (24.10.2017)


Joyeux Noël et Bonne année

Eau chaude – Calcul de constante de temps

$
0
0

Préambule

Grâce au montage basé sur un Arduino Yun, je peux monitorer en quasi temps réel par un échantillonnage toute les 10 minutes, l’état du volume de l’eau chaude sanitaire (ECS). Ces données sont enregistrées : un fichier par mois, comprenant une ligne par mesure. On a, séparé par TAB pour un copier-coller facile dans Excel:

  • Date, année/mois/jour
  • Temps, heure : minute :seconde
  • Marche de la pompe des panneaux solaires, en pourcent
  • Température de retour des panneaux solaires
  • Température du volume d’eau solaire (ES)
  • Température du volume d’eau chaude sanitaire

Le système est décrit ici : https://microclub.ch/2014/10/11/yun-monitoring-de-leau-solaire/

Il fonctionne impeccablement ; le Yun est véritablement un excellent produit. Le résultat est visible ici : http://yvesmasur.ch/ecs/ ; il est possible également de visionner les données plus anciennes par le formulaire de la page WEB ; avec la case « Tout » cochée, les échantillons par 10 minutes sont affichés.

Fig.0 – DATA ECS

Analyse plus détaillée

LA question qu’on me pose souvent, c’est l’apport solaire ? Pour le trouver, c’est assez simple. Le temps d’utilisation de la pompe étant stocké – colonne ‘Pompe’, en pourcent de tranche de 10 minutes – il est facile d’en extraire son temps de fonctionnement ; et en plus, connaissant sa puissance, de calculer l’énergie électrique utilisée… Et oui, le solaire demande (un peu) de puissance au réseau !

Une autre question intéressante, c’est la durée de l’ECS utilisable : combien de jours tient le stockage ?

Avant tout, il s’agit de connaître le fonctionnement du système. Et de son usage. En gros, personne ne se douche après minuit ; ni ne se rase avant 6h le matin : il n’y a pas de soutirage d’eau chaude dans cette tranche de temps. De plus, la chaudière ne remonte la température qu’une demi-heure avant l’enclenchement du chauffage, et seulement si nécessaire. En principe, la consigne est de 45°C. En examinant les données, on voit qu’il faut que la température ECS doive passer en dessous de 43°C (ou même baissé à 38° si le circuit solaire a démarré) ; et que la chaudière s’arrête à environ 48°C. On peut donc, grosso-modo prendre la température à minuit ; puis à 6 heure pour calculer quelque chose.

Modèle de calcul

La température de l’eau chaude va diminuer pour atteindre, si l’on ne fait rien, la température ambiante. Une telle décroissance est assimilable à celle bien connue des électroniciens : un réseau RC, ou le condensateur se (dé)charge dans une résistance.

Fig. 1 – Exponentielle décroissante

On a là une exponentielle décroissante de la tension, caractérisée par sa constante de temps Tau. Dans la fig.1, la valeur de Tau simulée sur Excel est de 10. A t=10, on a 0.368 de la valeur à t=0.

Exemple : https://fr.wikipedia.org/wiki/D%C3%A9charge_d%27un_condensateur

Il suffit de considérer que la température est la tension ; et le tour est joué… ? Il y a toutefois un problème. A moins de m’attirer les foudres des occupants, je ne peux pas couper la chaudière pour plusieurs jours, et encore moins interdire l’utilisation d’eau chaude… D’où l’idée de travailler sur les données disponibles. A savoir, une petite portion de l’exponentielle située entre minuit et 6h du matin, enregistrée régulièrement par l’Arduino Yun.

Paramètres et équation

Théoriquement, il suffit de prendre des données précises sur la tranche de temps utilisable, et de lancer le calcul pour connaitre cette fameuse constante de temps. Qui devrait être valable pour toute autre jeu de données. Mais quel calcul ? On a trois points en ordonnée :

  • Température à 0h00 : V0
  • Température à 6h00 : V6
  • Température ambiante : Va

Et bien sûr en abscisse, le temps t de 6h entre les deux mesures V0 et V6. Par rapport au circuit électrique, la température peut être assimile à la tension. La capacité est le volume d’eau qui emmagasine de la chaleur, la résistance est la résistance thermique de l’isolation qui isole le volume d’eau de la température ambiante. On ne les connait pas, et cela ne fait rien : seul leur produit – la constante de temps Tau – est recherché.

Remarquons aussi que la valeur de Va à t = ∞ n’est pas de 0 ; mais la température ambiante reste autour des 20°C. Vous allez me dire que la sonde au retour des panneaux n’est pas une température ambiante ? En fait, si. La nuit le circuit est (normalement !) arrêté ; et la sonde est disposée entre l’isolation et le tube en cuivre dans la buanderie.

Les choses étant posées, la meilleure solution est de consulter le Dr Goulu (PhD, R&D engineer, Lean manager, Science blogger), qui saura nous dire comment faire. Je lui ai donc posé la question par email avec comme exemple: V0=61.9, V6=60.0 ; c’était l’été et il faisait chaud… Voici sa réponse (notez que Tau est indiqué ‘T’ dans le message) :

Hello,

Si j’ai bien compris, il te faut fitter une fonction a*(1-e^(-t/T))+b par tes points et l’asymptote pour obtenir  T …

  • A t=0 tu as b=61.9
  • à t infini tu as a+b = 22.3 donc a =22.3-61.9 = -39.6
  • à t = 6 heures tu as a*(1-e^(-6/T))+b = 60 à résoudre pour T

Comme il se fait tard : https://www.wolframalpha.com/input/?i=-39.6*(1-e%5E(-6%2FT))%2B61.9+%3D+60+for+T

donne T ~ 122 heures.

Merci Dr Goulu ! Wolfram Alpha est décidément un puissant outil. En prenant les valeurs de quelques jours avec des températures de départ différentes, je vois clairement que mon modèle est entaché d’erreur. La constante de temps… est très variable ! Il me faut un outil plus facile d’accès et automatique pour cerner Tau.

Equation de base

En consultant l’excellent livre « The art of electronics », 4ème édition, p. 22 je peux en tirer l’équation générale me permettant de calculer la constante de temps, sans passer par Wolfram Alpha. La voici :

Tau = dt / ln ((V0 – Va)/(V6 – Va))

Sensibilité aux erreurs

Les mesures ne sont pas parfaites ; les sondes enregistrent au 1/10 de degré. A noter que dans cette affaire la précision absolue compte moins que la résolution. Excel est mon ami ; je pose des valeurs représentatives et je modifie un paramètre à la fois, pour en observer l’influence sur le résultat.

Equation de Tau (en ligne 2, colonne A) est introduite:

=6/LN((C2-E2)/(D2-E2))

Tau Var V0 V6 Va Paramètre modifié
93.60 0.00 49.8 47.9 19.2 Aucun
93.28 0.32 49.8 47.9 19.3 temp. moyenne entre 0h et 6h
89.07 4.53 49.9 47.9 19.2 écart -0.1 de V0
98.64 -5.04 49.7 47.9 19.2 écart +0.1 de V0
88.77 4.83 49.8 47.8 19.2 écart -0.1 de V6
98.97 -5.37 49.8 48.0 19.2 écart +0.1 de V6
91.00 2.60 49.8 47.9 19.2 écart de 10 minutes

 

Où l’on voit qu’une erreur minime de mesure de 0.1 °C de V0 ou de V6 se traduit par un écart considérable de Tau d’environ 5%. C’est notamment dû au fait que l’on a à disposition une portion très limitée de l’exponentielle de décroissance : 6H pour un Tau d’environ 100H.

Allure des courbes

Avant de se lancer dans le logiciel permettant de calculer sur un grand nombre de cas, il est bon de voir l’évolution des températures avec des cas typiques. Puis, à partir des éléments constatés, de construire un modèle s’approchant au mieux de la réalité.

Fig. 2 – par temps froid

L’eau chaude sanitaire (ECS) décroit, et elle est en dessous de la valeur de consigne de la chaudière. Un peu avant 6H, le brûleur à gaz remonte rapidement la température ECS à 48°C, ainsi prête pour son utilisation matinale. Le point de décroissance minimal est donc avant 6H ; à 5H40 ou à 5H50. La durée de mesure sera également raccourcie d’autant.

On remarque aussi que la température ambiante varie : elle baisse de 19° à 16°. De plus, le volume d’eau solaire n’a non seulement reçu aucune énergie solaire, mais il est réchauffé par le volume d’eau sanitaire…

Fig. 3 – tempéré

Ici, il y a un apport d’énergie solaire stocké ; le gaz n’est pas utilisé, du moins pour l’ECS. On est en octobre ; probablement que le chauffage des radiateurs lui, fournit par la même installation, s’est mis en route. Ceci se déduit en voyant la valeur ambiante augmenter à partir de 6h40. Le volume d’eau solaire suit une pente parallèle à l’ECS.

Fig. 4 – temps chaud

L’apport solaire est conséquent et amplement suffisant, puis que la nuit l’ECS est à plus de 56°C. Les courbes autant de l’ECS que de l’ES sont parallèles ; tout au plus un léger fléchissement à partir de 8H par soutirage. L’eau froide du réseau commence par refroidir l’ES, alors que l’ECS reçoit de l’ES à peine moins chaude de 2°C. On voit ici l’intérêt d’avoir deux volumes séparés. La valeur de Va diminue d’environ 3°C pendant la nuit.

Modèle amélioré

Premier constat : la température du seul volume de l’ECS n’est pas suffisante pour déterminer Tau. En effet, une partie de son énergie passe dans le volume d’ES en le réchauffant ! les deux volumes étant identique (dans mon cas, chacun 200 litres), il faut utiliser une pondération de 0.5 des deux pour tenir compte du transfert d’énergie. Cela se voit dans l’exemple 1 : la forte décroissance de l’ECS (qui conduirait à un Tau faible) est atténuée par la pente positive de l’ES. On sera ainsi bien plus précis.

Second constat : la température ambiante Va varie. Laquelle (voire lesquelles) prendre ? La sensibilité de cette valeur dans le calcul est heureusement moindre. Celle qui semble le mieux convenir est celle à mi-parcours temporel : à 3h00 du matin.

Troisième constat : la valeur de V6 peut être fausse si la chaudière s’enclenche avant 6H. L’algorithme devra donc traquer le minimum et prendre l’échantillon adéquat, tout en corrigeant la durée qui devient alors inférieure à 6h00.

Programme et résultats

Afin d’avoir un suivi régulier de la valeur de Tau, j’ai élaboré un programme en Python. Il est disponible sur https://github.com/ymasur/ecs-calc

Il permet de créer un rapport par mois, mais accepte aussi des valeurs partielles : C’est utile pour monitorer les résultats au jour le jour.

Le programme est divisé en modules :

  • ecs-calc.py : le programme principal
  • esetup.py : constantes et traite les arguments de la ligne de commande
  • samples.py : lit et met les données en structure
  • energy.py : calcule le pourcentage solaire et l’énergie de la pompe de circulation
  • temperatures,py : calcul de Tau

Hostspot sur des fonctions clés

Fonction add_points() – extrait

La liste des points des échantillons ‘datas’ de 10 minutes est parcourue. Remarquez l’avantage du langage de haut niveau pour scanner la liste en ligne 91. Pour ne pas m’embêter avec des fonctions date et heure, le temps du jour est lu en minutes dans ‘s.mm’. Le point V0 déterminé à 0h00 (ligne 93), Va à 3h00 (ligne 97), V6 traqué au minimum dès 5h00. Une fois déterminé, le Tpoint est instancié à la ligne 109. Pour traiter des valeurs partielles, le nombre de Tpoints est maintenu à la ligne 113.

Classe Tpoint

Met en structure une mesure. Le Tau est calculé et mis en boite à la ligne 35.

Pour que le programme fonctionne non seulement sur PC mais aussi en automatique sur l’Arduino Yun, il a fallu encore :

  • convertir les fichiers Python au format UNIX, avec LF en fin de ligne ;
  • ajouter en 1ère ligne le commentaire #!/usr/bin/python ;
  • supprimer les accents dans les print() console ;
  • ajouter le path du programme au nom du fichier de donnée

Le dernier point est étonnant, car ils sont dans le même répertoire. Mais le CRON destiné à son lancement régulier n’en sait rien…

Conclusion

Collecter des (big) datas, c’est bien ; les analyser et en tirer des informations, c’est mieux !

L’isolation des volumes d’ES et d’ECS n’est pas extraordinaire, avec un Tau d’environ 100 heures ; donc utilisable pendant 48h à une température suffisante. Si le choix est possible – ça prend de la place -, on remarque qu’il serait bon d’avoir une capacité de stockage bien supérieure et un Tau de 240 heures, de manière à consommer de l’eau réchauffée gratis par le soleil même pendant 4-5 jours couverts, ceci sans augmenter la surface des panneaux solaires.

Prochaine étape : calculer l’économie de gaz. Vous avez vu comme moi la courbe 2 – par temps froid ; la pente est reconnaissable. Mais je dois trouver le bon modèle. A suivre !

Références

  • livre « The art of electronics », 3ème édition, Paul Horowitz et Winfield Hill
  • Article « https://microclub.ch/2014/10/11/yun-monitoring-de-leau-solaire/ »

Yves Masur (1/2018)





Latest Images