Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Localizador bidireccional de la vieja escuela con Arduino

Componentes y suministros

Tarjeta SIM Hologram Global IoT
× 1
Arduino UNO
× 1
Arduino GSM shield V2
× 1
Kit de pantalla LCD Adafruit con pantalla de caracteres de 16x2:solo 2 pines ¡usado! - AZUL Y BLANCO
× 1
Caja del proyecto Hammond 4.7 x 2.6 x 1.4 Azul translúcido
× 1

Aplicaciones y servicios en línea

Enrutador de datos de hologramas

Acerca de este proyecto

Introducción

Buscando recrear la gloria de finales de los 90 y principios de los 2000, pensé que intentaría hacer mi propio buscapersonas bidireccional, ¡como solía usar Jay-Z! Pero encontré esta idea más útil que a primera vista:la diseñé para que los niños pudieran usarla en lugar de un teléfono celular real, o podría usarse como un botón "SOS" para alguien que trabaja solo al aire libre o incluso hacer ejercicio (si fuera un poco más pequeño). Y durante las últimas semanas, este dispositivo siempre ha estado encendido en mi sala de estar, donde mi esposa y yo nos dejamos mensajes tontos.

Resumen:Este proyecto envía y recibe mensajes de texto (SMS) a través de un arduino con módem celular integrado en una pequeña caja con una pantalla LCD y botones de control simples.

Tenga en cuenta que el código para este proyecto incluye la capacidad de ejecutar el sistema desde la interfaz en serie para que pueda crear y usar una versión de este proyecto incluso si no tiene un protector LCD.

Selección de hardware

Tenía un Arduino GSM Shield que quería usar con este proyecto junto con una tarjeta SIM de Hologram, por lo que combinarlo con un Arduino UNO tenía mucho sentido. Adafruit fabrica un protector de pantalla LCD con botones incorporados, y debido a que usa el bus I2C, usa solo dos pines en el Arduino para la pantalla y cinco botones, dejando mucho espacio para personalización futura.

La pantalla LCD tiene un bonito color de fondo azul, así que pensé que combinarla con una carcasa azul translúcida se vería bien. Apilar las tres placas una encima de la otra hizo algunas conexiones muy limpias y no fue un problema eléctricamente porque los dos protectores usan pines diferentes entre sí.

  • Pantalla LCD:pines analógicos de 4 y 5 para el bus I2C (junto con alimentación de + 5V y tierra [pero solo el suelo al lado del pin Vin, no el que está al lado del pin 5V])
  • Escudo GSM:pines 2 y 3 para el software en serie, y pin 7 como reinicio de energía (más energía y tierra obviamente, aunque nunca vi ningún detalle de esto en la documentación)

¡Todo lo demás es libre de expandirse todavía! Incluso se podrían agregar otros dispositivos al bus I2C.

Durante el desarrollo, el sistema funcionó bien con solo la alimentación USB de mi computadora portátil para enviar y recibir SMS, aunque sospecho que necesitará más energía para usar datos celulares GPRS de manera confiable.

Comunicación celular

Hologram proporciona un servicio de datos móviles que funciona con cualquier dispositivo que acepte una tarjeta SIM. Después de registrar mi tarjeta SIM para el servicio, con solo un clic adicional pude asignarle un número de teléfono en el código de área de mi elección. Otra característica que hace que este proyecto sea excelente como comunicador para niños, por ejemplo, es que es muy económico mantener el servicio activo ($ 0.40 / mes) y puedo pausarlo en cualquier momento si dejo de usar el dispositivo. Como la mayoría de los planes de telefonía celular, recibir mensajes de texto es gratis y el envío cuesta $ 0.19 cada uno. En el futuro, este costo se puede reducir aún más mediante el uso de una conexión de datos al servicio en la nube de Hologram, donde un mensaje se puede enrutar automáticamente a un servicio de SMS gratuito. $ 0.60 por un megabyte de datos le proporcionará una gran cantidad de pequeños mensajes de texto.

Por alguna razón, aunque el escudo GSM finalmente funcionaba correctamente, no ejecutaba correctamente el GSMScanner y GSMModem getIMEI () funciones diseñadas para la configuración inicial y la resolución de problemas. ¡Bastante engañoso! Las funciones de datos SMS y GPRS funcionaron bien, así que si alguien sabe por qué el módem todavía no puede decirme su propio número IMEI, me encantaría escuchar sus ideas.

Código e interfaz

Adafruit tiene excelentes instrucciones para mostrar el escudo LCD en acción y Arduino tiene una buena guía de inicio para el escudo GSM que muestra las funciones importantes, por lo que la mayor parte de mi código se basó en esos dos cuerpos de funciones, además de la mía propia. interfaz de usuario.

Nunca antes había programado una interfaz de usuario que no fuera ingresar una letra en una línea de comando con un teclado, así que quería que fuera simple. Decidí hacer una selección de mensajes enlatados para enviar que pudieran ser recorridos con las teclas de arriba y abajo, ¡en realidad más fácil de lo que pensaba!

Con solo apilar las tres placas una encima de la otra con una tarjeta SIM que funcione (¡incluso desde su propio teléfono!) Y mostrar el código a continuación, obtendrá un dispositivo de mensajería de texto que funciona así:

  • Enciéndalo, se inicia y le indica una vez que la red está conectada
  • Botón izquierdo:vaya a la pantalla de "inicio"
  • Botón derecho:Confirmar en el mensaje entrante, permitiendo que entre el siguiente mensaje si hay uno. También atenúa la pantalla si no hay un mensaje actual.
  • Botones arriba / abajo:recorre la selección de mensajes preprogramados para enviar. Supongo que podrías poner tantos como quieras en el código; Empecé con cuatro.
  • Botón Seleccionar:envía el mensaje seleccionado actualmente

¡Eso es! Los mensajes entrantes se muestran automáticamente sin importar qué menú esté activo en el dispositivo, e incluso encenderán la luz de fondo si hubiera estado apagada.

El siguiente paso lógico podría ser agregar un menú de números de destino para los mensajes salientes, o simplemente hacer que responda automáticamente al último mensaje que recibió (usando el remoteNumber () función).

Compilación final

Para cortar las aberturas en la caja del proyecto, utilicé un taladro para los agujeros normales y luego una broca de corte multipropósito Dremel (# 561) con guía (# 565) para los recortes más grandes. Usar algunas tablas y abrazaderas adicionales para hacer una plantilla para guiar la Dremel habría permitido líneas más limpias, pero estoy lo suficientemente feliz con lo que hice a mano alzada. ¡El bit definitivamente quería deambular más de lo que esperaba!

Los únicos cables reales en el proyecto son para poder agregar una batería de 9V y un interruptor; sin una batería, se puede alimentar desde un USB o un enchufe de pared, ¡y listo!

Una batería de 9V y un clip encajan muy bien al lado del Arduino y debajo del escudo GSM (que es aproximadamente del mismo tamaño que un Arduino Mega). Soldé cables a algunos pines del cabezal para facilitar la conexión de la alimentación.

Afortunadamente, el escudo GSM tenía cables extra largos y flexibles en sus pines. Pude doblarlos ligeramente para que pasaran por alto los enchufes del Arduino, dejando esas conexiones libres para mi cabezal de alimentación. ¡Sospecho que es por eso que los pines son así! El protector LCD en la parte superior tiene pines cortos y robustos sin conexiones hembra en la parte frontal, por lo que doblar los pines es el único método que encontré para conectar cosas además de los protectores en esta configuración.

Cortar los cables de soldadura del puerto USB y algunos otros en la parte inferior del Arduino permite que se asiente en el estuche sobre una cinta de espuma de doble adhesivo. Luego, las placas se apilan para dejar la pantalla LCD y los botones apenas sobresaliendo por encima de la parte superior de la carcasa, ¡perfecto!

Conclusión

Seguiré jugando con este sistema e incluso dejaré que mi sobrino de 4 años lo golpee un poco. Creo que funciona bastante bien como mensajero, pero me sorprendió que me guste aún más como una pequeña valla publicitaria en mi casa para mostrar mensajes. Estoy contento con la estética, lo que ayuda en eso.

¡Trabajar más en esto podría tener un segundo menú para seleccionar el destinatario de un mensaje, atenuar automáticamente la pantalla para ahorrar energía, agregar luces / timbres / motores de buscapersonas para notificaciones o cualquier otro comportamiento de interfaz de usuario preferido que pueda desear!

El sistema también podría cambiarse fundamentalmente para mostrar notificaciones de un servicio como IFTTT, como si le hubieran entregado un paquete o los últimos tweets de alguien. ¿Qué estás construyendo? ¿Cómo mejoraría el sistema?

¡Disfruta!

-Mike

Puedes leer más sobre mí y mis proyectos en mi blog, incluso más sobre este proyecto.

(Este proyecto fue posible como parte de Hologramas Programa Hacker-In-Residence. Para obtener más información, comuníquese con Sheena, coordinadora de contenido de Hologram, en [email protected] )

Código

  • Código del sistema para Arduino
Código del sistema para Arduino Arduino
 / ** * Sistema de buscapersonas bidireccional con Arduino y servicio celular Hologram * Mike Schaus * 28 de diciembre de 2016 * Hecho como parte del programa Hologram Hacker-In-Residence * * Este proyecto envía y recibe texto (SMS) mensajes a través de * un arduino con módem celular integrado en una pequeña caja * con una pantalla LCD y botones de control simples. * * Tenga en cuenta que el código está incluido para funcionar a través de la pantalla LCD O * el monitor en serie, por lo que puede usar este código incluso sin * una pantalla LCD. * / # include  #define PINNUMBER "" // incluye el código de la biblioteca LCD:#include  #include  #include  // El escudo usa los pines I2C SCL y SDA. En los Arduinos clásicos // esto es Analog 4 y 5, por lo que ya no puede usarlos para analogRead () // Sin embargo, puede conectar otros sensores I2C al bus I2C y compartir // el bus I2C. Adafruit_RGBLCDShield lcd =Adafruit_RGBLCDShield ( ); // Estas #definiciones facilitan la configuración del color de la retroiluminación B01100, B01000, B00000}; // inicializar la instancia de la biblioteca GSMGSM gsmAccess (false); // incluye un parámetro 'verdadero' para la depuración habilitadaGSM_SMS sms; // matriz de caracteres del número de teléfono para enviar SMS // cambia el número 12125551212 a un número // tienes acceso a char remoteNumber [20] ="12125551212"; // Matriz para contener el número de un SMS que se recupera dechar senderNumber [20]; // matriz de caracteres de los posibles mensajes salientes para elegir del menúchar * answers [] ={"Mike =Awesome!", "Yes", "No", "¡Hola!"}; // # define NUMRESPONSES 4 // si alguien sabe cómo calcular esto, soy todo oídos # define NUMRESPONSES (sizeof (answers) / sizeof (char *)) // gracias al comentario de Steve Kemp ! int posición =-1; // de esta manera, la primera pulsación del botón siempre mostrará la primera opción del menuint inByte =0; // byte serial entrante para la interfaz del teclado retroiluminación booleana =verdadero; // rastrea el estado de la retroiluminación para alternar sin firmar largo anteriorMillis =0; // almacenará la última vez que se verificaron los mensajes # define CHECKINTERVAL 1500 // con qué frecuencia verificar si hay mensajes de texto void setup () {// ponga su código de configuración aquí, para que se ejecute una vez:// inicialice las comunicaciones seriales Serial.begin (9600); Serial.println (F ("Remitente de mensaje SMS - iniciando ...")); // configura el número de columnas y filas de la pantalla LCD:lcd.begin (16, 2); // Imprime un mensaje en la pantalla LCD lcd.print (F ("¡Hola, Holograma!")); lcd.setCursor (0, 1); lcd.print (F ("Iniciando ...")); lcd.setBacklight (ENCENDIDO); // configura el carácter de flecha para mostrar lcd.createChar (0, flecha); // estado de conexión booleano notConnected =true; // Iniciar escudo GSM // Si su SIM tiene PIN, páselo como parámetro de begin () entre comillas while (notConnected) {if (gsmAccess.begin (PINNUMBER) ==GSM_READY) {notConnected =false; Serial.println (F ("GSM está conectado porque eres tan increíble")); Serial.println (F ("Esperando mensajes, o enviar con \" s \ "")); Serial.println (); lcd.clear (); lcd.setCursor (0,0); pantalla de inicio(); } else {Serial.println (F ("No conectado")); lcd.clear (); lcd.setCursor (0,0); lcd.print (F ("No conectado")); retraso (1000); }}} // este es el sistema de menú functionvoid showResponses () {// Serial.println (position); // solo para depurar el sistema de menús lcd.clear (); lcd.setCursor (0,0); // asegúrese de que la posición del cursor sea legal if (position <0) position =0; if (posición> NUMRESPONSES-1) posición =NUMRESPONSES-1; // escribe la selección actual y la siguiente opción si hay otra opción lcd.write (0); // carácter de flecha lcd.print (posición + 1); lcd.print ("-"); lcd.print (respuestas [posición]); if (posición  0) {inByte =Serial.read (); // obtener el byte entrante if (inByte =='s') {printResponseOptions (); while (Serial.available ()> 0) {// borra el búfer del teclado por si acaso char junk =Serial.read (); } while (Serial.available () ==0); // Espere aquí hasta que el búfer de entrada tenga un carácter inByte =Serial.parseInt (); // querría comprobar si hay una elección válida aquí para que sea más robusto sendSMS (answers [inByte]); }} // comprobar si hay nuevos mensajes sólo una vez cada pocos segundos para mantener la interfaz más receptiva unsigned long currentMillis =millis (); if (currentMillis - previousMillis> =CHECKINTERVAL) {previousMillis =currentMillis; recibir SMS (); // tarda unos 26 ms cuando no hay mensajes}} 

Esquemas

El ensamblaje es en realidad mucho más simple de lo que implicaría el esquema:¡la mayoría de las conexiones se realizan simplemente apilando los dos protectores en la parte superior del Arduino! Cualquier cosa más allá de eso es opcional para la energía de la batería.

Proceso de manufactura

  1. Monitoreo de CO2 con sensor K30
  2. Comunicación para personas sordociegas con 1Sheeld / Arduino
  3. Controlar el aceptador de monedas con Arduino
  4. ¡Arduino con Bluetooth para controlar un LED!
  5. Sensor capacitivo de huellas dactilares con Arduino o ESP8266
  6. Jugando con Nextion Display
  7. Brazo robótico controlado por Nunchuk (con Arduino)
  8. Medición de la radiación solar con Arduino
  9. Mini radar con Arduino
  10. Cómo hacer música con un Arduino
  11. Detección de tos con TinyML en Arduino