Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

WalaBeer Tank

Komponenten und Verbrauchsmaterialien

Walabot Creator
× 1
Arduino MKR1000
× 1
Raspberry Pi 3 Model B
× 1
Amazon Alexa Amazon Echo
oder https://echosim.io/
× 1
SparkFun-Motortreiber - Dual TB6612FNG (1A)
× 1
Tankrahmen (enthält 2 bürstenbehaftete Gleichstrommotoren)
× 1
Servos (Tower Pro MG996R)
× 3
Metallbaukasten
× 1
Schrittmotor + Treiber
Ich habe einen 28byj-48-Schrittmotor und einen X113647-Motortreiber verwendet
× 1
7,4 V LiPo-Akku
× 1
7.4V LiPo-Akkuladegerät
× 1
Drehpotentiometer (allgemein)
× 1
LED (generisch)
Ich habe ein Segment eines LED-Streifens verwendet
× 2
Angelschnur
× 1
Dünnes Plastik oder hartes Papier für das Cover
× 1
5-V-BEC-Schaltung
× 1
Widerstand 10k Ohm
× 1
Widerstand 22,1 kOhm
× 1
Widerstand 2,21 kOhm
× 1
Darlington Hochleistungstransistor
× 1
30 cm lange Holzlineale
× 2
Voltmeter
Dies ist optional
× 1
RC-Sender mit Empfänger
Dies sind optionale Teile zur manuellen Steuerung des Tanks. Es kann ohne Fernbedienung funktionieren.
× 1
Bier
× 1

Notwendige Werkzeuge und Maschinen

Lötkolben (generisch)
Heißklebepistole (generisch)
Sägewerkzeug
Drill
Raspel

Apps und Onlinedienste

Arduino-IDE
Amazon Web Services AWS IoT
Amazon Web Services AWS Lambda
Amazon Alexa Alexa Skills Kit
Walabot SDK
Python

Über dieses Projekt

Zusammenfassung

Es gibt Dinge, die jeder Mann tief im Inneren haben möchte. Die Kombination von Bier und Tanks ist eines dieser Dinge! In diesem Projekt geht es um dieses Ding, einen sprachgesteuerten Tank, der Ihnen mit einer autonomen "Follow-me"-Funktion oder mit einer RC-Steuerung Bier liefert. Lass uns den Biertank unserer Träume bauen!

Fahrgestell

Wir brauchen eine gute Basis für den Panzer. Ich habe dieses Chassis bei Banggood gefunden. Es war ziemlich billig und es sah so cool aus, dass ich eines kaufen musste.

Gleich nach Erhalt der Ware kam das erste Problem. Durch die unsachgemäße Verpackung erlitt es beim Versand einige schwere Verletzungen.

Es hat viele Stunden und viel Kleber gedauert, aber zum Glück konnte ich es meistens reparieren.

Kran

Das Tankchassis enthält sowohl die Motoren als auch die Getriebe, also bestand der nächste Schritt darin, herauszufinden, wie das Bier serviert wird. Nach zahlreichen Ideen habe ich herausgefunden, dass es am besten und coolsten ist, das Bier zu verstecken und dann mit einem Kran anzuheben. Dies ist das grundlegende Design, das ich mir ausgedacht habe:

Ich habe meinen alten Metallbausatz verwendet, weil ich ein starkes, aber leicht zu modifizierendes Skelett brauchte. Der Kran ist mit einem Schrittmotor mit einer Angelschnur verbunden. Der 28byj-48 Schrittmotor war für diesen Zweck großartig. Es ist nicht schnell, aber es könnte den Kran und das Bier leicht anheben. Tatsächlich ist der Motor so stark, dass er, wenn ich ihn nicht rechtzeitig stoppte, die Angelschnur brach.

Es funktionierte wunderbar, allerdings war das Skelett nicht stark genug und begann sich sehr früh zu verbiegen. Um dieses Problem zu lösen, musste ich die strukturelle Integrität erhöhen. Ich habe zwei, 30 cm lange Hartholzlineale und einige zusätzliche Teile verwendet, um es stärker zu machen. Nach einigem Bohren, Sägen und Raspeln kommt hier die nächste Version:

Wie Sie sehen, haben die Modifikationen das Biegeproblem gelöst und es ist sehr stabil.

Fall

Ein Walabot (Entwicklerversion) wird das „Auge“ des Panzers sein. Mehr zu Walabot im Abschnitt Walabot. Der vordere Platz hat ein Halterteil für den Walabot. Ich hatte ein Metallteil, das die perfekte Größe hat, um den Magnethalter von Walabot zu verwenden. Ich habe auch eine Walabot-Logoform aus Heißkleber gemacht, um zu verhindern, dass sich der Walabot auf dem runden Teil dreht:

Die magnetische Halterung ist großartig, da ich einen Walabot problemlos in mehreren Projekten ohne ernsthafte Demontage verwenden kann und er auch stark genug ist.

Ich fing an, eine Abdeckung um den Rahmen zu machen, um die Teile zu verbergen. Für das Cover habe ich schwarzes Kartonpapier und Plastikfolien verwendet.

Zu diesem Zeitpunkt war der vordere und mittlere Teil nicht bedeckt. Ich brauchte auch eine Luke auf der Oberseite, um das Bier vollständig zu verstecken. Um die Luke zu bewegen, habe ich zwei Servos verwendet, einige heiße Blau und etwas Isolierband. Diese obere Tür dient nur dem Design, sie schützt das Bier nicht wirklich. Es ist jedoch sehr kühl, wenn es sich öffnet und das Bier erhöht.

Die Türen bestehen aus zwei Plastikplatten, Holzstäbchen und etwas geklebtem und aufgerolltem Papier, das mit Heißkleber zusammengeklebt wird. Es ist nicht das Schönste, aber im wirklichen Leben sieht es nicht so schlimm aus. Ich habe alles schwarz gestrichen. Im wirklichen Leben ist es viel schwieriger, den Unterschied zwischen den schwarzen Teilen zu erkennen.

Kran - Vol.-Nr. 2

Kommen wir noch einmal zum Kran. Ich brauchte noch etwas, um es zuverlässig nutzen zu können:Feedback.

Ursprünglich wollte ich dafür ein einfaches binäres Feedback verwenden. Wenn sich der Kran im abgesenkten Zustand befindet, würde er einen Stromkreis schließen. Im angehobenen Zustand würde es sich öffnen:Die Schrauben und die Feder im roten Kreis wären dieser Schalter gewesen. Es hätte einen Timer verwendet, um die oberste Position zu bestimmen.

Es war nicht zu anspruchsvoll, aber die Idee ist aufgegangen. Leider war es überhaupt nicht zuverlässig, so dass es leicht zu einer Beschädigung des Krans hätte führen können.

Ich habe mir eine andere, viel bessere Lösung einfallen lassen, die im blauen Rechteck. Ich habe ein 10K-Potentiometer auf die und die Kranwelle geklebt, damit ich ein zuverlässiges Feedback über den aktuellen Winkel des Krans habe. Auf diese Weise ist es sehr einfach, die obere und die untere Position zu bestimmen. Zu Ihrer Information:Bis zu diesem Punkt habe ich mein gutes altes Arduino Uno zum Testen verwendet, weil sein Proto-Schild so praktisch ist.

Eigentlich mag ich diesen Feedback-Teil sehr. Es war nicht geplant, aber es verleiht dem Aussehen des Panzers zusätzliche Coolness.

Schaltung

Alles klar, der Tankkörper ist fertig, aber wir brauchen etwas Elektronik, um ihn in Bewegung zu setzen!

Ich habe dieses Bild auch in den Schaltplanbereich eingefügt, aber hier können Sie es ohne Download vergrößern. Die Strecke mag auf den ersten Blick etwas komplex erscheinen, aber eigentlich ist sie ziemlich einfach. Die beigefügten Hinweise sollten bei allem helfen, was einer Erklärung bedarf.

