Innehållsförteckning:

Mångsidig NearBot: 11 steg (med bilder)
Mångsidig NearBot: 11 steg (med bilder)

Video: Mångsidig NearBot: 11 steg (med bilder)

Video: Mångsidig NearBot: 11 steg (med bilder)
Video: диван трансформер поворотный Оскар П - mångsidig soffa, transformerbar 2024, November
Anonim
Image
Image

Denna instruerbara visar dig hur du bygger en mångsidig robotutlösare som kan flytta något som en knapp, omkopplare eller ratt på olika enheter när du (med din telefon eller en fyr i fickan) är i närheten. Det betyder att den automatiskt kan låsa upp och låsa igen en dörrspärr när * bara du * passerar, stänger av en sprinklerventil så att du kan passera oskadat genom vattnet som en slags förortsmose, lägre högtalarvolym medan du är i garaget bandrum, trigga en iPod som spelar en dramatisk ingångslåt eller berätta ett skämt (Jaden Smiths tweet?) medan du är i rummet, eller pausa en film när du reser dig för att använda toaletten.

Detta projekt kräver inte lödning eller specialverktyg

Om du tycker om denna instruktion nog, kan du överväga att rösta på denna instruerbara i Robotics 2017 -tävlingen!

Steg 1: Skaffa hårdvarudelarna

Du kommer behöva:

  • NodeMCU v2 eller V3
  • Micro 9G Servomotor ca $ 1,40 USD gratis frakt på eBay eller Aliexpress
  • Arduino Jumper Wires Kvinna till Man.
  • Ett hölje för NearBot - jag använde en plastlåda som jag hittade.
  • Mikro -USB -datakabel (skrotdelar)
  • USB -strömkälla (telefonladdare)

Om du inte har en smartphone med en mobil hotspot -funktion behöver du också:

  • ESP-01-modul ca $ 2,50 USD gratis frakt på DealExtreme, GearBest, Ebay eller Aliexpress.
  • 1 Par AAA -batterier
  • dubbel AAA batterihållare med strömbrytare

Steg 2: Snabbstart

Det här steget innehåller en snabbstartguide om du gillar sånt. Resten av denna instruerbara går steg för steg och lägger till mer fördjupad information

// Inköpslista: // NodeMCU V3 (Lolin) ESP8266 mikrokontroller

// SG90 9G Servomotor

// USB Power Bank eller USB -väggadapter.

// Micro USB data/laddningskabel

// Arduino hane till hona typ bygelkablar

//INNAN DU BÖRJAR:

// 1. Om du inte redan har laddat ner Arduino IDE kan du få den gratis (donation valfri) på:

// 2. öppna Arduino IDE (om du inte redan läser detta i Arduino IDE!) …

// 3. Gå till filer och klicka på inställningen i Arduino IDE …

// 4. kopiera nedanstående kod i Extra boards Manager: //https://arduino.esp8266.com/stable/package_esp8266com_index.json

// 5. klicka på OK för att stänga inställningsfliken …

// 6. Gå till verktyg och styrelse och välj sedan styrelsechef …

// 7. Navigera till esp8266 av esp8266 community och installera programvaran för Arduino …

// 8. Du kan behöva ladda ner och installera CH340 -drivrutinen om du inte kan få NodeMCU att prata med din Arduino IDE:

// När all ovanstående process har slutförts läses vi för att programmera vår esp8266 NodeMCU mikrokontroller med Arduino IDE.

//9.välj NodeMCU V1.0 ESP12E från kortmenyn /

/10. Välj den COM -port du använder.

// 11. välj koden (ladda ner från www.makersa.ga) och klicka på ladda upp. /

/12. Anslut servon till NodeMCU med hjälp av bygelkablar. D0 för signal, jord till mark, +VCC till VO eller 3V. /

/13. Justera servohornet med en skruvmejsel.

// 14. Justera maximal och minsta rörelsegrad med hjälp av koden.

// 15. Ladda upp igen till NodeMCU när koden uppdateras.

// Du kanske tycker det är viktigt att ta reda på vilken NodeMCU -version du har. Här är en jämförelseguide:

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

// Förklaring till riggarna:

// Tillverkad av NodeMCU ESP8266 mikrokontroller, batteri eller USB -strömförsörjning och SG90 Servo

// Du kan använda en andra omodifierad esp8266 -modul som en varningspunkts hotspot -AP istället för att använda en smartphone, ingen programmering behövs.

Steg 3: Skaffa programvarudelarna

Du måste först ladda ner gratis Arduino IDE

Arduino Web Editor fungerar inte med NodeMCU när jag skriver detta, så du måste installera IDE på din dator istället.

Du måste också hämta NearBot -filerna från www. MakerSa.ga - länken för nedladdning av filer för detta projekt finns på den webbplatsen.

Steg 4: Installera drivrutiner och kortprofiler

Lite användbar information
Lite användbar information

Inuti NearBot -zip -filen som du laddade ner och packade upp kommer drivrutinerna för NodeMCU -modulen. Installera dem på din dator.

Om de inte fungerar för dig kanske du kan hitta CH340G -drivrutiner på wemos.cc/downloads

Din NodeMCU kanske inte använder CH340G -chip, så du kan behöva kommentera den drivrutin du letar efter, och jag svarar med nedladdningslänken för den drivrutinen.

  1. Öppna sedan Arduino IDE och gå till File PreferencesAdditional Boards Manager i Arduino IDE.
  2. Klistra in följande kod där:
  3. Klicka på OK för att stänga inställningsfliken.
  4. Gå till verktyg och styrelse och välj sedan styrelsechef.
  5. Navigera till "esp8266 av esp8266 community" och installera programvaran för Arduino.

När all ovanstående process har slutförts är vi redo att programmera vår esp8266 NodeMCU mikrokontroller med Arduino IDE!

Steg 5: Lite användbar information

Lite användbar information
Lite användbar information
Lite användbar information
Lite användbar information

Det kan vara praktiskt att ta reda på vilken NodeMCU -version du har. Här är en jämförelseguide:

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

Varje version har olika stiftarrangemang. Jag köpte versionen v3 (Lolin) eftersom den har 5V utgångsstiften för att driva servomotorn. Jag använde slutligen istället 3 -volts stiften istället för säkerheten (NodeMCU I/O -stiften är inte 5V -toleranta), men du kanske vill använda 5V -stiften eftersom tekniskt sett är dessa typer av servomotorer specificerade för 4,5 till 5 volt effekt.

Steg 6: Ladda koden till NodeMCU

Ladda koden till NodeMCU
Ladda koden till NodeMCU
Ladda koden till NodeMCU
Ladda koden till NodeMCU
  1. Anslut NodeMCU till din dator med valfri mikro -USB -kabel.
  2. Öppna Arduino IDE och välj "ESP12E" under "Boards" och COM -porten för NodeMCU.
  3. I IDE, gå till FileOpen och bläddra i zip -mappen som tidigare hämtats från makersa.ga för att öppna Arduino -skissen som heter "ProximityActuator013017DonovanMagryta.ino"
  4. Redigera sedan kodraden som innehåller detta för att lägga till namn och lösenord för din WiFi -signal. Mer om det nedan! Till exempel:

const char* ssid = "mywifi"; // Skriv ditt hotspot -namn i citattecken

const char* password = "mywifipassword"; // Lägg ditt hotspot -lösenord i citattecken

Klicka sedan på "ladda upp" för att blinka koden till NodeMCU -kortet.

NearBot använder en WiFi -varningslåda i fickan för att identifiera dig och uppskatta avstånd. Precis som närhetsnycklarna har vissa nyare bilar som låser upp dörren till bilen när du närmar dig.

Du kan använda din smarttelefons mobila hotspot som en fyr, eller alternativt använda en billig ESP-01 WiFi-modul som drivs av ett par AAA-batterier eller ett litet litium 3,7v batteri. Inget behov av att programmera ESP-01, den används som standard för hotspot-läge när den slås på. Kretsschemat för det visas i detta steg.

Steg 7: Fäst servon i NodeMCU

Du behöver några bygelkablar för att ansluta servon till NodeMCU V3.

Kretsschemat är enkelt.

Pin D0 till signalen i bly (ljusaste färgtråden på servon. Vanligtvis gul eller vit.)

Pin 3V eller pin VO till 5V ingångsledning (näst ljusaste färgtråden på servon, vanligtvis röd eller orange.)

Fäst GND på jordledningen (mörkaste färg på tråden, vanligtvis brun eller svart.)

Steg 8: Finjustera NearBot

Koden omvandlar signalstyrka till avståndsuppskattning. Det fungerar tillförlitligt för reaktionsavstånd mindre än 2 meter eller 6,5 fot. Eftersom det är en direktomvandling är det inte så smidigt för längre avstånd än 3 meter som det kan vara med en bättre beräkningsmetod. Mer om det senare.

Du kanske vill justera var servohornet (den lilla vita armen som rör sig) är placerat. Detta görs genom att helt enkelt skruva loss servoarmen med en skruvmejsel och placera om den.

Nästa del är att justera maximal och minsta rörelsegrad med hjälp av koden.

Detta kan göras genom att ändra numren i rader som ser ut så här:

myservo.write (10); // flyttar servo -armen till 10 graders rotation

Du kan också justera känsligheten för signalstyrkan genom att ändra de negativa talen i rader som ser ut så här:

if (rssi> -30 && rssi <-5) {// Om signalstyrkan är starkare än -30 och svagare än -5. gör sedan följande …

Steg 9: Hur det fungerar

  1. NearBot ansluter först till hotspot i förväg när en användare närmar sig.
  2. Den skannar RSSI (mottagen signalstyrka) och konverterar den till ungefärligt avstånd.
  3. Medan avståndet ligger inom det angivna intervallet flyttar det servomotorarmen till läge 1.
  4. Annars flyttas servomotorn till läge 2.

När jag testade detta flyttar denna RSSI-inställning (-50) servon till position 1 medan avståndet är 0 till 1,5 meter med ESP-01-fyren eller telefonens hotspot i fickan.

RSSI faller vanligtvis inom intervallet -90 till -20, där -20 är den starkaste signalstyrkan.

Om du öppnar Arduino IDE Serial Monitor medan NearBot är ansluten till datorn, visar den signalstyrkan och triggerpunkterna i realtid så att du får praktisk feedback.

Här är hela koden:

//INNAN DU BÖRJAR:

// 1. Om du inte redan har laddat ner Arduino IDE kan du få den gratis (donation valfri) på: https://www.arduino.cc/en/Main/Software // 2. öppna Arduino IDE (om du inte redan läser detta i Arduino IDE!) … // 3. Gå till filer och klicka på inställningen i Arduino IDE … // 4. kopiera nedanstående länk i Extra boards Manager: //https://arduino.esp8266.com/stable/package_esp8266com_index.json // 5. klicka på OK för att stänga inställningsfliken … // 6. Gå till verktyg och styrelse och välj sedan styrelsechef … // 7. Navigera till esp8266 av esp8266 community och installera programvaran för Arduino … // 8. Du kan behöva ladda ner och installera CH340 -drivrutinen om du inte kan få NodeMCU att prata med din Arduino IDE: https://www.arduino.cc/en/Main/Software // När all ovanstående process har slutförts är vi läs för att programmera vår esp8266 NodeMCU mikrokontroller med Arduino IDE. Du kanske vill ta reda på vilken NodeMCU -version du har. Här är en jämförelseguide: https://www.arduino.cc/en/Main/Software // Tillverkad av NodeMCU ESP8266 mikrokontroller, batteri eller USB -strömförsörjning och SG90 Servo // Du kan använda en andra omodifierad esp8266 -modul som en fyr hotspot AP istället för att använda en smartphone. // NearBot -krets: // D0 -stift till Servosignaltråd (ljusaste färgtråden) // 3V stift till servo 5v -ledning (mitttråd) (skarvad parallellt med usb -kabel eller VO -stift på NodeMCU om du har V3. / /USB -ström till USB -kontakt på NodeMCU // GND -stift till Servo Jordkabel (mörkaste färgtråd) // Anteckningsrader börjar med två snedstreck och ignoreras av datorerna. Anteckningar är bara för oss människor! #Inkludera #inkludera // Kan behövas för seriell utskrift. #Inkludera // Servobibliotek #definiera D0 16 // Definierar stift för att underlätta tilldelning av stift. #Define D1 5 // I2C Bus SCL (klocka) #define D2 4 // I2C Bus SDA (data) #define D3 0 #define D4 2 // Samma som "LED_BUILTIN", men inverterad logik #define D5 14 // SPI Bus SCK (klocka) #define D6 12 // SPI Bus MISO #define D7 13 // SPI Buss MOSI #define D8 15 // SPI Bus SS (CS) #define D9 3 // RX0 (seriekonsol) #define D10 1 // TX0 (seriekonsol) Servo myservo; // Skapa ett servoobjekt som heter myservo // Telefon eller ytterligare ESP8266 -modul inställd på hotspot AP -läge: konstant ch ar* ssid = ""; // Skriv ditt hotspot -namn i citationstecken const char* password = ""; // Lägg in ditt hotspot -lösenord i citaten void setup () {Serial.begin (115200); // ställer in seriell överföringshastighet så att mikrokontrollern kan prata med det seriella utskriftsgränssnittet i Arduino IDE - Du kan behöva ändra den till 9600 istället! myservo.attach (D0); // fäster servon på stift D0 aka GPIO16 till servoobjektet - Se mer på: https://www.esp8266.com/viewtopic.php?f=32&t=8862#… myservo.write (10); // flyttar servo -armen till 10 graders rotation Serial.println ("Låst"); // mata ut den seriella bildskärmen ordet "Låst" WiFi.mode (WIFI_STA); // Ställer in wifi i stationsläge WiFi.begin (ssid, lösenord); // Ansluter till hotspot beacon} void loop () {// loopen går snabbt om och om igen om (WiFi.status ()! = WL_CONNECTED) {// Om wifi INTE är ansluten, gör följande … Serial.println ("Det gick inte att få en wifi -anslutning"); myservo.write (10); // Flyttar servo -armen till 10 grader Serial.println ("Låst"); } annat {// Om WiFi ÄR anslutet, gör följande … long rssi = WiFi. RSSI (); // Skapar en variabel med namnet rssi och tilldelar den till funktionen som returnerar signalstyrkeavläsningen för hotspot -fyren Serial.print (rssi); // matar ut rssi -avläsningen till seriell bildskärm om (rssi> -50 && rssi <-5) {// Om signalstyrkan är starkare än -50 och svagare än -5. gör sedan följande … myservo.write (170); // Vrid servo -armen till 170 grader Serial.println ("olåst"); } annat {// Om ovanstående villkor inte är uppfyllda gör du följande … myservo.write (10); // Vrid servoarmen tillbaka till 10 grader. Serial.println ("Låst"); }}}

Steg 10: Du borde veta …

Varning:

Den nuvarande iterationen av NearBot -koden fungerar pålitligt för avstånd mindre än 2 meter eller 6,5 fot. Utöver det blir det mindre exakt, men fungerar fortfarande.

Detta kan åtgärdas, men för närvarande vet jag inte hur jag ska göra. Jag skulle älska det om någon skulle arbeta med mig så att jag kan uppdatera dessa instruktioner med en mer exakt metod för att beräkna avstånd!

Dessa länkar kan vara praktiska: YouTuber CNLohr utvecklade en distans- och positionsavkännande firmware för ESP8266 med begränsad framgång:

Espressif utvecklade en Time of Flight distansdetekteringsfunktion som skulle fungera med Arduino IDE för ESP8266, men aldrig släppt den:

SubPos positioneringssystem använder ESP8266 -moduler och Path Loss Calculation, vilket jag inte vet hur man implementerar i Arduino IDE:

Jag hittade ett exempel på Java -språk, men jag vet inte hur jag ska replikera detta är Arduino IDE:

dubbel distans = Math.pow (10,0, (((dubbel) (tx_pwr/10)) - rx_pwr - 10*Math.log10 (4*Math. PI/(c/frekvens)))/(20*mu));

Steg 11: Det är allt

Om du gör din egen NearBot, lägg upp din "Jag klarade det" i kommentarerna nedan!

Om du har fler idéer om vad du ska använda den mångsidiga NearBot -plattformen till, kommentera dina idéer! Det kan vara stor inspiration för andra instruerbara användare!

Om du gillar denna handledning kan du överväga att rösta på den här instruerbara tävlingen!

Rekommenderad: