Note de ce sujet :
  • Moyenne : 5 (1 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Projet communautaire Arduino ATMEGA KNX
#1
Bonjour à tous,


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 ? Smile )


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 )





Pièces jointes Miniature(s)
   
Répondre
#2
Salut,

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...)
Répondre
#3
(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.



Répondre
#4
Ben, si l'idée est de porter ça sur Arduino, il s'agira de l'IDE associé, avec un code type C...
https://www.arduino.cc/en/Reference/HomePage
Répondre
#5
Bô projet !

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 :

https://github.com/fma38/micropython/tree/master/baos

Je songe en fait à le coupler à un Pi zero, pour en faire un petit device KNX musclé.

Sinon, pour les Pi sous forme de shield, il y a donc le Eelectron, cité plus haut :

http://www.eelectron.com/prodotto/raspbe...e/?lang=en

mais il y en a un aussi chez Weinzierl, justement :

http://www.weinzierl.de/index.php/en/all...ule-838-en

Du coup, y'a vraiment de quoi faire !

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 !
Répondre
#6


Pour l'interface entre l'ATMEGA et le KNX : 2 transistors et une poignée de résistances et le tour est joué.


C'est le code du ATMEGA qui s'occupe de tout ...
la code doit être "au petit oignons" si on veut implémenter toutes les specs KNX

J'ai regardé d'un peu plus prêt l’Arduino :
c'est un quartz à 16Mhz , tant pis , pas grave ça consommera un peu plus sur le bus.


Y a pas moyen de le programmer en C classique ?
IDE avec leurs pseudo C , ça me fait peur pour l'optimisation et taille du code compilé.

au pire il peut servir de programmateur ISP pour flash un ATMEGA pcb custom ou platine de test.

Répondre
#7
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.
Répondre
#8
FMA : Tu connais le prix du module : KNX BAOS Modul 838 kBerry ?



Répondre
#9
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

Répondre
#10

Entièrement d'accord :

J'ai regardé d'un peu plus prêt les solutions Arduino UNO :
- On peut compiler en C classique AINSI Smile
- 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.



Je commence à partir la dessus !
Répondre
#11
L'ideal, serait de créer une lib arduino avec la stack KNX.
Cette lib peut etre en C rempli d'assembleur.

Pour les utilisateur, avoir acces a cette lib via une api relativement simple.

Répondre
#12
Super projet philhp!
Se fabriquer un participant KNX en démarrant de zéro : chapeau!

La prog en C, je passe mon tour mais je vais suivre ça de prêt.
Du coup comment l'atmega est déclaré sur ETS?
Répondre
#13

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.

Répondre
#14
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 Idea
Répondre
#15
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.

Répondre
#16
(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.

Répondre
#17
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).
Répondre
#18
Bonjour

Je reviens sur ce sujet, car je dois faire un petit produit en KNX.
Le projet a-t-il évolué ou abandonné ?

Merci
Répondre
#19
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...
Répondre
#20
De mon cotés j'ai réalisé des prototypes qui sont  actuellement en service chez moi

Pré-requis : avoir un Arduino Uno  Smile

               


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 :
         
Répondre
#21
Tu fais sa dans le but de commercialiser le shield ?
KNX Partner Base / Avancé
Répondre
#22
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...
Répondre
#23
Bonjour

Cool je vois que ca avancé Smile

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.

Merci
Répondre
#24
(27/08/2017, 09:09:50)cyberdam a écrit : j'ai une imprimante 3D qui fait des PCB en moins de temps que les chinois lol.

Interessant ca , C'est quoi comme le modele d'imprimante ? Ca coute combien
KNX Partner Base / Avancé
Répondre
#25
c'est la Voltera One, ca coute cher environ 2000€
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)