image

Acesse bootcamps ilimitados e +650 cursos

50
%OFF
Article image
Daniele Araújo
Daniele Araújo28/06/2022 14:42
Compartilhe

Internet das Coisas: Programação Física com Arduíno - #challengecommunityweek

  • #Programação para Internet
  • #IoT

Qual o conteúdo que você tinha maior dificuldade e hoje, pode se considerar um expert? #challengecommunityweek

Dado o desafio da Community Week “Qual o conteúdo que você tinha maior dificuldade e hoje, pode se considerar um expert?” resolvi falar um pouco sobre minha experiência com a Internet das Coisas e a programação física com o Arduíno. Não me considero uma expert, mas é um assunto em que tive bastante dificuldade no começo, mas hoje é uma das minhas paixões. #challengecommunityweek

Iniciei meu interesse pela área de Internet das Coisas na faculdade com um projeto de iniciação científica, do qual se torno meu projeto de conclusão de curso, o famoso TCC. Desde então tem sido uma área da qual sou entusiasta e amo falar sobre. O início, como quase todo início, não foi fácil, dado que é um paradigma bem diferente do que normalmente é apresentado durante a minha graduação (Analise e Desenvolvimento de Sistemas), mas apesar de tudo, é empolgante o processo de aprendizagem.

Nesse artigo farei uma breve introdução a Internet das Coisas, ao Arduíno e a ferramenta Tinkercad, que será usada para a simulação dos circuitos criados aqui. Depois colocaremos a mão na massa para darmos início no mundo da programação física.

Todos os exemplos de código mostrados foram desenvolvidos por mim no processo de aprendizado e o que me ajudou a fixar meu conhecimento. Deixarei por último algumas recomendações de curso e materiais para consumir, caso haja interesse. Então, vamos lá?

Sumário

1. Internet das Coisas

2. O que é o Arduíno

3. Tinkercad, uma plataforma de simulação

4. O “Hello World” da programação física

5. A Protoboard

6. Blink, um pouco mais a fundo

7. Brincando com o buzzer (fazendo músicas)

8. Conclusão

9. Recomendações

Internet das Coisas

Com um mundo cada vez mais globalizado e a tecnologia se renovando e evoluindo constantemente é comum nos depararmos com novos termos surgindo e tomando espaço. A IoT do inglês Internet of Things, que se traduz como Internet das Coisas, é considerada um novo paradigma tecnológico, uma extensão da internet atual, que possibilita que objetos do cotidiano com capacidade computacional e de comunicação conectar-se à Internet.

Mônica Mancini em seu artigo “Internet das Coisas: História, conceitos, aplicações e desafios” explica que por meio dessa conexão é possível controlar remotamente os objetos, tornando-os provedores de serviços, assim fazendo-os objetos inteligentes. Essa comunicação também viabiliza o registro contínuo de dados sobre o estado desses objetos durante o seu uso, mediante o uso de sensores, permitindo uma resposta aos dados recebidos, o que deixa visível a diferença básica de um objeto inteligente para um objeto qualquer conectado à Internet. 

A aplicabilidade disso abre um mundo de possibilidades, podemos ver exemplos de IoT na saúde, transporte e agricultura, entre muitas outras áreas. Um exemplo disso são pedágios inteligentes, que fazem a cobrança automática com base na implementação utilizando sensores como RFID. Automações residenciais, que podem ajustar a temperatura de um ar-condicionado, por exemplo, com base nos valores capturados da temperatura do ambiente, ou desligar e ligar luzes com base na luminosidade ou horário.

Esses pequenos exemplos nos mostra o mar de possibilidades e é um incentivo para o despertar do interesse na área.

O que é o Arduíno

O Arduíno trata-se de uma plataforma de desenvolvimento de sistemas embarcados de baixo custo aberta e livre. O módulo mais comum é o Uno, baseado no microcontrolador da Atmel (ATmega328), mas podemos encontrar diversas versões dele disponível no mercado. O Arduíno contém também uma IDE, Integrated Development Environment ou Ambiente de Desenvolvimento Integrado, que é responsável pela compilação e upload da solução para a plataforma física.

O Arduíno Uno possui 14 (quatorze) pinos de entrada/saída digital, dos quais 6 (seis) podem ser usadas como PWM (do inglês, Pulse Width Modulation), um cristal oscilador de 16 (dezesseis) MHz, conexão USB, entrada de alimentação, conexão ICSP (do inglês, In-Circuit Serial Programming) e botão de reset, exemplificados na Figura 1. O Arduíno pode comunicar-se facilmente com um computador, permitindo uma codificação versátil e vasta, baseada nas linguagens de programação C/C++, para os mais diversos usos e necessidades.

O Arduíno simula as saídas analógicas por meio do PWM, que trata-se de técnica de variação de comprimento da onda e podemos identificar essa saída por meio do indicador na placa, que é o caractere “~” na frente do número da placa. Na Figura 2 podemos elucidar a simulação dessa técnica. O entendimento disso é importante, pois todas as saídas do Arduíno são digitais, ou seja, retornam 0 e 1 e a utilização de componentes analógicos com o Arduíno é por meio dessa técnica. 

image

Figura 1. O Arduíno. Fonte: Professora Keila https://www.professorakeila.com.br/

image

Figura 2. Comprimento de onda PWM. Fonte: https://www.arduino.cc/en/Tutorial/Foundations/PWM

Eduardo de Castro Quintino nos mostra as funcionalidades da IDE Arduíno em seu artigo “O que é IDE Arduíno”, em um breve resumo, explicando a Figura 3, vamos as funcionalidades:

Verificar - Responsável por validar a sintaxe do seu código, ele compila e verifica erros de escrita. Importante ressaltar que erros de lógica não serão identificados durante esse processo.

Carregar - O seu código também será verificado/compilado. Mas nesse caso, se houver um Arduíno conectado via USB e setado na ferramenta ele fará o upload do código para a plataforma, que ao final estará com a programação desenvolvida.

Novo - Abre um novo sketch em branco para criação de um novo código.

Abrir - Abre um sketch que pode ser dos seus arquivos ou um dos exemplos que já estão na IDE do Arduíno ou nas bibliotecas instaladas.

Salvar - Salva as alterações feitas no sketch.

Monitor Serial - Pode-se imaginar como um console. Quando executamos um código em Java, por exemplo, conseguimos utilizar um console para imprimir valores, que usamos normalmente para depuramos códigos, com o Arduíno não é diferente, por meio do Monitor Serial fazemos um elo entre o computador e o Arduíno e então podemos imprimir valores enviados pelo Arduíno.

image

Figura 3. Arduíno IDE. Fonte: https://www.filipeflop.com/blog/o-que-e-ide-arduino/

Tinkercad, uma plataforma de simulação

O Tinkercad é um programa de modelagem que roda sobre a plataforma WEB e é online e gratuito. Ele possuí integrado em suas funcionalidades um simulador de circuitos que possibilita que você aprenda programação física sem a necessidade de possuir os componentes, o que facilita a vida, né?

Como mostrado na Figura 4 a plataforma possui uma seção para a codificação, uma lista de componentes e um botão para iniciar uma simulação. Então possui as funcionalidades essenciais que vimos na plataforma de desenvolvimento do Arduíno. Então iremos utilizá-la durante os exemplos, para tornar o aprendizado acessível.

image

Figura 4. Página de Circuito do Tinkercad. Fonte: Próprio Autor.

O “Hello World” da programação física

Como falado anteriormente, a linguagem suportada pelo Arduíno é o C/C++, então vamos entender um pouco como funciona a programação dentro da plataforma Arduíno.

Todo programa para Arduíno possuem duas funções, a setup() e a loop(). A função setup() é responsável por inicializar variáveis, constantes e/ou componentes. Códigos que precisam ser inicializados uma única vez são atribuídas a essa função. Já a função loop() é responsável pela lógica do seu circuito e, como o próprio nome sugere, é executada em um loop, que gera a rotina do seu sistema.

O “Hello World” da programação física é conhecida como “Blink” e nele usamos o LED embutido do próprio Arduíno para piscas constantemente. Por padrão todo Arduíno vem com o LED embutido na porta 13, então no código abaixo setamos com a função pinMode a porta 13 como uma saída, que é definida pela palavra reservada “OUTPUT” na função setup(). Já na função loop() inserimos a lógica da rotina, onde pela palavra reservada “HIGH” definimos que o LED será ligado e pela palavra reservada “LOW” desligamos o LED, tudo isso por meio da função digitalWrite(), onde informamos por parâmetro a porta que utilizaremos, que foi setada anteriormente como saída, e a ação tomada, que será ligar ou desligar. Entre cada interação damos um delay de 1 milissegundo com a função delay(), que recebe como parâmetro o valor em milissegundo que desejamos esperar.

Todas as funções utilizadas nesse código são nativas da plataforma Arduíno.

void setup() {
pinMode(13, OUTPUT); // Pino do LED
}

void loop(){
digitalWrite(13, HIGH); // Liga o LED
delay(1000); // Espera por 1 segundo
digitalWrite(13, LOW); // Desliga o LED
delay(1000); // Espera por 1 segundo
}

Para visualizar a sumulação, acesse: https://www.tinkercad.com/things/60l2T0i28ff

image

Figura 5. Passo a passo para a simulação. Fonte: Próprio Autor.

A Protoboard

A protoboard é uma matriz de contato que é utilizada para montagem de circuitos eletrônicos. O intuito dela é facilitar a criação de protótipos e organização de circuitos. Como mostrado na Figura 6 ela possui barramentos verticais, que são utilizados para fazer conexões entre componentes e barramentos horizontais, que são utilizados para a alimentação dos componentes, possuindo o polo positivo e negativo.

image

Figura 6. A Protoboard. Fonte: https://portal.vidadesilicio.com.br/protoboard/.

Blink, um pouco mais a fundo

Agora vamos avançar um pouco mais e adicionar componentes ao Arduíno. Nesse caso utilizarmos 2 (dois) LEDs. Na Figura 7 vemos um LED vermelho e podemos observar que o mesmo possui duas hastes metálicas de tamanhos diferentes, que são responsáveis por conectá-lo a placa. A diferença de tamanho das hastes servem para facilitar a identificação dos polos, sendo a haste maior o polo positivo e a menor o negativo.

image

Figura 7. LED vermelho. Fonte: Próprio Autor.

Agora utilizaremos a protoboard para organizar melhor os componentes. E para facilitar a leitura do código utilizaremos variáveis globais, que são definidas fora das funções principais setup() e loop(). Conectarmos os LEDs verde e vermelho nas portas 11 e 13, respectivamente. E faremos o blink intercalando cada interação com os LEDs. Os polos positivos que são controlados pelo Arduíno, porta 11 e 13, são conectados aos polos positivos dos LEDs, e os polos negativos dos LEDs são conectados ao GND do Arduíno, como mostra a Figura 8.

Para visualizar a sumulação, acesse: https://www.tinkercad.com/things/22ggfUiXZwj

image

Figura 8. Circuito Blink. Fonte: Próprio Autor.
int LED_VERDE = 11; // Variavel global, associando o pino do led verde (11) a variavel 
int LED_VERMELHO = 13; // Variavel global, associando o pino do led vermelho (13) a variavel 

void setup() {
 pinMode(LED_VERDE, OUTPUT);
 pinMode(LED_VERMELHO, OUTPUT);
}

void loop() {
 digitalWrite(LED_VERMELHO, HIGH);
 delay(1000); // Espera por 1 segundo
 digitalWrite(LED_VERMELHO, LOW);
 delay(1000); 
 digitalWrite(LED_VERDE, HIGH);
 delay(1000);
 digitalWrite(LED_VERDE, LOW);
 delay(1000);
}

Brincando com o buzzer (fazendo músicas)

Agora vamos brincar um pouco com o buzzer. O buzzer é um componente eletrônico que converte pulsos elétricos em ondas sonoras. Com base na frequência enviada é possível simular sons diferentes. No código abaixo definimos algumas notas as frequências, para facilitar o entendimento do código. Setamos na função setup() o pino 10 como saída e na função loop() brincamos utilizando a função tone() passando como parâmetro o valor do pino, a frequência que será tocada, que é responsável por definir a nota e a duração da sua execução em milissegundos.

Para visualizar a sumulação, acesse: https://www.tinkercad.com/things/kBvUw3MBBrT

image

Figura 9. Circuito Buzzer. Fonte: Próprio Autor.
#define DOH 262
#define RE 294
#define MI 330
#define FA 349
#define SOL 392
#define LA 440
#define SI 494
#define PINO 10

void setup() {
 pinMode(10, OUTPUT); //Pino do buzzer
}

void loop() {
 delay(2000);
 tone(PINO, DOH, 200); //DO
 
 delay(200);
 tone(PINO, RE, 300); //RE
 
 delay(200);
 tone(PINO, MI, 300); //MI
 
 delay(200);
 tone(PINO, FA, 300); //FA
 
 delay(300);
 tone(PINO, FA, 300); //FA
 
 delay(300);
 tone(PINO, FA, 300); //FA
 
 delay(300);
 tone(PINO, DOH, 100); //DO
 
 delay(200);
 tone(PINO, RE, 300); //RE
 
 delay(200); 
 tone(PINO, DOH, 100); //DO
 
 delay(200);
 tone(PINO, RE, 300); //RE
 
 delay(300);
 tone(PINO, RE, 300); //RE
 
 delay(300);
 tone(PINO, RE, 300); //RE
 
 delay(300);
 tone(PINO, DOH, 200); //DO
 
 delay(200);
 tone(PINO, SOL, 200); //SOL
 
 delay(200);
 tone(PINO, FA, 200); //FA
 
 delay(200);
 tone(PINO, MI, 300); //MI
 
 delay(300);
 tone(PINO, MI, 300); //MI
 
 delay(300);
 tone(PINO, MI, 300); //MI
 
 delay(300);
 tone(PINO, DOH, 200); //DO
 
 delay(200);
 tone(PINO, RE, 300); //RE
 
 delay(200);
 tone(PINO, MI, 300); //MI
 
 delay(200);
 tone(PINO, FA, 300); //FA
 
 delay(300);
 tone(PINO, FA, 300); //FA

 delay(300);
 tone(PINO, FA, 300); //FA

 delay(300);
}

Conclusão

Com base nos exemplos dados podemos observar como é divertido aprender programação com uso do Arduíno, por esse motivo é comum vermos a plataforma sendo utilizada para o ensino de programação com crianças. A plataforma Tinkercad torna o aprendizado mais acessível, dado que só necessitamos de um computador e acesso à internet para começarmos a aprender, sem a necessidade de possuir os componentes físicos. Então como recomendação deixarei os cursos que me ajudaram na minha evolução e aprendizado e também alguns artigos.

Espero ter desmistificado um pouco o uso da plataforma e que incentive o aprendizado de vocês. ✨🚀

Recomendações

Recomendações de cursos

  1. Plataforma CodeIoT: http://codeiot.org.br/
  2. Introdução à Internet das Coisas - https://codeiot.org.br/courses/course-v1:LSI-TEC+IOT101+2021_OC/about
  3. Eletrônica: conceitos e componentes básicos - https://codeiot.org.br/courses/course-v1:LSI-TEC+IOT103+2021_OC/about
  4. Programação física com Arduíno - https://codeiot.org.br/courses/course-v1:LSI-TEC+IOT104+2021_OC/about

Recomendação de repositório

  1. Repositório de códigos para iniciantes: https://github.com/felurye/introducao-a-IoT-com-Arduíno

Recomendação de livros e artigos

  1. Internet das Coisas com ESP8266, Arduino e Raspberry Pi – Sérgio de Oliveira
  2. O que é IDE Arduino? - Eduardo de Castro Quintino – filipeflop.com/blog/o-que-e-ide-arduino/
  3. Usando as saídas PWM do Arduino - Fábio Souza - https://www.embarcados.com.br/pwm-do-arduino/
  4. O que é o Arduino, e como integrá-lo ao BIM? - https://spbim.com.br/o-que-e-o-arduino-e-como-integra-lo-ao-bim/

Sites

  1. Professora Keila - https://www.professorakeila.com.br/

image

Compartilhe
Comentários (6)
Belisnalva Jesus
Belisnalva Jesus - 28/06/2022 17:34

Daniele, parabéns!!!

Gostei muito.

Boa sorte aí na sua jornada.

Samantha Gomes
Samantha Gomes - 28/06/2022 16:55

Adorei, dá para fazer muita coisa massa com arduíno!

Deivid Souza
Deivid Souza - 28/06/2022 15:52

Arduino, adoro pretendo fazer a certificação mais para frente. boa sorte!

Lucas Zacarias
Lucas Zacarias - 28/06/2022 15:13

Conteúdo rico e bem elaborado. Demais!!!!!!

Malu DIO
Malu DIO - 29/06/2022 13:00

Daniele, que conteúdo maravilhoso! Já quero um artigo com você explicando como que você faz essas capas incríveis, heinnn?


Boa sorte na competição, inclusive! Eu tô de olho aqui nas votações!!

GA

Gustavo Andrade - 28/06/2022 15:28

Muito bom, não tem como ser melhor. Parabéns!