Tabla de contenido:

NearBot versátil: 11 pasos (con imágenes)
NearBot versátil: 11 pasos (con imágenes)

Video: NearBot versátil: 11 pasos (con imágenes)

Video: NearBot versátil: 11 pasos (con imágenes)
Video: 14 Actually Useful Tips for BARD 2024, Mes de julio
Anonim
Image
Image

Este instructivo le mostrará cómo construir un disparador de robot versátil que puede mover algo como un botón, interruptor o marcar en varios dispositivos cuando usted (con su teléfono o una baliza en su bolsillo) está cerca. Esto significa que podría desbloquear y volver a bloquear automáticamente un pestillo de la puerta cuando * solo usted * pase, cerrar una válvula de rociador para que pueda atravesar el agua ileso como una especie de Moisés suburbano, bajar el volumen del altavoz mientras está en el garaje sala de banda, active un iPod que toque una melodía de entrada dramática o cuente un chiste (¿el tweet de Jaden Smith?) mientras está en la sala, o pause una película cuando se levante para usar el baño.

¡Este proyecto no requiere soldadura ni herramientas especiales

Si disfrutas lo suficiente de estos instructivos, ¡considera votar por este instructivo en el concurso de Robótica 2017!

Paso 1: Adquiera las piezas de hardware

Necesitará:

  • NodeMCU v2 o V3
  • Servomotor Micro 9G alrededor de $ 1.40 USD envío gratis en eBay o Aliexpress
  • Cables de puente Arduino hembra a macho.
  • Una carcasa para el NearBot: utilicé una caja de plástico de desecho que encontré.
  • Cable de datos micro USB (piezas de teléfono desechadas)
  • Fuente de alimentación USB (cargador de teléfono de desecho)

Si no tiene un teléfono inteligente con una función de punto de acceso móvil, también necesitará:

  • Módulo ESP-01 alrededor de $ 2.50 USD envío gratis en DealExtreme, GearBest, Ebay o Aliexpress.
  • 1 par de pilas AAA
  • portapilas AAA doble con interruptor

Paso 2: inicio rápido

Este paso contiene una guía de inicio rápido en caso de que le guste ese tipo de cosas. El resto de este instructivo va paso a paso y agrega información más detallada

// Lista de compras: // Microcontrolador NodeMCU V3 (Lolin) ESP8266

// Servomotor SG90 9G

// Banco de energía USB o adaptador de pared USB.

// Cable de carga / datos micro USB

// Cables de puente de tipo Arduino macho a hembra

//ANTES DE QUE EMPIECES:

// 1. Si aún no ha descargado el IDE de Arduino, consígalo gratis (donación opcional) en:

// 2. abra el IDE de Arduino (¡si aún no está leyendo esto en el IDE de Arduino!) …

// 3. Vaya a archivos y haga clic en la preferencia en el IDE de Arduino …

// 4. copie el siguiente código en el Administrador de tableros adicionales: //https://arduino.esp8266.com/stable/package_esp8266com_index.json

// 5. haga clic en Aceptar para cerrar la pestaña de preferencias …

// 6. Vaya a herramientas y tablero, y luego seleccione administrador de tablero …

// 7. Navegue a la comunidad esp8266 por esp8266 e instale el software para Arduino…

// 8. Es posible que deba descargar e instalar el controlador CH340 si no puede hacer que NodeMCU hable con su IDE de Arduino:

// Una vez completado todo el proceso anterior, estamos leídos para programar nuestro microcontrolador esp8266 NodeMCU con el IDE de Arduino.

//9.seleccione NodeMCU V1.0 ESP12E en el menú de la placa /

/ 10. Seleccione el puerto COM que está utilizando.

// 11. seleccione el código (descárguelo de www.makersa.ga) y haga clic en cargar. /

/ 12. Conecte el servo al NodeMCU usando cables de puente. D0 a señal, tierra a tierra, + VCC a VO o 3V. /

/ 13. Ajuste la bocina del servo con un destornillador.

// 14. Ajuste los grados de movimiento máximo y mínimo usando el código.

//15. Vuelva a cargarlo en NodeMCU cada vez que se actualice el código.

// Puede que le resulte importante averiguar qué versión de NodeMCU tiene. Aquí hay una guía de comparación:

frightanic.com/iot/comparison-of-esp8266-no… // Diagrama de conexiones de NodeMCU v1: https://frightanic.com/iot/comparison-of-esp8266-no… // Diagrama de conexiones de NodeMCU v2: https://frightanic.com/iot/comparison-of-esp8266-no… // Diagrama de distribución de pines de NodeMCU v3:

// Explicación de las plataformas:

// Hecho de microcontrolador NodeMCU ESP8266, batería o fuente de alimentación USB y SG90 Servo

// Puede usar un segundo módulo esp8266 no modificado como un punto de acceso de baliza AP en lugar de usar un teléfono inteligente, sin necesidad de programación.

Paso 3: Adquiera las partes del software

Primero deberá descargar el IDE gratuito de Arduino

El Arduino Web Editor no funciona con NodeMCU en el momento en que escribo esto, por lo que tendrá que instalar el IDE en su computadora.

También deberá obtener los archivos de NearBot de www. MakerSa.ga: el enlace de descarga de archivos para este proyecto se encuentra en ese sitio.

Paso 4: instale los controladores y los perfiles de la placa

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

Dentro del zip de NearBot que descargó y descomprimió, estarán los controladores para el módulo NodeMCU. Instálelos en su computadora.

Si esos no funcionan para usted, puede encontrar controladores CH340G en wemos.cc/downloads

Es posible que su NodeMCU no use el chip CH340G, por lo que es posible que deba comentar con el controlador que está buscando, y le responderé con el enlace de descarga para ese controlador.

  1. A continuación, abra el IDE de Arduino y vaya a Preferencias de archivo Administrador de placas adicionales en el IDE de Arduino.
  2. Pegue allí el siguiente código:
  3. Haga clic en Aceptar para cerrar la pestaña de preferencias.
  4. Vaya a herramientas y tablero y luego seleccione administrador de tablero.
  5. Vaya a "esp8266 por comunidad esp8266" e instale el software para Arduino.

Una vez que se haya completado todo el proceso anterior, ¡estamos listos para programar nuestro microcontrolador esp8266 NodeMCU con el IDE de Arduino!

Paso 5: Información útil

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

Puede resultarle útil averiguar qué versión de NodeMCU tiene. Aquí hay una guía de comparación:

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

Cada versión tiene diferentes disposiciones de pines. Compré la versión v3 (Lolin) porque tiene pines de salida de 5V para alimentar el servomotor. Finalmente, en cambio, usé los pines de alimentación de 3 voltios por seguridad (los pines de E / S de NodeMCU no son tolerantes a 5V), pero es posible que desee usar los pines de 5V porque técnicamente este tipo de servomotores se especifican para una potencia de 4.5 a 5 voltios.

Paso 6: Cargue el código en NodeMCU

Cargue el código en NodeMCU
Cargue el código en NodeMCU
Cargue el código en NodeMCU
Cargue el código en NodeMCU
  1. Conecte el NodeMCU a su computadora usando cualquier cable micro USB.
  2. Abra el IDE de Arduino y, en "Placas", seleccione "ESP12E" y el puerto COM para NodeMCU.
  3. En el IDE, vaya a FileOpen y busque la carpeta zip descargada previamente demakersa.ga para abrir el boceto de Arduino llamado "ProximityActuator013017DonovanMagryta.ino"
  4. Luego, edite la línea de código que contiene esto para agregar el nombre y la contraseña de su baliza WiFi. ¡Más sobre eso a continuación! Por ejemplo:

const char * ssid = "mywifi"; // Pon el nombre de tu punto de acceso entre comillas

const char * contraseña = "mywifipassword"; // Pon tu contraseña de hotspot entre comillas

Luego haga clic en "cargar" para actualizar el código en la placa NodeMCU.

NearBot utiliza una baliza WiFi de bolsillo para identificarlo y calcular la distancia. Al igual que las llaves de proximidad que tienen algunos autos más nuevos, abren la puerta del auto cuando te acercas.

Puede usar el punto de acceso móvil de su teléfono inteligente como baliza o, alternativamente, usar un módulo WiFi ESP-01 económico alimentado por un par de baterías AAA o una pequeña batería de litio de 3.7v. No es necesario programar el ESP-01, por defecto está en modo hotspot cuando está encendido. El diagrama de circuito para eso se muestra en este paso.

Paso 7: conecte el servo al NodeMCU

Necesitará algunos cables de puente para conectar el servo al NodeMCU V3.

El diagrama del circuito es simple.

Pin D0 a la señal en el cable (cable de color más claro en el servo, generalmente amarillo o blanco).

Pin 3V o pin VO al cable de entrada de 5V (segundo cable de color más claro en el servo, generalmente rojo o naranja).

Pin GND al cable de tierra (cable de color más oscuro en el servo, generalmente marrón o negro).

Paso 8: Ajuste el NearBot

El código convierte la intensidad de la señal en estimación de distancia. Funciona de forma fiable para distancias de reacción inferiores a 2 metros o 6,5 pies. Debido a que es una conversión directa, no es tan suave para distancias superiores a 3 metros como podría serlo con un mejor método de cálculo. Más sobre eso más tarde.

Es posible que desee ajustar dónde se coloca la bocina del servo (el pequeño brazo blanco que se mueve). Esto se hace simplemente desenroscando el brazo del servo con un destornillador y volviendo a colocarlo.

La siguiente parte es ajustar los grados de movimiento máximo y mínimo usando el código.

Esto se puede hacer cambiando los números contenidos en líneas que se ven así:

myservo.write (10); // mueve el brazo del servo a una rotación de 10 grados

También puede ajustar la sensibilidad de la intensidad de la señal cambiando los números negativos en líneas que se ven así:

if (rssi> -30 && rssi <-5) {// Si la intensidad de la señal es más fuerte que -30 y más débil que -5. luego haz lo siguiente …

Paso 9: cómo funciona

  1. El NearBot primero se conecta al hotspot por adelantado cuando se acerca un usuario.
  2. Escanea el RSSI (intensidad de la señal recibida) y lo convierte en una distancia aproximada.
  3. Mientras la distancia está dentro del rango especificado, mueve el brazo del servomotor a la posición 1.
  4. De lo contrario, el servomotor se mueve a la posición 2.

Cuando probé esto, esta sintonización RSSI (-50) mueve el servo a la posición 1 mientras la distancia es de 0 a 1,5 metros con la baliza ESP-01 o el punto de acceso del teléfono en mi bolsillo.

El RSSI generalmente se encuentra dentro de un rango de -90 a -20, siendo -20 la intensidad de señal más fuerte.

Si abre el monitor serial Arduino IDE mientras el NearBot está conectado a la computadora, mostrará la fuerza de la señal y los puntos de activación en tiempo real para que tenga comentarios útiles.

Aquí está el código completo:

//ANTES DE QUE EMPIECES:

// 1. Si aún no ha descargado el IDE de Arduino, consígalo gratis (donación opcional) en: https://www.arduino.cc/en/Main/Software // 2. abra el IDE de Arduino (¡si aún no está leyendo esto en el IDE de Arduino!)… // 3. Vaya a archivos y haga clic en la preferencia en el IDE de Arduino… // 4. Copie el siguiente enlace en el Administrador de tableros adicionales: //https://arduino.esp8266.com/stable/package_esp8266com_index.json // 5. haga clic en Aceptar para cerrar la pestaña de preferencias … // 6. Vaya a herramientas y tablero, y luego seleccione administrador de tablero… // 7. Navegue a la comunidad esp8266 por esp8266 e instale el software para Arduino… // 8. Es posible que deba descargar e instalar el controlador CH340 si no puede hacer que NodeMCU hable con su IDE de Arduino: https://www.arduino.cc/en/Main/Software // Una vez que se haya completado todo el proceso anterior, estamos lea para programar nuestro microcontrolador esp8266 NodeMCU con el IDE de Arduino. Es posible que desee averiguar qué versión de NodeMCU tiene. Aquí hay una guía de comparación: https://www.arduino.cc/en/Main/Software // Hecho de microcontrolador NodeMCU ESP8266, batería o fuente de alimentación USB, y SG90 Servo // Puede usar un segundo módulo esp8266 no modificado como baliza punto de acceso AP en lugar de utilizar un teléfono inteligente. // Circuito NearBot: // Pin D0 al cable de señal del servo (cable de color más claro) // Pin de 3V al cable de 5v del servo (cable del medio) (empalmado en paralelo al cable USB o al pin VO en el NodeMCU si tiene V3. / / Alimentación USB al conector USB en el NodeMCU // Pin GND al cable de tierra del servo (cable de color más oscuro) // Las líneas de nota comienzan con dos barras diagonales y las computadoras las ignoran. ¡Las notas son solo para nosotros, los humanos! #Include #include // Puede ser necesario para impresión en serie. #Include // Librería de servos #define D0 16 // Define pines para facilitar la asignación de pines. #Define D1 5 // I2C Bus SCL (reloj) #define D2 4 // I2C Bus SDA (datos) #define D3 0 #define D4 2 // Igual que "LED_BUILTIN", pero lógica invertida #define D5 14 // SPI Bus SCK (reloj) #define D6 12 // SPI Bus MISO #define D7 13 // SPI Bus MOSI #define D8 15 // SPI Bus SS (CS) #define D9 3 // RX0 (Serial console) #define D10 1 // TX0 (Serial console) Servo myservo; // Create a servo object named myservo // Phone o módulo ESP8266 adicional configurado en modo hotspot AP: const ch ar * ssid = ""; // Pon el nombre de tu punto de acceso entre comillas const char * password = ""; // Pon tu contraseña de hotspot entre comillas void setup () {Serial.begin (115200); // establece la velocidad en baudios en serie para que el microcontrolador pueda comunicarse con la interfaz de impresión en serie en el IDE de Arduino.¡Es posible que deba cambiarlo a 9600 en su lugar! myservo.attach (D0); // conecta el servo en el pin D0 también conocido como GPIO16 al objeto servo - Ver más en: https://www.esp8266.com/viewtopic.php?f=32&t=8862#… myservo.write (10); // mueve el brazo del servo a una rotación de 10 grados Serial.println ("Locked"); // envía al monitor serial la palabra "Locked" WiFi.mode (WIFI_STA); // Establece wifi en el modo de estación WiFi.begin (ssid, contraseña); // Se conecta a la baliza del hotspot} void loop () {// El bucle se repite una y otra vez rápidamente if (WiFi.status ()! = WL_CONNECTED) {// Si wifi NO está conectado, haga lo siguiente… Serial.println ("No se pudo obtener una conexión wifi"); myservo.write (10); // Mueve el brazo del servo a 10 grados Serial.println ("Locked"); } else {// Si WiFi ESTÁ conectado, haga lo siguiente … long rssi = WiFi. RSSI (); // Crea una variable llamada rssi y la asigna a la función que devuelve la lectura de la intensidad de la señal de la baliza del hotspot Serial.print (rssi); // envía la lectura rssi al monitor en serie if (rssi> -50 && rssi <-5) {// Si la intensidad de la señal es más fuerte que -50 y más débil que -5. luego haga lo siguiente … myservo.write (170); // Gire el brazo del servo a 170 grados Serial.println ("Desbloqueado"); } else {// Si no se cumplen las condiciones anteriores, haga lo siguiente … myservo.write (10); // Gira el brazo del servo hacia atrás 10 grados. Serial.println ("Bloqueado"); }}}

Paso 10: Debes saber …

Descargo de responsabilidad:

La iteración actual del código NearBot funciona de manera confiable para distancias inferiores a 2 metros o 6.5 pies. Más allá de eso, se vuelve menos preciso, pero aún funciona.

Esto se puede arreglar, pero por el momento no sé cómo hacerlo. ¡Me encantaría que alguien trabajara conmigo para poder actualizar estos instructables con un método más preciso para calcular la distancia!

Estos enlaces pueden ser útiles: YouTuber CNLohr desarrolló un firmware de detección de distancia y posición para el ESP8266 con un éxito limitado:

Espressif desarrolló una función de detección de distancia de tiempo de vuelo que funcionaría con Arduino IDE para el ESP8266, pero nunca la lanzó:

El sistema de posicionamiento SubPos usa módulos ESP8266 y Path Loss Calculation, que es lo que no sé cómo implementar en Arduino IDE:

Encontré un ejemplo en lenguaje Java, pero no sé cómo replicar esto es Arduino IDE:

distancia doble = Math.pow (10.0, (((doble) (tx_pwr / 10)) - rx_pwr - 10 * Math.log10 (4 * Math. PI / (c / frecuencia))) / (20 * mu));

Paso 11: ¡Eso es todo

Si crea su propio NearBot, publique su "Lo hice" en los comentarios a continuación.

Si tiene más ideas sobre para qué usar la plataforma Versatile NearBot, ¡comente sus ideas! ¡Podría ser una gran inspiración para otros usuarios de instructables!

Si disfrutas de este tutorial, ¡considera votar por este instructivo en concursos!

Recomendado: