Rétro-ingénierie : USB contrôlée hack domotique (15 / 19 étapes)

Étape 15 : logiciel

Avant que la puce est supprimée de la maquette, il a besoin de certains logiciels.

Le logiciel est écrit en C et basé sur un exemple de projet de lib objectif évolution V-USB. Il s’agit d’un grand morceau de logiciel, et c’est gratuit et open source pour un usage personnel/non commercial.

http://www.obdev.at/Products/vUSB/index.html

Je ne vais pas aller dans les détails sur le fonctionne du logiciel. La rétro-ingénierie est l’accent mis par ce Instructable. Voici la version courte :

Vous avez besoin de deux programmes pour faire ce travail. Un programme sur votre ordinateur et le firmware pour le microcontrôleur.

Microcontrôleur :

Les transmissions RF réelles se fait par une routine d’interruption. J’utilise un interrupt timer parce que c’est la façon la plus simple pour obtenir le timing précis. L’interruption timer lit à partir d’un tampon global où les délais sont stockés. Je ne stocke l’état activé/désactivé du transmetteur RF depuis et s’éteint toujours suppléants. J’ai commencer avec une impulsion d’arrêt, puis alternent sur et en dehors des légumineuses.

La mémoire tampon contient 42 valeurs. Il y a 21 bits à transmettre, et chacun a une période basse et haute. Cette configuration n’est pas très efficace de la RAM, mais l’ATmega8 a beaucoup. Je vais le commerce RAM pour la lisibilité du code au lieu d’avoir la ram inutilisée !

La mémoire tampon est rempli par la fonction send_rf_frame (réseau, charge utile). Il renseigne les timings de droite dans le tableau buffer rf, commençant par le bit de départ, suivi par l’id de réseau de 12 bits et les 8 bits de la charge utile + somme de contrôle. Lorsque la mémoire tampon est rempli, la variable position de mémoire tampon est réinitialisée à 0, alors que la routine d’interruption commencera le travail de bit 0 dans la mémoire tampon.

Lorsque les données sont envoyées au microcontrôleur via le port USB, la fonction usbFunctionSetup() est appelée. Il s’agit d’une fonction que vous créez et où vous mettez votre code USB entrant.

Selon le type de demande envoyé depuis le PC, vous pouvez faire des choses différentes à l’intérieur de cette fonction. J’ai demande deux types configurés, les set_network_id et les send_command.

La demande de set_network_id juste prend l’id de réseau de 12 bits envoyé depuis l’ordinateur et les stocke dans une valeur d’entier global.

La demande de send_command appelle send_rf_frame() et lui passe l’octet commande reçue. Après cela, la routine d’interruption reprend.

À l’intérieur de la boucle de main() :
usbPoll() ; doit être appelée chaque quelques millisecondes (10 ou 50, pas sûr) pour l’USB fonctionne correctement.
Après que c’est fait, le comparateur analogique est vérifié. Si la tension de la pompe de charge est trop faible, la pompe de charge est démarrée. Si c’est à la tension désirée, la pompe de charge est arrêtée.

Enfin, un voyant d’État est défini sur ON si l’indicateur rf_busy est actif.

Ordinateur :

Du côté de l’ordinateur, j’ai aussi modifié l’exemple fourni par objectif développement. J’ai ajouté du code pour analyser les arguments de la ligne de commande. J’ai aussi écrit une fonction pour créer les octets de charge utile. Il faut des arguments tels que numéro de lampe, marche/arrêt, diffusion.

Le logiciel utilise libusb pour communiquer avec le microcontrôleur.

J’ai également créé un script php petites pour appeler le programme informatique de ligne de commande lorsque vous appuyez sur les boutons sur une page web. Ouvrez la page Web sur votre Android/iPhone et régler l’éclairage ! : D

Articles Liés

Rétro-ingénierie en direct

Rétro-ingénierie en direct

J'ai commencé en électronique avant l'avènement de l'internet et les composants plus solides à l'État, donc obtenir des fiches techniques et des schémas n'a pas été facile pour moi. Aujourd'hui avec la fabrique faisant ICs personnalisés et écrans à c
Rétro-ingénierie : Ampoule de LED RVB avec télécommande IR

Rétro-ingénierie : Ampoule de LED RVB avec télécommande IR

nous avons acheté 20 de ces ampoules LED RVB pour un parti au travail, mais j'ai été un peu déçu avec les fonctions de décoloration de couleur ils ont fourni. J'ai donc décidé de prendre un ingénieur apart, inverse le protocole infrarouge et voir si
Rétro-ingénierie à émuler les cartouches d’encre pour une imprimante Epson

Rétro-ingénierie à émuler les cartouches d’encre pour une imprimante Epson

pour les deux dernières années, j'ai été l'intention de me construire une imprimante 3D de certaines imprimantes à jet d'encre anciennes que j'avais recueillies au cours des années. Mais pas jusqu'à il y a deux semaines avais j'ai réellement commencé
Comment inverser l’ingénierie pcb

Comment inverser l’ingénierie pcb

PCB rétro-ingénierie, également appelée clonage de PCB ou de copie de PCB, utilise la technologie de l'ingénierie inverse sur le PCB qui a été conçu et fabriqué par d'autres, c'est d'utiliser des PCB ayant trait aux logiciels pour copier la carte de
PerfEGGct: (Sur) le œuf à la coque parfait d’ingénierie

PerfEGGct: (Sur) le œuf à la coque parfait d’ingénierie

Révolu le temps de chronométrage aveuglément et faire bouillir les œufs et d'être parti avec rien d'autre qu'un mauvais jaune ! Dans le cadre de notre projet d'ingénierie mécatronique dernière année, nous avons développé un appareil qui mesure l'osci
GaussGun / bobine-pistolet électronique et ingénierie de projet

GaussGun / bobine-pistolet électronique et ingénierie de projet

J'ai décidé de faire le Gold Award de Crest à mon collège, qui est une grande reconnue par l'Association britannique de Science qui donne aux étudiants l'occasion d'approfondir leur connaissance de la science, technologie, ingénierie et mathématiques
Comment enseigner l’ingénierie orientée projet Kids

Comment enseigner l’ingénierie orientée projet Kids

Si vous aimez ce Instructable, alors je vous encourage à acheter mon livre, Ingénieur de l'élastique. Elle est pleine de projets plus impressionnants et originaux fabriqués à partir de matériel domestique. Vous pouvez le trouver là où les livres sont
Été 2014 Introduction à la compétition d’ingénierie

Été 2014 Introduction à la compétition d’ingénierie

3 juillet 2014PARGroupe : One PieceJiaqing buQian JunqiXiang YinanÉléments de YangChen MiaoumiaouVG100 INTRO À L'INGÉNIERIEDÉPARTEMENT DE GÉNIE MÉCANIQUEUNIVERSITÉ DU MICHIGAN – SHANGHAI JIAO TONG UNIVERSITY JOINT INSTITUTE(EUH SJTU JI)SHNAGHAI, CHIN
Aéroglisseur pour l’été 2014 Introduction à la compétition d’ingénierie

Aéroglisseur pour l’été 2014 Introduction à la compétition d’ingénierie

1. introduction au Joint InstituteSalut! Nous sommes des étudiants de l'Institut unifié de l'Université JiaoTong de Shanghai en Chine. Cette belle école est située au sud-ouest de Shanghai et Picture1 est la vue de notre campus fantastique.Institut m
USB: - contrôleur de moteur DC à l’aide de PIC18F4550 (clavier)

USB: - contrôleur de moteur DC à l’aide de PIC18F4550 (clavier)

USB: - contrôleur de moteur DC à l'aide de PIC18f4550 (clavier)Bonjour les amis,Exigences en matièreInterface USB DEMO BoardPuce contrôleur de moteur L293DCeci un petit projet sur le contrôle moteur D.C avec carte d'interface USB pic18f4550 avec mote
Projet 1.1 : Introduction à l’ingénierie numérique et FPGA conseils

Projet 1.1 : Introduction à l’ingénierie numérique et FPGA conseils

C'est la première d'une série de projets en utilisant des matériaux de Digilent qui sont créés pour EE214 à la Washington State University. Toutefois, nous avons décidé que nous avons voulu rendre plus accessible au grand public, donc je suis leur cr
Petit moteur pré-ingénierie Masco G1

Petit moteur pré-ingénierie Masco G1

Il s'agit d'un projet créé par classe pré-ingénierie de M. Kurtz.Étape 1: matériauxVous aurez besoin du matériel suivant :Batterie DPinceUne règleUn aimant2 pieds de fil d'aimant DuraShock 262 petits trombonesruban adhésifPiles AA ou quelque chose de
Protocole de contrôle de climatiseur télécommande ingénierie inverse

Protocole de contrôle de climatiseur télécommande ingénierie inverse

Salut, ceci est mon premier espoir instructable, vous l'aimez.Pour entrer dans l'électronique, j'ai choisi un projet domotique : un système me permettant de programme et contrôle les deux unités de climatisation dans mon appartement. Dans ce instruct
Moins cher rétro jeu d’Arcade contrôles encodeur jamais !

Moins cher rétro jeu d’Arcade contrôles encodeur jamais !

Vous pourriez avoir vu la "PIK3A" table de jeu rétro circulant autour de l'internet, dont j'ai fait pour element14.com dans le cadre de notre contenu de promo pour le lancement de la Raspberry Pi 3. Si vous n'avez pas vu, c'est une table IKEA ma