Taula de continguts:

NearBot versàtil: 11 passos (amb imatges)
NearBot versàtil: 11 passos (amb imatges)

Vídeo: NearBot versàtil: 11 passos (amb imatges)

Vídeo: NearBot versàtil: 11 passos (amb imatges)
Vídeo: Камера Insta360 One R - подробное введение 2024, Desembre
Anonim
Image
Image

Aquesta instrucció us mostrarà com crear un disparador de robot versàtil que pugui moure alguna cosa com un botó, un commutador o marcar en diversos dispositius quan estigueu a prop (amb el telèfon o un far a la butxaca). Això vol dir que es podria desbloquejar i tornar a bloquejar automàticament un pestell de la porta ja que * només hi passeu *, tanqueu una vàlvula d’aspersió perquè pugueu passar per l’aigua indemne com una mena de Moisès suburbà, baixant el volum dels altaveus mentre esteu al garatge sala de bandes, activi un iPod que reprodueixi una cançó d’entrada dramàtica o expliqui una broma (tuiteig de Jaden Smith?) mentre esteu a l’habitació o pauseu una pel·lícula quan us aixequeu per utilitzar el lavabo.

Aquest projecte no requereix soldadura ni eines especials

Si us agrada prou aquest instructiu, penseu a votar per aquest instructiu al concurs de robòtica 2017.

Pas 1: adquiriu les peces de maquinari

Necessitarà:

  • NodeMCU v2 o V3
  • Servomotor Micro 9G aproximadament 1,40 dòlars d’enviament gratuït a eBay o Aliexpress
  • Jumper Arduino cables de femella a home.
  • Una carcassa per al NearBot: he utilitzat una caixa de plàstic que vaig trobar.
  • Cable de dades micro USB (ferralla de peces del telèfon)
  • Font d'alimentació USB (carregador de ferralla)

Si no teniu un telèfon intel·ligent amb una funció de punt d'accés mòbil, també necessitareu:

  • Mòdul ESP-01 d’enviament gratuït de 2,50 dòlars EUA a DealExtreme, GearBest, Ebay o Aliexpress.
  • 1 parell de piles AAA
  • suport de bateria dual AAA amb interruptor

Pas 2: Inici ràpid

Aquest pas conté una guia d'inici ràpid per si us agrada aquest tipus de coses. La resta d’aquest instructiu va pas a pas i afegeix informació més profunda

// Llista de la compra: // NodeMCU V3 (Lolin) microcontrolador ESP8266

// Servomotor SG90 9G

// Banc d’alimentació USB o adaptador de paret USB.

// Cable de dades / càrrega Micro USB

// Filferos jumper tipus Arduino masculí a femení

// ABANS DE COMENÇAR:

// 1. Si encara no heu descarregat l'IDE Arduino, obteniu-lo de franc (donació opcional) a:

// 2. obriu l'IDE Arduino (si encara no llegiu això a l'IDE Arduino!) …

// 3. Aneu a fitxers i feu clic a la preferència a l'IDE Arduino …

// 4. copieu el codi següent al Gestor de taulers addicionals: //https://arduino.esp8266.com/stable/package_esp8266com_index.json

// 5. feu clic a D'acord per tancar la pestanya de preferències …

// 6. Aneu a Eines i tauler i, a continuació, seleccioneu gestor de tauler …

// 7. Aneu a la comunitat esp8266 per esp8266 i instal·leu el programari per a Arduino …

// 8. És possible que hagueu de descarregar i instal·lar el controlador CH340 si no podeu fer que el NodeMCU parli amb el vostre IDE Arduino:

// Un cop finalitzat tot el procés anterior, es llegeix per programar el nostre microcontrolador esp8266 NodeMCU amb l'IDE Arduino.

//9.seleccioneu NodeMCU V1.0 ESP12E al menú del tauler /

/ 10. Seleccioneu el port COM que feu servir.

// 11. seleccioneu el codi (baixeu-lo des de www.makersa.ga) i feu clic a Carrega. /

/ 12. Connecteu el servo al NodeMCU mitjançant cables de pont. D0 a senyal, terra a terra, + VCC a VO o 3V. /

/ 13. Ajusteu la banya del servo amb un tornavís.

// 14. Ajusteu el grau de moviment màxim i mínim mitjançant el codi.

// 15. Torneu a penjar-lo al NodeMCU sempre que s'actualitzi el codi.

// Potser és important esbrinar quina versió de NodeMCU teniu. Aquí teniu una guia de comparació:

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

