Inhaltsverzeichnis:

Vielseitiger NearBot – Gunook
Vielseitiger NearBot – Gunook

Video: Vielseitiger NearBot – Gunook

Video: Vielseitiger NearBot – Gunook
Video: Ghost of Tsushima - Trophy Guide - Vielseitiger Krieger / Well Rounded Warrior 2024, November
Anonim
Image
Image

Dieses anweisbare zeigt Ihnen, wie Sie einen vielseitigen Roboterauslöser bauen, der etwas wie eine Taste, einen Schalter oder ein Zifferblatt auf verschiedenen Geräten bewegen kann, wenn Sie (mit Ihrem Telefon oder einem Leuchtfeuer in der Tasche) in der Nähe sind. Dies bedeutet, dass es automatisch eine Türverriegelung entriegeln und wieder verriegeln könnte, wenn *nur Sie* vorbeikommen, ein Sprinklerventil schließen, damit Sie wie eine Art Vorstadtmoses unbeschadet durch das Wasser gehen können, niedrigere Lautsprecherlautstärke, während Sie in der Garage sind Bandraum, lösen Sie einen iPod aus, der eine dramatische Einstiegsmelodie spielt, oder erzählen Sie einen Witz (Tweet von Jaden Smith?), während Sie im Raum sind, oder halten Sie einen Film an, wenn Sie aufstehen, um die Toilette zu benutzen.

Dieses Projekt erfordert kein Löten oder spezielles Werkzeug

Wenn Sie diese instructables genug genießen, ziehen Sie bitte in Betracht, für diese instructable im Wettbewerb Robotics 2017 abzustimmen!

Schritt 1: Erwerben Sie die Hardwareteile

Du wirst brauchen:

  • NodeMCU v2 oder V3
  • Micro 9G Servomotor ca. 1,40 USD versandkostenfrei bei eBay oder Aliexpress
  • Arduino Jumper-Drähte weiblich zu männlich.
  • Ein Gehäuse für den NearBot - ich habe eine Plastikschrottbox verwendet, die ich gefunden habe.
  • Micro-USB-Datenkabel (Telefonteile verschrotten)
  • USB-Stromquelle (Ladegerät für Schrotttelefon)

Wenn Sie kein Smartphone mit mobiler Hotspot-Funktion haben, benötigen Sie außerdem:

  • ESP-01-Modul ca. 2,50 USD kostenloser Versand bei DealExtreme, GearBest, Ebay oder Aliexpress.
  • 1 Paar AAA-Batterien
  • Dual AAA Batteriehalter mit Schalter

Schritt 2: Schnellstart

Dieser Schritt enthält eine Kurzanleitung, falls Sie so etwas mögen. Der Rest dieses instructable geht Schritt für Schritt und fügt ausführlichere Informationen hinzu

//Einkaufsliste: //NodeMCU V3 (Lolin) ESP8266 Mikrocontroller

// SG90 9G Servomotor

// USB Power Bank oder USB-Wandadapter.

//Micro-USB-Daten-/Ladekabel

// Überbrückungsdrähte vom Typ Arduino männlich zu weiblich

//BEVOR DU ANFÄNGST:

//. Wenn Sie die Arduino IDE noch nicht heruntergeladen haben, erhalten Sie sie kostenlos (Spende optional) unter:

//. Öffnen Sie die Arduino IDE (wenn Sie dies noch nicht in der Arduino IDE lesen!)…

//3. Gehen Sie zu Dateien und klicken Sie auf die Einstellung in der Arduino IDE…

///4. Kopieren Sie den folgenden Code in den Additional Boards Manager: //https://arduino.esp8266.com/stable/package_esp8266com_index.json

///5. Klicken Sie auf OK, um die Registerkarte „Einstellungen“zu schließen…

///6. Gehen Sie zu Tools und Board und wählen Sie dann Board-Manager…

///7. Navigieren Sie zu esp8266 von der ESP8266-Community und installieren Sie die Software für Arduino…

///8. Möglicherweise müssen Sie den CH340-Treiber herunterladen und installieren, wenn Sie die NodeMCU nicht mit Ihrer Arduino-IDE kommunizieren können:

// Sobald der obige Vorgang abgeschlossen ist, werden wir gelesen, um unseren esp8266 NodeMCU-Mikrocontroller mit der Arduino IDE zu programmieren.

//9. NodeMCU V1.0 ESP12E aus dem Board-Menü auswählen /

/10. Wählen Sie den von Ihnen verwendeten COM-Port aus.

//11. Wählen Sie den Code aus (Download von www.makersa.ga) und klicken Sie auf Upload. /

/12. Stecken Sie das Servo mit Jumperdrähten in die NodeMCU. D0 an Signal, Masse an Masse, +VCC an VO oder 3V. /

/13. Stellen Sie das Servohorn mit einem Schraubendreher ein.

//14. Stellen Sie den maximalen und minimalen Bewegungsgrad mithilfe des Codes ein.

//fünfzehn. Erneut auf die NodeMCU hochladen, wenn der Code aktualisiert wird.

// Sie finden es möglicherweise wichtig herauszufinden, welche NodeMCU-Version Sie haben. Hier ein Vergleichsratgeber:

frightanic.com/iot/comparison-of-esp8266-no… // NodeMCU v1 Pinout-Diagramm: https://frightanic.com/iot/comparison-of-esp8266-no… // NodeMCU v2 Pinout-Diagramm: https://frightanic.com/iot/comparison-of-esp8266-no… // NodeMCU v3 Pinout-Diagramm:

//Erklärung der Rigs:

// Hergestellt aus NodeMCU ESP8266 Mikrocontroller, Batterie oder USB Netzteil und SG90 Servo

//Sie können ein zweites unverändertes esp8266-Modul als Beacon-Hotspot-AP anstelle eines Smartphones verwenden, keine Programmierung erforderlich.

Schritt 3: Erwerben Sie die Softwareteile

Sie müssen zuerst die kostenlose Arduino IDE herunterladen

Der Arduino Web Editor funktioniert zu dem Zeitpunkt, an dem ich dies schreibe, nicht mit der NodeMCU, daher müssen Sie stattdessen die IDE auf Ihrem Computer installieren.

Sie müssen auch die NearBot-Dateien von www. MakerSa.ga herunterladen - Der Datei-Download-Link für dieses Projekt ist auf dieser Site aufgeführt.

Schritt 4: Treiber und Board-Profile installieren

Einige hilfreiche Informationen
Einige hilfreiche Informationen

In der NearBot-Zip-Datei, die Sie heruntergeladen und entpackt haben, befinden sich die Treiber für das NodeMCU-Modul. Installieren Sie diese auf Ihrem Computer.

Wenn diese für Sie nicht funktionieren, finden Sie möglicherweise CH340G-Treiber unter wemos.cc/downloads

Ihre NodeMCU verwendet möglicherweise keinen CH340G-Chip, daher müssen Sie möglicherweise den gesuchten Treiber kommentieren, und ich antworte mit dem Download-Link für diesen Treiber.

  1. Öffnen Sie als Nächstes die Arduino IDE und gehen Sie zu File PreferencesAdditional Boards Manager in der Arduino IDE.
  2. Fügen Sie dort den folgenden Code ein:
  3. Klicken Sie auf OK, um das Einstellungsregister zu schließen.
  4. Gehen Sie zu Tools und Board und wählen Sie dann Board-Manager.
  5. Navigieren Sie zu "esp8266 by esp8266 community" und installieren Sie die Software für Arduino.

Sobald der obige Vorgang abgeschlossen ist, können wir unseren esp8266 NodeMCU-Mikrocontroller mit der Arduino IDE programmieren!

Schritt 5: Einige hilfreiche Informationen

Einige hilfreiche Informationen
Einige hilfreiche Informationen
Einige hilfreiche Informationen
Einige hilfreiche Informationen

Möglicherweise finden Sie es praktisch, herauszufinden, welche NodeMCU-Version Sie haben. Hier ein Vergleichsratgeber:

frightanic.com/iot/comparison-of-esp8266-nodemcu-development-boards/

Jede Version hat unterschiedliche Stiftanordnungen. Ich habe die Version v3 (Lolin) gekauft, weil sie 5V-Ausgangspins hat, um den Servomotor mit Strom zu versorgen. Ich habe stattdessen aus Sicherheitsgründen stattdessen die 3-Volt-Power-Pins verwendet (Die NodeMCU-E / A-Pins sind nicht 5V-tolerant), aber Sie möchten vielleicht die 5-V-Pins verwenden, da diese Art von Servomotoren technisch für 4,5 bis 5 Volt spezifiziert sind Leistung.

Schritt 6: Laden Sie den Code auf die NodeMCU

Laden Sie den Code auf die NodeMCU
Laden Sie den Code auf die NodeMCU
Laden Sie den Code auf die NodeMCU
Laden Sie den Code auf die NodeMCU
  1. Schließen Sie die NodeMCU mit einem beliebigen Micro-USB-Kabel an Ihren Computer an.
  2. Öffnen Sie die Arduino IDE und wählen Sie unter "Boards" "ESP12E" und den COM-Port für die NodeMCU.
  3. Gehen Sie in der IDE zu FileOpen und durchsuchen Sie den zuvor von makersa.ga heruntergeladenen Zip-Ordner, um die Arduino-Skizze namens "ProximityActuator013017DonovanMagryta.ino" zu öffnen.
  4. Bearbeiten Sie dann die Codezeile, die dies enthält, um den Namen und das Passwort Ihres WiFi-Beacons hinzuzufügen. Mehr dazu weiter unten! Zum Beispiel:

const char* ssid = "mywifi"; // Setzen Sie Ihren Hotspot-Namen in die Anführungszeichen

const char* password = "mywifipassword"; //Setze dein Hotspot-Passwort in die Anführungszeichen

Klicken Sie dann auf "Hochladen", um den Code auf die NodeMCU-Platine zu flashen.

Der NearBot verwendet ein tragbares WiFi-Beacon, um Sie zu identifizieren und die Entfernung zu schätzen. Genau wie die Näherungsschlüssel haben einige neuere Autos die Tür zum Auto aufschließen, wenn Sie sich nähern.

Sie können Ihren mobilen Hotspot Ihres Smartphones als Beacon verwenden oder alternativ ein billiges ESP-01-WLAN-Modul verwenden, das mit einem Paar AAA-Batterien oder einer kleinen 3,7-V-Lithiumbatterie betrieben wird. Das ESP-01 muss nicht programmiert werden, es wird beim Einschalten standardmäßig auf den Hotspot-Modus eingestellt. Der Schaltplan dafür wird in diesem Schritt gezeigt.

Schritt 7: Befestigen Sie den Servo an der NodeMCU

Sie benötigen einige Überbrückungsdrähte, um das Servo an die NodeMCU V3 anzuschließen.

Der Schaltplan ist einfach.

Pin D0 zum Signalkabel (hellstes Kabel am Servo. normalerweise gelb oder weiß.)

Pin 3V oder Pin VO an das 5V-Eingangskabel (zweithellstes Kabel am Servo, normalerweise rot oder orange.)

Verbinden Sie GND mit dem Massekabel (dunkelstes Kabel am Servo, normalerweise braun oder schwarz.)

Schritt 8: Feinabstimmung des NearBot

Der Code wandelt die Signalstärke in eine Entfernungsschätzung um. Es funktioniert zuverlässig bei Reaktionsentfernungen von weniger als 2 Metern oder 6,5 Fuß. Da es sich um eine direkte Umrechnung handelt, ist sie für weitere Entfernungen als 3 Meter nicht so glatt, wie es möglicherweise mit einer besseren Berechnungsmethode sein könnte. Dazu später mehr.

Vielleicht möchten Sie die Position des Servohorns (der kleine weiße Arm, der sich bewegt) einstellen. Dazu einfach den Servoarm mit einem Schraubendreher abschrauben und neu positionieren.

Der nächste Teil besteht darin, den maximalen und minimalen Bewegungsgrad mithilfe des Codes einzustellen.

Dies kann durch Ändern der Zahlen in Zeilen erfolgen, die wie folgt aussehen:

myservo.write(10); // bewegt den Servoarm auf eine Drehung von 10 Grad

Sie können auch die Empfindlichkeit der Signalstärke anpassen, indem Sie die negativen Zahlen in Zeilen ändern, die wie folgt aussehen:

if (rssi > -30 && rssi < -5) { //Wenn die Signalstärke stärker als -30 und schwächer als -5 ist. dann mach folgendes…

Schritt 9: Wie es funktioniert

  1. Der NearBot verbindet sich zuerst mit dem Hotspot, wenn sich ein Benutzer nähert.
  2. Es scannt die RSSI (empfangene Signalstärke) und wandelt diese in eine ungefähre Entfernung um.
  3. Während der Abstand innerhalb des angegebenen Bereichs liegt, bewegt er den Servomotorarm in Position 1.
  4. Andernfalls wird der Servomotor auf Position 2 gefahren.

Als ich dies getestet habe, bewegt dieses RSSI-Tuning (-50) das Servo auf Position 1, während der Abstand 0 bis 1,5 Meter beträgt, mit dem ESP-01-Bake oder dem Telefon-Hotspot in meiner Tasche.

Der RSSI liegt typischerweise in einem Bereich von -90 bis -20, wobei -20 die stärkste Signalstärke ist.

Wenn Sie den Arduino IDE Serial Monitor öffnen, während der NearBot an den Computer angeschlossen ist, werden die Signalstärke und die Triggerpunkte in Echtzeit angezeigt, damit Sie ein praktisches Feedback erhalten.

Hier ist der vollständige Code:

//BEVOR DU ANFÄNGST:

//. Wenn Sie die Arduino IDE noch nicht heruntergeladen haben, erhalten Sie sie kostenlos (Spende optional) unter: https://www.arduino.cc/en/Main/Software //2. öffne die Arduino IDE (falls du das noch nicht in der Arduino IDE liest!)… //3. Gehen Sie zu Dateien und klicken Sie auf die Einstellung in der Arduino IDE… //. Kopieren Sie den folgenden Link in den Additional Boards Manager: //https://arduino.esp8266.com/stable/package_esp8266com_index.json //. Klicken Sie auf OK, um die Registerkarte „Einstellungen“zu schließen… //. Gehen Sie zu Tools und Board und wählen Sie dann Board-Manager… //. Navigieren Sie zu esp8266 by esp8266 community und installieren Sie die Software für Arduino… //8. Möglicherweise müssen Sie den CH340-Treiber herunterladen und installieren, wenn Sie die NodeMCU nicht mit Ihrer Arduino-IDE kommunizieren können: https://www.arduino.cc/en/Main/Software // Sobald der obige Vorgang abgeschlossen ist, sind wir Lesen Sie, um unseren esp8266 NodeMCU-Mikrocontroller mit der Arduino IDE zu programmieren. Vielleicht möchten Sie herausfinden, welche NodeMCU-Version Sie haben. Hier ist eine Vergleichsanleitung: https://www.arduino.cc/en/Main/Software // Hergestellt aus NodeMCU ESP8266 Mikrocontroller, Batterie oder USB Netzteil und SG90 Servo // Sie können ein 2. unmodifiziertes ESP8266 Modul als Leuchtfeuer verwenden Hotspot-AP statt Smartphone. // NearBot-Schaltung: // D0-Pin an Servosignalkabel (hellste Farbe) / / 3V-Pin an Servo-5-V-Kabel (mittleres Kabel) (parallel zum USB-Kabel oder zum VO-Pin an der NodeMCU gespleißt, wenn Sie V3 haben. / /USB-Strom an USB-Stecker an der NodeMCU //GND-Pin an Servo-Massedraht (dunkle Farbe) // Notizzeilen beginnen mit zwei Schrägstrichen und werden von den Computern ignoriert. Notizen sind nur für uns Menschen! #include #include // Wird möglicherweise für den seriellen Druck benötigt. #include //Servo-Bibliothek #define D0 16 // Definiert Pins, um die Zuweisung von Pins zu erleichtern. #define D1 5 // I2C Bus SCL (Takt) #define D2 4 // I2C Bus SDA (data) #define D3 0 #define D4 2 // Wie "LED_BUILTIN", aber invertierte Logik #define D5 14 // SPI Bus SCK (Takt) #define D6 12 // SPI Bus MISO #define D7 13 // SPI Bus MOSI #define D8 15 // SPI Bus SS (CS) #define D9 3 // RX0 (serielle Konsole) #define D10 1 // TX0 (serielle Konsole) Servo myservo; //Erzeuge ein Servo-Objekt namens myservo //Phone oder zusätzliches ESP8266-Modul im Hotspot-AP-Modus: const ch ar* ssid = " "; //Fügen Sie Ihren Hotspot-Namen in die Anführungszeichen ein const char* password = " "; // Setzen Sie Ihr Hotspot-Passwort in die Anführungszeichen void setup () { Serial.begin (115200); // Setzt die serielle Baudrate, damit der Mikrocontroller mit der seriellen Druckschnittstelle in der Arduino IDE kommunizieren kann - Sie müssen sie möglicherweise stattdessen auf 9600 ändern! myservo.attach(D0); // befestigt das Servo an Pin D0 aka GPIO16 an das Servo-Objekt - Siehe mehr unter: https://www.esp8266.com/viewtopic.php?f=32&t=8862#… myservo.write(10); // bewegt den Servoarm auf eine Drehung von 10 Grad Serial.println ("Locked"); // Ausgabe des seriellen Monitors das Wort "Locked" WiFi.mode (WIFI_STA); // Setzt WLAN in den Stationsmodus WiFi.begin (ssid, password); // Verbindet sich mit dem Hotspot-Beacon aufrechtzuerhalten. Void loop () {// Die Schleife läuft immer und immer wieder schnell if (WiFi.status () != WL_CONNECTED) {// Wenn WLAN NICHT verbunden ist, gehen Sie wie folgt vor … Serial.println ("Es konnte keine WLAN-Verbindung hergestellt werden"); myservo.write(10); // Bewegt den Servoarm auf 10 Grad Serial.println ("Locked"); } else {//Wenn WiFi verbunden ist, dann tun Sie Folgendes… long rssi = WiFi. RSSI(); // Erstellt eine Variable namens rssi und weist sie der Funktion zu, die die Signalstärke des Hotspot-Beacons Serial.print (rssi) zurückgibt; // gibt den rssi-Wert an den seriellen Monitor aus if (rssi > -50 && rssi < -5) { // Wenn die Signalstärke stärker als -50 und schwächer als -5 ist. dann tun Sie Folgendes… myservo.write(170); // Servoarm um 170 Grad drehen Serial.println ("Unlocked"); } else { //Wenn die obigen Bedingungen nicht erfüllt sind, dann tun Sie Folgendes… myservo.write(10); // Dreht den Servoarm zurück auf 10 Grad. Serial.println ("Gesperrt"); } } }

Schritt 10: Das sollten Sie wissen…

Haftungsausschluss:

Die aktuelle Iteration des NearBot-Codes funktioniert zuverlässig für Entfernungen von weniger als 2 Metern oder 6,5 Fuß. Darüber hinaus wird es weniger präzise, funktioniert aber immer noch.

Dies kann behoben werden, aber im Moment weiß ich nicht, wie das geht. Ich würde es lieben, wenn jemand mit mir arbeiten würde, damit ich diese Anleitungen mit einer genaueren Methode zur Berechnung der Entfernung aktualisieren kann!

Diese Links könnten praktisch sein: YouTuber CNLohr hat mit begrenztem Erfolg eine Distanz- und Positionssensor-Firmware für den ESP8266 entwickelt:

Espressif hat eine Time-of-Flight-Entfernungserkennungsfunktion entwickelt, die mit der Arduino IDE für den ESP8266 funktionieren würde, aber nie veröffentlicht:

Das SubPos-Positionierungssystem verwendet ESP8266-Module und Path Loss Calculation, was ich nicht in der Arduino IDE implementieren kann:

Ich habe ein Beispiel in Java gefunden, aber ich weiß nicht, wie ich dies replizieren soll, ist Arduino IDE:

doppelter Abstand = Math.pow(10.0, (((double)(tx_pwr/10)) – rx_pwr – 10*Math.log10(4*Math. PI/(c/Frequenz)))/(20*mu));

Schritt 11: Das ist alles

Wenn Sie Ihren eigenen NearBot erstellen, posten Sie Ihr "Ich habe es geschafft" in den Kommentaren unten!

Wenn Sie weitere Ideen haben, wofür Sie die Versatile NearBot-Plattform verwenden können, kommentieren Sie Ihre Ideen! Es könnte eine großartige Inspiration für andere instructables-Benutzer sein!

Wenn Ihnen dieses Tutorial gefällt, ziehen Sie bitte in Betracht, für dieses instructable in Wettbewerben abzustimmen!

Empfohlen: