Inhaltsverzeichnis:

SONIC LED FEEDBACK - Gunook
SONIC LED FEEDBACK - Gunook

Video: SONIC LED FEEDBACK - Gunook

Video: SONIC LED FEEDBACK - Gunook
Video: Монитор год спустя VIEW SONIC VX2370SMH-LED 2024, Juli
Anonim
SONIC LED FEEDBACK
SONIC LED FEEDBACK
SONIC LED FEEDBACK
SONIC LED FEEDBACK
SONIC LED FEEDBACK
SONIC LED FEEDBACK

Hallo nochmal, Hassen Sie, dass Ihr Roboter in alles läuft? Dies wird dieses Problem beheben. Mit 8 Schallsensoren sieht das kompliziert aus… aber tatsächlich habe ich es sehr einfach gemacht. Ich versuche, Projekte zu veröffentlichen, die Ihnen helfen, etwas über Arduino zu lernen und ein Konzept über den Tellerrand hinaus zu zeigen. Dieser Beitrag wird Ihnen helfen, die 595-Schaltung, Pro-Minis als programmierbare Sensoren und die großartige Nutzung von Echtzeit-LED-Feedback zu verstehen. Wenn Sie Arduino als "Kopieren und Einfügen und Plug-In" genießen, können Sie dies einfach überspringen.

Ich benutze gerne Pro-Minis. Sie kosten etwa 2,50 US-Dollar, funktionieren als vollwertiges Uno und die Installation von Headern macht sie sehr flexibel. Als Sensormikro können Sie es tun lassen, was Sie wollen, anstatt das, was ein gekaufter Sensor vorschreibt. Mit I2C mit nur 2 Drähten können sie alle auf einer Leitung verbunden werden. Wenn Sie also auf MEGA umsteigen, kann ich 4 Minis haben, die 4 separate Codezeilen gleichzeitig ausführen, für nur 10,00 US-Dollar. Hier verwende ich einen Mini, um die Schallsensoren durch einen 595 zu knallen und die Echtzeit-Led-Distanz anzuzeigen. Dann teilen Sie einfach 8 Bit Daten mit dem Motherboard. Dies entlastet das Motherboard und macht den Code sehr einfach.

Es gibt ein Problem mit Schallsensoren…keine visuelle Rückmeldung. Sie wissen nie, ob der Sensor nur ein Eigengewicht ist oder funktioniert! Ich glaube, wer jemals 'BLINK' erfunden hat, ist schlauer als Einstine. Nur EINE LED und eine Welt von Informationen wird durch das Blinken weitergegeben. Ein Schallsensor benötigt also Echtzeit-Feedback. Hier habe ich eine Reihe von LEDs verwendet, um jeden Sensor zu überwachen. Sie brauchen sie nicht, machen Sie einfach die Sensoren ohne die LEDs. Aber die LEDs auf der Platine zu haben, ist hilfreich.

Schritt 1: PCB HERSTELLEN

PCB HERSTELLEN
PCB HERSTELLEN
PCB HERSTELLEN
PCB HERSTELLEN
PCB HERSTELLEN
PCB HERSTELLEN
PCB HERSTELLEN
PCB HERSTELLEN

PCB erstellen und bestücken. VORSICHT … Ich habe auf der Platine an den 4-poligen Anschlüssen für die Schallsensoren einen Fehler gemacht. Die ECHO- und TRIGGER-Vcc und -Erdung würden in die Platine eingesteckt. Es gibt nicht genug Platz für Steckverbinder, also habe ich die Platine einfach mit Pin-Belegungen gemacht. So können Sie einen Drahtverbinder an die Platine anlöten und in die eigentlichen Schallsensoren einstecken. Was die LEDs betrifft, habe ich gelbe LEDs an der Innenkante und rote an der Außenseite angebracht. Dies hilft Ihnen, aus der Ferne zu sehen, ob die Sensoren richtig messen.

