Turinys:

Universalus „NearBot“: 11 žingsnių (su nuotraukomis)
Universalus „NearBot“: 11 žingsnių (su nuotraukomis)

Video: Universalus „NearBot“: 11 žingsnių (su nuotraukomis)

Video: Universalus „NearBot“: 11 žingsnių (su nuotraukomis)
Video: Universalus Dizainas 2024, Liepa
Anonim
Image
Image

Ši instrukcija parodys, kaip sukurti universalų roboto trigerį, kuris galėtų perkelti kažką, pavyzdžiui, mygtuką, jungiklį ar rinkimą įvairiuose įrenginiuose, kai esate (su telefonu ar švyturėliu kišenėje). Tai reiškia, kad jis gali automatiškai atrakinti ir vėl užrakinti durų skląstį, kai * tik jūs * pravažiuojate, uždarykite purkštuvo vožtuvą, kad galėtumėte praplauti vandenį nepažeistas kaip priemiesčio Mozė, sumažinkite garsiakalbių garsą, kol esate garaže grupės kambaryje, paleiskite „iPod“, paleisdami dramatišką įėjimo melodiją arba pasakykite pokštą (Jaden Smith tviteris?), kol esate kambaryje, arba pristabdykite filmą, kai atsikeliate naudotis tualetu.

Šiam projektui nereikia litavimo ar specialių įrankių

Jei jums pakankamai patinka šios instrukcijos, apsvarstykite galimybę balsuoti už šį pamokymą konkurse „Robotika 2017“!

1 žingsnis: įsigykite aparatūros dalis

Jums reikės:

  • „NodeMCU“v2 arba V3
  • „Micro 9G Servo Motor“apie 1,40 USD nemokamas pristatymas „eBay“arba „Aliexpress“
  • „Arduino Jumper“laidai nuo patelių iki vyrų.
  • „NearBot“korpusas - naudojau rastą plastikinę dėžę.
  • „Micro USB“duomenų kabelis (telefono dalių pašalinimas)
  • USB maitinimo šaltinis (telefono įkroviklis)

Jei neturite išmaniojo telefono su mobiliojo interneto prieigos taško funkcija, jums taip pat reikės:

  • ESP-01 modulis apie 2,50 USD USD nemokamas pristatymas „DealExtreme“, „GearBest“, „Ebay“ar „Aliexpress“.
  • 1 Suporuokite AAA tipo baterijas
  • dvigubas AAA baterijų laikiklis su jungikliu

2 žingsnis: greita pradžia

Šiame žingsnyje pateikiamas greitas pradžios vadovas, jei jums patinka toks dalykas. Likusi šios instrukcijos dalis eina žingsnis po žingsnio ir prideda išsamesnės informacijos

// Pirkinių sąrašas: // NodeMCU V3 (Lolin) ESP8266 mikrovaldiklis

// SG90 9G servo variklis

// USB maitinimo bankas arba USB sieninis adapteris.

// „Micro USB“duomenų/įkrovimo kabelis

// „Arduino“vyriškos ir moteriškos rūšies megztiniai

//PRIEŠ TAU PRADEDANT:

// 1. Jei dar neatsisiuntėte „Arduino IDE“, gaukite ją nemokamai (dovanoti neprivaloma):

2. atidarykite „Arduino IDE“(jei to dar neskaitote „Arduino IDE“!)…

// 3. Eikite į failus ir spustelėkite „Arduino IDE“parinktį …

// 4. nukopijuokite žemiau esantį kodą į Papildomų lentų tvarkytuvę: //https://arduino.esp8266.com/stable/package_esp8266com_index.json

5. spustelėkite Gerai, kad uždarytumėte nuostatų skirtuką …

6. Eikite į įrankius ir lentą, tada pasirinkite lentos valdytoją …

// 7. Eikite į esp8266 pagal esp8266 bendruomenę ir įdiekite „Arduino“programinę įrangą …

8. Jums gali tekti atsisiųsti ir įdiegti „CH340“tvarkyklę, jei nepavyksta užmegzti „NodeMCU“pokalbio su „Arduino IDE“:

// Kai visas aukščiau aprašytas procesas bus baigtas, būsime perskaitę, kad užprogramuotume esp8266 „NodeMCU“mikrovaldiklį su „Arduino IDE“.

// 9. lentos meniu pasirinkite „NodeMCU V1.0 ESP12E“/

/10. Pasirinkite naudojamą COM prievadą.

// 11. pasirinkite kodą (atsisiųskite iš www.makersa.ga) ir spustelėkite įkelti. /

/12. Prijunkite servo prie „NodeMCU“naudodami trumpiklius. D0 signalizuoti, įžeminti į žemę, +VCC - VO arba 3V. /

/13. Sureguliuokite servo ragą atsuktuvu.

// 14. Naudodami kodą sureguliuokite maksimalų ir minimalų judėjimo laipsnius.

// 15. Kai kodas atnaujinamas, iš naujo įkelkite į „NodeMCU“.

// Jums gali būti svarbu išsiaiškinti, kurią „NodeMCU“versiją turite. Čia yra palyginimo vadovas:

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

Įrenginių paaiškinimas:

// Pagaminta iš „NodeMCU ESP8266“mikrovaldiklio, baterijos arba USB maitinimo šaltinio ir SG90 servo

// Antrąjį nemodifikuotą esp8266 modulį galite naudoti kaip švyturio viešosios interneto prieigos tašką, o ne išmanųjį telefoną, programavimo nereikia.

3 žingsnis: įsigykite programinės įrangos dalis

Pirmiausia turėsite atsisiųsti nemokamą „Arduino IDE“

Kai rašau, „Arduino“žiniatinklio redaktorius neveikia su „NodeMCU“, todėl turėsite įdiegti IDE į savo kompiuterį.

Taip pat turėsite paimti „NearBot“failus iš www. MakerSa.ga - toje svetainėje pateikiama šio projekto failo atsisiuntimo nuoroda.

4 veiksmas: įdiekite tvarkykles ir plokštės profilius

Kai kuri naudinga informacija
Kai kuri naudinga informacija

„NearBot“zip viduje, kurį atsisiuntėte ir išpakavote, bus „NodeMCU“modulio tvarkyklės. Įdiekite juos į savo kompiuterį.

Jei tai jums netinka, galbūt galėsite rasti CH340G tvarkykles adresu wemos.cc/downloads

Jūsų „NodeMCU“gali nenaudoti CH340G lusto, todėl gali tekti pakomentuoti ieškomą tvarkyklę, o aš atsakysiu su tos tvarkyklės atsisiuntimo nuoroda.

  1. Tada atidarykite „Arduino IDE“ir eikite į „Arduino IDE“failų nuostatų papildomų lentų tvarkyklę.
  2. Įklijuokite šį kodą:
  3. Spustelėkite Gerai, kad uždarytumėte nuostatų skirtuką.
  4. Eikite į įrankius ir lentą, tada pasirinkite lentos valdytoją.
  5. Eikite į „esp8266 by esp8266 community“ir įdiekite „Arduino“programinę įrangą.

Baigę visą aukščiau aprašytą procesą, esame pasirengę užprogramuoti savo esp8266 „NodeMCU“mikrovaldiklį su „Arduino IDE“!

5 žingsnis: naudinga informacija

Keletas naudingos informacijos
Keletas naudingos informacijos
Kai kuri naudinga informacija
Kai kuri naudinga informacija

Jums gali būti patogu išsiaiškinti, kurią „NodeMCU“versiją turite. Čia yra palyginimo vadovas:

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

Kiekviena versija turi skirtingą kaiščių išdėstymą. Aš nusipirkau „v3“(„Lolin“) versiją, nes ji turi 5 V išėjimo kaiščius, skirtus „Servo“varikliui maitinti. Galiausiai vietoj saugumo naudojau 3 voltų maitinimo kaiščius („NodeMCU“įvesties/išvesties kaiščiai netoleruoja 5 V), tačiau galbūt norėsite naudoti 5 V kaiščius, nes techniškai tokie servo varikliai yra skirti 4,5–5 voltų galiai.

6 veiksmas: įkelkite kodą į „NodeMCU“

Įkelkite kodą į „NodeMCU“
Įkelkite kodą į „NodeMCU“
Įkelkite kodą į „NodeMCU“
Įkelkite kodą į „NodeMCU“
  1. Prijunkite „NodeMCU“prie kompiuterio naudodami bet kurį mikro USB kabelį.
  2. Atidarykite „Arduino IDE“ir skiltyje „Lentos“pasirinkite „ESP12E“ir „NodeMCU“COM prievadą.
  3. IDE eikite į „FileOpen“ir naršykite ZIP aplanką, anksčiau atsiųstą iš makersa.ga, kad atidarytumėte „Arduino“eskizą pavadinimu „ProximityActuator013017DonovanMagryta.ino“
  4. Tada redaguokite kodo eilutę, kurioje yra šis, kad pridėtumėte „WiFi“švyturėlio pavadinimą ir slaptažodį. Daugiau apie tai žemiau! Pavyzdžiui:

const char* ssid = "mywifi"; // Įdėkite savo viešosios interneto prieigos taško pavadinimą į kabutes

const char* slaptažodis = "mywifipassword"; // Įdėkite savo viešosios interneto prieigos taško slaptažodį į kabutes

Tada spustelėkite „įkelti“, kad įvestumėte kodą į „NodeMCU“plokštę.

„NearBot“naudoja kišeninį „Wi -Fi“švyturėlį, kad nustatytų jus ir įvertintų atstumą. Kaip ir artumo raktai, kai kuriuose naujesniuose automobiliuose yra atrakinamos automobilio durys, kai artėjate.

Galite naudoti savo išmaniojo telefono mobilųjį interneto prieigos tašką kaip švyturį arba naudoti pigų ESP-01 „WiFi“modulį, kurį maitina pora AAA baterijų arba maža 3,7 V ličio baterija. Nereikia programuoti ESP-01, jis įjungtas pagal numatytuosius nustatymus yra viešosios interneto prieigos taško režimas. Šio etapo schema parodyta šiame žingsnyje.

7 veiksmas: pritvirtinkite servo prie „NodeMCU“

Norėdami prijungti servo prie „NodeMCU V3“, jums reikės trumpųjų laidų.

Grandinės schema paprasta.

Prijunkite D0 prie švino signalo (šviesiausia servo viela. Dažniausiai geltona arba balta.)

Prijunkite 3V arba VO prie 5V įvesties laido (antroji šviesiausia servo viela, dažniausiai raudona arba oranžinė).

Prijunkite GND prie įžeminimo laido (tamsiausia servo viela, dažniausiai ruda arba juoda).

8 veiksmas: tiksliai sureguliuokite „NearBot“

Kodas paverčia signalo stiprumą į atstumo įvertinimą. Jis patikimai veikia, kai reakcijos atstumai yra mažesni nei 2 metrai arba 6,5 pėdos. Kadangi tai yra tiesioginė konversija, ji nėra tokia sklandi tolimesniems atstumams kaip 3 metrai, kaip tai galėtų būti taikoma taikant geresnį skaičiavimo metodą. Daugiau apie tai vėliau.

Galbūt norėsite pakoreguoti servo rago (mažos baltos rankos, kuri juda) padėtį. Tai atliekama tiesiog atsukant servo svirtį atsuktuvu ir iš naujo ją padėjus.

Kita dalis - maksimalus ir minimalus judėjimo laipsnis, naudojant kodą.

Tai galima padaryti keičiant numerius, esančius eilutėse, kurios atrodo taip:

myservo.write (10); // perkelia servo ranką į 10 laipsnių sukimąsi

Taip pat galite reguliuoti signalo stiprumo jautrumą, pakeisdami neigiamus skaičius eilutėse, kurios atrodo taip:

if (rssi> -30 && rssi <-5) {// Jei signalo stiprumas stipresnis nei -30, ir silpnesnis nei -5. tada darykite taip …

9 veiksmas: kaip tai veikia

  1. „NearBot“pirmiausia prisijungia prie viešosios interneto prieigos taško, kai vartotojai artėja.
  2. Jis nuskaito RSSI (gauto signalo stiprumą) ir konvertuoja jį į apytikslį atstumą.
  3. Nors atstumas yra nurodytame diapazone, jis perkelia servo variklio svirtį į 1 padėtį.
  4. Priešingu atveju servo variklis perkeliamas į 2 padėtį.

Kai tai išbandžiau, šis RSSI derinimas (-50) perkelia servo į 1 padėtį, o atstumas yra nuo 0 iki 1,5 metro, o kišenėje yra ESP-01 švyturėlis arba telefono taškas.

RSSI paprastai yra nuo -90 iki -20, o stipriausias signalo stiprumas yra -20.

Jei atidarysite „Arduino IDE“serijos monitorių, kai „NearBot“yra prijungtas prie kompiuterio, jis realiu laiku parodys signalo stiprumą ir aktyvinimo taškus, kad galėtumėte gauti naudingų atsiliepimų.

Čia yra visas kodas:

//PRIEŠ TAU PRADEDANT:

// 1. Jei dar neatsisiuntėte „Arduino IDE“, gaukite jį nemokamai (dovanoti neprivaloma) adresu: https://www.arduino.cc/en/Main/Software // 2. atidarykite „Arduino IDE“(jei to dar neskaitote „Arduino IDE“!)… // 3. Eikite į failus ir spustelėkite „Arduino IDE“nuostatą… // 4. nukopijuokite žemiau esančią nuorodą į Papildomų lentų tvarkytuvę: //https://arduino.esp8266.com/stable/package_esp8266com_index.json // 5. spustelėkite Gerai, kad uždarytumėte nuostatų skirtuką… // 6. Eikite į įrankius ir lentą, tada pasirinkite lentos tvarkyklę… // 7. Eikite į esp8266 by esp8266 bendruomenę ir įdiekite „Arduino“programinę įrangą … // 8. Jums gali tekti atsisiųsti ir įdiegti „CH340“tvarkyklę, jei nepavyksta užmegzti „NodeMCU“pokalbio su „Arduino IDE“: https://www.arduino.cc/en/Main/Software // Kai visi aukščiau aprašyti procesai bus baigti skaitykite, kad užprogramuotumėte mūsų esp8266 „NodeMCU“mikrovaldiklį su „Arduino IDE“. Galbūt norėsite išsiaiškinti, kurią „NodeMCU“versiją turite. Štai palyginimo vadovas: https://www.arduino.cc/en/Main/Software // Pagamintas iš „NodeMCU ESP8266“mikrovaldiklio, akumuliatoriaus arba USB maitinimo šaltinio ir „SG90 Servo“// Kaip švyturį galite naudoti antrąjį nemodifikuotą esp8266 modulį hotspot AP, o ne išmaniuoju telefonu. // „NearBot“grandinė: // D0 kištukas į servo signalo laidą (šviesiausios spalvos laidas) // 3 V kaištis į 5 V servo laidą (vidurinė viela) (sujungtas lygiagrečiai su USB kabeliu arba „NodeMCU“VO kaiščiu, jei turite V3.) /USB maitinimas prie „USB“kištuko „NodeMCU“// GND kaištis į „Servo“įžeminimo laidą (tamsiausios spalvos laidas) // Pastabos eilutės prasideda dviem brūkšniais į priekį ir yra ignoruojamos kompiuterių. Pastabos skirtos tik mums žmonėms! #Include #include // Gali būti reikalingas serijiniam spausdinimui. #Include // Servo biblioteka #define D0 16 // Apibrėžia kaiščius, kad būtų lengviau priskirti kaiščius. #Define D1 5 // I2C magistralės SCL (laikrodis) #define D2 4 // I2C magistralės SDA (duomenys) #define D3 0 #define D4 2 // Tas pats kaip "LED_BUILTIN", bet atvirkštinė logika #define D5 14 // SPI magistralės SCK (laikrodis) #define D6 12 // SPI magistralė MISO #define D7 13 // SPI Autobusas MOSI #define D8 15 // SPI magistralė SS (CS) #define D9 3 // RX0 (nuoseklioji konsolė) #define D10 1 // TX0 (nuoseklioji konsolė) Servo myservo; // Sukurkite servo objektą, pavadintą myservo // Telefonas arba papildomas ESP8266 modulis nustatytas į viešosios interneto prieigos taško AP režimą: const ch ar* ssid = ""; // Įdėkite savo viešosios interneto prieigos taško pavadinimą į kabutes const char* password = ""; // Įdėkite savo viešosios interneto prieigos taško slaptažodį į kabučių void setup () {Serial.begin (115200); // nustato serijos duomenų perdavimo spartą, kad mikrovaldiklis galėtų kalbėtis su serijinio spausdinimo sąsaja „Arduino IDE“- gali tekti ją pakeisti į 9600! myservo.attach (D0); // prie servo objekto pritvirtina D0 kaiščio servo, dar vadinamo GPIO16, servo objektą - daugiau žiūrėkite: https://www.esp8266.com/viewtopic.php?f=32&t=8862#… myservo.write (10); // perkelia servo ranką į 10 laipsnių sukimąsi Serial.println ("Užrakinta"); // išveskite serijinį monitorių žodžiu "Užrakintas" WiFi.mode (WIFI_STA); // Nustato wifi į stoties režimą WiFi.begin (ssid, slaptažodis); // Prisijungia prie viešosios interneto prieigos taško švyturėlio} void loop () {// Ciklas greitai ir vėl greitai paleidžiamas, jei („WiFi.status ()! = WL_CONNECTED“{// Jei „Wifi“NĖRA prijungtas, atlikite šiuos veiksmus … Serial.println („Nepavyko gauti„ Wi -Fi “ryšio“); myservo.write (10); // Perkelia servo ranką į 10 laipsnių Serial.println ("Užrakinta"); } else {// Jei „WiFi“yra prijungtas, atlikite šiuos veiksmus … ilgas rssi = WiFi. RSSI (); // Sukuria kintamąjį pavadinimu rssi ir priskiria jį funkcijai, kuri grąžina viešosios interneto prieigos taško švyturėlio signalo stiprumo rodmenį Serial.print (rssi); // siunčia rssi rodmenis nuosekliajam monitoriui, jei (rssi> -50 && rssi <-5) {// Jei signalo stiprumas yra stipresnis nei -50 ir silpnesnis nei -5. tada atlikite šiuos veiksmus … myservo.write (170); // Pasukite servo ranką iki 170 laipsnių Serial.println ("Atrakinta"); } else {// Jei nesilaikoma pirmiau nurodytų sąlygų, atlikite šiuos veiksmus … myservo.write (10); // Pasuka servovariklį atgal iki 10 laipsnių. Serial.println („Užrakinta“); }}}

10 žingsnis: jūs turėtumėte žinoti…

Atsakomybės apribojimas:

Dabartinė „NearBot“kodo iteracija patikimai veikia atstumus, mažesnius nei 2 metrai arba 6,5 pėdos. Be to, jis tampa ne toks tikslus, bet vis tiek veikia.

Tai galima ištaisyti, tačiau šiuo metu nežinau, kaip tai padaryti. Man būtų malonu, jei kas nors dirbtų su manimi, kad galėčiau atnaujinti šią instrukciją tiksliau apskaičiuodamas atstumą!

Šios nuorodos gali būti naudingos: „YouTuber CNLohr“ESP8266 sukūrė atstumo ir padėties jutimo programinę įrangą, kurios sėkmė buvo ribota:

„Espressif“sukūrė skrydžio laiko atstumo aptikimo funkciją, kuri veiktų su „Arduino IDE“, skirta ESP8266, bet niekada jos neišleido:

„SubPos“padėties nustatymo sistema naudoja ESP8266 modulius ir kelio praradimo skaičiavimą, o tai aš nežinau, kaip įdiegti „Arduino IDE“:

Radau pavyzdį „Java“kalba, bet aš nežinau, kaip pakartoti tai „Arduino IDE“:

dvigubas atstumas = Math.pow (10,0, (((dvigubas) (tx_pwr/10)) - rx_pwr - 10*Math.log10 (4*Math. PI/(c/dažnis)))/(20*mu));

11 žingsnis: tai viskas

Jei sukuriate savo „NearBot“, paskelbkite savo „aš tai padariau“komentaruose žemiau!

Jei turite daugiau idėjų, kam naudoti „Versatile NearBot“platformą, pakomentuokite savo idėjas! Tai gali būti puikus įkvėpimas kitiems mokomiems naudotojams!

Jei jums patinka ši pamoka, apsvarstykite galimybę balsuoti už šią pamoką konkursuose!

Rekomenduojamas: