Bifréquence RC sortie Webserver (4 / 5 étapes)

Étape 4: logiciels

Logiciel. Je l'aime. Il fait professionnellement depuis plus de 30 ans. En temps réel. Commande de vol. Simulations. Applications d’entreprise. Applications scientifiques. Je les aimes tous. Cela étant dit, pour mes projets de maison, je passe beaucoup plus de mon effort sur le matériel que le logiciel. Il s’agit d’un hobby et que faire pour se détendre après un logiciel d’écriture toute la journée. Le logiciel pour ce projet pourrait être plus complet, plus robuste et plus joli, mais ce n’est pas comment je cherche à passer mon temps sur un projet de maison.

Interface utilisateur

Étant donné que ce projet est construit autour d’un ESP8266-12, la solution évidente pour l’interface utilisateur est un ensemble de pages web. Je n’ai rien fait de fantaisie, juste jeté ainsi certains HTML5, le CSS et le Javascript dans Kate. C’était ma première fois à l’aide de la ESP8266 pour autre chose qu’un exemple trivial, et il y avait quelques bizarreries et les pièges que je devais tomber mon chemin à travers avant j’ai eu tout ce travail.

Je n’avais pas écrit les éléments HTML en plus de dix ans et voulait essayer de HTML5. Pour éviter le dos et vient d’écrire, compiler et téléchargement vers le ESP8266, j’ai prototypé premier, tous les pages web sur mon portable en utilisant le module python SimpleHTTP en tant que serveur. Cela m’a donné très rapide demi-tour tandis que je détache la rouille HTML.

Des images, vous pouvez voir que la page d’accueil est une liste des appareils connus et boutons pour sélectionner/désélectionner et activer ou désactiver. Il y a aussi des boutons que vous rejoindrez pages pour définir un nouveau dispositif ou modifier une existante.

Pour définir un nouveau périphérique, vous utilisez le bouton « Enregistrer 315 » ou « Record 434 ». J’espère que vous savez quelle fréquence votre appareil utilise mais si pas, vous essayez un et puis l’autre. Si vous choisissez mal celui tout d’abord, il ne sera pas voir un signal, donc pas mal fait.

L’environnement de développement

Le code de ce projet est écrit en C++ en utilisant les librairies de l’Arduino et compilé et téléchargé à l’aide de l’interface de ligne de commande d’Arduino.

En tant que développeur C++ par jour, c’est ma langue préférée à la maison. Je suis arrivé dans les systèmes embarqués de niveau amateur il y a avec la plate-forme de deux ans que les gens aiment ou détestent - l’Arduino Uno. Comme chaque autre programmeur professionnel qui a utilisé l’IDE Arduino pendant plus de cinq minutes, j’ai rapidement cherché une autre solution. Après avoir essayé les Makefiles disponibles et le plug-in Eclipse, j’ai fini à l’aide de Kate et un script python pour appeler l’interface de ligne de commande d’Arduino. Cela m’a permis d’abandonner leur IDE au total et m’a fait beaucoup plus heureux.

Avant il y a encore un autre débat stérile pour savoir si Arduino est un écosystème adapté pour fonctionner avec, permettez-moi de souligner qu’il y a trois très belles choses sur l’utilisation de cette boîte à outils :

  • La richesse des bibliothèques open source pour l’interfaçage avec des composants de matériel différent
  • La capacité d’intégrer leur système de construction de planches non-Arduino (comme le ESP8266)
  • Une abstraction matérielle couche qui permet de vous programmer (plus ou moins) indépendamment du microcontrôleur spécifique vous utilisez.

Oui, je sais que beaucoup de gens très loquaces sur l’écosystème de l’Arduino avec dédain et affirmer que toute personne qui n’est pas programmer directement à l’interface de matériel spécifique et écrire toutes les bibliothèques à partir de zéro n’est pas un vrai programmeur. Je suis en désaccord, mais étant donné que ce sujet a été battu à mort il y a longtemps, les débats peuvent être envoyées à/dev/null.

Prototypage fonctionnel

Tous mes prototypage initial a été effectué sur un Arduino Uno connecté à mon ordinateur portable et à l’aide de la série à lire les commandes du clavier et imprimer les résultats à l’écran. Cela m’a permis de se concentrer sur la façon du lire, de stocker et de relire les commandes RF sans s’enliser par des problèmes avec le WiFi et l’interface web.

* Astuce pro * - dès le début, j’ai écrit la logique de base comme un ensemble de classes autonomes complètement indépendants de quelque utilisateur interface était utilisée par le pilote d’essai. Alors que j’étais prototypage, j’ai lecture des commandes du clavier, analysé les, appelée les méthodes appropriées de mon code de la bibliothèque et affiche les résultats à l’écran. Quand j’ai déménagé à une interface web-basée sur la ESP8266, la bibliothèque a glissé en plein car il n’a aucuns dépendances sur l’interface utilisateur. Configuration des paramètres tels que les broches GPIO affectations sont passées comme paramètres du constructeur à la classe de bibliothèque niveau supérieur. Dans le fichier source principal (le .ino Arduino-Land), il y a une série de #ifdefs que celles-ci correctement en fonction du type de Conseil que je suis la compilation pour les configurer.

Lorsqu’une commande est reçue, le logiciel se met en marche le matériel approprié de RF (315 récepteur, émetteur 315, 434 récepteur ou émetteur 434) en utilisant le transistor liée à chacune de ces unités. Il attend un peu de temps pour s’assurer que le matériel est mis sous tension puis envoie une commande ou écoute une commande entrante.

Sécurité

Aucun. Ce n’est pas exposé à l’extérieur de mon réseau local alors je suis paresseux dans l’intérêt de passer du temps avec ma famille. Honnêtement, si vous décidez de buste à travers mon pare-feu et est la seule chose que vous pouvez trouver à faire allumer mes lumières de Noël et au large, à plusieurs reprises, Eh bien... vous ne pouvez pas être prêt pour anonyme tout à fait encore.

Prochaine saison des fêtes, je peux ajouter une liste blanche MAC et des informations d’identification utilisateur rudimentaire. J’ai aussi pensé à ajouter une logique qui vous bloque pendant un certain temps si vous essayez d’émettre plus de N commandes en une heure. Pour l’instant, il est débranché, donc il est assez sûr.

Réutilisation des logiciels

Comme je le disais, être capable de réutiliser des bibliothèques existantes est une augmentation de la productivité énorme. Pour ce projet, il y a deux bibliothèques en particulier que j’ai fait usage de.

RCSwitch - bibliothèque d’Arduino pour sortie télérupteurs

Cette bibliothèque (http://code.google.com/p/rc-switch/) le rend très simple pour s’interfacer avec les émetteurs et de récepteurs de RF. Je finissent assez lourdement le modifier pour s’adapter à mon particulier a besoin, mais c’était un excellent point de départ et m’a montré les réponses que j’avais besoin de faire travailler les choses.

ESP8266WebServer - Dead simple serveur web

Ce code d’Ivan Grokhotkov est un bon point de départ pour l’écriture d’un serveur Web simple.

Si je l’ai vu plus loin, c’est en me tenant sur les épaules de géants. --Isaac Newton

Que la citation est un peu prétentieuse pour un tel projet banal mais je pense qu’il est important de souligner le travail d’autres gens qui fait écrire ce logiciel beaucoup plus simple que ce qu’il aurait été autrement. Merci.

Articles Liés

Synthétiseur : Un clavier UI avec sortie Audio

Synthétiseur : Un clavier UI avec sortie Audio

Nous avons construit un clavier UI avec cinq modes de synthèse tout en Javascript, pour montrer la puissance de l'aide des broches de matériel de sortie audio de Kinoma Create. Vous pouvez télécharger le projet open source maintenant pour s'exécuter
Arduino entoilage-convertisseur de fréquence de lumière de TSL230R

Arduino entoilage-convertisseur de fréquence de lumière de TSL230R

Cette page vise à montrer le fonctionnement de laTSL239R lumière au convertisseur de fréquence. L'appareil émet une onde carrée 50 % obligation dont la fréquence est proportionnelle à l'intensité de la lumière. Non seulement le TSL230R peut être util
Générateur de fonctions de haute fréquence avec le Maxim MAX038

Générateur de fonctions de haute fréquence avec le Maxim MAX038

Nous avions besoin d'un générateur de fonctions dans PCBheaven et au lieu d'acheter un que nous avons décidé de créer une de toutes pièces. L'idée est basée à puce MAX038 de maxim. Cette puce est assez cher, mais offre de nombreuses fonctionnalités.
BRICOLAGE un Cell Phone Jammer Kit pour le plaisir

BRICOLAGE un Cell Phone Jammer Kit pour le plaisir

Savez-vous ce qu'est un kit de brouilleur de téléphone portable et que vous savez combien d'amusement il peut vous apporter ? Voyons d'abord une vidéo.Geeks peuvent être farceurs. Si vous êtes une petite coquine, un kit de brouilleur de téléphone por
Filament de l’imprimante 3D couleur télédétection humeur légère

Filament de l’imprimante 3D couleur télédétection humeur légère

C'est mon premier Instructable donc si il y a des questions ou des suggestions s'il vous plaît laissez un commentaire ci-dessous.Dans ce Instructable, je vais vous montrer comment faire une humeur légère de détection de couleur filament pour votre im
Centre réseau steampunk

Centre réseau steampunk

Salut tout le mondeJe suis donc heureux de vous présenter mon nouveau objet steampunk après tant de temps d'absence.J'ai eu l'idée de ce projet après avoir vu les oiseaux nichent des câbles derrière mon équipement de réseau.Organiser le désordre des
Le Circuit onduleur sinusoïdal pur

Le Circuit onduleur sinusoïdal pur

PUR SINUS ONDULEUR À L'AIDE DE EGS002 DRIVER BOARDCircuit onduleur sinusoïdal pur avec aucune conception de robinet du centre est devenue simple à l'aide de EGS002 Conseil du pilote onduleur sinusoïdal ou carte. Ce message donner vous expliquera comm
Arbalète pistolet

Arbalète pistolet

pas aussi meurtrières qu'il sons et plus d'une nouveauté d'une arme, j'ai créé ce dispositif pour se débarrasser d'un gros seau de bouchons de bouteilles métalliques, le genre utilisé sur des bouteilles de soda et de bière. Même si ils ont un bord se
Un Lapful de Scrap-un Lap Steel guitare fabriqués à partir de matériaux recyclés

Un Lapful de Scrap-un Lap Steel guitare fabriqués à partir de matériaux recyclés

La guitare a des racines profondes. Le principe de base est simple-chaîne est tendue et un objet lourd et dur est utilisé pour faire glisser le long de la chaîne, tandis que la chaîne est cueillie pour produire des sons. Un ancêtre au début était le
Arduino & Android basé Bluetooth Controll mot de passe protégé Smart Door Lock (enregistrer votre maison)

Arduino & Android basé Bluetooth Controll mot de passe protégé Smart Door Lock (enregistrer votre maison)

Nous tous sommes préoccupés par la sécurité de notre maison. Monde devient plus intelligent et plus intelligemment tous les jours et nous veulent contrôler et sécurisé notre chose de façon plus intelligente. Dans ce tutoriel que je vais vous explique
Girino - rapide Arduino Oscilloscope

Girino - rapide Arduino Oscilloscope

je suis un physicien, et la plus belle partie du travail dans ce domaine, c'est que j'ai la chance de construire mes propres instruments. Cette façon de penser, j'ai décidé de construire un homebrew Arduino Oscilloscope. Cette instructable a été écri
Arduino pour serre, jardin ou Growbox / mise à jour avril 2016

Arduino pour serre, jardin ou Growbox / mise à jour avril 2016

J'ai été en utilisant Attiny puces pour les tâches de l'irrigation dans mon jardin, mais avoir des plans pour construire une serre, un Arduino semble être la voie à suivre car il a plus de ports. Je sais, il y a plusieurs « Garduino » type projets dé
Dormir n' Tweet

Dormir n' Tweet

Etape 1: Le sommeil n' Tweet Maintenant j'ai la chance de travailler à la plus grande compagnie dans le monde comme une Université de Waterloo, programme d'enseignement coopératif. Il ne serait pas même une entreprise, que vous avez entendu parler d'
Fait main IR distance

Fait main IR distance

dans mon projet antérieur, j'ai utilisé cet appareil comme un émetteur IR et a promis de transférer cette description du projet dans les prochain instructables.Je vous présente donc ici émetteur IR à l'aide de 555 Timer.Dernier projet dans lequel cet