Escolar Documentos
Profissional Documentos
Cultura Documentos
São Luís – MA
2023
Carlos Brandão
GOVERNADOR DO ESTADO
Leuzinete Pereira
SECRETÁRIO DE ESTADO DA EDUCAÇÃO
APRESENTAÇÃO 09
1 INTRODUÇÃO 10
2 HISTÓRICO DA ROBÓTICA 11
2.1 Primeira geração 14
2.2 Segunda geração 15
2.3 Terceira geração 15
3 AS TRÊS LEIS DA ROBÓTICA 16
3.1 1ª lei da Robótica 17
3.2 2ª lei da Robótica 17
3.3 3ª lei da Robótica 17
4 TIPOS DE ROBÔS 17
4.1 Robôs autônomos 17
4.2 Robôs industriais ou manipuladores 18
4.3 Robôs humanoides 18
4.4 Robôs educacionais 19
4.5 Componentes de um robô 19
5 KITS EDUCACIONAIS 21
5.1 Lego Mindstorm EV3 21
5.1.1 Benefícios do LEGO MINDSTORMS Education EV3 para o
aprendizado 22
5.2 Arduino 22
6 ROBÓTICA APLICADA NA EDUCAÇÃO 26
6.1 Competências e habilidades adquiridas com a utilização da Robótica
Educacional 27
7 ROBÓTICA NA BASE NACIONAL COMUM CURRICULAR (BNCC) 29
7.1 Robótica na Linguagens 31
7.2 Robótica na Humanas 32
7.3 Robótica nas Ciências da Natureza 33
7.3.1 Robótica para Ensinar Plano Cartesiano e o Conceito de Graus 34
7.3.2 Robótica e o Ensino de Algoritmos 35
7.3.3 Robótica e o Pensamento Lógico 35
8 PENSAMENTO COMPUTACIONAL 35
8.1 LÓGICA DE PROGRAMAÇÃO 36
9 LINGUAGENS DE PROGRAMAÇÃO 37
9.1 Linguagem em bloco 39
9.1.1 Algorítmo 41
9.1.2 Scratch 42
9.1.2.1 Programar no Scratch 44
9.1.2.2 Área de programação 44
9.1.2.3 Blocos de movimento 45
9.1.2.4 Blocos de aparência 45
9.1.2.5 Blocos de som 46
9.1.2.6 Blocos de evento 47
9.1.2.7 Blocos de controle 47
9.1.2.8 Blocos de sensores 48
9.1.2.9 Blocos de operadores 49
9.1.2.10 Blocos de variáveis 50
9.1.3 Open Roberta 51
9.1.4 Microsoft Makecode 52
9.1.5 ArduinoBlocks 53
9.1.5 .1 Lógica 54
9.1.5.2 Control 56
9.1.5.3 Matemática 57
9.1.5.4 Texto 60
9.1.5.5 Variáveis 64
9.1.5.6 Listas 66
9.1.5.7 Funções 68
9.1.5.8 Blocos de funções arduino 70
9.1.5.8.1 Entrada/Saída 70
9.1.5.9 Multitarefa 77
9.1.5.10 Blocos 77
9.1.5.11 Bluetooth 80
9.1.5.12 Bluetooth HID 3.3.4.1 (ESP32 / ESP32 STEAMakers) 83
9.1.5.13 Sensores 83
9.1.6 Tinkercad 90
9.1.7 Linguagem C/C++ 91
10 PLACA ARDUINO (HARDWARE) 92
10.1 Alimentação da placa Arduino 93
10.2 Comunicação USB da placa arduino UNO 94
10.3 Microcontrolador do Arduino 95
10.4 Entradas e saídas do Arduino 95
10.4.1 Grandezas digitais e analógicas 96
10.4.2 Caraterísticas de uma entrada digital (pull-up e pull-down) 97
10.4.3 Caraterísticas de uma saída digital 99
10.4.4 Entradas e saídas analógicas 99
10.4.5 Entradas analógicas 99
10.5 Programação da placa 101
10.6 Resumo da placa arduino UNO 102
11. ARDUINO IDE (SOFTWARE) 102
11.1 Void 102
11.2 pinMode 103
12 TIPOS DE PLACAS DE ARDUINO 103
12.1 Arduino UNO R3 103
12.2 Arduino Mega (R3) 104
12.3 Arduino Leonardo 105
12.4 Arduíno Nano 106
12.5 Arduino Pro Mini 106
12.6 Arduino LilyPad 107
13 TABELA COMPARATIVA DE PLACAS ARDUÍNO 108
14 MOTORES ARDUINO 108
14.1 Motor de corrente contínua (motor dc) 108
14.2 Servo motor 109
15 SENSORES ARDUINO 110
15.1 Sensor de distância ultrassônico HC-SR04 110
15.2 Sensor de umidade e temperatura 110
15.3 Sensor de obstáculo infravermelho IR 111
15.4 Sensor de cor 111
16 CÓDIGO DE CORES PARA RESISTORES 112
17 EXPERIÊNCIA COM KIT ARDUÍNO E PRÁTICA LABORATORIAL 113
17.1 Prática experimental 1 – Projeto led 113
17.2 Prática experimental 2 – Projeto led com expansão 114
17.3 Prática experimental 3 – Projeto piano 115
17.4 Prática experimental 4 – Projeto registro de temperatura 117
17.5 Prática experimental 5 – Projeto alarme 118
17.6 Prática experimental 6 – Projeto termômetro 119
17.7 Prática experimental 7 – Potenciômetro 122
17.8 Prática experimental 8 – Projeto sensor de estacionamento 123
17.9 Prática experimental 9 – Sistema de alarme codificado com arduino,
display 16×2 e sensor de vibração SW-40 129
17.10 Prática experimental 10 – Sensor de luz 137
18.11 Prática experimental 11 – Incrementando sensor de luz no módulo
relé 138
17.12 Prática experimental 12– Controlando servo motor 140
17.13 Prática experimental 13 – Sensor de som 142
17.14 Prática experimental 14 – Incrementando sensor de som 143
17.15 Prática experimental 15 – Monitoramento de temperatura 144
17.16 Prática experimental 16 – Sensor de movimento e presença 146
17.17 Prática experimental 17 – Controle de acesso por RFID com arduino 148
17.18 Prática experimental 18 – Robô autônomo 152
17.19 Prática experimental 19 – Robô autônomo via bluetooth 158
17.20 Prática experimental 20 – Carregar uma sequência de LED usando
o arduinoblocks 162
17.21 Prática experimental 21- LCD usando o ArduinoBlocks 165
17.22 Prática experimental - Comunicação arduino e bluetooth usando o
arduinoblocks 168
17. 23 Prática experimental – Programe o ESP8266 com arduinoblocks:
NodeMCU Board 168
18 REFERÊNCIAS 172
APRESENTAÇÃO
A coordenação de Robótica do Instituto de Educação, Ciência e
Tecnologia do Maranhão - IEMA, buscando uma formação sintonizada com o
desenvolvimento do conhecimento e da criatividade, traz a Apostila de Robótica
Educacional em Arduino para os demais IEMAs Plenos, que servirá como material de
apoio teórico e prático para os professores.
Além de uma introdução sobre a plataforma Arduino, instalação e
configuração, mostra-se como utilizar todos os recursos que uma placa Arduino oferece,
através de experimentos práticos, desde a programação, montagem, até o produto em
funcionamento.
Esse material se articula fortemente a todos os componentes curriculares,
garantindo que os conteúdos pedagógicos sejam abordados por meio de uma prática
interativa e estimulante. Ainda possibilita ao estudante a compreensão de programação,
conhecimento bastante importante frente aos desafios da sociedade atual.
Professores terão possibilidade de explorar e ampliar os conhecimentos
trazidos neste material, que é um subsídio para o início de projetos nos IEMAs Plenos.
1 - INTRODUÇÃO
A Robótica é a parte da ciência que se dedica a estudar os robôs, ou
autômatos, que podem ser reprogramáveis controlados por um programa de
computador armazenado no próprio robô, ou em um computador ao qual o
robô está ligado. Construir e programar um robô requer a combinação de
conhecimentos de diferentes áreas, logo pode-se dizer que a Robótica é por
natureza multidisciplinar.
Segundo Barbosa e Silva e Blikstein (2020), até a década de 1990, a
Robótica era assunto exclusivo para pesquisadores de ponta nas melhores
escolas de engenharia do mundo ou roteiro de escritores de ficção científica
e por mais que fosse inimaginável pensar que crianças e adolescentes
pudessem utilizar a robótica na sala de aula, essa é a realidade em muitas
escolas.
Ao longo do tempo, um grupo de pesquisadores, originários ou
relacionados ao grupo de Seymour Papert do Massachusetts Institute of
Technology – MIT Media Lab, trouxe a Robótica para a escola, “a ideia era
desenhar dispositivos que escondessem grande parte da complexidade da
construção de dispositivos robóticos” e que tivesse uma abordagem
pedagógica, baseada no construcionismo, na montagem e na programação
de robôs, surgindo assim o que hoje chamamos de Robótica Educacional –
RE (BARBOSA & SILVA e BLIKSTEIN, 2020).
A robótica tem usufruído do uso de blocos de montar para se
estabilizar enquanto instrumento educacional. O uso desses blocos se dá de
forma intencional, onde, ao passo em que o sujeito encaixa uma peça na
outra, já há ali a prática do construcionismo, uma vez que para ele aquela
estrutura representa algo de seu interesse. Montar protótipos e programá-los
através de uma linguagem específica, fazendo uso de variadas tecnologias,
implica diretamente na extensão tecnológica da cultura do “faça você mesmo”
(CRUZ, 2019).
De acordo com Benitti et al. (2009), por meio da robótica os alunos
podem explorar novas ideias e desvendar novos caminhos para aplicar os
conhecimentos adquiridos em sala de aula, fazendo com que desenvolvam a
capacidade de formular hipóteses, estabelecer relações, tirar conclusões e
9
resolver problemas. Tais afirmativas são constatadas através de diversas
pesquisas nessa área.
O ensino de robótica alinhado à cultura maker e às competências
gerais da BNCC promovem um processo ensino-aprendizagem que permite
que a escola acompanhe os rápidos avanços tecnológicos, assim como
abranjam as necessidades das novas e futuras gerações, as quais nasceram
e irão nascer num mundo amplamente conectado (BRASIL, 2017).
Portanto, alinhadas às competências gerais da Base Nacional
Comum, a robótica educacional e a cultura maker nos apresentam uma gama
de oportunidades de desenvolver no espaço educacional habilidades
transversais e transdisciplinares que podem permitir que os sujeitos garantam
cada vez mais a sua formação integral. Neste sentido, diante da necessidade
de nortear os professores que irão trabalhar com a disciplina de Robótica
Educacional, elaborou-se esse material, que servirá de instrumento para as
ações a serem desenvolvidas em sala de aula, pois é um meio de construir e
compreender tecnologias presentes no nosso cotidiano bem como usufruir de
forma sustentável nosso ambiente.
10
2 - HISTÓRICO DA ROBÓTICA
A robótica é um dos ramos da tecnologia, mais especificamente no
domínio das engenharias (englobando mecânica, elétrica, eletrônica,
automação, controle e computação), que lida preferencialmente com sistemas
compostos por máquinas e partes mecânicas automáticas e controlados por
dispositivos mecânicos e/ou circuitos integrados (microprocessadores),
tornando sistemas mecânicos motorizados, controlado manual ou
automaticamente por circuitos elétricos, por computadores ou tele operados.
Esta tecnologia e suas disciplinas correlatas vem já há algum tempo sendo
adotada como padrão de produção em unidades fabris com sucesso relativo
e restrito aos conceitos: índices de produtividade e redução de custos (REIS
e SOUZA, 2020).
O precursor do termo robô (GROOVER, 1989) foi Karel Capek,
novelista e escritor de uma peça teatral na Tchecoslováquia, que usou pela
primeira vez, em 1920, a palavra “robota” (serviço compulsório, atividade
forçada) originando a palavra “robot” em inglês e traduzida para o português
como “robô”. Diversos filmes de ficção científica mostraram robôs produzidos
com o comportamento e a forma humana, levando muitos jovens a pesquisar
e desenvolver robôs para o mundo real.
Com o surgimento dos computadores na metade do século, iniciaram-
se especulações em termos da capacidade de um robô pensar e agir como
um ser humano. No entanto, os robôs foram, neste período, criados
especialmente para executarem tarefas difíceis, perigosas e impossíveis para
um ser humano. Por outro lado, eles não eram projetados com a capacidade
de criar ou executar processos que não lhes foram ensinados ou
programados. Assim sendo, foram as indústrias que mais se beneficiaram
com o desenvolvimento da robótica, aumentando a produção e eliminando
tarefas perigosas, antes executadas por seres humanos (CARRARA, 2015).
Na prática, um robô é um dispositivo autônomo ou semiautônomo que
realiza trabalhos de acordo com um controle humano, controle parcial com
supervisão, ou de forma autônoma. Além de serem usados como redutor de
custos pela indústria, entende-se que a grande vocação para os robôs fica por
conta da realização de tarefas em locais inóspitos ou impróprios a presença
do ser humano. Locais mal iluminados, ruidosos, alagados, poluídos ou
11
contaminados quimicamente, ambientes radioativos, hiper ou hipobáricos;
todos são candidatos a um planejamento especial contando com tais sistemas
(REIS e SOUZA, 2020).
Observa-se que, do mesmo modo que existem inúmeras definições
sobre a robótica pode-se encontrar também vários registros sobre “criadores”
e dos “pais” da tecnologia, ou mesmo quem foi o inventor/criador ou ainda o
primeiro a utilizar os termos: robô e robótica.
Segundo Azevedo et al. (2010), historicamente parece haver razões
para crer que teriam sido os gregos que construíram o que podemos chamar
de primeiros robôs. Ctesibius, um matemático e engenheiro grego que viveu
cerca de 285-222 a.C. em Alexandria, arquitetou uma série de aparelhos
robóticos, o mais famoso destes, foi a clepsidra ou relógio de água, o qual
constitui-se um dos primeiros sistemas criados pelo homem para medir o
tempo.
Há também relatos sobre Heron de Alexandria, geômetra e engenheiro
grego contemporâneo a Cristo e aos apóstolos. Este construiu diversas
invenções na área da automação, dentre seus sistemas robóticos está a
primeira máquina de vender bebidas da história, na qual a pessoa colocava
uma moeda nela e recebia um jato de água. Também construiu um autômato
que possuía autonomia para andar para frente e para trás movido por
engrenagens em um sistema que utilizava a energia cinética de grãos de trigo
que caíam de um recipiente no topo do autômato. Criou também o primeiro
motor a vapor documentado na história (AZEVEDO et al., 2010).
O célebre artífice, Leonardo Da Vinci ganha importância no invento de
engenhocas robóticas. Da Vinci, cientista, matemático, engenheiro, inventor,
anatomista, pintor, escultor, arquiteto, botânico, poeta e músico é reverenciado
até os dias atuais por sua engenhosidade tecnológica. Concebeu ideias muito
à frente de seu tempo, como um helicóptero, um tanque de guerra, o uso da
energia solar, uma calculadora, dentre outros (AZEVEDO et al., 2010).
Influenciado pela obra do arquiteto e engenheiro romano Marcos
Vitrúvio Polião (século I a.C.), Leonardo debruçou-se sobre o que foi chamado
o Homem Vitruviano – um dos seus trabalhos mais famosos, tomado como
símbolo do espírito renascentista. O desenho reproduz a anatomia humana
conduzindo eventualmente ao desígnio do primeiro robô conhecido na história
12
que veio a ser chamado de O Robô de Leonardo. Como resultados deste
estudo surgiram diversos exemplares de bonecos que moviam as mãos, os
olhos e as pernas, e que conseguiam realizar ações simples como escrever
ou tocar alguns instrumentos. E ainda em sua homenagem encontramos
atualmente o Robô Da Vinci destinado a diagnosticar e até operar a distância,
pois é controlado por um médico ou um grupo de especialistas à distância do
local onde se encontra o paciente (MENZEL, 2000).
No mundo da robótica, Jacques de Vaucanson, inventor e artista
francês, também se destaca. Em 1738 ele criou o primeiro robô funcional, um
androide que tocava flauta, assim como um pato mecânico que se alimentava.
Após expor para sociedade as primeiras criações robóticas, a tecnologia
avançou a ponto das pessoas preverem o uso das criaturas mecânicas como
força de trabalho, as respostas literárias ao conceito dos autômatos (robôs)
refletiram o medo dos seres humanos, de serem substituídos por suas próprias
criações (AZEVEDO et al., 2010).
Enquanto na ficção apareciam obras com base na robótica ficcional, na
realidade começam a ser criados os primeiros robôs fabricados para
industrialização. Isso ocorreu na década de 1950. Joseph F. Engelberger,
engenheiro e empresário considerado o "pai da robótica”, foi o primeiro a
construir tal robô, chamado Unimate. Este robô foi vendido para General
Motors, passando a trabalhar na linha de montagem em Nova Jersey, em
1961. Alguns textos creditam a criação do Unimate também ao inventor
George DeVol, expondo que este e Joseph F. Engelberger trabalharam em
conjunto na estruturação do primeiro robô fabril (PATA, 2006).
A partir de então, dissemina-se a robótica industrial como mecanismo
capaz de proporcionar às indústrias o aumento da produtividade e melhorar a
qualidade dos produtos, possibilitando a redução de custos com o operariado.
Porém há um ponto negativo nisso tudo. Ao mesmo tempo em que a robótica
beneficia as empresas diminuindo gastos e agilizando processos, ele cria o
desemprego pela substituição do trabalho humano por máquinas (AZEVEDO
et al., 2010).
Há também alguns ramos da robótica que geram impacto social positivo.
Quando um robô é na realidade uma ferramenta para preservar o ser humano,
como robôs bombeiros, submarinos, cirurgiões, entre outros tipos. Neste caso,
13
o robô pode auxiliar profissionais na resolução de atividades específicas,
preservando sua vida.
Dentro deste contexto, é possível observar que na robótica há variados
tipos de robôs, com complexidades e utilidades distintas. Podemos ainda
classificar os robôs de acordo com suas gerações tecnológicas.
Fonte: https://www.pinterest.nz/pin/366832332128690376/
Figura -Braço robótico, robô de primeira geração
Fonte: https://www.opovo.com.br/noticias/tecnologia/2015/08/cientistas-criam-
robo-capaz-de-construir-outros-sem-intervencao-humana.html
14
2.2 - Segunda Geração
São robôs dotados de sensores externos e internos, a programação
adotada permite que se adequem as situações nas quais tais dispositivos se
encontram. Nesta geração houve o advento do uso de câmeras que capturam
imagens as quais são comparadas com um banco de imagens, sensores de luz,
toque, peso, etc. Como exemplos temos os robôs do tipo houver e os robôs
montados com os kits mais comuns de robótica educacional.
Fonte:https://www.researchgate.net/figure/Le-robot-mobile-Hilare-2-muni-de-sa-
remorque-un-systeme-non-holonome_fig3_281416197
Figura - Robô HILARE, em mais detalhes.
Fonte: https://www.wikidata.org/wiki/Q55139668
15
virtual, através de uma plataforma conhecida como hiper presença. Os robôs
mais conhecidos desta geração são de aplicações militares e/ou biológicas,
ou ainda robôs que simulam seres vivos.
Figura - Robô AIBO
Fonte:https://spectrum.ieee.org/automaton/robotics/home-robots/sony-halts-support-for-
aibo-still-one-of-the-best-robot-toys-ever
Fonte:https://www.dailymail.co.uk/sciencetech/article-2797864/the-ultimate-
robo-pal-asimo-football-playing-disco-dancing-bartending-robot-arrives-uk.html
Sugestão de vídeos
https://www.youtube.com/watch?v=kFVB0mmzrvs
https://www.youtube.com/watch?v=FJ3dg5E_THw
https://www.youtube.com/watch?v=5lh3OtqkLMU
Fonte: https://www.admethics.com/br/the-three-or-four-laws-of-robotics/
16
Com o surgimento de robôs cada vez mais modernos e capazes de fazer
cada vez mais coisas, a ficção científica começou a criar máquinas inteligentes
e um universo em que máquinas tinham cada vez mais autonomia e controle
sobre as pessoas, fazendo parecer que os robôs se tornariam destruidores da
humanidade.
Assim, Isaac Asimov, a partir da década de 1940 lança inúmeras
publicações falando sobre esta temática, mas de forma contrária: segundo ele
os robôs surgiram para ajudar os homens em suas tarefas e não para substituí-
los, ele escreveu três leis simples para os robôs, que hoje são conhecidas como
“as três leis da robótica” (ASIMOV, 1981).
3.1 - 1ª Lei da Robótica
● Um robô não pode ferir um ser humano ou, por falta de ação, deixar que um
ser humano se fira;
Sugestão de leitura
https://www.tecmundo.com.br/ciencia/125150-funcionam-tres-leis-robotica-
escritor-isaac-asimov-2017.htm
4 - TIPOS DE ROBÔS
De forma simples vamos conhecer e agrupar os robôs em cinco grandes
grupos, para tornar nosso estudo mais fácil, sendo eles: autônomos, industriais,
humanoides e educacionais.
17
é realizar tarefas que são perigosas, repetitivas ou até mesmo inviáveis para o
ser humano. No chão de fábrica, os robôs podem ser utilizados na movimentação
e carregamento de produtos, na linha de produção e outros trabalhos pesados.
Fonte:https://www.terra.com.br/noticias/tecnologia/conheca-os-novos-robos-
trabalhadores-da-amazon,759895d2e060a410VgnCLD200000b1bf46d0RCRD.html
Fonte: https://www.hubi40.com.br/robos-industriais-devem-chegar-a-3-milhoes-
ate-2020/
18
quantidade de filmes, animações e desenhos que “formatam” a mente
deixando a ideia de que um robô deve pensar e agir (além de se parecer)
como humano, mas com o avanço da robótica esses modelos estão cada vez
mais aperfeiçoados e bem definidos, mas ainda atendendo aos comandos
humanos.
Figura - robô NAO
Fonte:https://www.dw.com/pt-br/rob%C3%B4s-humanoides-saem-da-f%C3%A1brica-
prontos-para-aprender/a-16259862
Fonte:https://ajornadadetchellita.wordpress.com/2017/02/28/robotica-
educacional-mais-uma-modinha-tecnologica/
19
robô. A primeira coisa que deve se saber é identificar quais os componentes
um robô pode possuir, e são eles:
20
Fonte: http://www.ece.ufrgs.br/~rventura/Aula2A_componentes.pdf
5 - KITS EDUCACIONAIS
A robótica educacional pode ser entendida como a utilização de meios
computacionais ou robóticos para fins pedagógicos. Compreendendo de uma
forma mais específica, a robótica educacional tem como principal ferramenta a
utilização de robôs para o aprimoramento de capacidades intelectuais
relacionadas ao raciocínio lógico, bem como trabalho em grupo, concentração,
imaginação e capacidade de resolução de problemas (ZILLI, 2004).
Atualmente nas aulas de robótica educacional do Instituto Estadual de
Educação, Ciência e Tecnologia do Maranhão - IEMA, utilizamos duas
plataformas:
● Lego Mindstorms EV3
● Arduíno
21
5.1.1 - Benefícios do LEGO MINDSTORMS Education EV3 para o
aprendizado:
Segundo Antunes (2022), a utilização do LEGO na educação básica
proporciona diversos benefícios, como os citados abaixo:
● Auxilia no desenvolvimento do pensamento crítico e na criatividade dos alunos
nas disciplinas que envolvem STEM.
● Estimula a aprendizagem por meio da resolução de problemas baseados em
situações do cotidiano;
● Desperta o interesse dos seus alunos com uma abordagem investigativa, por
meio de uma solução de ensino abrangente e inspiradora;
● Motiva os alunos a desenvolver, construir e programar robôs usando motores,
sensores, engrenagens, rodas, eixos e outros componentes. Isso ajuda em uma
melhor compreensão de como a tecnologia funciona nas aplicações da vida real.
● Permite que os alunos entendam e interpretem desenhos bidimensionais para
a criação de modelos tridimensionais; construam, testem, resolvam problemas e
revejam projetos; apliquem conceitos de matemática e ciências em aplicações
da vida real; e dominem funções de programação e registro de dados.
● Essa plataforma (Lego) será ofertada nas Eletivas e também será
utilizada em Competições.
Fonte: https://legoeducation.mcassab.com.br/lego-mindstorms-education/
Sugestão de vídeo
https://www.youtube.com/watch?v=M47xixea-to
https://www.youtube.com/watch?v=TZX4r9lA-h0
5.2 - Arduíno
O projeto Arduíno, nasceu em 2005 na Itália, é constituído de uma
plataforma de hardware e de software. É uma plataforma de código aberto
22
usada para construir projetos de eletrônica. Consiste de uma placa de circuito
físico programável (geralmente chamada de microcontrolador) e um software,
ou IDE (Integrated Development Environment) que roda em seu computador,
usado para escrever e fazer upload de código de computador para a placa
física (ARDUINO, 2019).
A plataforma Arduíno tornou-se bastante popular entre as pessoas que
estão começando com a eletrônica e por um bom motivo. Ao contrário da
maioria das placas de circuito programáveis anteriores, o Arduíno não precisa
de um hardware separado (chamado programador) para carregar um novo
código na placa - você pode simplesmente usar um cabo USB. Além disso, o
Arduíno IDE usa uma versão simplificada do C++, facilitando o aprendizado do
programa. O Arduíno fornece um fator de forma padrão que divide as funções
do micro controlador em um pacote mais acessível (CAVALCANTE et. al.,
2014).
O hardware e software Arduíno foi projetado para artistas, designers,
amadores, hackers, novatos e qualquer pessoa interessada em criar objetos
ou ambientes interativos. O Arduino pode interagir com botões, LEDs,
motores, alto-falantes, unidades de GPS, câmeras, a internet e até mesmo seu
smartphone ou sua TV. Essa flexibilidade combinada com o fato de que o
software Arduino é gratuito, as placas de hardware são muito baratas e tanto
o software quanto o hardware são fáceis de aprender, levando a uma grande
comunidade de usuários que contribuíram com código e lançaram instruções
para uma enorme variedade de Projetos baseados em Arduíno
(ALBUQUERQUE, 2021).
Existem diversos modelos de placas Arduino no mercado, no entanto,
apesar de possuírem características diferentes, compartilham um conjunto de
circuitos eletrônicos semelhantes, cujo principal componente é um
microcontrolador.
Um microcontrolador pode ser entendido como um computador de chip
único, onde temos encapsulados num circuito integrado a unidade lógica
aritmética (ULA), memórias, barramentos de comunicação, além de periféricos
programáveis para entrada e saída de dados (I/O) (SOUSA JR et al., 2020).
Para que os microcontroladores operem corretamente, é necessário um
conjunto auxiliar de circuitos eletrônicos responsáveis por funções como
23
regulagem de tensão, geração de sinal de Clock, proteção térmica, entre
outras. Essa é a grande vantagem do projeto Arduino, pois integra na mesma
placa de circuito impresso todos os componentes necessários ao
funcionamento do microcontrolador. A maioria dos Arduínos tem alguns
componentes em comum como os apresentados na figura a seguir.
24
(4) e 3.3V (5): Como se pode imaginar, o pino de 5V fornece 5 volts de energia,
e o pino de 3,3V fornece 3,3 volts de energia. A maioria dos componentes
simples usados com o Arduino são executados com folga de 5 ou 3,3 volts; -
Analógico (6): A área dos pinos sob a etiqueta "Analog In" (A0 até A5) são
pinos Analog In (este exemplo é baseado em placas Arduino UNO). Esses
pinos podem ler o sinal de um sensor analógico (como um sensor de
temperatura) e convertê-lo em um valor digital que se pode ler; - Digital (7):
Em frente aos pinos analógicos estão os pinos digitais (0 a 13 na UNO). Esses
pinos podem ser usados tanto para entrada digital (como dizer se um botão é
pressionado) quanto para saída digital (como alimentar um LED); - PWM (8):
Deve se notar o til (~) ao lado de alguns dos pinos digitais (3, 5, 6, 9, 10 e 11
no UNO). Esses pinos funcionam como pinos digitais normais, mas também
podem ser usados para algo chamado PWM (Pulse Width Modulation,
modulação por largura de pulso). Esses pinos são capazes de simular a saída
analógica (como o desvanecimento de um LED para dentro e para fora); -
AREF (9): representa a referência analógica. Na maioria das vezes pode
deixar este pino sozinho. Às vezes, é usado para definir uma tensão de
referência externa (entre 0 e 5 Volts) como o limite superior para os pinos de
entrada analógica;
c) Botão de reset: o Arduino tem um botão de reset (10). Empurrar este
botão irá conectar temporariamente o pino de reset à terra e reiniciar qualquer
código que esteja carregado no Arduino;
d) LED indicador de energia: Logo abaixo e à direita da palavra "UNO"
(no caso da imagem 4) na placa de circuito, há um pequeno LED ao lado da
palavra "ON" (11). Este LED deve acender sempre que se conectar o Arduino
a uma fonte de energia. Se esta luz não acender, há uma boa chance de que
algo esteja errado;
e) LEDs TX RX: TX é a abreviação de transmitir, RX é curto para
receber. Essas marcações aparecem um pouco na eletrônica para indicar os
pinos responsáveis pela comunicação serial. No caso, existem dois lugares
no Arduino, onde TX e RX aparecem - uma vez pelos pinos digitais 0 e 1, e
uma segunda vez ao lado dos LEDs indicadores TX e RX (12). Esses LEDs
darão algumas indicações visuais agradáveis sempre que o Arduino estiver
25
recebendo ou transmitindo dados (como quando carregamos um novo
programa no quadro);
f) IC principal: A “coisa” preta com todas as pernas de metal é um IC,
ou Circuito Integrado (13). É o cérebro do Arduino. O IC principal no Arduino
é um pouco diferente entre as placas de Arduino (depende do modelo), mas
geralmente é da linha “ATmega” do IC da empresa ATMEL;
g) Regulador de voltagem: O regulador de tensão (14) não é realmente
algo que se possa (ou deveria) interagir com o Arduino. Mas é potencialmente
útil saber que está lá e para o que serve. O regulador de tensão faz
exatamente o que diz - controla a quantidade de tensão que é colocada na
placa do Arduino. Pense nisso como uma espécie de porteiro; ele irá afastar
uma voltagem extra que pode prejudicar o circuito.
O Arduino é constituído de uma série de placas denominadas “Família
Arduino”, onde cada uma delas possui um conjunto de características
próprias. Dentre elas (Arduino UNO R3, Arduino LilyPad, RedBoard, Arduino
Mega R3 e Arduino Leonardo). Esse material de estudo abordará
especificadamente sobre dois modelos sendo: Arduino UNO e ESP que estará
detalhado em um capítulo a parte mais adiante.
Sugestão de vídeo
https://www.youtube.com/watch?v=MqDtkc1QE7o&feature=emb_title
https://www.youtube.com/watch?v=sv9dDtYnE1g
26
pensamento crítico, integração de disciplinas, divulgação de pensamentos,
criatividade, autonomia e responsabilidade e empreendedorismo para
soluções para integrar aplicativos de outras disciplinas relacionadas (SILVA e
OLIVEIRA, 2022).
Segundo Zilli (2004), o uso da Robótica Educacional como ferramenta
pedagógica é um recurso tecnológico bastante interessante e rico no processo
ensino e aprendizagem, pois contempla o desenvolvimento pleno do
estudante, e propicia o desenvolvimento de atividades dinâmicas, permitindo
a formação de um cidadão autônomo, independente e responsável pela sua
própria aprendizagem.
A robótica remete o aluno à essência do problema, promovendo o
estudo de conceitos multidisciplinares, provocando a criatividade e a
inteligência do aluno, sem contar que o mesmo estará motivado aos estudos.
Nesse sentido Almeida (2013) ressalta que o professor também deixa de ser
o único e exclusivo provedor de informações e passa a ser um parceiro no
processo de aprendizagem.
27
os princípios de Ciência e Tecnologia aos estudantes;
● Estimular a leitura, exploração e a investigação;
● Preparar o aluno para o trabalho em grupo;
● Estimular o hábito do trabalho organizado, uma vez que desenvolve
aspectos ligados ao planejamento, execução e avaliação final de projetos;
● Ajudar na superação de limitações de comunicação, fazendo com que o
aluno verbalize seus conhecimentos e suas experiências e desenvolvam sua
capacidade de argumentar e contra argumentar;
● Desenvolver a concentração, disciplina, responsabilidade, persistência e
perseverança;
● Estimular a criatividade, tanto no momento de concepção das ideias, como
durante o processo de resolução dos problemas;
● Tornar o aluno consciente da ciência na sua vida cotidiana;
● Desenvolver a auto-suficiência na busca e obtenção de conhecimentos;
● Gerar habilidades para investigar e resolver problemas concretos.
Dentre as habilidades desenvolvidas com a prática da robótica
educacional, podemos citar também algumas competências a serem
estimuladas com essa metodologia, como citado abaixo:
C1H4 Ter acesso a ferramentas fáceis de usar para concretizar o que planejam.
28
C2H2 Serem participativos e colaborativos com todas as pessoas que se
relacionam.
29
diferentes contextos e produzir sentidos que levem ao entendimento mútuo.”
● Competência 5 - “compreender, utilizar e criar tecnologias digitais de
informação e comunicação de forma crítica, significativa, reflexiva e ética nas
diversas práticas sociais (incluindo as escolares) para se comunicar, acessar
e disseminar informações, produzir conhecimentos, resolver problemas e
exercer protagonismo e autoria na vida pessoal e coletiva”.
Podemos observar que as competências aqui citadas, perpassam por
um viés crítico, que estimula os estudantes a serem protagonistas de suas
ações e buscarem a autonomia no seu processo de ensino-aprendizagem.
Outra forma de introduzir a tecnologia no âmbito educacional é através
dos itinerários formativos, que foi aprovado pelo MEC, pela lei 13.415/2017,
mais conhecida como Reforma do Ensino Médio, que também traz mudanças
para o currículo. Com sua sanção em 2017, foram estipulados cinco itinerários
formativos que deverão ser oferecidos para os alunos. Eles são:
● Linguagens e suas tecnologias
● Matemática e suas tecnologias
● Ciências da Natureza e suas tecnologias
● Ciências Humanas e sociais aplicadas
● Formação técnica e profissional
Segundo Brasil (2018) os itinerários deverão ser organizados por meio
da oferta de diferentes arranjos curriculares, conforme a relevância para o
contexto local e a possibilidade dos sistemas de ensino. Assim, os currículos
e as propostas pedagógicas devem garantir as aprendizagens essenciais
definidas na BNCC. Essas aprendizagens expressam as finalidades do Ensino
Médio e as demandas de qualidade dessa formação na contemporaneidade,
bem como as expectativas presentes e futuras das juventudes.
Podemos identificar que a nova base curricular, além de almejar criar
uma educação que fomente o pensamento crítico, também requer que os
alunos aprendam a lidar com as novas tecnologias, seguindo desta forma as
tendências sociais e atualizando-se constantemente. Tanto a capacidade de
pensamento crítico (e seu decorrente uso em soluções criativas para
problemas cotidianos) quanto a aptidão no uso das novidades tecnológicas
são poderosos diferenciais no mercado de trabalho, o que justifica plenamente
as alterações feitas na BNCC.
30
O melhor caminho para levar esses conhecimentos para a sala de aula
é trabalhar com as metodologias ativas, que visam tirar o aluno da passividade
e trazê-lo para o centro do processo de aprendizagem por meio de vivências,
e trabalhar com as novas metodologias, a exemplo, a Robótica.
O ensino de Robótica nas escolas é uma variante da Cultura Maker, cujo
objetivo é levar pessoas comuns a construir, fabricar, consertar ou alterar
diferentes tipos de objetos com suas próprias mãos. Isso nos leva a um
aprendizado mão na massa, onde os alunos aprendem através de tentativa e
erro (ALEIXO, 2021).
Desta forma, os estudantes são levados a buscar soluções criativas para
problemas propostos pelo educador ou que possam ocorrer durante a
montagem dos Robôs na escola.
Através das aulas de Robótica Educacional, a Cultura Maker permite
que os professores trabalhem um dos grandes desafios da educação moderna,
a interdisciplinaridade, visto que o ensino de Robótica nas escolas trabalha
conceitos de diversas matérias relacionadas a STEAM (Ciências, Tecnologia,
Artes, Engenharia e Matemática), além do ensino de conceitos próprios à
Robótica, como Mecânica, Elétrica, Eletrônica e Programação (AZAMBUJA,
2022).
A Cultura Maker também trabalha e desenvolve competências
importantes como empatia, espírito de liderança, respeito às diferenças,
gerenciamento de tempo, recursos e emoções, colaboração e principalmente
a capacidade de pensar em soluções criativas para problemas cotidianos
(ALEIXO, 2021).
Tanto essas competências, quanto o ensino de conceitos de Mecânica,
Programação e afins (capacitando os jovens a lidar com as novidades
tecnológicas em uma sociedade onde a tecnologia avança a passos largos),
são altamente requisitadas no mercado de trabalho.
31
autônomo, independente e responsável.”
Acreditamos que, mais do que formar alunos capazes de criar, resolver
problemas e usar novas tecnologias, as aulas de robótica dão o apoio
necessário para transformar as aulas de língua portuguesa em um momento
de descontração e criação, partindo da necessidade que o aluno vê o conteúdo
para a vida dele e, não apenas, como mais um conteúdo a ser estudado. Além
disso, os estudantes adquirem conhecimento, habilidades e competências
necessárias para a formação (VARGAS, 2012).
Nas aulas de Língua Portuguesa, Inglesa e/ou Espanhola, aprende-se
várias estruturas gramaticais, bem como a construção e a interpretação
textual. A base do aprendizado se dá por meio da conceituação e de atividades
de aplicação, mas nem sempre é suficiente para um bom entendimento e
aplicação na vida do aluno. Ao considerar a informação, a robótica educacional
mostra-se fundamental na construção do conhecimento, pois é a partir dela
que a mediação entre o conceito e a aplicação é feita (OLIVEIRA, 2016).
Além de ajudar no desenvolvimento e construção da gramática
estudada, as aulas de robótica propiciam o trabalho em equipe, que engloba
três dimensões: afetiva, cognitiva e comportamental, que somadas resultam
na atitude do aluno. Desse modo, podemos ressaltar que, a tecnologia em sala
de aula torna o processo educativo mais dinâmico e consistente, capacitando
o educando ao uso de uma ferramenta que viabiliza um novo agir (OLIVEIRA,
2016).
Nas aulas de Educação Física, a robótica educacional pode colaborar
com os conceitos de anatomia, simulações do funcionamento muscular e
sistemas do corpo humano. Uma outra opção é o desenvolvimento de jogos,
brincadeiras e competições com a utilização das plataformas, seja ela física
ou remota. Na Arte não é diferente, as plataformas online e as estruturas
físicas da robótica promovem uma maior interação com os conteúdos
ministrados, podendo realizar montagem de estruturas artísticas e
monumentos históricos, bem como realizar visitações 3D nesses espaços.
32
estimulando a construção de habilidades ligadas ao pensamento
computacional, raciocínio lógico, pensamento crítico, trabalho em equipe
numa perspectiva integrada e transversal (PERALTA e GUIMARÃES, 2018).
Nos trabalhos relacionados à disciplina de geografia podemos citar a
pesquisa de Sousa (2017), que utiliza kits de robótica como recurso
tecnológico nas aulas para apresentação e demonstração das fontes de
energia renováveis. Os resultados da montagem do robô movido à energia
solar demonstram acentuado engajamento dos estudantes e o forte trabalho
em equipe, identificado através do empenho coletivo na montagem do kit,
tornando as aulas mais dinâmicas e interativas; possibilitando na percepção
dos autores a construção inovadora de conceitos geográficos.
Um exemplo a ser trabalhado na disciplina de história, sociologia e
filosofia, é o desenvolvimento cronológico da robótica e como sua evolução
vem afetando a nossa sociedade e cultura. Para além disso, temos o
desenvolvimento do pensamento crítico, exploratório e elaboração de
hipóteses, o que evidencia as características da metodologia baseada em
projetos e problemas (PBL), que são temas basilares a serem trabalhados com
a robótica educacional.
33
elementos que o cercam, podendo ampliar sua liberdade, comunicação e
colaboração com a sociedade.
As tecnologias estão cada vez mais presentes em nosso dia a dia, e
através delas, o processo ensino-aprendizagem se dá de forma diferente do
que era anos atrás. Tais tecnologias são capazes de desenvolver habilidades
e auxiliar a compreensão de diversos conteúdos curriculares (ZILLI, 2004). De
acordo com Morine (2006, p.36) “O uso de diferentes linguagens, entre elas a
tecnológica, compõem o universo cultural das sociedades contemporâneas.
O empenho para que todos os grupos sociais possam fazer uso dela
contribui para uma educação e uma sociedade mais humana e justa.” Neste
contexto surge então a Robótica como ferramenta auxiliadora no processo de
ensino, proporcionando ao aluno, além de momentos de entretenimento,
momentos de aprendizado e desenvolvimento de habilidades e raciocínio
lógico. Pois os alunos são instigados a montar, desmontar, programar e
reprogramar um sistema robotizado (OLIVEIRA, 2007). Piaget e Vygotsky
(GOULART, 1997), pais da psicologia cognitiva contemporânea, propõem que
o conhecimento é construído através da capacidade intelectual ao interagir
com objetos do ambiente, e Morelato (2010) completa dizendo que a utilização
da robótica como método construtivista de ensino vem sendo bastante
explorada em todos os níveis de ensino (fundamental, médio e superior).
Ainda de acordo com os autores, empregando a lógica de forma eficaz,
o aluno pode desenvolver a sua capacidade de solucionar problemas e
aprender conceitos ligados a Matemática, Física, Química e Biologia
melhorando a qualidade do aprendizado, uma vez que coloca em prática
conceitos teóricos desenvolvidos em sala de aula.
34
7.3.2 - Robótica e o Ensino de Algoritmos
De uma forma bem lúdica, os alunos que começam o curso de robótica
são apresentados ao conceito de algoritmos, que nada mais é do que uma
sequência lógica de comandos que faça sentido e que seja utilizada para
realizar algo.
“Começamos a mostrar para eles o que é essa sequência lógica através
do exemplo da troca de uma lâmpada. Como deve ser o algoritmo da troca da
lâmpada? Primeiro eu subo na escada e depois eu pego a lâmpada nova?
Não, o correto é pegar a lâmpada nova e depois subir na escada. Dessa forma
eles visualizam de um modo prático o que consiste em essa sequência lógica
que eles precisam criar dentro da programação da robótica” (SILVA E
JAVARONI, 2018).
8 - PENSAMENTO COMPUTACIONAL
Segundo Wing (2006), é uma abordagem para solucionar problemas
baseada em conceitos da Ciência da Computação. No entanto, ensinar
Pensamento Computacional vai muito além de Ciência da Computação ou
computadores, trata-se de ensinar uma forma diferente de visualizar
problemas do dia a dia e solucioná-los da melhor forma possível por meio de
habilidades que há muito já são utilizadas em outras áreas:
De acordo com a BBC Learning (2019), o Pensamento Computacional
se organiza em quatro aptidões: a decomposição, o reconhecimento de
padrão, a abstração e o algoritmo. Dessa forma, essas quatro etapas devem
ser seguidas para atingir o objetivo de solucionar problemas, de maneira
eficiente (MEDEIROS, 2019).
35
● Decomposição: dividir um problema complexo em pequenas partes, a fim
de solucioná-las com mais facilidade;
● Reconhecimento de padrões: como a própria expressão define, ajuda na
identificação de aspectos comuns nos processos;
● Abstração: analisa elementos que têm relevância, diferenciando-os
daqueles que podem ser deixados de lado;
● Algoritmos: reúne todos os pilares já citados e envolve a criação de um
grupo de regras para a solução de problemas.
Basicamente, a ideia é reformular problemas que aparentam ser de difícil
resolução e transformá-los em algo capaz de ser compreendido, focando
assim, em cada uma de suas fases de execução, a fim de buscar as
resoluções.
Uma série de competências é obtida como resultado do processo de
desenvolvimento do pensamento computacional. As habilidades refletem
diretamente no aprendizado do indivíduo. Especialmente no caso das crianças
e jovens, o uso dessa metodologia ajuda em seu crescimento, melhorando
aspectos como o desenvolvimento cognitivo. Habilidades como:
desenvolvimento do pensamento lógico, autonomia e alfabetização digital, são
as principais habilidades adquiridas com a metodologia.
36
A linguagem de programação é como uma língua normal, um grupo de
palavras com significados. No caso da programação, a maioria das linguagens
é escrita em Inglês. Estas linguagens fazem o computador assimilar cada
comando e função de um algoritmo, depois executar cada função.
A linguagem de programação é somente como se escreve o algoritmo.
O grande problema para muitos é o que “dizer” para o computador fazer o que
é desejado. Para o aprendizado foi desenvolvido o Software Visual G, que
auxilia a programação totalmente em português. Com este software, não é
necessário pensar em linguagem de programação, pois todos os comandos
são em Português, ficando assim o foco na lógica.
Na hora de programar alguns passos são indispensáveis, como Declarar
Variáveis. Variáveis podem ser escritas por letras ou números, que
representam um valor que pode ser mudado a qualquer momento.
Cada variável tem um espaço na memória para armazenar seus dados.
Porém existem vários tipos de dados, sendo os mais comuns:
● Numérico: todo e qualquer tipo número, positivo ou negativo
● Reais: podem ser positivos ou negativos e decimais.
● Caractere: São os textos. Qualquer número pode entrar aqui, porém não
terá função matemática.
Saber lógica de programação é saber o melhor jeito de escrever um
código, para o computador interpretar corretamente. É saber se comunicar
com a máquina a partir de uma linguagem seja lá qual for.
9 - LINGUAGEM DE PROGRAMAÇÃO
É uma linguagem escrita e formal que especifica um conjunto de
instruções e regras usadas para gerar programas (software). Um software
pode ser desenvolvido para rodar em um computador, dispositivo móvel ou
em qualquer equipamento que permita sua execução (MONTEIRO, 2018).
Imaginemos o computador como uma super calculadora capaz de
37
fazer cálculos muito mais rápido que nós, mas para isso devemos dizer para
o computador o que deve ser calculado e como deve ser calculado. A função
das linguagens de programação é exatamente essa, ou seja, servir de um
meio de comunicação entre computadores e humanos, assim como os
humanos fazem com os humanos: usam da linguagem para poder conversar.
Quando programamos em uma linguagem de programação
primeiramente criamos um arquivo de texto comum contendo a lógica do que
deve ser feito, ou seja, é onde falamos ao computador, o que queremos. Este
arquivo de texto é chamado de programa, cada palavra de ordem dentro do
programa é chamada de instrução. Após criarmos o programa, este deve ser
traduzido para linguagem entendida pelo computador a partir da linguagem
que estamos utilizando. Um segundo arquivo que chamamos de executável
ou programa, será gerado e interpretado diretamente pelo computador
(MESQUITA et al., 2020).
Sugestão de vídeos:
1. Por que aprender a programar? Disponível em:
https://www.youtube.com/watch?v=90_onKsNw6g
2. Como funcionam as linguagens de programação. Disponível em:
https://www.youtube.com/watch?v=22nd99SLgNA
38
9.1 - Linguagem em Bloco
39
Exemplo de estrutura de um programa em bloco simples
Fonte: https://idocode.com.br/blog/programacao/programacao-em-blocos/
Fonte: https://idocode.com.br/blog/programacao/programacao-em-blocos/
40
9.1.1. ALGORÍTMO
O Algoritmo é uma sequência lógica de passos que levam a um
determinado objetivo. Apesar de a palavra algoritmo parecer estranha e
desconhecida, é claro que todos nós sabemos construir algoritmos. Se isto não
fosse verdade, não conseguiríamos sair de casa pela manhã, ir à escola, decidir
qual o melhor caminho para chegar a um lugar, voltar para casa, etc. Para que
tudo isto seja feito é necessário uma série de entradas do tipo: a que hora
acordar, a que horas sair de casa, qual o melhor meio de transporte, etc. Um
fator importante é que pode haver mais de um algoritmo para resolver um
problema. Por exemplo, para ir de casa até o colégio, podemos escolher diversos
meios de transportes em função do preço, conforto, rapidez, etc. A escolha será
feita em função do critério que melhor se adequar as nossas necessidades
(MESQUITA et al., 2020).
Ex: Analise a solução abaixo para o problema:
41
Os algoritmos podem ser divididos em partes:
• Início;
• Entrada: dados que devem ser lidos, ou fornecidos pelo usuário;
• Processamento: onde acontecem os cálculos em si, os dados de
entrada são manipulados a fim de se gerar uma resposta (um
resultado);
• Saída: são os resultados de seu processamento.;
• Fim.
Sugestão de vídeos:
1. Por que aprender a programar? Disponível em:
https://www.youtube.com/watch?v=90_onKsNw6g
2. Como funcionam as linguagens de programação. Disponível em:
https://www.youtube.com/watch?v=22nd99SLgNA
9.1.2 - Scratch
42
criação de objetos virtuais. Dentre as muitas aplicações possíveis, destacam-se
as animações, os jogos e as apresentações, além de muitas outras
possibilidades. É uma plataforma online, mas com possibilidade de
desenvolvimento off-line, além de ser gratuita e de código aberto (SOUZA e
COSTA, 2018).
Esta ferramenta está disponível em 40 linguagens e é utilizada em escolas
de mais de 150 países. Scratch é projetado para a faixa etária entre 8 e 16 anos,
visando a transversalidade do tema de pensamento computacional e podendo
ser aplicado para ensino STEAM (Science, technology, engineering, arts and
mathematics), Linguística, Estudos Sociais e diversas outras áreas de
conhecimento. A ferramenta Scratch é escrita em Squeak, implementação Open
Source da linguagem Smalltalk-80 (OLIVEIRA, 2022).
Atualmente o Scratch está em sua versão 3.0, que trouxe uma
reformulação na interface e algumas funcionalidades em relação à versão
anterior. Existem também as versões 2.0 e 1.4 disponíveis. Quando a utilização
é online, automaticamente a plataforma é carregada com a versão mais atual.
Se a opção for utilizar a editor off-line, é importante escolher entre as três versões
disponíveis de acordo com as configurações do seu computador ou laptop. Esta
nova versão é baseada em tecnologia web nativa (HTML 5). Os blocos antes
montados verticalmente agora serão montados horizontalmente, assim como já
ocorre no ScratchJr (PEREIRA e SOPRANO, 2019).
É possível fazer o upload das criações no editor off-line para a plataforma
online. Logo, essa plataforma proporciona, como compartilhar criações,
conversar com outros usuários, remixar suas criações, criar estúdios, etc.
Na versão Scratch 3.0, o editor possui três painéis principais que são
mostrados a seguir (OLIVEIRA, 2022).
Interface Scratch
43
Painel de Execução: localizado no topo direito da tela, o painel de
execução demonstra a cena atual. É importante salientar que programas Scratch
não são compilados. Deste modo, instruções são interpretadas e executadas no
ato. A execução inicia ao clicar na bandeira verde que fica no topo desse painel.
A execução pode ser abortada clicando no botão vermelho localizado à direita
da bandeira verde.
Painel de Sprites: está localizado abaixo do painel de execução. Os
personagens que estão executando papéis no programa Scratch são chamados
de ’sprites’ (pode ser traduzido como duende ou fada).
Painel de Programação: inclui todas as ferramentas necessárias para
codificar visualmente um programa Scratch através de ações "arrasta e larga".
Existem três tipos de edição possíveis a serem feitas através da seleção da
etiqueta correspondente no topo do painel (Code, Costumes, Sound). Code é
criado como uma mistura de blocos que representam diferentes tipos de
instruções de programação (if-then, loops, etc). Como citado anteriormente, o
usuário pode criar novos blocos combinando blocos anteriores, mas também
pode definir extensões para criar novos blocos além dos disponíveis.
44
Se por acaso mudar de ideia e quiser excluir algum bloco, basta
arrastá-lo de volta para a área de blocos ou dar um clique nele e depois
apertar a tecla delete no teclado e: pronto. O bloco foi apagado! Outra opção
é clicar no bloco com o botão direito e escolher “apagar bloco” na caixa que
aparece.
45
Observe-os:
46
exemplo, uma gravação de voz. Com os blocos adequados, é possível
aumentar ou diminuir o volume e o tom dos efeitos sonoros. Além disso, a
plataforma também tem um editor de som que, apesar de relativamente
simples, permite modificar os sons. Por exemplo, podemos fazer o upload de
uma música e editá-la para utilizar apenas um trecho específico.
47
Os três últimos blocos dessa categoria têm uma função especial. São
direcionados para lidar com os “clones”, que são as duplicatas de algum ator que
pode surgir devido a alguma condicionalidade ou mesmo à programação dos
blocos. Eles lembram os blocos de eventos, mas por uma determinação do
programador do Scratch, ficaram agrupados nessa categoria de controle.
48
exemplo: o bloco “tocando na cor? ” Necessariamente deve associar-se aos
blocos de controle para determinar o que ocorre se o ator em questão tocar na
cor escolhida por você. Alguns dos blocos de controle que têm formato
arredondado podem ser acoplados a outros blocos das categorias anteriores
para determinar um valor numérico específico, como por exemplo o ano atual.
Como já foi citado, na parte II, ao colocar a mão na massa e começar suas
criações próprias ou a partir dos exemplos que serão apresentados, você
compreenderá melhor as possibilidades que os blocos de sensores
proporcionam.
49
usuário o ano em que nasceu e, a partir da resposta, executar mais duas
ações.
50
Sugestão de material complementar:
1. SCRATCH: Guia Prático para aplicação na Educação Básica. Disponível em:
https://www.cp2.g12.br/blog/mpcp2/files/2017/02/Produto-Michel-de-Souza-
20191.pdf
2. SCRATCH PARA PROFESSORES: proposta de construção de objetos de
aprendizagem. Disponível em:
http://repositorio.ufpa.br/jspui/bitstream/2011/12987/1/Dissertacao_ScratchProfessor
esProposta.pdf
Fonte: https://www.youtube.com/watch?v=rXXgRF5j86U
51
Sugestão de vídeos:
1. https://www.youtube.com/watch?v=PdzYSrPNqPk
2. https://www.youtube.com/watch?v=EirgTTjLCdk
3. https://eventos.ifg.edu.br/steam4girls/2021/03/23/como-utilizar-o-open-
roberta-mobile/
Fonte: https://www.youtube.com/watch?v=ZuBOY0qdXHw
52
Sugestão de vídeo:
1. https://www.youtube.com/watch?v=gFaxRhia76s - Makecode EV3 -
utilização dos sensores.
2. https://www.youtube.com/watch?v=bvoAHzCFOyA&t=13s - Introdução parte
1
3. https://www.youtube.com/watch?v=QI8vFciZZGE - Introdução parte 2
Dentro da própria plataforma há diversas atividades e tutoriais disponíveis. Basta
selecionar de acordo com a demanda da aula.
9.1.5 - ArduinoBlocks
Uma vez que tenhamos definido o hardware necessário para um
projeto, o próximo passo é programar o microcontrolador da placa Arduino
para executar as tarefas necessárias para a operação desejada.
A programação da placa Arduino é normalmente feita em linguagem
C++ a partir do ambiente IDE Arduino. Para programar, devemos primeiro
conhecer essa linguagem.
ArduinoBlocks, da mesma forma, é um ambiente online que nos
permite programar Arduino (sem ter que conhecer a linguagem de
programação C ++) visualmente no estilo de programação de blocos.
ArduinoBlocks implementa blocos gerais comuns a qualquer ambiente
de programação e, por outro lado, blocos específicos para o Arduino, onde
podemos acessar dados de leitura / gravação dos pinos de entrada / saída,
acessar informações de sensores conectados, atuadores de manipulação,
periféricos como a tela LCD e muitas outras funcionalidades.
Programa de exemplo gerado automaticamente no modo "teste"
53
9.1.5.1 Lógica
Com esses blocos temos acesso às funções lógicas necessárias para
implementar em nosso programa Arduino.
As funções lógicas funcionam com valores ou expressões de
"verdadeiro" ou "falso"
• Condição / decisão: Avalia uma condição lógica, se ela for cumprida
executa o bloco "do" se não for cumprido executa o bloco "mas"
(opcional)
Exemplo de comparações:
54
Exemplo: Comparação numérica "maior ou igual a"
55
9.1.5.2 Control
As estruturas de controle nos permitem executar loops e iterações.
• Repetir: Repita (n) vezes os blocos dentro.
Exemplo:
Exemplo:
Exemplo:
56
9.1.5.3 Matemática
• Constante numérica: Permite especificar um valor numérico inteiro ou
decimal.
• Operações básicas:
Exemplo:
57
• Funções matemáticas:
Exemplo:
- Sensor de temperatura: 10ºC ... 50ºC
- Arduino leitura analógica: 0 ... 1023
Precisamos converter da faixa de 0-1023 lida para a faixa de 10ºC-
50ºC:
58
Exemplo:
Exemplo:
Exemplo
59
Exemplo de uso de "es NaN":
9.1.5.4 Texto
As funções de texto são especialmente úteis com o uso na porta serial
(console) e em outros periféricos, como telas LCD. Eles permitem que você
trabalhe com variáveis de texto de tipo ou com textos prefixados.
• Constante de texto: Define o texto estaticamente.
Exemplo:
60
Exemplo: Enviar o valor de uma variável como texto através do
console formatado para 6 e 1 casas decimais, respectivamente:
Exemplo:
61
Exemplo: Comparando variáveis de texto e tipo de texto
Exemplo:
Exemplo:
Exemplo:
62
• Substituir em texto: Substitui todas as ocorrências do texto indicado
pela nova dentro da variável de texto selecionada.
Exemplo:
63
(selecionável entre "", ";" e tab). Este bloco é especialmente útil para
gerar texto com vários valores para armazenar em um arquivo em um
cartão microSD e, em seguida, abrir com uma planilha.
Exemplo:
9.1.5.5 Variáveis
Uma variável é um buraco na memória onde o programa pode
armazenar valores numéricos. O sistema nos permite atribuir-lhes um nome
simbólico como "temperatura externa", "velocidade", "servo posição 1",
"estado", para facilitar o uso.
Existem três tipos de variáveis no ArduinoBlocks: numérico, booleano e texto.
64
Exemplo:
Exemplo:
Exemplo:
Exemplo:
Exemplo:
Exemplo:
65
9.1.5.6 Listas
As listas de dados nos permitem armazenar uma lista de valores e
acessá-los por sua posição na lista. As listas podem ser numéricas ou de
texto.
• Listas numéricas:
Podemos criar uma lista nomeando a lista e atribuindo valores iniciais
a ela.
Exemplo:
Para saber o número de itens que temos em uma lista, podemos usar
o bloco:
66
Exemplo: Posicionamento de um motor (servo) em diferentes posições
(graus) prefixados em uma lista.
• Listas de texto:
Podemos criar uma lista nomeando a lista e atribuindo valores iniciais
a ela.
Exemplo:
Para saber o número de itens que temos em uma lista, podemos usar
o bloco:
67
Exemplo: exibindo saudações em idiomas diferentes de uma lista
9.1.5.7 Funções
As funções permitem agrupar blocos de código. Isso é útil quando um
bloco de código é repetido em várias partes do programa e, assim, evitar
escrevê-lo várias vezes ou quando queremos dividir o código do nosso
programa em blocos funcionais para tornar-se um programa mais
compreensível.
• Definição de uma função: A definição consiste em criar o grupo onde
podemos inserir o código de bloco que forma a função. Devemos dar-
lhe um nome representativo que usaremos para chamar essa função e
executá-la.
68
• Chamar uma função: Permite que você chame a execução da função,
os blocos internos da função serão executados e no final a execução
será seguida onde a chamada de função foi feita.
69
Chamada do loop principal do programa:
9.1.5.8.1 Entrada/Saída
As funções genéricas de entrada/saída nos permitem ler ou gravar nos
pinos digitais e analógicos da placa Arduino.
• Ler Pino Digital: Obtém o valor do pino digital (0/1, ON/OFF,
true/false). (Lembre-se de ler um ON/1 devemos aplicar 5v na entrada
digital e 0v para ler um OFF/0)
70
Exemplo:
Exemplo:
Versão equivalente:
71
Exemplo:
72
bloquear por um longo tempo (em nenhum caso use blocos "esperar",
...)
• Leitura/Gravação em E/S digital externa (extensor I2C): Se você
precisar de mais pinos de E/S digitais, podemos usar um extensor com
conexão I2C para expandir o número de E/S digitais de 8 para 8 (até
64).
Tempo
As funções de tempo ou atraso nos permitem pausar e obter
informações sobre o tempo decorrido dentro do microcontrolador.
• Esperar: Pausa (bloqueia a execução do programa) até a execução
do próximo bloco.
73
Exemplo: Levou 1 segundo ligado, 1 segundo fora
74
Exemplo: a ativação da entrada do pino 6 conclui a execução.
Programa equivalente:
75
Se no programa usamos blocos como GPS devemos evitar os blocos
de "espera" se quisermos que o programa funcione corretamente. Ver nos
blocos incompatíveis com blocos de "espera".
Exemplo: Tarefas simultâneas com períodos de execução diferentes.
76
Exemplo: Jogo em que eu tenho que pressionar um botão
periodicamente sem deixá-lo passar nunca mais de 10s entre as teclas
pressionadas, caso contrário, um LED acende indicando que perdemos.
9.1.5.9 Multitarefa
ArduinoBlocks nos permite usar uma camada para implementar um
sistema multitarefa avançado baseado em FreeRTOS. Este sistema permite
criar tarefas que serão executadas em paralelo (virtualmente). Em
microcontroladores modestos como o Arduino UNO, Nano ou mesmo MEGA
multitarefa com FreeRTOS é bastante limitado e consome grande parte dos
recursos do nosso Arduino, em caso de necessidade de um sistema
multitarefa mais poderoso podemos optar por usá-lo em placas baseadas em
ESP8266 ou ESP32 com muito mais energia e recursos (especialmente o
ESP32 com dual core e grande poder de processamento e memória interna)
9.1.5.10 Blocos
Com todas essas informações, passamos a ver os blocos disponíveis
para colocar tudo isso em movimento e, em seguida, alguns exemplos:
77
78
Exemplo 1: Piscando vários LEDs em velocidades diferentes
79
Exemplo 3: Melodia RTTTL + Tela LCD + Sensor de Luz LDR
Tarefa 1: Exibe o valor do LDR no LCD e o nome da música
reproduzida.
Tarefa 2: Reproduza músicas diferentes e atualize o nome na variável.
9.1.5.11 Bluetooth
A comunicação com o módulo Bluetooth HC-06 é exatamente a
mesma que a da porta serial, na verdade, o que o módulo Bluetooth faz é
encapsular todas as informações seriais através de uma conexão serial virtual
através de um perfil Bluetooth de emulação de porta serial.
Podemos simular uma conexão serial com um dispositivo móvel (com
Bluetooth compatível com o perfil da porta serial), um PC ou outro módulo
Bluetooth semelhante em outro dispositivo.
O Arduino UNO possui apenas uma porta serial implementada em seu
hardware, de modo a não utilizar o módulo Bluetooth nos pinos 0 e 1
(correspondentes à porta serial do hardware) e interferir na comunicação
serial ou na programação do dispositivo (como outros ambientes fazem) os
80
blocos Bluetooth implementam uma porta serial de software que funciona
exatamente da mesma forma e pode ser configurada em qualquer outro pino
digital tanto para RX (receber) quanto TX (transmitir).
Exemplo de conexão do módulo Bluetooth HC-06
BlueTerm Android
81
Enviar Byte: Envia um valor numérico como um byte (8 bits). Portanto,
o valor deve estar entre 0 e 255.
82
9.1.5.12 Bluetooth HID 3.3.4.1 (ESP32 / ESP32 STEAMakers)
Nas placas baseadas em microcontroladores ESP32 temos a opção
de converter nosso dispositivo em um teclado ou mouse Bluetooth
(dispositivo HID: Dispositivo Interface Humano).
Desta forma, podemos emparelhar nossa placa com qualquer celular,
tablet, PC ou dispositivo compatível com o Bluetooth HID e enviar
simulações de pressionamentos de teclas ou movimentos do mouse, o que
nos permite criar interfaces para jogos, interfaces de controle
personalizadas e adaptadas ou enviar diretamente dados do sensor como
se estivéssemos digitando-os no dispositivo.
9.1.5.13 Sensores
No mercado existem inúmeros sensores e módulos para Arduino,
embora com os blocos genéricos (entrada / saída) podemos ler as
informações da maioria dos sensores digitais e analógicos
ArduinoBlocks implementa blocos específicos para os sensores mais comuns
no mercado. Esses blocos às vezes se limitam à leitura de informações digitais
ou analógicas, dependendo do tipo de sensor, e em outros casos eles
adaptam os dados lidos para ajustá-los à realidade (por exemplo, ao ler um
sensor de temperatura adapta a leitura a graus Celsius com um cálculo
interno).
ArduinoBlocks incorpora blocos para a maioria dos sensores
modulares que podemos encontrar no mercado, alguns muito populares como
sensores Keyestudio e similares.
ArduinoBlocks é uma plataforma online em contínua evolução.
83
Sensor potenciômetro: Permite obter a posição do controle rotativo.
Ângulo de operação de cerca de 270º. Varia o valor da tensão aplicada à
entrada dependendo da posição de sua resistência variável interna.
Tipo:
Fixo: A0-A5 Valor: 0-100 (%) / 0..1023
Analógico
84
Conexão:
Conexão:
Sem pressionar "on" / pressionado:
Sem pressionar "off" / pressionado: "on"
"off"
85
que eu trabalho com lógica invertida:
86
Exemplo: Exiba o valor de temperatura e umidade no console a cada
5 segundos. Sensor conectado ao pino 10.
87
Exemplo: Exibindo a temperatura pelo console serial a cada 5
segundos. Sensor conectado ao pino A3:
✓ Tipo: Dados
✓ Gatilho do pino (transmissão): 2-13/A0-A5
✓ Eco do pino (recepção): 2-13/A0-A5
✓ Valor: 2 – 400 cm
88
Exemplo: Ativação do LED no pino 13 quando detectado um objeto
entre 10 e 80 cm de distância.
89
Exemplo - Detector de alto nível sonoro. Sensor no pino A0
9.1.6 Tinkercad
Fonte:https://multilogica-shop.com/blog/conhe%C3%A7a-o-tinkercad
90
9.1.7 Linguagem C/C++
91
● A linguagem não tem privilégios para alguns grupos de programadores, os
comandos são feitos para todas as especialidades de programadores
● Não é necessário um ambiente de desenvolvimento muito potente para o
desenvolvimento de C++.
Alguns dos mais conhecidos programas são feitos em C++, ou parte
dos seus códigos são nessa linguagem. Alguns deles são: Adobe Photoshop,
MySQL, Mozilla Firefox, Internet Explorer, Microsoft Windows, entre vários
outros.
A linguagem C é mais complicada, e tem de se ter mais atenção a erros de
lógica, porém é mais fácil corrigir os erros que em C++, pois muitas das
sintaxes do C++ são sutis, e quando se erra alguma coisa mínima, o código
simplesmente não funciona, ou em caso de erros menores, o código passa a
apresentar problemas muito difíceis de identificar.
Fonte:http://www.bitdaeducacao.com.br/2018/05/aula-11-c-estrutura-de-condicao-if-
else.html
92
10.1 - Alimentação da placa Arduíno
A placa pode ser alimentada pela conexão USB ou por uma fonte de
alimentação externa, conforme exibido na figura abaixo:
Fonte: https://www.embarcados.com.br/arduino-uno/
Fonte: https://www.embarcados.com.br/arduino-uno/
93
IOREF – Fornece uma tensão de referência para que Shields possam
selecionar o tipo de interface apropriada, dessa forma Shields que funcionam
com a placas Arduíno que são alimentadas com 3,3V. podem se adaptar para
ser utilizados em 5V. e vice-versa.
RESET – pino conectado a pino de RESET do microcontrolador. Pode ser
utilizado para um reset externo da placa Arduíno.
3,3 V. – Fornece tensão de 3,3V para alimentação de Shields e módulos
externos. Corrente máxima de 50 mA.
5 V – Fornece tensão de 5V para alimentação de Shields e circuitos externos.
GND – pino negativo (GROUND)
VIN – pino para alimentar a placa através de Shields ou bateria externa.
Quando a placa é alimentada através do conector Jack, a tensão da fonte
estará nesse pino.
Fonte: https://www.embarcados.com.br/arduino-uno/
94
serial desses microcontroladores. Outro ponto interessante que facilita o uso
da placa Arduíno é a conexão do pino 13 do ATMEGA16U2 ao circuito de
RESET do ATMEGA328, possibilitando a entrada no modo bootloader
automaticamente quando é pressionado o botão Upload na IDE. Essa
característica não acontecia nas primeiras placas Arduíno, onde era
necessário pressionar o botão de RESET antes de fazer o Upload na IDE
(SOUZA, 2013).
Fonte: https://www.embarcados.com.br/arduino-uno/
95
Figura – Pinos de entrada e saída no Arduíno UNO R3
Fonte: https://www.embarcados.com.br/arduino-uno/
96
As grandezas digitais são aquelas que não variam continuamente no
tempo, mas sim em saltos entre valores bem definidos. Um exemplo são os
relógios digitais: apesar do tempo em si variar continuamente, o visor do
relógio mostra o tempo em saltos de um em um segundo. Um relógio desse
tipo nunca mostrará 12,5 segundos, pois, para ele, só existem 12 e 13
segundos. Qualquer valor intermediário não está definido (ARDUINO, 2019).
Já as grandezas analógicas são aquelas que, ao contrário das
grandezas digitais, variam continuamente dentro de uma faixa de valores. O
velocímetro de um carro, por exemplo, pode ser considerado analógico, pois
o ponteiro gira continuamente conforme o automóvel acelera ou trava. Se o
ponteiro girasse em saltos, o velocímetro seria considerado digital (ARDUINO,
2019).
Os circuitos e equipamentos elétricos ditos digitais trabalham com
apenas dois valores de tensão definidos:
● Um nível lógico alto, que no caso do Arduíno é 5V;
● Um nível lógico baixo, que no caso do Arduíno é 0V.
As placas Arduíno possuem uma nítida divisão entre os pinos de
entrada e saída digitais/analógicos, porém em algumas placas como o Arduíno
Uno qualquer pino pode ser utilizado como entrada ou saída digital, basta
configurá-lo (ARDUINO, 2019).
97
mesmo não estiver ligado a nada. As figuras mostram três ligações de um
botão a um pino do microcontrolador configurado como entrada digital. Para
cada caso temos:
Figura abaixo: O estado do pino não está bem definido fazendo com que
este esteja suscetível a ruído.
Figura - sem definição do pino
Fonte: https://www.arduinoportugal.pt/grandezas-digitais-e-analogicas-e-pwm/
Fonte: https://www.arduinoportugal.pt/grandezas-digitais-e-analogicas-e-pwm/
Fonte: https://www.arduinoportugal.pt/grandezas-digitais-e-analogicas-e-
pwm/
98
Os microcontroladores existentes nas placas Arduíno possuem
resistências de pull-up construídos internamente que podem ser acionados
pelo software.
99
O resultado deve ser inteiro para que nosso conversor consiga
representá-lo, logo o valor 665,6 será escolhido por ser o degrau mais próximo.
Esse valor representa a tensão 3,251953125 inserindo um erro de
0,001953125 em nossa medida devido a limitação de nossa resolução.
Saídas PWM
O PWM (Pulse Width Modulation – Modulação por Largura de Pulso)
é uma técnica para obter resultados analógicos por meios digitais. Essa
técnica consiste na geração de uma onda quadrada em uma frequência muita
alta em que pode ser controlada a percentagem do tempo em que a onda
permanece em nível lógico alto.
Esse tempo é chamado de Duty Cycle e sua alteração provoca
mudança no valor médio da onda, indo desde 0V (0% de Duty Cycle) a 5V
(100% de Duty Cycle) no caso do Arduíno.
Fonte: https://www.arduinoportugal.pt/grandezas-digitais-e-analogicas-e-pwm/
Fonte: https://www.arduinoportugal.pt/grandezas-digitais-e-analogicas-e-pwm/
100
O valor do Duty Cycle usado pelo Arduíno é um inteiro armazenado em
8 bits, de forma que seu valor vai de 0 (0%) a 255 (100%).
Quem manipula a placa e projeta o circuito que será conectado aos
seus I/Os deve ter muito cuidado pois, entre os pinos do microcontrolador e a
barra de pinos, não há nenhum resistor, que limite a corrente, além disso,
dependendo do local onde está trabalhando pode-se provocar curto circuito
nos pinos já que a placa não possui isolação na sua parte inferior, como
mostrada na figura a seguir (ARDUINOPORTUGAL, 2017).
Figura 11 – Parte traseira do Arduino UNO – Sem isolamento
Fonte: https://www.embarcados.com.br/arduino-uno/
101
10.6 - Resumo da placa Arduíno UNO
Figura – Resumo de recursos da Arduíno
Fonte: https://www.embarcados.com.br/arduino-uno/
11.1 - Void
O “void” declara uma função, tal como dissemos acima o código tem
que obrigatoriamente ter o “setup” e o “loop”.
102
11.2 - PinMode
O “pinMode” declara o modo do pin em que vamos ligar os
componentes, sendo que só é necessário declarar os digitais. Os analógicos só
têm de ser declarados quando é para funcionarem como saída. Sendo que
dentro de parênteses temos, em primeiro lugar o número do pin, e a seguir a
vírgula como queremos que a porta funcione (entrada, “INPUT” ou saída
“OUTPUT”).
Figura - Imagem do Arduíno IDE
Fonte:https://support.microsoft.com/pt-br/office/carregando-c%C3%B3digo-de-quadro-e-
arduino-ide-a9723765-1314-49e0-a69b-bb5c3e1f628d
Sugestão de atividade:
1. http://arduino.labdegaragem.com/Guia_preview/basicos.html -
Experimentos básicos com Arduíno
2. https://www.feg.unesp.br/Home/Pesquisa23/inovee/oficinatecnologica/cader
no-de-atividades-1-3-versaofinal.compressed.pdf - Caderno de experimentações
básicas.
3. https://www.tinkercad.com/things/5M6aYXIOhUm - Atividade utilizando o
tinkercad.
103
e mais memória, nele foi adicionado pinos SDA e SCL que estão ao lado do
AREF e, além disso, existem dois pinos que são colocados perto do pino
RESET.
Figura - Arduíno UNO R3
Fonte: http://www.fvml.com.br/2018/12/tipos-de-arduinos-quais-sao-as.html
104
Figura -Arduino Mega R3
Fonte: http://www.fvml.com.br/2018/12/tipos-de-arduinos-quais-sao-as.html
105
12.4 - Arduíno Nano
A placa Arduíno Nano é uma placa que utiliza o microcontrolador
ATmega328, projetada para se adaptar em pequenos espaços de montagens,
sua estrutura é a mesma baseada no ATmega32, tem comunicação Micro
USB integrada, composta por 14 pinos digitais IO, sendo 8 pinos para entradas
com 10 bits de resolução.
Figura - Arduino Nano 3.0
Fonte: http://www.fvml.com.br/2018/12/tipos-de-arduinos-quais-sao-as.html
106
Figura - Arduino Pro Mini
Fonte: http://www.fvml.com.br/2018/12/tipos-de-arduinos-quais-sao-as.html
Fonte: http://www.fvml.com.br/2018/12/tipos-de-arduinos-quais-sao-as.html
107
Esta placa consiste em um Atmega328 com o boot-loader Arduino e
para mantê-lo como um pequeno componente externo mínimo são
necessários. A fonte de alimentação desta placa é de 2 a 5 V e oferece
grandes orifícios de fixação que facilitam a costura e a conexão. Cada pino é
conectado a terminais positivos e negativos e para controlar os dispositivos de
entrada e saída, como luz, motor e interruptor.
Fonte: http://www.fvml.com.br/2018/12/tipos-de-arduinos-quais-sao-as.htm
14 - MOTORES ARDUINO
14.1 - MOTOR DE CORRENTE CONTÍNUA (motor DC)
O princípio básico de funcionamento do motor CC é o seguinte:
“Sempre que um condutor conduz uma corrente elétrica é colocado em um
campo magnético, este condutor experimenta uma força mecânica gerando o
torque e o giro do eixo do motor”.
Os motores são separados pela sua potência, tensão de
funcionamento, rotação e tamanho. Por conta da sua alta compatibilidade o
Arduíno pode utilizar quase todas as especificações de motores de corrente
108
contínua e alternada, os motores mais utilizados são de corrente contínua por
conta do custo benefício.
Figura - imagem do motor para Arduino
Fonte: https://howtomechatronics.com/tutorials/arduino
Fonte: https://howtomechatronics.com/tutorials/arduino
109
15 - SENSORES ARDUINO
15.1 - Sensor de Distância Ultrassônico HC-SR04
O Sensor ultrassônico HC-SR04 é capaz de medir distâncias de 2cm
a 4m com ótima precisão e baixo preço. Este módulo possui um circuito pronto
com emissor e receptor acoplados e 4 pinos (VCC, Trigger, ECHO, GND) para
medição.
Figura - imagem sensor ultrassônico para Arduino
Fonte:https://howtomechatronics.com/tutorials/arduino
Fonte:https://howtomechatronics.com/tutorials/arduino
110
15.3 - Sensor de Obstáculo Infravermelho IR
O sensor de obstáculo é um circuito composto por um emissor e um
receptor IR, mais o CI comparador LM393, que facilita sua conexão com
Arduino, PIC e Raspberry Pi, visto que sua tensão é de 3,3-5V.
Figura - imagem do sensor infravermelho para Arduino
Fonte:https://howtomechatronics.com/tutorials/Arduino
Fonte: https://howtomechatronics.com/tutorials/Arduino
111
16. CÓDIGO DE CORES PARA RESISTORES
O código de cores é a convenção utilizada para identificação de
resistores de uso geral. Compreende as séries E6, E12 e E24 da norma
internacional IEC.
112
17 EXPERIÊNCIA COM KIT ARDUÍNO E PRÁTICA LABORATORIAL
17. 1 Prática experimental 1 – Projeto led
Objetivo: fazer um botão acender um led quando pressionado e,
quando solto, o led deverá apagar.
Componentes: 1 Led Vermelho, 1 Resistor de 300k, 1 PushButton, 1
Resistor de 10k e cabos diversos.
Procedimento: 1. Colocar os componentes como está sendo
mostrado na imagem abaixo, bem como suas ligações:
Código:
int ledPin = 13; //led no pino 13
int Botao = 2; //botão no pino 2
int EstadoBotao = 0; //Variável para ler o status do PushButton
void setup(){
pinMode(ledPin, OUTPUT); //Pino do led será saída
pinMode(Botao, INPUT); //Pino com botão será entrada
}
void loop(){
EstadoBotao = digitalRead(Botao); /*novo estado do botão vai ser igual ao que Arduino
ler no pino onde está o botão.
Poderá ser ALTO (HIGH) se o botão estiver
Pressionado, ou BAIXO (LOW), se o botão
estiver solto */
if (EstadoBotao == HIGH){ //Se botão estiver pressionado (HIGH)
digitalWrite(ledPin, HIGH);// acende o led do pino 13.
}
else{ //se não estiver pressionado
digitalWrite(ledPin, LOW); //deixa o led do pino 13 apagado
}
}
113
2. Após compilar o código e fazer o upload na sua placa, você já deve
poder apertar o botão e o led da protoboard acender e, quando soltar, o led deve
apagar.
OBS: Recomenda-se que você tente entender passo a passo o
programa anterior, para não ter problemas quando os códigos começarem a ficar
mais complexos.
Código:
int ledPin1 = 13;
int ledPin2 = 12;
int ledPin3 = 11;
int Botao1 = 2;
int Botao2 = 3;
int Botao3 = 4;
int EstadoBotao1 = 0;
int EstadoBotao2 = 0;
int EstadoBotao3 = 0;
void setup(){
pinMode(ledPin1, OUTPUT);
pinMode(Botao1, INPUT);
pinMode(ledPin2, OUTPUT);
pinMode(Botao2, INPUT);
pinMode(ledPin3, OUTPUT);
114
pinMode(Botao3, INPUT);
}
void loop(){
EstadoBotao1 = digitalRead(Botao1);
EstadoBotao2 = digitalRead(Botao2);
EstadoBotao3 = digitalRead(Botao3);
if (EstadoBotao1 == HIGH){
digitalWrite(ledPin1, HIGH);
}
else{
digitalWrite(ledPin1, LOW);
}
if (EstadoBotao2 == HIGH){
digitalWrite(ledPin2, HIGH);
}
else{
digitalWrite(ledPin2, LOW);
}
if (EstadoBotao3 == HIGH){
digitalWrite(ledPin3, HIGH);
}
else{
digitalWrite(ledPin3, LOW);
}
}
115
componentes metálicos internos vibram da frequência da fonte, produzindo
assim um som. Para este experimento, também poderá ser utilizado um pequeno
alto-falante (o som sai mais puro e a diferença entre as notas musicais é mais
nítida). O Buzzer tem polaridade.
Retirando-se o adesivo superior do Buzzer poderá ser visto um sinal de
positivo (+), o qual mostra onde está o pino positivo do componente. Sempre
ligue este a uma saída digital do Arduino e o outro em GND. Para fazer a
montagem, o modelo a seguir pode ser seguido:
Código:
const int ledPin1 = 13;
const int ledPin2 = 12;
const int ledPin3 = 11;
const int Botao1 = 2;
const int Botao2 = 3;
const int Botao3 = 4;
const int Buzzer = 10; //O Buzzer está colocado no pino 10
int EstadoBotao1 = 0;
int EstadoBotao2 = 0;
int EstadoBotao3 = 0;
int Tom = 0; //Variável para armazenar a nota musical
void setup() {
pinMode(Buzzer, OUTPUT);
pinMode(ledPin1, OUTPUT);
pinMode(Botao1, INPUT);
pinMode(ledPin2, OUTPUT);
pinMode(Botao2, INPUT);
pinMode(ledPin3, OUTPUT);
pinMode(Botao3, INPUT);
}
void loop(){
EstadoBotao1 = digitalRead(Botao1);
EstadoBotao2 = digitalRead(Botao2);
116
EstadoBotao3 = digitalRead(Botao3);
if(EstadoBotao1 && !EstadoBotao2 && !EstadoBotao3) {
Tom = 100;
digitalWrite(ledPin1, HIGH);
}
if(EstadoBotao2 && !EstadoBotao1 && !EstadoBotao3) {
Tom = 200;
digitalWrite(ledPin2, HIGH);
}
if(EstadoBotao3 && !EstadoBotao2 && !EstadoBotao1) {
Tom = 500;
digitalWrite(ledPin3, HIGH);
}
while(Tom > 0) { //enquanto Tom for maior que zero faça o que está descrito baixo:
digitalWrite(Buzzer, HIGH); // Liga Buzzer
delayMicroseconds(Tom); // Espera o tempo proporcional ao comprimento de onda da nota
musical em milissegundos
digitalWrite(Buzzer, LOW); // Desliga Buzzer
delayMicroseconds(Tom); // Espera o tempo proporcional ao comprimento de onda da nota
musical em milissegundos
Tom = 0; // Resetar o Tom para zero, para sair do loop while e não tocar o som
constantemente
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
}
}
117
Código:
const int PinoSensor = 0;//pino Analógico de Entrada 0
int ValorSensor = 0;
void setup(){
Serial.begin(9600);
}
void loop(){
ValorSensor = analogRead(PinoSensor);
Serial.print("Valor do Sensor = ");
Serial.println(ValorSensor);
delay(500);
}
118
Código:
const int PinoSensor = 0;
const int Buzzer = 6;
int ValorSensor = 0;
void setup(){
pinMode(Buzzer, OUTPUT);
Serial.begin(9600);
}
void loop(){
ValorSensor = analogRead(PinoSensor);
Serial.print("Valor do Sensor = ");
Serial.println(ValorSensor);
if (ValorSensor > 912){
digitalWrite(Buzzer, HIGH);
}
else{
digitalWrite(Buzzer, LOW);
}
}
119
OBS: Implícito neste experimento está o conceito de um bargraf, que
nada mais é do que uma barra de leds que acendem conforme algum parâmetro.
Bargrafs muito conhecidos são os de equipamentos de som. Quando o som está
alto, ou com os graves altos, as luzes acendem do verde até o vermelho, como
na figura a seguir:
Código:
const int PinoSensor = 0;
const int Buzzer = 6;
const int led1 = 8;
const int led2 = 9;
const int led3 = 10;
const int led4 = 11;
const int led5 = 12;
const int led6 = 13;
int ValorSensor = 0;
void setup(){
pinMode(Buzzer, OUTPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
Serial.begin(9600);
}
void loop(){
ValorSensor = analogRead(PinoSensor);
120
Serial.print("Valor do Sensor = ");
Serial.println(ValorSensor);
if (ValorSensor > 0){
digitalWrite(led1, HIGH);
}
else{
digitalWrite(led1, LOW);
}
if (ValorSensor > 915){
digitalWrite(led2, HIGH);
}
else{
digitalWrite(led2, LOW);
}
if (ValorSensor > 920){
digitalWrite(led3, HIGH);
}
else{
digitalWrite(led3, LOW);
}
if (ValorSensor > 930){
digitalWrite(led4, HIGH);
}
else{
digitalWrite(led4, LOW);
}
if (ValorSensor > 935){
digitalWrite(led5, HIGH);
}
else{
digitalWrite(led5, LOW);
}
if (ValorSensor > 940){
digitalWrite(led6, HIGH);
digitalWrite(Buzzer, HIGH);
}
else{
digitalWrite(led6, LOW);
digitalWrite(Buzzer, LOW);
}
}
121
17.7 Prática experimental 7 - Potenciômetro
Objetivo: Fazer um led piscar de forma mais rápida ou mais lenta
conforme os parâmetros de um potenciômetro.
Componentes: 1 Potenciômetro de 10k, 1 Led de Alto Brilho, 01
Resistor de 300k e cabos diversos.
Procedimento: Conforme o valor do potenciômetro é alterado, o led
pisca de forma mais rápida ou mais lenta. Veja a figura a seguir:
Código:
const int PinoPotenciometro = 0;
const int Led = 13;
int ValorPot = 0;
void setup() {
pinMode(Led, OUTPUT);
}
void loop() {
ValorPot = analogRead(PinoPotenciometro);
digitalWrite(Led, HIGH);
delay(ValorPot);
digitalWrite(Led, LOW);
delay(ValorPot);
}
122
Depois tem-se um led no pino13 que também será constante:
const int Led = 13;
Então declara-se uma variável do tipo inteira para armazenar os valores
do potenciômetro. Esta variável irá de 0 a 1023, pois estes são os valores que a
entrada analógica pode variar por termos uma resolução de 10 bits.
Declara-se o pino do Led como saída no setup, como já feito na maioria
dos programas e então vem o loop principal:
void loop() {
ValorPot = analogRead(PinoPotenciometro);
digitalWrite(Led, HIGH);
delay(ValorPot);
digitalWrite(Led, LOW);
delay(ValorPot);
}
Primeiramente, assimila-se o valor lido no Pino do Potenciômetro à
variável ValorPot, ou seja, ao valor do potenciômetro. Então liga-se o Led.
Espera-se um tempo, que varia de 0 a 1023 porque são esses valores que o
potenciômetro pode ter, e desliga-se o led. Novamente espera-se o tempo e
volta-se para a primeira instrução do loop para fazer a nova leitura de uma nova
posição do potenciômetro.
123
sendo que neste tempo de emissão e recebimento do sinal o pino ECHO ficará
em nível alto. Logo o cálculo da distância pode ser feito de acordo com o tempo
em que o pino ECHO permaneceu em nível alto após o pino Trigger ter sido
colocado em nível alto.
4. Alimentando o Circuito: o primeiro passo para montar o circuito é
alimentar a Protoboard com os pinos 5V e GND do Arduino.
5. LEDs e Resistores:
Agora, coloca-se os LEDs e os Resistores na Protoboard.
6. Lembrando:
A maior perna do LED é o positivo e a menor o negativo!!
OBS: Não faz diferença se conectar os resistores no positivo ou
negativo dos LEDs, caso conectado no negativo, basta ligar o positivo do
LED no 5V, o resistor no negativo e na porta digital.
7. Conectando os LEDs:
Conectar os Resistores que estão no positivo dos LEDs nas portas
digitais do Arduino.
124
Assim temos:
LED Verde: Porta 2
LED Amarelo: Porta 3
LED Vermelho: Porta 4
8. Conectando os LEDs:
Conectar os Resistores que estão no positivo dos LEDs nas portas digitais
do Arduino.
9. Alimentação Ultrassônico:
Conectar o Sensor Ultrassônico na Protoboard e ligar o pino VCC nos 5V e
o pino GND no negativo.
125
11. Conectando Buzzer:
Adicionar o Buzzer ao circuito para se ter efeitos sonoros.
Código:
#include <Ultrasonic.h>
#define TRIGGER_PIN 12
#define ECHO_PIN 13
void setup()
{
Serial.begin(9600);
}
void loop()
{
float cmMsec, inMsec;
long microsec = ultrasonic.timing();
cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);
inMsec = ultrasonic.convert(microsec, Ultrasonic::IN);
Serial.print("MS: ");
Serial.print(microsec);
Serial.print(", CM: ");
Serial.print(cmMsec);
Serial.print(", IN: ");
Serial.println(inMsec);
126
delay(1000);
}
Incluindo Biblioteca
Para programar o sensor, é necessário adicionar-se a biblioteca
“Ultrasonic.h”. Pode ser baixada pelo link. http://portaldoarduino.com.br/wp-
content/uploads/2019/03/Ultrasonic.zip
127
// declarando os LEDs e o Buzzer e suas portas onde estão conectados
int ledVerde = 2;
int ledAmarelo = 3;
int ledVermelho =4;
int buzzer = 5;
// Variáveis de controle
long microsec = 0;
float distanciaCM = 0;
void setup() {
pinMode(ledVerde,OUTPUT);
pinMode(ledAmarelo,OUTPUT);
pinMode(ledVermelho,OUTPUT);
pinMode(buzzer,OUTPUT);
}
void loop() {
// lendo o sensor
microsec = ultrasonic.timing();
ledDistancia();
// unidade de medida
Serial.println(" cm");
delay(500);
}
128
void ledDistancia() {
129
ligados em comum ao Arduino. O display também necessita de um
potenciômetro de 10k para ajuste de contraste conforme demonstrado acima.
2. O teclado matricial deve ser conectado como demonstra a ilustração
(fios de cor laranja), como se trata de apenas contatos, o teclado não necessita
de alimentação.
3. O sensor de vibração é alimentado por 5V e o pino que envia o
sinal D0 é conectado na entrada analógica A3 do Arduino. O Buzzer e LED são
ligados respectivamente no pino 9 e A4, a saída de sinal para o Buzzer é
modulada por PWM, por isso o pino 9 foi o escolhido por ser um pino com saída
PWM no Arduino UNO.
4. Quando necessária a senha, o programa mapeará os botões
pressionados no teclado e apresentará ao usuário através do display LCD. Para
este protótipo o alarme sonoro é realizado por um Buzzer, mas para cada
aplicação este dispositivo sonoro pode ser alterado, adaptando buzinas ou
sirenes (nestes casos realizando os acionamentos por relé).
A montagem do protótipo pode ser observada pela figura abaixo:
130
byte pinosColunas[] = {A0,A5,12,13}; // cria um vetor de 4 colunas
char senha[4] = {'5','9','3','8'}; // cria um vetor char de nome senha de
4 colunas com caracteres definidos
char vetor[4]; // cria um vetor char para armazenar os digitos do teclado
int i; // cria uma variavel de nome i
char teclas[4][4] = {{'1','2','3','A'}, // matriz 4x4 com caracteres
definidos
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}};
Keypad teclado1 = Keypad( makeKeymap(teclas), pinosLinhas, pinosColunas,
4, 4); // cria a variavel de nome teclado1 para armazenar os caracteres
LiquidCrystal lcd ( 7, 6, 5, 4, 3, 2); // define os pinos para
comunicação com o display lcd
void setup() {
pinMode(buzzer, OUTPUT); // define o pino buzzer como saída
pinMode(sinal_sensor,INPUT); // define o pino de sinal do sensor de
vibrações como entrada
pinMode(led_alarme, OUTPUT); // define o pino do led como saída
pinMode(button_desativador,INPUT); //define o desativador alternativo
como entrada
lcd.begin(16,2); // inicia a comunicação com o display lcd
lcd.setCursor(0,0); lcd.print("ALARME");} // escreve ALARME no display na
posição (0,0)
void loop() {
lcd.setCursor(8,0);
lcd.print("OFF"); // indica que o alarme está desabiitado no display
digitalWrite (led_alarme ,LOW); // deixa o led de alarme desligado
char tecla_pressionada = teclado1.getKey(); // verifica se alguma tecla
foi pressionada
if (tecla_pressionada == '#' ) { // se # for pressionado executa o
codigo abaixo
lcd.setCursor(8,0); lcd.print("ON "); // indica no display que o alarme
está ativo
digitalWrite (buzzer, HIGH); delay(50); // sonorização
while ( tecla_pressionada != '*') { // enquanto * não for
pressionado o programa executa no laço abaixo
131
leitura_sensor = digitalRead(sinal_sensor); // realiza a leitura de sinal
advindo do sensor de vibrações
tecla_pressionada = teclado1.getKey(); // verifica se alguma tecla foi
pressionada
//******************************************ALARME
if (leitura_sensor == HIGH) { // se receber sinais do sensor de
vibração, executa o codigo abaixo
analogWrite (buzzer, 130); delay(100); // sonorizaão alarme inicial
analogWrite (buzzer, 150); delay(200); // sonorização alarme inicial
analogWrite (buzzer, 255); delay(100); // sonorização alarme inicial
analogWrite (buzzer, 100); delay(300); // sonorização alarme inicial
while ( desliga_alarme != HIGH){ // enquanto o botão de
desativador alternativo não for ativo, executa o laço abaixo
desliga_alarme = digitalRead(button_desativador); // realiza a leitura do
botao alternativo
digitalWrite (led_alarme ,HIGH); // liga o led rgb de alarme
digitalWrite (buzzer, HIGH); delay(100); // Alarme
digitalWrite (buzzer, LOW); delay(100); // Alarme
tecla_pressionada = teclado1.getKey(); // verifica se alguma tecla foi
pressionada
//******************************************SENHA
if (tecla_pressionada){ // se alguma tecla for pressionada executa
abaixo
vetor[i] = tecla_pressionada; // armazena no vetor[4] as teclas
pressionadas
lcd.setCursor(i,1); lcd.print(tecla_pressionada); // indica no display a
tecla pressionada
i++; // contador para definir que a senha seja de 4 digitos
if(i==4){ // se o ultimo digito da senha for pressionado, executa
abaixo
if(vetor[0] == senha[0] &&
vetor[1] == senha[1] &&
vetor[2] == senha[2] &&
vetor[3] == senha[3]){ // compara o vetor das teclas
pressionadas com a senha pré definida
lcd.setCursor(7,1); lcd.print("OK"); delay(1000); // indica que a senha
digitada foi correta
lcd.setCursor(0,1); lcd.print(" "); // limpa o display
132
lcd.setCursor(6,0); lcd.print(" "); // limpa o display
i=0; // zera o contador
return 0;} // desativa o alarme retornando o codigo para o inicio
else { // se a senha não for correta, executa abaixo
lcd.setCursor(0,1); lcd.print("SENHA INVALIDA "); digitalWrite (buzzer,
HIGH); delay(1000); // indica no display que a senha digitada não é
correta
lcd.setCursor(0,1); lcd.print(" "); //limpa o display
i=0;} //zera o contador
}}}}
//******************************************FIM DO ALARME
else { analogWrite(buzzer,0); // caso o alarme não estiver ativo, garante
o buzzer desativado
}}}}
Mergulhando no projeto - Software
5. Inicialmente instala-se a biblioteca KEYPAD, que pode ser encontrada
facilmente na web para download. Já no sketch incluímos a biblioteca
posteriormente instalada e do LCD.
6. Logo após, são nomeados os pinos do LED, Buzzer, entrada de sinal
e botão desativador. Variáveis do tipo ‘’int’’ são criadas para controle e
recebimento de dados do sensor e vetores ‘’Byte’’ para mapeamento dos pinos
do teclado byte pinosLinhas[], byte pinosColunas[]. Um vetor ‘’Char’’ criado para
pré-definir a senha e outro para armazenar os dígitos no momento de alarme
para comparação entre eles no programa, char teclas [4][4] indica os caracteres
de cada tecla.
7. Uma variável de nome teclado1 é criada na biblioteca Keypad para
armazenar o caractere pressionado no teclado. Essa série de definições e
inclusões termina com o mapeamento dos pinos utilizados no display LCD
LiquidCrystal lcd (7, 6, 5, 4, 3, 2).
Função Setup
8. Na função setup define-se as portas onde conectados o Buzzer e LED
de alarme como saídas digitais:
pinMode (led_alarme, OUTPUT)
E os sinais do sensor de vibração e o botão desativador como entradas:
PinMode(sinal_sensor, INPUT)
133
Em
lcd.begin(16,2)
Inicia-se a comunicação com o display LCD e escreve na linha 1 do
display a palavra “ALARME” com:
lcd.print("ALARME")
Função Loop
Alarme
A função Loop se inicia escrevendo no display a palavra OFF:
lcd.setCursor(8,0); lcd.print("OFF")
Indicando que o alarme está no momento desativado. A variável char
tecla_pressionada monitora e armazena as teclas pressionadas no teclado:
tecla_pressionada = teclado1.getKey()
Caso a tecla ‘’#’’ for pressionada, o programa entra para realizar os
comandos do bloco IF que ativando o alarme escrevendo ON no display. Neste
estágio do programa, o sistema monitora o sensor de vibrações constantemente
mas esta ação ainda pode ser revertida ao pressionar a tecla‘’*’’.
Enquanto a tecla ‘’*’’ não for pressionada ou o sensor de vibrações if
(leitura_sensor == HIGH) não enviar o comando para o Arduino, o programa roda
dentro do laço while:
while( tecla_pressionada != '*')
No momento que o Arduino recebe o sinal HIGH do sensor, ele interpreta
que uma vibração foi detectada e que o alarme deve ser disparado:
if (leitura_sensor == HIGH)
Com o alarme ativo o programa desce uma sequência de sonorização e
cai no laço while:
while ( desliga_alarme != HIGH)
que dispara o aviso sonoro do Buzzer intermitente. Para desativar o
alarme e sair deste laço o programa tem duas opções, ou o botão desativador
de emergência seja acionado levando a variável desliga_alarme para nível LOW
ou por senha.
O botão desativador no nosso protótipo está diretamente ligado ao nível
alto HIGH, deixando assim a opção de desativar o alarme somente por senha.
Já com o alarme ativo e o aviso sonoro intermitente o programa e o display
134
aguardam a senha correta ser digitada para a desativação do sistema. A senha
foi definida inicialmente mas pode ser alterada de acordo com a
preferência do usuário em:
char senha[4] = {'5', '9', '3', '8'} //um vetor de 4 posições
Senha
Se alguma tecla for pressionada if (tecla_pressionada), o programa
armazena está tecla em:
vetor[i] = tecla_pressionada;
O contador i++ auxilia até o preenchimento por completo da senha de 4
dígitos. Após o preenchimento da senha digitada por completo ele é comparado
com a senha pré-definida:
if(vetor[0] == senha[0] && vetor[1] == senha[1] && vetor[2] ==
senha[2] && vetor[3] == senha[3])
O programa interpreta que a senha é correta quando está comparação
acima seja verdadeira. Caso a comparação for verdadeira o alarme é desativado
desabilitando o Buzzer, e escreve OK no display e por fim zera o contador i++ .
Caso a senha for esteja incorreta escreve no display :
lcd.print("SENHA INVALIDA")
e retorna o programa para o laço de alarme com o Buzzer emitindo som
intermitente zerando também o contador i++ para uma nova tentativa de senha.
Hardware
Módulo Sensor de Vibração SW-420
135
Pinagem:
– VCC: 3,3 – 5V
– GND: GND
– D0: Saída Digital
Teclado Matricial 4×4
10. O teclado matricial 4×4 como o nome diz é uma matriz de contatos
que quando algum digito é pressionando o contato se fecha de um pino para
outro. O esquema de contatos pode ser observado abaixo, linhas e colunas com
8 pinos. Exemplo: Quando a tecla 1 é pressionada os pinos 1 e 5 se fecham
(Linha 1, Coluna 1).
136
17.10 Prática experimental 10 - Sensor de Luz
Fundamentação teórica: Fotoresistor LDR é um componente eletrônico
muito utilizado, sua função é semelhante ao resistor comum de limitar a corrente
elétrica que passa sobre ele, porém sua resistência varia de acordo com a
intensidade da luz. Quanto mais luz incidir sobre o componente, menor a
resistência. Este sensor de luminosidade pode ser utilizado em projetos com
Arduino e outros microcontroladores para alarmes, automação residencial,
sensores de presença e etc.
Objetivo: Utilizar um Fotoresistor LDR para criar um sistema de
iluminação muito semelhante aos utilizado nos postes de iluminação de cidades,
onde sempre que o LDR detectar baixa luminosidade um LED é acesso.
Componentes: 1 placa a protoboard, sensor LDR, 1 resistor de 10KΩ,
1 resistor de 1KΩ e 1 LED azul.
137
3. Serial.println
Essa função imprime dados no monitor serial como texto. Deve ser
escrita da seguinte maneira: Serial.println(valor);
Código:
int led = 4; // Definindo que o LED está na porta digital 4
int sensor = A0; // Definindo que o Sensor está na porta analógica A0
int valorsensor = 0;// Variável que armazena o valor da leitura do sensor
void setup() { // inicia o void setup
Serial.begin(9600); // Inicia a comunicação serial na velocidade de 9600
pinMode (led, OUTPUT); //Define LED como saída
pinMode (sensor, INPUT); //Define sensor como entrada
}
void loop() { // Inicia o void loop
Serial.println(valorsensor); // Imprimi o valor do sensor no monitor serial
valorsensor = analogRead (sensor);// Faz a leitura analógica da porta em que o Sensor
esta conectado
if((valorsensor) < 300){ //Se o valor de valor do sensor for menor que 300
digitalWrite(led, HIGH);// O LED acende
} else{ // Se não
digitalWrite(led, LOW);//O LED fica apagado
}
}
5. Para ver o valor que o sensor está lendo em tempo real, pressione a
tecla Ctrl + shift + m e irá abrir o monitor serial.
138
Componentes: 1 placa a protoboard, 1 sensor LDR, 1 resistor de 10KΩ,
1 módulo relé e 1 lâmpada.
Procedimento: Primeiro é preciso alimentar a protoboard com o GND e
o 5V do Arduino. Depois, encaixe o Sensor LDR na protoboard, um dos terminais
deve ser ligado aos 5V e outro ao GND, a um resistor de 10KΩ e na Porta
Analógica A0. O pino IN do relé deve estar conectado à Porta Digital 4. O pino
GND do relé precisa estar no GND do circuito. O pino VCC do relé deve estar
conectado ao 5V do circuito. Um fio deve ser conectado a lâmpada e no contato
COM do relé, outro na rede elétrica. Um fio da rede elétrica precisa estar
conectado ao contato NO (normalmente aberto) do relé.
Atenção: A lâmpada deve ficar o mais longe do sensor possível, caso
contrário ela ficará piscando sem parar.
OBS 1: A única alteração que é preciso fazer na programação é inverter
o digitalWrite para LOW, uma vez que o relé funciona de forma invertida e sua
programação é igual a de um LED. Este Módulo Relé permite uma integração
com uma ampla gama de microcontroladores como o Arduino. A partir das saídas
digitais pode-se, através do relé, controlar cargas maiores e dispositivos como
motores AC ou DC, eletroímãs, solenoides e lâmpadas incandescentes.
OBS 2: Este módulo tem um canal sendo assim concebido para ser
integrado para controlar até 1 relé. O módulo é equipado com um relé de alta
qualidade, com carga nominal 10A/250VAC, 10A/125VAC, 10A/30VDC. Cada
canal possui um LED para indicar o estado da saída do relé.
Código:
int rele= 4; // Definindo que o Relé está na porta digital 4
int sensor = A0; // Definindo que o Sensor está na porta analógica A0
139
int valorsensor = 0; // Variável que armazena o valor da leitura do sensor
void setup() { // inicia o void setup
Serial.begin(9600); // Inicia a comunicação serial na velocidade de 9600
pinMode (rele, OUTPUT); //Define Relé como saída
pinMode (sensor, INPUT); //Define sensor como entrada
}
void loop() { // Inicia o void loop
Serial.println(valorsensor); // Imprimi o valor do sensor no monitor serial
valorsensor = analogRead (sensor);// Faz a leitura analógica da porta em que o Sensor
esta conectado
if((valorsensor) < 300){ //Se o valor de valor do sensor for menor que 300
digitalWrite(rele, LOW);// O relé é acionado
} else { // Se não
digitalWrite(rele, HIGH);// O relé é desligado
}
}
140
Na programação, será utilizado uma biblioteca.
Resumidamente, uma biblioteca nada mais é que um trecho de software
que fornece funcionalidade específica a um programa.
Baixar a biblioteca do servo motor em .zip:
Link: https://downloads.arduino.cc/libraries/github.com/arduino-libraries/Servo-
1.1.8.zip?_gl=1*1v87im2*_ga*NjY0NDQ1NDQ1LjE2MjY1NTgxNTM.*_ga_NEXN8H46L5*MT
YzMTIxNzkxNC4zMy4xLjE2MzEyMTgwNzAuMA..
Código:
#include <Servo.h> // Incluindo a biblioteca
Servo servo; // Objeto do tipo Servo
delay(1);
141
17. 13 Prática experimental 13 - Sensor de Som
Objetivo: Acionar um LED quando batermos palmas.
Componentes: 1 protoboard, 1 sensor de som, 1 resistor de 1KΩ e 1
LED azul.
Fundamentação teórica: O Módulo Sensor de Som, possibilita a
detecções de sons, variando o estado de sua saída digital caso detectado um
sinal sonoro. Possui um microfone de condensador elétrico e pode ser usado em
sistemas de alarme por exemplo.
142
Código:
int led = 3; // Definindo que o LED está na porta digital 3
int sensor = 2; // Definindo que o Sensor está na porta digital 2
int estadoSensor; // Variável que armazena o valor da leitura do sensor
void setup () { // inicia o void setup
pinMode(led, OUTPUT); // Define LED como saída
pinMode(sensor, INPUT); // Define Sensor como entrada
}
void loop () { // incia o void loop
if (digitalRead(sensor) == HIGH){ // Se a leitura do Sensor for igual a HIGH (alto)
estadoSensor = digitalRead(led); // Lê o estado atual do LED e armazena
digitalWrite(led, !estadoSensor); // Muda o estado do LED, ou seja, o LED acende
delay(500); // Tempo de 500 milissegundos
}
}
143
Código:
int rele = 3; // Definindo que o Relé está na porta digital 3
int sensor = 2; // Definindo que o Sensor está na porta digital 2
int estadoSensor; // Variável que armazena o valor da leitura do sensor
void setup () { // inicia o void setup
pinMode(rele, OUTPUT); // Define o Relé como saída
pinMode(sensor, INPUT); // Define Sensor como entrada
digitalWrite(rele, HIGH); // O relé inicia desligado
}
void loop () { // incia o void loop
if (digitalRead(sensor) == HIGH){ // Se a leitura do Sensor for igual a HIGH (alto)
estadoSensor = digitalRead(rele); // Lê o estado atual do Relé e armazena
digitalWrite(rele, !estadoSensor); // Muda o estado do Relé, ou seja, o Relé é
acionado
delay(500); // Tempo de 500 milissegundos
}
}
144
Procedimento: Primeiro é necessário se alimentar a protoboard com o
GND e os 5V do Arduíno. O primeiro terminal do sensor de temperatura deve
estar conectado ao 5V do circuito. O segundo terminal do sensor deve ser
conectado à Porta Analógica A0. O terceiro terminal do sensor precisa ser ligado
ao GND do circuito. O pino GND do display precisa estar conectado ao GND do
circuito. O pino VCC do display deve ser conectado ao 5V. O pino SDA
conectado na Porta Digital A4. O pino SCL conectado na Porta Digital A5.
Código:
// Incluindo bibliotecas necessárias
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
void loop() {
145
temperatura = (analogRead(sensor) * 0.0048828125 * 100); // Lendo sensor
lcd.setCursor(6, 0);
lcd.print(temperatura); // imprime na tela o valor da temperatura
lcd.setCursor(0, 0);
lcd.print("TEMP:"); // imprime o texto
lcd.setCursor(11, 0);
delay(2000); //INTERVALO DE 2 SEGUNDOS
}
146
Procedimento: 1. Conectar o menor pino do Buzzer ao GND (negativo)
do circuito e o maior no Pino Digital D0 do NodeMCU.
2. O menor terminal do LED precisa ser ligado ao GND, e o maior em
um resistor de 1K Ω e no Pino Digital D1 da placa.
3. O Pino VCC do sensor deve ser conectado ao Vin do circuito.
4. O Pino OUT do sensor é conectado ao Pino Digital D2.
5. O Pino GND do sensor precisa ser ligado ao GND do circuito.
Código:
//Declaração das variáveis dos pinos digitais.
void loop() {
valorSensor = digitalRead(SensorPIR); // Faz a leitura do sensor
Serial.print("Valor do Sensor: "); // imprime no monitor serial
Serial.println(valorSensor); // imprime o valor do sensor no monitor.
147
if (valorSensor == 1) {
// Alarme Ligado
tone(Buzzer,1000);
digitalWrite(Led, HIGH);
delay(5000); // tempo de 5 segundos para desligar o Alarme
noTone(Buzzer);
digitalWrite(Led, LOW);
} else {
// Alarme Desligado
noTone(Buzzer);
digitalWrite(Led, LOW);
}
}
148
A biblioteca SPI.h é responsável pela manipulação das portas do módulo
e do Arduino.
O Arduino Nano pode ser substituído por um Arduino Uno, um Arduino
Mega ou um Arduino de qualquer outra versão compatível.
Software
Procedimento: Para programar o sistema A IDE do Arduino foi utilizada.
1. Primeiramente foram incluídas as bibliotecas responsáveis pela
manipulação das entradas e do Módulo RFID, que tem sua própria biblioteca.
2. Incluiu-se a biblioteca SPI.h e a MFRC522.h que pode ser incluída
navegando através do menu Sketch→Incluir Biblioteca → Adicionar Biblioteca
.ZIP e selecione o arquivo .ZIP que pode ser baixado em:
https://www.arduinolibraries.info/libraries/mfrc522
149
3. Feito a inclusão das bibliotecas corretas, definiu-se constantes para os
leds, o buzzer e os pinos SDA (ou SS) e RST. Para se armazenar a identificação
(ID) das tags do chaveiro e do cartão que acompanham o Módulo RFID, criou-
se a variável tagID (Armazena o ID da Tag) e o vetor tagsPermitidas[] contendo
as tags que se fará a leitura na primeira vez que inicializar o programa.
4. Como será feita uma verificação através de uma estrutura de repetição
foi usada uma variável booleana para liberar ou não dependendo do seu valor.
Criou-se então uma nova instância da biblioteca MFRC522 e passou-se como
parâmetro as constantes dos pinos SDA e RST.
5. A partir de agora entra-se na função de inicialização do Arduino, a
função setup. Na função setup inicializa-se a comunicação serial através do
comando Serial.begin(9600), assim como a comunicação SPI com o comando
SPI.begin(); e, por último, inicializou-se o leitor pela variável usada na instância
da biblioteca. Declarou-se os pinos dos leds e do buzzer como saída (Output) e
então pode-se programar a função de leitura dentro do loop.
6. As funções PICC_IsNewCardPresent() e PICC_ReadCardSerial()
verificam se há uma tag presente no sensor. Para a leitura das tags criou-se uma
função e inicializar a tagID como vazia (“”) e para armazenar os valores das tags
usamos a função uid e armazenamos então na variável tagID. Comparamos a
tag lida com os valores do vetor através da estrutura de repetição “for” e
atribuímos true a variável caso a tag esteja no vetor. A última verificação executa
as funções de acesso liberado e acesso negado dependendo do valor da variável
booleana de liberação.
7. As funções acessoLiberado() e acessoNegado() simplesmente
escrevem nos pinos dos leds e do buzzer(na frequência 1500hz) os valores de
ligado ou desligado. Abaixo segue o código deste tutorial:
Código:
#include <SPI.h>
#include <MFRC522.h>
#define verde 6
#define vermelho 7
#define buzzer 8
#define sda 10
#define rst 9
150
String tagID = "";
bool liberado = false;
//Vetor de ID's cadastrados
String tagsPermitidas[] = {"3d7f7d63","75f8375f"};
MFRC522 RFID(sda, rst);
void setup() {
Serial.begin(9600); // Comunicação Serial
SPI.begin(); // Comunicacao SPI
RFID.PCD_Init(); // Leitor RFID
pinMode(verde, OUTPUT);
pinMode(vermelho, OUTPUT);
pinMode(buzzer, OUTPUT);
}
void loop() {
// Verificação de existência de tag
if ( !RFID.PICC_IsNewCardPresent() || !RFID.PICC_ReadCardSerial() ) {
delay(50);
return;
}
tagID = "";
// Estrutura de repetição padrão para coleta dos valores das tags pela função uid
for (byte i = 0; i < RFID.uid.size; i++) {
tagID.concat(String(RFID.uid.uidByte[i], HEX));
}
151
void acessoLiberado(){
int bips = 1; //quantidade de bips
for(int j=0; j < bips; j++){
tone(buzzer,1500); //Liga buzzer
digitalWrite(verde, HIGH);
delay(100);
noTone(buzzer); //Desliga buzzer
digitalWrite(verde, LOW);
delay(500);
}
liberado = false;
}
void acessoNegado(){
int bips = 2; //quantidade de bips
for(int j=0; j < bips; j++){
tone(buzzer,500); //Liga buzzer
digitalWrite(vermelho, HIGH);
delay(100);
noTone(buzzer); //Desliga buzzer
digitalWrite(vermelho, LOW);
delay(100);
}
}
Hardware
OBS: A leitura das tag deve ser próxima o suficiente (máx 3cm) do Módulo
RFID. No sistema uso-se o Arduino Nano que pode ser substituído por
um Arduino Uno, um Arduino Mega ou um Arduino de qualquer outra versão
compatível. O buzzer pode ser substituído por um Módulo Buzzer ligando-o nos
5v.
152
1. O primeiro passo é montar o Kit Chassi 2WD, seguindo o manual de
montagem que vem no Kit de Robótica.
OBS 1: O Kit acompanha um suporte para pilhas, como o robô consome
bastante energia, não é recomendado utilizar pilhas, e o Arduino Uno, irá ocupar
certo espaço, assim sendo, é sugerido que não coloque o suporte.
OBS 2: Lembre-se que os fios dos motores devem estar ligados iguais,
na mesma ordem, para que robô ande no sentido correto.
153
Desse modo tem-se:
ENA: Porta 10
ENB: Porta 11
IN1: Porta 7
IN2: Porta 6
IN3: Porta 5
IN4: Porta 4
154
Esquema completo da montagem do circuito do robô autônimo.
Código:
#include <Ultrasonic.h>; // incluindo a biblioteca para o Sensor Ultrassônico
void setup()
{
155
//Definindo os motores como saídas
//velocidades dos motores, caso note que seu robô está muito lento, altere os
valores.
robo_frente();
delay(100);
}
156
cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);
return(cmMsec); // retorna o valor em cm para a função delay(10);
delay(10);
}
void robo_frente() //função para mover o robô para frente lembre-se da tabela da
Ponte H
{
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
}
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW);
}
Possíveis Problemas
1- O robô não anda ou está muito lento
157
Esse problema também é causado pela bateria.
OBS: Para evitar outros tipos de problemas, siga o passo a passo para
montar o circuito.
Esse problema acontece por conta da bateria. O robô consome muita
energia e as baterias comuns não suportam muito tempo, é aconselhável utilizar
baterias recarregáveis e fontes de 9V para realização dos testes.
Caso a bateria seja nova e o robô continuar lento, modifique o código na
seguinte parte:
analogWrite(ENA,120);
analogWrite(ENB,120);
Escolha uma valor entre 0 a 255 e teste.
2- O robô anda, mas começa a rodar e não para.
Esse problema também é causado pela bateria.
OBS: Para evitar outros tipos de problemas, siga o passo a passo para
montar o circuito.
158
3. Sabe-se que apesar dele aceitar 5V para sua alimentação, o módulo
opera com a tensão máxima de 3.3V, e o Arduino fornece em suas portas 5V.
Assim, é necessário se fazer um divisor de tensão. Para isso será utilizado
os resistores de 1KΩ, dessa forma a tensão ficará em 2,5V.
159
4. As menores pernas dos LEDs são negativas, devem ser conectadas no
GND da Protoboard.
5. As pernas positivas devem ser conectadas aos resistores de 1KΩ e nas
portas 3 e 4 do Arduino.
Código:
//Definição dos pinos de saída para os dois motores e os LEDs
#define IN1 7
#define IN2 6
#define IN3 5
#define IN4 4
int led1 = 2;
int led2 = 3;
// Velocidade dos Motores, Caso esteja muito lento ou muito rápido altere os números
entre 0 a 255
160
analogWrite(ENA,110);
analogWrite(ENB,110);
}
char cha;
void loop() {
if (Serial.available() > 0) {
cha = Serial.read();
delay(2);
//Movimenta para frente
if(cha == 'F'){
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
}
//Movimenta para trás
if(cha == 'B'){
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
}
//movimenta para direita
if(cha == 'R'){
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
}
//movimenta para esquerda
if(cha == 'L'){
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
}
//Sem movimento
if(cha == '0'){
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW);
}
// Liga os LEDs
161
if(cha == '3'){
digitalWrite(led1,HIGH);
digitalWrite(led2,HIGH);
}
//Desliga LEDs
if(cha == '4'){
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
}
}
}
162
Código:
Código:
163
Código:
Código:
164
Código:
165
Procedimento:
OBS: Os blocos de programação são encontrados na seção de
tela LCD. Os blocos mais proeminentes são os seguintes:
2. Início do LCD (I2C). Primeiro defini-se o tipo de tela que se tem,
adicionando o seguinte bloco na seção Inicializar:
3. LCD limpo: Toda vez que se quiser causar uma nova impressão,
terá que remover os personagens anteriores.
Isso abrirá uma nova guia no navegador na qual um editor aparece para
criar caracteres clicando na caixa dividida em pixels:
166
6. Copia-se os dados gerados e colaca-se no bloco LCD. Define Symbol.
167
impresso na primeira linha da tela "Entrada ativa". Quando não estiver ativado,
ele será impresso, também na primeira linha "Entrada desligada".
168
Fundamentação teórica: Os módulos ESP8266 como periféricos
fornecem conectividade Wi-Fi às placas Arduino. No entanto, esses dispositivos
têm seu próprio microcontrolador interno, o que permite que eles sejam
programados sem ter que ser associado a outros microcontroladores, como o
Arduino. Com a atualização para a versão 4 do conector ArduinoBlocks, já se
pode programar com blocos muitas das placas baseadas no chip ESP8266. Mais
um passo gigante na programação de blocos e IOT.
O chip ESP8266 é, portanto, realmente um SoC (System on Chip), que integra
todos os elementos descritos no parágrafo anterior. Por sua vez, este sistema
pode ser encontrado como parte de uma infinidade de "módulos" comerciais,
surgindo assim diferentes soluções com diferentes funções, pinos, tamanhos e
preços. O mais simples é o ESP-01, que possui apenas 2 portas digitais e precisa
de um adaptador USB para ser programado.
169
Da mesma forma, possui 2 Leds integrados conectados ao pino D0 e D4
que podemos usar para testar programas sem ter que fazer nenhuma conexão.
Você simplesmente tem que ter em mente que, nesses Led, um estado baixo faz
com que a luz se ilumine, e um estado alto, que se desliga. Ou seja, trabalham
com lógica reversa.
Finalmente, é importante notar que sua tensão de operação é de
3,3VDC, o que faz com que tenha um baixo consumo, mas, ao mesmo tempo,
obriga você a tomar certas precauções ao conectar a placa NodeMCU com
sensores que funcionam a 5VDC.
Sua programação é muito semelhante à de qualquer placa Arduino no
ArduinoBlocks, com a facilidade adicional de que para a comunicação Wifi não
precisamos indicar a quais pinos o ESP8266 está conectado, já que este é o
núcleo da placa e não um periférico.
Componentes: LEDs e placa de desenvolvimento NodeMCU
Procedimento: Será conectado um Led ao pino D1, conforme mostrado
na imagem a seguir:
170
A comunicação Wi-Fi pela MQTT será feita através da
plataformaio.adafruit em sua versão gratuita. Pode-se encontrar informações
sobre seu uso no artigo: Painel MQTT com Adafruit IO e ArduinoBlocks.
Receba pedidos para ligar e desligar uma saída digital. No programa
seguinte, a placa subscreve o tema "IgnitionLights". Se um 1 for recebido nesse
tópico, a saída D1 será ativada, que com um 0 será desativada.
171
18 - REFERÊNCIAS
ALBUQUERQUE, T. L. Q. Desenvolvimento de uma ferramenta
computacional com acesso remoto para monitoramento de biorreatores
anaeróbios. 2021. 127p. Tese (Doutorado em Engenharia Ambiental) –
Universidade Estadual da Paraíba, Campina Grande.
172
Inovação Tecnológica) – Universidade Federal de Minas Gerais, Belo
Horizonte.
173
BRASIL. Ministério da Educação. Base Nacional Comum Curricular.
Educação é a base. Brasília: MEC, 2017. Disponível em:
http://portal.mec.gov.br/index.php?option=com_docman&view=download&ali
as=79601- anexo-texto-bncc-reexportado-pdf-2&category_slug=dezembro-
2017-pdf&Itemid=30192. Acesso em: 21 nov de 2022.
174
“Júlio de Mesquita filho”. Disponível em:
https://www.feg.unesp.br/Home/Pesquisa23/inovee/oficinatecnologica/apostila
---introducao-a-logica-de-programacao.compressed.pdf. Acesso em: 7 dez de
2022.
175
PATA, A.S.O. Sistemas Tecnológicos: robô ambiental híbrido. 2006. 101p.
Tese – Universidade Católica Portuguesa, Porto.
176
SOUSA JR, I. V.; MIRANDA, J. O. S.; NASCIMENTO, A.C. S.; ARAÚJO, F. R.
V. Física experimental com Arduino: ondas em uma corda tensionada.
Rev. Bras. Ensino Fís. n. 42, São Paulo. 2020
177
ZILLI, S. do R. A robótica educacional no Ensino Fundamental:
perspectivas e prática. 2004. 89 p. Dissertação (Mestrado em Engenharia
de Produção) -Universidade Federal de Santa Catarina, Florianópolis, 2004.
178