Publicité

Nous avons déjà parlé des mérites relatifs d'Arduino et de Raspberry Pi - ils ont chacun leurs points forts. Ils n'ont pas besoin d'être un choix ou un choix - combinez-les pour tirer le meilleur parti 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 avez un Raspberry Pi Raspberry Pi: le tutoriel non officielQue vous soyez un propriétaire Pi actuel qui veut en savoir plus ou un propriétaire potentiel de cet appareil de la taille d'une carte de crédit, ce n'est pas un guide que vous voulez manquer. Lire la suite et un Arduino, vous pouvez essentiellement réaliser la même chose à une fraction du prix, en supposant que vous êtes prêt à consacrer du temps et des efforts.

Mise à jour: depuis la rédaction de cet article, j'ai découvert OpenHAB, une plateforme domotique gratuite et open source qui fonctionne sur Raspberry Pi et peut être intégré à une vaste gamme de kit de maison intelligente sur étagère ainsi que Arduino. Regardez la vidéo ci-dessous pour un aperçu, puis dirigez-vous vers notre

instagram viewer
Premiers pas avec OpenHAB sur Raspberry Pi Premiers pas avec OpenHAB Home Automation sur Raspberry PiOpenHAB est une plate-forme domotique open source mature qui fonctionne sur une variété de matériel et est indépendant du protocole, ce qui signifie qu'il peut se connecter à presque n'importe quel matériel domotique du marché aujourd'hui. Lire la suite guide pour en savoir plus.

Heimcontrol.js est une application Node.js conçue pour fonctionner sur Raspberry Pi. Combiné à un Arduino et à certaines prises de télécommande standard, il facilite le contrôle des appareils CA. Vous pouvez ajouter des capteurs de température et même contrôler votre téléviseur, mais nous garderons les choses de base aujourd'hui et étendrons le projet dans un didacticiel ultérieur.

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 d'interface frontale à n'importe quel navigateur Web.
  • Un Arduino, alimenté par le Pi, fera l'interface entre l'électronique - les commutateurs d'alimentation de la commande radio, pour l'instant.

