USB-Gerät mit Seriennummer und 3 LEDs

Ich suche nach einer Möglichkeit, einen USB-Stick zu bauen. Ich habe ein bisschen Erfahrung mit dem Arduino, aber für dieses Projekt scheint das ein bisschen übertrieben zu sein.

Der Schlüssel sollte eine eindeutige Seriennummer (EEPROM?) enthalten, entweder zu programmieren oder werkseitig einzustellen (was einfacher ist). Neben der Seriennummer muss ich 3 LEDs steuern. Jede LED hat 3 Zustände (ein, aus und blinkend).

Ich dachte, ich sollte mit einem CP2102-basierten USB-TTL-UART beginnen .

Für das EEPROM: AT25010B (SPI) oder AT24C01B (I 2 C) oder ein dedizierter Chip

Die Software (Linux) sollte mit dem RS232-Port sprechen und in der Lage sein, die Seriennummer abzurufen und jede LED auf die 3 verschiedenen Zustände einzustellen.

Ich habe über I 2 C und SPI gelesen. Ich glaube, SPI ist einfacher zu steuern, aber Sie brauchen mehr Pins, um es anzuschließen.

Meine Fragen sind:

1) Was wäre das bessere Protokoll I2C oder SPI (in Bezug auf die „einfache“ Implementierung)?

2) Angenommen, Sie können die LEDs und das EEPROM nicht direkt an den UART anschließen. Ich brauche einen Typ PIC, um die Kommunikation zu erleichtern. Was wäre ein PIC dafür?

Ich bin mir nicht sicher, ob es wichtig ist, aber: Sobald ich einen funktionierenden Prototyp habe, muss ich in der Lage sein, ein paar Hundert davon in Serie zu produzieren.

Wenn Sie mit Arduino vertraut sind, warum verwenden Sie nicht einen winzigen Eg1 E.g.2 oder erfinden einen mit einem kleinen Arduino-kompatiblen AVR-Mikro?
Kleiner Mikrocontroller (ATtiny), handvoll Diskrete und etwas Software: obdev.at/products/vusb/prjdisplay.html USB hat konstruktionsbedingt Platz für eine Seriennummer.
Verdammt, Sie könnten dies mit einem Tastatur-IC tun. Drei LEDs (Caps, Num, Scroll), steuerbar.
Ich weiß, dachte aber, dass es sich mit einem Arduino (sogar dem Winzigen) als übertrieben anfühlt. Die funktionalen Daten sind „super“ einfach. Abgesehen von meinem Mangel an Wissen suchte ich nach der einfachsten (komponentenweisen) Lösung.

Antworten (2)

Dazu benötigen Sie kein externes EEPROM. Holen Sie sich stattdessen einen Mikrocontroller mit EEPROM, der kleiner und einfacher zu verwenden ist, da Sie kein SPI- oder I 2 C-Modul mehr benötigen. Außerdem können Sie das EEPROM einfach vom Computer aus programmieren.

Im Grunde möchten Sie also einen PIC oder einen anderen Mikrocontroller mit:

  • (E)U(S)ART-Verbindung
  • EEPROM
  • 3 GPIO-Pins für die LEDs

Die meisten Mikrocontroller-Hersteller verfügen über ein Teileauswahl-Tool. Für Mikrochip ist das MAPS . So können Sie nachschlagen, welchen Chip Sie benötigen.

Für diese (sehr minimalistischen) Anforderungen reicht ein sehr kleiner Chip. Schauen Sie sich den PIC12F1822 an : 8 Pins, XLP, wenn Sie das brauchen, 256 Bytes EEPROM usw. Dieser Chip hat gerade genug E / A-Pins für Ihre drei LEDs.

Aus Ihrer Frage geht jedoch hervor, dass Sie ein Anfänger in PIC sind, und dann ist vielleicht ein etwas größerer, aber einfacher zu verbindender Chip ein besserer Start. Dann schauen Sie sich den PIC16F88 an : Er hat alles, was Sie brauchen, und mehr I/O-Pins, für mehr LEDs, falls erforderlich. Der Spaß am 16F88 ist, dass es einfacher zu programmieren ist. Für den 12F1822 haben sie alles in eine kleine Box gesteckt und Sie müssen alles (viel!) korrekt initialisieren, was besonders für einen Anfänger schwierig sein kann. Der 16F88 ist für den Anfang einfacher.

Super, danke (absoluter Anfänger!;-). Im Moment gibt es 3 LEDs. Ich habe die Frage aktualisiert. Ich schaue mir diese PICs an.
@Rogier gerne geschehen. Ich habe Ihr Update gesehen, der 12F1822 hat gerade genug E / A-Pins für drei LEDs und eine serielle Verbindung, aber ich würde Ihnen den 16F88 dringend empfehlen!

Möglicherweise können Sie mit nur einem FTDI USB-> Serial IC wie dem FT232R davonkommen

Ich habe keinen für eine Anwendung wie diese verwendet, aber das Datenblatt besagt, dass während der Herstellung eine Seriennummer eingebrannt werden kann (z. B. zur Verwendung als Sicherheits-Dongle) und der E / A-Port zum Ansteuern von LEDs konfiguriert werden kann.

Der FTDI-Chip hat den Vorteil, dass die Treiber auf vielen Plattformen verbreitet sind und unterstützt werden.

Die meisten USB-Seriell-Konverter, die auf dem FTDI-Chip basieren, haben 4 I/O-Pins. Jeder Pin kann unabhängig und on-the-fly als Eingang oder Ausgang programmiert werden. hackaday.com/2009/09/22/introduction-to-ftdi-bitbang-mode huitsing.nl/irftdi ftdichip.com/Support/Documents/AppNotes/AN232B-01_BitBang.pdf