Micro
Micro
Micro
3RA/2022
Discentes:
Ailton Cumbe
Solange
Virgilio Tembue
Yuran Panguana
1
Sumário
1. Introdução............................................................................................................................2
1.1. Historial........................................................................................................................3
2. Arduino................................................................................................................................3
2.1. Evolução dos Arduinos.................................................................................................3
2.2. Arduino Uno Atmega328.............................................................................................5
2.2.1. Alimentação da placa Arduino..................................................................................5
2.2.2. Pinagem do Arduino.................................................................................................6
2.3. Atmega328...................................................................................................................8
3. Programação do Arduino....................................................................................................10
3.1. Funções......................................................................................................................11
4. Experiência: Controlo de vagas de um parqur de estacionamento usando Arduino uno
Atmega328.................................................................................................................................12
4.1. Componentes Usados.................................................................................................13
5. Conclusão...........................................................................................................................14
6 - Apêndice...........................................................................................................................15
1
1. Introdução
O presente trabalho visa buscar bases e apresentar o resultado da experiência: Simular
um sistema de controle de vagas de um parque de estacionamento usando o Arduino
Uno (Microcontrolador Atmega 328).
A plataforma Arduino é uma das mais utilizadas em anos recentes para a simulação e
implementação de projectos electrônicos.
2
1.1. Historial
O Arduino foi criado em 2005 por um grupo de 5 pesquisadores : Massimo Banzi,
David Cuartielles, Tom Igoe, Gianluca Martino e David Mellis. O objetivo era elaborar
um dispositivo que fosse ao mesmo tempo barato, funcional e fácil de programar, sendo
dessa forma acessível a estudantes e projetistas amadores.
2. Arduino
Arduíno é uma plataforma de prototipagem eletrônica de hardware livre e de placa
única, projetada com um microcontrolador Atmel AVR com suporte de entrada/saída
embutido, uma linguagem de programação padrão, a qual tem origem em Wiring, e é
essencialmente C/C++. O objetivo do projeto é criar ferramentas que são acessíveis,
com baixo custo, flexíveis e fáceis de se usar por principiantes e profissionais.
Principalmente para aqueles que não teriam alcance aos controladores mais sofisticados
e ferramentas mais complicadas.
3
2.1. Evolução dos Arduinos
Há não muito tempo, para se confeccionar um circuito interativo, era necessário fazer
projetos do zero para uma aplicação específica. Para se fazer pequenas alterações nas
funcionalidades do circuito era necessário um estudo crítico e bastante trabalho. Com o
advento dos microcontroladores, foi possível que problemas que eram tratados com
hardware fossem tratados usando software de computadores. Dessa forma, um mesmo
circuito poderia tomar funções totalmente diferentes, reprogramando e alterando alguns
parâmetros do programa. Mas mesmo assim, trabalhar com microcontroladores não é
tão trivial. Desta forma, em 2005, um grupo de pesquisadores italianos perceberam a
necessidade de criar um dispositivo que possibilitasse a criação de sistemas autônomos
de forma mais simples. O resultado foi o Arduino. A filosofia era criar uma plataforma
que qualquer pessoa pudesse criar um projeto interativo, sem a necessidade de ter que
aprender sobre matérias complexas de engenharia. Dessa forma, qualquer um poderia
ser um criador de tecnologia, não importando idade ou especialidade, apenas algo
presente em sobra no ser humano: a criatividade. O Arduino rapidamente se tornou
popular em todo mundo. Hoje temos várias opções de placas com particularidades
interessantes.
4
2.2. Arduino Uno Atmega328
Arduino Uno
É a placa mais recomendada para quem está começando na plataforma. Ela possui
excelente custo-benefício, quantidade de porta (entrada/saída) suficiente para a criação
de protótipos com vários sensores e módulos conectados. O microcontrolador da placa
Uno é o ATMega328P, com clock de 16MHz, 14 pinos de I/O, sendo 6 analógicos e 6
com função PWM (Pulse Width Modulation). A placa Uno tem 32KB de memória
flash, onde são armazenados os programas. A conexão com o computador usa um cabo
5
USB A/B, o mesmo utilizado em impressoras USB, podendo ser alimentado com uma
fonte externa chaveada de 7 a 12 VDC.
A placa pode ser alimentada pela conexão USB ou por uma fonte de alimentação
externa, conforme exibido na figura abaixo:
A alimentação externa é feita através do conector Jack com positivo no centro, onde o
valor de tensão da fonte externa deve estar entre os limites 6V. a 20V., porém se
alimentada com uma tensão abaixo de 7V., a tensão de funcionamento da placa, que no
Arduino Uno é 5V, pode ficar instável e quando alimentada com tensão acima de 12V,
o regulador de tensão da placa pode sobreaquecer e danificar a placa. Dessa forma, é
recomendado para tensões de fonte externa valores de 7V. a 12V.
6
Quando o cabo USB é plugado a um PC por exemplo, a tensão não precisa ser
estabilizada pelo regulador de tensão. Dessa forma a placa é alimentada diretamente
pela USB. O circuito da USB apresenta alguns componentes que protegem a porta USB
do computador em caso de alguma anormalidade.
IOREF – Fornece uma tensão de referência para que shields possam selecionar o tipo de
interface apropriada, dessa forma shields que funcionam com a placas Arduino que são
alimentadas com 3,3V. podem se adaptar para ser utilizados em 5V. e vice-versa.
VIN – pino para alimentar a placa através de shield ou bateria externa. Quando a placa é
alimentada através do conector Jack, a tensão da fonte estará nesse pino.
7
Como interface USB para comunicação com o computador, há na placa um
microprocessador ATMEL ATMEGA16U2
A placa Arduino UNO possui pinos de entrada e saídas digitais, assim como pinos de
entradas e saídas analógicas, abaixo é exibido a pinagem conhecida como o padrão
Arduino.
Conforme exibido na figura abaixo, a placa Arduino UNO possui 14 pinos para I/o
digitias. Estes Pinos operam em 5 V, onde cada pino pode fornecer ou receber uma
corrente máxima de 40 mA. Cada pino possui resistor de pull-up interno que pode ser
habilitado por software. Alguns desse pinos possuem funções especiais:
PWM : 3,5,6,9,10 e 11 podem ser usados como saídas PWM de 8 bits através da função
analogWrite();
Interrupção externa: 2 e 3 Estes pinos podem ser configurados para gera uma
interrupção externa, através da função attachInterrupt().
8
9
2.3. Atmega328
10
Este microprocessador usa uma arquitetura Harvard, usando memórias e barramento
separados para programas e dados. A CPU usa um pipeline (pipelining) de um nível, ou
seja, enquanto está executando uma instrução, a próxima instrução está sendo
pesquisada (pré-extraída) da memória do programa. Graças a esta técnica de pipeline e
barramento separados, o microcontrolador pode executar as instruções em um único
ciclo de clock.
11
Modos de endereçamento do Atmega328
Interrupções no Atmega328
3. Programação do Arduino
Ao programar o aarduino usando IDE há normalmente três componentes essenciais:
Bibliotecas externas- que são codigos completamente desenvolvidos e testados que
podem ser usados dentro do nosso codigo; Constantes e variáveis- definem todas as
constantes e variáveis que são usadas para ler e manipular os dados; Funções- fornece
todas as diferentes maneiras de manipular os dados.
12
Todo codigo para o arduino tem duas partes o setup() e o loop(), o setup é executado
apenas uma vez e define as funções dos pinos (se seram de entrada ou saida), é nesta
parte do programa também que se define as variaveis, se importa (inclui) as bibliotecas
externas e se atribui nomes aos pinos. O loop é a outra parte do programa, a parte do
programa que se executa repetidamente, é nesta parte do programa que se encontra a
manipulação dos dados.
Para criar um programa para Arduino podemos usar o IDE, após terminar o sketch no
IDE devemos conectar o Arduino ao computador por meio de um USB e utilizar o IDE
para realizar os testes, depois transferir o sketch para o arduino e depois a placa já pode
operar.
3.1. Funções
As funções do Arduino estão divididas em 3 grupos:
Short; size_t; string; String(); unsigned char; unsigned int; unsigned long; void; word;
(unsigned int); (unsigned long); byte(); char(); float(); int();long(); word()
*== (equal to) *> (greater than) *>= (greater than or equal to)
*#define(definir)
14
Para realizar a experiência foram usados 2 sensores ultrassonicos um para detectar a
aproximaçao de um veiculo ao parque de estacionamento e outro para verificar se o
lugar de estacionamento está ou não ocupado. Um servo motor para simular a cancela.
O sensor ultrassonico possui 4 pinos, dois para alimentação(ground e vcc) e dois para
transmitir informação o trigger funciona com saída e o Eco vai funcionar como entrada,
o eco recebe o sinal de retorno e o transmite para a placa de circuito.
15
4.1. Componentes Usados
1 Modulo i2;
1 LED;
1 Resistor;
1 Motor DC;
1 Dispositivo Andróid;
1 LCD 16x2;
1 Arduino Uno Atemega328;
Conectores diversos;
1 Sensores ultra-sónico;
1 Modulo Bluetooth;
Uma ponte H;
1 Carregador de 12v;
2 placas bredbord.
16
5. Conclusão
A plataforma Arduino é programada usando uma linguagem de alto nível o C o que
facilita muito a programação quando comparado com algo como um 8085 que usa
assembly sendo mais dificil de programar. Uma das razões para o sucesso do arduino é
a facilidade de programar e o facto de os componentes não terem que ser soldados a
placa, permitindo a reutilização de componentes em um grande numero de projectos
com menor risco de os danificar
17
6 - Apêndice
#include <SoftwareSerial.h>
#include <HCSR04.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
int IN1 = 7;
int IN2 = 6;
int PWMR = 9;
char comando;
int led_R = 3;
void setup() {
Serial.begin(9600);
pinMode(IN1, OUTPUT);
18
pinMode(IN2, OUTPUT);
pinMode(PWMR, OUTPUT);
pinMode(led_R, OUTPUT);
lcd.init();
lcd.setBacklight(HIGH);
lcd.clear();
void loop() {
float cmMsec_R;
cmMsec_R = sensor_R.measureDistanceCm();
Serial.println(cmMsec_R);
lcd.setCursor(0, 0);
lcd.print("VAGA 1 - OCUPADA");
digitalWrite(led_R, LOW);
else {
lcd.setCursor(0, 0);
lcd.print("VAGA 1 - LIVRE");
digitalWrite(led_R, HIGH);
19
}
while (Serial.available()) {
comando = Serial.read();
if (comando == 'F') {
frente();
tras();
esquerda();
direita();
else {
parado();
void tras() {
20
//Gira o Motor A no sentido horario
analogWrite(PWMR,30);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
void frente() {
analogWrite(PWMR, 30);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
void esquerda() {
analogWrite(PWMR, 30);
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
void direita() {
21
analogWrite(PWMR, 30);
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
void parado() {
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
22