Estudo sobre atividades dos bolsistas anteriores
Coisas que a Cami fez:
Tarefa 641:
Criar um programa que usa o ESP8266 NodeMCU como o dispositivo de controle que se conecta a uma rede Wi-Fi existente e cria um servidor da Web. Quando qualquer dispositivo conectado acessa este servidor da Web, o ESP8266 NodeMCU lê a temperatura e a umidade relativa do sensor DHT11/DHT22 e envia-o ao navegador da Web desse dispositivo.
É nessa tarefa que está o arquivo .ino que a Cami fez.
Aqui tem um link para a wikipedia do ESP8266.
A Cami também colocou um site com tutorial pra uso do ESP8266 com a IDE Arduino.
Ela montou esse circuito abaixo nessa mesma tarefa. Parece ser um NodeMCU com um sensor de umidade DHT11 ou DHT22.
Aparentemente, é um DHT22:
Fotos do circuito utilizado. As conexões que foram feitas: Pino VCC do DHT22 ao pino 3.3V do NodeMCU; Ground com ground; Pino de dados do sensor ao pino D8 do NodeMCU. Foi colocado também um resistor pull-up de 10K entre o VCC e a linha de dados. As páginas wiki com o datasheet que contem as pinagens do sensor e do NodeMCU podem ser encontradas aqui e aqui
Os dois links que ela colocou são respectivamente os links da wiki CTA pros sensores DHT11 e DHT22 (já está lá em cima) e para a do NodeMCU. Nele, temos os datasheets do chip ESP8266 e do módulo ESP-12E.
Tutorial do 'Last minute engineers':
A Cami também colocou nas referências o seguinte link. Ele ensina como fazer a comunicação do ESP8266 com o sensor DHT22 (e o DHT11 também). Dentro do artigo, há menção à sigla RTOS (Real Time Operating System), que apesar de não parecer ser de importância imediata, é algo importante de se manter em mente e dar uma olhada rápida. Ele é uma maneira de se tratar comunicação com embarcados quando temos que fazer muitas tarefas simultâneas, como por exemplo, comunicar uma entrada analógica e uma digital a um Webserver e também a um Display I2C tudo em tempo real, sem poder haver desincronização (ou seja, algo bastante parecido com o que queremos fazer). Comecei a ler esse tutorial sobre isso e ele me pareceu bastante completo, apesar de ainda não ter lido todo.
Alguns termos que aparecem no primeiro link do parágrafo anterior serão colocados na tabela abaixo com o intuito de facilitar a busca e apontar conceitos que serão necessários para o entendimento:
Conceito/Componente | Explicação |
---|---|
RTOS | Real time operating system. É uma estruturação de sistema operacional onde é valorizada a sincronização em tempo real de diversas tarefas. Ou seja, é usado quando temos muitas tarefas para a CPU e é crítico que ela mantenha todas elas sincronizadas. O ESP8266 utiliza o FreeRTOS ou callbacks (não entendi bem o que seria o último). |
GPIO | General purpose input/output. São pinos que servem tanto para input ou output, sendo definidos por nós ao utilizarmos, e possuem diversas funções, algumas das quais serão explicada abaixo. O NodeMCU possui 17. |
ADC Channel | Canal de conversão analógica-digital. Serve para converter sinais analógicos em digitais. Seu uso é explicado na página 20 do PDF do Datasheet (Página 16 do Datasheet em si), seção 4.9. Nela é dito que o ESP8266 possui um 10-bit precision SARADC |
UART interface | Universal Asynchronous receiver-transmiter. É a parte responsável pela comunicação serial. Seu uso é explicado na página 18 do PDF do Datasheet (Página 14 do Datasheet em si). O Datasheet também afirma: Since UART1 features only data transmit signal (Tx), it is usually used for printing log. |
PWM outputs | Saídas PWS. São saídas que possuem a funcionalidade de Pulse Width Modulation, ou seja a alteração da proporção de seu pulso que será considerado HIGH, ou seja +3.3V. Os pinos que possuem PWM são 9, 10, 13 e 16 (porém isso não bate com o esquemático do site, não sei porquê). Com resolução máxima de 44ns e período ajustável de 1000µs (100Hz) a 10000µs (1kHz). Seu uso é explicado na página 19 do PDF do Datasheet (Página 15 do Datasheet em si). |
SPI | Serial Peripheral Interface. É um protocolo de comunicação serial de dados realizado com dispositivos periféricos, de forma rápida e em tempo real. Segundo Datasheet (Página 17 do PDF, 13 do Datasheet em si), temos: One general Slave/Master SPI, One Slave SDIO/SPI e One general Slave/Master HSPI. Em seguida ele explica o uso de cada um e seus respectivos pinos |
I2C Interface | A Interface I2C é a parte do hardware dedicada à comunicação com um display do tipo I2C. O MTMS é o pino 9 (I2C_SCL) e o GPIO2 o pino 14 (I2C_SDA). Tanto I2C Master como I2C Slave são suportados e a frequência máxima de operação é 100kHz. Seu uso é explicado na página 17 do PDF do Datasheet (Página 13 do Datasheet em si) |
I2S Interface | A Interface I2S é usada para a comunicação serial, principalmente para áudio (PCM). O Datasheet afirma também mainly used in aplications such as data collection, processing, and transmission of audio data, as well as the input and output of serial data. Os detalhes de seu funcionamento e também de seus pinos estão na página 18 do PDF do Datasheet (Página 14 do Datasheet em si). |
SDI/O | Secure Digital Input/Output Interface (SDIO) é usada como interface direta para cartões SD . 4-bit 25 MHz SDIO v1.1 e 4-bit 50 MHz SDIO v2.0 são suportados. |
O tutorial também esclarece os dois botões built-in na placa: RST é o Reset e o FLASH é usada para fazer download dos programas. O LED que já vem na placa pode ser controlado usando a porta D0.
Esse site pode ser bem prestativo; ele trata sobre os códigos numéricos de status do HTML.
- Para montarmos a página que controla o NodeMCU/ESP8622, podemos declará-la dentro do programa usando linguagem HTML junto de CSS, para torná-la mais visualmente agradável.
Comunicação Serial:
A comunicação serial é feita através do CP2102 USB-to-UART Bridge Controller. Ele converte sinal USB para serial, realizando a comunicação do nosso PC com o ESP8266. Acima está de forma explícita o chip responsável por essas funções.
Pinagem do NodeMCU:
Em seguida o tutorial ensina como instalar as configurações do ESP8266 na IDE Arduino, para que possamos programá-lo com a IDE.
O tutorial segue em como montar um Web Server simples com o ESP8266 neste link.
Ele começa explicando de maneira breve o conceito de um Web Server:
O ESP8266 é capaz de criar um server de três maneiras: STA (Station Mode), Soft Access Point (AP) e ambos ao mesmo tempo.
- STA: Conecta a uma rede Wifi já existe (de um roteador, por exemplo), pegando seu IP. Assim, ele cria um server e pode se comunicar com todos os dispositivos que estão nesta mesma rede.
- AP: O NodeMCU cria uma rede própria e funciona de maneira análoga a um roteador, porém sem interface com uma rede cabeada, por isso é chamada soft Access Point (soft-AP). O número máximo de dispositivos que podem se conectar é 5. Ele irá definir um SSID e endereço de IP, podendo através dele passar as páginas web.
O resto do tutorial mostra um exemplo de um AP usado para controlar dois LEDs por meio de botões dentro do site. Ele explica afundo o seu funcionamento. Não vou colocar aqui isto, uma vez que já se encontra no site.
Conversei com o Pedro sobre as configurações do IP para uma configuração do tipo AP, pois não havia entendido porque usávamos aqueles IPs. Ele me passou alguns IPs privados que são recomendados que usemos e me explicou um pouco melhor como funciona essa escolha.
Tarefa GT3 - Software do Detector
Aqui a Cami também colocou dois outros links importantes como referência: Scintillino e o CosmicWatch.
Sobre a comunicação serial:
Encontrei esse link aqui da própria página do Arduino falando sobre.
Resumão
Pelo o que eu entendi, a cami fez com que o NodeMCU pegasse o sinal do sensor de temperatura e umidade e comunicasse ele através do WIFI. Não entendi 100% pra onde que eles estavam sendo mandados (parece ser um página na internet que tu acessa através do IP, como o CosmicPI), mas creio que isso deva estar especificado nos tutoriais das referências. Creio também que isso tudo seja com o intuito de, uma vez tendo um protótipo funcional, que a comunicação dos dados seja interiamente feita via WIFI e de maneira automatizada. Lendo o arquivo .ino da Cami parece que ele monta algum server local e manda direto pra lá. Parece ter até um layout of sorts.
Coisas que o Fifi fez:
Os dois circuitos foram ideias do Fifi para amplificar e dar forma ao sinal da PMT. Ele utiliza os amplificadores op amp para cumprir a tarefa. O op amp mais a direita nas duas figuras e o mais a esquerda da segunda figura faz o papel de um buffer (amplificador de ganho unitário).
Um circuito muito parecido, que talvez tenha sido usado como base é o do CosmicWatch. Ele conecta o SIPM (sensor de luz) com o arduíno, e através filtros passa baixo e buffer
Destaco que a parte amplificada e de detector de picos estão em duas caixas azuis centrais na imagem, com seus respectivos nomes.
Amplificação:
This circuit takes the positive signal from the SiPM and amplifies it by about a factor of 24. We limit the high-frequency amplification using a 10 pF capacitor (C7) to improve ADC response. The waveform of the amplified signal can be seen by connecting a scope probe to test point 2 (TP2). The amplified signal is then sent to the peak detector circuit.
Atentando que a corrente nessa caso é positiva.
Dúvidas:
- Eu (Bruno) não entendi o porquê do resistor R3 (já que ali não devia passar corrente e está conectado com terra) e qual a utilidade do R5 e C7 estarem em paralelo? É UM FILTRO PASSA BAIXO
- Por que o R20 com GND (ele não tá só roubando sinal)?.
Detector de Pico:
The purpose of the peak detector circuit is to latch onto the peak of the amplified pulse and hold the voltage at that level for a sufficient time that the Arduino can measure it, (...)CPAMP2.pdf
Atentando que D1 e D2 são Schottky diode (diodo que segura correntes contrárias, mesmo de frequências elevadas, porém ele deixa mais corrente voltar do que o diodo de silício)