Steuern Sie einen Furby mit Arduino (oder anderer Mikrocontroller)

9 Schritt:Schritt 1: Was Sie benötigen Schritt 2: Furby Bord pinouts Schritt 3: Anschließen Drahtband Schritt 4: Microcontroller-Pins Schritt 5: Sie die Stifte auf der Platine definieren und verbinden Schritt 6: Projekt 1: Grundmotorsteuerung Schritt 7: Ein Hinweis auf Furby Ausdrücke Schritt 8: Projekt 2: präzise Motorsteuerung Schritt 9: Anhang: Circuit Bending

Steuern Sie einen Furby mit Arduino (oder anderer Mikrocontroller)

The Million Dollar Furby: Wir können ihn wieder aufzubauen. Wir haben die Technologie.
Fortsetzung der vorherigen Instructable wo wir herausgeschnitten primitive Gehirn Furby ist, ist es nun an der Zeit, es mit etwas Größerem zu ersetzen.
Diese Instructable Willen Detail, wie eine neue Mikrocontroller an Stelle der alten Gehirn Furby zu installieren, was ihn in eine voll steuerbare Roboter Puppe. Wir haben vielleicht nicht eine Million Dollar, um ihn wieder aufzubauen, aber wir werden es nicht brauchen: Ich werde mit dem Arduino, einen Mikroprozessor und Brett, die unter 20 € kosten kann.
Anmerkung 1: Diese Schritte sind zu dem alten Furby mit den sich bewegenden Kunststoffaugen (Tiger Electronics, 1998-2001). Der neue ist in vielerlei Hinsicht anders!
Anmerkung 2: WARNUNG: Das ist nicht wirklich Projekt einen Anfänger. Ich versuchte, es zu machen "basic", aber es hat nicht geklappt. Ich würde sagen, es ist irgendwo zwischen "Advanced" und "Jedi". Bitten um Entschuldigung. Daher musste ich nehme an, Sie können löten, code, und selbst zu bauen einfache Roboter selbst.
Ich hole Sie zu dem Punkt, wo wir einige Code zu schreiben begonnen, aber nach, dass Sie auf eigene Faust! Der Grund dafür ist, den Zustand der Mikroplatten so schnell ändert, jeder Code habe ich in hier wird überholt in Wochen bis Monaten, und die Hardware veraltet innerhalb von wenigen Jahren. Stattdessen werde ich die Pinbelegung bereitzustellen, so können Sie, was Sie wollen Vorstand und losen Konturen, wie Steuersoftware arbeiten.
Viel Glück!

Schritt 1: Was Sie benötigen

  1. Steuern Sie einen Furby mit Arduino (oder anderer Mikrocontroller)

    Hier ist, was Sie für dieses Projekt benötigen:

    ein Furby, vorzugsweise bereits (aus den vorangegangenen Anweisungen) zerlegt ein Mikrocontroller und Verpflegung Ich verwende eine Mega Arduino 2560 , aber es könnte genauso gut eine der leichteren Arduinos ein Computer sein, um die Entwicklung und den Code laden einige Drähte (I ' m mit einem Flachbandkabel) einen Weg finden, um die Drähte an den Mikrocontroller-Board anschließen - Ich bin mit Stiften, um alles ordentlich Lötgeräte machen: Lötkolbenlötmittel Spitzzange Drahtschneider Abisolierzange ein paar Knöpfe

    Optional, aber sehr hilfreich:
    eine Möglichkeit, Draht und Teile zu halten, während Sie sie zu löten ein Netzteil (bis Furby Motor laufen) mehr Drahtstifte zu laufen: von Furby PCB zu seinem Ausgangspunkt Furby-Leiterplatten, um seinen Körper ein protoboard

    Puh!

Schritt 2: Furby Bord pinouts

  1. Steuern Sie einen Furby mit Arduino (oder anderer Mikrocontroller)

    Wenden Sie sich meine bisherigen Tutorial Furby sezieren und kennen zu seinem Brett.
    Entfernen Sie die Tochterkarten, die Furby Prozessor und Sprachsynthesizer zu halten. Ich habe ein eigenes Projekt zu (irgendwann) die Sprachsynthesizer board ... eines Tages!

    Hier ist eine Belegung für den Vorstand. Wir werden nicht mit allen von ihnen, aber hier sind sie für die Zukunft sind. Nummerierte gegen den Uhrzeigersinn von unten rechts:

    MAIN BOARD

    02 - / FEED - Sensor, negative Logik - Furby Zunge 03 - MOTOR REVERSE - einer der beiden Eingänge zu Furby die H-Brücke und Motor, der seine Augen, Ohren, Mund und Aufbauneigung 04 steuert - Motor nach vorne - die anderen H- Brückeneingangs 05 - GEAR LED - eine LED, die leuchtet, die Schlitze in dem Getriebe zum Motor Bewegung zu erkennen - müssen für die Motorsteuerung zu sein! 06 - / POWER DOWN - muss hoch angehoben werden für Hardware Furby zur Arbeit 07 - SOUND IN - zu Furby primitive Mikrofon 08 verdrahtet - LIGHT IN - primitive Lichtsensor Furby verdrahtet in der Stirn 09 - umgedreht? - Hoch erhoben, wenn Neigungssensor Furby ist den ganzen Weg auf den Kopf 10 - TILT? - Hoch erhoben, wenn Neigungssensor Furby ist gekippt. Beachten Sie, dass es sich tatsächlich um eine unbenutzte dritten Anschluss auf dem Neigungssensor, der auf wenn Furby ist "level" 11 - SELECT EEPROM - eine der wenigen datengesteuerte Pins. Diese wählt man Furby Erinnerung, die ich hier nicht Adressierung werden. 12 -? (Datenleitung zum 2. board) 13 - IR IN - Infrarotkommunikation Furby verwendet, um zu anderen Furbys 14 sprechen - IN SERIAL - verwendet, um die Sprach Synth und Speicher 15 zu steuern - (Datenleitung zum 2. board) 16 -? (Datenleitung zum 2. board) 17 - SERIAL OUT - verwendet, um die Sprach Synth und Speicher 18 zu steuern - SERIAL CLK - verwendet, um die Sprach Synth und Speicher 19 zu steuern - / RESET - negative Logik "Reset" Schalter unter Furby Schwanz 20 - BAUCH - die Taste an Furby Magen 21 - / BACK - die negative Logik-Taste auf Furby zurück 22 - GEAR ROTATION - hoch, wenn Sensor sieht Licht durch die Schlitze in der Getriebemotor Bewegung zu erkennen - einen wesentlichen Teil des Furby die Motorsteuerung 23 - / CAM HOME - negative Logik Sensor, der auf geht einmal pro Umdrehung des Furby Zahnrad 24 - für den Vorstand +5,31 V Strom - GND für den Vorstand 25

    SPEECH SYNTH BOARD

    01-06 - Datenleitungen, SERIAL IN / OUT / CLK 07 - GND 08 - + 6 V 09 - Lautsprecher + - eine von zwei Kontakte für den Bauch Lautsprecher 10 - Lautsprecher- - eine von zwei Kontakte für den Bauch Lautsprecher 11 - IR OUT - Infrarot-Kommunikation Furby verwendet, um zu anderen Furbys 12 sprechen - Datenleitung

Schritt 3: Anschließen Drahtband

  1. Steuern Sie einen Furby mit Arduino (oder anderer Mikrocontroller)

    Nächstes verbinden wir Drähte an diesen Kontakten.

    Ich bin mit Drahtband Sachen sauberer zu machen. Dies ist 25 Drähte zusammen befestigt.

    Die Haupttochterplatine hat 25 Kontakte von selbst - aber einige nicht auf das Band angeschlossen werden

    Ich bin mit einem Arduino-Board, so dass wir nicht die Macht oder Masse in der Multifunktionsleiste die Sprachausgabe ist ebenso entfernt worden brauchen, so dass wir nicht wirklich brauchen eine der seriellen Datenleitungen

    Aber wir müssen die verbleibenden Sensor / Aktor-Kontakte aus der zweiten Tochterkarte - vor allem die Lautsprecherausgänge

    Optional könnten wir:

    Draht der IR Ausgang des zweiten Tochterkarte ... nur für den Fall, dass wir auf IR-Kommunikations später verwenden verdrahten die serielle Datenleitungen ohnehin wollen - warum? so konnten wir die Furby "Gedächtnis" zugreifen und diese abrufen seinen Namen

    Allerdings glaube ich nicht genug Drähte in meiner Band, so dass ich nur schließen Sie die Lautsprecher und IR ohne Datenleitungen.

    Also:

      Erste Karte aus, welche Drähte gehen, an die Kontakte Stellen Sie sicher, jeder Draht ist lang genug, um seinen Kontakt zu bekommen! isolieren Sie die Drahtenden Lot

Schritt 4: Microcontroller-Pins

  1. Steuern Sie einen Furby mit Arduino (oder anderer Mikrocontroller)

    Steuern Sie einen Furby mit Arduino (oder anderer Mikrocontroller)

    Am anderen Ende des Bandes ist unsere Mikrocontroller.

    Wir müssen sicherstellen, dass die Bandkontakte mit dem Mikrocontroller kompatibel sind.

    Da ich mit einem Arduino, und es hat bereits Stifte auf seinem Brett header, muss ich Buchsenstifte auf das Band zu befestigen.

    Jetzt können wir in alle Sensorausgangssignale und Motor Eingänge angeschlossen haben.

Schritt 5: Sie die Stifte auf der Platine definieren und verbinden

  1. Steuern Sie einen Furby mit Arduino (oder anderer Mikrocontroller)

    Dieses Teil ist eine Frage des Geschmacks, aber wenn ich Code schreiben, ziehe ich nicht zu merken, welche Pins in welche Funktionen eingesteckt werden.

    So habe ich am Anfang des Codes, die Funktionen sind die Stifte definiert.

    Aber, weil ich manchmal ziehen Sie das Band und vergessen, was ging, wo ich definiert auch die Bandstifte.
    Deshalb habe ich drei Sätze von # definiert.

    Eine Probe - hier ist der Code, der die motorischen Funktionen definiert:

    Zuerst die Funktionen I definieren. Dies sind die Namen, die ich in den Code.
    Sie sind in Bezug auf die Stifte auf der Platine festgelegt.

    #define MOTOR_FORWARD U1_FORWARDMOTOR
    #define MOTOR_REVERSE U1_REVERSEMOTOR


    Weiter habe ich festlegen, welche Pins auf dem Brett zu gehen, an die Band Drähte:

    #define U1_REVERSEMOTOR RIBBON_A_8
    #define U1_FORWARDMOTOR RIBBON_A_7


    Schließlich wird das Band-Karten mit den Stiften auf der Arduino-Board. Diese können neu definiert, wenn ich stecken Sie das Farbband in anderen Teilen der Platine:

    #define RIBBON_A_7 36
    #define RIBBON_A_8 38


    HINWEIS: Was ist mit all den RIBBON_A Geschäfts fragen Sie?
    Ich brach das Band in Teile, und nannte sie, den Überblick zu behalten:
    RIBBON_A = große Band - 10 Pins RIBBON_B = kleine Schleife - 2 Stifte RIBBON_C = mittel ribbon - 7 Pins RIBBON_D = kleine Schleife - 3-polig
    Für mein Setup, ich sie in einer 11x2 Raster auf dem Arduino Mega angeordnet habe, so dass sie kompakt sind.
    RIBBON_A + RIBBON_B_0 RIBBON_C + RIBBON_D + RIBBON_B_1

    Schließlich definiere ich, wo meine Knöpfe zu gehen. Weil sie "negative Logik" Tasten sind, ist, dass LOW, wenn sie gedrückt, deren Namen mit "X":

    #define XBUTTON_FWD 52
    #define XBUTTON_REV 53

Schritt 6: Projekt 1: Grundmotorsteuerung

  1. Steuern Sie einen Furby mit Arduino (oder anderer Mikrocontroller)

    Steuern Sie einen Furby mit Arduino (oder anderer Mikrocontroller)

    Die meisten der schwierige Teil ist immer ein einfaches Beispiel arbeiten, so dass die programmatischen Ziele für diesen Schritt sind einfach:

    PHASE 1: Motortest - interactive
    drücken Sie eine Taste, und es geht nach vorne (ohne Halt) drücken Sie die anderen und es geht in umgekehrter Richtung (ohne Unterbrechung)
    Sie müssen zwei Tasten, mit Stiften auf Arduino und GND verbunden.

    Arduino muss zwei Funktionen, "Setup" und "Schleife".

    setup () fährt nur einmal. Es ist, wo Sie Ihre Stifte zu definieren.

    Leere setup () {
    // Ihre Setup-Code hier setzen, einmal ausgeführt:

    pinMode (XCAM_HOME, INPUT);
    digital (XCAM_HOME, HIGH); // Pullup

    pinMode (MOTOR_FORWARD, OUTPUT);
    pinMode (MOTOR_REVERSE, OUTPUT);

    // Button sind negative Logik
    pinMode (XBUTTON_FWD, INPUT);
    digital (XBUTTON_FWD, HIGH); // Pullup
    pinMode (XBUTTON_REV, INPUT);
    digital (XBUTTON_REV, HIGH); // Pullup

    } // Einrichten


    Als nächstes loop () - das läuft sehr oft, so dass Sie keinen Code hier so kurz wie möglich ausführen möchten:

    unsigned motorForwardP = 1;
    // Stellen Sie Ihre Haupt-Code hier, um wiederholt ausführen:
    Leere Schleife () {
    updateMotorFromButton ();
    } // Schleife

    Schließlich ist der Code, der die ganze Arbeit tut: es liest aus den Tasten und setzt die Motorstifte entsprechend. Wir setzen eine globale Flag zu markieren, in welche Richtung wir gehen.

    / * Lesen Taste und stellen Variablen entsprechend * /
    nichtig updateMotorFromButton ()
    {
    char forward = (digitalRead (XBUTTON_FWD) == LOW);
    char reverseButton = (digitalRead (XBUTTON_REV) == LOW);

    // Nichts tun, wenn beide gedrückt
    if (forward && reverseButton) return;

    if (forward) {
    motorForwardP = 1;
    moveForward ();
    }

    if (reverseButton) {
    motorForwardP = 0;
    moveReverse ();
    }

    } // UpdateMotorFromButton

    Hier ist die Dienstprogrammmethoden, die den Motor an oder aus vorwärts oder rückwärts drehen. Beachten Sie, setzen wir sowohl niedrige zunächst, um alle Zustände totaler Erschöpfung zu verhindern!
    // Motor Pins gesetzt, um voranzukommen
    nichtig moveForward ()
    {
    digital (MOTOR_REVERSE, LOW);
    digital (MOTOR_FORWARD, HIGH);
    } // MoveForward

    // Motor Pins gesetzt, um rückwärts bewegt
    nichtig moveReverse ()
    {
    digital (MOTOR_FORWARD, LOW);
    digital (MOTOR_REVERSE, HIGH);
    } // MoveReverse


    Jetzt testen!

Schritt 7: Ein Hinweis auf Furby Ausdrücke

  1. Steuern Sie einen Furby mit Arduino (oder anderer Mikrocontroller)

    Interessanterweise hat Furby nur ein Motor, um alle seine Teile zu steuern:
    Augen Mund Ohren Aufbauneigung
    Diese Positionen werden alle auf einem einzigen riesigen Nocken kodiert.

    Aber welche Positionen sind, wo?
    Wir brauchen eine einfache Möglichkeit, um die Nocke zu lesen, oder wir werden einen Weg finden, Furby eine Nocken-tick in einer Zeit unter Kontrolle brauchen!

Schritt 8: Projekt 2: präzise Motorsteuerung

  1. Steuern Sie einen Furby mit Arduino (oder anderer Mikrocontroller)

    Jetzt wollen wir die Tasten, um Furby cam nur eine einzige Nocken Schritt nach vorne oder nach hinten zu verschieben.
    Danach werden wir auch wollen, einen Indikator, wenn der Nocken geht zu seinem "Heim" -Position.

    Zu diesem Zweck werden wir die LED-Encoder benötigen. Wenn Sie zurück in die PCB Pinout harken, werden Sie daran erinnern,
    Zahnraddrehung, die die Perforationen in Furby cam erkennt, wie er sich bewegt GEAR LED, die die LED-Lichter durch die Nocken CAM HOME, die, wenn der Nocken in der "Home" -Position aktiviert
    Was wir tun werden ist die Beleuchtung der LED, und gerade die Drehsensor.
    Im Umriss:
    Erste diese neuen Stifte definieren wir und stellen Sie sie in Start () Wir sagen Start (), um zu sehen: die Taste (n) Stifte (vorwärts gehen und GO REVERSE) und Sensorstift (GEAR ROTATION) ..., und führen Sie "Geber", wenn alle Änderungen Als nächstes müssen wir Encoder (), die read_button ruft und read_sensor read_button zu schreiben - die Unterbrechung von einem der Knöpfe setzen MOTOR FORWARD oder REVERSE MOTOR Ausgang Encoder () read_cam_sensor - die Unterbrechung von dem Nocken bewegt
    liest CAM HOME - sind "Heimat"? Wenn wir, setzen unsere bekannte Position. Wenn nicht, fahren Sie ab dem letzten bekannten Position. wenn ja, in welche Richtung wurden wir hin? (MOTOR FORWARD oder REVERSE MOTOR) daraus berechnet die neue Position den Motor zu stoppen! Stellen Sie beide Motor FORWARD und REVERSE MOTOR ausgeschaltet.

Schritt 9: Anhang: Circuit Bending

  1. Steuern Sie einen Furby mit Arduino (oder anderer Mikrocontroller)

    Die dunkle Kunst des Furby Technik!
    Die meisten Schaltungs Biegen ohne Kenntnis, wo der Effekt herkommt getan. Experimentatoren sind buchstäblich Verbindungs ​​zufällige Punkte zusammen. Das bedeutet relativ oft sie sich bewegen, um elektrischen Strom empfindliche Transistoren innerhalb integrierter Schaltungen in Richtungen und Mengen, die nicht von den Konstrukteuren nicht vorhergesehen wurden.
    Was bedeutet das schließlich diese Verbindungen werden die Innenseiten Furby braten In den meisten Fällen wird dies als akzeptabel -?. Die Furby (oder andere Spielzeug) ist im Grunde Junk und Experimentatoren geben dem Spielzeug ein neues Leben.
    Jedoch mit genügend Analyse, sollte es möglich sein, durch Reverse Engineering ein Furby (oder jede andere Spielzeug) erhalten diese seltsamen Effekte und das Gerät nicht brechen. Ich bin gerade Sayin '. Natürlich an diesem Punkt könnte es einfacher sein, ein neues Gerät von Grund auf neu zu gestalten, aber komm schon! Haben Sie etwas Stolz in der Kunstfertigkeit hier, Leute!
    Mit dieser Garantie Vorbehalt im Verstand, gibt es viele weitere Online-Ressourcen zur Verfügung.
    Zum Beispiel, besuche http: //circuit-bent.net/furby-bending-tutorial.ht ...
    Hier sind einige beliebte Punkte, wie Kevin Rees und zusammengefasst Patch-wrangler .
    Von Flecken Wrangler, der diese Punkte Einhaken bis zu einer Computer-Maus:
    Der gemeinsame Punkt auf der furby (+ V) wird an die gemeinsame auf der Maus Bord über weiße Draht. Glitch Punkt, um linke Maustaste über braunen Draht. Loop 1 Punkt auf mittlere Maustaste über grünen Draht (führen ein). Dies ist die bessere Loop-Punkt, das nächste Mal bewegen sie auf die rechte Taste Loop 2 Punkt rechte Maustaste über gelbes Kabel (führt ein). Reset-Schalter an einer Seite des Bildlaufschiene über grünen Draht (führen zwei). Reset-Schalter, um andere Seite blättern Switcher über gelbes Kabel (führen zwei).