// Explicació de les plataformes:

// Fet amb microcontrolador NodeMCU ESP8266, bateria o font d’alimentació USB i Servo SG90

// Podeu utilitzar un segon mòdul esp8266 sense modificar com a punt d'accés de punt d'accés de balisa en lloc d'utilitzar un telèfon intel·ligent, no cal programació.

Pas 3: adquiriu les parts del programari

Primer haureu de descarregar l’IDE Arduino gratuït

L’Editor web Arduino no funciona amb el NodeMCU en el moment que escric això, de manera que haurà d’instal·lar l’IDE al vostre ordinador.

També haureu d’agafar els fitxers NearBot de www. MakerSa.ga: l’enllaç de descàrrega del fitxer d’aquest projecte apareix en aquest lloc.

Pas 4: instal·leu controladors i perfils de placa

Alguna informació útil
Alguna informació útil

Dins del fitxer zip de NearBot que heu baixat i descomprimit hi haurà els controladors del mòdul NodeMCU. Instal·leu-les al vostre ordinador.

Si aquests no us funcionen, és possible que pugueu trobar controladors CH340G a wemos.cc/downloads

És possible que el vostre NodeMCU no utilitzi el xip CH340G, de manera que és possible que hàgiu de fer comentaris amb el controlador que esteu cercant i us respondré amb l’enllaç de descàrrega d’aquest controlador.

  1. A continuació, obriu l'IDE Arduino i aneu a Preferències de fitxers Administrador de plaques addicionals a l'IDE Arduino.
  2. Enganxeu-hi el codi següent:
  3. Feu clic a D'acord per tancar la pestanya de preferències.
  4. Aneu a Eines i tauler i, a continuació, seleccioneu el gestor de taulers.
  5. Aneu a "comunitat esp8266 per esp8266" i instal·leu el programari per a Arduino.

Un cop finalitzat tot el procés anterior, estem preparats per programar el nostre microcontrolador esp8266 NodeMCU amb l'IDE Arduino.

Pas 5: informació útil

Alguna informació útil
Alguna informació útil
Alguna informació útil
Alguna informació útil

És possible que us sigui útil esbrinar quina versió de NodeMCU teniu. Aquí teniu una guia de comparació:

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

Cada versió té diferents arranjaments de pins. He comprat la versió v3 (Lolin) perquè té pins de sortida de 5 V per alimentar el motor Servo. En lloc d’això, he utilitzat els pins d’alimentació de 3 volts per seguretat (els pins d'E / S NodeMCU no són tolerants a 5 V), però és possible que vulgueu utilitzar els pins de 5 V perquè tècnicament aquest tipus de servomotors s’especifiquen per a una potència de 4,5 a 5 volts.

Pas 6: carregueu el codi al NodeMCU

Carregueu el codi al NodeMCU
Carregueu el codi al NodeMCU
Carregueu el codi al NodeMCU
Carregueu el codi al NodeMCU
  1. Connecteu el NodeMCU a l’ordinador mitjançant qualsevol cable micro USB.
  2. Obriu l'IDE Arduino i, a "Taules", seleccioneu "ESP12E" i el port COM del NodeMCU.
  3. A l’IDE, aneu a FileOpen i navegueu per la carpeta zip descarregada prèviament de makersa.ga per obrir l’esbós d’Arduino anomenat "ProximityActuator013017DonovanMagryta.ino".
  4. A continuació, editeu la línia de codi que la conté per afegir el nom i la contrasenya de la vostra balisa WiFi. Més informació a continuació. Per exemple:

const char * ssid = "mywifi"; // Introduïu el nom del punt d'accés dins de les cometes

const char * password = "mywifipassword"; // Introduïu la contrasenya del punt d'accés Wi-Fi dins de les cometes

A continuació, feu clic a "penja" per mostrar el codi al tauler NodeMCU.

El NearBot utilitza una balisa WiFi embutxacada per identificar-vos i calcular la distància. Igual que les tecles de proximitat, tenen alguns cotxes més nous que obren la porta del cotxe quan us acosteu.

Podeu utilitzar el punt d'accés mòbil del vostre telèfon intel·ligent com a far o, alternativament, utilitzar un mòdul WiFi ESP-01 econòmic alimentat per un parell de bateries AAA o una petita bateria de liti de 3,7 v. No cal programar l’ESP-01, ja que està engegat per defecte en mode hotspot. El diagrama del circuit per a això es mostra en aquest pas.

Pas 7: connecteu el Servo al NodeMCU

Necessitareu alguns cables de connexió per connectar el servo al NodeMCU V3.

El diagrama del circuit és senzill.

Fixeu D0 al senyal del cable (el color més lleuger del servo. Normalment groc o blanc).

Fixa el pin 3V o el pin VO al cable d’entrada de 5V (segon cable de color més clar del servo, normalment vermell o taronja).

Fixeu GND al sòl (filferro de color més fosc al servo, generalment marró o negre).

Pas 8: Afineu el NearBot

El codi converteix la intensitat del senyal en estimació de distància. Funciona de forma fiable per a distàncies de reacció inferiors a 2 metres o 6,5 peus. Com que és una conversió directa, no és tan suau per a distàncies superiors a 3 metres com podria ser amb un mètode de càlcul millor. Més informació sobre això més endavant.

És possible que vulgueu ajustar la posició de la banya de servo (el petit braç blanc que es mou). Això es fa simplement descargolant el servo braç amb un tornavís i tornant a col·locar-lo.

La següent part és ajustar el grau de moviment màxim i mínim mitjançant el codi.

Això es pot fer canviant els números que contenen les línies que tenen aquest aspecte:

myservo.write (10); // mou el servo braç a una rotació de 10 graus

També podeu ajustar la sensibilitat de la intensitat del senyal canviant els números negatius en línies que tinguin aquest aspecte:

if (rssi> -30 && rssi <-5) {// Si la intensitat del senyal és més gran que -30 i més feble que -5. després fes el següent …

Pas 9: Com funciona

  1. El NearBot primer es connecta al punt d'accés amb antelació a mesura que s'apropen els usuaris.
  2. Analitza el RSSI (intensitat del senyal rebut) i el converteix en una distància aproximada.
  3. Tot i que la distància es troba dins del rang especificat, mou el braç del servomotor a la posició 1.
  4. En cas contrari, el servomotor es mou a la posició 2.

Quan he provat això, aquesta sintonització RSSI (-50) mou el servo a la posició 1 mentre la distància és de 0 a 1,5 metres amb la balisa ESP-01 o el punt d'accés telefònic a la butxaca.

Normalment, el RSSI està dins del rang de -90 a -20, sent -20 la força de senyal més forta.

Si obriu l'Arduino IDE Serial Monitor mentre el NearBot està connectat a l'ordinador, mostrarà la intensitat del senyal i els punts d'activació en temps real perquè tingueu comentaris útils.

Aquí teniu el codi complet:

// ABANS DE COMENÇAR:

// 1. Si encara no heu descarregat l’IDE Arduino, obteniu-lo de franc (donació opcional) a: https://www.arduino.cc/en/Main/Software // 2. obriu l'IDE Arduino (si encara no llegiu això a l'IDE Arduino!) … // 3. Aneu a fitxers i feu clic a la preferència a l'IDE Arduino … // 4. copieu l'enllaç següent al Gestor de taulers addicionals: //https://arduino.esp8266.com/stable/package_esp8266com_index.json // 5. feu clic a D'acord per tancar la pestanya de preferències … // 6. Aneu a Eines i tauler i, a continuació, seleccioneu gestor de tauler … // 7. Aneu a la comunitat esp8266 per esp8266 i instal·leu el programari per a Arduino … // 8. És possible que hagueu de descarregar i instal·lar el controlador CH340 si no podeu fer que el NodeMCU parli amb el vostre IDE Arduino: https://www.arduino.cc/en/Main/Software // Un cop finalitzat tot el procés anterior, estem llegiu per programar el nostre microcontrolador esp8266 NodeMCU amb l'IDE Arduino. És possible que vulgueu esbrinar quina versió de NodeMCU teniu. Aquí teniu una guia de comparació: https://www.arduino.cc/en/Main/Software // Fabricat amb microcontrolador NodeMCU ESP8266, bateria o font d'alimentació USB i Servo SG90 // Podeu utilitzar un segon mòdul esp8266 no modificat com a far hotspot AP en lloc d’utilitzar un telèfon intel·ligent. // Circuit NearBot: // Pin D0 a fil de senyal Servo (fil de color més clar) // Pin de 3V a fil de servo 5v (fil mitjà) (empalmat en paral·lel al cable USB o al pin VO del NodeMCU si teniu V3. / / Alimentació USB a l’endoll USB del NodeMCU // Pin GND al cable de terra de servo (cable de color més fosc) // Les línies de notes comencen amb dues barres inclinades cap endavant i són ignorades pels ordinadors. Les notes són només per a nosaltres, els humans! #Include #include // Pot ser necessari per a la impressió en sèrie. #Include // Servo library #define D0 16 // Defineix pins per facilitar l'assignació de pins. #Define D1 5 // I2C Bus SCL (clock) #define D2 4 // I2C Bus SDA (dades) #define D3 0 #define D4 2 // Igual que "LED_BUILTIN", però lògica invertida #define D5 14 // Bus SPI SCK (rellotge) #define D6 12 // Bus SPI MISO #define D7 13 // SPI Bus MOSI # definir D8 15 // SPI Bus SS (CS) # definir D9 3 // RX0 (consola sèrie) # definir D10 1 // TX0 (consola sèrie) Servo myservo; // Crear un objecte servo anomenat myservo // Telèfon o mòdul ESP8266 addicional configurat en mode AP de punt d'accés: const ch ar * ssid = ""; // Introduïu el nom del punt d'accés dins de les cometes const char * password = ""; // Introduïu la contrasenya del punt d'accés Wi-Fi dins de la configuració de cometes () {Serial.begin (115200); // estableix la velocitat de transmissió en sèrie perquè el microcontrolador pugui parlar amb la interfície d'impressió en sèrie de l'IDE Arduino. És possible que hàgiu de canviar-lo a 9600. myservo.attach (D0); // adjunta el servo al pin D0 aka GPIO16 a l'objecte servo - Vegeu més a: https://www.esp8266.com/viewtopic.php?f=32&t=8862#… myservo.write (10); // mou el servo braç a una rotació de 10 graus Serial.println ("Bloquejat"); // emet el monitor sèrie la paraula "Locked" WiFi.mode (WIFI_STA); // Estableix el wifi al mode Estació WiFi.begin (ssid, contrasenya); // Es connecta a un hotspot beacon} void loop () {// El bucle es repeteix una i altra vegada ràpidament si (WiFi.status ()! = WL_CONNECTED) {// Si el wifi NO està connectat, feu el següent … Serial.println ("No s'ha pogut obtenir una connexió wifi"); myservo.write (10); // Mou el braç servo a 10 graus Serial.println ("Bloquejat"); } else {// Si hi ha connexió WiFi, feu el següent … long rssi = WiFi. RSSI (); // Crea una variable anomenada rssi i l’assigna a la funció que retorna la lectura de la intensitat del senyal de la balisa de punt d'accés Serial.print (rssi); // envia la lectura rssi al monitor sèrie si (rssi> -50 && rssi <-5) {// Si la intensitat del senyal és més gran que -50 i més baixa que -5. després feu el següent … myservo.write (170); // Gireu el braç servo a 170 graus Serial.println ("Desbloquejat"); } else {// Si no es compleixen les condicions anteriors, feu el següent … myservo.write (10); // Gira el braç del servo cap a 10 graus. Serial.println ("Bloquejat"); }}}

Pas 10: hauríeu de saber …

Exempció de responsabilitat:

La iteració actual del codi NearBot funciona de manera fiable per a distàncies inferiors a 2 metres o 6,5 peus. Més enllà d’això, es fa menys precís, però encara funciona.

Això es pot solucionar, però de moment no sé com fer-ho. M'encantaria que algú treballés amb mi per poder actualitzar aquest mètode instructiu amb un mètode més precís de càlcul de la distància.

Aquests enllaços poden ser útils: YouTuber CNLohr ha desenvolupat un microprogramari de detecció de posició i distància per a l’ESP8266 amb un èxit limitat:

Espressif va desenvolupar una funció de detecció de distància de temps de vol que funcionaria amb Arduino IDE per a l’ESP8266, però no l’ha publicat mai:

El sistema de posicionament de SubPos utilitza mòduls ESP8266 i càlcul de pèrdues de camí, que és el que no sé implementar a Arduino IDE:

He trobat un exemple en llenguatge Java, però no sé com replicar-ho. Arduino IDE és:

distància doble = Math.pow (10.0, (((doble) (tx_pwr / 10)) - rx_pwr - 10 * Math.log10 (4 * Math. PI / (c / freqüència))) / (20 * mu));

Pas 11: Això és tot

Si feu el vostre propi NearBot, publiqueu el vostre "I made it" als comentaris següents.

Si teniu més idees sobre per a què utilitzar la versàtil plataforma NearBot, comenteu les vostres idees. Podria ser una gran inspiració per a altres usuaris instructius.

Si us agrada aquest tutorial, penseu a votar per aquest instructiu als concursos.

Recomanat: