Alors voila,
je voudrais m'amuser un peu dans la domotique et je me verrais bien utiliser des Arduinos dans chaque pièce pour commander les ampoules, le thermostat, des prises, bref, du basique domotique on/off.
J'aimerais bien pouvoir piloter et communiquer avec ces Arduinos à distance, je me disais que passer par leur port USB était une bonne idée en utilisant le bus série.
Dans les faits on aurait un Arduino par pièce, tous reliés au serveur central par un câble USB. Le serveur serait du type RPi ou autre donc évidemment on utilisera un hub USB avec une alimentation externe, et des câbles USB active extension pour éviter de perdre des données vu que les câbles seront plutôt longs.
Pour la partie logicielle, il est aisé de lire/écrire sur le bus USB, il est aisé de faire une application web qui aurait des boutons, des interrupteurs, etc.
Mais c'est la partie entre les deux que je n'ai pas encore bien conçue dans ma tête.
Je verrais bien une sorte de serveur, écrit en C par exemple qui irait communiquer avec les Arduinos par l'USB, mais je verrais bien ce serveur communiquer avec le monde par une API REST par exemple via un serveur web qu'il implémenterait.
Wikipedia me parle par exemple de gSOAP ou Axis2, mais mon intuition me dit que je vais dans la mauvaise direction…
Bref, vous feriez comment pour créer efficacement une API REST à une application ?
# USB ?
Posté par ElectronLibre63 . Évalué à 2.
De mémoire (mais je pense que tu t'es déjà renseigné de ton côté), l'USB c'est 5 m maxi. Avec les câbles USB active extension tu peux augmenter la distance, mais ça ne me semble pas top (ni pour le coût — achat et consommation — ni pour la fiabilité). Tu devrais peut-être avant de te lancer, réfléchir au bus le plus adapté à tes besoins.
Bonne chance, car c'est un projet intéressant.
[^] # Re: USB ?
Posté par Babelouest (site web personnel) . Évalué à 1.
Merci, je table pour de l'USB pour l'instant parce que ca m'a l'air le plus adapté aux contraintes que je voudrais m'imposer: fiable, pas cher et avoir le serveur dans une pièce tandis que les arduinos sont dans d'autres pièces.
Bien que je passerais par les câbles USB, je ne serais pas très gourmand en bande passante, même l'USB 1.1 m'a l'air déjà trop rapide pour ce que je veux faire passer comme données. Donc je validerai ma théorie avec un câble USB active extension qu'on peut mettre en série, jusqu'à 25m me disent les internets.
J'aurai besoin de moins que ca visiblement mais c'est bon à savoir.
[^] # Re: USB ?
Posté par freem . Évalué à 1.
Pour communiquer avec des appareils sur la distance, je crois que d'habitude on utilise des câbles ethernet. Après, rien ne t'empêche de les utiliser pour autre chose que le protocole tcp/ip. Ni de faire un adaptateur usb/rj45 pour ne pas avoir à modifier le câble ou l'arduino.
# Module wifi ou bus de type CAN ou mieux adapté à la domotique ?
Posté par totof2000 . Évalué à 2.
Tu devrais peut-être passer par du wifi, du CPL (mais un peu cher à mon gout) ou par un bus de type CAN par exemple.
Pour un module CAN : http://lnxpps.de/rpie/
Un module tout fait, mais un peu cher : http://skpang.co.uk/catalog/pican-canbus-board-for-raspberry-pi-p-1196.html
Il y a peut-être des bus qui seraient un peu mieux adaptés à ton besoin
(exemple : http://djynet.net/?p=185).
[^] # Re: Module wifi ou bus de type CAN ou mieux adapté à la domotique ?
Posté par Babelouest (site web personnel) . Évalué à 2.
Le X10 a l'air intéressant mais pour des raisons de pingrerie, je voudrais d'abord utiliser le minimum de matériel et me baser sur la prise USB de l'Arduino que j'utiliserais en bus série pour communiquer avec le serveur, j'ai pas envie d'acheter un module supplémentaire par Arduino si je peux me l'éviter.
Je garde tes liens sous le coude au cas où je me suis lourdement trompe ! :)
[^] # Re: Module wifi ou bus de type CAN ou mieux adapté à la domotique ?
Posté par totof2000 . Évalué à 2.
Entre le cout des cables USB (longs ?) , du hub, la mise en place, etc …. au final ça risque de revenir cher. Sinon que veux-tu dire par "baser sur la prise USB de l'Arduino que j'utiliserais en bus série pour communiquer avec le serveur" ? J'ai un peu de mal à comprendre ce que tu veux faire en fait.
Sinon si tu tiens absolument à mettre des cables, il y a aussi modbus; Je me souviens l'avoir utilisé durant mes études : ce n'est pas très complexe à utiliser, il me semble que nous utilisions une liaison RS485. Et tu peux trouver des transceivers pour pas cher
Mais bon, à toi de voir.
[^] # Re: Module wifi ou bus de type CAN ou mieux adapté à la domotique ?
Posté par Babelouest (site web personnel) . Évalué à 2.
À un Arduino par pièce, le prix peut monter très vite si je rajoute des modules supplémentaires genre ethernet, je vois des prix qui me rebutent, genre 30e ou plus pour l'ethernet shield. Ca peut rajouter des fonctionnalités intéressantes mais peut-être overkill dans mon cas.
L'avantage de l'USB c'est que les composants sont quand même répandus et peu chers, je vois des cables usb active extension de 5 voire 10m pour 10$.
Un hub avec alim externe j'en ai acheté un sur ebay à 15$ qui fait du 2A, et il marche très bien.
D'autres ont mentionné l'I2C et effectivement ca mérite d'être creusé aussi, ca pourrait résoudre le problème plus facilement.
Je vois que la norme RS485 permet de transmettre des données série sur de longues distances, un shield arduino rs485 coute peu, et si ca veut dire que j'ai juste à tirer des câbles standards d'une pièce à l'autre, en utilisant la transmission série de base dans l'arduino, j'aime autant.
Bref, je ne suis pas arrêté sur la solution (sinon je ne serais pas venu demander de l'aide ici ;) ) mais je sais à peu près ce que je veux au final, mais continuez à me soumettre des idées, je suis preneur !
[^] # Re: Module wifi ou bus de type CAN ou mieux adapté à la domotique ?
Posté par totof2000 . Évalué à 2.
A mon avis le choix du bus n'est pas anodin, et tu devrais te poser la question suivante :
- est-ce que les équipements sur le bus auront besoin d'émettre des messages sans forcément être interrogés par le maitre, et sui les esclaves devront dialoguer entre eux.
Si c'est oui, il vaut mieux passer par un bus de type CAN qui n'a pas de principe maître/esclave, mais tout le monde peut émettre des messages sur le bus. L'inconvénient, c'est un peu plus cher. l'avantage ; tu n'as pas à te prendre la tête avec des histoires de maitre/esclave et tout le monde peut communiquer avec tout le monde.
Dans le cas d'un bus maître/esclave, il te faudra pooler sans cesse les équipements de ton bus. Le bus I2C a un mode multimaitre mais tu ne peux pas multiplier les maitres à l'infini, et je ne me rappelle plus comment se passe le dialogue de maître à maitre (ni même si c'est possible) : je vais voir si j'ai encore des docs sur le sujet. Pour le modbus, il y a un seul maître de bus me semble-t-il.
Dans le cas ou tu as un seul maitre et des esclaves qui doivent discuter entre eux, il te faudra gérer la communication entre esclaves. Il me semble que durant mes études, j'avais fait un TP comme ça sur Modbus, avec un protocole à base de jeton que le maître envoyait tour à tour à chaque esclave (le maitre ne faisait que ça, gestion des communications et non-réponse des esclaves). Chaque esclave répondait au maître en supprimant les messages qui lui étaient destinés et en ajoutant ceux qu'il voulait ajouter à destination des autres esclaves. Je pense que ce genre de protocole sera difficile à réaliser avec I2C, ou les messages échangés sont plus ou moins imposés par l'état des composants sur le bus.
[^] # Re: Module wifi ou bus de type CAN ou mieux adapté à la domotique ?
Posté par Babelouest (site web personnel) . Évalué à 1.
Dans mon idée, le modèle maitre/esclave est le plus probable parce que les arduinos ne feront que répondre à des requêtes de la part du serveur.
"allume telle lampe", "coupe telle prise", "quelle est la température courante ?", "quel est l'état de tel lampe ?"
De fait, la bande passante ne risque pas d'être énorme, donc je ne cherche pas un bus avec un débit de fou.
Le bus USB (bonjour le syndrome RAS !) me plaisait au début mais je commence à pencher vers l'I2C maintenant, dans le sens où c'est un protocole fait pour ca, et qui est présent dans l'Arduino et aussi sous linux, je n'aurais probablement pas trop de problèmes à l'implémenter.
Bon comme j'en suis à la phase de conception, je vais peut-être essayer plusieurs solutions pour la preuve de concept dans mon
laboratoirebureau et je verrai bien.[^] # Re: Module wifi ou bus de type CAN ou mieux adapté à la domotique ?
Posté par Mali (site web personnel) . Évalué à 2.
l'i2c n'est pas conçu pour de longues distances et commencera à devenir capricieux au dessus de quelques mètres (quelques pouvant aller de 2 à 5 ou 6 si tu as de la chance).
[^] # Re: Module wifi ou bus de type CAN ou mieux adapté à la domotique ?
Posté par Babelouest (site web personnel) . Évalué à 2.
Pas exactement, i2c est sur la couche liaison du modèle OSI, c'est la couche physique qui limite la longueur du câble.
Apparemment une liaison rs485 permet de couvrir de longues distances pour ces cas d'utilisation. Donc en combinant i2c/rs485 on pourrait y arriver…
[^] # Re: Module wifi ou bus de type CAN ou mieux adapté à la domotique ?
Posté par totof2000 . Évalué à 3.
Peux-tu m'expliquer comment tu interfacerais de l'I2C sur du RS485? C'est une vraie question.
[^] # Re: Module wifi ou bus de type CAN ou mieux adapté à la domotique ?
Posté par totof2000 . Évalué à 3.
Je me réponds à moi-même (j'aurais du commencer par là) :
http://www.eletronica.org/modules.php?name=News&file=print&sid=139
[^] # Re: Module wifi ou bus de type CAN ou mieux adapté à la domotique ?
Posté par Babelouest (site web personnel) . Évalué à 1.
Par exemple, mais j'ai vu aussi des shields RS485 pour l'Arduino et le Rpi à 10$ chacun…
[^] # Re: Module wifi ou bus de type CAN ou mieux adapté à la domotique ?
Posté par totof2000 . Évalué à 2.
Ces shields doivent être basés sur le même principe. Et c'est sur le principe surtout que ma question portait.
[^] # Re: Module wifi ou bus de type CAN ou mieux adapté à la domotique ?
Posté par Mali (site web personnel) . Évalué à 1.
Ok, autant pour moi, je ne connaissais pas ces i2c-extender
# CPL
Posté par NeoX . Évalué à 2.
apres tout, tes appareils seront tous connectés à l'electricité, ne serait-ce que pour les alimenter et alimenter l'ampoule, le chauffage, etc.
du coup le CPL prend tout son interet, le reseau se fait en utilisant les fils electriques, et ensuite ca communique par IP.
[^] # Re: CPL
Posté par Babelouest (site web personnel) . Évalué à 1.
J'ai pensé aussi au CPL mais l'Arduino perd tout son intérêt, dans ce cas, autant utiliser un Raspberry Pi par pièce et y collant un dongle WiFi.
Je voudrais justement éviter les réseaux pensés pour l'informatique mais pas pour l'embarqué à petit débit, les bus CAN, je vais tenter le coup avec le bus USB dans un premier temps.
Merci pour vos réponses et votre aide !
# Bus I2C
Posté par niclone (site web personnel) . Évalué à 2.
Peut être le plus simple est de faire de l'I2C ?
http://www.instructables.com/id/I2C-between-Arduinos/
Avec des câbles cat 5e, tant qu'a faire, c'est pas cher, et peut être réutilisé autrement.
[^] # Re: Bus I2C
Posté par totof2000 . Évalué à 3.
Personnellement je n'utiliserais pas I2C sur ce genre d'application, je passerais plutôt par Modbus ou CAN.
# Voila un lien qui ...
Posté par Christophe B. (site web personnel) . Évalué à 4.
Voici un lien qui devrait intéresser :
MC Hobby
En plus MC Hobby est une boutique Belge qui a le mérite de mettre en Wiki ENORMEMENT d'informations sur le monde RASPBERRY ARDUINO imprimante 3D etc …
J'ai beaucoup appris sur leur site.
Et je préfères de loin acheter chez eux car je sais que j'aurais une doc et une procédure explicite.
Ensuite une appli REST en C … brrrr … code en python tu iras plus vite
surtout que tu penses pas atteindre les centaine de connexions / heures :)
[^] # Re: Voila un lien qui ...
Posté par totof2000 . Évalué à 3.
+1 pour le site, je ne connaissais pas …
[^] # Re: Voila un lien qui ...
Posté par Christophe B. (site web personnel) . Évalué à 1.
Voici 2 autres sites plus orientés Raspberry mais ARDUINO + RASPBERRY sont complémentaire
le mien : Blog de Sysadmin qui fait mets à l'électronique comme quoi c'est pas toujours facile l'électronique.
Ce forum RaspFR ou j'ai trouvé de bon conseils
Voila
Amusez vous bien.
# RFduino, des Arduinos avec du Bluetooth 4
Posté par palm123 (site web personnel) . Évalué à 2.
http://www.rfduino.com/
et les forums
http://forum.rfduino.com/
ウィズコロナ
# API REST
Posté par max22 . Évalué à 4.
Pour coder rapidement une API REST, il y a :
sinatra (en ruby):
flask (en python):
il y en a surement d'autres, et dans d'autres langages, mais je ne connais que ceux là.
pour l'usb il y a ce qu'il faut en python et ruby aussi. et puis si tu ne connais pas le python, ou le ruby, dans 1 semaine ou 2 tu connaîtras. Pour gSOAP, j'ai aussi l'impression que ce n'est pas la bonne direction, mais je ne connais pas.
Ah et puis sinon, on peut avoir des échantillons gratuits de atmega328 (le microcontroleur qu'il y a sur l'arduino) chez le fabricant (atmel), mais il faut une adresse pro. ça permet d'éviter d'acheter plusieurs arduinos, c'est plus petit, mais c'est moins "convivial".
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.