Comment puis-je faire communiquer mon circuit avec un ordinateur?

8

Je suis novice en piratage électronique. Je voudrais savoir comment faire communiquer un circuit avec un PC. Prenons par exemple un circuit simple, avec une LED et un interrupteur. L'interrupteur sur le circuit n'est cependant pas utilisé pour contrôler la LED. En appuyant dessus, vous communiquez l'état actuel de la LED. J'ai un programme en cours d'exécution sur mon ordinateur, qui a pour une interface utilisateur, un bouton et un objet graphique; un cercle rempli de noir.

  • Je devrais pouvoir allumer et éteindre la LED de mon ordinateur en cliquant sur le bouton à l'écran.
  • En appuyant sur l'interrupteur de la carte, vous devez communiquer au programme l'état de la LED. Si la LED est allumée, le cercle noir doit devenir vert, sinon il doit devenir noir.

C'est une situation hypothétique que j'ai décrite pour expliquer le problème. Je ne cherche pas de solution pour mettre en œuvre cette chose, mais je veux savoir comment cette communication entre mon circuit et l'ordinateur peut être réalisée, de manière simple et peu coûteuse, sur

  1. câble?
  2. sans fil?

Et si vous pouviez suggérer où je devrais chercher et ce que je devrais apprendre pour commencer mon projet d'électronique, ce serait d'une grande aide.

sauparna
la source

Réponses:

17

Il y a plusieurs façons différentes d'y parvenir. Voici quelques-uns:

  1. Vous pouvez programmer un petit microcontrôleur comme une Microchip PIC16F84A pour regarder le bouton et la LED. Chaque fois que le bouton est enfoncé, le PIC16F84A envoie un caractère via une puce série FTDI vers un port USB de votre ordinateur. Sur votre ordinateur, un programme écrit en Traitement surveille le port USB et met à jour les images à l'écran. Coût total: 20 $ pour des chips et une planche à pain.

  2. Vous pouvez acheter un Arduino Bluetooth avec un bouclier de prototypage. L'Arduino parle d'une puce Bluetooth à une carte Bluetooth de votre PC. Un programme écrit en Python écoute la carte Bluetooth et dessine l'image appropriée à l'écran avec la bibliothèque Pygame . Coût total: 150 $ pour un Arduino Bluetooth.

  3. Vous pouvez attacher une webcam à votre PC qui regarde votre LED et le bouton. Un programme écrit en Ruby analyse chaque image provenant de la webcam et la compare à l'image précédente. Lorsqu'il détecte un changement dans la région de l'image près du bouton, il regarde la couleur des pixels dans la région LED et met à jour une valeur dans une base de données . Une page Web s'actualise automatiquement à l'aide du plug - in de minuterie jQuery et met à jour une image à l'écran en fonction de la valeur dans la base de données. Coût total: 25 $ pour une webcam merdique.

  4. Vous pouvez trouver un ancien PC avec un port parallèle et y installer Ubuntu Linux . Vous connectez la LED et le bouton aux broches du port parallèle, puis écrivez un programme en C qui lit l'adresse 0x378. Sur la base des données renvoyées, il effectue des appels dans une bibliothèque graphique C qui fait le dessin d'écran approprié. Coût total: gratuit, si vous trouvez un PC assez vieux.

  5. Vous remplacez le bouton d'alimentation de votre ordinateur par le bouton en question et le voyant d'alimentation par la LED en question. Vous remplacez votre BIOS par une version d' OpenBIOS qui a été modifiée pour afficher un cercle vert à l'écran et ne démarrez jamais aucun système d'exploitation. Coût total: probablement le coût d'un nouveau PC.

Mais sérieusement

Je pense que je recommanderais un Arduino et un traitement . Ils sont simples et parfaits pour les débutants. Coût total: 30 $ pour l'Arduino.

Bonne chance.

pingswept
la source
Vous n'avez pas besoin d'un BIOS spécial pour lire l'état du bouton d'alimentation. Vous devriez pouvoir le faire depuis Linux sans aucun piratage du noyau ou quoi que ce soit. Je suis sûr que vous pouvez configurer ce qui se passe lorsque vous appuyez sur le bouton d'alimentation.
davr
2
Je pense que l'Arduino et le traitement devraient être la meilleure façon de commencer.
sauparna
7

Allez chercher le livre "Making Things Talk" de Tom Igoe: http://oreilly.com/catalog/9780596510510

Il ne s'agit pas de parler, mais de toutes les différentes méthodes pour faire en sorte que vos différents appareils - par exemple, votre ordinateur et votre circuit - se parlent. Vous y trouverez les détails sanglants de toutes les méthodes que les gens décrivent dans les autres réponses ici, avec des schémas de circuit et le code source (le cas échéant).

Si vous souhaitez apprendre une ou toutes les différentes façons de le faire, vous ne pourriez pas avoir un meilleur point de départ.

Windell Oskay
la source
6

Python + FT245

Supprimez le module PyUSB , et tout à coup, il ne faut que trois lignes (enfin, quatre, si vous incluez l'importation) de code pour que Python parle à l'espace de viande via 8 lignes d'E / S parallèles.

import d2xx
hardwareHandle = d2xx.open(0)
#Open the First FTDI device on the computer
hardwareHandle.setBitMode(0xff, 0x01)      
#Put the hardware in Async Bit-bang mode, set all pins as outputs

#Finally
hardwareHandle.write(data)
#And suddenly
#`data` shows up on the FT245 pins!

hardwareHandle.setBitMode(0x00, 0x01)
#set the IO lines to inputs (the first byte is the IO mask)
input = hardwareHandle.read()
#and input is equal to the value on the IO lines!

Il s'agit d'E / S parallèles extrêmement simples provenant d'un langage de haut niveau.

En prime, le matériel coûte un total de 17,95 $

Connor Wolf
la source
4

Jetez un oeil à la TI Chronos

TI fabrique cette impressionnante famille de microcontrôleurs 16 bits basée sur la puce MSP430. Une variante de cette puce est le CC430, qui a une connexion sans fil intégrée dans le boîtier.

Le chronos est un "conseil de développement" qu'ils vendent pour 49 dollars. Il vient dans un facteur de forme de montre-bracelet (que j'utilise tous les jours, il est même à la mode en dehors du monde geek :-)) Il est également livré avec deux dongles USB, un pour le JTAG (programmeur) et un autre est l'homologue sans fil.

L'un des exemples dans le devboard est de contrôler la souris sans fil à l'aide de la montre, ce qui est plutôt cool. La montre est également livrée avec accéléromètre, capteur de baromètre (altitude) et thermomètre.

Padu Merloti
la source
Mon Chronos arrive vendredi! Sérieusement, cependant, ce n'est qu'une forme légèrement plus complexe de la configuration PIC -> FTDI.
Kevin Vermeer
1

Avec ou sans fil est assez simple de nos jours. Vous pouvez obtenir des kits Bluetooth qui vous offrent déjà des E / S et vous pouvez également acheter des cartes d'E / S USB très peu coûteuses. Ce que vous souhaitez utiliser dépend entièrement de vos besoins et de votre budget.

http://www.hexwax.com/Products/expandIO-USB/

Quelque chose comme ça (jamais utilisé, aucune affiliation avec l'entreprise) vous permettrait probablement de démarrer très rapidement et avec un minimum de tracas. Ils semblent être disponibles auprès de Digikey et Mouser, et probablement d'autres aussi.

akohlsmith
la source
1

En supposant que votre PC dispose d'un port série, vous pouvez simplement utiliser l'USART sur la puce et un émetteur-récepteur RS-232 pour communiquer entre la puce et le PC. Si votre PC n'a pas de port série, vous devez investir dans un convertisseur USB <-> RS-232.

mjh2007
la source
1

Si votre intérêt principal est de le faire fonctionner rapidement, il existe un tas de kits d'E / S numériques basés sur USB qui incluent des bibliothèques de programmation pour lire / écrire les états des broches. Contrairement à travailler avec Arduino ou d'autres micro-cartes, cela signifie que vous n'avez qu'à vous soucier de la programmation du PC (par opposition à l'écriture et au débogage du code s'exécutant sur la carte du microcontrôleur).

Autrefois, le câblage des entrées et des sorties via le joystick ou le port parallèle d'un PC était la voie à suivre. Mais c'était à l'époque de DOS et de Windows jusqu'à environ Windows 95. Depuis lors, l'accès direct aux registres pour accéder au matériel est devenu de plus en plus difficile à faire. Cela dit, c'est toujours faisable - il vous suffira de parcourir les cadres de programmation pour accéder à ces broches de votre programme. La station d'accueil pour ordinateur portable de mon ThinkPad, par exemple, a le port parallèle de style hérité, et il est toujours pris en charge par le système d'exploitation, si je décide de brancher une LaserJet II. :)

Toybuilder
la source
1

Il y a de bons périphériques USB simples qui peuvent le faire, par exemple le Kadtronics USB Digital I / O Commander .

Rocketmagnet
la source
0

Votre méthode la plus rapide et la plus simple de le faire serait via Labview et les périphériques d'E / S USB associés. Bien sûr, ce n'est pas bon marché (en milliers de dollars). Ce que vous décrivez n'est pas le niveau d'entrée, certainement pas le niveau «Hello World».

Autre que de dépenser autant d'argent, vous seriez probablement mieux d'utiliser un Arduino et de communiquer avec votre programme via série et d'avoir l'Arduino allumer et éteindre la lumière.

AngryEE
la source
Oh mon garçon, ce n'est pas aussi facile que je le pensais. Merci pour cette perspective.
sauparna
Il existe un pack LabVIEW Home (autorisé pour les amateurs / fabricants non commerciaux) disponible pour 50 $. Cela peut être utilisé avec Arduino, Raspberry Pi ou d'autres cartes à faible coût pour créer des E / S à partir d'un ordinateur ou créer un logiciel intégré à exécuter sur la carte. Bien qu'il soit probablement exagéré pour ce problème particulier par rapport à d'autres réponses, le coût est raisonnable et les outils devraient être très capables d'utilisations beaucoup plus complexes.
mbmcavoy