Dieses Projekt verwendet derzeit nicht die WiFi-Funktionalität des Arduino MKR1000, aber wie ich weiß, kann man es nicht einfach durch ein Arduino Uno ersetzen, wenn man den Panzer mit einem RC-Sender steuern möchte. Mein Projekt verwendet 3 Kanäle zur Steuerung der Geschwindigkeit, des Drehens und des Krans. Ich brauche 3 Pins mit externer Interrupt-Fähigkeit. Arduino Uno's haben zu diesem Zweck nur 2 Pins. Wir benötigen diese Pins, um die PWM-Werte der entsprechenden Kanäle des RC-Empfängers zu lesen.

Ich baute die Schaltung auf einer Proto-Platine. Es ist recht kompakt geworden. Die blaue LED auf der linken Seite wäre eine einfache "eingebaute" LED zum Debuggen gewesen, aber ich habe sie nie wirklich verwendet. Der grüne Stecker dient zum Anschließen des LiPo-Akkus.

Die meisten Kabel, die mit dieser Platine verbunden sind, befinden sich im oberen Teil des Tanks. Es lag auf der Hand, die Platine dort zu kleben, um die „Drahthölle“ zu vermeiden.

Wie Sie auf dem Bild sehen können, habe ich ursprünglich mit einem Raspberry Pi Zero W angefangen, aber aufgrund des Mangels an Leistung wechselte ich zu einem Raspberry Pi 3 B.

Es funktionierte zu diesem Zeitpunkt perfekt, aber ich fügte ein zusätzliches cooles Feature hinzu:versteckte Stirnlampe. Das schwarze Kunststoffteil rechts lässt sich leicht verschieben. Ich habe ein Servo angebracht, um es nach oben und unten zu bewegen, und ich habe auch ein Segment eines 12-V-LED-Streifens verwendet. Es ist keine gute Idee, einen 12-V-LED-Streifen mit einem 7,4-V-LiPo-Akku zu betreiben. Die Lichter werden sehr schwach sein. Ich habe die mittlere LED durch einen Draht ersetzt, um die restlichen LEDs hell zu machen. Es hat perfekt funktioniert.

Die Front-LEDs werden mit dem gleichen Pin wie die blaue Anzeige-LED angesteuert. Ich musste das Board leicht modifizieren, indem ich einige zusätzliche Header und einen Transistor hinzufügte. Das Ergebnis ist genial:

Arduino - Hardware

Ich habe einen Arduino MKR1000 verwendet, um den Tank zu steuern. Dies ist das kleinste Arduino- oder Arduino IDE-kompatible Gerät in meiner Sammlung, das 3 externe Interrupts verarbeiten kann und genügend Pins für dieses Projekt hat. Es hat auch WiFi-Funktionen, aber das werde ich jetzt nicht verwenden.

Der Tank benötigt 5 PWM-fähige Pins. 3 für die Servos und 2 für die Motoren. Wenn Sie die Fähigkeiten überprüfen, sehen Sie, dass es 12 PWM-fähige Pins gibt. Das ist gut genug, oder? Nun ja und nein.

Pins 2-5 haben die ~-Markierung. Ich glaube, es bedeutet, dass nur diese vier Pins in der Lage sind, Hardware-PWM-Signale zu erzeugen. Ich denke, die anderen Pins können nur Software-PWM-Signale erzeugen. In den technischen Daten steht nichts darüber, aber als ich meinen ersten Prototypen MKR1000 bekam, erwähnte die Dokumentation nur 4 PWM-fähige Pins. Diese vier. Ursprünglich habe ich die Lukenservos über zwei dieser Software-PWM-Pins gesteuert. Die Kombination aus Software-PWM-Erzeugung und Hardware-Interrupt-basiertem PWM-Signallesen führt zu diesem Problem:

Ich habe dieses Problem gelöst, indem ich Hardware-PWM-Pins für die Servos verwendet habe. Leider musste ich einen dieser Pins für das Servo der LED-Tür verwenden, da die anderen beiden Hardware-Pins zur Steuerung der Motoren benötigt wurden. Dank des TB6612FNG Motortreibers benötigte ich nur zwei PWM-Pins (und 4 weitere digitale Pins) um die Motoren zu steuern. Das Servo der 'LED-Tür' ist viel langsamer als die anderen, so dass es manchmal nur ein leises Summengeräusch macht. Auch die Verwendung von nur einem Software-PWM-Pin anstelle von zwei hat geholfen. In Zukunft könnte ich diesen Teil umbauen, um die Tür der LEDs auf andere Weise zu öffnen. Magnet(e) könnten den Zweck erfüllen.

Der Arduino kann die Spannung der Batterie messen und dann seriell senden. Außerdem habe ich ein einfaches Voltmeter in die Rückseite des Tanks integriert. Es dient als Rückmeldung für den Benutzer über den Zustand der Batterie. Es ist eine separate Schaltung und wird nicht vom Arduino gesteuert.

Arduino - Funksteuerung

Der MKR1000 verarbeitet 3 separate PWM-Signale mit externen Interrupts. Die Pulszeit der Signale liegt im Bereich von etwa 1000 und 2000 us. Der erste Kanal wird verwendet, um eine Variable namens motorSpeedBase zu berechnen. Sie ist die Grunddrehzahl für die Motoren und wird wie folgt berechnet:

motorSpeedBase =(vertikal_pulse_time - 1500) / 2; 

Zur Steuerung der Motoren habe ich 8-Bit-PWM-Signale verwendet, also habe ich die Werte auf diesen Bereich von -255 bis 255 skaliert. Der MKR1000 kann mehr als 8 Bit, aber für diese Motoren ist er mehr als gut genug.

Die Variable motorSpeedChange dient zum Rühren und wird aus dem zweiten Kanal berechnet. Es wird ähnlich wie motorSpeedBase berechnet. Der Unterschied ist die Division durch 3 statt 2:Dieser Unterschied hilft, den Tank zu kontrollieren.

motorSpeedChange =(horizontal_pulse_time - 1500) / 3; 

Der 3. Kanal wird von einem einzigen Schalter verwendet. Es steuert die Bewegung des Krans und der Lukentüren. Es wird wie folgt berechnet:

erhöht =state_switch_pulse_time <1500; 

Sein Wert beträgt im ausgeschalteten Zustand 1000 us und im eingeschalteten Zustand 2000 us. Das Ergebnis ist ein bool.

Die endgültige Motordrehzahl wird wie folgt berechnet:

int rightMotorSpeed ​​=motorSpeedBase + motorSpeedChange; int leftMotorSpeed ​​=motorSpeedBase - motorSpeedChange; 

Wenn das Ergebnis höher / niedriger als der Maximal- / Minimalwert ist, wird der Wert auf den Maximal- / Minimalwert (255 oder -255) gesetzt. Die zugehörigen Pins werden basierend auf den motorSpeed-Werten aktualisiert. Wenn ein Geschwindigkeitswert den Mindestwert nicht erreicht, wird dieser Motor deaktiviert.

Der Kran und die Luke werden von dieser Funktion gehandhabt:

