Nous avons parlé des mérites respectifs d'Arduino et de Raspberry Pi - ils ont chacun leurs points forts. Ils ne doivent pas nécessairement être un choix ou 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 de consommation coûteux, incompatibles entre eux et coûteux à installer. Si vous avez un Raspberry Pi Raspberry Pi: le tutoriel non officiel Raspberry Pi: le tutoriel non officiel Si vous êtes un propriétaire Pi actuel qui veut en savoir plus ou un propriétaire potentiel de ce dispositif de taille de carte de crédit, ce n'est pas un guide que vous vouloir 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 à mettre dans le temps et l'effort.
Mise à jour: Depuis que cet article a été écrit, j'ai découvert OpenHAB, une plate-forme de domotique gratuite et open source qui fonctionne sur Raspberry Pi et qui peut être intégrée à une vaste gamme de smart home ainsi qu'à Arduino. Regardez la vidéo ci-dessous pour un avant-goût, puis dirigez-vous vers notre introduction à OpenHAB sur Raspberry Pi Démarrage d'OpenHAB Home Automation sur Raspberry Pi Démarrage 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 agnostique protocole, ce qui signifie qu'il peut se connecter à presque n'importe quel matériel domotique sur le marché aujourd'hui. Lire plus guide pour en savoir plus.
Heimcontrol.js est une application Node.js construite pour fonctionner sur Raspberry Pi. Combiné avec une prise Arduino et certaines prises de contrôle à distance, 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 tutoriel ultérieur.
Voici une répartition du projet:
- Le Raspberry Pi agira comme le cerveau et la passerelle des opérations - il va exécuter une application Node, liée à une base de données Mongo, et servir l'interface frontale à n'importe quel navigateur Web.
- Un Arduino, alimenté par le Pi, interfèrera entre les commutateurs d'alimentation électronique - contrôle radio, pour l'instant.
Pour ce faire, vous aurez besoin de:
- Arduino et un Raspberry Pi
- Certaines prises télécommandées et contrôleur (j'ai utilisé ceux-ci)
- Concentrateur 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 10 Les systèmes d'exploitation que vous pouvez exécuter avec Raspberry Pi 10 Systèmes d'exploitation que vous pouvez exécuter avec Raspberry Pi Le matériel du Raspberry Pi seul n'est qu'un aspect de l'histoire: Aujourd'hui, j'explore 10 systèmes d'exploitation différents vous pouvez installer. Lire la suite, et je suggère fortement de commencer à 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-la sur votre carte SD, et assurez-vous de développer le système de fichiers et d'activer SSH. Le reste de ce guide suppose que vous l'avez fait et vous connecte via SSH en utilisant l'utilisateur par défaut.
Si vous ne l'avez pas déjà 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érivé des instructions ici. Malheureusement, ceux-ci étaient obsolètes ou pas conçus pour Raspian, donc je les ai ajustés fortement 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. Puisque nous sommes en train de compiler quelques éléments sur le Pi lui-même, sachez que tout ce processus prendra beaucoup de temps. Je dirais aller faire une tasse de thé - mais quand je dis un "long temps", je veux dire la meilleure partie d'une journée - donc 178 tasses serait plus approprié.
Toutes les commandes doivent être tapées dans le terminal, et vous devrez peut-être appuyer sur Entrée à certains points. Ces premières commandes vont mettre à jour le système et installer les pré-requis:
sudo apt-get update sudo apt-get upgrade 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 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 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 Y pour enregistrer.
Vous devrez peut-être vous déconnecter et entrer de nouveau pour que les changements de chemin prennent effet, mais vous pouvez tester avec la commande:
which node
Si vous n'obtenez aucune sortie pointant vers le binaire Node, quelque chose s'est mal passé.
Mongo
Le prochain travail 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 aurez beaucoup d'erreurs comme:
{standard input}:13085: Warning: swp{b} use is deprecated for this architecture
Ne t'en fais 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 install scons -c
Lorsque cela est terminé, nous avons besoin d'un peu plus d'installation pour résoudre les problèmes d'autorisation et nous assurer qu'il s'exécute 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 defaults 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 comment lancer mongod automatiquement au démarrage, ce serait très apprécié. Pour l'instant, cela fonctionne, mais pas avec élégance.
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 install
Vous pouvez commencer à exécuter l'application en tapant
node heimcontrol.js
À ce stade, vous devriez pouvoir accéder à l'interface de contrôle avec http: // localhost: 8080 depuis le Pi, ou remplacer localhost par l'adresse IP si vous y accédez depuis un autre ordinateur (et vous pouvez également configurer le port Qu'est-ce que le transfert de port et comment cela peut-il m'aider? [MakeUseOf explique] Qu'est-ce que le transfert de port et comment cela peut-il m'aider? [MakeUseOf explique] Pleure-tu un peu quand quelqu'un te dit qu'il y a un problème de portage? Une nouvelle application brillante ne fonctionnera pas? Votre Xbox ne vous laissera pas jouer à des jeux, vos téléchargements de torrents refusent ... Lisez plus pour y accéder de n'importe où dans le monde), donc je vous encourage à fouiller et vérifier tout est travailler avec la base de données avant de joindre l'Arduino.
Matériel
Finalement, je voudrais un relais câblé, mais pour l'instant je vais utiliser l'option la plus sûre des commutateurs radio-commandés.
J'ai utilisé des sets de £ 20 de Maplin à un prix raisonnable, 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 ça ici.
Vous pouvez également acheter des émetteurs individuels 433 MHz prêts à être utilisés sur eBay ou auprès des 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 - souvenez-vous de celle que vous avez utilisée. (Schéma de Willi Thiel)
Le plugin fonctionne en envoyant "codes à trois états", mais ceux-ci varient selon le fabricant. Reportez-vous à la documentation RCSwitch pour trouver vos codes exacts. Ce guide wiki peut aussi aider.
La communication avec l'Arduino se fait en utilisant 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 install duino
L'Arduino doit avoir ce code téléchargé - Je vous suggère de copier et coller pour l'installer depuis 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.
Une fois l'application Web lancée, accédez au menu Paramètres > Arduino .
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 de votre nouveau bouton.
Bogues:
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 pour être sûr.
J'ai également trouvé que le plugin Arduino a été codé en dur avec des bits finaux incorrects pour les codes tristate nécessaires à mes récepteurs. Une petite explication d'abord: les codes tristate se composent de 3 octets d'information. Le premier 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 sockets adressables). L'octet final se compose de deux bits de rembourrage, plus 2 bits pour activer / désactiver. Malheureusement, l'octet final est codé en dur dans le plugin Arduino - et dans mon cas, le code on / off était incorrect.
J'ai dû éditer manuellement les plugins / arduino / index.js pour utiliser les bons codes. Si vous utilisez les mêmes prises de télécommande que moi, changez les lignes 80 à:
// Send RC code if (item.value) { return that.pins[item.pin].triState(item.code + "FFFF");//change from FF0F } else { return that.pins[item.pin].triState(item.code + "FFF0");//change from 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 prises en charge. Je vais probablement les revoir à une date ultérieure avec quelques améliorations supplémentaires. Si cela a été un peu trop complexe pour vous, peut-être vérifier ces projets Arduino pour les débutants 10 Grands projets Arduino pour les débutants 10 Grands projets Arduino pour les débutants Compléter un projet Arduino vous donne un sentiment de satisfaction comme aucun autre. La plupart des débutants ne savent pas par où commencer, et même les projets de débutants peuvent sembler décourageants. Lire la suite .
Crédits d'image: Door Bell Via Flickr