Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • M meteorolog
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 5
    • Issues 5
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • EMM
  • meteorolog
  • Issues
  • #8

Closed
Open
Created Jan 16, 2018 by Marina Freitas@mfreitasMaintainer

Impossibilidade de envio de muitos dados para serial (via esp) e cartão microSD

O obejtivo

Meu objetivo é hackear o sistema de aquisição de dados da emm (exceto envio de dados apra o servidor) para usar em outra pesquisa na qual serão usados 7 DHTs e 1 LDR. As alterações feitas no hardware estão detalhadas aqui: http://cta.if.ufrgs.br/issues/481#note-10 . As alterações feitas no meteorolog estão aqui http://cta.if.ufrgs.br/issues/481#O-que-eu-fiz . As alterações feitas no esplogger estão aqui http://cta.if.ufrgs.br/issues/481#Esplogger . Vou descrever abaixo as alterações no espelogger por achar pertinente a este problema:

No arquivo meteorolog.cpp da pasta espelogger alterei as linhas 317-324, onde alterei o nome da variável "sensor_name" e do argumento dentro de "root_sensors". Além disso, adicionei esse código 6 vezes, trocando o nome do "sensor_name" e do argumetno de "root_sensors" (cada DHT recebeu o nome de uma letra, de A a G, e suas variaveis e apelidos também, por isso "ta" é a temperatura do DHT A, "tb" é a temperatura do DHT B, etc).

else if (sensor_name == "ta") {
root_sensors["DHT22_TEMP_A"] = value;
}
else if (sensor_name == "aha") {
root_sensors["DHT22_AH_A"] = value;
}

Os firmwares alterados estão aqui http://cta.if.ufrgs.br/attachments/4595/Firmware_esplogger_meteorolog.zip Mais detalhes na tarefa: http://cta.if.ufrgs.br/issues/481

O Problema

Grandes quantidades de dados (mais de 100 bytes) não estão sendo corretamente enviados para a serial (via espe) nem para o cartão microSD.

A partir da décima variável incluida (contando dt) (mais de 100bytes) no comando "meteorolog" ou "arduino read" enviado via esp, a resposta do esp começa a ser errada (até a nona a resposta é correta). Ao invés de responder o valor da variável, o valor da variável anterior é substituída por " " (espaço vazio). Exemplo:

[DEBUG] Sending command 'read,dt,l,ta,tb,tc,td,te,tf,tg' to Arduino. [INFO] Sucessfully updated 'LOGGER.CONF' (SPIFFS) [DEBUG] Reading arduino serial response.. [INFO] Recieved: '2018-1-15 16:10:36,94.330406,26.500000,26.600000,26.700001,26.299999,26.900000,26.299999,26.799999' (119 bytes) [DEBUG] --- JSON created --- {} [INFO] Attemping upload to server.. [HTTP] POST...
[DEBUG] Response: [INFO] 122 bytes written at 'DATALOG.TXT'

A resposta foi a esperada, mas ao adicionar mais 1 variável:

[DEBUG] Sending command 'read,dt,l,ta,tb,tc,td,te,tf,tg,aha' to Arduino. [INFO] Sucessfully updated 'LOGGER.CONF' (SPIFFS) [DEBUG] Reading arduino serial response.. [INFO] Recieved: '2018-1-15 16:10:36,94.330406,26.500000,26.600000,26.700001,26.299999,26.900000,26.299999,,' (119 bytes) [DEBUG] --- JSON created --- {} [INFO] Attemping upload to server.. [HTTP] POST...
[DEBUG] Response: [INFO] 122 bytes written at 'DATALOG.TXT'

No exemplo abaixo isto não fica claro, mas nos testes seguintes os valores passavam a ser substituídos por " " regressivamente. A resposta quando todos as 16 variáveis são chamadas é:

Note que o envio do pedido da medida "ahc" foi corretamente recebido, mas a resposta foi " ". A adição de cada nova variável faz com que o valor da variável anterior seja substituído por " ". E assim por diante a cada nova variável adicionada até que todas são comidas ([INFO] Recieved: '2018-1-15 16:10:36,94.330406,,,,,,,,). Um efeito similar ocorre se chamar as medidas "ah" primeiro e as "t" depois.

A resposta para cada DHT separadamente foi correta.

O que eu tentei fazer

Edições:

  • Na linha 1833 do ArduinoJson.h troquei "256" por "1024"
  • Na linha 290 do meteorolog.cpp, alterei o tamanho do StaticJsonBuffer, de 500 para 1000. ** Fiz o mesmo nas linhas 201, 233, 261, 290, 403. ** Tentei alterar para 2000 e para 5000, só na linha 290, depois em todas

A resposta permaneceu a mesma em todos os casos (sim, eu lembrei de fazer upload dos novos firmwares).

Assignee
Assign to
Time tracking

Os conteúdos dos repositórios estão sob licenças livres e são responsabilidade dos próprios autores, não representando as opiniões e posicionamento da UFRGS ou do CTA.