void handleCrane() { int CraneValue =analogRead(CRANE_FEEDBACK_PIN); if (erhöht) { if (craneValue  

Es beginnt mit der Überprüfung des aktuellen Zustands des Krans. Wenn es angehoben werden muss, aber dies nicht der Fall ist, aktualisiert es die Servos der Lukentüren und bewegt den Kran nach oben. Wenn er abgesenkt werden soll, dies aber nicht der Fall ist, senkt er den Kran ab und schließt dann die Luke. Die Spulen des Schrittmotors müssen am Ende des Vorgangs deaktiviert werden, da sie sich stark erhitzen und den Akku entladen können, wenn wir einen eingeschaltet lassen.

Arduino - Raspberry Pi-Kommunikation

Der Arduino wird über ein USB-Micro-USB-Kabel mit dem Raspberry Pi verbunden und mit Strom versorgt, und sie kommunizieren seriell. Der Raspberry steuert den Arduino mit diesen Befehlen:

  • s --> Funksteuerung ausschalten und nur serielle Befehle akzeptieren. Der Arduino antwortet darauf mit 'OK' und deaktiviert die Funksteuerung. Dieses OK ist ein Teil davon, wie das Rpi das Arduino erkennt.
  • r --> Funksteuerung wieder einschalten
  • e --> Kran anheben (und damit die Luke öffnen)
  • d --> Kran absenken
  • m X Y -> Einstellen der Drehzahl der Motoren. X ist motorSpeedBase und Y ist motorSpeedChange. Sowohl X als auch Y müssen ganze Zahlen sein
  • b --> das Arduino antwortet mit einer ganzen Zahl:Batteriespannung * 100
  • l --> Beleuchtung einschalten
  • o --> Beleuchtung ausschalten

Es muss beachtet werden, dass der Arduino bei serieller Steuerung die Interrupts auf RC-Kanal 1 und 2 deaktiviert, aber nicht auf 3. Kanal 3 (der Schalter) wird als Sicherheitsschalter verwendet, um den WalaBeer Tank zu deaktivieren, wenn er verrückt wird Dinge im autonomen Modus.

Walabot

Hier kommt Walabot ins Spiel. Walabot ist ein 3D-Sensor, der Mikrowellen für die Bildgebung verwendet. Es kann erstaunliche Dinge tun, wie durch Wände sehen, Ihre Atmung aus der Ferne erkennen, im Dunkeln sehen und so weiter. Ich möchte keine Seiten über seine anderen Fähigkeiten schreiben, weil andere das großartig gemacht haben. Ich empfehle jedoch wirklich, darüber zu lesen.

Ich werde Walabot als einzigen Navigationssensor am Tank verwenden. Um den Walabot mit dem Raspberry Pi zu verwenden, müssen wir zuerst das Walabot SDK installieren. Sie können das SDK hier herunterladen und die Walabot API-Site hilft Ihnen bei der Installation. Dort finden Sie viele nützliche Informationen und Beispiele zur Verwendung von Walabot. Ich empfehle, die Website zu überprüfen.

Der Stromverbrauch des Walabot liegt zwischen 0,4-0,9A. Dies bedeutet, dass der Raspberry Pi standardmäßig nicht genug Energie bereitstellen kann, um den Walabot mit Strom zu versorgen. Glücklicherweise gibt es eine Möglichkeit, die Leistung der USB-Ports des rpi zu erhöhen, indem Sie diese Zeile:`max_usb_current=1` zur /boot/config.txt hinzufügen. Wie ich weiß, erhöht es die Ausgangsleistung von 600mA auf 1200mA.

Das wäre toll, aber hier kommt ein Problem:Ich versorge auch den Arduino und die Servos vom Raspberry. Die Motoren des Tanks und des Schrittmotors werden von der Batterie gespeist, daher dachte ich, dass es keine Rolle spielen sollte. Es tut jedoch. Wenn ich den Walabot in diesem Zustand starte, stoppt er mit der Nachricht WALABOT_ERR_PROTOCOL. Möglicherweise tritt ein Brownout auf, wenn ich versuche, es zu starten.

Die Batterie-Eliminator-Schaltung kann bis zu 3A liefern, das ist hier also mehr als genug. Der Walabot verfügt über zwei Micro-USB-Anschlüsse. Der mittlere Port wird mir in dieser Situation helfen, da er von dort mit Strom versorgt werden kann, während auf dem anderen kommuniziert wird. Dazu musste ich eine Modifikation vornehmen und die Abdeckung des Walabot entfernen, um diesen Jumper zu verschieben

Danach funktionierte der Walabot einwandfrei, kein WALABOT_ERR_PROTOCOL mehr.

Das Logo auf der Rückseite (der glatte Teil ist die Vorderseite) enthält vier sehr starke eingebaute Magnete. Diese wurden verwendet, um den Walabot ohne zusätzliche Hardware einfach an der Metallfront des Panzers zu befestigen.

Folge mir

Eines der Verkaufsargumente des Panzers ist sein Follow-Me-Modus. Wenn Sie den Biertank bitten, Ihnen zu folgen, wird er sein Bestes tun und Ihnen folgen. Wenn Sie Ihr Ziel erreicht haben, fragen Sie einfach nach dem Bier im Inneren. Es ist ein toller Partytrick!

Das Walabot SDK bietet alle Arten von Möglichkeiten, mit dem Walabot zu interagieren. Mein Projekt verwendet die getTargets Funktion mit Moving Target Identification (MTI)-Modus. Es wird verwendet, um sich bewegende Objekte vor dem Walabot zu erkennen. Mit meiner Konfiguration gibt getTargets maximal 4 Ziele zurück und sieht Objekte in einer maximalen Entfernung von 1,5 Metern.

Die Ziele haben XYZ-Koordinaten und einen Amplitudenparameter. Ich verwende nur Y- und Z-Koordinaten, da die Höhe (X) hier nicht wichtig ist. Das Problem ist, dass es keine Möglichkeit gibt zu sagen, welches Ziel was ist.

Um den Menschen in der Zielliste zu finden, habe ich in der frühen Version eine Regel erstellt:Bevor du ihm befiehlst, dir zu folgen, musst du in 80cm Entfernung vor dem Walabot stehen. Danach geht mein Code davon aus, dass das nächste Objekt mit einer ausreichend hohen Amplitude der Mensch ist. Wenn der Mensch erkannt wird, muss der Panzer den Menschen nur durch Bewegung in der gewünschten Position halten.

Leider war es nicht perfekt. Zum Glück habe ich einen Vorschlag für einen anderen Ansatz bekommen. Es beginnt gleich:Sie müssen in 80cm Abstand vor dem Walabot stehen. Das dem Panzer am nächsten liegende Ziel wird als Mensch betrachtet. Danach ist die Position des Menschen in jeder Iteration das nächste Ziel zur vorherigen Position. Wenn der Abstand zwischen der neuen und der alten Position zu groß wäre, aktualisiert der Panzer die Position des Menschen nicht und stoppt. Der Panzer wird versuchen, den Menschen in der Nähe der alten Position zu finden. Wenn er die Person findet, wird er ihm weiterhin folgen. Es ist eine ziemlich einfache Idee.

Sehen wir uns einige Fälle in der Arena-Ansicht an. Das Ziel des Panzers ist es, den Menschen im Zielbereich (rotes Rechteck) zu halten. Das Blau ist in diesen Fällen am nächsten und das ist der Mensch:

  • Fall 1:Der Mensch befindet sich im Zielbereich, daher ist keine Bewegung erforderlich
  • Fall 2:Der Mensch ist rechts und er ist zu nah am Tank. Zuerst dreht sich der Panzer nach rechts, dann entfernt er sich vom Menschen, indem er rückwärts geht.
  • Fall 3:Der Panzer muss sich nicht drehen, aber der Mensch ist zu weit weg. Es wird vorwärts gehen. Der Walabot hat 3 Ziele gesehen, als ich dieses Bild gemacht habe
  • Fall 4:Es gibt nur ein Ziel in diesem Bild und es befindet sich auf der linken Seite. Der Panzer bewegt sich nach links und dann nach vorne.
  • Fall 5:Der Panzer fährt rückwärts, bis sich der Mensch im roten Rechteck befindet.

Diese Bilder sind Druckbildschirme der Arena-Ansicht einer leicht modifizierten Version der Walabot-SensorTargets-Demo. Mein Projekt braucht keine GUI und hat daher keine GUI, aber es verwendet die gleichen Prinzipien. Ich empfehle, sich die anderen Demo-Projekte von ihrer Github-Seite anzusehen.

Die Bewegung mit dem aktuellen Setup ist nicht zu flüssig. Es kann nicht gleichzeitig vorwärts fahren und sich im autonomen Modus drehen. Der Hauptgrund dafür ist die Framerate des Walabot. Mit den aktuellen Einstellungen sind es etwa 6 FPS. It means that the Raspberry gets one update in every 0.16 seconds. This is a problem. A lot can happen in 0.16 seconds. To overcome this issue I slowed down the tank. I used the minimum possible speed to move forward and to turn. I also removed the combination of turning and moving because those movements wasn't reliable with my tracked setup. At higher speeds they overshot a lot and at lower speeds they were less reliable than the current version.

Voice control

In autonomous mode I needed a cool way to control the tank. I used Amazon's Alexa Skill Kit to do this. In the early version I used it with ngrok to directly control the Raspberry. Usually people would be using a version of the Amazon Echo to do this, but unfortunately I don't have such device. I had to use echosim and the Amazon Alexa app from Google Play to do this. The name of the skill is Beer Tank because WalaBeer is something that Alexa doesn't recognize. Buy beer, love beer, etc, but not WalaBeer. You can use these commands to interact with Alexa:

  • start beer tank
  • turn {on/off} the lights
  • {open/close} the cargo hold
  • {start/stop} following me
  • [stop/cancel]

Here's a video about the first two capabilities:

Some of the voice commands in the video might differ from the current commands due to some requirements during the publishing process (e.g:'stop' changed to 'stop following me'). Controlling a Raspberry Pi using Alexa is very easy, however to get the knowledge to do that is not. For the first time I used ngrok and it was super easy to do this but ngrok is only good for testing purposes. The URL provided by ngrok will change after every restart and there are other problems too. Long story short, I needed a better solution.

I moved on to using AWS Lambda and AWS IoT. They are perfect for my purpose but it was quite difficult to find useful information about how to use them. I mean I found lots of partial tutorials and documentation but usually they were missing some crucial information and/or just didn't work. Finally, I found the youtube channel of Kurt Braun. He made an excellent tutorial that helped me a LOT. I really recommend his videos if you want to use AWS Lambda and AWS IoT:

This other video also helped me when I did the experimenting part. I won't go into details about configuring Lambda and AWS IoT, these videos are containing every necessary information about this topic.

He used Node-RED in his videos. That is a very useful tool, however I needed to use Python instead of JavaScript. Amazon provides an SDK for Python, but I used Paho MQTT Client to make the Raspberry Pi subscribe to my 'wbt' topic's messages. It was easier for me to use.

Finally, here's a video about the current status of the prototype:

As you can see the "follow me" mode is working quite well, but the tank is very slow in this mode. Possibly it is capable of slightly higher speeds but I wanted to be sure that it doesn't do crazy things. Slowing the tank down was needed because at higher speeds it can easily lose me, mostly when it is turning. I've got a couple of ideas how I can significantly increase the speed in "follow me" mode but it will take some time and possibly some extra hardware to implement a solution for that.

You can access my skill here and this is its id:

amzn1.ask.skill.a7453502-b1aa-47fa-a552-ed8e2c792b2e

If you want to publish your skill it might be a good idea to you authentication to differentiate the devices. For that follow this great tutorial.

Canceled

I'd like to write some words about another part that is on the "Most of the electronics are integrated onto the top part" image. I'm talking about these:

These are tachometers. I didn't use them in the final version, but they are still there.

A tachometer like this is made of two parts:a black and white paper on the main wheel and a reflective IR sensor in front of it. The reflected light depends on the color of the object. The difference is very big so distinguishing the states is very easy and thus you can easily calculate the speed of rotation. The only problem of this setup is the low sample rate in case of slow movement, however they work quite well on higher speeds.

The tachometers worked great, but I realized that I don't need them for the project and I also needed the GPIO pins on the Arduino for other purposes. This is their story.

Conclusion

The end result is great, useful and fun! It is also a good platform for other future projects. With hard work I managed to make the voice control work and Walabot proved to be a great sensor for this purpose, too. I see numerous ways to improve this tank so it is likely that you'll see more about it in the future!

This is my best and most successful project so far. And also the longest. To keep it from getting even longer I'd like to thank for all the help that I got and I also thank you for reading! As a prize here's a picture about a strange dog:

Code

Codes for the Arduino and Raspberry Pi
This repository contains the codes that are running on the MKR1000 and the Raspberry Pi 3 Bhttps://github.com/abysmalsb/Beer-Tank

Schaltpläne

If I couldn't find a part then I replaced it with something similar. See notes for more info. Walabot is connected to the Raspberry Pi with and USB cable. If I couldn't find a part then I replaced it with something similar. See notes for more info. Walabot is connected to the Raspberry Pi with and USB cable. beer_tank_YN88vVuS9b.fzz

Herstellungsprozess

  1. Schaltungskomponenten
  2. Sauerstofftank
  3. Integrierter Schaltkreis
  4. Amazon Alexa Steuern eines Chromecast
  5. Autonomer Panzer
  6. MOSMusic
  7. Was ist Mikroelektronik?
  8. Was ist ein Reservetank?
  9. Komponenten der Bohrmaschine
  10. Komponenten des Verbrennungsmotors