Pour ce faire, vous aurez besoin de:

  • Arduino et un Raspberry Pi
  • Quelques prises télécommandées et contrôleur (j'ai utilisé celles-ci)
  • Concentrateur USB alimenté
Prises RC

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 qui fonctionnent sur votre Raspberry PiQuel que soit votre projet Raspberry Pi, il existe un système d'exploitation pour cela. Nous vous aidons à trouver le meilleur système d'exploitation Raspberry Pi pour vos besoins. Lire la suite , et je vous suggère fortement de partir d'une nouvelle installation si vous avez déjà effectué d'autres hacks et autres. Téléchargez la dernière Image raspian, copiez-le sur votre carte SD et assurez-vous d'étendre le système de fichiers et d'activer SSH. Le reste de ce guide supposera que vous l'avez fait et que vous vous connectez via SSH en utilisant l'utilisateur par défaut.

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

Et celui-ci pour les utilisateurs de Windows:

Préparation

Le processus d'installation est assez laborieux et dérive de la instructions 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 dans des blocs - vous n'avez pas besoin de les coller un par un. Étant donné que nous compilons quelques éléments sur le Pi lui-même, sachez que tout ce processus prendra beaucoup de temps. Je dirais que vous allez vous faire une tasse de thé - mais quand je dis «longtemps», je veux dire la meilleure partie d'une 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 Entrée à certains moments. Ces premières commandes mettront à jour le système et installeront les prérequis:

mise à jour sudo apt-get mise à niveau sudo apt-get. sudo apt-get install git-core git scons build-essential scons libpcre ++ - dev xulrunner-dev libboost-dev libboost-program-options-dev libboost-thread-dev libboost-filesystem-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 node-v0.10.2-linux-arm-pi / * / opt / node. sudo ln -s / opt / node / bin / node / usr / local / bin / node. sudo ln -s / opt / node / bin / npm / usr / local / bin / npm. 

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

sudo nano / etc / profile. 

Localisez la ligne qui dit export PATH et remplacez-le par:

NODE_JS_HOME = "/ opt / node" PATH = "$ PATH: $ NODE_JS_HOME / bin" export PATH.

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 nœud. 

Si vous n'obtenez aucune sortie pointant vers le binaire Node, quelque chose s'est mal passé.

Mongo

La prochaine tâche consiste à installer Mongo. Mongo est une base de données No-SQL basée sur des documents de plus en plus utilisée par les applications Web. Malheureusement, cela prendra une éternité à installer car nous devons le compiler. Lors de l'exécution des commandes suivantes, vous obtiendrez de nombreuses erreurs comme:

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

Ne vous en faites pas. Exécutez donc ces commandes pour installer Mongo:

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

Lorsque cela est terminé, nous avons besoin d'un peu plus de configuration pour résoudre les problèmes d'autorisation et nous assurer qu'il fonctionne au démarrage.

sudo useradd mongodb. sudo mkdir / data / dbb. sudo chown $ USER / data / db. cd /etc/init.d. sudo wget -O mongodb https://gist.github.com/ni-c/fd4df404bda6e87fb718/raw/36d45897cd943fbd6d071c096eb4b71b37d0fcbb/mongodb.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 entièrement sûr de cette étape, donc si quelqu'un peut corriger cela dans les commentaires sur la façon de lancer automatiquement mongod au démarrage, ce serait très apprécié. Pour l'instant, cela fonctionne, mais pas avec élégance.

arrêt sudo -r maintenant

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 install. 

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 à partir du Pi, ou remplacez localhost par l'adresse IP si vous y accédez à partir d'un autre ordinateur (et vous pouvez également configurer la redirection de port Qu'est-ce que la redirection de port et comment peut-elle m'aider? [MakeUseOf explique]Pleurez-vous un peu à l'intérieur quand quelqu'un vous dit qu'il y a un problème de redirection de port et c'est pourquoi votre nouvelle application brillante ne fonctionnera pas? Votre Xbox ne vous laissera pas jouer à des jeux, vos téléchargements de torrent refusent ... Lire la suite pour y accéder de 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, j'aimerais un relais câblé, mais pour l'instant j'utiliserai l'option plus sûre des commutateurs radio-commandés.

J'ai utilisé des ensembles de Maplin à 20 £ raisonnablement bon marché qui viennent avec 3 prises, et j'ai ouvert la télécommande pour pouvoir m'interfacer directement avec la puce 433 MHz à l'intérieur. J'ai trouvé les instructions pour cela ici.

rc-controller-hack

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

arduino-rcswitch

Le plugin fonctionne en envoyant des «codes tristate», mais ceux-ci varient selon le fabricant. Se référer au Documentation RCSwitch pour trouver vos codes exacts. Cette guide wiki peut aussi aider.

La communication avec l'Arduino se fait à 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 installe duino. 

L'Arduino doit avoir ce code téléchargé - Je vous suggère de copier et coller pour l'installer à partir d'un autre ordinateur. C'est essentiellement 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.

rc-settings

Une fois l'application Web lancée, accédez au Paramètres menu> Arduino.

heimcontrol-menu-settings

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 tristate. N'oubliez pas de sauvegarder, puis revenez à l'écran principal de votre nouveau bouton.

rcswitch-setting

Bugs:

Après plusieurs heures de débogage du code, j'ai trouvé que les numéros de broche à un chiffre ne fonctionnaient pas - assurez-vous que votre émetteur est placé sur la broche 10 être sûr.

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

J'ai dû modifier manuellement le plugins / arduino / index.js pour utiliser les bons codes. Si vous utilisez les mêmes prises de télécommande que moi, remplacez les lignes 80 par:

// Envoyer le code RC. if (item.value) {renvoie that.pins [item.pin] .triState (item.code + "FFFF"); // change de FF0F. } else {return that.pins [item.pin] .triState (item.code + "FFF0"); // changement par rapport à FF00. }

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

Je vais le laisser ici à ce stade, mais les lectures des capteurs et les télécommandes IR sont également pris en charge. Je vais probablement les revoir à une date ultérieure avec quelques améliorations supplémentaires. Si tout cela a été un peu trop complexe pour vous, consultez peut-être ces projets Arduino adaptés aux débutants 15 grands projets Arduino pour les débutantsIntéressé par les projets Arduino mais vous ne savez pas par où commencer? Ces projets pour débutants vous apprendront comment démarrer. Lire la suite .

James est titulaire d'un BSc en intelligence artificielle et est certifié CompTIA A + et Network +. Il est le développeur principal de MakeUseOf et passe son temps libre à jouer au paintball VR et aux jeux de société. Il construit des PC depuis qu'il est enfant.