Índice:

ESP32 ADXL345 DATALOGGER COM GPS_EXT RAM_EXT_RTC: 8 etapas
ESP32 ADXL345 DATALOGGER COM GPS_EXT RAM_EXT_RTC: 8 etapas

Vídeo: ESP32 ADXL345 DATALOGGER COM GPS_EXT RAM_EXT_RTC: 8 etapas

Vídeo: ESP32 ADXL345 DATALOGGER COM GPS_EXT RAM_EXT_RTC: 8 etapas
Vídeo: ESP32 - Vibration Data Logger (Fourier Transform) 2024, Julho
Anonim
ESP32 ADXL345 DATALOGGER COM GPS_EXT RAM_EXT_RTC
ESP32 ADXL345 DATALOGGER COM GPS_EXT RAM_EXT_RTC
ESP32 ADXL345 DATALOGGER COM GPS_EXT RAM_EXT_RTC
ESP32 ADXL345 DATALOGGER COM GPS_EXT RAM_EXT_RTC
ESP32 ADXL345 DATALOGGER COM GPS_EXT RAM_EXT_RTC
ESP32 ADXL345 DATALOGGER COM GPS_EXT RAM_EXT_RTC

Para aqueles de vocês que estão jogando com a placa Wemos 32 LOLIN, pensei em começar a documentar algumas descobertas minhas até agora.

O projeto atual é fazer a interface com um acelerômetro ADXL345 e, como mostra a foto acima, conectei-o com sucesso ao lolin e configurei o ADXL como um sensor de choque.

Os registros no ADXL foram configurados como o pdf anexado e a interrupção i configurada no código para cuspir o código na porta serial assim que um choque for detectado.

Também configurei o registro de inatividade como uma interrupção e, após verificar qual interrupção foi acionada, expulso os mesmos dados.

Estou usando a porta I2c no LOLIN e você verá que tenho uma rotina para cuspir os registros no ADXL para que possa verificar a configuração durante a depuração. Esta função está sendo executada em uma função de cronômetro usando a biblioteca de ticker. Esta é uma função útil para configurar para depurar e verificar os registros no caso de você escrever algo lá que misteriosamente faz com que os dados façam algumas coisas estranhas.

Eu normalizei os dados de elogio do 2 no LOLIN e os formatei para que possam ser importados para o Excel.

Dê uma olhada no PDF anexado com alguns dados que importei e fiz um gráfico no excel mostrando alguns toques no ADXL que são acionados por uma interrupção no registro de trigger usando o modo FIFO.

O modo FIFO é um recurso útil que não prende o micro e armazena 32 amostras em um gatilho. Mais uma vez, olhe meus despejos de dados e você pode ver onde começamos no marco zero e a última amostra está em 9,8 ms ou mais ou menos. A linha X no gráfico mostra o tempo em microssegundos aumentando da esquerda para a direita.

NOTA DESDE QUE ALTEREI O ÚLTIMO GRÁFICO PARA MOSTRAR A LINHA DO TEMPO DE MENOS 9800 microsegundos. O primeiro pop de FIFO são os primeiros dados, o resto é mais antigo. A visualização deve ser da direita para a esquerda.

Observe os três fios da placa ADXL. SDA / SCL e o INT do INT 1. Novamente, se você olhar as configurações do registro e cruzar a folha de dados, fará sentido.

A amostra de dados é totalmente inclinada em 3200 amostras, o que dá 3125 segundos de uso entre as amostras e uma pré-captura de 4 amostras. Veja o pdf dos dados do dispositivo no excel e cada um dos gráficos que plotei me mostrando movendo a janela de captura.

Vou colocar algum código de configuração e interrupções se alguém estiver interessado.

Para I2C, estou usando a biblioteca de fios e escrevi algumas funções em torno disso.

Observe o pequeno farejador de dados que conectei ao SDA / SDL e, usando o Sigrok, posso decodificar o barramento I2C em tempo real.

O próximo passo é salvar no disco SAN, embora eu já tenha provado que funciona. Uma vez feito isso, farei a interface com o wireless e carregarei em um site.

Acrescentarei a isso à medida que o projeto se expande.

NOTA DE RODAPÉ:

Para os observadores, você notará um grande amassado na lata que protege o chip do esp e um jumper no pcb. Isso se deve ao Cocker Spaniel residente que inspecionou a correspondência e decidiu mastigar a prancha antes de me dar acesso a ela. Eu acho que ela não é uma fã expressiva !.

Claro, como sempre, estou sempre pronto para perguntas, por favor pergunte.

Etapa 1: SIGROK E PULSEVIEW

SIGROK E PULSEVIEW
SIGROK E PULSEVIEW
SIGROK E PULSEVIEW
SIGROK E PULSEVIEW

Apenas uma rápida menção de pulseview e sigrok.

Este é um software gratuito da rede e a pequena placa de interface com 8 entradas lógicas é barata no ebay et al. Você notará algumas imagens que peguei do ônibus enquanto o ADXL estava rodando e é tão útil novamente para depurar como ele tem um decodificador integrado para I2C.

Um osciloscópio é ótimo para verificar os níveis de sinal, mas a decodificação manual de I2c é, na melhor das hipóteses, cansativa, embora eu tenha configurado um loop antes e depurado manualmente. Você tem que ter uma apreciação de bit banging no nível de porta, o que eu fiz em muitos projetos de fotos, mas é demorado e sujeito a erros … especialmente à noite !!

Obrigado aos caras que escreveram este aplicativo. É um deus enviar para projetos em i2c, Observe a linha D4 que está monitorando a linha de interrupção do ADXL.

Etapa 2: adicionar ao sensor de choque

Adicionando ao Sensor de Choque
Adicionando ao Sensor de Choque
Adicionando ao Sensor de Choque
Adicionando ao Sensor de Choque
Adicionando ao Sensor de Choque
Adicionando ao Sensor de Choque
Adicionando ao Sensor de Choque
Adicionando ao Sensor de Choque

Ok, aqui eu adicionei alguns periféricos ao sensor de choque para prova de conceito.

Desculpe o ninho de ratos, por enquanto, uma vez que funcionar, vou projetar o pcb que liga todos os componentes e colocá-lo em uma caixa bonita. Todos os itens anexados, exceto o cartão SD, estão funcionando no i2c que está no barramento spi.

Resta anexar o módulo GPS que é WIP, mas espero ter uma solução até o final desta semana.

Portanto, o projeto atual consiste em:

Placa ESP32 LOLIN com wireless.

Relógio em tempo real PCF. Acompanha a data e a hora atuais. Eu fiz uma solda bruta em uma placa de projeto antiga que fiz anteriormente.

Flash externo. Contém dados de configuração para acelerômetro, entre outras coisas. Capacidade 132k e pode despejar alguns dados da web nele para facilitar menus, etc.

Cartão SD SPI para armazenar dados e registros do acelerômetro de arquivo. 8 GB, mas pode expandir.

Tela OLED para mostrar menus e algumas outras coisas.

Aqui está o que [eventualmente] fará

Monitore choques e atividades que excedam o fundo.

Registre os choques no cartão SD com hora e data do relógio interno.

Carimbe a localização do GPS para o cartão SD, se disponível

Usando um ponto de acesso, carregue os dados em um servidor da web para analisar os dados … pode ser um telefone celular.

| A varredura de pontos de acesso é uma capacidade do LOLIN32, pois hospeda um servidor da web para comandos e, em seguida, conecta-se como um cliente ao servidor da web em nuvem. Você pode apenas desconectar o cartão SD e carregá-lo!

Ainda há muito a fazer, mas está seguindo em frente.

Etapa 3: ENDEREÇO ADXL

ENDEREÇO ADXL
ENDEREÇO ADXL

Agora, aqui está uma coisa engraçada. Eu comprei o chip ADXL 345 como uma pequena placa porque era mais barato do que comprar um chip sozinho … como isso funciona? De qualquer forma, depois disso, comecei a conectá-lo ao barramento i2c e descobri que tive um conflito com o eeprom com endereços que efetivamente começam em 0x53, o que se traduz em uma gravação em A6 e uma leitura em A7.

Então, lendo o bumf, descobre-se que se você levar o SDO / ALT ADDRESS HIGH, você pode forçá-lo a 1D

Acontece que minha pequena placa está conectada ao aterramento no pino 12 do ADXL, apesar do pino SDO, que parece que você pode puxá-lo para cima. Não tente fazer isso em casa sem uma fonte de alimentação limitada … felizmente, o que me fez tirar o multímetro e verificar o pino para aterramento.. Isso funciona e tira você do confronto do baile. Felizmente, eles não fizeram o curto sob o chip ou eu teria sido roubado e teria que remover o chip da placa. O EEprom, que é um sobressalente que eu tinha, está organizado como duas páginas de 64k como endereços 0x52 e 53. Depois que fiz isso, meu problema foi resolvido.

Lendo a página da web novamente, ele diz que está definido como 0x53, mas está nas letras pequenas, então fique atento!

Etapa 4: impressões esquemáticas de PCB

Aqui está uma rápida apresentação do circuito e dos componentes. Este é muito meu design e ainda WIP [Trabalho em andamento] O esquema foi projetado e, em seguida, traduzido na arte para as faixas. Verifiquei que todos os componentes funcionam conforme o esperado usando minha abordagem de ninho de ratos e agora estou montando em uma placa que caberá em uma pequena caixa [Detalhe a seguir]

Referindo-se a shocker.pdf.

A placa consiste em 8 componentes principais

  1. ARMAZENAMENTO DE CARTÃO SD
  2. ADXL ACCELEROMETER
  3. DISPLAY OLED
  4. 3,3 V REG
  5. MÓDULO GPS1
  6. EEPROM
  7. TIMER RTC
  8. ESP32 CHIP LOLIN COM INTERFACE SEM FIO RF

Tudo depende do acelerômetro.

O ADXL é configurado para interromper o processador em INT1, que é roteado para o pino 14 no processador. O código no micro é configurado para interceptar essa interrupção e definir um sinalizador que atua na rotina principal. Vou adicionar o código delineando o registro da rotina de interrupção e a função de retorno de chamada posteriormente.

O ADXL suporta interrupções em diferentes estados, como choque ou inatividade, além de alguns outros. Você pode mascarar aqueles que agradam sua imaginação com base no que você está tentando fazer. O ADXL é operado no modo FIFO para que armazene 32 amostras para capturar o evento de choque como XYZ [96 valores]

O monitor ADXL RTC e EEPROM são todos acionados a partir de I2C. O cartão SD é conectado ao SPI I / O e o módulo GPS é conectado às portas seriais no LOLIN marcado com X12 X11.

A sequência é a seguinte Agarre constantemente os dados 232 da unidade GPS e filtre. Enquanto você tiver um GPS válido, atualize o RTC em intervalos definidos. complemento de 2 do formato bruto e complemento de não 2. Todos os dados são delimitados por vírgulas.

Você notará também que há um pino de reinicialização que está conectado ao pino 13. Este pino iniciará o servidor da Web embutido, permitindo que você se conecte ao configurador para configurar um ponto de acesso que está armazenado na EEPROM. Na reinicialização, o processador se conectará ao ponto de acesso e acessará a internet para fazer upload de arquivos do cartão SD. Se não houver dados e nenhum ponto de conexão, a unidade apenas realizará seu processo de registro de dados no cartão SD, que você poderá interrogar usando o programa [ShockerView.exe] [WIP] No servidor, os dados são armazenados em um banco de dados SQL e exibidos [WIP]

As impressões PCB são anexadas para a parte superior e inferior.

Etapa 5: protótipo de gravura de arte

Protótipo de gravura de arte
Protótipo de gravura de arte
Protótipo de gravura de arte
Protótipo de gravura de arte
Protótipo de gravura de arte
Protótipo de gravura de arte

Aqui está como eu produzo minhas placas de protótipo

Imprima a arte em algum papel vegetal pesado. Eu uso 63 GSM de ferreiros, barato e alegre. A impressora é a chave aqui. Você quer o mais opaco possível e o mais limpo possível. Minha impressora a laser está funcionando agora, mas é boa para imprimir até 10 mil, menos do que isso você precisa de algum equipamento especializado, pois o grão do papel vegetal começa a atrapalhar. Você pode comprar papel especializado, mas, ei, isso é bom demais para gente como eu. De qualquer maneira, estou constantemente refinando meus designs, então seria muito caro para mim. Se você precisar de um conselho adequado, peça a especialistas para fazê-lo.

Eu normalmente protótipo minhas placas em seções e, em seguida, produzo uma final com gerbers para uma empresa de internet produzir. O protótipo classifica todos esses erros e omissões antes de comprometer dinheiro real.

Depois de imprimir as imagens em duas folhas A4 separadas de decalque, corte-as de forma que ambas se sobreponham e colem na posição. deixe espaço suficiente para que a placa de dupla face se aperte entre as camadas e certifique-se de que o lado impresso esteja contra a placa de circuito impresso. Faça algumas fendas para permitir que você deslize as placas e sele-as temporariamente. Se você for cuidadoso, poderá sobrepor a fita adesiva para permitir que você a desfaça sem destruir a imagem de rastreamento.

Coloque a placa com um lado para baixo em sua caixa de UV. NB: fiz a minha com quatro novas lâmpadas UV de 13W e alguns aparelhos de controle antigos e fiz uma caixa com um painel de vidro transparente. O espaçamento era experimental. A tampa prende e pressiona a espuma na parte de trás da placa, forçando a máscara contra o vidro. Se você falhar em fazer isso, a luz irá minar a resistência à corrosão. Ligue e exponha a placa por 1 minuto e 40 segundos de cada lado. Use seu relógio. Na verdade, devo modificar isso com um cronômetro nele … ah, nenhum outro projeto … talvez eu compre um … você sabe que não! As placas que comprei da Mega Electronics são as placas de protótipo baratas com resistência etch. O resist etch às vezes é um pouco irregular, mas eu tenho algumas placas que tenho há quatro anos e ainda produzem boas placas para prototipagem!

Cuidado ao virar a prancha, não a deixe escorregar ou você terá algum lixo.

Agora prepare seu desenvolvedor. Eu uso 2 tampas em 18: 1 então são duas tampas de revelador e 36 tampas de água pura não adulterada. O revelador vem em uma garrafa ou em pó e uma garrafa costuma durar cerca de 6 anos !!. Misture em uma vasilha de sorvete E USE LUVAS. Não coloque os dedos nele ou a graxa irá afetá-lo. A temperatura pode ser um problema no inverno. Mantenha a água a 20 graus ou perto disso, não é crítico, mas se estiver fria, os resultados podem ser imprevisíveis. Eu fiz isso em janeiro na minha garagem com uma chaleira, então você pode compensar.

Mova suavemente o recipiente de um lado para o outro depois de colocar sua placa nele. Se você fez isso direito, verá um jato magenta de resistência à corrosão sendo removido do cobre, revelando um adorável cobre brilhante entre os trilhos. Vire usando suas luvas para verificar o outro lado. Esse processo normalmente leva cerca de um minuto no máximo, então, quando terminar, retire a placa e enxágue abundantemente em água morna. Se for maçante, então as chances são de que tenha falhado.

Já tive isso algumas vezes, mas geralmente é porque não usei luvas ou a temperatura estava muito baixa ou eu atrapalhei o tempo de exposição por causa de alguma distração … por que eles fazem isso no meio de algo crítico …

Mostre-me suas gravuras

Ok, agora você tem uma prancha com lindas trilhas verdes protegidas por resistência etch e agora precisa fazer o Cloreto Férrico. Agora eu uso o mesmo recipiente de sorvete para minimizar o desperdício e misturar com as notas do pacote. Eu compro o cloreto férrico em pacotes de bolas que você pesa e dissolve em uma solução. Prepare o suficiente para encher a cuba de sorvete cerca de 1/3 do tamanho. Se você preparar apenas o suficiente para o trabalho, pode despejar em um recipiente de plástico e ele vai durar um bom tempo.

VOCÊ DEVE USAR LUVAS … não por causa da graxa, etc, mas porque se você não usar, suas mãos ficarão laranja brilhante por quinze dias. Certa vez, fiz isso antes de uma reunião importante em Londres e parecia que tinha um tango. No entanto, esteja ciente de que essas coisas são nojentas em torno de qualquer coisa de cobre … e qualquer coisa, na verdade. Use roupas velhas porque se derramar nelas vão estragar. Ele se fixa em pias de aço inoxidável e geralmente mancha tudo. Faça isso fora ou em um banheiro externo longe de tudo. Não despeje as sobras nos esgotos, é ótimo para matar bactérias, o que não é o que a autoridade responsável pela água gostaria de promover em suas fossas sépticas. Para algumas autoridades, isso também é ilegal, então não faça isso.

Quando você mergulha a placa na solução pela primeira vez, ela fica com uma adorável cor vermelha de bronze conforme o cobre é atacado. Se não, você ainda pode ter uma camada de resistência à corrosão que está impedindo o condicionador de funcionar ou sua solução está errada. Se for esse o caso, então de volta à prancheta, estou com medo, mas não é provável que o seu etchant esteja errado se você seguiu as destruições.

De qualquer forma, se tudo estiver bem, você tem algumas faixas perfeitas protegidas por resistência etch.

Normalmente neste ponto o profissional usaria um conjunto de máscaras para desenvolver ao redor dos furos e almofadas e produzir a via de cobre além de usar um silk screen para pintar os números dos componentes etc. Infelizmente não tenho tempo nem disposição para fazer minhas vias usar um pouco de fio de cobre de camada em camada … obviamente, multicamada é um não, não por este método. Se estiver de bom humor, acrescentarei meticulosamente os números dos componentes à camada de impressão para que você também grave os números dos componentes. Isso pode economizar algum tempo na montagem, mas depende de quão ocupada a placa está.

Eu agora exponho as faixas por mais 2 minutos ou mais de cada lado e mergulho no revelador para remover toda a resistência à corrosão.

Eu agora furo as vias e quaisquer orifícios de passagem e estanho todas as trilhas e verifico a continuidade com um multímetro. Esta parte é uma dor de cabeça e você não faria normalmente para uma placa produzida profissional com vias verdadeiras, mas vale a pena evitar o fio de via sendo soldado apenas um lado… aconteceu tantas vezes!

Etapa 6: Montagem da placa

Montagem do Conselho
Montagem do Conselho
Montagem do Conselho
Montagem do Conselho
Montagem do Conselho
Montagem do Conselho

OK, agora eu tenho uma placa pronta para usar e perfurei todas as vias e orifícios de passagem.

Passe todas as vias com arame e solde os dois lados. eu gosto de estanhar todas as faixas como uma proteção não precisa fazer isso, mas impede a oxidação do cobre.

Anexei o cartão SD, que é de montagem em superfície, e adicionei dois pontos para obter um ponto de solda nele, além de ter alguns pinos na parte inferior para ancorá-lo.

Em seguida, adicionou o ADXL EEPROM etc.

Em termos de energia, o plano é pegar 5V do USB ou Bat externo e alimentá-lo através do registro de 3,3 V na placa. Eu tenho um pequeno registro comprado no Ebay que é montado como um módulo e avaliado em 800mA … isso é 300 gretaer do que o USB pode fornecer. Eu não fiz nenhuma medição de potência ainda, pois posso ajustar o software … posso usar a interrupção de INATIVIDADE do ADXL para lidar com isso. [WIP]

… Precisa adicionar fotos conforme o andamento da construção.

Etapa 7: CODIFICAÇÃO

OK, não vou passar por toda a configuração do arduino, pois outra pessoa fez um trabalho muito melhor em outro lugar.

Vou apenas escolher as partes pertinentes à medida que avançamos, que podem ser usadas em um projeto seu.

Este ainda é um trabalho em andamento, na medida em que o upload para o site é considerado, mas vamos examinar um pouco do código.

A ideia é que a funcionalidade normal seja init os dispositivos que consistem em GPS / display / cartão SD / relógio de tempo real / ext_flashmemory e acelerômetro.

Depois disso, entramos em um loop esperando para ver se a tecla de interrupção sw foi pressionada. Se for, vá para o menu do configurador para configurar a rede wi-fi para se conectar automaticamente a um dispositivo especificado como uma entrada para o configurador de página da web. Primeiro, ele verifica todos os dispositivos em busca de um SSID e depois permite que você selecione um e salve-o no flash com um sinalizador para indicar que na próxima inicialização carregue as configurações do flash. Você sempre pode substituir isso inserindo o endereço ip e digitando / killbill para iniciar uma limpeza do flash e carregar o padrão.

aqui está a função de interrupção definida no código para o acelerômetro adxl e o salto para o configurador em dois pinos separados. Estamos usando a interrupção ADXL para interromper no evento SHOCK. Para ambas as interrupções, definimos um sinalizador que é redefinido no "loop" principal. aqui está o que parece:

olhe para o código em anexo

Etapa 8: Encontrar Pinos SDA SCL

use este código:

Serial.println (SDA);

Serial.println (SCL);

imprime os pinos atualmente configurados no ESP para SDL e SCL

Há um arquivo que é usado para mapear pinos para funções como portas seriais no ESP32

Recomendado: