je cherche des personnes motivées pour participer à un projet :
Réaliser une pile KNX Software en Langage C dans un Arduino / ATMEGA328
Ce qui permettra d'obtenir un BCU (Bus Coupling Unit) à faible coût et modifiable à notre guise.
J'ai déjà fait une grosse partie du travail seul :
Tout en Assembleur , actuellement le firware ATMEGA fait 12Ko sur les 32ko dispo du ATMEGA.
ca fonctionne pas mal , je l'ai mis en pratique dans un Dimmer à 2 canaux.
mais 12Ko d'assembleur c'est gros.. et difficile à maintenir.
De plus je manque de temps :
Ca serait dommage de laisser tomber.
Avec l'expérience, je referais différemment certaines choses dans le programme.
L'idée est de le refaire en Langage C pour être maintenable et améliorer par plusieurs personnes.
de créer un SVN ou autres pour avancer ensemble.
et un forum (knx-fr peut nous créer un sous forum ? )
Il faut une ou deux personnes avec :
- De bonnes connaissance en Langage C ( en C classique, pas de l'objet)
- La programmation par interruptions , bien connaître les microcontrôleurs
- Qui connaisse un peu l'assembleur
- Motivé et qui a du temps.
- Qui aime le challenge ( Il n'y a pas un autre projet dans le monde similaire à ma connaissance)
Il y a les allemands avec FreeBus, mais c'est du Pseudo KNX et non utilisable avec ETS
- avec un bus KNX chez soi et installer EIBD ( c'est la base pour travaiiler )
voir photo d'un des prototypes
Les choix retenus :
- ATMEGA328 pas cher et connu via l'arduino 32ko de flash ( il faut que le code compilé tienne dedans)
- Horloge Quartz à 8Mhz : si on monte plus , on consomme plus et il faut ne pas dépasser les 10mA préconisé par KNX
- J'ai essayé sans Quartz ( ca diminue les coûts ) mais l'horloge Rc interne n'est pas assez précise : les Timing KNX doivent être bien précis !
- 2 Timers internes un à 16bits ( pour la précision du décodage de trames + mesure des temps entre 2 trames ) et un Timer 8bits pour une synchronisation en émission.
- Un CAN pour une mesure de courant ( voir transfo de courant sur la photo )
Je trouve que c'est un super projet.
J'avais aussi en tête de réaliser un vrai device KNX, mais étais confronté à la méthode d'accès au bus (utilisation d'un transceiver KNX) et la nécessité de passer par le KNX Manufacturer Tool.
Pour le moment je bricole avec des Arduinos qui communiquent via I2C, RS232 ou 485 vers un Raspberry qui fait passerelle vers le KNX.
J'ai envie de te répondre positivement, mais comme beaucoup de projets communautaires il faut y consacrer du temps si on veut que ça progresse, et je ne peux pas garantir une grosse assiduité. En tout cas un coup de main avec plaisir !
Petite info côté carte BCU permettant d'accéder au bus KNX via un Raspberry il y a ceci : http://www.eelectron.com/wp-content/uplo...020001.pdf
J'imagine que c'est adaptable à un Arduino vu que ça passe par un port série.
Qq questions :
Tu utilises un chip Atmega avec le bootloader de l'Arduino, mais as utilisé un PCB custom ? Ca me surprend que tu dises que le module interne utilise un RC, pour moi les cartes Arduino ont bien un quartz.
Tu as accès au KNX Manufacturer Tool en tant que fabriccant référencé. Quid de l'utilisation de l'outil dans un projet communautaire ? Les devices ainsi créés seraient-ils vraiment utilisables sous ETS ?
Passer de l'assembleur vers le C risque (un peu) de faire grossir le code. Je sais que l'Arduino est un peu limite pour loger ça et laisser suffisamment de place pour la partie purement applicative. Il faudrait peut-être envisager un circuit d'interface universel à base d'Arduino effectivement, mais couplé à un deuxième qui s'occuperait de l'applicatif du device (un peu le produit en lien en fait...)
28/06/2016, 16:10:26 (Modification du message : 28/06/2016, 16:47:29 par philhp.)
(28/06/2016, 08:35:08)steph a écrit : Qq questions :
Tu utilises un chip Atmega avec le bootloader de l'Arduino, mais as utilisé un PCB custom ? Ca me surprend que tu dises que le module interne utilise un RC, pour moi les cartes Arduino ont bien un quartz.
Actuellement je programme l'ATMEGA directement avec un ISP , flash direct via avrdude pour ceux qui connaissent.
Avec un PCB custom pour miniaturiser le maximum.
Mais pour que le plus grand nombre puisse l'utiliser, j'aimerais que ca puisse fonctionner aussi sur arduino.
(28/06/2016, 08:35:08)steph a écrit : Tu as accès au KNX Manufacturer Tool en tant que fabriccant référencé. Quid de l'utilisation de l'outil dans un projet communautaire ? Les devices ainsi créés seraient-ils vraiment utilisables sous ETS ?
oui j'ai le KNX Manufacturer Tool, Ce n'est pas la partie qui prend le plus de temps....
Avec le Manufacturer Tool , Je peux créer le fichier projet test et le déposer quelques part pour n’importe qui puisse l'utiliser avec ETS. Il n'y a rien qui l'interdit.
(28/06/2016, 08:35:08)steph a écrit : Passer de l'assembleur vers le C risque (un peu) de faire grossir le code. Je sais que l'Arduino est un peu limite pour loger ça et laisser suffisamment de place pour la partie purement applicative. Il faudrait peut-être envisager un circuit d'interface universel à base d'Arduino effectivement, mais couplé à un deuxième qui s'occuperait de l'applicatif du device (un peu le produit en lien en fait...)
Oui a voir... il est clair qu'il faut éviter au maximum d'utiliser des bibliothèques pour ne pas faire grossir trop vite le code.
Je ne me propose pas comme développeur, car 1) je ne fais du C que sous la torture ;o) 2) j'ai déjà trop de trucs sur le feu. Mais je suivrai le projet avec intérêt.
De mon côté, j'ai fait mumuse avec le KNX BAOS 822, de chez Weinzierl, pour lequel j'ai développé une appli microython :
Ceci dit, je me demande s'il ne serait pas judicieux qu'un vrai projet libre voit le jour, en se basant sur les concepts du KNX qui font sa force, mais en laissant de côté les choses trop capilo-tractées, et en ciblant des installation domestiques, et non pas tertiaires/industrielles... Un truc à même d'être maîtrisé par un plus grand nombre de personnes, et qui ne demande pas de débourser 1k€ pour la config !
Si, tu peux coder avec la libAVR seulement, et télécharger le code via l'ISP. L'IDE Arduino compile en C++, donc c'est effectivement plus gourmand. D'autant que leurs libs sont avant tout faites pour être facilement accessibles à des débutants, et non pas là pour optimiser le code.
Oui il y a effectivement le BAOS de Weinzierl aussi. Pas évident de le trouver directement en ligne. Le seul site où j'ai pu le voir est sur http://www.my-knx-shop.net/Weinzierl-KNX...spberry-Pi
70€
Si le montage de philhp se limite à qq composants en plus de l'Atmega, ça doit revenir bien moins cher, mais l'avantage du BAOS c'est qu'il a une stack certifiée et il est prêt à l'emploi.
Concernant le langage proposé dans l'IDE Arduino, c'est un "pseudo" C et effectivement destiné à être accessible au plus grand nombre. Je suis parfois surpris de la place qu'il me reste dans l'Arduino après avoir compilé un petit programme avec les lib externes.
Mais bon, si on s'en tient à implémenter la stack KNX, ça devrait passer si tu es à 12ko actuellement en assembleur. D'ailleurs il me semble qu'il est possible d'insérer des lignes d'assembleur directement dans le code C de l'Arduino.
Pour la partie matérielle, le plus souple serait de proposer un "shield" pour l'Arduino, où on empile le circuit sur la carte Arduino. Il ne me semble pas que ça existe aujourd'hui directement.
En utilisation réelle, miniaturiser le montage est important histoire d'imaginer une solution encastrable. Il serait alors possible de se tourner vers un Arduino Pro Mini : https://www.arduino.cc/en/Main/ArduinoBoardProMini
Qq euros chez les chinois
J'ai regardé d'un peu plus prêt les solutions Arduino UNO :
- On peut compiler en C classique AINSI
- Quartz à 16Mhz , pas très grave on s'adaptera pour la conso.
- oui bonne idée un shield avec les quelques composants pour l'interface KNX.
oui on peut insérer de l'asm dans le code C si besoin.
l'ATMEGA sera comme un participant KNX ordinaire.
- avec un poussoir, une LED pour programmer son adresse sur le bus.
- Depuis ETS configurer les paramètres et ses objets.
J'ai eu les prix des module BAOS , les prix sont HT hors frais de livraison et dégressif par quantité.
Baos 830 : 35€, 31,38€/5
Baos 838 : 32€, 28,65€/5
Baos 838 kBerry : 48€, 42,61€/5
Baos 83x Chip : 120€ pour 10pieces.
C'est l'équivalent dun module 83x mais a intégré soit meme sur un montage.
Je vais commander un ou 2 Module 830 pour essayer et un kBerry, si jamais ca interesse plusieurs personne on peut faire une commande grouper
Pour qu'un fichier de participant s'importe dans ETS, il faut qu'il soit signé par l'asso KNX il me semble. C'est le principe de leur certification.
Comment vas-tu régler cette étape ?
(29/06/2016, 20:52:42)philhp a écrit : l'ATMEGA sera comme un participant KNX ordinaire.
- avec un poussoir, une LED pour programmer son adresse sur le bus.
- Depuis ETS configurer les paramètres et ses objets.
(28/06/2016, 16:10:26)philhp a écrit : oui j'ai le KNX Manufacturer Tool, Ce n'est pas la partie qui prend le plus de temps....
Avec le Manufacturer Tool , Je peux créer le fichier projet test et le déposer quelques part pour n’importe qui puisse l'utiliser avec ETS. Il n'y a rien qui l'interdit.
J'avais aussi l'intention de faire ce genre de projet...
J'était plutôt partit sur l'idée d'utiliser une carte Nucleo a base de STM32 (~10€).
Les possibilités sont beaucoup plus poussé, ARM 32bit, différente versions existent, de la L053R8 qui consomme très peu, a la grosse 411...
L'IDE est moins pratique que celui d'arduino, mais si le but est de se passer de l'IDE, et de codé en C, le monde ARM est quand même plus intéressant...
Par contre, c'est un poile plus complexe a programmer que de l'AVR... Y'a qu'a regarder la taille de la datasheet pour comprendre; mais ça permettrait de loger le BCU, et une grosse partie application sans problème.
Malheureusement, pour cette année, je n'aurais pas le temps de m'y investir (je suis en pleine construction, fin prévu pour Octobre 2016, en ensuite, j'ai prévu une partit soft (wandboard sous Yocto pour loger knxd/Lynknx/webknx2/onewire qui risque de me prendre encore pas mal de temps (4 ou 5 mois je pense)...).
Donc, je n'aurais surement pas de temps avant mi-2017...
Par contre, ce projet m’intéresse vraiment (j'ai une formation ingénieur électronique, mais je travail dans l'informatique embarqué, par contre, pas dans les micro-contrôleurs mais plus sur du Linux/ARMv7).
De mon coté je n'ai pas avancé, j'ai tout juste emménagé dans ma nouvelle maison, et malheureusement, j'ai pas beaucoup de temps a consacré a ce projet pour le moment, mais je m'y mettrais je pense, d'ici 1 ans...
26/08/2017, 05:44:43 (Modification du message : 26/08/2017, 05:46:47 par philhp.)
De mon cotés j'ai réalisé des prototypes qui sont actuellement en service chez moi
Pré-requis : avoir un Arduino Uno
Sur les photos, la zone qui n'est pas soudée , c'est la zone d'isolation galvanique (via opto-coupleur).
2 channels de sortie tout ou rien en 220V
En bas c'est pour des entrées (analogique) : reliées à un tore elles mesures le courant.
Dans ETS , je me suis pour l'instant mis des réglages "de base" qui me servent, je n'utilise pour l'instant qu'un Channel sur les deux dispo :
Intéressant en effet.
Je ne comprend pas toujours l'intérêt de le faire pour Arduino avec un code en C sans utilisation de librairies.
Je sais que c'est pour la taille, etc.
J'ai commencé la programmation des µC en 2001. A cette époque, on programmais en assembleur car on ne disposait que de quelques Ko de mémoire et qques octets de RAM.
Actuellement, il existe des CPU plus puissant ou il ne faut pas regarder à la consommation de mémoire.
La question intéressante, c'est la consommation. Avec ce critère, on ne peux effectivement pas partir sur n'importe quelle carte...
De mémoire, les MSP de Ti étaient réputé pour leur faible consommation.
Enfin soit.
Je vais suivre le projet de plus près. Cela pourrait m'être utile un jour ou l'autre.
Malheureusement, en tant qu'électronicien de formation, je n'ai jamais accroché à l'Arduino qui était trop simplifié. Je fais du PIC et de l'ARM.
Tant que j'y suis. Est ce vraiment prudent de miser sur une carte qui est faite pour les hobbyistes ? Le hardware n'a pas été conçu pour être fiable par tout temps...
Philhp, ou trouve-on les schema ? pour qque je me fassse un proto, car j'ai une imprimante 3D qui fait des PCB en moins de temps que les chinois lol.
PS : Jonathan007, tout dépend de comment ca été fait, j'ai fais y a 18ans un thermostat sans fil avec commande fil pilote pour mes parents (68hc11 et atmega) et il fonctionne toujours et jamais eu de réparation a faire dessus.