Ich möchte ein vernetztes Gerät (ähnlich einem Anruf beim Hotelzimmerservice) mit mehreren Eingangsleitungen erstellen, die auf einem Computer im Netzwerk eindeutig identifiziert werden können.
Ich habe ein Produkt mit ähnlicher Funktionalität gefunden.
Ich nehme an, das Gerät benötigt einen Mikrocontroller, der mit einem Ethernet-E / A-Controller verbunden ist? Benötige ich ein Betriebssystem, um TCP/IP-Nachrichtenpakete zu generieren, die auf einem PC erkannt werden können? Bitte schlagen Sie ein Blockschema vor, dem ich folgen kann, um dies zu tun.
Mir ist nicht klar, was genau du willst. Ich denke, es ist wie folgt: Sie haben eine Reihe von Leitungen, die von einem Mikrocontroller verbunden werden müssen, und dieser Mikrocontroller sendet ein Signal an einen Computer. Der Computer verarbeitet dieses Signal.
Für den Mikrocontroller-Teil können Sie einen Chip mit integriertem Ethernet wie den von Olin erwähnten PIC18F67J60 verwenden . Sie können auch einen kleineren (einfacher zu programmierenden) Chip mit einem externen Ethernet-Chip wie dem ENC28J60 verwenden . Sie können Software für den Mikrocontroller schreiben, indem Sie den TCP/IP-Stack von Microchip , den TCP/IP-Stack von Olin Lathrop (siehe unter "Networking Example Firmware") oder die Implementierung von Matthew Schinkel in Jalv2 verwenden .
Da der Mikrocontroller ein Signal an den Computer sendet, ist es am einfachsten, den Computer zum Server und den Mikrocontroller zum Client zu machen. Das würde bedeuten, dass Sie eine Art Server auf dem Computer benötigen. Ich würde Ihnen empfehlen, sich für einen HTTP-Server zu entscheiden, da dafür die meisten Informationen verfügbar sind. Für Linux können Sie einen LAMP- Server verwenden - für Windows verwenden Sie WAMP oder XAMPP.
Sie müssen ein serverseitiges Skript erstellen, das die Anfrage vom Client verarbeitet. Der Client muss dieses Skript aufrufen. Sie könnten beispielsweise die Kundenanfrage stellen, /button.php?button=17
wenn die Schaltfläche Nummer 17 gedrückt wurde. Dann könnte das serverseitige Skript so aussehen:
<?php
if (!isset($_GET['button'])) { // Check if ?button exists
die('The button variable is mandatory.'); // If not, quit
}
$button = (int) $_GET['button']; // Cast ?button to an integer
if ($button == 0) { // Check if it was an integer
die('Invalid button number.'); // If not, quit
}
// Do stuff with $button
Hier ist ein Blockschema:
Lassen Sie mich das erklären.
Die Tasten und andere IO bilden die Eingabe für den Mikrocontroller, den Sie verwenden werden. Dies wären die Schaltflächen, die Sie verbinden werden, aber es könnten auch andere Dinge sein, wie I2C / SPI-Geräte oder was auch immer.
Sie können Informationen von diesem IO mit grundlegender Chipprogrammierung erhalten . Der Chip muss Werte von den Eingängen lesen.
Der Chip (könnte ein PIC sein) mit Ethernet (könnte eingebaut sein) verarbeitet die Eingabeinformationen und überträgt sie an die IP des Servers , beispielsweise 192.168.0.10.
Dazu muss es zunächst über den TCP/IP-Stack an den Router auf IP 192.168.0.1 gesendet werden . Auf dem Chip merkt man das nicht. Es ist so, als würdest du den Server direkt kontaktieren.
Der Router verarbeitet das Paket und sendet es unter 192.168.0.10 an den Server . Sie müssen dies nicht tun, das erledigt der Router von selbst.
Der Server erhält eine HTTP-Anforderung und muss diese verarbeiten. Es sendet eine Antwort auf 192.168.0.10 zurück an den Router, der sie an den Chip weiterleitet. Dies ist im Blockschema nicht dargestellt, da es in dieser Anwendung nicht benötigt wird: Daten müssen vom Chip zum Server gesendet werden , aber nicht zurück.
Die Daten vom Chip können vom Server verwendet werden , um sie auf einem Bildschirm anzuzeigen, in einer Datei zu speichern oder etwas anderes damit zu tun. Das liegt ganz bei Ihnen.
Sie können auch, wie Olin in den Kommentaren vorschlägt, einen TCP-Server anstelle eines HTTP-Servers verwenden. Dies ist möglich und effizienter (was ein theoretischer Profi ist, Sie werden es nicht bemerken). Ich würde einen Starter im Netzwerk empfehlen, um mit einem HTTP-Server zu gehen. Es gibt jede Menge Informationen zum Thema und der Einstieg ist sehr einfach. Wenn Sie sich bereits mit Netzwerken auskennen, können Sie auch einen TCP-Server erstellen. Keiner der beiden Server wäre auf der Clientseite komplexer zu implementieren.
Ich würde vorschlagen, einen kostengünstigen Mikrocontroller namens "Electric Imp" zu verwenden, der klein ist (die Größe einer SD-Karte) und alles enthält, was Sie brauchen, um eine Taste zu haben, die eine sichere Verbindung über WLAN zum Internet herstellt und sogar funktioniert Batterieleistung.
Sobald Ihr Knopfdruck aus dem Internet ist, haben Sie natürlich 1001 verschiedene Möglichkeiten, was Sie damit machen können.
Eine wirklich nette Funktion ist, dass Ihre Code-Updates aus dem Internet auf das Gerät übertragen werden, sodass es vor Ort aktualisiert werden kann.
Holen Sie sich ein Mikro mit Ethernet-Fähigkeit, wie das PIC18F67J60, und verdrahten Sie alle Tasten damit. Das Mikro entprellt die Tasten. Wenn es Aktivitäten erkennt, die es wert sind, gemeldet zu werden, öffnet es eine TCP-Verbindung zu einem bekannten Server an einem bekannten Port, sendet die Informationen und schließt die Verbindung.
Jim Dearden
Olin Lathrop
Bläser