Dies ist eine der wenigen 2side-Platinen, die ich je gemacht habe. Ich würde lieber 2 EA Single Side and Run Jumper machen. Aber um die LED-Anzeige zu erhalten, benötigen Sie mindestens die oberste Platine. Ich habe das Layout im Download getrennt.

Die Platine ist für einen Pro-Mini mit A4-A5 im Edge-Header. So oder so verbinden Sie einfach A4-A5 mit dem Master A4-A5. Vergessen Sie auch nicht die Vcc und Grounds.

Schritt 2: VIELE FEHLER

VIELE FEHLER
VIELE FEHLER

Nun zu meinen Fehlern… Ich habe versucht, die Trigger auf einmal zu knallen (alle zusammengebunden) und das funktionierte irgendwie gut, aber einige Interaktionen fanden statt. Jetzt gehen also alle ECHOS zum Mikro (8) und die TRIGGERS werden durch eine 595 gesetzt. Drei weitere Pins (3). Bei den LEDs funktioniert Multiplexing nicht. Sie benötigen eine volle EIN-Zeit für jede LED. Dies bedeutet, dass jede Reihe von 7 LEDs einen eigenen 595 haben muss. Sobald Sie den 595 aktualisieren, bleiben die LEDs bis zum nächsten Update leuchten. Beim Multiplexen leuchtet die LED nur für diese Zehntelsekunde. Das funktioniert bei meinen Lesern gut und es braucht ein dediziertes Mikro. Keine Zeit für das Scannen von 8 Schallsensoren und das Messen von Entfernungen. Ich habe es versucht und sehr schlechte Ergebnisse bekommen. Das Multiplexen der LEDs bedeutet auch ein Raster aus Zeile + Spalte und das bedeutet etwa 64+ Durchführungen in der Leiterplatte.

Ich habe nur 7 Ausgänge vom 595 wegen Unordnung auf der Platine verwendet. Aus der Ferne können Sie nicht sagen, ob 7 oder 8 LEDs nur ihre Bewegung sind. Sie könnten versucht sein, alle LEDs an einen einzigen Widerstand zu binden, und dies funktioniert, aber die Helligkeit des Arrays ändert sich mit der Anzahl der LEDs, die beleuchtet sind. Ein Widerstand pro LED ist also am besten. Ich liebe die 595 einfach, aber wenn sie nur die Vcc- und 0-out-Pins verschoben oder ein 18-Pin-IC mit ALLEN Ausgängen auf der gleichen Seite gemacht würden … wäre es so einfach, alle acht Ausgänge zu verbinden. Aber dann würde es nicht für weniger als 30 Cent verkauft.

Schritt 3: SENSOREN MONTIEREN

MONTAGE SENSOREN
MONTAGE SENSOREN
MONTAGE SENSOREN
MONTAGE SENSOREN
MONTAGE SENSOREN
MONTAGE SENSOREN
MONTAGE SENSOREN
MONTAGE SENSOREN

Kleben Sie Schallsensoren auf den Kaffeedeckel. die männliche Buchse muss an jedem Sensor nach innen gebogen werden. Dies funktioniert besser, wenn Sie einen Stift nach dem anderen biegen. Ich habe 2 Seitenschaumband verwendet, nur damit die Vibrationen geringer sind. Meine Sensoren sind zu nah und benötigen einen 1/4 Zoll Platz, um besser zur Platine zu passen. Ich habe schon früher Schallsensoren verwendet, und manchmal misst einer nicht genau und Sie müssen dies im Hinterkopf behalten. KLEBEN Sie sie also nicht alle dauerhaft ein.

Es hilft auch, bei jedem einen schnellen Distanztest durchzuführen, bevor Sie ihn verwenden. Ich bekomme ungefähr einen Sensor mit einem schlechten Messwert in einer Charge von 20. Nicht schlecht für den Preis, den ich bezahlt habe.

Schritt 4: HARTER DRAHT

HARTER DRAHT
HARTER DRAHT

Ich dachte, da wäre Platz für Buchsen und Stecker vom PC zum

