Tabla de contenido:

ESP32 ADXL345 DATALOGGER CON GPS_EXT RAM_EXT_RTC: 8 pasos
ESP32 ADXL345 DATALOGGER CON GPS_EXT RAM_EXT_RTC: 8 pasos

Video: ESP32 ADXL345 DATALOGGER CON GPS_EXT RAM_EXT_RTC: 8 pasos

Video: ESP32 ADXL345 DATALOGGER CON GPS_EXT RAM_EXT_RTC: 8 pasos
Video: 13 Accelerometer (ADXL345) with ESP32 2024, Junio
Anonim
ESP32 ADXL345 DATALOGGER CON GPS_EXT RAM_EXT_RTC
ESP32 ADXL345 DATALOGGER CON GPS_EXT RAM_EXT_RTC
ESP32 ADXL345 DATALOGGER CON GPS_EXT RAM_EXT_RTC
ESP32 ADXL345 DATALOGGER CON GPS_EXT RAM_EXT_RTC
ESP32 ADXL345 DATALOGGER CON GPS_EXT RAM_EXT_RTC
ESP32 ADXL345 DATALOGGER CON GPS_EXT RAM_EXT_RTC

Para aquellos de ustedes que están jugando con la placa Wemos 32 LOLIN, pensé que podría comenzar a documentar algunos de mis hallazgos hasta ahora.

El proyecto actual es interactuar con un acelerómetro ADXL345 y, como muestra la foto de arriba, lo he conectado con éxito al lolin y configurado el ADXL como sensor de impacto.

Los registros en el ADXL se han configurado como el pdf adjunto y la interrupción la he configurado en el código para escupir el código en el puerto serie una vez que se detecta una descarga.

También configuro el registro de inactividad como una interrupción y, después de verificar qué interrupción se ha activado, escupo los mismos datos.

Estoy usando el puerto I2c en el LOLIN y verá que tengo una rutina para escupir los registros en el ADXL para poder verificar la configuración mientras depuro. Esta función se ejecuta en una función de temporizador usando la biblioteca de ticker. Esta es una función útil para configurar para depurar y verificar los registros en caso de que escriba algo allí que misteriosamente haga que los datos hagan cosas extrañas.

He normalizado los datos complementarios de 2 en LOLIN y los he formateado para que se puedan importar a Excel.

Eche un vistazo al PDF adjunto con algunos datos que he importado y he graficado en Excel mostrando algunos toques en el ADXL que se activan por una interrupción en el registro de disparo usando el modo FIFO.

El modo FIFO es una característica útil que no ata el micro y almacena 32 muestras en un disparador. Una vez más, mire mis volcados de datos y podrá ver dónde comenzamos en la zona cero y la última muestra está en 9.8ms o más. La línea X en el gráfico muestra el tiempo en microsegundos aumentando de izquierda a derecha.

NOTA DESDE DESDE HE MODIFICADO EL ÚLTIMO GRÁFICO PARA MOSTRAR LA LÍNEA DE TIEMPO DE MENOS 9800 microseg. La primera aparición de FIFO son los datos más antiguos, el resto es más antiguo. La vista debe ser de derecha a izquierda.

Tenga en cuenta los tres cables a la placa ADXL. SDA / SCL y el INT de INT 1. Nuevamente, si observa la configuración del registro y hace una referencia cruzada de la hoja de datos, tendrá sentido.

La muestra de datos es de inclinación completa a 3200 muestras, lo que proporciona 3125 segundos de uso entre muestras y una captura previa de 4 muestras. Mire el pdf de los datos del dispositivo en Excel y cada uno de los gráficos que he trazado mostrándome moviendo la ventana de captura.

Pondré algo de código de la configuración e interrumpiré si alguien está interesado.

Para I2C, estoy usando la biblioteca de cables y he escrito algunas funciones en torno a eso.

Observe el pequeño rastreador de datos que he conectado a SDA / SDL y, usando Sigrok, puedo decodificar el bus I2C en tiempo real.

El siguiente paso es guardarlo en el disco SAN, aunque ya he demostrado que funciona. Una vez hecho esto, me conectaré a la red inalámbrica y lo subiré a un sitio web.

Agregaré a esto a medida que el proyecto se expanda.

NOTA:

Para los observadores, notarán una gran abolladura en la lata que protege el chip esp y un puente en la placa de circuito impreso. Esto se debe al Cocker Spaniel residente que inspeccionó el correo y decidió masticar el tablero antes de permitirme tener acceso a él. ¡Creo que ella es una fan no expresiva !.

