Guide de domotique avec Raspberry Pi et Arduino

Guide de domotique avec Raspberry Pi et Arduino / Maison intelligente

Nous avons déjà parlé des mérites relatifs d’Arduino et de Raspberry Pi, chacun ayant ses points forts. Ils n’ont pas besoin d’être un choix ni un choix: combinez-les pour obtenir le meilleur des deux mondes. La domotique est le candidat idéal pour cela. Le marché de la domotique est inondé de systèmes grand public coûteux, incompatibles entre eux et coûteux à installer. Si vous possédez un Raspberry Pi Raspberry Pi: le didacticiel non officiel Raspberry Pi: le didacticiel non officiel Que vous soyez un propriétaire actuel de Pi qui souhaite en savoir plus ou un propriétaire potentiel de cet appareil de la taille d'une carte de crédit, il ne s'agit pas d'un guide vouloir manquer. En savoir plus et sur un Arduino, vous pouvez en principe obtenir la même chose à un prix bien inférieur au prix coûtant, à condition que vous soyez prêt à y consacrer du temps et des efforts..

Mise à jour: Depuis la rédaction de cet article, j'ai découvert OpenHAB, une plate-forme domotique gratuite et à code source ouvert qui fonctionne sur Raspberry Pi et peut être intégrée à une vaste gamme de kits pour la maison intelligente et d'Arduino. Regardez la vidéo ci-dessous pour un aperçu, puis passez à la section Mise en route d'OpenHAB sur Raspberry Pi Initiation à OpenHAB Home Automation sur Raspberry Pi Mise en route d'OpenHAB Home Automation sur Raspberry Pi OpenHAB est une domotique mature et open source. Plate-forme qui fonctionne sur une variété de matériel et est indépendante du protocole, ce qui signifie qu'elle peut se connecter à presque n'importe quel matériel de domotique actuellement disponible sur le marché. Lire plus guide pour en savoir plus.

Heimcontrol.js est une application Node.js conçue pour fonctionner sur Raspberry Pi. Associé à un Arduino et à quelques prises de télécommande, il facilite le contrôle des appareils AC. Vous pouvez ajouter des capteurs de température et même contrôler votre téléviseur - mais nous allons garder les choses de base aujourd'hui et étendre le projet dans un prochain tutoriel..

Voici une ventilation du projet:

  • Le Raspberry Pi agira comme le cerveau et la passerelle des opérations: il exécutera une application Node, liée à une base de données Mongo, et servira l'interface frontale à tout navigateur Web..
  • Un Arduino, alimenté par le Pi, servira d'interface entre l'électronique - commutateurs d'alimentation à commande radio, pour l'instant.

Pour ce faire, vous aurez besoin de:

  • Arduino et un Raspberry Pi
  • Quelques prises et contrôleurs télécommandés (je les ai utilisés)
  • Hub USB alimenté

Avant de commencer, voici une vidéo de démonstration du créateur du projet lui-même..

Recommence

Nous allons utiliser Raspian pour ce projet. 11 Systèmes d'exploitation compatibles Raspberry Pi. 11 Systèmes d'exploitation compatibles Raspberry Pi. Le matériel de Raspberry Pi n'est que l'un des côtés de la médaille. Voici différents systèmes d'exploitation Raspberry Pi que vous pouvez installer. Lisez la suite et je vous suggère fortement de commencer à partir d'une nouvelle installation si vous avez déjà effectué d'autres piratages et autres. Téléchargez la dernière image Raspian, copiez-la sur votre carte SD et veillez à développer le système de fichiers et à activer SSH. Le reste de ce guide supposera que vous l’avez déjà fait et que vous vous connectez via SSH avec l’utilisateur par défaut..

Si vous ne l'avez pas déjà fait auparavant, cette vidéo explique le processus de préparation de votre carte SD sous OS X:

Et celui-ci pour les utilisateurs Windows:

Préparation

Le processus d'installation est assez laborieux et est dérivé des instructions fournies ici. Malheureusement, ceux-ci étaient obsolètes ou non conçus pour Raspian, je les ai donc fortement ajustés ci-dessous. Les codes ci-dessous peuvent généralement être collés par blocs - vous ne devez pas les coller un par un. Puisque nous sommes en train de compiler quelques choses sur le Pi lui-même, sachez que tout ce processus prendra du temps. Je dirais que tu vas te préparer une tasse de thé - mais quand je dis un “Longtemps”, Je veux dire la meilleure partie de la journée - donc 178 tasses seraient plus appropriées.

Toutes les commandes doivent être saisies dans le terminal et vous devrez peut-être appuyer sur la touche Entrée à certains moments. Ces premières commandes vont mettre à jour le système et installer les pré-requis:

sudo apt-get mise à jour sudo apt-get mise à jour sudo apt-get installer git-core git scons scons build-essential libpcre ++ - dev xulrunner-dev libboost-dev libboost-programme-options-dev libboost-thread-dev libboost-file-system-dev 

Ensuite, nous devons installer Node:

sudo mkdir / opt / node wget http://nodejs.org/dist/v0.10.2/node-v0.10.2-linux-arm-pi.tar.gz tar xvzf node-v0.10.2-linux-arm-pi. tar.gz sudo cp -r noeud-v0.10.2-linux-arm-pi / * / opt / noeud sudo ln -s / opt / noeud / bin / noeud / usr / local / bin / noeud sudo ln -s / opt / node / bin / npm / usr / local / bin / npm 

Ajoutez une variable PATH à votre profil pour que le système d'exploitation sache où se trouve le nœud. Utilisez l'éditeur de texte nano comme suit:

sudo nano / etc / profile 

Localisez la ligne qui dit chemin d'exportation et le remplacer par:

NODE_JS_HOME = "/ opt / node" PATH = "$ PATH: $ NODE_JS_HOME / bin" chemin d'exportation 

Appuyez sur Ctrl-X pour quitter et sur Y pour enregistrer..

Vous devrez peut-être vous déconnecter et vous reconnecter pour que les modifications de chemin prennent effet, mais vous pouvez tester avec la commande:

quel noeud 

Si vous n'obtenez aucune sortie pointant vers le binaire Node, une erreur s'est produite..

Mongo

Le prochain travail consiste à installer Mongo. Mongo est une base de données No-SQL basée sur les documents de plus en plus utilisée par les applications Web. Malheureusement, cela prendra une éternité à installer car nous devons le compiler. En exécutant les commandes suivantes, vous obtiendrez de nombreuses erreurs, telles que:

entrée standard: 13085: Avertissement: l'utilisation de swp b est déconseillée pour cette architecture. 

Ne t'inquiète pas pour ça. Alors, lancez ces commandes pour installer Mongo:

git clone git: //github.com/RickP/mongopi.git cd mongopi scons sudo scons --prefix = / opt / mongo installe scons -c 

Lorsque cela est terminé, nous avons d’abord besoin d’un peu plus de configuration pour résoudre les problèmes d’autorisation et pour nous assurer qu’elle s’exécute au démarrage..

sudo useradd mongodb sudo mkdir / data / dbb sudo chown $ USER / data / db cd /dit.d .sh sudo chmod + x mongodb sudo update-rc.d mongodb par défaut mongod

Cette dernière commande lancera le serveur Mongo et vous devrez ouvrir un nouveau terminal pour continuer avec les autres commandes. Je ne suis pas tout à fait sûr de cette étape, donc si quelqu'un peut corriger cela dans les commentaires sur la manière de lancer automatiquement mongod au démarrage, ce serait très apprécié. Pour l'instant, ça marche, mais pas élégamment.

sudo shutdown -r now

Enfin, il est temps d'installer l'application Heimcontrol.js Node.

cd ~ pi git clone git: //github.com/ni-c/heimcontrol.js.git cd heimcontrol.js npm installer 

Vous pouvez commencer à exécuter l'application en tapant

 noeud heimcontrol.js 

À ce stade, vous devriez pouvoir accéder à l’interface de contrôle avec http: // localhost: 8080 depuis le Pi, ou remplacez localhost par l'adresse IP si vous y accédez depuis un autre ordinateur (et vous pouvez également configurer le transfert de port. Qu'est-ce que la redirection de port et comment peut-il m'aider? [MakeUseOf Explains] Qu'est-ce que la redirection de port & Comment peut-il m'aider? [MakeUseOf explique] Pleure-tu un peu à l'intérieur quand quelqu'un te dit qu'il y a un problème de transfert de port et que c'est pour cela que ta toute nouvelle application ne fonctionne pas? Ta Xbox ne te laissera pas jouer, tes téléchargements torrent refuser… Lire la suite pour pouvoir y accéder depuis n'importe où dans le monde), je vous encourage donc à fouiller et à vérifier que tout fonctionne avec la base de données avant de connecter l'Arduino.

Matériel

Finalement, je voudrais un relais câblé, mais pour le moment, j'utiliserai l'option plus sûre des commutateurs radiocommandés..

J'ai utilisé des ensembles raisonnablement bon marché de Maplin, à 20 £, livrés avec 3 prises, et j'ai ouvert la télécommande pour que je puisse me connecter directement à la puce 433 MHz à l'intérieur. J'ai trouvé les instructions pour cela ici.

Vous pouvez également acheter des émetteurs individuels 433 MHz prêts à être utilisés sur eBay ou auprès de fournisseurs d'électronique grand public. Tout ce dont vous avez besoin est de connecter le VCC à 5 V sur l’Arduino, aux GND et à une seule broche de commande - rappelez-vous celle que vous avez utilisée. (Schéma de Willi Thiel)

Le plugin fonctionne en envoyant “codes de trois états”, mais ceux-ci varient selon le fabricant. Reportez-vous à la documentation de RCSwitch pour trouver vos codes exacts. Ce guide wiki peut aussi aider.

La communication avec l’Arduino est réalisée à l’aide d’une bibliothèque de nœuds appelée duino. Arrêtez l'application Heimcontrol si elle est en cours d'exécution et installez le pont Arduino à l'aide de la commande suivante.

npm installer duino 

Ce code doit être téléchargé sur l’Arduino - je vous suggère de le copier-coller pour l’installer à partir d’un autre ordinateur. Il s'agit essentiellement d'un programme d'écoute qui répond aux commandes série du Pi, mais rien ne vous empêche de l'étendre avec vos propres fonctionnalités..

Avec l'application Web lancée, accédez à la Réglages menu> Arduino.

À partir de là, vous pouvez ajouter un nouvel élément en choisissant la méthode RCSwitch, la broche de votre émetteur et le code d’adresse à trois états. N'oubliez pas de sauvegarder, puis revenez à l'écran principal pour votre nouveau bouton.

Bogues:

Après plusieurs heures de débogage du code, j’ai constaté que les codes confidentiels à un chiffre ne fonctionnaient pas - assurez-vous que votre émetteur est placé sur le code confidentiel. dix être sur.

J'ai aussi constaté que le plugin Arduino était codé en dur avec des bits finaux incorrects pour les codes à trois états dont mes récepteurs avaient besoin. Une petite explication d’abord: les codes à trois états consistent en 3 octets d’information. Le premier nous détermine le numéro de réseau (1-4), et le second fournit l'adresse de l'émetteur-récepteur (à nouveau, 1-4, produisant un maximum de 16 sockets adressables). L'octet final est composé de deux bits de remplissage et de 2 bits pour l'activation / la désactivation. Malheureusement, le dernier octet est codé en dur dans le plugin Arduino - et dans mon cas, le code d'activation / désactivation était incorrect.

Je devais éditer manuellement le plugins / arduino / index.js utiliser les codes corrects. Si vous utilisez les mêmes prises de télécommande que moi, changez les lignes 80 à:

// Envoie le code RC si (item.value) return that.pins [item.pin] .triState (item.code + "FFFF"); // change de FF0F else return that.pins [item.pin] .triState (item.code + "FFF0"); // changement de FF00

Voici une vidéo de démonstration de tout ce qui fonctionne:

Je vais en rester là pour l'instant, mais les lectures de capteurs et les télécommandes infrarouges sont également prises en charge. Je reviendrai probablement sur ceux-ci à une date ultérieure avec quelques améliorations supplémentaires. Si tout cela vous a semblé un peu trop complexe, consultez peut-être ces projets Arduino adaptés aux débutants. 15 Grands projets Arduino pour les débutants 15 Grands Projets Arduino pour les débutants Intéressé par Arduino mais vous ne savez pas par où commencer? Voici quelques-uns de nos meilleurs projets Arduino pour les débutants! Lire la suite .

.