Schallstifte, aber ich hatte keinen Platz mehr. Also habe ich das PCB-Ende fest verdrahtet und nur Echo- und Triggerdrähte mit Buchsen (8ea) gemacht. Ich habe die 8ea Vcc- und 8ea-Masse der Sensoren zusammengebunden, so dass nur 2 Verbindungen zur Platine für sie hergestellt wurden.

Mit 8 Sensoren und 8 595s kann ein Uno oder Pro-Mini dies NICHT mit Strom versorgen. Im Rahmen dieses Projekts muss eine geregelte 5-V-Quelle vorhanden sein. Mein Roboter hat einen einfachen 7805 @ 1 Ampere aus den Batterien. Dies bindet an alle 5 V Vcc für alle Geräte. der 7805 fällt um etwa ein Volt ab, sodass Sie mindestens 6,5 Volt benötigen, um ihn zu speisen. Das sind 2 Lithiumbatterien bei 3,3 V. Mein Roboter hat alte Nikads aus gebrauchten Bohrerpaketen und 8 Nikads betreiben den typischen chinesischen 12-V-Getriebemotor im 20-Dollar-Panzerchassis.

Schritt 5: SONIC SKETCH HERUNTERLADEN

SONIC SKETCH HERUNTERLADEN
SONIC SKETCH HERUNTERLADEN

Laden Sie die Skizze herunter und installieren Sie sie. Es gibt viele Möglichkeiten, mit Ihnen zu sprechen

ein weiteres uno, aber ich mag I2c. die Verwechslung ist Adressierung und Master/Slave. Wie bei den meisten Sensoren (denken Sie an den 2nd mini als Sensor) adressieren Sie den Sensor und fragen nach x Bytes. Das selbe hier. Im 2. Mini legen Sie x Anzahl Bytes fest, die Sie senden möchten. Die Verwirrung ist, dass Namen keine Rolle spielen. Es hilft Ihnen nur, sich zu erinnern, wenn Sie die Namen teilen. In der Skizze sende ich also die 8 Schallabstandsmessungen in cm als sendR1, sendR2, sendR3, sendR4, sendL1, sendL2, sendL3, sendL4. Der Master erhält nur 8 Bytes an Daten und Sie können diese Bytes beliebig nennen. Ich lese sie als gotR1, gotR2, got….. Die gesendete Reihenfolge der Bytes ist dieselbe. Also Byte A, B, C….. denken Sie nicht, dass Sie durch die Änderung des Namens andere Daten erhalten. Und der andere Haken, Sie können nur Daten empfangen, die gesendet werden sollen. Wenn Sie also andere Daten wünschen, müssen Sie sowohl den Master als auch den Slave ändern.

Schritt 6: KOMMUNIKATION

KOMMUNIKATION
KOMMUNIKATION

Sie können dies überspringen, wenn Sie wissen, wie Sie 2 Unos so einrichten, dass sie miteinander sprechen. Ich habe noch ein paar Leckerbissen an Informationen am Ende. Der Einfachheit halber nenne ich das Uno in der Roboterbasis M1 und den Schallsensor als S2. Vcc, Masse, A4, A5 miteinander verbinden.

In der Skizze für den S2 beginnt es mit #include

Erstellen Sie dann die zu sendenden 8 Byte. Byte R1, Byte R2, Byte L1 usw. Uno ist ein 8-Bit-Mikro, daher senden sie jeweils 1 Byte mit "byte" anstelle von "int".

In 'setup()' füge 'Wire.begin(address)' hinzu, dies teilt I2c mit, um welches Gerät es sich handelt. Die Adresse ist normalerweise eine beliebige Zahl zwischen 4 und 200. Die Größe eines Bytes. Hier habe ich die Nummer 10 verwendet. Um also mit diesem Sensor S2 zu sprechen, muss der Master Wire.requestFrom(10, 8) aufrufen. Dies ist die Adresse 10 und die 8 ist die gewünschte Anzahl von Bytes. Fügen Sie auch in 'setup()' Wire.onRequest(isr anyName) hinzu. Wenn der M1 die Anfrage aufruft, reagiert der S2-Sensor mit dem Interrupt. Dies ruft einfach die Funktion anyName auf. Daher muss diese anyName-Funktion erstellt werden. Sehen Sie sich die Skizze an und sehen Sie sich die Funktion 'sendThis()' an. Hier werden die Bytes tatsächlich an den M1 gesendet. Die Bytes allein gehen und NICHT die Namen und in der Reihenfolge gesendet. Hier beginnt die Größe und Menge der zu sendenden Daten. In diesem einfachen Byte-Format sollten das Senden und das Empfangen übereinstimmen. Hier werden 8 Byte gesendet und 8 Byte empfangen. Ein Hinweis hier ist, dass der Aufruf einer Funktion die () erfordert. Wie delay(), millis(), Serial.print(). Bei Verwendung einer ISR (Interrupt Service Routine) lässt der Aufruf der Funktion die () fallen. Also Wire.onRequest(sendThis) nicht Wire.onRequest(sendThis()).

Die Verwirrung, die ich hatte, war die Master/Slave-Sache. Zuerst dachte ich, der Meister sei IMMER der Meister. Aber innerhalb des Sketches können Sie Master/Slave auf Anfrage von anderen Micros umschalten oder an andere Micros senden. Solange Sie das oben beschriebene Grundformat befolgt haben. Denken Sie daran… Sie teilen NUR Daten, die zugewiesen wurden.

Zwei von der Wand tid Bits. Der isr-Interrupt unterbricht nur zwischen Skizzenlinien. Wenn Sie in einer 'while- oder for'-Schleife gesperrt sind, passiert nichts, bis die Schleife beendet wird. KEINE große Sache, da dies einige Mikrosekunden sein können und die Daten alt sind.

Das andere Problem ist, dass "innerhalb" eines Mikros eine 100% fehlerfreie Berechnung stattfindet. Jede 'äußere' (Draht-) Kommunikation ist fehleranfällig. Es gibt viele Möglichkeiten, um zu überprüfen, ob die gelieferten Daten fehlerfrei sind und mit der Quelle übereinstimmen. Der einfachste Weg ist mit Prüfsumme. Addieren Sie einfach die Summen der sendenden Bytes (Istwerte) und senden Sie die Summen und addieren Sie auf der empfangenden Seite die Summen und sehen Sie, ob sie übereinstimmen. Wenn sie passen, oder werfen Sie diesen Datensatz, wenn sie dies nicht tun. Dies beinhaltet natürlich das Senden eines ganzzahligen Wertes und nicht von Bytes. Sie teilen also einfach den Integer in das HI-Byte und das LO-Byte auf und senden es als separate Bytes. Dann am Empfänger zusammenstecken.

EINFACH:

intx = 5696; (jeder gültige int-Wert, max ist 65k oder 32k negativ)

Byte hallo = x >> 8; (22)

Byte lo = x; (64)

sende die Bytes und kombiniere am anderen Ende….

Byte hallo = Wire.read();

Byte lo = Wire.read();

int newx = (hi <<8) + lo; (5696)

Schritt 7: SCHLIESSEN

SCHLIESSEN
SCHLIESSEN
SCHLIESSEN
SCHLIESSEN
SCHLIESSEN
SCHLIESSEN
SCHLIESSEN
SCHLIESSEN

Zum Schließen liefert dieser Schallsensor dem Motherboard Rohdaten zur Entfernung in Echtzeit. Dies gibt das Mikro frei und macht die Skizze viel weniger kompliziert. Das Mikro kann jetzt basierend auf guten Daten anstelle von zufälligen Vermutungen eine gute Entscheidung treffen, um zu verlangsamen, zu drehen, anzuhalten oder umzukehren. Siehe meinen anderen Beitrag über Bluetooth-IDE, um Skizzen ohne Kabel hochzuladen und Ihren Roboter ständig verbinden zu müssen, um Ihre Skizze schnell zu ändern. Danke, dass Sie sich das angesehen haben. altmaninsc.

Empfohlen: