Apostila IOT Versão Final
Apostila IOT Versão Final
Apostila IOT Versão Final
Internet Das
Coisas
Pág.
Coordenação Pedagógica – Cursos Técnicos 1
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
SUMÁRIO
Pág.
Coordenação Pedagógica – Cursos Técnicos 2
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
3.4 Transistores ............................................................................................................ 46
3.4.1 Esquematização de um transistor NPN ............................................................................ 48
3.4.2 Exemplo de circuito com transistor como chave de disparo ............................................. 50
3.4.3 Transistores Reguladores de Tensão Fixos e Variáveis................................................... 53
4 ELETRÔNICA DO DIA A DIA ...................................................................................... 56
4.1 Tomadas, padrões e tipos de ligação........................................................................ 56
4.2 Dimensionamento de tomadas e fios ....................................................................... 58
4.3 Disjuntores e dimensionamento da rede .................................................................. 60
Pág.
Coordenação Pedagógica – Cursos Técnicos 3
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
UNIDADE 4 - SENSORES .............................................................................................. 89
6 TRABALHANDO COM SENSORES .............................................................................. 89
6.1 Leitura de sensores digitais de resposta binária ...................................................... 91
6.1.1 Sensor de proximidade PIR: Exemplo detalhado ............................................................. 91
6.1.2 Sensor de som.................................................................................................................. 93
6.1.3 Sensor de chama ............................................................................................................. 93
6.1.4 Sensor de vibração........................................................................................................... 93
6.1.5 Sensor de inclinação (TILT) .............................................................................................. 94
6.1.6 Chave magnética (reed-switch) ........................................................................................ 94
6.1.7 Sensor magnético de proximidade ................................................................................... 95
6.1.8 Push button ...................................................................................................................... 95
6.1.9 Chave tátil capacitiva ...................................................................................................... 95
6.1.10 Chave de 2 estados ....................................................................................................... 96
6.1.11 Chave de fim de curso ................................................................................................... 96
6.1.12 Encoder ótico e encoder magnético ................................................................................ 96
6.1.13 Sensor de vazão ............................................................................................................. 97
6.2 Leitura de sensores de resposta binária com uso de interrupções ........................... 97
6.2.1 Sensor encoder: exemplo detalhado com uso de interrupções ......................................... 99
6.2.2 Sensor de vazão: exemplo detalhado com uso de interrupções ..................................... 101
6.3 Leitura de sensores analógicos .............................................................................. 103
6.3.1 Mapping de valores ........................................................................................................ 104
6.3.2 Sensor LDR: exemplo detalhado de captura direta de valor .......................................... 105
6.3.3 Sensor de gás ................................................................................................................ 107
6.3.4 Sensor óptico reflexivo ................................................................................................... 108
6.3.5 Sensor Joystick .............................................................................................................. 109
6.3.6 Sensor de temperatura LM35 – Exemplo detalhado de mapping de valor..................... 111
6.3.7 Potenciômetro ................................................................................................................. 113
6.3.8 Sensor de umidade do solo ............................................................................................ 115
6.3.9 Sensor de respingos ....................................................................................................... 117
6.4 Leitura de sensores especiais ................................................................................ 118
6.4.1 Sensor ultrassônico de distância (HC-SR04) ................................................................. 120
6.4.2 Sensor de cor RGB (TCS230).......................................................................................... 123
6.4.3 Sensor de umidade e temperatura (DHT11) .................................................................. 127
6.4.4 Sensor RFID (RC522) ..................................................................................................... 128
6.4.5 Sensor acelerômetro e giroscópio (MPU6050) ................................................................. 131
6.4.6 Sensor de carga com amplificador (HX711) ................................................................... 133
6.4.7 Sensor de gestos (APDS-9960) ....................................................................................... 134
6.4.8 Sensor de reconhecimento de voz (V3) ........................................................................... 134
6.4.9 Sensor de batimentos cardíacos (KY-039) ..................................................................... 135
6.4.10 Sensor GPS (Neo-6M) ................................................................................................... 136
Pág.
Coordenação Pedagógica – Cursos Técnicos 4
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
7.2 Atuadores de ativação simples com tensões superiores à 5V ................................. 143
7.2.1 Solenoide........................................................................................................................ 144
7.2.2 Válvula solenoide ........................................................................................................... 144
7.2.3 Trava solenoide .............................................................................................................. 145
7.2.4 Bomba submersa ........................................................................................................... 145
7.2.5 Bomba de ar .................................................................................................................. 145
7.3 Displays ................................................................................................................ 146
7.3.1 Display de 7 segmentos ................................................................................................. 146
7.3.2 Display LCD ................................................................................................................... 149
7.3.3 Display OLED ................................................................................................................. 154
7.4 Motores ................................................................................................................. 154
7.4.1 Motor DC + Ponte H ........................................................................................................ 155
7.4.2 Motor de passo ............................................................................................................... 158
7.4.3 Servomotor ..................................................................................................................... 160
7.5 Emissor Infravermelho .......................................................................................... 162
7.5.1 Clonando o controle remoto para controlar o Arduino .................................................... 164
7.5.2 Clonando o controle remoto para controlar equipamentos ............................................. 167
Pág.
Coordenação Pedagógica – Cursos Técnicos 5
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
1 ENTENDENDO O IOT
Chamamos de IoT uma rede composta pelos mais diversos dispositivos que possuem a
capacidade de se comunicar, trocando informações em tempo real e tomando decisões a
partir daí (sejam esses dispositivos desde simples sensores até complexos assistentes de
voz). Uma característica importante é que eles não devem ter a comunicação e
funcionamento restritos a um conjunto limitado que compõe uma linha comercial ou uma
determinada marca. Um Chromecast aceita transmissões vindas de smartphones Android
mas também de iOS; a Alexa controla lâmpadas inteligentes da Amazon mas também de
outras marcas; um sensor de umidade do solo pode ser lido tanto por um Arduino, quanto
por um ESP32 ou um Raspberry PI; uma geladeira inteligente da LG pode se comunicar
com uma televisão inteligente da Samsung sugerindo a execução de vídeos de receitas com
algum dos ingredientes retirados dela pelo usuário. Quando falamos de IoT, falamos de
ampliar as possibilidades e não de limitá-las.
Pág.
Coordenação Pedagógica – Cursos Técnicos 6
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Conectividade: IoT não seria possível sem a comunicação entre os dispositivos (para a
troca de informações, dados capturados, alertas, decisões). Então, a conectividade é um
ponto fundamental, criando condições para que essa comunicação aconteça de forma
eficiente. A conectividade é dada através de três fatores importantes: protocolos de
comunicação, rede e segurança. Os protocolos de comunicação são formas padronizadas
de como informações podem ser enviadas de um dispositivo A para um dispositivo B
(através de pacotes direcionados ou em broadcast) e interpretadas no momento em que
forem recebidas. Podemos entendê-los como uma “língua” que permitirá aos dispositivos,
Pág.
Coordenação Pedagógica – Cursos Técnicos 7
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
com base nas mesmas regras, conversar. Entre os mais comuns em IoT temos TCP/IP,
HTTP, Serial e I2C. Já a rede é quem garante um meio para que essa comunicação possa
acontecer e as informações (pacotes) possam trafegar de um dispositivo para o outro. Essas
redes podem ser físicas (cabeadas ou por
pontes de contatos) ou não físicas (como o
WiFI, Bluetooh, NFC, RFid, LoRa e ZigBee).
Por último, a segurança é a garantia de que a
comunicação, utilizando a rede escolhida e no
protocolo escolhido, vai acontecer de forma
segura. Porém, como “forma segura” não
estamos falando somente da segurança dos
dados trafegados (por criptografia, por
exemplo), mas também da garantia da sua
transmissão e a proteção para evitar a sua perda. Infelizmente segurança de dados é um
ponto crítico do IoT, pois muitas vezes é dada a preferência por redes e protocolos mais
simples e leves, focando em otimização e velocidade em detrimento da privacidade; outras,
o serviço é oferecido gratuitamente e a coleta intencional de dados (e seu posterior uso ou
venda) é o objetivo e o que vai garantir a monetização do negócio.
Inteligência: sistemas IoT capturam, compartilham e utilizam dados. Seja através dos
sensores, dos aplicativos, dos serviços ou das plataformas, a massa de informações
geradas é muito grande. Um dos maiores
méritos do sucesso do IoT é justamente saber
fazer bom uso destes dados, seja para tomar
decisões a partir deles em favor do usuário,
seja para utilizar esses dados contra o
próprio usuário sem o seu conhecimento. A
implementação de inteligência em sistemas
desse tipo, pode ter relação com alguns aspectos importantes: mineração e processamento
de dados (saber selecionar quais dados de uma massa gigantesca de dados utilizar),
aprendizagem sobre esses dados (conseguir aprender ou encontrar padrões em cima dos
dados selecionados) e ação sobre o aprendizado (saber agir baseado dos aprendizados e
padrões obtidos). Ou seja, a inteligência tem a ver diretamente com ferramentas de três
áreas principais: data science, inteligência artificial e o desenvolvimento de softwares
(lógica, restrições e implementação de regras de negócio).
Pág.
Coordenação Pedagógica – Cursos Técnicos 8
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Serviços: os serviços são duplamente importantes quando pensamos em IoT. São eles que
permitem desenvolver sistemas mais robustos e flexíveis com uso de tecnologias
disponibilizadas para fins específicos e que podem ser incorporados ao projeto
(processamento e armazenamento na nuvem,
por exemplo). Mas diversos sistemas de IoT
são planejados para funcionarem também
como um serviço disponibilizado para o
usuário, de forma gratuita (monetizando
sobre dados, publicidade, propagandas
direcionadas, etc) ou paga (com cobrança de
licenças ou mensalidades). Um termo muito
aderente ao IoT é o SaaS (Software as a
Service, ou Software como um Serviço). O software geralmente deixa de ser o foco e passa
a ser “transparente” pois o serviço oferecido é mais visível e agrega uma maior percepção
de valor ao usuário. Por trás, do serviço temos uma infraestrutura também transparente
e que serve de plataforma para o armazenamento de dados, interpretação dos códigos-
fonte, hospedagem do software e de websites, execução de aplicativos ou de serviços para
aplicativos (webservices).
O IoT pode ser aplicado nas mais diversas áreas e sua variedade de possibilidades
permite o fácil encontro de usos práticos em que ele agregue. Porém, existem 4 áreas onde
ele aparece com mais força: domótica, indústria 4.0, agrotech e smart cities.
1.2.1 Domótica
Talvez este seja o grande exponencial do uso
de IoT e o primeiro contato da maioria das pessoas
com o conceito e com suas tecnologias. A Domótica
(junção da palavra grega Domus que significa
“casa” com a palavra robótica) é a automatização
residencial, onde o IoT é fundamental na coleta de
informações, análise da rotina, sensoriamento e
uso dessas informações para tornar o ambiente mais agradável, seguro, prático e moderno.
A domótica se divide em 5 grandes áreas e em todos o IoT pode trazer ganhos:
Pág.
Coordenação Pedagógica – Cursos Técnicos 9
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
ajustar) e a automação que permite a execução de tarefas de forma mais fácil ou até mesmo
automática.
Pág.
Coordenação Pedagógica – Cursos Técnicos 10
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Big data: data science, análise de grandes massas de dados, busca de padrões em
conjunto com IA, sintetização e categorização automática, extração de informações
estratégicas para tomadas de decisões (como o Businness Inteligence);
Cyber segurança: segurança e privacidade dos dados e informações críticas aos negócios,
aos processos, ao dia a dia da empresa e mesmo dos clientes (principalmente após criação
da Lei Geral de Proteção de Dados – LGPD);
Pág.
Coordenação Pedagógica – Cursos Técnicos 11
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Manufatura aditiva: tecnologias de produção com base na sobreposição de matérias em
camadas ou através da ligação de pequenas partículas, como as impressoras 3D
(sobreposição de camadas de plástico), impressoras de alimentos (sobreposição de
camadas de materiais orgânicos) ou mesmo impressoras de tecidos humanos
(sobreposição de proteínas);
1.2.3 Agrotech
O Brasil é um dos maiores produtores mundiais e uma parcela considerável do PIB
do país vem da agricultura e da pecuária. De forma inacreditável, somente nos últimos
anos vemos uma modernização mais consistente nos processos de produção,
plantio/colheita, armazenagem e logística (geralmente limitada aos grandes produtores
com alta capacidade de investimento) e muitas
vezes com o uso de soluções estrangeiras. Até
alguns anos atrás, IoT na agropecuária era
sinônimo de sistemas de monitoramento RFID
para controle de gado ou outros animais
através de tags ativas ou passivas. O cenário
vem mudando e cada vez mais os produtores
percebem as múltiplas possibilidades que o
Pág.
Coordenação Pedagógica – Cursos Técnicos 12
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
IoT oferece para o meio rural. Hoje contamos com sistemas de pulverização e controle de
pragas com drones, sistemas para rastreamento de produtos desde a origem, silos
automatizados que controlam fatores ambientais (umidade, temperatura e composição do
ar) para maior durabilidade dos grãos e até silos conectados a bolsas de valores e sistemas
de regulagem de preços para informar a melhor hora de escoar a produção e o valor total
recebido com base no volume do silo (também automaticamente calculado por sensores).
E, felizmente, algumas tecnologias de baixo custo começaram a chegar no pequeno
produtor e no produtor familiar, como sistemas de rega automática (através de decisões
baseadas no tipo de planta e no monitoramento climático), controle de volume de lençóis
freáticos (para autorregular o gasto hídrico garantindo água por um maior período),
sistemas de detecção de pragas por imagem (inclusive apps para smartphone com esse
recurso), plataformas de compra automática de insumos, entre outros. Mas chama atenção
os dados da pesquisa da AgTechGarage que aponta que mesmo com aproximadamente
13.000 startups registradas no
Brasil, menos de 300 são voltadas
à tecnologia no setor agro. Ao
mesmo tempo, esse gap gera uma
área com inúmeras oportunidades
e a exploração, desenvolvimento e
implantação de tecnologias no
campo é uma das tendências nos
negócios nos próximos 10 anos.
Essas startups dividem-se entre
mais ou menos 20 áreas de atuação dentro do agronegócio, conforme o gráfico apresentado
na mesma pesquisa. Com isso, fica claro quanto o uso do IoT ainda tem a crescer no Brasil.
Pág.
Coordenação Pedagógica – Cursos Técnicos 13
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
empresas. Assim, as tecnologias são planejadas e aplicadas para garantir impacto nas
seguintes áreas:
Mobilidade: formas de garantir o deslocamento eficiente pela cidade (de pessoas, veículos
e cargas) mas também na ampliação e acesso aos serviços necessários por pessoas e
empresas, principalmente na migração dos mesmos para plataformas digitais.
A cultura maker humaniza o uso das tecnologias e ajuda com que elas se tornem
familiares, mostrando que não são tão distantes e inacessíveis como muitas pessoas
Pág.
Coordenação Pedagógica – Cursos Técnicos 14
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
imaginam (e nem tão caras, permitindo a criação de muitos dispositivos e sistemas de
forma muito mais barata do que os equivalentes comerciais, tornando-os mais acessíveis).
E isso cria mais três movimentos interessantes e com grande potencial de impacto,
principalmente na educação: a cultura da colaboração e compartilhamento do
conhecimento, o autodidatismo e a criação de soluções com impacto social.
Pág.
Coordenação Pedagógica – Cursos Técnicos 15
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
O MANIFESTO MAKER
Aprender – Você deve aprender a fazer. Sempre procurar aprender mais sobre sua criação. Você pode
se tornar um viajante ou mestre artesão, mas ainda aprenderá, desejará aprender e impulsionará o
aprendizado de novas técnicas, materiais e processos. Construir um caminho de aprendizagem garante
uma vida rica e recompensadora e, mais importante, permite compartilhar.
Equipamentos – Você deve ter acesso às ferramentas certas para cada projeto. Invista e desenvolva
acesso local às ferramentas de que você precisa para fazer o desejado. As ferramentas jamais foram
tão baratas, poderosas e fáceis de usar.
Divirta-se – Tenha bom humor diante do que está fazendo, e ficará surpreso, animado e orgulhoso do
que descobrir.
Participe – Junte-se ao Movimento Maker e alcance os que estão por perto. Juntos, vocês irão trocar
experiência, conhecimento e descobrirão a alegria de fazer. Realizem encontros, seminários, festas,
eventos, dias de fabricante, feiras, exposições, aulas e jantares com e para os outros makers em sua
comunidade.
Apoie – Isso é um movimento. Requer apoio emocional, intelectual, financeiro, político e institucional.
Apoie no que for ao seu alcance. A melhor esperança de melhorar o mundo está em nós mesmos.
Somos responsáveis por isso fazendo um futuro melhor.
Mude – Aceite e abrace as mudanças que se apresentarão e ocorrerão naturalmente em sua trajetória
maker. Você se tornará uma versão mais completa de você mesmo (no espírito maker, sugiro
fortemente que você pegue esse manifesto, faça mudanças nele se for o caso, e trilhe o seu próprio
caminho. Esse é o ponto no fazer).
Pág.
Coordenação Pedagógica – Cursos Técnicos 16
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
1.3.2 Os Makerspaces
Provavelmente o movimento maker não teria tanta penetração na sociedade e não
seria acessível a tantas pessoas (independentemente de classe social), se não fossem os
makerspaces (espaços makers). Eles são espaços especialmente desenvolvidos e com toda
a infraestrutura necessária para que qualquer pessoa possa desenvolver os seus projetos.
São equipados com computadores, softwares para desenvolvimento, desenho e
modelagem, os mais diversos tipos de ferramentas, acessórios, materiais, maquinários
fabris básicos (tornos e fresas por exemplo) além
de modernos equipamentos como impressoras
3D e máquinas de corte à laser. E o mais incrível:
são espaços abertos ao público, gratuitos e que
contam com monitores e voluntários capacitados
a auxiliar nas dúvidas, orientar, ensinar e
compartilhar conhecimentos. Basta levar o seu
material e o limite é a criatividade (aliás, muitos
destes espaços possuem diversos materiais gratuitos que poder ser utilizados pelos
usuários e levados para casa após construído o projeto, como placas de madeira e acrílico,
ferragens diversas e até mesmo alguns componentes eletrônicos).
Pág.
Coordenação Pedagógica – Cursos Técnicos 17
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Pág.
Coordenação Pedagógica – Cursos Técnicos 18
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Como dito, a sua facilidade de uso é o grande diferencial, mas um segundo atrativo,
fundamental para a sua ascensão e popularização, é o preço. Com menos de 50 reais temos
em mãos, por exemplo, um Arduino, utilizando uma tecnologia eficiente e de baixo custo
para realizar todo esse controle citado. Aliás, algumas
destas placas são tão completas e tão potentes que
podem ser utilizadas inclusive como computadores
pessoais (com entrada para TV, mouse, teclado,
joystick e mídias de armazenamento externas) para
rotinas do dia a dia ou mesmo como consoles para emulação de jogos (como a Raspeberry
Pi Zero, à esquerda, que ficou conhecida como o computador de 5 dólares). Outras, contam
com microchips adicionais que agregam funcionalidades
extras que as tornam mais interessantes para projetos
mais específicos (como o Esp32, à direita, dotado de um
processador multicore que permite multithreads reais
além de possuir comunicação wifi e bluetooth já
encapsuladas e nativas). Essas placas variam em características e utilizaremos uma delas
(o Arduino Uno), nesta disciplina para a construção de projetos eletrônicos dos mais
diversos tipos, que possam ser aplicados no nosso dia a dia e mesmo na resolução de
diversos problemas detectados em nossa comunidade, escola ou cidade. Mas para isso
precisamos entender um pouco de eletrônica...
Pág.
Coordenação Pedagógica – Cursos Técnicos 19
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
UNIDADE 2 - TÓPICOS BÁSICOS DE ELETRÔNICA ANALÓGICA
2 O QUE É ELETRÔNICA?
Se você realizar uma busca pelo termo “eletrônica”, certamente irá se deparar com
uma infinidade de conceitos distintos, alguns bastante técnicos, que tentam explicar e
definir esta importante área do conhecimento (considerada a terceira revolução tecnológica
da humanidade). Para simplificar, podemos dizer que “eletrônica” é a ciência que estuda
como controlar e como utilizar a energia elétrica em baixas correntes, aproveitando o
fluxo de elétrons para gerar fenômenos desejados em um dispositivo (através da
associação de componentes que possuem propriedades conhecidas). Estas palavras em
destaque serão importantes na compreensão dos conceitos posteriormente apresentados.
Observação: Não é intensão deste material e nem desta disciplina o aprofundamento nos
conceitos físicos que regem as leis da eletrônica, porém o entendimento básico dos mesmos
nos dá maiores condições de entendimento e contextualização. Portanto, nos permitiremos
aqui algumas simplificações, sacrificando o rigor técnico em favor da didática.
Pág.
Coordenação Pedagógica – Cursos Técnicos 20
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Movimento dos elétrons e órbita ao redor do núcleo: por terem a mesma carga elétrica
(negativa) os elétrons estão em constante repulsão entre si, mas em constante atração em
relação ao núcleo por conta da carga positiva dos prótons presentes nele. Esta atração tem
força suficiente para manter os elétrons na eletrosfera, mas não é forte suficiente para
atraí-los para o núcleo. A interação destas forças mantém a composição do átomo e cria o
movimento orbital dos elétrons.
Núcleo forte, eletrosfera frágil: a força de atração que mantém as partículas do núcleo
unidas é muito maior do que a força de atração que o núcleo exerce sobre os elétrons.
Deste modo, quanto mais longe do núcleo um elétron está, mais facilmente ele pode ser
atraído pela força do núcleo de outro átomo.
Pág.
Coordenação Pedagógica – Cursos Técnicos 21
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
de tempo, recebe o nome de “Corrente Elétrica”. Este fenômeno é obtido através de uma
reação em cadeia, representada abaixo:
Pág.
Coordenação Pedagógica – Cursos Técnicos 22
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Isso é conseguido através do uso de reações
químicas sobre determinados elementos. O zinco,
por exemplo, ao sofrer oxidação perde elétrons
com facilidade dando origem a uma substância
rica nestas partículas. Já o cobre, sofre facilmente
reações químicas dando origem a uma substância
com deficiência de elétrons. O lado rico em cátions
recebe o nome de cátodo. Já o lado rico em ânions
recebe o nome de ânodo. Deste modo, se unirmos os dois “lados” através de um material
condutor, os elétrons provenientes do ânodo serão atraídos pelo cátodo, movendo-se em
direção ao mesmo. Esse movimento gera um campo magnético que cria uma força igual
no sentido inverso. Essa força é a Corrente Elétrica.
E o que podemos fazer com esse conhecimento: uma pilha (ou, mais genericamente,
uma bateria) nada mais é do que um componente formado por um cátodo e por um ânodo
(isolados entre si) que ao serem conectados por um condutor (fio, por exemplo), encontram
um caminho para que os elétrons movam-se do
material rico em ânions para o material rico em
cátions, gerando assim um fluxo ordenado. É
interessante notar que na imagem ao lado, o
fluxo da corrente é representado em dois
sentidos opostos. Como já vimos, o sentido real
do fluxo de elétrons é sempre do ânodo (-) para
o cátodo (+). Mas popularmente, o cátodo (+) é
encarado por muitas pessoas como o “mais
carregado”, criando uma conclusão cultural de
que a corrente flui de forma oposta (do positivo
para o negativo). A composição química das pilhas (materiais e compostos utilizados no
ânodo e cátodo) e suas dimensões (que permitem uma maior ou menor quantidade destes
materiais e compostos), influenciam na chamada “voltagem” (termo não correto, como
veremos adiante), na intensidade da
corrente e na autonomia. Podemos ter desde
as amplamente difundidas baterias de íon-
lítio (de 3,0V a 3,5V) até mesmo uma bateria
feita de batata com a penetração de uma
haste de cobre e uma haste de zinco (em
torno de 0,6V à 0,9V).
Pág.
Coordenação Pedagógica – Cursos Técnicos 23
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Para melhor compreender, vamos nos permitir a utilização de dois exemplos com
uma simplificação que abstrai conceitos físicos e unidades formais:
Pág.
Coordenação Pedagógica – Cursos Técnicos 24
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Exemplo 1) Imagine que uma pilha A tem um ânodo com 10 elétrons excedentes (-10) e
um cátodo que tem uma deficiência de 10 elétrons (+10). Podemos dizer que a diferença
de potencial entre os dois pontos é de 20. Agora imagine uma pilha B que tem um ânodo
com 10 elétrons excedentes (-10) e um cátodo que tem uma deficiência de 40 elétrons
(+40). Podemos dizer que a diferença de potencial entre os dois pontos é de 50.
• Na segunda pilha, com o passar do tempo, por mais que os 10 elétrons do ânodo
vão compensando a deficiência do cátodo, eles não são suficientes para o equilíbrio
do mesmo visto que a deficiência inicial era muito grande e muito maior do que o
total de elétrons que o ânodo pode fornecer. Isso faz com que os últimos elétrons
ainda sejam atraídos por uma força muito grande.
Pág.
Coordenação Pedagógica – Cursos Técnicos 25
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Exemplo 2) Imagine agora duas pilhas iguais (pilha C e pilha D), com ânodos contendo
30 elétrons excedentes e cátodos com deficiência de 40 elétrons. A única diferença é que
no condutor da pilha D existe um obstáculo que dificulta a passagem dos elétrons.
• A força inicial de atração dos elétrons pelo cátodo é igual na pilha C e na pilha D
(dada a igual carga de +40), assim como o total de elétrons livres (-30). Portanto,
ambas possuem a mesma diferença de potencial elétrico de 70.
• Apesar da mesma força (ddp), o obstáculo da pilha D vai fazer com que os elétrons
demorem mais tempo para moverem-se do ânodo para o cátodo. Deste modo, a
resistência que o obstáculo exerce sobre a passagem dos elétrons vai diminuir a
velocidade dos mesmos e a quantidade movida por segundo, criando uma corrente
elétrica menor apesar da mesma força (tensão) aplicada.
Pág.
Coordenação Pedagógica – Cursos Técnicos 26
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Pág.
Coordenação Pedagógica – Cursos Técnicos 27
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Pág.
Coordenação Pedagógica – Cursos Técnicos 28
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Níquel 1.0 x 10-7 .m2 → 0.000000100 .m2
Estanho 1.3 x 10-7 .m2 → 0.000000130 .m2
Ferro 1.5 x 10-7 .m2 → 0.000000150 .m2
Chumbo 2.0 x 10-7 .m2 → 0.000000200 .m2
Mercúrio 9.0 x 10-7 .m2 → 0.000000900 .m2
Grafite 1.3 × 10-7 .m2 → 0.000013000 .m2
Carbono 3.5 × 10-7 .m2 → 0.000035000 .m2
• Extensão do Paulo
.L 0,000000017 . 30 U 12
𝑹= = = 0,51 𝑰= = = 23,5 A
𝐴 0,000001 𝑅 0,51
• Extensão do Luís
.L 0,000000017 . 30 U 12
𝑹= = = 0,20 𝑰= = = 60,0 A
𝐴 0,0000025 𝑅 0,20
• Extensão do Lucas
.L 0,000000017 . 100 U 12
𝑹= = = 0,68 𝑰= = = 17,7 A
𝐴 0,0000025 𝑅 0,68
Pág.
Coordenação Pedagógica – Cursos Técnicos 29
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Pág.
Coordenação Pedagógica – Cursos Técnicos 30
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
I = U / Req
Req = R1 + R2 + R3 + ... + Rn
URn = I . Rn
Pág.
Coordenação Pedagógica – Cursos Técnicos 31
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Req = R1 + R2 + R3 = 10 + 20 + 30 = 60
I = U / Req = 12 / 60 = 0,2 A
Pág.
Coordenação Pedagógica – Cursos Técnicos 32
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
In = U / R n
𝟏 𝟏 𝟏 𝟏 𝟏
= + + + ⋯+
𝑹𝒆𝒒 𝑹𝟏 𝑹𝟐 𝑹𝟑 𝑹𝒏
Pág.
Coordenação Pedagógica – Cursos Técnicos 33
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
I1 = U / R1 = 12 / 10 = 1,2 A
I2 = U / R2 = 12 / 20 = 0,6 A
I3 = U / R3 = 12 / 30 = 0,4 A
𝟏 𝟏 𝟏 𝟏 1 1 1
= + + = + + = 0,1 + 0,05 + 0,033 = 0,183
𝑹𝒆𝒒 𝑹𝟏 𝑹𝟐 𝑹𝟑 10 20 30
1 1
= 0,183 1 = 0,183 . 𝑅𝑒𝑞 𝑅𝑒𝑞 = = 5,46
𝑅𝑒𝑞 0,183
Pág.
Coordenação Pedagógica – Cursos Técnicos 34
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Pág.
Coordenação Pedagógica – Cursos Técnicos 35
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Aqui queremos descobrir a corrente, sendo que temos a potência e a tensão, logo:
Pág.
Coordenação Pedagógica – Cursos Técnicos 36
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
3.1 Resistores
Falamos bastante até agora de resistência elétrica, que é um obstáculo que impõe
dificuldade à passagem dos elétrons e, portanto, da corrente elétrica. Essa resistência pode
ser natural e intrínseca ao circuito (por causa das características dos materiais que os
compõe, como a resistividade dos condutores, por exemplo) ou pode ser planejada,
incorporando ao circuito componentes que tenham uma resistência conhecida. Esses
componentes, são os resistores. Existem resistores fixos (cuja resistência não varia dentro
de certos parâmetros de funcionamento) e resistores variáveis (cuja resistência varia de
acordo com a variação de alguma característica). Ambos se utilizam do chamado Efeito
Joule, onde a resistência se dá pela conversão de parte da energia elétrica em energia
térmica (ao seja, resistores esquentam e esse deve ser um cuidado na hora de utilizar).
Pág.
Coordenação Pedagógica – Cursos Técnicos 37
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Exemplo: identificar o valor da resistência (em Ohms) e a tolerância dos resistores fixos
comuns mostrados abaixo:
Pág.
Coordenação Pedagógica – Cursos Técnicos 38
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
3.2 Capacitores
Pág.
Coordenação Pedagógica – Cursos Técnicos 39
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Deste modo, enquanto estão sendo carregados, os capacitores criam uma abertura
no circuito, interrompendo o fluxo da corrente. Ao atingirem sua carga máxima, os elétrons
começam a escapar da placa que está funcionando como ânodo, atravessando o dielétrico
e entrando novamente no circuito através da outra placa e do seu terminal, voltando a
permitir que a corrente (oposta) circule no circuito. Já quando carregado (totalmente ou
parcialmente), caso a tensão à qual está submetido varie ou seja interrompida, o capacitor
passa a funcionar como bateria liberando esta carga no circuito. Quanto maiores as placas
(também conhecidas como armaduras), maior é a carga possível de ser acumulada.
Pág.
Coordenação Pedagógica – Cursos Técnicos 40
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Pág.
Coordenação Pedagógica – Cursos Técnicos 41
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
características) e com a mesma tensão recebida. Quando a tensão aplicada nos seus
terminais é interrompida ou varia, eles passam a funcionar como baterias em paralelo: a
tensão é limita pelo capacitor de menor tensão (apesar de iniciarem a descarga com tensão
igual e o sistema tender ao equilíbrio, mantendo uma maior paridade), porém todos eles
liberam a energia acumulada ao mesmo tempo, aumentando a corrente total do sistema
que se iguala à soma das suas correntes individuais. Deste modo, conseguimos com os
capacitores em paralelo criar um amplificador de corrente, muito útil em diversas
aplicações.
Pág.
Coordenação Pedagógica – Cursos Técnicos 42
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
3.3 Diodos
Pág.
Coordenação Pedagógica – Cursos Técnicos 43
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Quando estes dois lados são unidos, em uma junção chamada PN, no centro da
junção, haverá um equilíbrio entre as cargas. Já as cargas mais distantes não possuem
força de atração suficiente. Porém, quando uma tensão é aplicada, dependendo da
polaridade, podem acontecer dois fenômenos diferentes.
Pág.
Coordenação Pedagógica – Cursos Técnicos 44
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Pág.
Coordenação Pedagógica – Cursos Técnicos 45
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
3.4 Transistores
Basicamente, um transistor é a
associação de junções PN. O tipo mais
comum de transistor (que recebe o nome
de BJT, ou Bipolar Junction Transistor),
associa duas dessas junções, unindo
seus lados iguais. Quando a união se dá
Pág.
Coordenação Pedagógica – Cursos Técnicos 46
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
pelos seus lados P, temos um transistor NPN; ao contrário, quando a união se dá pelos
seus lados N, temos um transistor PNP. O lado unido (central à montagem) é chamado de
Base e os outros 2 lados iguais são chamados de Coletor e Emissor.
• Estado de corte: o estado de corte ocorre quando não existe corrente na Base (ou
existe e esta é insuficiente). Deste modo, a passagem da corrente entre emissor e
condutor está interrompida.
• Estado de saturação: o estado de saturação ocorre quando a corrente da Base atinge
um valor determinado que “abre” totalmente a passagem da corrente entre emissor
de condutor.
• Estado ativo: o estado ativo ocorre quando na base existe uma corrente nem tão
baixa para o estado de corte e nem tão alta para o estado de saturação, permitindo
uma passagem apenas parcial da corrente entre emissor e condutor.
Pág.
Coordenação Pedagógica – Cursos Técnicos 47
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
na base gere a liberação de uma grande corrente no coletor, amplificando o sinal. É como
se, mantendo a analogia com a válvula de água, a mesma fosse ligada a um sistema de
esforço hidráulico que permitisse girá-la aplicando uma força mínima para isso, muito
menor do que em uma válvula de água comum.
• À esquerda do transistor, temos um circuito ligado a ele através da Base (por onde
entrará a corrente de controle que ajustará a corrente permitida do lado direito entre
o Coletor e o Emissor);
• Entre a fonte de tensão deste circuito de controle e a Base do transistor temos um
resistor RB que é utilizado para regular a corrente de entrada da Base. Se sabemos
a tensão da fonte do circuito de controle (VB), ajustamos a resistência para gerar a
corrente de entrada desejada.
• Para o cálculo do valor do resistor que nos entregará a corrente de base desejada,
podemos utilizar a Primeira Lei de Ohm, I = U / R. Porém, o transistor se comporta
como um diodo e alimentação da base vai consumir parte desta tensão (algo em
Pág.
Coordenação Pedagógica – Cursos Técnicos 48
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
torno de 0,3 V e 0,8 V). Esse valor, chamado de VBE, varia para cada transistor e é
informado nas especificações do modelo. Assim, a tensão que consideramos para
qualquer cálculo desejado deste lado do circuito de controle deve descontar esse
valor. A partir de todas essas informações, temos que, IB = (VB – VBE) / RB.
• O transistor possui um ganho (𝛽) e, deste modo, a corrente de entrada da Base será
amplificada (multiplicada) por ele, liberando uma corrente muito mais forte no
Emissor (IE) e, indiretamente, no coletor (IC) que tentará acompanhá-la.
• Com isso, a corrente no emissor (IE) será a soma da corrente recebida do coletor (IC)
com a corrente recebida da base (IB), já amplificada. Desde modo, podemos dizer
que IE = IC + (IB . β). Como a corrente do coletor (IC) será drenada para acompanhar
a corrente que está fluindo pelo Emissor (IE), acaba sendo muito próxima a ela até
o estado de saturação. Com isso, podemos substituí-la na fórmula original e teremos
que IE = IB + (IB . β).
• Já a corrente da Base (IB) deve ser dimensionada para, após sua amplificação, gerar
no emissor uma corrente suficiente para induzir no Coletor o que ele necessita para
os componentes que estiver alimentando (se a corrente na base aumenta, a corrente
no coletor aumenta para acompanhá-la). Deste modo, se sabemos a corrente total
que precisamos no coletor, podemos calcular a corrente que devemos aplicar na
Base para induzir essa liberação. Assim, temos que IB = IC / β.
• O que será alimentado pela corrente entre coletor e emissor, deverá ser posicionado
entre o terminal do coletor e o positivo da fonte do circuito principal. Essa corrente
que passa pelo Coletor (IC) virá da fonte e atravessará esses componentes neste
caminho.
• A corrente da Base (B), entra no circuito principal e se soma à corrente do emissor
pois tem que fluir para algum lugar. Caso ela seja muito alta e gere uma corrente
no emissor superior à corrente máxima que o coletor pode fornecer, dizemos que o
transistor está saturado (ou seja, a corrente máxima que pode estar sendo fornecida
pelo coletor, está sendo). Neste momento, o equilíbrio típico do estado ativo deixa
de existir.
• Se a corrente gerada no coletor for maior do que aquela suportada pelos
componentes alimentados por ele, poderá haver dano a estes componentes. Desde
modo, geralmente utilizamos um resistor para limitar a corrente no coletor,
mantendo um nível controlado mesmo quando a corrente da base for alta e liberar
uma grande passagem ao fluxo.
• Como temos a corrente suportada pelos componentes posicionados entre o coletor
e a fonte de tensão do circuito principal e sabemos a tensão nesta fonte (V C),
Pág.
Coordenação Pedagógica – Cursos Técnicos 49
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
podemos calcular o valor do resistor necessário para garantir essa corrente máxima
desejada. Porém, assim como no cálculo do resistor da base, devemos considerar
que parte da tensão da fonte será consumida pelo transistor quando entrar no
coletor. Deste modo, para qualquer cálculo no circuito principal, devemos
desconsiderar esta perda, chamada de VCE (e também informada nas especificações
do transistor). Assim, IC = (VC – VBC) / RC.
Pág.
Coordenação Pedagógica – Cursos Técnicos 50
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Pág.
Coordenação Pedagógica – Cursos Técnicos 51
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
3) Calcular a corrente da Base (IB): podemos iniciar nossos cálculos descobrindo qual
a corrente devemos aplicar na base para conseguir estimular a corrente total
necessária pelo coletor para o acionamento da válvula solenoide. Como já sabemos
o β do transistor e a corrente necessária ao coletor (0,5 A), podemos usar a fórmula:
IB = (VB – VBE) / RB, onde devemos isolar RB (o que queremos calcular). Então:
Como não existe um resistor com esse valor, devemos buscar o resistor comercial
com o valor mais próximo. Neste caso, será o de 1000 (1k).
IC = (VC – VCE) / RC, onde devemos isolar RC (o que queremos calcular). Então:
Pág.
Coordenação Pedagógica – Cursos Técnicos 52
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
comercial mais próximo e MAIOR do que o que calculamos, pois escolher um
resistor com valor menor, permitiria uma corrente superior à máxima suportada.
Pág.
Coordenação Pedagógica – Cursos Técnicos 53
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Pág.
Coordenação Pedagógica – Cursos Técnicos 54
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
R1 = R2 / ( (Vajustada/1,25) – 1)
R2 = ( (Vajustada/1,25) – 1) . R1
Exemplo: Imagine que precisamos obter uma tensão de saída de 10 V com o LM317. A
primeira observação é que a tensão de entrada pode variar entre qualquer valor entre 13
V (por conta dos 3 V de perda) e 40 V (tensão máxima suportada na entrada). Para os
resistores, vamos “chutar” um valor para o R1 (240 , por exemplo) e a partir daí podemos
encontrar o R2:
Pág.
Coordenação Pedagógica – Cursos Técnicos 55
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
PR1 = 1,25 . 1,25 / R1 = 1,25 . 1,25 / 240 = 1,5625 / 240 = 0,0065 W (ou 6,5 mW)
Assim, verificamos que o transistor não necessita de um dissipador (pois não atingiu
o limite de 1W) e que resistores de 1/8 W (os mais comuns no mercado) atendem com uma
boa margem de segurança.
Pág.
Coordenação Pedagógica – Cursos Técnicos 56
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
mesmo ao puxar uma extensão de outra tomada, é
importante descobrir qual dos dois é o fase para que a
montagem seja correta. Para isso podemos usar uma
chave teste, encontrada em qualquer ferragem. Existem
vários modelos, desde os mais simples com um led que
acende ao tocar o fase, quanto eletrônicos mais
elaborados que indicam inclusive a tensão. Caso se deseje
instalar uma tomada nova a partir dos cabos internos da
parede, as cores já são um indicativo (apesar de o teste ser
sempre recomendado para evitar acidentes caso o padrão de
cores não tiver sido respeitado pelo eletricista que criou a rede elétrica do local).
Pág.
Coordenação Pedagógica – Cursos Técnicos 57
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Pág.
Coordenação Pedagógica – Cursos Técnicos 58
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
• Situação 1:
Carregador de 15 W → I = 15 / 110 = 0,14 A
Desktop com fonte de 300 W → I = 300 / 110 = 2,73 A
Monitor 21’ de 28 W → I = 28 / 110 = 0,25 A
Televisão 32’ de 65 W → I = 65 / 110 = 0,59 A
Playstation 3 de 55 W → I = 55 / 110 = 0,50 A
Ventilador pequeno de 40 W → I = 40 / 110 = 0,36 A
Nesta situação, a soma das correntes chega a um valor de 4,6 A. Deste modo, a
tomada de 10 A será suficiente para suportar a carga necessária, e com uma boa
margem de segurança, operando longe do seu limite máximo. A corrente máxima
que passará pela tomada (e pela extensão consequentemente), permitiria o uso de
um fio com seção transversal a partir de 0,5mm (que suporta até 6 A) tanto na
tomada quanto na extensão. Porém, mesmo que a corrente máxima não vá ser
atingida, geralmente dimensionamos como se fosse. Nesse caso, tomada e extensão
deveriam suportar 10 A e assim necessitam utilizar um fio de seção transversal a
partir de 0,75mm (que suporta exatamente 10 A, mas estaria no limite) ou um fio
com seção transversal a partir de 1,0mm (que suporta 12 A, tendo então uma folga).
• Situação 2:
Carregador turbo power de 55 W → I = 55 / 110 = 0,5 A
Desktop gamer com fonte de 500 W → I = 500 / 110 = 4,5 A
Monitor 29’ de 68 W → I = 68 / 110 = 0,6 A
Televisão 58’ de 200 W → I = 200 / 110 = 1,8 A
Playstation 4 de 250 W → I = 250 / 110 = 2,3 A
Ventilador grande de 108 W → I = 108 / 110 = 1,0 A
Pág.
Coordenação Pedagógica – Cursos Técnicos 59
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
olharmos para os 20 A da tomada e quisermos um dimensionamento mais seguro
que permita a ela trabalhar com carga máxima (caso os equipamentos sejam
substituídos por similares ainda mais potentes no futuro), seria necessário um fio
com seção transversal mínima de 2,5 mm (suportando até 21 A, perto do limite de
20 A necessários em carga máxima) ou com seção transversal mínima de 4,0mm
(suportando até 28 A, com uma folga).
Pág.
Coordenação Pedagógica – Cursos Técnicos 60
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Sim e não. Não é a tomada a responsável pela corrente que circulará pelo segmento
e sim os equipamentos conectados a ela. Imagine que em cada uma colocamos uma
extensão onde mais 5 equipamentos podem ser ligados. Se, por exemplo, a soma da
corrente na primeira tomada (já vimos anteriormente como calcular a corrente
máxima através das potências dos equipamentos) ficar em 12 A, a da segunda em
6 A e a da terceira em 8 A, a corrente total no segmento A será de 26 A, suportada
pelos disjuntores. Porém, se colocamos as três tomadas de 20 A, abrimos a
possibilidade de termos, em todas elas, equipamentos de média ou alta potência.
Imagine que em uma toma temos um aquecedor necessita de 15 A, em outra tomada
uma torneira elétrica que necessita de 12 A e na outra tomada um micro-ondas que
necessita de 14 A. Se olharmos individualmente, nenhum desses equipamentos
ultrapassa os 20 A suportados pelas suas respectivas tomadas. Porém, a corrente
total gerada será de 41 A, superior à suportada pelo disjuntor. Então, toda vez que
os 3 equipamentos forem ligados juntos, uma sobrecarga será gerada no disjuntor
e o mesmo irá desarmar para evitar danos à rede. Já se tivéssemos uma tomada de
20 A e duas de 10 A, somente na primeira poderíamos ligar equipamentos de média
ou alta potência, pois nas de 10 A os plugs nem entram. Assim, mesmo que todas
trabalhassem na carga máxima suportada, ainda assim a soma das correntes seria
de 40 A, a mesma suportada pelo disjuntor. Assim, temos um melhor
dimensionamento no segmento.
Pág.
Coordenação Pedagógica – Cursos Técnicos 61
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Sim, mas desde que ele nunca seja ligado enquanto o chuveiro está sendo utilizado!
Pela mesma lógica do exemplo do ar-condicionado, a corrente do chuveiro seria de
3200 / 110 = 29,1 A. Assim, o chuveiro em potência máxima consome quase o limite
de corrente suportada pelo disjuntor. Se quisermos ligar um secador de cabelo de
250 W, o mesmo irá necessitar de 250 / 110 = 2,3 A. Então, com os dois ligados, a
corrente no segmento chegará à 32,2 A e o disjuntor desarmará.
NÃO! A proteção dos disjuntores está justamente no fato de eles limitarem a corrente
em um segmento. Uma das coisas mais perigosas que se pode fazer (e acredite, é
mais comum do que se imagina) é, incomodado por um disjuntor que desarma toda
hora, alguém substituí-lo por outro de maior capacidade. Isso permitirá correntes
muito altas que podem incendiar os fios do segmento sem que o disjuntor desarme.
Muitas vezes, o disjuntor é dimensionado justamente pensando na máxima corrente
que os fios utilizados no segmento suportam.
Pág.
Coordenação Pedagógica – Cursos Técnicos 62
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
5) Como dimensionar um disjuntor com base na seção transversal dos fios
utilizados no segmento?
Pág.
Coordenação Pedagógica – Cursos Técnicos 63
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
UNIDADE 3 – INTRODUÇÃO AO ARDUINO
A popularização do Arduino fez com que a placa tivesse uma série de variantes
diferentes, com características diferentes que tornassem o uso de uma ou de outra mais
adequado a diferentes tipos de projetos. Essa flexibilidade foi um dos motivos que ajudo
ainda mais na popularização da plataforma e na sua incorporação em massa em projetos
tanto acadêmicos, quanto do mundo Maker.
Pág.
Coordenação Pedagógica – Cursos Técnicos 64
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Pág.
Coordenação Pedagógica – Cursos Técnicos 65
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
dele, com exceção da conexão USB do tipo micro para acompanhar o seu tamanho enxuto.
Pág.
Coordenação Pedagógica – Cursos Técnicos 66
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
binárias interpretadas como caracteres, como comandos ou como
ordens de movimentação do ponteiro do mouse, o que, na prática,
possibilita o controle do dispositivo ao qual está conectado.
Imagine o Leonardo ligado em um Windows que necessitamos
enviar um sinal de desligamento quando determinada situação
ocorrer, ou escrever diretamente em um documento do Word, ou
então controlar o mouse permitindo realizar interações com a
interface. As possibilidades são expandidas com o uso do chip ATmega32uA. Quanto a
portas, alimentação e saídas, ele se equipara ao Arduino Uno.
Pág.
Coordenação Pedagógica – Cursos Técnicos 67
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
facilmente como um dispositivo USB e simular para o sistema operacional ao qual está
conectado, ser um joystick, um teclado ou um mouse.
Pág.
Coordenação Pedagógica – Cursos Técnicos 68
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Como visto até aqui, os Arduinos possuem uma série de portas diferentes, cada uma
dedicada a um determinado fim e em números diferentes. Ao planejar um projeto, conhecer
essas portas é fundamental para dimensionar nosso circuito, verificar a oferta das portas
necessárias e, principalmente, saber fazer o melhor uso possível de cada uma. Nesta
disciplina, utilizaremos o Arduino Uno R3 e por isso analisar a sua pinagem (Pinout) é
fundamental. Então, vamos analisar o esquemático abaixo e a partir dele falar um pouco
sobre as principais portas.
Pág.
Coordenação Pedagógica – Cursos Técnicos 69
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
de tempos em tempos é realizada uma leitura dessa tensão e a presença ou ausência da
mesma é convertida em um conjunto de 0 e 1. De forma análoga, o mesmo ocorre quando
as portas digitais funcionam com portas de saída, escrevendo na porta 0 ou 1 (ou seja,
sem tensão ou com tensão) de tempos em tempos. Estas portas são indicadas para
trabalhar com sensores e atuadores que também utilizem sinal digital, mas também como
portas de controle, ligando e desligando dispositivos externos (seja um led, seja um relé).
Na leitura de dados (de um sensor, por exemplo) é possível receber diretamente o valor
exato da grandeza medida de forma binária.
Pág.
Coordenação Pedagógica – Cursos Técnicos 70
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
5.2.6 Porta RX e TX
Os pinos digitais 0 e 1 do Arduino Uno, são dedicados às portas RX e TX. Elas são
portas de comunicação serial direta, capazes de enviar comandos e informações (TX =
Transmiter) ou de receber comandos e informações (RX = Receiver) que são interpretadas
pela placa. Isso permite desde a programação do Arduino por outro Arduino (como o Pro
Micro ou o LilyPad que não possuem entrada USB para carregar os códigos através do
Pág.
Coordenação Pedagógica – Cursos Técnicos 71
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
bootloader), de um sensor ou atuador pelo Arduino (configurar os parâmetros de uma rede
WiFi em um módulo ESP8266) ou mesmo para que Arduinos possam trocar informações
durante o funcionamento (mensagens, valores de variáveis, medições, etc).
Pág.
Coordenação Pedagógica – Cursos Técnicos 72
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Pág.
Coordenação Pedagógica – Cursos Técnicos 73
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
A próxima janela aberta traz as informações da licença de uso. Após lê-la, caso aceite,
clique no botão “I Agree”. Posteriormente, na tela de seleção de componentes a serem
instalados, podemos deixar todos marcados, como já acontece por padrão, e clicar em Next.
A próxima tela permite personalizar o local de instalação. Caso queira alterar o local
padrão, clique em Browse. Para confirmar o local, clique em Next.
Pág.
Coordenação Pedagógica – Cursos Técnicos 74
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Após a instalação concluída, será exibida a última janela, mostrando que a execução do
setup está completa. Basta então clicar em Close.
Para verificar se a instalação aconteceu de forma correta, localize o ícone do Arduino IDE
(ou pesquisa através das ferramentas de seu sistema operacional) e clique sobre ele.
Pág.
Coordenação Pedagógica – Cursos Técnicos 75
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Pág.
Coordenação Pedagógica – Cursos Técnicos 76
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
A terceira e última configuração inicial é dizer à nossa IDE a pasta base utilizada
para o salvamento de nossos projetos. No Windows, por padrão, é criada uma pasta
Arduino dentro da pasta Documentos do usuário. Para alterar, basta clicar no menu
Arquivo e após na opção Preferências. Na janela aberta, podemos então alterar o caminho.
Pág.
Coordenação Pedagógica – Cursos Técnicos 77
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Com nosso código pronto, precisamos agora salvar o projeto. Para isso, devemos
clicar no menu Arquivo e após na opção Salvar (ou utilizar o atalho Ctrl + S). Podemos
então dar um nome ao nosso projeto (neste exemplo, TesteArduino) e selecionar um local
para o salvamento (sendo que o diretório padrão configurado anteriormente será indicado).
Pág.
Coordenação Pedagógica – Cursos Técnicos 78
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Caso algum erro for encontrado no código durante a compilação (para conseguir dar
um exemplo, removemos propositalmente o ponto e vírgula do final do comando da
penúltima linha) a barra inferior se tornará laranja e dentro da área escura o erro
encontrado será indicado.
Pág.
Coordenação Pedagógica – Cursos Técnicos 79
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Após o carregamento do código para a placa, o mesmo já está pronto para começar
a ser executado pelo Arduino. Não importa se a alimentação se der via USB (como está
acontecendo), via conector de energia ou via pino Vin (utilizando fontes externas nestes
dois últimos casos): enquanto estiver em funcionamento, a placa está rodando o último
código carregado nela. E o interessante é que como essa memória que recebe o programa
não é uma memória volátil, não importa se o Arduino for desligado por dias. Ao voltar a
ser ligado, o código volta a ser executado pois está gravado dentro da placa.
Vamos testar então se esta execução está ocorrendo com sucesso. O comando
Serial.println utilizado no exemplo, faz com que o Arduino envie via Serial (para quem
estiver conectado através da USB a ele, neste caso, nosso PC), a mensagem “Testando
arduino”, em um loop que se repete a cada 1 segundo. A Arduino IDE possui uma
ferramenta que permite monitorar tudo que é recebido e enviado através da porta COM
(Serial). Então, através dela, se o código está sendo executado corretamente e mensagem
está sendo enviada com sucesso, conseguiremos visualizá-la. Esta ferramenta se chama
Pág.
Coordenação Pedagógica – Cursos Técnicos 80
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Monitor Serial e é acessada através do menu Ferramentas. Então, com o Arduino ainda
ligado ao PC e já com o programa carregado para a sua memória, abra o monitor serial e
verifique se a velocidade (frequência) de funcionamento que ele está utilizando é a mesma
com a qual configuramos o envio Serial da placa no código (no nosso caso, 9600, que é a
velocidade padrão). Deste modo, a mensagem deverá ser visualizada e perceberemos que
a cada 1 segundo ela é enviada novamente.
Pág.
Coordenação Pedagógica – Cursos Técnicos 81
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
<porta>
número da porta que queremos definir o modo
<modo>
modo de funcionamento da porta, que pode receber os
valores. Pode receber os valores:
Pág.
Coordenação Pedagógica – Cursos Técnicos 82
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
<porta>
número da porta que queremos definir o estado de saída
<estado>
Estado lógico da porta. Pode receber os valores:
Pág.
Coordenação Pedagógica – Cursos Técnicos 83
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
modulação dos estados, porém ao invés de trabalhar com percentuais, a placa trabalha
com níveis que podem ir de 0 (equivalente a 0V) até 255 (valor máximo, equivalente à 5V).
Qualquer valor intermediário entre 0 e 255 gera então uma tensão de saída entre 0V e 5V.
Para isso, utilizamos o seguinte método:
<porta>
número da porta que queremos definir o estado de saída
<valor_pwm>
valor da modulação PWM entre 0 e 255 que irá gerar uma
tensão média de saída entre 0V e 5V
delay( <tempo> );
<tempo>
tempo de parada, informado em milissegundos (ou seja, cada
1000 equivale a 1 segundo)
Pág.
Coordenação Pedagógica – Cursos Técnicos 84
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
loop: o método loop é o principal do Arduino e o responsável pela execução do nosso código
de forma contínua. Trata-se de um laço de repetição infinito que lê cada uma das linhas
de comando do seu bloco, de forma sequencial e, ao chegar ao seu final, volta para o início
e começa novamente a execução desde a primeira linha novamente. Assim, o Arduino não
utiliza o paradigma de orientação a eventos, onde temos listeners especializados (rotinas
que monitoram um estado ou comportamento) que disparam funções programadas. Aqui,
a cada loop, coletemos e verificamos dados para, com base neles, podermos tomar decisões
e/ou executar ações. Isso torna a programação muito mais natural, simples e amigável,
porém traz problemas para a execução de tarefas simultâneas, visto que cada comando
precisa esperar sua hora de ser executado. Geralmente o loop inicia ou termina com uma
interrupção temporizada, controlando assim, sua frequência de execução.
Pág.
Coordenação Pedagógica – Cursos Técnicos 85
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
de 100), obrigando que a corrente passe por ele, reduzindo-a assim em todos os 3
segmentos, garantindo proteção para que o led não queime. Assim, a montagem do circuito
deverá ficar como a abaixo:
Toda vez que uma das portas tiver seu estado de saída alterado para alto, ela
fornecerá uma tensão de 5V que fará com que uma corrente atravesse o led (saindo pelo
GND) e o iluminando. Para isso, porém, necessitamos que antes as portas digitais sejam
configuradas como portas de saída e é justamente por aí que vamos começar a nossa
programação. Dentro do setup, duas coisas são necessárias: tornar as 3 portas digitais
portas de saída (através do método pinMode) e garantir que elas iniciam em estado baixo
(através do método digitalWrite). Então, teremos:
void setup(){
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
}
Agora, dentro do loop, podemos alternar as portas entre os estados alto e baixo (com o
método digitalWrite) e, assim, acender e apagar os leds. A criação de sequências diferentes
consequentemente implica em diferentes padrões de comportamento para o acendimento
dos leds. Deste modo, podemos utilizar a programação para gerar efeitos de movimento e
sequência. Vamos ver três entre as infinitas possibilidades e o efeito do código no padrão:
Pág.
Coordenação Pedagógica – Cursos Técnicos 86
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Padrão 1: caso nosso código do loop seja igual a
void loop(){ este, o padrão de funcionamento dos leds será o
digitalWrite(5, HIGH); seguinte: o primeiro led (da porta 5) liga e após
delay(1000);
digitalWrite(5, LOW); um segundo, desliga. Após mais um segundo, o
delay(1000);
segundo led (da porta 6) liga e um segundo
digitalWrite(6, HIGH);
delay(1000); depois, desliga. Após mais um segundo, o terceiro
digitalWrite(6, LOW);
delay(1000); led (da porta 7) liga e um segundo depois, desliga.
digitalWrite(7, HIGH); Assim temos um acendimento sequencial e um
delay(1000);
digitalWrite(7, LOW); desligamento sequencial, led a led, da esquerda
delay(1000);
para a direita.
}
Pág.
Coordenação Pedagógica – Cursos Técnicos 87
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
5.4.7 Exemplo 2: ligando o led e regulando a intensidade com PWM
Neste segundo exemplo, nosso objetivo é realizar o controle de apenas um led com
o Arduino, mas não somente o ligando e o desligando, mas controlando a sua luminosidade
através da modulação da tensão na saída (variando o Duty Cycle). Para isso, vamos ligar
o led (através do pino positivo) em uma porta digital PWM, indicadas com um sinal de til
(~) ao lado do número (no nosso exemplo, na porta 5). O outro pino deverá ser ligado ao
negativo (no Arduino, a porta GND) passando por um resistor (no nosso caso, de 100)
para baixar a corrente e evitar a sua queima. Assim, a montagem do circuito deverá ficar
como a abaixo:
void setup(){
pinMode(5, OUTPUT);
digitalWrite(5, LOW);
Agora, dentro do loop, vamos fazer com que a cada 1 segundo a intensidade do led aumente
até que, ao atingir seu valor máximo, apague novamente. Para isso devemos utilizar o
método analogWrite e escrever na porta um valor entre 0 e 255. Quando mais perto de 0,
mais próximo de 0V. Quanto mais perto de 255, mais próximo de 5V. No exemplo, iremos
Pág.
Coordenação Pedagógica – Cursos Técnicos 88
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
aumentar essa intensidade variando o valor que controla o Duty Cycle de 50 em 50. Deste
modo, o led inicia apagado e a cada segundo aumenta um pouco a sua intensidade por
conta da maior tensão recebida e,
void loop(){
consequentemente, da maior corrente gerada
analogWrite(5, 50);
delay(1000); que o atravessa. Caso desejado, conseguimos
analogWrite(5, 100); calcular a tensão correspondente ao valor
delay(1000);
utilizado no analogWrite aplicando uma regra de
analogWrite(5, 150);
delay(1000); 3. Exemplo:
analogWrite(5, 0); 50 = x
delay(1000);
De forma análoga, descobrimos que neste nosso exemplo, um valor de 100 no analogWrite
para controle do Duty Cycle, produz uma tensão de saída próxima à 2V, assim como um
valor de 150 produz uma tensão de saída próxima à 3V, um valor de 200 produz uma
tensão de saída próxima à 4V e um valor de 250 produz uma tensão de saída próxima à
5V. Lógico que caso a intensão seja descobrir esses valores posteriormente à construção
do circuito, o uso de um multímetro facilitaria e tornaria desnecessários os cálculos. Mas
quando pensamos no dimensionamento prévio, calcular estes mapeamentos é importante.
UNIDADE 4 - SENSORES
Pág.
Coordenação Pedagógica – Cursos Técnicos 89
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
também pela profusão de dispositivos eletroeletrônicos cada vez mais “inteligentes”,
surgiram diversos sensores de baixo custo e fácil uso. Queremos neste capítulo, trazer
uma coletânea dos principais sensores utilizados em conjunto com o Arduino (e em outras
placas similares em projetos Maker) e os códigos e técnicas utilizados para acessar suas
informações. Mas para isso, precisamos primeiramente entender como o Arduino lê as
informações dos mesmos.
Pág.
Coordenação Pedagógica – Cursos Técnicos 90
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
já o sensor de cor RGB é um sensor de valor binário e alterna seus estados altos e baixos
para enviar ao Arduino, de modo binário, os valores de composição das 3 matizes que
compõe a cor (no caso 246 de vermelho, 165 de verde e 76 de azul, resultando em um tom
de laranja); finalmente o sensor de temperatura varia a sua tensão de acordo com a
temperatura medida e envia ao Arduino 2,3658 volts, que serão convertidos em um valor
entre 0 e 1023 (adiante entenderemos isso) que finalmente é mapeado para a temperatura
medida (no caso, 395ºC). Isso é importante para ilustrar que para podermos trabalhar
facilmente com sensores no Arduino, necessitamos entender não só como os diferentes
tipos de sensores enviam os dados gerados em resposta aos estímulos mas,
principalmente, como o Arduino deve lê-los e interpretá-los.
digitalRead( <porta> );
<porta>
porta à qual o sensor de resposta binário está ligado
resposta:
a resposta do método será o estado LOW (0) ou HIGH (1)
Pág.
Coordenação Pedagógica – Cursos Técnicos 91
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
exemplo, o pino de sinal será ligado na porta 6, enquanto o positivo do led será ligado à
porta 5 (com seu o negativo em série com um resistor de 250). Deste modo, temos um
circuito como o esquematizado a seguir:
Com a ligação eletrônica concluída, devemos programar o Arduino para que quando
o PIR detectar movimento em seu entorno, o led indicativo ser aceso. Previamente, devemos
informar que a porta de sinal do PIR (6) é uma porta de entrada (INPUT), enquanto a porta
do led (5) é uma porta de saída (OUTPUT). Já no loop realizamos a leitura digital da porta
de sinal para detectar se o mesmo está baixo (neste caso desligamos o led) ou alto (neste
caso, ligamos o led). Assim, nosso código será como o apresentado a seguir:
void setup(){
pinMode(5, OUTPUT);
pinMode(6, INPUT);
digitalWrite(5, LOW);
}
void loop(){
delay(1000);
if(digitalRead(6) == HIGH) {
digitalWrite(5, HIGH);
} else {
digitalWrite(5, LOW);
}
}
Pág.
Coordenação Pedagógica – Cursos Técnicos 92
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
o código para a leitura do estado seria exatamente o mesmo, sem qualquer mudança.
Então, vamos conhecer alguns dos principais sensores desta categoria.
Pág.
Coordenação Pedagógica – Cursos Técnicos 93
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
permitindo a passagem de corrente. Também conta com um trimpot para ajuste da
sensibilidade de vibração.
- Detector de metais
- Detector de minerais polarizados (imãs)
- Acesso a data center para evitar entrada com materiais magnéticos
Pág.
Coordenação Pedagógica – Cursos Técnicos 94
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
- Qualquer tipo de projeto que necessite detectar clique de botão para executar,
ajustar ou programar algo.
- Qualquer tipo de projeto que necessite detectar click de botão para executar,
ajustar ou programar algo, assim com o push button.
Pág.
Coordenação Pedagógica – Cursos Técnicos 95
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
- Qualquer tipo de projeto que necessite ligar ou desligar um circuito ou sub circuito
através de um botão ou que necessite de combinações de estado para configurações.
Pág.
Coordenação Pedagógica – Cursos Técnicos 96
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
HIGH (geralmente utiliza-se um disco perfurado ou um pino achatado, presos à parte
móvel). Já no encoder magnético, existe um imã que é preso na parte móvel e um
dispositivo eletrônico com uma chave reed switch (ou um outro
sensor magnético) que detecta quando este imã passa por ele,
alterando então o estado para HIGH. Ambos são muito úteis quando
trabalhamos com motores, sistemas mecânicos com giros em eixos
ou mesmo para estimar a frequência de funcionamento de máquinas
e ferramentas com partes móveis.
Pág.
Coordenação Pedagógica – Cursos Técnicos 97
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
de execução está muito alta. Então, perdemos totalmente a precisão da leitura. É aí que
entram as interrupções.
<interrupcao>
número da interrupção que queremos monitorar (0 – pino 2 ou 1 – pino 3)
<metodo>
método que será chamado a cada nova chamada da interrupção
<modo>
modo de disparo da interrupção. Pode receber os seguintes valores:
Além disso, para ativar a interrupção e ela agir nas mudanças de estado, utilizamos
o método sei() e para interromper a interrupção utilizamos o método cli(). Para entender e
ver na prática o uso das interrupções, vamos a dois exemplos práticos.
Pág.
Coordenação Pedagógica – Cursos Técnicos 98
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Pág.
Coordenação Pedagógica – Cursos Técnicos 99
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
int pulsos;
void contaPulso(){
pulsos++;
}
void setup(){
attachInterrupt(0, contaPulso, RISING);
Serial.begin(9600);
}
void loop(){
pulsos = 0;
sei();
delay(1000);
cli();
Entendendo o código: começamos criando uma variável inteira chamada de pulsos, que
irá contar o número de pulsos lidos. Essa variável será incrementada pelo método
contaPulso a cada vez que ele for chamado pela interrupção, aumentando seu valor em 1.
Dentro do setup, usamos o attachInterrupt para vincular o método contaPulso à
interrupção 0 que será acionada sempre que perceber uma mudança de LOW para HIGH
Pág.
Coordenação Pedagógica – Cursos Técnicos 100
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
(ou seja, do tipo RISING). Além disso no setup inicializamos nossa Serial para que
possamos escrever nela os resultados e visualizá-los posteriormente. Após, em cada
repetição do loop, zeramos a variável pulsos, ativamos a nossa interrupção com o método
sei (passando a contabilizar os pulsos), paramos a execução do código por exatamente 1
segundo e após desativamos a nossa interrupção com o método cli (terminando assim a
contagem de pulsos). Como a interrupção funciona independentemente da execução do
código principal, mesmo com ele parado no delay, os pulsos seguem sendo contabilizados
pelo período estabelecido. Ao final de 1 segundo, podemos finalmente pegar o total de
pulsos contabilizados e dividir por 20 para descobrir o total de voltas dadas neste segundo
e com estas voltas descobrir a velocidade em metros por segundo e após (multiplicando
por 3,6) em quilômetros por hora. Se tudo estiver certo, ao abrir o Monitor Serial devemos
ter uma saída parecida com esta:
Esse processo com uso de interrupções pode ser utilizado por qualquer tipo de
sensor que nos devolva uma mudança de estado que desejamos monitorar a frequência
(ocorrências em um determinado tempo). Então, este exemplo pode ser utilizado de base
para situações similares ou para sensores de funcionamento similar.
Pág.
Coordenação Pedagógica – Cursos Técnicos 101
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Assim, teremos um esquema eletrônico similar ao representado abaixo:
int pulsos;
void contaPulso(){
pulsos++;
}
void setup(){
attachInterrupt(0, contaPulso, RISING);
Serial.begin(9600);
}
void loop(){
pulsos = 0;
sei();
delay(1000);
cli();
Pág.
Coordenação Pedagógica – Cursos Técnicos 102
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Entendendo o código: o funcionamento é análogo ao funcionamento do código do encoder
então a mesma explicação vale para este exemplo. A única diferença é que após a obtenção
do total de pulsos em um segundo, utilizamos este total para calcular informações
diferentes (litros por segundo, por minuto e por hora). Se tudo funcionou corretamente,
devemos ter uma saída similar à essa em nosso Monitor Serial:
digitalRead( <porta> );
<porta>
porta à qual o sensor analógico está ligado
resposta
a resposta do método será um valor entre 0 e 1023
Algumas vezes esse valor é utilizado diretamente, mas algumas vezes necessitamos
convertê-lo em alguma unidade da grandeza que está sendo medida. Para isso,
necessitamos estabelecer uma relação entre os valores medidos pelo sensor e os
respectivos valores de resposta (entre 0 e 1023) da porta analógica. Podemos então usar
duas técnicas: o cálculo de uma constante de conversão ou o mapping dos valores. O
Pág.
Coordenação Pedagógica – Cursos Técnicos 103
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
problema do primeiro método é que necessitamos utilizar regras de 3 combinadas e caso
os sensores meçam grandezas que não partam de 0 (ou que usem negativos, como um
sensor de temperatura), ainda necessitamos considerar um offset (deslocamento) a ser
somado ao resultado obtido. Como isso é muito comum (ou seja, dificilmente o primeiro
valor lido pelo sensor é 0), o Arduino possui um método especial que nos ajuda a converter
o valor lido entre 0 e 1023 na unidade da grandeza medida, de acordo com o valor mínimo
e máximo obtido pelo sensor.
<valorLido>
valor lido na entrada analógica que queremos descobrir a quanto equivale
<minPorta>
valor gerado na porta digital quando o valor mínimo da grandeza desejada é lido
<maxPorta>
valor gerado na porta digital quando o valor máximo da grandeza desejada é lido
<minPorta>
valor mínimo da grandeza desejada lido pelo sensor
<maxPorta>
valor máximo da grandeza desejada lido pelo sensor
Pág.
Coordenação Pedagógica – Cursos Técnicos 104
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Pág.
Coordenação Pedagógica – Cursos Técnicos 105
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Esquema 2: LDR já encapsulado em uma placa com pullup incluído na mesma (neste
exemplo, o sensor tem como primeiro pino o VCC, o pino do meio o OUT que é a saída de
dados e o terceiro pino o GND).
Agora para a implementação de nossa lógica de ligar o led quando estiver escuro,
teremos:
void setup(){
pinMode(A0, INPUT);
pinMode(3, OUTPUT);
digitalWrite(3, LOW);
Serial.begin(9600);
}
void loop(){
delay(100);
int valorLido = analogRead(A0);
Serial.println(“Valor da luminosidade: ” + (String)valorLido);
Pág.
Coordenação Pedagógica – Cursos Técnicos 106
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Nossa lógica será muito similar ao exemplo do LDR, pois necessitamos a cada loop
ler a porta A0 e descobrir o valor que o sensor de gás está enviando para ela (entre 0 e
1023) para, de acordo com esse valor, ligar ou não o led. Vamos considerar que o limite
máximo do valor lido e que representa a concentração de monóxido de carbono no
ambiente é de 400. Assim, teremos o seguinte código:
Pág.
Coordenação Pedagógica – Cursos Técnicos 107
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
void setup(){
pinMode(A0, INPUT);
pinMode(3, OUTPUT);
digitalWrite(3, LOW);
Serial.begin(9600);
}
void loop(){
delay(100);
int valorLido = analogRead(A0);
Serial.println(“Concentração de monóxido de carbono: ” + (String)valorLido);
Pág.
Coordenação Pedagógica – Cursos Técnicos 108
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
void setup(){
pinMode(A0, INPUT);
pinMode(3, OUTPUT);
digitalWrite(3, LOW);
Serial.begin(9600);
}
void loop(){
delay(100);
int valorLido = analogRead(A0);
Serial.println(“Quantidade de luz IR percebida: ” + (String)valorLido);
Pág.
Coordenação Pedagógica – Cursos Técnicos 109
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
quanto mais perto de 1023, mais à direita). O segundo pino analógico (chamado de VRy)
devolve valores entre 0 e 1023 que quantificam o movimento no eixo y (quando mais perto
de 0, mais para cima e quanto mais perto de 1023, mais para baixo). Já o pino digital
(chamado de SW) informa se o botão foi pressionado (LOW) ou não (HIGH). Assim, para
utilizarmos o joystick de modo a capturar os movimentos realizados pelo usuário e
transformar em ações, devemos ler os 3 valores. Apenas para exemplificar, vamos mostrar
como escrever uma mensagem na serial informando qual o movimento o usuário está
realizando no joystick. Para isso, vamos analisar o circuito eletrônico abaixo, onde o VRx
está ligado à nossa porta A0, o VRy ligado à porta A1 e o SW ligado à porta 3:
Para a detecção dos movimentos, utilizamos o código abaixo, que pode ser
modificado para que ações desejadas sejam efetivamente realizadas.
void setup(){
pinMode(A0, INPUT);
pinMode(A1, INPUT);
pinMode(3, INPUT_PULLUP);
Serial.begin(9600);
}
void loop(){
delay(100);
if(analogRead(A0) == 0) {
Serial.println(“Esquerda”);
}
if(analogRead(A0) == 1023) {
Serial.println(“Direita”);
}
if(analogRead(A1) == 0) {
Serial.println(“Para cima”);
}
if(analogRead(A1) == 1023) {
Serial.println(“Para baixo”);
}
if(digitalRead(3) == LOW) {
Serial.println(“Botão clicado”);
}
}
Pág.
Coordenação Pedagógica – Cursos Técnicos 110
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
void setup(){
pinMode(A0, INPUT);
Serial.begin(9600);
}
void loop(){
delay(100);
Pág.
Coordenação Pedagógica – Cursos Técnicos 111
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Entendendo o código: o mapping permitido pelo método map, torna o código muito
simples e evita a realização de cálculos massivos e complexos na conversão. No setup a
porta A0 está configurada como entrada pois através dela que receberemos o valor vindo
de sensor LM35. Inicializamos também a Serial para poder escrever nela (e posteriormente
visualizar) os resultados obtidos. Dentro do loop, a cada 100 ms, lemos a porta A0 e
armazenamos o valor na variável valorLido. Agora, necessitamos converter esse valor lido
(qualquer coisa entre 0 e 1023) em graus celsius. Como conhecemos as temperaturas
mínima e máxima passíveis de leitura pelo LM35 (0ºC à 150ºC na faixa de valor que
queremos utilizar) e qual o valor máximo e mínimo que essas leituras provocam na entrada
da porta analógica (0 a 350 conforme datasheet do componente), utilizamos o método map
para que o valor lido seja convertido e armazenado na variável temperatura. Após,
escrevemos na Serial qual o valor lido através do sensor e qual a temperatura respectiva
em graus celsius. Se tudo ocorreu bem, teremos no nosso Monitor Serial uma saída como
esta:
Porém, se estes décimos não são fundamentais para nosso projeto ou análise, torna-
se muito mais simples o uso da técnica de mapping através do método map do Arduino.
Pág.
Coordenação Pedagógica – Cursos Técnicos 112
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
6.3.7 Potenciômetro
Apesar dos potenciômetros serem componentes eletrônicos do tipo resistor variável,
podemos utilizá-los em nossos projetos como se fossem sensores dos quais conseguimos
detectar o giro. Para isso, basta conectar as suas extremidades ao 5V e o GND e o seu pino
central à uma porta analógica. Isso porque, ao girar o pino, a resistência gerada cria um
divisor de tensão entre o pino 5V e central e entre o central o GND. Deste modo,
conseguimos modificar a tensão que chega à porta digital, conforme o nosso giro. Para
testar, podemos criar um circuito eletrônico como o mostrado abaixo, com o pino central
do potenciômetro ligado à porta analógica A0 do Arduino e 3 leds ligados às portas digitais
3, 4 e 5.
Pág.
Coordenação Pedagógica – Cursos Técnicos 113
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
void setup(){
pinMode(A0, INPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
Serial.begin(9600);
}
void loop(){
delay(100);
int valorLido = 1000 - analogRead(A0);
float resistencia = map(valorLido, 0, 1000, 0, 5000);
Com o método map, o mapping do valor lido (algo entre 0 e 100) para transformação
em ohms (entre 0 e 5000) tornou-se simples. Agora, imagine que dentro do loop, logo após
as mensagens enviadas para a Serial com os valores, desejássemos que os leds fossem
ligados conforme o pino do potenciômetro fosse girado em sentido horário. Aqui,
poderíamos utilizar duas lógicas:
Pág.
Coordenação Pedagógica – Cursos Técnicos 114
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
if(faixaLed == 1) {
digitalWrite(3, HIGH);
digitalWrite(5, LOW);
digitalWrite(3, LOW);
}
if(faixaLed == 2) {
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
}
if(faixaLed == 3) {
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
}
Pág.
Coordenação Pedagógica – Cursos Técnicos 115
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
void setup(){
pinMode(A0, INPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
Serial.begin(9600);
}
void loop(){
delay(100);
int valorLido = analogRead(A0);
int faixa = map(valorLido, 0, 1023, 1, 4);
Pág.
Coordenação Pedagógica – Cursos Técnicos 116
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Neste exemplo, estamos apenas ligando e
if(faixa == 2) { //ressecado desligando leds como alerta para a umidade
digitalWrite(3, LOW);
digitalWrite(4, HIGH); percebida no solo, lembrando que quanto mais
digitalWrite(5, LOW);
digitalWrite(6, LOW); alta a faixa, mais úmido o solo (por causa do
}
if(faixa == 3) { //úmido modo como os valores analógicos são lidos, com
digitalWrite(3, LOW);
digitalWrite(4, LOW); o 0 sendo a menor umidade e o 1023 sendo a
digitalWrite(5, HIGH);
digitalWrite(6, LOW); maior umidade). Poderíamos modificar o
}
if(faixa == 4) { //encharcado exemplo para, caso a faixa de solo muito seco
digitalWrite(3, LOW);
digitalWrite(4, LOW); seja identificada, ligar um relé (que veremos no
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
capítulo de “Atuadores”), ativando uma bomba
}
de água ou válvula solenoide e realizando a sua
} rega.
Pág.
Coordenação Pedagógica – Cursos Técnicos 117
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Neste exemplo, vamos realizar o mapping com uma lógica um pouco diferente,
transformando o valor lido em um percentual de chuva que vá de 0 a 100. O problema é
que não é o 0 que representa a placa totalmente seca e o 1023 a placa totalmente molhada
e sim o inverso. Como fazemos o mapeamento das duas escalas, se uma está invertida em
relação à outra? Simples! Invertendo os valores de uma das escalas. Então, em nosso
código, após ler o valor da porta analógica, vamos transformá-lo em um percentual de 0 a
100 mas usando a escala de valor lido na porta invertida (1023 e 0 e não 0 e 1023).
Finalmente, caso o percentual de respingos na placa (chuva no nosso caso) for maior do
que 20 (que representa 20%) acionamos um motor por 10 segundos para puxar a corda e
proteger as roupas estendidas, por exemplo. Deste modo, temos:
void setup(){
pinMode(A0, INPUT);
pinMode(3, OUTPUT);
digitalWrite(3, LOW);
Serial.begin(9600);
}
void loop(){
delay(100);
int valorLido = analogRead(A0);
float percentual = map(valorLido, 1023, 0, 1, 100);
Vimos até aqui como ler os valores de sensores digitais de resposta binária (de forma
direta ou com uso de interrupções) e como ler valores de sensores analógicos (de forma
direta ou com o uso de mapping de valores). Os sensores de cada um desses dois grupos,
possuem um modo de uso similar, sendo perceptível que ao aprender um, entendemos
facilmente o funcionamento de outros.
Pág.
Coordenação Pedagógica – Cursos Técnicos 118
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
necessário um sincronismo para a leitura e, após, a conversão do valor para base decimal).
Outros nos devolvem mais de um resultado em uma única sequência binária, sendo
necessárias operações de base binária para separar os bits de cada informação. Outros
por causa de sua complexidade nos oferecem bibliotecas que já possuem métodos para
adquirirmos facilmente o valor, mas que no obrigam a instanciar um objeto através do
qual os métodos são acessados (alguns destes objetos devem ser configurados ou os pinos
previamente informados).
Não vamos neste capítulo aprofundar em todos eles, como fizemos nos capítulos
anteriores com os sensores digitais de respostas binária e com os sensores analógicos.
Porém, para alguns, vamos mostrar exemplos de uso (alguns detalhados, outros
resumidos) e para outros vamos comentar o seu uso e importância e indicar sites que
explicam de forma detalhada projetos com o seu uso.
Pág.
Coordenação Pedagógica – Cursos Técnicos 119
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Por ser de valor binário, este sensor ultrassônico devolve como resposta uma
sequência de bits (0 e 1, através da alternância do estado baixo e alto na porta), cuja
captura e manipulação direta exigiria um trabalho grande. Por isso ele possui uma
biblioteca própria que contém métodos já programados para uso e que facilitam a captura
do valor medido. Neste caso, a biblioteca é a “Ultrassonic.h” e primeiramente precisamos
fazer o seu download:
Pág.
Coordenação Pedagógica – Cursos Técnicos 120
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Após, necessitamos adicionar a biblioteca à nossa Arduino IDE. Para isso, devemos
clicar no menu “Sketch”, após em “Incluir biblioteca” e finalmente na opção “Adicionar
biblioteca .ZIP”:
Pág.
Coordenação Pedagógica – Cursos Técnicos 121
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
2) O acesso ao sensor ultrassônico, conforme definição da biblioteca, se dá através
da declaração de um objeto Ultrassonic, que ao ser criado deve receber como
parâmetro duas informações: a porta digital do Arduino onde está ligado o pino
Trigger (no nosso exemplo, na 7) e a porta digital do Arduino onde está ligado o
pino Echo (no nosso exemplo, na 6);
Com essas informações, vamos construir um código que a cada 1 segundo, ativa o
sensor ultrassônico e pede a ele o valor da distância do objeto mais próximo, capturando
esse valor e escrevendo na nossa Serial, para que possamos visualizá-lo através do Monitor
Serial da nossa IDE. Deste modo temos:
#include <Ultrassonic.h>
Ultrassonic ultrassom(7,6);
void setup(){
Serial.begin(9600);
}
void loop(){
delay(1000);
Pág.
Coordenação Pedagógica – Cursos Técnicos 122
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Pág.
Coordenação Pedagógica – Cursos Técnicos 123
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
No momento que um filtro de cor é ativado e o pino OUT passa a enviar uma
frequência produzida pela reação do fotodiodo àquela cor (dentro da escala de saída
configurada), podemos medir o total de unidades de tempo de 0 a 255 de duração da onda.
Essa é a forma do sensor nos devolver o valor da cor detectada. Podemos fazer isso através
do método pulseIn, que pode ser visto abaixo:
<porta>
número da porta que queremos medira duração dos pulsos da frequência de saída
<tipo>
Tipo de pulso a ser lido (LOW – tempo em estado baixo / HIGH – tempo em estado alto)
Neste nosso exemplo, vamos ligar os pinos S0, S1, S2 e S3 nas portas 4, 5, 6 e 7 do
Arduino. Além disso, o pino de saída de sinal (OUT) será ligado à porta 3 do Arduino. Deste
modo, teremos um circuito eletrônico como o mostrado a seguir (simplificado pela
quantidade de fios, sem protoboard e com o sensor ligado direto à placa):
Pág.
Coordenação Pedagógica – Cursos Técnicos 124
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
void setup(){
pinMode(OUT, OUTPUT);
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
Serial.begin(9600);
}
Pág.
Coordenação Pedagógica – Cursos Técnicos 125
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
void loop(){
delay(1000);
Serial.println(“R: ” + (String)r);
Serial.println(“G: ” + (String)g);
Serial.println(“B: ” + (String)b);
}
Entendendo o código: começamos criando constantes que contém os nomes dos pinos e
o valor respectivo. O uso de constantes é bem interessante no C++ para organização do
nosso código, principalmente quando temos objetos que possuem um valor fixo, que não
se altera ao longo do código. Duas constantes do Arduino bem conhecidas são o LOW (cujo
valor mapeado é 0) e o HIGH (cujo valor mapeado é 1). Do modo como foram criadas, ao
usar no código a palavra S0, por exemplo, automaticamente a mesma é substituída por
seu valor respectivo (no caso 4) no momento da compilação. Continuando, os pinos
correspondentes às constantes criadas, são informados como de saída dentro do setup.
Ainda no setup, a escala de frequência de 20% do sensor (valor padrão para as placas de
prototipagem) é configurada através da combinação de S0 em estado HIGH e S1 em estado
LOW (conforme a primeira tabela apresentada). Além disso, nossa Serial é inicializada para
podermos escrever e visualizar os resultados. No loop, para que cada cor seja lida é
necessária a configuração do filtro da cor respectivo e a consequente leitura do tempo do
pulso gerado pela reação do fotodiodo àquela cor. Como esse valor é mapeado de 0 até 255
unidades de tempo (para que gere um valor de cor entre 0 e 255), a leitura simples do
mesmo na saída (OUTPUT) corresponde ao valor daquela cor RGB. Primeiramente
configuramos o filtro de cor para vermelho (S2 e S3 em LOW conforme a segunda tabela
apresentada) e lemos o tempo do pulso com o pulseIn, armazenando o resultado na variável
inteira r. Depois, configuramos o filtro de cor para verde (S2 e S3 em HIGH conforme a
segunda tabela apresentada) e lemos o tempo do pulso com o pulseIn, armazenando o
resultado na variável inteira G. Finalmente, configuramos o filtro de cor para azul (S2 em
Pág.
Coordenação Pedagógica – Cursos Técnicos 126
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
LOW e S3 em HIGH conforme a segunda tabela apresentada) e lemos o tempo do pulso
com o pulseIn, armazenando o resultado na variável inteira b. Para finalizar, escrevemos
os valores das 3 variáveis em nossa Serial. Com isso, um resultado similar a este deverá
ser visualizado através do nosso Monitor Serial:
Pág.
Coordenação Pedagógica – Cursos Técnicos 127
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
do sensor e o segundo é qual o tipo de sensor, visto que a mesma biblioteca serve para
outros sensores da mesma família (no nosso caso, utilizamos a constante DTH11). Esta
biblioteca necessita de uma biblioteca secundária desenvolvida pela Adafruit e utilizada
na implementação de diversos sensores, chamada de AdafruitSensor. Porém, em nosso
código, apenas a primeira necessita de include.
#include <DHT.h>
DHT dht(3,DHT11);
void setup(){
Serial.begin(9600);
dht.begin();
}
void loop(){
delay(1000);
https://www.filipeflop.com/blog/como-gravar-dados-no-cartao-rfid
Pág.
Coordenação Pedagógica – Cursos Técnicos 128
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Nesse esquema, foram colocados também dois leds (um verde e um vermelho) como um
auxílio visual mostrando se o cartão liberou ou não o acesso.
Os 4 primeiros pinos do sensor RFID, são ligados nos 4 pinos digitais que
implementam a comunicação SPI no Arduino em uma sequência fixa. A ligação efetuada
está descrita na tabela abaixo:
Além destes, o pino RST do sensor (pino 7) deve ser ligado à uma porta digital PWM
que pode ser escolhida (neste exemplo optou pela porta 9), o pino GND ao GND do Arduino
e o pino VCC ao 3,3V do Arduino. Muito cuidado aqui, pois este sensor pode ser danificado
se submetido à uma tensão de 5V. Para finalizar, o pino positivo do led verde foi ligado à
porta digital 3 e o pino positivo do led vermelho foi ligado à porta digital 4.
OBSERVAÇÃO: Para o uso do sensor RFID teremos que importar 1 biblioteca não nativa
para nossa IDE: MFRC522, que pode ser baixada no link: https://bit.ly/arduinoqi
Pág.
Coordenação Pedagógica – Cursos Técnicos 129
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
#include <SPI.h>
#include <MFRC522.h>
void setup(){
Serial.begin(9600);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
void loop(){
//busca novos cartões e quando encontra seleciona um para ser lido
if( !sensor.PICC_IsNewCardPresent() ) { return; }
if( !sensor.PICC_ReadCardSerial() ) { return; }
delay(3000);
Pág.
Coordenação Pedagógica – Cursos Técnicos 130
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Entendendo o código: o código utilizado é de um nível mais avançado e não cabe aqui
explicar de forma aprofundada cada linha e método apresentado. O importante é entender
a ideia geral para poder utilizar o sensor RFID nos projetos desejados. Primeiramente
criamos um objeto MFRC522, responsável por representar o sensor RFID e oferecer acesso
à métodos para trabalhar com ele. Ainda antes do setup, um vetor (array) de Ids permitidos
foi criado, já recebendo dois Ids que quando lidos podem liberar o acesso. Quando você for
reproduzir os seus exemplos, aproxime a TAG desejada do sensor, anote o Id mostrado no
monitor serial e acrescente ou substitua os Ids deste vetor. Dentro do setup, após a
inicialização da Serial e da definição das portas dos leds como saída (iniciando em estado
LOW), a comunicação SPI e o objeto que representa o sensor RFID são inicializados. No
loop, forçamos que o sensor RFID fique continuamente tentando detectar novas TAGs RFID
e, quando detectada, que a mesma seja lida. No momento que isso acontece, forçamos um
laço de repetição que percorre todo vetor interno do sensor (que armazena o Id lido de
forma binária) e transformamos cada uma das sequências em caracteres hexadecimais
para que o Id lido possa ser mostrado na nossa Serial. Logo após, em um novo laço,
percorremos o vetor de Ids permitidos, comparando um a um com aquele que acabou de
ser lido pelo sensor, verificando se é um dos permitidos. Caso seja, informamos sobre o
acesso liberado na Serial e ligamos o led verde. Caso contrário, informamos sobre o acesso
negado e ligamos o led vermelho. Esse exemplo poderia ser modificado para, por exemplo,
ao invés de ligar um led, ligar um relé pela porta digital que solte ou puxe uma trava
elétrica, liberando ou bloqueando uma porta ou portão.
Pág.
Coordenação Pedagógica – Cursos Técnicos 131
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
#include <Wire.h>
void setup(){
Serial.begin(9600);
void loop(){
delay(10);
Pág.
Coordenação Pedagógica – Cursos Técnicos 132
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
https://www.usinainfo.com.br/blog/balanca-arduino-com-celula-de-peso-e-hx711-
tutorial-calibrando-e-verificando-peso/
Pág.
Coordenação Pedagógica – Cursos Técnicos 133
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
https://www.filipeflop.com/blog/como-utilizar-o-sensor-de-gestos-e-rgb-sparkfun/
https://blogmasterwalkershop.com.br/arduino/como-usar-com-arduino-sensor-de-
gestos-e-de-cor-apds-9960
Pág.
Coordenação Pedagógica – Cursos Técnicos 134
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
podem ser ativadas por vez e caso alguma delas seja
detectada, o sensor avisa ao Arduino enviando esta
palavra para que a placa, por sua vez, pode tomar
uma determinada ação. Assim, conseguimos realizar
o desenvolvimento de sistemas que sejam totalmente
controlados por voz, sem a necessidade de apps
adicionais, de smartphone e mesmo de internet. Para
entender melhor o seu funcionamento, entre no link
abaixo para visualizar o exemplo desenvolvido por
Matheus Gebert Straub do site UsinaInfo, explicando
deste o treinamento das palavras no sensor até a
detecção destas palavras pelo Arduino.
https://www.usinainfo.com.br/blog/projeto-reconhecimento-de-voz-arduino/
https://www.filipeflop.com/blog/aprenda-usar-o-sensor-de-frequencia-cardiaca/
https://www.youtube.com/watch?v=dfOI8LKHIkM
Pág.
Coordenação Pedagógica – Cursos Técnicos 135
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
https://portal.vidadesilicio.com.br/modulo-gps-neo-6m/
https://www.usinainfo.com.br/blog/projeto-arduino-gps-6m-registrando-localizacao/
UNIDADE 5 – ATUADORES
Pág.
Coordenação Pedagógica – Cursos Técnicos 136
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
e possuem métodos para controle de passo, velocidade e rotação), a maior dificuldade não
é nem no código (muito simples) mas na transferência e controle do movimento produzido,
levando a complexidade para o lado da mecânica e não da eletrônica ou da programação.
Neste capítulo, conheceremos os principais atuadores, suas utilidades e formas de uso.
7.1.1 Leds
O primeiro atuador visto ao longo deste livro e o mais utilizado até
aqui, o led é fundamental em praticamente qualquer circuito
eletrônico apesar de ser muito simples (seja para mostrar que um
circuito está energizado e em funcionamento, seja para mostrar
informações sobre estados ou acontecimentos). O seu uso já foi
amplamente visto e sabemos que o seu controle é vinculado à
simples mudança de estado de uma porta digital ou, no caso dos leds RGB, à regulagem
da tensão das portas digitais PWM (por meio da mudança dos seus Duty Cycles).
Pág.
Coordenação Pedagógica – Cursos Técnicos 137
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Aplicações: sistemas de segurança de áreas em conjunto com LDR para acionar quando
o feixe de laser é cortado, controle de circulação em ambientes (entrada e saída ou
contagem de pessoas), ativação simples à longa distância de um circuito a partir de outro.
7.1.3 Vibracall
O vibracall nada mais é do que um pequeno motor com uma hélice
de peso desequilibrado (bem mais pesada de um lado), gerando
uma forte vibração ao girar. Muito comum em smartphones e
joysticks de consoles mais modernos, no objetivo de chamar
atenção do usuário para algum evento. Seu funcionamento
também é bastante simples, vibrando quando alimentado por
tensões de 3,3V à 5V, sendo possível seu controle através da mudança de estado de uma
porta digital.
Aplicações: substituição dos leds em sistemas adaptados para deficientes visuais (sinais
visuais trocados por sinais hápticos), sistemas que necessitem chamar atenção do usuário
ou comunicar algo através de uma vibração (ou uma sequência delas).
7.1.4 Buzzer
O buzzer é um tipo de piezo especialmente construído para
produzir vibrações com força suficiente para gerar sons. Estes
sons são mais simples que os produzidos por um autofalante,
geralmente beeps em uma determinada frequência. O buzzer
pode ser do tipo ativo (aqueles que contam com um oscilador
interno e são capazes deles próprios criarem modulações que
gerem os sons) ou passivo (aqueles que não contam com
oscilador interno sendo incapazes de gerar sons sem alguém que os entregue um sinal
modulado, neste caso, a placa). Estes últimos são os mais comuns em prototipagem.
Aplicações: substituição dos leds em sistemas adaptados para deficientes visuais (sinais
visuais trocados por sinais sonoros), sistemas que necessitem chamar atenção do usuário
ou comunicar algo através de beeps (ou uma sequência deles), sistemas que necessitem
Pág.
Coordenação Pedagógica – Cursos Técnicos 138
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
da reprodução de uma música simples ou uma sequência sonora em resposta de uma
ação.
<porta> <porta>
porta digital à qual o buzzer está ligado porta digital à qual o buzzer está ligado
<frequencia>
Frequência em hertz de vibração do buzzer
Quanto à frequência de vibração, cada valor gera uma percepção sonora (som)
diferente. Para termos uma referência, algumas tabelas da área da física dos sons
relacionam as frequências com as notas musicais produzidas. Abaixo, temos um
mapeamento completo das principais notas, dentro do espectro audível para os seres
humanos e com a organização por oitavas.
Pág.
Coordenação Pedagógica – Cursos Técnicos 139
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Quanto a ligação eletrônica, é bastante simples. Os buzzers avulsos (sem a placa)
devem ter o pino positivo (indicado com um sinal de + ou com uma perna mais longa)
ligado à porta digital desejada e o outro ao GND, posicionando em algum dos dois um
resistor a partir de 100 para reduzir a corrente e garantir que o componente não queime.
Já os buzzers encapsulados em uma placa possuem 3 pinos, sendo um deles o GND, o
outro o VCC e o outro o pino de sinal que deve ser ligado à porta desejada do Arduino.
Estas placas já possuem um resistor interno que garante a redução. Abaixo um exemplo
de ligação eletrônica dos dois tipos de buzzer à um Arduino. O primeiro (avulso) ligado à
porta digital 4 e o segundo (encapsulado em uma placa) ligado à porta digital 3.
Abaixo, o exemplo de um código com uso do buzzer (ligado à porta digital 3 neste
caso) para reproduzir as 8 notas do famoso toque das chamadas telefônicas a cobrar,
utilizando o Sol, Lá e Si da quarta oitava e o Dó e Ré da quinta oitava.
void setup(){
pinMode(3, OUTPUT);
}
void loop(){
tone(3, 395.50); delay(500); noTone(3); //Sol (4ª oitava)
tone(3, 444.00); delay(500); noTone(3); //Lá (4ª oitava)
tone(3, 528.00); delay(300); noTone(3); //Dó (5ª oitava)
tone(3, 444.00); delay(250); noTone(3); //Lá (4ª oitava)
tone(3, 498.40); delay(450); noTone(3); //Si (4ª oitava)
tone(3, 592.42); delay(300); noTone(3); //Ré (5ª oitava)
tone(3, 498.40); delay(250); noTone(3); //Si (4ª oitava)
tone(3, 528.00); delay(500); noTone(3); //Dó (5ª oitava)
delay(1000);
}
Pág.
Coordenação Pedagógica – Cursos Técnicos 140
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
7.1.5 Relé
Os relés são um dos componentes mais importantes na automação
para ligar e desligar, através de um sinal de 5V, outros componentes
e dispositivos que necessitem de tensões maiores do que esta
(alimentados por uma fonte de tensão secundária que os sustentem).
Os relés são como interruptores, criando um ponto do circuito que
pode ser aberto (interrompendo o fluxo de corrente) ou fechado (permitindo o fluxo de
corrente). A diferença é que ao contrário dos interruptores comuns (como a chave de luz,
por exemplo) que necessitam de uma força mecânica para alternar entre seus dois estados,
os relés são acionados eletronicamente, recebendo uma tensão de 0V ou 5V que
movimentam a chave interna para um lado ou para outro.
Os dois primeiros pinos (1 e 2) são os que vão movimentar a chave interna que
funciona como interruptor (através do acionamento de uma bobina) e devem ser ligados a
quem vai controlar esta chave do relé (no nosso caso, o Arduino), observando a polarização
correta. Já o pino de alimentação extra (3) está presente apenas nos módulos relé e é
utilizado para garantir potência no acionamento da chave (5V fixos sendo o pino 2 ligado
então à uma porta digital para funcionar como o 5V de controle). Relés avulsos ligados
diretamente a placas Arduino muitas vezes não encontram força suficiente para
movimentar a chave e necessitam do uso de um transistor em um circuito secundário para
Pág.
Coordenação Pedagógica – Cursos Técnicos 141
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
amplificar a corrente, tornando mais complexo seu uso. Já quem vai ser controlado (ligado
ou desligado) deve ter um dos fios que o conecta à fonte secundária segmentado (cortado)
e um dos lados desse fio deve ser ligado ao pino comum do relé (C ou COM). Já o outro
lado do fio pode ser conectado ou no pino normalmente fechado (NF ou NC) ou no pino
normalmente aberto (NA ou NO) do relé. A diferença entre eles é que no pino normalmente
aberto o contato só é fechado quando uma tensão é aplicada à bobina pelo controle,
permanecendo no restante do tempo aberto e sem permitir a passagem de corrente. Já no
pino normalmente fechado, a corrente naturalmente flui por ele estar fechando o contato,
sendo o fluxo interrompido apenas quando tensão é aplicada à bobina pelo controle,
abrindo o contato do circuito. Deste modo, na hora de definir qual deles utilizaremos,
devemos dar preferência por aquele que naturalmente garantirá o estado no qual o circuito
permanecerá por mais tempo, evitando gasto desnecessário de energia.
Pág.
Coordenação Pedagógica – Cursos Técnicos 142
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
com tensão através do pino de controle), bastaria ligar um dos fios ao pino Comum (C) e o
outro ao pino Normalmente Aberto (NA). Temos então um circuito de controle de
dispositivos externos acionados simplesmente pela mudança de estado da porta digital à
qual o pino de controle do relé estiver conectado (em nosso caso, no pino 3).
É importante ressaltar que os módulos podem ser simples, com apenas um relé, ou
com múltiplos, independentes entre si. A diferença na pinagem é que para cada relé
adicional, temos um pino de de acionamento a mais (geralmente chamado de IN), como
podemos ver no comparativo abaixo entre um módulo simples e um módulo duplo.
Como vimos no exemplo do relé, a lâmpada a ser acesa e apagada (110V ou 220V)
não poderia ser alimentada diretamente por uma porta digital do Arduino pois ela não
forneceria o necessário para o seu funcionamento. Nestes casos, necessitamos alimentar
o dispositivo a ser controlado por uma fonte externa e nesse circuito secundário colocamos
um elemento de chaveamento, que pode ser um interruptor, um transistor ou um relé.
Estes dois últimos possuem a grande vantagem de não serem mecânicos e poderem ser
acionados eletronicamente, mas o relé certamente é o de mais simples uso, como
demonstrado anteriormente. Deste modo, praticamente qualquer dispositivo que necessite
de uma tensão ou uma corrente mais alta do que aquelas que o Arduino pode fornecer,
pode ser alimentado por uma fonte secundária e ter um relé controlando o seu
acionamento (através de uma simples mudança de estado em uma porta digital). A seguir,
vamos ver alguns dos principais atuadores deste tipo que são utilizados em projetos de
IOT.
Pág.
Coordenação Pedagógica – Cursos Técnicos 143
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
7.2.1 Solenoide
Um solenoide é um dispositivo dotado de um pino móvel metálico
(chamado de pistão) envolto por uma bobina. Quando esta bobina
é alimentada gera um campo magnético, tornando-se um
eletroímã poderoso o suficiente para atrair ou repelir o pistão com
força. Quando não alimentada a bobina, o pistão volta à sua
posição original, geralmente por conta de uma pequena mola
presa a si. Assim, o ativar e desativar de um solenoide permite
que este pistão se mova com força para frente ou para trás, criando um movimento de vai
e vem que pode ser aproveitado para gerar movimentos lineares ou para garantir o seu
estado para fora ou para dentro de acordo com a situação (como uma trava). É importante
quando adquirimos um solenoide saber se o mesmo é positivo (pistão para fora em estado
normal, sendo puxado quando energizada a bobina) ou negativo (pistão para dentro em
estado normal, sendo empurrado para fora quando energizada a bobina). Quanto à
alimentação, geralmente necessitam de 12V e a partir de 1A de corrente.
Pág.
Coordenação Pedagógica – Cursos Técnicos 144
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
7.2.5 Bomba de ar
A bomba de ar, como o próprio nome diz, é um motor capaz de
bombear ar sugado de uma entrada para uma determinada saída.
Quando desejamos criar um fluxo de ar em um caminho curto,
criar um sopro com força razoável ou movimentar o ar entre dois
contêineres distintos, essa bomba é uma ótima opção.
Pág.
Coordenação Pedagógica – Cursos Técnicos 145
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
7.3 Displays
Pág.
Coordenação Pedagógica – Cursos Técnicos 146
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Para nosso exemplo, vamos criar um contador que a cada 1 segundo incrementa o
dígito, iniciando em zero e terminando com o ponto (após chegar à 9). Uma primeira ação
necessária é mapear cada um dos segmentos do display (A, B, C, D, E, F, G e PONTO) com
as respectivas portas digitais onde cada um foi conectado, senão o acesso através do
número da porta se tornará bem mais difícil. Um método ligaTodos também é necessário
para limpar qualquer segmento ligado quando queremos trocar o dígito, evitando
repetições nos desligamentos. Em nosso setup, indicamos todos os segmentos (portas)
como output e chamamos o método criado para garantir que todos iniciem desligados.
#define A 6 //laranja
#define B 7 //amarelo
#define C 9 //cinza
#define D 10 //turquesa
#define E 11 //marrom
#define F 5 //roxo
#define G 4 //rosa
#define P 8 //verde (ponto)
void desligaTodos(){
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(P, LOW);
}
void setup(){
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(F, OUTPUT);
pinMode(G, OUTPUT);
pinMode(P, OUTPUT);
desligaTodos();
}
Pág.
Coordenação Pedagógica – Cursos Técnicos 147
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
void loop(){
//dígito 0
digitalWrite(A, HIGH); digitalWrite(B, HIGH); digitalWrite(C, HIGH);
digitalWrite(D, HIGH); digitalWrite(E, HIGH); digitalWrite(F, HIGH);
delay(3000); desligaTodos();
//dígito 1
digitalWrite(B, HIGH); digitalWrite(C, HIGH);
delay(3000); desligaTodos();
//dígito 2
digitalWrite(A, HIGH); digitalWrite(B, HIGH); digitalWrite(G, HIGH);
digitalWrite(E, HIGH); digitalWrite(D, HIGH);
delay(3000); desligaTodos();
//dígito 3
digitalWrite(A, HIGH); digitalWrite(B, HIGH); digitalWrite(C, HIGH);
digitalWrite(D, HIGH); digitalWrite(G, HIGH);
delay(3000); desligaTodos();
//dígito 4
digitalWrite(B, HIGH); digitalWrite(C, HIGH); digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
delay(3000); desligaTodos();
//dígito 5
digitalWrite(A, HIGH); digitalWrite(F, HIGH); digitalWrite(G, HIGH);
digitalWrite(C, HIGH); digitalWrite(D, HIGH);
delay(3000); desligaTodos();
//dígito 6
digitalWrite(F, HIGH); digitalWrite(E, HIGH); digitalWrite(D, HIGH);
digitalWrite(C, HIGH); digitalWrite(G, HIGH);
delay(3000); desligaTodos();
//dígito 7
digitalWrite(A, HIGH); digitalWrite(B, HIGH); digitalWrite(C, HIGH);
delay(3000); desligaTodos();
//dígito 8
digitalWrite(A, HIGH); digitalWrite(B, HIGH); digitalWrite(C, HIGH);
digitalWrite(D, HIGH); digitalWrite(E, HIGH); digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
delay(3000); desligaTodos();
//dígito 9
digitalWrite(A, HIGH); digitalWrite(B, HIGH); digitalWrite(C, HIGH);
digitalWrite(F, HIGH); digitalWrite(G, HIGH);
delay(3000); desligaTodos();
//ponto
digitalWrite(P, HIGH);
delay(3000); desligaTodos()
Pág.
Coordenação Pedagógica – Cursos Técnicos 148
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Pág.
Coordenação Pedagógica – Cursos Técnicos 149
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
• R/W: pino de configuração do display para escrita (LOW) ou leitura (HIGH). Como
os displays que utilizaremos não são táteis (que possibilitam o funcionamento
também como entrada), serão sempre de saída e, portanto, basta não usar a porta
e nem energizá-la (LOW).
• D0 à D7: pinos de dados, por onde o display recebe os bytes dos caracteres a serem
exibidos. Caso se deseje trabalhar com o alfabeto convencional e os caracteres
especiais existentes em todos os teclados, utilizamos somente 4 bits, necessitando
apenas dos pinos D4, D5, D6 e D7. Caso se deseje trabalhar com toda a gama de
carateres da codificação UTF-8 (incluindo Kanji, alfabeto cirílico e etc), utilizamos 8
bits e, portanto, os 8 pinos.
• LED-: GND dos leds do display, ligado ao GND do Arduino. Por segurança, é
indicado baixar a tensão da porta com um resistor a partir de 100. Isso pode ser
feito ou no LED+ ou no LED-.
Pág.
Coordenação Pedagógica – Cursos Técnicos 150
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Pág.
Coordenação Pedagógica – Cursos Técnicos 151
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Como exemplo de código, vamos escrever o mesmo texto que aparece na montagem
eletrônica, com a String “QI – INTERNET” na primeira linha (0) a partir da primeira coluna
(0) e com o a String “OF THINGS” na segunda linha (1) a partir da sexta coluna (5).
#include <LiquidCrystal.h>
void setup(){
lcd.begin(16, 2); //display do exemplo possui 2 linhas de 16 colunas cada
}
void loop(){
//limpando o display
lcd.clear();
delay(1000);
}
Na segunda forma de uso direta, podemos ligar o nosso display à um adaptador I2C
para displays, permitindo o envio das informações através de uma comunicação Serial com
endereçamento. Assim, utilizamos apenas a porta SDA e SCL do Arduino. Entretanto, este
adaptador deve ser soldado às costas do display, cobrindo todos os seus 16 pinos:
Pág.
Coordenação Pedagógica – Cursos Técnicos 152
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
void setup(){
lcd.init(); //inicializa o display com comunicação I2C
lcd.backlight(); //ativa a luz de fundo do display
}
void loop(){
//limpando o display
lcd.clear();
delay(1000);
}
Pág.
Coordenação Pedagógica – Cursos Técnicos 153
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
https://www.filipeflop.com/blog/como-conectar-display-oled-arduino/
7.4 Motores
Pág.
Coordenação Pedagógica – Cursos Técnicos 154
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Pág.
Coordenação Pedagógica – Cursos Técnicos 155
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
freada ou diminuição brusca de velocidade, etc), obviamente que não seria adequado que
realizássemos essa inversão manualmente. É aí que entra a Ponte H. Este componente
tem um princípio muito simples: em um dos seus lados, temos dois terminais onde
conectamos um motor e no outro temos dois terminais onde conectamos a fonte de
alimentação do mesmo. Porém, existem dois pinos adicionais binários que devem ser
ligados à duas portas digitais e, de acordo com a combinação de estados dessas portas
(LOW ou HIGH) ele inverte ou desinverte a polaridade, fazendo com que o motor mude o
sentido de sua rotação. Uma das grandes vantagens da ponte H é que além da simplicidade
nessa inversão, ela permite a alimentação com fontes externas para o controle de motores
de maior potência. Quanto ao giro, os dois pinos ligados às portas digitais apresentam as
seguintes combinações lógicas:
Pág.
Coordenação Pedagógica – Cursos Técnicos 156
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
#define A_M1 6
#define B_M1 7
#define A_M2 4
#define B_M2 5
void setup(){
pinMode(A_M1, OUTPUT);
pinMode(B_M1, OUTPUT);
pinMode(A_M2, OUTPUT);
pinMode(B_M2, OUTPUT);
}
void loop(){
//iniciando com os motores desligados
digitalWrite(A_M1, LOW);
digitalWrite(B_M1, LOW);
digitalWrite(A_M2, LOW);
digitalWrite(B_M2, LOW);
delay(2000);
Pág.
Coordenação Pedagógica – Cursos Técnicos 157
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Pág.
Coordenação Pedagógica – Cursos Técnicos 158
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
O Arduino conta com uma biblioteca nativa para esse fim, chamada de Stepper. Ela
nos traz um objeto do tipo Stepper que para ser instanciado necessita de 5 parâmetros: o
número de passos por evolução (o padrão é 500 e esse será o valor que vamos usar para
basear os outros movimentos) e as portas do Arduino onde foram ligados os pinos de
controle, EXATAMENTE nesta ordem: IN1, IN3, IN2 e IN4. Instanciado o objeto, ele nos
oferece dois métodos importantes: setSpeed para controle da velocidade e step para
controle do movimento gerado pelo motor.
<velocidade> <passos>
rotações por minuto do motor total de passos de deslocamento (giro)
Pág.
Coordenação Pedagógica – Cursos Técnicos 159
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
horário (valor positivo e ângulo multiplicado por 5 para transformação em passos) e após
em sentido anti-horário (valor negativo e ângulo multiplicado por 5 para transformação em
passos). Para finalizar, o motor tem sua velocidade reduzida para 10 RPM e recebe uma
ordem para girar 180º em sentido horário e depois 180º em sentido anti-horário.
#include <Stepper.h>
void setup(){
void loop(){
7.4.3 Servomotor
Os servomotores são motores similares aos de passo, com
força e precisão, porém com uma facilidade de uso ainda
maior, visto que seus movimentos se baseiam no
deslocamento do eixo para um ângulo entre 0º e 180º.
Assim, podemos perceber que a desvantagem é a limitação
do movimento, não sendo possível o giro completo (salvo
em servomotores especiais e muito mais caros, ou
modificados internamento, o que não é recomendado). Mas mesmo assim, este giro de 180º
geralmente é suficiente para a realização de movimentos que não sejam o de deslocamento,
com a grande vantagem de os servos serem mais baratos do que os motores de passo. Para
se ter ideia das possibilidades que os servos nos oferecem, mesmo com a limitação do giro,
é disponibilizado um link da UsinaInfo onde Matheus Gebert Straub apresenta o
funcionamento de um kit de peças de madeira que possibilitam a montagem de um braço
Pág.
Coordenação Pedagógica – Cursos Técnicos 160
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
robótico, controlado através de 2 joysticks, com uso
de 4 servos para rotação em 3 eixos além do
movimento de abre e fecha da garra. Neste exemplo
está sendo utilizada uma Shield para a conexão dos
servomotores, mas a mesma é desnecessária já que
eles podem ser conectados diretamente ao Arduino,
usando, cada um, uma porta digital para o controle
(além do VCC e do GND da placa).
https://www.usinainfo.com.br/blog/braco-robotico-arduino-com-servo-motor-e-joystick/
<porta> <angulo>
porta do Arduino onde o pino de controle ângulo entre 0º e 180º para o qual o
do servo foi ligado Servo deve deslocar o seu eixo
Pág.
Coordenação Pedagógica – Cursos Técnicos 161
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
#include <Servo.h>
Servo motor;
void setup(){
motor.attach(3);
}
void loop(){
motor.setSpeed(180);
delay(1000);
motor.setSpeed(90);
delay(1000);
motor.setSpeed(45);
delay(1000);
}
Pág.
Coordenação Pedagógica – Cursos Técnicos 162
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
diferentes tempos de duração e diferentes espaçamentos. Estas piscadas podem então ser
percebidas por um receptor infravermelho, através do qual estimamos essas durações e
espaçamentos. Assim, temos uma forma eficiente de enviar um sinal codificado através de
um dispositivo e este sinal ser recebido por outro dispositivo com a capacidade de o
descodificar. Isso torna possível programar ações diferentes no dispositivo que percebe o
sinal para cada código recebido através da modulação
infravermelha. Um controle de televisão de uma
determinada marca, por exemplo, está preparado
para emitir sinais com uma codificação para cada
uma de suas teclas e as televisões dessa marca, por
sua vez, estão preparadas para ler esses sinais e
executar uma ação para cada um dos códigos de cada
uma das teclas deste controle.
Pág.
Coordenação Pedagógica – Cursos Técnicos 163
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Pág.
Coordenação Pedagógica – Cursos Técnicos 164
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
#include <IRremote.h>
IRrecv receptor(5);
decode_results resultado;
void setup(){
Serial.begin(9600);
receptor.enableIRIn();
}
void loop(){
if(receptor.decode(&resultado)){
Serial.println(resultado.value);
receptor.resume();
}
delay(100);
}
Após, abra o monitor Serial e pressione rapidamente (sem segurar) as teclas do seu
controle remoto. Para cada tecla pressionada será mostrado um número que é o resultado
da descodificação daquela tecla. Para garantir que o código está correto, pressione algumas
vezes a mesma tecla para verificar se os códigos conferem, pois é normal o aparecimento
de ruídos que modifiquem o valor final lido. No exemplo abaixo, no controle de televisores
LG, estes foram os códigos exibidos ao pressionar os botões volume para cima e volume
para baixo:
Com isso descobrimos que sempre que pressionamos a tecla de volume para cima,
recebemos um código 55152015 no Arduino e sempre que pressionamos a tecla volume
para baixo recebemos um código 551534655.
Pág.
Coordenação Pedagógica – Cursos Técnicos 165
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Depois de mapear as teclas que desejamos, podemos criar um programa no Arduino que
sempre que recebe um código infravermelho de uma tecla, testa qual o valor desse código
e executa algo. Em nosso exemplo, iremos fazer com que sempre que a tecla volume para
cima for pressionada (código 55152015) o led da porta 7 acenda e sempre que a tecla
volume para baixo for pressionada (código 551534655) o led da porta 7 apague.
#include <IRremote.h>
IRrecv receptor(5);
decode_results resultado;
void setup(){
Serial.begin(9600);
pinMode(7, OUTPUT);
digitalWrite(7, LOW);
receptor.enableIRIn();
}
void loop(){
if(receptor.decode(&resultado)){
if(resultado.value == 551502015){ //volume para cima
digitalWrite(7, HIGH);
}
if(resultado.value == 551534655){ //volume para baixo
digitalWrite(7, LOW);
}
receptor.resume();
}
delay(100);
}
Se tudo estiver certo e as teclas tiverem sido corretamente mapeadas, o led pode ser ligado
e desligado com o controle. Abaixo, nosso exemplo com o controle da TV LG funcionando
e com o led ligado através da tecla de volume para cima.
Pág.
Coordenação Pedagógica – Cursos Técnicos 166
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
void setup(void){
Serial.begin(9600);
Serial.println("Ready to decode IR!");
}
void loop(){
uint16_t highpulse = 0;
uint16_t lowpulse = 0;
while (IRpin_PIN & _BV(IRpin)) {
highpulse++;
delayMicroseconds(RESOLUTION);
if ((highpulse >= MAXPULSE) && (currentpulse != 0)) {
printpulses();
currentpulse = 0;
return;
}
}
pulses[currentpulse][0] = highpulse;
while (! (IRpin_PIN & _BV(IRpin))) {
lowpulse++;
delayMicroseconds(RESOLUTION);
if ((lowpulse >= MAXPULSE) && (currentpulse != 0)) {
printpulses();
currentpulse = 0;
return;
}
}
pulses[currentpulse][1] = lowpulse;
currentpulse++;
}
Pág.
Coordenação Pedagógica – Cursos Técnicos 167
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
void printpulses(void) {
Agora abra o monitor Serial e pressione rapidamente (sem segurar) as teclas do seu
controle remoto. Para cada tecla pressionada será gerado um código com diversas linhas,
que reproduzem a emissão do infravermelho recebida. Copie esse código para cada tecla
desejada (logo abaixo da linha OFF ON). Em nosso exemplo, vamos utilizar apenas a tecla
liga/desliga.
Depois de copiar os códigos gerados para cada tecla, vamos criar um programa no Arduino
que execute esses códigos, testando se o emissor infravermelho, através deles, consegue
controlar o equipamento do controle remoto clonado. Podemos, para melhor organização,
criar um métodos para a execução destes códigos clonados de cada tecla. No nosso caso,
vamos criar um método ligarDesligar() que receberá o código da tecla Liga/Desliga copiado
anteriormente e dentro do loop, a cada 10 segundos, vamos chamar esse método, ligando
ou desligado a televisão.
Pág.
Coordenação Pedagógica – Cursos Técnicos 168
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
void setup(){
pinMode(2, OUTPUT);
digitalWrite(2, LOW);
}
void loop(){
Pág.
Coordenação Pedagógica – Cursos Técnicos 169
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Além dos sensores e atuadores vistos, o Arduino conta com uma série de módulos
especiais (alguns deles que podem inclusive funcionar como entrada ou saída de dados de
forma alternada). Entre os seus diversos fins, três são muito importantes e agregam novas
possibilidades aos nossos projetos: gravação da dados e comunicação. Por isso, iremos ver
nesse capítulo o módulo de cartão MicroSD (que permite a gravação de dados de nosso
Arduino em arquivos que podem ser lidos e manipulados) e módulos de comunicação
bluetooth, ethernet e wifi (que permitem a comunicação do Arduino com outros
dispositivos além do seu acesso à internet para o recebimento e o envio de informações e
mesmo para funcionarem como servidores web fornecendo webpages para controle e
visualização de informações).
Pág.
Coordenação Pedagógica – Cursos Técnicos 170
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
if(SD.begin(<porta>)) { ... }
Abrir um arquivo existente através do nome (ou criar novo) em modo escrita
File <nome_desejado> = SD.open(<caminho_nome_extensao>, FILE_WRITE);
Abrir um arquivo existente através do nome (ou criar novo) em modo leitura
File <nome_desejado> = SD.open(<caminho_nome_extensao>);
<nome_objeto_file>.close();
SD.remove(caminho_nome_extensao);
Pág.
Coordenação Pedagógica – Cursos Técnicos 171
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
exemplo está ligado à porta digital 4. Deste modo, a ligação eletrônica torna-se simples
(apesar de ser inflexível) e o esquema é apresentado abaixo. Tenha o cuidado de verificar
se o seu modelo de Leitor de Cartão MicroSD possui alimentação de 5V ou 3.3V pois é
comum encontrar leitores dos dois tipos.
Pág.
Coordenação Pedagógica – Cursos Técnicos 172
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
#include <SPI.h>
#include <SD.h>
void setup(){
Serial.begin(9600);
pinMode(A0, INPUT_PULLUP);
pinMode(A1, INPUT_PULLUP);
pinMode(A2, INPUT_PULLUP);
pinMode(A5, INPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
while(!SD.begin(10)){
Serial.println("Por favor, insira um cartão MicroSD válido!");
delay(5000);
}
Serial.println("Cartão MicroSD válido! Iniciando o sistema...");
Pág.
Coordenação Pedagógica – Cursos Técnicos 173
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
void loop() {
if(digitalRead(A0) == LOW){
ativo = true;
segundos = 0;
periodo++;
minima = 999;
maxima = -999;
digitalWrite(6, HIGH);
}
if(digitalRead(A1) == LOW){
if(ativo == true){
ativo = false;
File arquivo = SD.open("logtemperaturas.txt", FILE_WRITE);
arquivo.println("Periodo:" + (String)periodo + "|Tempo:" + (String)segundos +
"|Mínima:" + (String)minima + "|Máxima:" + (String)maxima;
arquivo.close();
digitalWrite(6, LOW);
}
if(digitaRead(A2) == LOW){
File arquivo = SD.open("logtemperaturas.txt");
Serial.println("");
Serial.println("**********************************************************");
Serial.println("************* LOG DE TEMPERATURAS *************");
Serial.println("**********************************************************");
while(arquivo.available()){
Serial.write(arquivo.read());
}
arquivo.close;
}
if(ativo == true){
int valorLido = analogRead(A0);
float temperaturaLida = map(valorLido, 0, 150, 0, 350);
Pág.
Coordenação Pedagógica – Cursos Técnicos 174
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
número do período e uma indicação de se o monitoramento está ativo ou parado. No setup,
inicializamos a Serial e indicamos o tipo das portas A0, A1, A2 (utilizadas pelos botões
como INPUT_PULLUP), A5 (utilizada pelo sensor de temperatura LM35 como INPUT) e 7
(utilizada pelo buzzer como OUTPUT). Após, ainda dentro do setup, testamos se existe um
cartão MicroSD presente no leitor, ficando o código preso dentro do while enquanto um
cartão não for encontrado e seguindo adiante (para o loop) quando for. No loop, possuímos
um condicional para testar o pressionamento de cada um dos 3 botões. Caso o botão em
A0 seja pressionado, ligamos o led, inicializamos as variáveis, zerando segundos,
incrementando periodo e atribuindo true para a variável ativo (indicando que o
monitoramento está ativo), 999 para a variável minima (para que qualquer valor lido
primeiro seja menor do que ela) e -999 para a variável maxima (para que qualquer valor
lido primeiro seja maior do que ela). Caso o botão em A1 seja pressionado, se o
monitoramento estiver em andamento, desligamos o led, atribuímos false à variável ativo,
abrimos o arquivo "logtemperaturas.txt" (para escrita) e damos um println dentro dele,
escrevendo uma nova linha com as informações de período, tempo, mínima e máxima do
período (fechando o arquivo logo em seguida). Caso o botão A2 seja pressionado,
escrevemos na Serial um cabeçalho que indica o log de temperaturas, abrimos novamente
o arquivo "logtemperaturas.txt" (para leitura) e enquanto ainda tivermos dados não lidos
dele, percorremos e escrevemos o conteúdo na Serial. Finalmente, a cada ciclo do loop,
capturamos a temperatuda do LM35 (utilizando um map para converter o valor capturado
em graus celsius) e testamos se ele é maior do que a maior máxima ou menor do que a
menor mínima capturadas até o momento (substituindo o valor caso seja e emitindo um
beep para informar uma nova mínima ou máxima encontrada).
Pág.
Coordenação Pedagógica – Cursos Técnicos 175
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
diversas opções existentes no mercado, as mais conhecidas e utilizadas são as da família
HC, principalmente por sua simplicidade e baixo custo. Os módulos dessa família possuem
pequenas variações em seus recursos (podem funcionar em modo escravo ou modo misto,
podem ter comunicação otimizada, etc), mas todas as versões possuem a implementação
da comunicação básica necessária para a troca de informações e isso é o que diretamente
nos interessa aqui. A comunicação bluetooth é na verdade uma comunicação Serial, porém
mais segura dada a necessidade de um pareamento e de um endereçamento que
identifique o dispositivo ao qual desejamos conectar. Neste livro, não é nosso objetivo o
aprofundamento no funcionamento do bluetooth e no protocolo de comunicação que o
sustenta e nem como a comunicação serial é implementada em outras linguagens de
programação, mas sim na sua utilização prática com o Arduino. Por isso, veremos como
descobrir o MacAddress de um módulo HC, realizar o pareamento e implementar o envio
e recepção de mensagens via Serial no Arduino, comunicando com um app Android mobile
desenvolvido através de blocos (sem programação com o AppInventor 2).
<nome_objeto_serial>.begin( <velocidade> );
Inicializado o objeto, para enviar uma String via serial basta dar um print:
<nome_objeto_serial>.print( <string_desejada> );
Pág.
Coordenação Pedagógica – Cursos Técnicos 176
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Já para ler dados externos que cheguem através do bluetooth (via serial), devemos
criar um laço que deve ser executado enquanto o objeto perceber que ainda possui dados
recebidos pendentes, concatenando-os em uma variável o resultado. Para testar se ainda
existem dados recebidos (bytes) não lidos, utilizamos o método available:
<nome_objeto_serial>.available()
Para pegar cada um destes bytes não lidos, utilizamos o método read, convertendo
o byte em um caractere:
char(<nome_objeto_serial>.read())
Pág.
Coordenação Pedagógica – Cursos Técnicos 177
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Após, um clique na opção “Procurar” fará com que o smartphone identifique todos
os dispositivos bluetooth próximos a si e caso o HC estiver ligado, aparecerá na lista de
dispositivos disponíveis. Basta agora clicar sobre o HC e será aberta uma caixa de diálogo
solicitando uma senha de pareamento. Devemos então digitar a senha default (1234) e o
Pág.
Coordenação Pedagógica – Cursos Técnicos 178
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
dispositivo realizará o pareamento, estabelecerá a conexão e passará a ser exibido na lista
de dispositivos pareados.
Pág.
Coordenação Pedagógica – Cursos Técnicos 179
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Pág.
Coordenação Pedagógica – Cursos Técnicos 180
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Guimarães no canal “Brincando com ideias”. O curso completo consiste de 36 aulas que
vão do básico até a integração com banco de dados e o desenvolvimento de um sistema de
automação residencial completo. Porém, os 5 primeiros vídeos da série (links abaixo)
trazem todos os conceitos básicos necessários para compreender a ferramenta e começar
a produzir os primeiros aplicativos Android, auxiliando no entendimento da combinação
de blocos que será criada neste nosso exemplo.
https://youtu.be/TKPXS7V1YLo
https://youtu.be/1gOx1HoAkkY
https://youtu.be/ePyUC23z0gc
https://youtu.be/DWRGfa21DBk
https://youtu.be/cOVu015orxQ
Vamos iniciar o projeto pelo seu esquema eletrônico. Utilizaremos um módulo HC-
05 (lembrando que o modelo não importa pois para comunicação todos possuem os
protocolos desejados) com seus pinos TX e RX ligados, respectivamente às portas 8 e 9 do
Arduino. Para testar o envio de dados do Arduino para exibição no app Android, um sensor
ultrassônico será incluído, com seus pinos Trigger e Echo ligados, respectivamente, às
portas 6 e 7 do Arduino. Já para testar o envio de comandos do app Android para o
Arduino, um led é suficiente e o seu pino positivo será conectado à porta 5 da placa. Deste
modo, teremos o seguinte esquemático eletrônico:
Pág.
Coordenação Pedagógica – Cursos Técnicos 181
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
No App Inventor, o layout do aplicativo de nosso exemplo (que pode ser visto abaixo,
com a configuração visual à esquerda e a árvore de componentes à direita) contará com 5
elementos visuais importantes:
Pág.
Coordenação Pedagógica – Cursos Técnicos 182
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Além deles, outros dois elementos não visuais são necessários para a
implementação desejada do aplicativo:
Pág.
Coordenação Pedagógica – Cursos Técnicos 183
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
texto do Label lblStatus para “(conectado)” (através do seu bloco set/Text) e habilitamos o
Clock timer para que a cada 1 segundo receba o valor da distância do ultrassônico vinda
do Arduino. Para habilitar, basta utilizar o bloco set/TimerEnabled passando por
parâmetro o valor true.
Ao inserir o Clock timer, seu TimerInterval pode ser definido e em nosso exemplo,
utilizamos o valor 1000 (1 segundo). Assim, a cada ciclo de tempo (bloco when/Timer)
devemos verificar se recebemos alguma coisa do Arduino através da conexão. O
componente BluetoothClient blue, através do bloco call/BytesAvailableToReceive nos
informa o número de bytes recebidos através da conexão e não utilizados. Então, dentro
de um bloco if/then, podemos testar se esse número de bytes recebidos e não usados é
maior do que zero, o que significa que temos uma nova informação de distância do
ultrassônico. Então, neste caso, retiramos do buffer de recebimento de informações do
bluetooth blue (através do bloco call/ReceiveTextNumberOfBytes) o mesmo número de
Pág.
Coordenação Pedagógica – Cursos Técnicos 184
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
bytes que descobrimos ter recebido anteriormente (bloco call/BytesAvailableToReceive) e
alteramos o texto do TextBox txtDados para essa sequência de bytes capturada (bloco
set/text), mostrando o valor da distância recebida.
Blocos parte 5) Enviando uma mensagem ao Arduino para ligar ou desligar o Led
Pág.
Coordenação Pedagógica – Cursos Técnicos 185
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
manual). Abaixo, três imagens que mostram, em sequência, o ícone do app instalado no
Smartphone, a tela do app após sua abertura e a lista de dispositivos bluetooth
descobertos ao clicar no ListPicker (neste caso, apenas o módulo HC-05 utilizado no nosso
exemplo):
Agora, finalmente vamos realizar a programação do nosso Arduino Uno para que ele
funcione em conjunto com o app Android criado, enviando a ele através da conexão
bluetooth as distâncias lidas pelo sensor ultrassônico e recebendo dela, também através
da conexão bluetooth, indicativo de quando ligar ou desligar o led (através das palavras
“on” e “off”). Além da importação das bibliotecas (Ultrasonic.h e SoftwareSerial.h), da
criação dos objetos indicando as portas (conforme explicado anteriormente no esquema
eletrônico) e a inicialização das Seriais (entre elas o bluetooth), a lógica é extremamente
simples.
Pág.
Coordenação Pedagógica – Cursos Técnicos 186
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
quando saímos do laço, temos dentro desta variável o texto recebido byte a byte de forma
serial. Então, basta testar qual é este texto. Em nosso exemplo, se ele for a palavra “off”
(enviada pelo aplicativo Android) o led deve ser desligado através da mudança de estado
da porta 5 para LOW. Se a palavra for “on”, o led deve ser ligado através da mudança de
estado da porta 5 para HIGH. Além disso, a cada 1 segundo, descobrimos a distância do
objeto mais próximo através da chamada do método Ranging (CM) do objeto ultrassom,
armazenando este valor na variável distancia. Em seguida, através do objeto blue,
enviamos de forma serial com o método println o valor desta mesma variável, através da
conexão bluetooth, para que chegue ao app Android.
#include <Ultrasonic.h>
#include <SoftwareSerial.h>
Ultrasonic ultrassom(7,6);
SoftwareSerial blue(8,9);
void setup(){
Serial.begin(9600);
blue.begin(9600);
pinMode(5, OUTPUT);
digitalWrite(5, LOW);
}
void loop() {
delay(1000);
Com tudo pronto, conseguimos agora através do app Android selecionar o módulo
HC, estabelecer uma conexão bluetooth entre o smartphone o Arduino, visualizar na tela
a distância medida pelo ultrassônico e ordenar o ligamento/desligamento do led.
Pág.
Coordenação Pedagógica – Cursos Técnicos 187
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Não podemos falar de Internet das Coisas com o Arduino sem efetivamente
vermos como fazê-lo acessar a internet, o que possibilita desde a
comunicação com outros dispositivos, leitura e gravação em bancos de
dados online, uso de webservices, entre outros. Existem diversas formas
possíveis para isso, desde o uso de um smartphone como ponte através de
uma comunicação bluetooth, até o acesso direto através do uso de módulos
que permitam a conexão cabeada (módulo ethernet) ou sem fio (módulo
WiFi). O mais popular destes módulos WiFi é o ESP-8266, pelo seu baixo custo, facilidade
de uso e alcance.
Pág.
Coordenação Pedagógica – Cursos Técnicos 188
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
A biblioteca nos oferece outro objeto muito importante (já criado) chamado WiFi. Ele
é responsável por diversas verificações e configuração de nossa conexão. O mesmo deve
ser inicializado através de um método init, porém recebendo como parâmetro o endereço
de alocação (&) de um objeto do tipo SoftwareSerial. Assim, sua inicialização seria como a
demonstrada abaixo:
WiFi.init( &<nome_objeto_SoftwareSerial> );
Pág.
Coordenação Pedagógica – Cursos Técnicos 189
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Após a inicialização, o objeto WiFi deve receber um endereço IP para que consiga ter
acesso à autenticação na rede de internet do usuário, respeitando a faixa de IPs desta rede.
Para isso, utilizamos o método IPAddress que recebe por parâmetro os 4 números (4
octetos) que compõe o endereço.
<nome_objeto_WiFiEspServer>.config( IPAddress(<n1>,<n2>,<n3>,<n4>) );
Com endereço configurado, podemos tentar conectar em uma rede WiFi. Para
auxiliar na manipulação (byte a byte), vamos criar duas variáveis auxiliares (arrays de
caracteres) às quais atribuiremos o nome da rede (SSID) e a sua senha. Após, as utilizamos
como parâmetro do método begin do objeto WiFi que estabelece a conexão.
A chamada deste método begin do objeto WiFi sempre retorna um código de status
que pode ser testado para verificar a situação da conexão. São eles:
Este mesmo status também pode ser testado mesmo antes ou após a chamada do
método begin (ou seja, fora do seu retorno), através do método status do WiFi.
WiFi.status()
WiFiEspClient <nome_objeto_WiFiEspCliente> =
<nome_objeto_WiFiEspServer>.available();
Pág.
Coordenação Pedagógica – Cursos Técnicos 190
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
<nome_objeto_WiFiEspClient>.connected()
<nome_objeto_WiFiEspClient>.available()
RingBuffer <nome_objeto_RingBuffer>(<tamanho_buffer>);
<nome_objeto_RingBuffer>.init;
<nome_objeto_RingBuffer>.push(<nome_objeto_WiFiEspClient>.read())
)
Pág.
Coordenação Pedagógica – Cursos Técnicos 191
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Geralmente essa leitura byte a byte é realizada dentro de um laço que é executado
enquanto existir requisição do cliente (available). Sabemos que o recebimento encerrou
quando a requisição HTTP trouxer a sequência “\r\n\r\n” (duas quebras de linha). Assim,
conseguimos testar com um condicional se esta sequência está no final do texto
armazenado dentro do buffer, com o método endsWith.
Quando uma requisição HTTP é recebida, nosso objeto WiFiEspClient pode enviar
de volta ao cliente uma resposta, que pode ser desde uma simples String ou até mesmo
uma página web completa que será exibida através de um browser. Esse envio é possível
através do método println.
<nome_objeto_WiFiEspClient>.println("texto_a_enviar");
Após enviar a resposta, devemos encerrar a conexão do cliente para ficar esperando
uma nova requisição. Para isso, utilizamos o método stop.
<nome_objeto_WiFiEspClient>.stop();
Pág.
Coordenação Pedagógica – Cursos Técnicos 192
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Pág.
Coordenação Pedagógica – Cursos Técnicos 193
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
#include <Ultrasonic.h>
#include <SoftwareSerial.h>
#include <WiFiEsp.h>
//Variáveis auxiliares
char nomeRede[] = "Sentido da Vida Network";
char senhaRede[] = "sentido=42";
int statusLed = LOW;
int distancia = 0;
Pág.
Coordenação Pedagógica – Cursos Técnicos 194
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Inicialmente realizamos o include das 3 bibliotecas necessárias ao projeto:
“Ultrasonic.h” (para o uso do sensor ultrassônico), “SoftwareSerial.h” (para a criação de
uma comunicação serial utilizada pelo WiFi para comunicação) e WiFiEsp (para criação
dos objetos que implementam um servidor e um cliente web). Após, criamos algumas
variáveis auxiliares que conterão o nome e senha da rede e o status inicial do dispositivo
WiFi (IDLE até que ele seja conectado posteriormente). Também é necessária uma variável
para representar o estado do led (iniciando com LOW) e uma variável para guardar a
distância lida pelo ultrassônico (iniciando com 0). Além das variáveis, criamos também
alguns objetos: ultrassom (informando as portas onde estão ligados os pinos trigger e echo
do sensor ultrassônico), serialWiFi (informando as portas TX e RX do módulo ESP8266 e
que será utilizado pelo WiFi para comunicação), servidor (informando a porta 80 para
implementar o objeto WiFiEspServer e aceitar requisições) e bufferAux (informando 8 bytes
de tamanho para implementar o objeto BufferRing que armazenará as informações da
requisição recebida pelo WiFi).
void setup(){
pinMode(5, OUTPUT);
digitalWrite(5, LOW);
Serial.begin(9600);
serialWiFi.begin(9600);
WiFi.init(&serialWiFi);
WiFi.config(IPAddress(192,168,0,100));
}
No setup, definimos a porta 5 (do led) como saída e iniciamos com ela desligada. O
objeto Serial assim como o serialWiFi (também um serial), precisam ser iniciados com o
método begin e a sua velocidade (aqui, 9600, que é o valor padrão). Já o objeto WiFi, ao
ser iniciado com o init, recebe por parâmetro o endereço de uma conexão serial (no nosso
caso, o endereço de serialWiFi). Após, o seu endereço IP é configurado para 192.168.0.100.
void loop() {
if(WiFi.status() == WL_NO_SHIELD){
return;
}
if(status != WL_CONNECTED){
status = WiFi.begin(nomeRede, senha);
return;
} else {
servidor.begin();
}
Pág.
Coordenação Pedagógica – Cursos Técnicos 195
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
statusLed = ultrassom.Ranging(CM);
if(cliente) {
bufferAux.init();
while(cliente.connected()){
if(cliente.available()){
bufferAux.push(cliente.read());
if(bufferAux.endsWith("\r\n\r\n")) {
respostaRequisicao(cliente);
break;
}
if(bufferAux.endsWith("GET /L")){
digitalWrite(5, HIGH);
statusLed = 1;
}
else{
if (bufferAux.endsWith("GET /D")) {
digitalWrite(5, LOW);
statusLed = 0;
}
}
}
}
cliente.stop();
}
} //fim do loop
Pág.
Coordenação Pedagógica – Cursos Técnicos 196
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
buffer (push). Assim, cada byte depositado no buffer faz com que tenhamos um texto
parcial dentro dele. Com isso, podemos testar qual o texto atual existente no final deste
buffer com o método endsWith. Se terminar com “\r\n\r\n” é porque a requisição HTTP
chegou ao fim e então enviamos uma resposta ao cliente (através de um objeto
WiFiEspClient), que no nosso caso é uma página web montada com o método
respostaRequisicao (explicado na próxima etapa). Se terminar com “GET /L” é porque
recebemos um /L (de Ligado) através da requisição, que corresponde à uma ordem para
ligar o Led. Se terminar com “GET /D” é porque recebemos um /D (de Desligado) através
da requisição, que corresponde à uma ordem para desligar o Led. Ao final, interrompemos
e fechamos a conexão para ficar à espera de uma nova requisição.
cliente.println("<body>");
cliente.println("<div style='text-align: center'>");
cliente.println("<p><font style='font-size:1.5em;'>
Informações da Placa Arduino</font></p>");
cliente.println("<br><br>DISTÂNCIA");
cliente.println("<p style='line-height:2;'><font color='green'>" +
(String)distancia + " cm</font></p>"
if(statusLed == HIGH){
cliente.println("<p style='line-height:2;'><font color='blue'>LIGADO</font></p>");
cliente.println("<a href=\"/D\" style='color:white;background-color:red;
text-decoration:none;padding:10px;'>desligar</a>");
} else {
cliente.println("<p style='line-height:2;'><font color='red'>DESLIGADO</font></p>");
cliente.println("<a href=\"/L\" style='color:white;background-color:blue;
text-decoration:none;padding:10px;'> ligar </a>");
}
cliente.println("</body>");
cliente.println("</html>");
delay(10);
}
Pág.
Coordenação Pedagógica – Cursos Técnicos 197
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
(“Informações da Placa Arduino”) com letra maior do que as demais. Para exibir a distância
lida do ultrassônico, temos um subtítulo (“DISTÂNCIA”) seguido de um parágrafo com o
valor da variável distância concatenado. Logo em seguida, posicionamos um subtítulo
(“ESTADO ATUAL DO LED”). Abaixo deste subtítulo queremos montar dois elementos
importantes: um texto que informe o estado atual do led (com letra azul quando ligado e
vermelha quando desligado) e um botão para ligar ou desligar o led (com letra branca e
fundo azul quando indicar a ação ligar ou vermelho quando indicar a ação desligar). Nós
sabemos quando efetuar uma ou outra montagem através da análise da variável
estadoLed. É importante perceber que nosso botão nada mais é do que uma âncora que
quando montada tem seu href (link) configurado de modo a tentar abrir um endereço /D
ou /L, o que acaba gerando uma requisição HTTP que contém, respectivamente “GET /D”
ou “GET /L”. É assim que conseguimos enviar o indicativo para ligar ou desligar o led via
requisição HTTP ao clicar, sendo esta recebida pelo cliente e interpretada. Assim, quando
o cliente acessar o endereço IP configurado no objeto WiFi (no nosso exemplo,
192.198.0.100), através do browser, a página será enviada como resposta, como abaixo:
Abaixo, uma foto do projeto montado com o led ligado após o Arduino receber uma
requisição “GET /L” com o clique na âncora da página (botão “ligar”):
Pág.
Coordenação Pedagógica – Cursos Técnicos 198
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Pág.
Coordenação Pedagógica – Cursos Técnicos 199
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
cliente e deste servidor na “Ethernet.h” são análogos aos da biblioteca WiFiEsp vista
anteriormente. O servidor (EthernetServer) também necessita na criação, como parâmetro,
da porta utilizada para receber as requisições HTTP (por padrão a 80).
EthernetClient <nome_objeto_EthernetClient> =
<nome_objeto_EthernetServer>.available();
<nome_objeto_EthernetServer>begin();
Ethernet.begin(<nome_variavel_mac>, <nome_variavel_ip>,
<nome_variavel_gateway>, <nome_variavel_mascara>);
Pág.
Coordenação Pedagógica – Cursos Técnicos 200
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Testar o objeto EthernetClient para identificar novo cliente está tentando conectar:
<nome_objeto_EthernetClient>.connected()
<nome_objeto_EthernetClient>.available()
<nome_objeto_RingBuffer>.push(<nome_objeto_EthernetClient>.read())
)
Já quando aos status da conexão, podemos utilizar dois métodos distintos do objeto
Ethernet. O primeiro serve para indicar a não detecção de hardware ethernet compatível
(retornando a constante EthernetNoHardware).
Ethernet.hardwareStatus()
)
Já o segundo serve para indicar se a conexão foi estabelecida com sucesso e existe
comunicação ativa (retornando as constantes LinkON e LinkOFF).
Ethernet.linkStatus()
)
Pág.
Coordenação Pedagógica – Cursos Técnicos 201
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
#include <Ultrasonic.h>
#include <SPI.h> //mudou
#include <Ethernet.h> //mudou
//Variáveis auxiliares
char macRede[] = {0xAB, 0xCD, 0xEF, 0x01, 0x23, 0x45}; //mudou
IPAddress ipRede(192,168,0,100); //mudou
IPAddress mascaraRede(255,255,255,0); //mudou
IPAddress gatewayRede(192,168,0,1); //mudou
void setup(){
pinMode(5, OUTPUT);
digitalWrite(5, LOW);
Serial.begin(9600);
}
void loop() {
statusLed = ultrassom.Ranging(CM);
if(cliente) {
bufferAux.init();
while(cliente.connected()){
if(cliente.available()){
bufferAux.push(cliente.read());
if(bufferAux.endsWith("\r\n\r\n")) {
respostaRequisicao(cliente);
break;
}
if(bufferAux.endsWith("GET /L")){
digitalWrite(5, HIGH);
statusLed = 1;
}
else{
if (bufferAux.endsWith("GET /D")) {
digitalWrite(5, LOW);
statusLed = 0;
}
}
}
}
cliente.stop();
}
} //fim do loop
Pág.
Coordenação Pedagógica – Cursos Técnicos 202
QI ESCOLAS E FACULDADES
CURSOS TÉCNICOS – EIXO TECNOLOGIA DA INFORMAÇÃO
Assim conseguimos perceber que colocar o Arduino na internet, seja com uso de
WiFi ou de Ethernet, é um processo muito similar e o domínio de uma das técnicas implica
no fácil entendimento e adaptação da outra. Deste modo, ampliamos significativamente as
possibilidades em nossos projetos IOT, não limitando os dispositivos à comunicação local,
mas permitindo que nossas soluções estejam, agora, na nuvem. Assim, quase de forma
literal, o céu é nosso limite.
Pág.
Coordenação Pedagógica – Cursos Técnicos 203