Skip to content

Commit

Permalink
Merge pull request #13 from PETEletricaUFBA/renomear-pasta-e-outros
Browse files Browse the repository at this point in the history
Renomear pastas e corrigir tensão de 5v para 3v3
  • Loading branch information
freedxmgxd committed Sep 21, 2021
2 parents 1e79d25 + ef6d064 commit c0cb766
Show file tree
Hide file tree
Showing 122 changed files with 205 additions and 159 deletions.
28 changes: 15 additions & 13 deletions Módulo 1/2. Leitura de sinais digitais/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,19 @@ O circuito permite trabalhar:
> Nesse projeto você irá aprender a transmitir as informações entre diferentes circuitos através da programação e utilizar os botões (push button) utilizando a técnica Pull-down.
## Conteúdo

- [Materiais Necessários](#materiais-necessários)
- [Montagem do Circuito](#montagem-do-circuito)
- [O Código do Circuito](#o-código-do-circuito)

## Materiais Necessários

1. NodeMCU
2. 1 LED
3. 1 PushButton
4. 2 Resistores (um de 220Ω e outro na ordem de 10kΩ)
6. Protoboard
7. Jumpers
1. 1 LED
1. 1 PushButton
1. 2 Resistores (um de 220Ω e outro na ordem de 10kΩ)
1. Protoboard
1. Jumpers

## Montagem do Circuito

Expand All @@ -30,23 +32,22 @@ O circuito permite trabalhar:

O circuito deve ser montado como mostra a figura acima, representado de maneira esquemática e em protoboard. Ele dividido em duas partes, uma do LED e a outra do push button.

É necessário conectar um terminal do LED em uma porta digital do NODEMCU, pois através dessa conexão, é possível controlar o envio de 5V ou 0V para o LED (ligando/desligando). O outro terminal, deve ser conectado a um resistor limitador de corrente com valor de resistência em torno de 220Ω e, em seguida, ir direto para o GND.
É necessário conectar um terminal do LED em uma porta digital do NODEMCU, pois através dessa conexão, é possível controlar o envio de 3.3V ou 0V para o LED (ligando/desligando). O outro terminal, deve ser conectado a um resistor limitador de corrente com valor de resistência em torno de 220Ω e, em seguida, ir direto para o GND.

A outra etapa de montagem do circuito é a conexão do PushButton. Nesse sentido, é necessário entender um pouco sobre Pull-Up e Pull-Down.

![Circuito Pull-Up e Pull-Down](assets/PULLUPPULLDOWN.jpg)

O circuito Pull-UP garante que antes de apertar o botão, a entrada digital do NODEMCU apresente 5V (o NODEMCU possui alta impedância e o circuito se comporta como um aberto, assim impedindo a passagem de corrente, não havendo, então, queda no Resistor de Pull-Up). O circuito Pull-Down, por sua vez, garante 5V somente após e enquanto o botão for pressionado. Desse modo, essa parte do circuito visualizado na figura "Schematic", é implementado a partir do circuito Pull-Down.
O circuito Pull-UP garante que antes de apertar o botão, a entrada digital do NODEMCU apresente 3.3V (o NODEMCU possui alta impedância e o circuito se comporta como um aberto, assim impedindo a passagem de corrente, não havendo, então, queda no Resistor de Pull-Up). O circuito Pull-Down, por sua vez, garante 3.3V somente após e enquanto o botão for pressionado. Desse modo, essa parte do circuito visualizado na figura "Schematic", é implementado a partir do circuito Pull-Down.

É importante que o resistor de pull up ou pull down seja de um valor alto de resistencia para não solicitar muita corrente do µC, nesta montagem utilizamos um de 10kΩ.

Na imagem e no circuito em específico, o terminal "MCU" é uma entrada digital do NODEMCU.


## O código do Circuito

Use o código que está em [code](code) ou copie o código abaixo:

```C++
const int pushButton = 15;//D8
const int led = 16;//D0
Expand All @@ -64,18 +65,19 @@ void loop() {
delay(1);
}
```

O código acima começa com a declaração e associação da entrada e saída utilizada. O botão foi associado ao terminal D8 do NODEMCU e o LED ao terminal D0. Feito isso, partimos para o void setup onde é necessário iniciar a comunicação serial através do comando ```Serial.begin``` definindo a taxa de transmissão de dados e declarar as entradas e saídas por meio do pinMode.

Após isso, dentro do void loop, declaramos uma variável "buttonState", que lê o valor digital da entrada do PushButton utilizando a função digitalRead. Essa variável será utilizada em dois momentos:
Após isso, dentro do void loop, declaramos uma variável "buttonState", que lê o valor digital da entrada do PushButton utilizando a função digitalRead. Essa variável será utilizada em dois momentos:

1) ao utilizarmos a função ```Serial.println``` para exibir os valores que essa variável assume no monitor serial
2) controlar o LED a partir do digitalWrite e com os níveis UP/DOWN da variável
1. ao utilizarmos a função ```Serial.println``` para exibir os valores que essa variável assume no monitor serial
1. controlar o LED a partir do digitalWrite e com os níveis UP/DOWN da variável

Você deve ter percebido o uso de ```delay(1)```, certo? Nesse caso, o uso da função delay implica criar um debouncing via software, isto é, a partir de um espaço de tempo (delay), conseguimos fazer com que a mudança de estado do botão seja visualizado de forma satisfatória.

Após upar o código para a placa, ele deve funcionar como no gif abaixo, para ver o estado do ```buttonState``` na IDE no Arduino vá em ```Ferramentas > Monitor serial``` ou pressione ```Ctrl + Alt + M```.

Caso tenha tido algum problema abra uma issue clicando [aqui](https://github.com/PETEletricaUFBA/IoT/issues/new)
Caso tenha tido algum problema abra uma issue clicando [aqui](https://github.com/PETEletricaUFBA/IoT/issues/new)

![Circuit](assets/circuitoGif2.gif)

Expand Down
19 changes: 11 additions & 8 deletions Módulo 1/3. Escrita analógica/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,38 +11,40 @@ O circuito permite trabalhar:
> Nesse projeto você irá aprender como relizar uma escrita analógica, utilizando a função ```analogWrite``` através do controle de um brilho de uma lâmpada.
## Conteúdo

- [Materiais Necessários](#materiais-necessários)
- [Montagem do Circuito](#montagem-do-circuito)
- [O Código do Circuito](#o-código-do-circuito)

## Materiais Necessários

1. NodeMCU
2. 1 LED
3. 1 Resistor de 220Ω
4. Protoboard
5. Jumpers

## Montagem do Circuito

O circuito deve ser montado como mostra a figura abaixo, representado na protoboard.

![Protoboard](assets/circuit.png)

É necessário conectar um terminal do LED em um pino digital do NODEMCU com capacidade para gerar PWM, pois através dessa conexão, é possível, por conta do pino ser digital, controlar o envio de 5V ou 0V para o LED (ligando/desligando) e além disso, pela capacidade de gerar PWM, controla-se o valor intermediário de tensão enviado para a saída.
É necessário conectar um terminal do LED em um pino digital do NODEMCU com capacidade para gerar PWM, pois através dessa conexão, é possível, por conta do pino ser digital, controlar o envio de 3.3V ou 0V para o LED (ligando/desligando) e além disso, pela capacidade de gerar PWM, controla-se o valor intermediário de tensão enviado para a saída.

Essas são os pinos dísponíveis para o uso do PWM:
![Imagem do PWM](assets/pinout.jpg)

Nesse sentido, faz-se necessário entender um tópico novo na síntese de circuitos. O que significa PWM? Os microcontroladores são digitais e portanto, a representação, bem como o processamento de informações analógicas são feitas através de um sinal digital que oscila entre 0v e 5v. Para representar um sinal com 2.5V poderiamos realizar uma escrita digital em 5V, outra em 0V, uma em 5V, outra em 0V, alternando isso rapidamente, assim, o _efeito_ resultante, será um de 2.5V.
Nesse sentido, faz-se necessário entender um tópico novo na síntese de circuitos. O que significa PWM? Os microcontroladores são digitais e portanto, a representação, bem como o processamento de informações analógicas são feitas através de um sinal digital que oscila entre 0v e 3.3v. Para representar um sinal com 1.65V poderiamos realizar uma escrita digital em 3.3V, outra em 0V, uma em 3.3V, outra em 0V, alternando isso rapidamente, assim, o _efeito_ resultante, será um de 1.65V.

![Explicação PWM](assets/pwm.jpg)


O outro terminal, deve ser conectado a um resistor de 220Ω limitador de corrente e, em seguida, ir direto para o GND.

## O código do Circuito

Use o código que está em [code](code/code.ino) ou copie o código abaixo:

```C++
const int led = 14;

Expand All @@ -59,18 +61,19 @@ void loop() {
}
}
```
Observação: O monitor (plotter) serial é usado para debugar saídas e entradas ou fornecer informações adicionais referentes ao circuito.<br>

Observação: O monitor (plotter) serial é usado para debugar saídas e entradas ou fornecer informações adicionais referentes ao circuito.

O código acima começa com a declaração e associação da saída utilizada. O LED foi associado à constante 14. Feito isso, partimos para o ```void setup``` onde é necessário iniciar a comunicação serial através do comando "Serial.begin" e declarar as entradas e saídas por meio do pinMode.

Posteriormente, no ```void loop``` iniciamos a estrutura de repetição ```for``` que vai incrementar uma variável ```i``` até 300.
Posteriormente, no ```void loop``` iniciamos a estrutura de repetição ```for``` que vai incrementar uma variável ```i``` até 300.

Você deve estar se perguntando por quê 300? A escolha desse valor está relacionada com a saturação do brilho do LED. Chega um momento em que o incremento não causa um aumento de brilho, nesse caso atinge-se a saturação. É imperioso saber também que esse incremento poderia chegar até 1023 e esse valor limite igual a 1023 está relacionado com a construção interna do microcrontrolador, isto é, o microcontrolador ESP utiliza 10 bits (1024 estados diferentes) para gerar o PWM.

Além disso, utiliza-se a função ```analogWrite``` que tem a seguinte sintaxe: ```analogWrite(pin,value)```. O ```pin``` é justamente a entrada ou saída declarada no ```void setup```, enquanto que ```value``` é um parâmetro que varia entre um valor entre 0 (sempre desligado) e 300 (sempre ligado).


Caso tenha tido algum problema abra uma _issue_ clicando [aqui](https://github.com/PETEletricaUFBA/IoT/issues/new)

![Circuit](assets/circuitoGif3.gif)

> Pense na utilização da função ```analogWrite``` em outras aplicações e com outras saídas.
> Pense na utilização da função ```analogWrite``` em outras aplicações e com outras saídas.
18 changes: 10 additions & 8 deletions Módulo 1/4. Leitura e escrita analógica/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,13 @@ Aprendemos a escrever sinais analógicos no item [3](https://github.com/PETEletr
> Nesse projeto você irá aprender como relizar uma escrita analógica, utilizando a função ```analogWrite``` através do controle de um brilho de uma lâmpada, bem como a ler uma entrada analógica utilizando a função ```analogRead```
## Conteúdo

- [Materiais Necessários](#materiais-necessários)
- [Montagem do Circuito](#montagem-do-circuito)
- [O Código do Circuito](#o-c&oacute;digo-do-circuito)

## Materiais Necessários

1. NodeMCU
2. 1 LED
3. 1 Resistor de 220Ω
Expand All @@ -23,26 +25,26 @@ Aprendemos a escrever sinais analógicos no item [3](https://github.com/PETEletr
6. Potenciômetro 10kΩ (ou outro)

## Montagem do Circuito

O circuito deve ser montado como mostra a figura abaixo, representado na protoboard.

![Protoboard](assets/pinout.png)

É necessário conectar um terminal do LED em um pino digital do NODEMCU com capacidade para gerar PWM, pois através dessa conexão, é possível, por conta do pino ser digital, controlar o envio de 5V ou 0V para o LED (ligando/desligando) e além disso, pela capacidade de gerar PWM, controla-se o valor intermediário de tensão enviado para a saída.
É necessário conectar um terminal do LED em um pino digital do NODEMCU com capacidade para gerar PWM, pois através dessa conexão, é possível, por conta do pino ser digital, controlar o envio de 3.3V ou 0V para o LED (ligando/desligando) e além disso, pela capacidade de gerar PWM, controla-se o valor intermediário de tensão enviado para a saída.

Mas o que é um sinal PWM? PWM significa Pulse Width Modulation ou Modulação de Largura de Pulso em português e é utilizado quando queremos simular um sinal analógico a partir de um sinal digital. Esse artifício é possível quando modulamos a largura do pulso de um sinal digital, ou seja, nós controlamos quanto tempo a cada período o sinal digital vai ficar em nível alto e por quanto vai ficar em nível baixo. Por exemplo, se tínhamos um sinal digital de 5V que ficava em nível alto o tempo todo e fazemos com que a corrente só seja transmitida por metade do período, fazendo com que ele fique metade do tempo em 5V e a outra metade em 0V, então, para a potência média do dispositivo que recebe o sinal, é como se o sinal recebido tivesse 2,5V. Vale ressaltar que só obtemos uma boa aproximação para efeitos práticos quando a frequência do sinal é elevada.
Mas o que é um sinal PWM? PWM significa Pulse Width Modulation ou Modulação de Largura de Pulso em português e é utilizado quando queremos simular um sinal analógico a partir de um sinal digital. Esse artifício é possível quando modulamos a largura do pulso de um sinal digital, ou seja, nós controlamos quanto tempo a cada período o sinal digital vai ficar em nível alto e por quanto vai ficar em nível baixo. Por exemplo, se tínhamos um sinal digital de 3.3V que ficava em nível alto o tempo todo e fazemos com que a corrente só seja transmitida por metade do período, fazendo com que ele fique metade do tempo em 3.3V e a outra metade em 0V, então, para a potência média do dispositivo que recebe o sinal, é como se o sinal recebido tivesse 1.65V. Vale ressaltar que só obtemos uma boa aproximação para efeitos práticos quando a frequência do sinal é elevada.

Essas são os pinos dísponúveis para o uso do PWM:
![Imagem do PWM](assets/pwm.jpg)


O outro terminal, deve ser conectado a um resistor de 220Ω limitador de corrente e, em seguida, ir direto para o GND.

O potenciômetro é uma entrada que gera um sinal analógico ao longo do tempo e por esse mesmo motivo o terminal central do potenciômetro deve ser conectado ao pino analógico do ESP. Os terminais da extremidade devem ser conectados no VCC e no GND.

## O código do Circuito

Use o código que está em [code](code/code.ino) ou copie o código abaixo:

```C++
#define led 14 //D5
#define pot 17 //A0
Expand All @@ -60,15 +62,15 @@ void loop(){
}

```
O código acima começa com a declaração e associação das saídas e entradas utilizadas. O LED foi associado à constante 14 (D5) e o potenciômetro à porta analógica A0. Feito isso, partimos para o ```void setup``` onde é necessário iniciar a comunicação serial através do comando "Serial.begin" e declarar as entradas e saídas por meio do pinMode.

Posteriormente, no ```void loop``` iniciamos com a declaração de uma variável e o uso da função ```analogRead``` que obterá informação analógica através da leitura da variável pot e armazenará essa informação na variável potenciometro de forma analógica quantizada com uma resolução de 10 bits.
O código acima começa com a declaração e associação das saídas e entradas utilizadas. O LED foi associado à constante 14 (D5) e o potenciômetro à porta analógica A0. Feito isso, partimos para o ```void setup``` onde é necessário iniciar a comunicação serial através do comando "Serial.begin" e declarar as entradas e saídas por meio do pinMode.

Além disso, utiliza-se a função ```analogWrite``` que tem a seguinte sintaxe: ```analogWrite(pin,value)```. O ```pin``` é justamente a entrada ou saída declarada no ```void setup```, enquanto que ```value``` é um parâmetro que varia entre um valor entre 0 (sempre desligado) e 255 (sempre ligado).
Posteriormente, no ```void loop``` iniciamos com a declaração de uma variável e o uso da função ```analogRead``` que obterá informação analógica através da leitura da variável pot e armazenará essa informação na variável potenciometro de forma analógica quantizada com uma resolução de 10 bits.

Além disso, utiliza-se a função ```analogWrite``` que tem a seguinte sintaxe: ```analogWrite(pin,value)```. O ```pin``` é justamente a entrada ou saída declarada no ```void setup```, enquanto que ```value``` é um parâmetro que varia entre um valor entre 0 (sempre desligado) e 255 (sempre ligado).

Caso tenha tido algum problema abra uma _issue_ clicando [aqui](https://github.com/PETEletricaUFBA/IoT/issues/new)

![Circuit](assets/circuitoGif4.gif)

> Pense na utilização da função ```analogRead``` em outras aplicações e com outras entradas.
> Pense na utilização da função ```analogRead``` em outras aplicações e com outras entradas.
Loading

0 comments on commit c0cb766

Please sign in to comment.