Por supuesto, como siempre, siempre estoy dispuesto a responder preguntas, así que pregunte.

Paso 1: SIGROK Y PULSEVIEW

SIGROK Y PULSEVIEW
SIGROK Y PULSEVIEW
SIGROK Y PULSEVIEW
SIGROK Y PULSEVIEW

Solo una breve mención de pulseview y sigrok.

Este es un software gratuito de la red y la pequeña placa de interfaz con 8 entradas lógicas es barata de ebay et al. Notarás un par de imágenes que tomé del bus mientras ADXL se estaba ejecutando y es muy útil nuevamente para depurar ya que tiene un decodificador incorporado para I2C.

Un osciloscopio es excelente para verificar los niveles de señal, pero la decodificación manual de I2c es tediosa en el mejor de los casos, aunque he configurado un bucle antes y lo he depurado manualmente. Tienes que tener una apreciación de los golpes de bits a nivel de puerto, lo que he hecho en muchos proyectos de imágenes, pero lleva mucho tiempo y es propenso a errores … ¡¡especialmente por la noche !!

Gracias a los chicos que escribieron esta aplicación. Es un envío de Dios para proyectos en i2c, Note la línea D4 que está monitoreando la línea de interrupción del ADXL.

Paso 2: Agregar al sensor de golpes

Añadiendo al sensor de golpes
Añadiendo al sensor de golpes
Añadiendo al sensor de golpes
Añadiendo al sensor de golpes
Añadiendo al sensor de golpes
Añadiendo al sensor de golpes
Añadiendo al sensor de golpes
Añadiendo al sensor de golpes

Ok, aquí he agregado algunos periféricos al sensor de choque como prueba de concepto.

Disculpe el nido de ratas por ahora, una vez que funcione, diseñaré el PCB que une todos los componentes y lo pondré todo en una bonita caja. Todos los elementos adjuntos, excepto la tarjeta SD, funcionan en i2c, que está en el bus spi.

Queda por adjuntar el módulo GPS, que es WIP, pero espero tener una solución a finales de esta semana.

Entonces el proyecto actual consiste en:

Placa ESP32 LOLIN con conexión inalámbrica.

Reloj de tiempo real PCF. Mantiene un registro de la fecha y hora actuales. He soldado en bruto a un tablero de proyecto antiguo que grabé anteriormente.

Flash externo. Contiene datos de configuración para el acelerómetro, entre otras cosas. Capacidad 132k y puede volcar algunos datos web en él para facilitar los menús, etc.

Tarjeta SD SPI para almacenar datos y registros del acelerómetro de archivos. 8 GB pero puede expandirse.

Pantalla OLED para mostrar menús y algunas otras cosas.

Esto es lo que hará [eventualmente]

Monitoree los choques y la actividad que exceda el fondo.

Registre las descargas en la tarjeta SD con la hora y la fecha del reloj integrado.

Selle la ubicación del GPS a la tarjeta SD si está disponible

Usando un punto de acceso, cargue los datos en un servidor web para analizar los datos … este puede ser un teléfono móvil.

| La búsqueda de puntos de acceso es una capacidad de LOLIN32, ya que aloja un servidor web para comandos y luego se conecta como cliente al servidor web en la nube. ¡Siempre puede desconectar la tarjeta SD y cargarla!

Todavía hay mucho por hacer, pero sigue adelante.

Paso 3: DIRECCIÓN ADXL

DIRECCIÓN ADXL
DIRECCIÓN ADXL

Ahora, aquí hay algo gracioso. Compré el chip ADXL 345 como una pequeña placa porque era más barato que comprar un chip por sí solo … ¿cómo funciona? De todos modos, después de eso, me puse a conectarlo al bus i2c y descubrí que tenía un conflicto con la eeprom con direcciones que efectivamente comienzan en 0x53, lo que se traduce en una escritura en A6 y una lectura en A7.

Entonces, leyendo el bumf, resulta que si toma la DIRECCIÓN SDO / ALT ALTA, puede forzarla a 1D

Resulta que mi pequeña placa está cableada a tierra en el pin 12 del ADXL a pesar del pin SDO que parece que puede tirar de él hacia arriba. No intente esto en casa sin una fuente de alimentación limitada actual … Afortunadamente, lo tuve, lo que me hizo sacar el multímetro y verificar el pin a tierra. [Muy corto] lo que significa que tiene que cortar la pista y el pin de puente 12 a 3.3v. Esto funciona y te saca del choque del baile de graduación. Afortunadamente no hicieron el corto debajo del chip o de lo contrario me habrían emborrachado y tuve que quitar el chip de la placa. dos páginas de 64k como dirección 0x52 y 53. Una vez que hice esto, mi problema se resolvió.

Al leer la página web de nuevo, dice que está configurado en 0x53, pero está en letra pequeña, ¡así que ten cuidado!

Paso 4: Impresiones esquemáticas de PCB

Aquí hay un recorrido rápido por el circuito y los componentes. Este es en gran medida mi diseño y aún WIP [Trabajo en progreso] El esquema fue diseñado y luego traducido al arte de las pistas. He verificado que todos los componentes funcionan como se esperaba usando se acerca mi nido de ratas y ahora estoy montando una tabla que cabe en una pequeña caja [Detalle a seguir]

Refiriéndose a shocker.pdf.

La placa consta de 8 componentes principales

  1. ALMACENAMIENTO DE TARJETA SD
  2. ACELERÓMETRO ADXL
  3. PANTALLA OLED
  4. 3.3 V REG
  5. MÓDULO GPS1
  6. EEPROM
  7. TEMPORIZADOR RTC
  8. ESP32 LOLIN CHIP CON INTERFAZ INALÁMBRICA RF

Todo depende del acelerómetro.

El ADXL está configurado para interrumpir el procesador en INT1 que está enrutado al pin 14 en el procesador. El código en el micro está configurado para interceptar esta interrupción y establecer una bandera sobre la cual se actúa en la rutina principal. describiendo el registro de la rutina de interrupción y la función de devolución de llamada más tarde.

El ADXL admite interrupciones en diferentes estados, como un shock o inactividad, además de algunos otros. Puede enmascarar los que le hacen cosquillas en función de lo que está tratando de hacer. El ADXL se opera en modo FIFO, por lo que almacena 32 muestras. para capturar el evento de choque como XYZ [96 valores]

La pantalla ADXL RTC y EEPROM son todas controladas desde I2C. La TARJETA SD está conectada a la E / S SPI y el módulo GPS está conectado a los puertos seriales en el LOLIN marcado como X12 X11.

La secuencia es la siguiente: Capture constantemente los datos 232 de la unidad GPS y el filtro. Mientras tenga la hora GPS válida, actualice el RTC a intervalos establecidos. Complemento sin formato de 2 y complemento de no 2. Todos los datos están delimitados por comas.

También notará que hay un pin de reinicio que está conectado al pin 13. Este pin iniciará el servidor web incorporado, lo que le permitirá conectarse al configurador para configurar un punto de acceso que se almacena en la EEPROM. Al reiniciar, el procesador se conectará al punto de acceso y accederá a Internet para cargar archivos desde la tarjeta SD. Si no hay datos ni un punto de conexión, la unidad simplemente lleva a cabo su proceso de registro de datos en la tarjeta sd que puede interrogar usando el programa [ShockerView.exe] [WIP] En el servidor, los datos se almacenan en una base de datos SQL y se muestran [WIP]

Las impresiones de PCB se adjuntan para la parte superior e inferior.

Paso 5: Prototipo de grabado de ilustraciones

Prototipo de grabado de ilustraciones
Prototipo de grabado de ilustraciones
Prototipo de grabado de ilustraciones
Prototipo de grabado de ilustraciones
Prototipo de grabado de ilustraciones
Prototipo de grabado de ilustraciones

Así es como produzco mis prototipos de placas

Imprime la obra de arte en un papel de calco pesado. Utilizo 63 GSM de smiths, barato y alegre. La impresora es clave aquí. Quieres lo más opaco posible y lo más limpio posible. Mi impresora láser está funcionando ahora, pero es buena para imprimir hasta 10 mil, menos de eso, necesitas algo de equipo especializado ya que la veta del papel de calco comienza a interponerse. Puedes comprar papel especial, pero bueno, eso es demasiado bueno para mí. De cualquier manera, estoy refinando constantemente mis diseños para que sea demasiado caro para mí. Si necesita una tabla adecuada, pídale a los expertos que la hagan.

Normalmente hago un prototipo de mis tableros en secciones y luego produzco un final con gerbers para que lo produzca una empresa de Internet. El prototipo clasifica todos esos errores y omisiones antes de comprometer dinero real.

Después de haber impreso las imágenes en dos hojas A4 separadas de calco, córtelas para que se superpongan y peguen en su lugar. Deje suficiente espacio para que su tablero de doble cara se apriete entre las capas y asegúrese de que el lado impreso esté contra el PCB. Haga un par de ranuras para que pueda deslizar los tableros hacia adentro y pegarlo temporalmente. Si tiene cuidado, puede superponer la cinta adhesiva para que pueda despegarla sin destruir la imagen de rastreo.

Coloque la tabla con un lado hacia abajo en su caja UV. NB Hice la mía usando cuatro nuevas lámparas UV de 13W y algunos equipos de control viejos e hice una caja con un panel de vidrio transparente. El espaciado fue experimental. La tapa se engancha y aprieta la espuma en la parte posterior del tablero, forzando la máscara contra el vidrio. Si no lo hace, la luz socavará la resistencia al grabado. Encienda y exponga el tablero durante 1 minuto 40 segundos por lado. Usa tu reloj. De hecho, debo modificar esto con un temporizador … oh, no, otro proyecto … quizás me compre uno … ¡ya sabes que no! Las placas que compro de Mega Electronics son las placas prototipo baratas con resistencia al grabado. La resistencia al grabado es a veces un poco irregular, pero tengo algunas placas que he tenido durante cuatro años y todavía producen buenas placas para la creación de prototipos.

Tenga cuidado al darle la vuelta a la tabla, no la dejes resbalar o te quedarás chatarra.

Ahora prepara a tu desarrollador. Yo uso 2 tapones a 18: 1, por lo que son dos tapones de revelador y 36 tapones de agua del grifo pura sin adulterar. El revelador viene en forma de botella o polvo y una botella por lo general me dura unos 6 años. Mézclalo en un recipiente para helado Y UTILIZA GUANTES. No meta los dedos en él o la grasa lo afectará. La temperatura puede ser un problema en invierno. Mantenga el agua a 20 grados o más o menos, no es crítico, pero si hace frío, los resultados pueden ser impredecibles. Hice esto en enero en mi garaje con una tetera para que puedas compensar.

Mueva suavemente el recipiente de un lado a otro una vez que haya puesto la tabla en él. Si lo ha hecho bien, verá una corriente Magenta de resistencia al grabado que se quita del cobre, revelando un hermoso cobre brillante entre las pistas. Dale la vuelta usando tus guantes para revisar el otro lado. Este proceso normalmente toma alrededor de un minuto, así que cuando termines, saca la tabla y enjuaga bien con agua tibia. Si es aburrido, es probable que haya fallado.

He tenido esto un par de veces, pero generalmente es porque no me puse guantes o la temperatura era demasiado baja o arruiné el tiempo de exposición debido a alguna distracción … ¿por qué hacen esto en medio de algo crítico?

Muéstrame tus grabados

Ok, ahora tienes una tabla con hermosas pistas verdes protegidas por etch resist y ahora necesitas hacer el cloruro férrico. Ahora uso el mismo recipiente de helado para minimizar el desperdicio y mezclarlo con las notas del paquete. Compro el Cloruro Férrico en paquetes de bolas que pesas y disuelves en una solución. Prepara lo suficiente para llenar la cubeta de helado aproximadamente 1/3 de su capacidad. Si prepara lo suficiente para el trabajo, puede verter en un recipiente de plástico y se mantendrá durante mucho tiempo.

DEBE USAR GUANTES … no por grasa, etc. sino porque si no lo hace, sus manos estarán de color naranja brillante durante quince días. Una vez hice esto antes de una reunión importante en Londres y parecía que me habían tocado el tango. Sin embargo, ten en cuenta que esto es desagradable cuando se trata de algo de cobre … y de cualquier cosa en realidad. Use ropa vieja porque si se les mancha se tiran a la basura. Se adhiere a los fregaderos de acero inoxidable y generalmente mancha todo. Haga esto afuera o en una letrina lejos de todo. No arroje las sobras por las alcantarillas, es excelente para matar bacterias, lo cual no es lo que la autoridad del agua le gustaría promover en sus fosas sépticas. Para algunas autoridades, esto también es ilegal, así que no lo haga.

Cuando sumerja la tabla por primera vez en la solución, se volverá de un hermoso color bronce rojo cuando el cobre sea atacado. Si no es así, es posible que aún tenga una capa de resistencia al grabado que impida que el grabador funcione o que su solución sea incorrecta. Si ese es el caso, me temo que regrese a la mesa de dibujo, pero no es probable que su grabador esté equivocado si siguió las destrucciones.

De todos modos si todo va bien tienes unas pistas perfectas protegidas por etch resist.

Normalmente, en este punto, el profesional usaría un juego de máscaras para desarrollar alrededor de los orificios y las almohadillas y produciría la vía de cobre, además de usar una pantalla de seda para pintar los números de los componentes, etc. Desafortunadamente, no tengo el tiempo ni la inclinación y hago mis vías. usando un poco de alambre de cobre de capa a capa … obviamente, la multicapa es un no, no, por este método. Si estoy de humor, agregaré minuciosamente los números de los componentes a la capa de impresión para que usted también grabe los números de los componentes. Puede ahorrar algo de tiempo en el montaje, pero depende de lo ocupada que esté la placa.

Ahora expongo las pistas durante otros 2 minutos más o menos por lado y lo sumerjo en el revelador para eliminar toda la resistencia al grabado.

Ahora taladro las vías y los orificios pasantes y estaño todas las pistas y verifico la continuidad con un multímetro. Esta parte es un dolor de bola y normalmente no lo haría con una tabla producida profesionalmente con vías verdaderas, pero vale la pena hacerlo para evitar el cable de vía. estar solo soldado por un lado… ¡sucedió tantas veces!

Paso 6: Montaje de la placa

Montaje de la placa
Montaje de la placa
Montaje de la placa
Montaje de la placa
Montaje de la placa
Montaje de la placa

Bien, ahora tengo una tabla lista para usar y he perforado todas las vías y agujeros pasantes.

Enhebre todas las vías con alambre y suelde ambos lados. Me gusta estañar todas las pistas como protección, no tengo que hacerlo, pero detiene la oxidación del cobre.

Adjunté la tarjeta sd que es de montaje en superficie y agregué dos tierras para obtener una tachuela de soldadura, además tiene un par de pines en la parte inferior para anclarla.

A continuación, se agregó la EEPROM ADXL, etc.

En cuanto a la energía, el plan es tomar el 5V del USB o el Bat externo y alimentarlo a través del registro de 3.3V en la placa. Tengo un pequeño registro que compré en Ebay que está ensamblado como un módulo y tiene una potencia de 800mA … eso es 300 gretaer que el USB puede proporcionar. Todavía no he realizado ninguna medición de potencia, ya que puedo modificar el software … Podría usar la interrupción de INACTIVIDAD de ADXL para solucionarlo. [WIP]

… Necesita agregar imágenes a medida que avanza la construcción.

Paso 7: CODIFICACIÓN

De acuerdo, no pasaré por toda la configuración de arduino ya que alguien más lo ha hecho mucho mejor en otro lugar.

A medida que avanzamos, seleccionaré las partes pertinentes que se pueden usar en un proyecto propio.

Esto todavía es un trabajo en progreso en la medida en que se considera la carga al sitio web, pero repasemos parte del código.

La idea es que la funcionalidad normal sea iniciar los dispositivos que consisten en GPS / pantalla / tarjeta sd / reloj en tiempo real / ext_flashmemory y acelerómetro.

Después de eso ingresamos a un bucle esperando a ver si se presiona la tecla de interrupción sw. Si es así, salte al menú del configurador para configurar la red wifi para que inicie sesión automáticamente en un dispositivo especificado como una entrada al configurador de la página web. Primero, escanea todos los dispositivos en busca de un ssid y luego le permite seleccionar uno y lo guarda en flash con una bandera para indicar que en el próximo arranque cargue la configuración desde la memoria flash. Siempre puede anular esto ingresando la dirección IP y escribiendo / killbill para iniciar una limpieza de la memoria flash y cargar la configuración predeterminada.

aquí está la función de interrupción definida en el código para el acelerómetro adxl y el salto al configurador en dos pines separados. Estamos usando la interrupción ADXL para interrumpir en el evento SHOCK. Para ambas interrupciones establecemos una bandera que se reinicia en el "bucle" principal. así es como se ve:

mira el código adjunto

Paso 8: encontrar pines SDA SCL

usa este código:

Serial.println (SDA);

Serial.println (SCL);

imprime los pines configurados actualmente en el ESP para SDL y SCL

Hay un archivo que se utiliza para asignar pines a funciones como puertos serie en el ESP32

Recomendado: