Go Down

Topic: le bus Rs485 dans la revue elektor (Read 2 times) previous topic - next topic

moustic

Depuis plusieurs mois la revue elektor publie une serie d'articles sur la creation d'un bus domotique sur RS485.
les premieres platines de test arrivent a base d'atmega88 et ecrit en BASCOM. j'aimerais bien faire ça sur arduino. quelqu'un a-t-il deja transfomre le code source bascom en arduino ? un idee pour faire un shield de test ?


zoroastre

Yep!

Ben il existe Bascom-avr, à priori compatible avec tous les avr.
Je n'ai jamais expérimenté bascom, par contre le rs485 est un bus trés interessant.

@+

Zoroastre.
Veuillez indiquer [RESOLU] dans l'entête du titre en éditant votre premier message ;)

chabot380

whouaou il m'a pris de vitessssssseee ! Zoroastre

c'est là : http://www.lextronic.fr/P317-compilateur-bascom-avr.html

@+
chabot380
ORDINAUSORE 2Ghz AMD64 QUI S'ALLUME EN 48 SECONDES AVEC UBUNTU 12.04
ARDUINO UNO / Shield Ethernet / RTC DS1307
Programmation Python et j'apprends le C
Technicien Télé Vidéo à la retraite.

moustic

ben oui j'avais deja trouve ça, mais je n'ai pas envie d'utiliser cela, c'est payant !!
je veux convertir leurs sources (gratuites, distribuables) en version arduino !
le rs485 me branche vraiment bien !

skywodd

Bonjour,

Convertir des sources du basic vers arduino ne demande pas trop de temps si on connait le langage basic.
Après il faut voir si tes sources utilisent des fonctions spécial là par contre ça peu devenir beaucoup plus compliqué.

Un exemple simple:
Code: [Select]

En basic :
For j=1 to 50
Print "bonjour"
Next

En c/c++ arduino :
for(int j=1; j <= 50; j++)
Serial.print("bonjour");
Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

ojal

Bonjour,

Juste en quelques lignes, quel potentiel / intérêt voyez-vous dans le bus RS485?
Ca va peut être me donner des idées  :)

zoroastre

#6
May 29, 2011, 06:06 pm Last Edit: May 29, 2011, 06:09 pm by zoroastre Reason: 1
Yep!

Pour te dire Ojal, je n'ai pas entrevue toutes les possibilités du bus rs485. Pour ma part, comme je l'ai signifié auparavant, je l'utilise pour piloter des cartes relais 8 canaux. J'en possède deux actuellement, adressables, ce qui me propose 16 relais pilotables par commandes sériels.
Je pense que pour peu que tu possèdes de sérieuses compétences en éléctronique, il doit être tout à fait faisable d'interfacer aussi bien avec des sondes qu'avec des modules de puissances.

Je remets le lien pour info : http://www.sigma-shop.com/product/47/rs485-8-channel-relay-controller-12vdc-rs485-bus-id-01-relays-1-8.html

L'énorme avantage du rs485 se situe principalement dans sa facilité de mise en oeuvre et la longueur de câble accéptable (environ 100 mètres, 1 km dans des cas spécifiques).

Tout est dit dans wikipedia : http://fr.wikipedia.org/wiki/EIA-485

@+

Zoroastre.
Veuillez indiquer [RESOLU] dans l'entête du titre en éditant votre premier message ;)

ojal

Je n'utilise pas beaucoup de bus... J'ai pour l'instant utilisé un bus que j'ai trouvé très satisfaisant le OneWire
http://fr.wikipedia.org/wiki/1-Wire
C'était pour des capteurs de température et j'ai lu que les distances pouvaient être de plus de 100m, 300m de mémoire....

Je vais regarder ce RS485  :)

zoroastre

#8
May 29, 2011, 07:47 pm Last Edit: May 29, 2011, 07:50 pm by zoroastre Reason: 1
Yep!

Effectivement le one-wire est trés satisfaisant également, mais celui ci supporte plutôt des sondes d'acquisitions. Je n'ai pas trop cherché mais je n'ai pas vu de système one-wire pilotant un moteur, relais ou autre. Quoique cela doit être possible également...
Pour conclure, j'utilise le one-wire en acquisition et le rs485 pour piloter mes 16 relais ;)

Pour revenir au sujet, si bascom n'est pas libre, il n'a aucun interêt (je précise que je suis un dévian debianiste acharné), tout du moins si tu ne maitrises pas le langage (facile à priori). Il vaut mieux apprendre le c++, le python, le java, le perl, pour citer les plus à la mode  :D
D'ailleurs, le choix du c/c++ pour une plateforme est indéniablement le meilleur.

@+

Zoroastre.
Veuillez indiquer [RESOLU] dans l'entête du titre en éditant votre premier message ;)

moustic

pour ceux qui connaissent bascom , je cherche l'equivalent de ce code en C

ca concerne une interruption sur le port serie, mais je ne vois pas comment faire ça avec l'arduino :

Code: [Select]

On Urxc Onrxcomplete
Enable Urxc
Enable Interrupts

...

Onrxcomplete:                                               ' Interrupt: all incoming bytes

   B = Udr                                                  ' get value of this byte

   If B = 170 Then                                          ' Startbyte
      I = 1                                                 ' first position in ElektorMessageProtocol

   Else
      Incr I                                                ' next Position
...

fdufnews

Les interruptions série sont gérées par la librairie Serial qui lit les caractères reçus et les place dans un buffer de réception.
Tu pourrais émuler un fonctionnement proche de cette routine en utilisant Serial.available() dans loop() ou dans une portion de ton code qui est parcourue assez régulièrement.

Code: [Select]
void loop(void(){
   if Serial.available(){
       b=Serial.Read();         // ou Serial.peek() si tu ne veux pas dépiler le caractère de la file de réception
       if (b==170){
            i=1;
       }else{
           i++;
       }
   }
   ......
}

Go Up