Kit Arduino Uno
- Instalação
- [exemplo] módulo GPS
- [exemplo] I2C OLED
- [exemplo] rumo ao DEEC
- [exemplo] acelerómetro e giroscópio MPU-6050
Instalação
Objetivo:
Familiarização com placa Arduino compatível UNO (Fig.1) e exemlo de utilização usando o IDE Arduino.
Lista de material:
(a) |
(b) |
Fig.1 - Conjunto de desenvolvimento composto por cabo USB (a) e placa Arduino compatível UNO (b). |
Software
![]() |
|
Fig.2 - Software IDE Arduino. |
O software IDE (Integrated Development Environment) Arduino é uma aplicação multiplataforma que permite desenvolver programas e carregue-los para a placa de desenvolvimento, cuja instalação se recomenda [8], e se assume por diante (Fig.2).
Contextualização:
Placa Arduino compatível UNO
A placa Arduino compatível UNO contém um microcontrolador e um chip USB para série CH340 (Fig.3).
Um microcontrolador é um componente que contém um ou mais processadores, uma memória e interface compatível com entrada e saída de periféricos que permite processar dados e executar tarefas de informática básica.
A placa Arduino compatível UNO dispõe de duas formas de ser alimentada. A primeira é por meio da conexão com cabo USB tipo A (Fig.1 (a)), que pode ser conectado a um computador, sendo por essa conexão, também possível enviar software para a placa.
Gestor de placas
O pacote Arduino AVR Boards, deve estar instalado no IDE Arduino de forma a que se possa compilar e transferir programas para a placa Arduino compatível UNO. Tal como ilustrado na Fig.4, o IDE Arduino dispõe de um gestor de placas, que permite gerir e instalar pacotes para várias placas de desenvlvimento.
Fig.4 - Exemplo de utilização de gestor de placas do IDE Arduino para instalação de pacote Arduino AVR Boards. |
Configuração da placa
Tal como ilustrado na Fig.5, o IDE Arduino permite a seleção da placa e da porta lógica onde está conectada a placa.
![]() |
![]() |
(a) | (b) |
![]() |
![]() |
(c) | (d) |
Fig.5 - Exemplo de utilização do IDE Arduino para configuração da placa de desenvolvimento Arduino compatível UNO. |
Por vezes, dependendo das características particulares do sistema usado, a placa de desenvolvimento Arduino compatível UNO pode não ser automaticamente reconhecida. Na eventualidade da placa ligada ao computador através de cabo USB não aparecer na lista de portas lógicas listadas no IDE Arduino (Fig.5 (b)), sugere-se a instalação dos drivers do CH340, tal como em [7].
Exemplo de utilização (Pisca LED):
Um exemplo clássico para iniciar a programação de placa Arduino e placas compatíveis é o Pisca LED, que consiste em ligar e desligar um LED em intervalos de 1 segundo (Fig.7).
Um programa é composto de uma sequência de comandos, normalmente escritos em um arquivo de texto.
Considerando o IDE Arduino previamente configurado para a placa de desenvolvimento ligada ao computador e o seguinte programa de exemplo (Código.1), sugere-se a consulta da Fig.6 para reprodução do exemplo de programação do Arduino compatível UNO.
|
Código.1 - Programa Pisca LED. |
![]() |
![]() |
Fig.6 - Ilustração da programação da placa Arduino compatível UNO com o IDE Arduino. |
Fig.7 - Exemplo de Arduino compatível UNO a executar o programa que controla o LED da placa de desenvolvimento. |
Outros exemplos
![]() |
![]() |
![]() |
[a] | [b] | [c] |
[a] DEEC - FCTUC. Kit Arduino Uno > [exemplo] módulo GPS. url: https://kb.deec.uc.pt/books/deec/page/exemplo-modulo-gps (acedido em 10/04/2024).
[b] DEEC - FCTUC. Kit Arduino Uno > [exemplo] I2C OLED. url: https://kb.deec.uc.pt/books/deec/page/exemplo-i2c-oled (acedido em 10/04/2024).
[c] DEEC - FCTUC. Kit Arduino Uno > [exemplo] rumo ao DEEC. url: https://kb.deec.uc.pt/books/deec/page/exemplo-rumo-ao-deec (acedido em 10/04/2024).
Referências
[1] Arduino. Documentação de Referência da Linguagem Arduino. url: https://docs.arduino.cc/learn/programming/reference/ (acedido em 03/04/2024).
[2] Arduino. Introdução ao IDE (Integrated Development Environment) Arduino. url: https://docs.arduino.cc/software/ide-v2/tutorials/getting-started-ide-v2/ (acedido em 03/04/2024).
[3] Arduino. Introdução a Programação para Arduino. url: https://docs.arduino.cc/learn/programming/sketches/ (acedido em 03/04/2024).
[4] Arduino. Instalação do IDE Arduino. url: https://docs.arduino.cc/software/ide-v2/tutorials/getting-started/ide-v2-downloading-and-installing (acedido em 03/04/2024).
[5] Arduino. Instalação de Suporte para Placa no IDE. url: https://docs.arduino.cc/software/ide-v2/tutorials/ide-v2-board-manager (acedido em 03/04/2024).
[6] Arduino. Transferência de Sketches (Programas) para Placa Arduino. url: https://docs.arduino.cc/software/ide-v2/tutorials/getting-started/ide-v2-uploading-a-sketch (acedido em 03/04/2024).
[7] SparkFun. How to Install CH340 Drivers. url: https://learn.sparkfun.com/tutorials/how-to-install-ch340-drivers/all (acedido em 03/04/2024).
[8] Arduino. Downloads. url: https://www.arduino.cc/en/software (acedido em 10/04/2024).
[exemplo] módulo GPS
Objetivo:
Demonstrar o uso de módulo GPS (Global Positioning System) com Arduino para obter dados GPS.
Lista de material:
Fig.1 - Placa Arduino compatível UNO. |
![]() |
|
Fig.2 - Módulo GPS com interface UART/TTL. |
Contextualização:
Sistema de posicionamento global
O sistema de posicionamento global, mais conhecido pela sigla GPS (em inglês Global Positioning System), é um sistema de navegação por satélite que fornece a um aparelho receptor móvel a sua posição, assim como o horário.
![]() |
||
Fig.3 - Apontamentos sobre GPS retirados de [2]. |
Set-up
Bibliotecas
Bibliotecas são coleções de código que perimitem ampliar a capacidade da placa de desenvolvimento facilitando a sua utilização. O IDE Arduino integra um gestor de Bibliotecas cujo uso se exemplifica na Fig.4.
A placa Arduino compatível UNO possui suporte integrado para comunicação série nos pinos 0 e 1. A Biblioteca SoftwareSerial permite estabelecer comunicação série nos restantes pinos digitais da placa. Neste exemplo sugere-se a utilização desta abordagem para proporcionar que o módulo GPS e a placa possam comunicar.
No exemplo abaixo, os pinos digitais 2 e 3 da placa Arduino compatível UNO são usados como linhas série RX e TX virtuais.
Desta forma estabelece-se a ligação que permite que a placa escute a porta série do GPS e, quando os dados são recebidos do módulo, eles são enviados para placa. Sendo os dados comunicados pelo módulo GPS tipicamente numa linguagem padrão do GPS é comum o uso de Bibliotecas como a TinyGPSPlus para facilitar o uso da informação disponibilizada pelo módulo GPS num formato legível e útil.
![]() |
![]() |
(a) | (b) |
Fig.4 - Exemplo de utilização do gestor de bibliotecas do IDE Arduino para instalação da Biblioteca TinyGPSPlus. |
Programa
|
Código.1 - Programa exemplo de utilização de módulo GPS e biblioteca TinyGPSPlus com placa Arduino compatível UNO. |
[exemplo] módulo GPS
![]() |
![]() |
Fig.5 - Exemplo de utilização de módulo GPS com placa Arduino compatível UNO programada para processar os dados disponibilizados pelo módulo GPS e exibi-los através de comunicação série. |
Outros exemplos
![]() |
![]() |
![]() |
[a] | [b] | [c] |
[a] DEEC - FCTUC. Kit Arduino Uno > Instalação. url: https://kb.deec.uc.pt/books/deec/page/instalacao-irK (acedido em 10/04/2024).
[b] DEEC - FCTUC. Kit Arduino Uno > [exemplo] I2C OLED. url: https://kb.deec.uc.pt/books/deec/page/exemplo-i2c-oled (acedido em 10/04/2024).
[c] DEEC - FCTUC. Kit Arduino Uno > [exemplo] rumo ao DEEC. url: https://kb.deec.uc.pt/books/deec/page/exemplo-rumo-ao-deec (acedido em 10/04/2024).
Referências
[1] Arduino. Software Serial Example. url: https://wiki-content.arduino.cc/en/Tutorial/LibraryExamples/SoftwareSerialExample (acedido em 11/04/2024).
[2] Wikipedia. Sistema de posicionamento global. url: https://pt.wikipedia.org/wiki/Sistema_de_posicionamento_global (acedido em 11/04/2024).
[exemplo] I2C OLED
Objetivo:
Demonstrar o uso de ecrã OLED com placa Arduino compatível UNO para exibir texto.
Lista de material:
Fig.1 - Placa Arduino compatível UNO. |
Fig.2 - Ecrã OLED (organic light-emitting diode) SSD1306 de 0,96 polegadas com resolução de 128×64. |
Set-up
Biblioteca
![]() |
![]() |
![]() |
![]() |
Fig.4 - Exemplo de utilização do gestor de bibliotecas do IDE Arduino para instalação da Biblioteca Adafruit SSD1306. |
Programa
|
Código.1 - Programa exemplo de utilização de ecrã OLED com placa Arduino compatível UNO para exibir texto |
[exemplo] I2C OLED
![]() |
![]() |
![]() |
![]() |
Fig.5 - Ilustração da sequência de símbolos a surgir no ecrã. |
Outros exemplos
![]() |
![]() |
![]() |
[a] | [b] | [c] |
[a] DEEC - FCTUC. Kit Arduino Uno > Instalação. url: https://kb.deec.uc.pt/books/deec/page/instalacao-irK (acedido em 10/04/2024).
[b] DEEC - FCTUC. Kit Arduino Uno > [exemplo] módulo GPS. url: https://kb.deec.uc.pt/books/deec/page/exemplo-modulo-gps (acedido em 10/04/2024).
[c] DEEC - FCTUC. Kit Arduino Uno > [exemplo] rumo ao DEEC. url: https://kb.deec.uc.pt/books/deec/page/exemplo-rumo-ao-deec (acedido em 10/04/2024).
[exemplo] rumo ao DEEC
Objetivo:
Chegar ao DEEC - FCTUC via sistema de posicionamento global com Arduino.
Requisitos
![]() |
![]() |
![]() |
[a] | [b] | [c] |
[exemplo] rumo ao DEEC
Set-up
![]() |
![]() |
![]() |
![]() |
|||
Arduino compatível UNO | módulo GPS | ecrã OLED | |
3.3V |
------------ | VCC | |
------------ | V | ||
GND |
------------ | GND | |
------------ | G | ||
2 | ------------ | R | |
3 | ------------ | T | |
A4 | ------------ | SDA | |
A5 | ------------ | SDL |
Programa
#include <SoftwareSerial.h>
#include <TinyGPSPlus.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// OLED display TWI address
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C ///< See datasheet for Address;
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
SoftwareSerial gpsSerial(2, 3); // RX, TX
TinyGPSPlus gps;
bool selector = false;
void setup() {
// inicializa ecrã
if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;); // Don't proceed, loop forever
}
display.clearDisplay();
display.display();
// imprime linha de texto
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(27, 30);
display.print(F("..."));
// actualiza ecrã
display.display();
gpsSerial.begin(9600);
Serial.begin(115200);
}
void loop() {
while (gpsSerial.available() > 0){
if (gps.encode(gpsSerial.read()))
displayInfo();
}
if (millis() > 5000 && gps.charsProcessed() < 10)
{
Serial.println(F("No GPS detected: check wiring."));
while(true);
}
}
void displayInfo() {
bool chalk_a = true;
bool chalk_b = true;
selector = false;
Serial.print(F("Location: "));
if (gps.location.isValid()) {
Serial.print(gps.location.lat(), 12);
Serial.print(F(","));
Serial.print(gps.location.lng(), 12);
if (chalk_a) {
chalk_a = false;
}
} else {
Serial.print(F("INVALID"));
}
Serial.print(F(" Date/Time: "));
if (gps.date.isValid()) {
Serial.print(gps.date.month());
Serial.print(F("/"));
Serial.print(gps.date.day());
Serial.print(F("/"));
Serial.print(gps.date.year());
} else {
Serial.print(F("INVALID"));
}
Serial.print(F(" "));
if (gps.time.isValid()) {
if (gps.time.hour() < 10) Serial.print(F("0"));
Serial.print(gps.time.hour());
Serial.print(F(":"));
if (gps.time.minute() < 10) Serial.print(F("0"));
Serial.print(gps.time.minute());
Serial.print(F(":"));
if (gps.time.second() < 10) Serial.print(F("0"));
Serial.print(gps.time.second());
Serial.print(F("."));
if (gps.time.centisecond() < 10) Serial.print(F("0"));
Serial.print(gps.time.centisecond());
if (chalk_b) {
chalk_b = false;
}
} else {
Serial.print(F("INVALID"));
}
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
if (!chalk_a) {
static const double DEECFCTUC_LAT = 40.18639388156963, DEECFCTUC_LON = -8.416520235329802;
unsigned long distanceKmToDEEC =
(unsigned long)TinyGPSPlus::distanceBetween(
gps.location.lat(),
gps.location.lng(),
DEECFCTUC_LAT,
DEECFCTUC_LON);
if (distanceKmToDEEC > 1000) {
distanceKmToDEEC = distanceKmToDEEC / 1000;
selector = true;
}
Serial.println(distanceKmToDEEC);
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(30, 35);
display.print(distanceKmToDEEC);
display.setCursor(90, 35);
if (selector) {
display.print(F("km"));
} else {
display.print(F("m"));
}
display.setTextSize(1);
display.setTextColor(WHITE);
} else {
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(40, 35);
display.print(F("..."));
display.setCursor(90, 35);
if (selector) {
display.print(F("km"));
} else {
display.print(F("m"));
}
display.setTextSize(1);
display.setTextColor(WHITE);
}
display.setCursor(5, 5);
display.print(F("agora"));
display.setCursor(5, 20);
display.print(F("faltam"));
display.setCursor(5, 55);
display.print(F("para chegar ao DEEC"));
if (!chalk_b) {
display.setCursor(50, 5);
display.print(gps.time.hour());
display.setCursor(63, 5);
display.print(":");
display.setCursor(70, 5);
display.print(gps.time.minute());
display.setCursor(83, 5);
}
else {
display.setCursor(50, 5);
display.print(F("00"));
display.setCursor(63, 5);
display.print(":");
display.setCursor(70, 5);
display.print(F("00"));
display.setCursor(83, 5);
}
display.display();
Serial.println();
}
Outros exemplos
![]() |
![]() |
![]() |
[a] | [b] | [c] |
[a] DEEC - FCTUC. Kit Arduino Uno > Instalação. url: https://kb.deec.uc.pt/books/deec/page/instalacao-irK (acedido em 10/04/2024).
[b] DEEC - FCTUC. Kit Arduino Uno > [exemplo] módulo GPS. url: https://kb.deec.uc.pt/books/deec/page/exemplo-modulo-gps (acedido em 10/04/2024).
[c] DEEC - FCTUC. Kit Arduino Uno > [exemplo] I2C OLED. url: https://kb.deec.uc.pt/books/deec/page/exemplo-i2c-oled (acedido em 10/04/2024).
[exemplo] acelerómetro e giroscópio MPU-6050
Objetivo:
Demonstrar o uso de sensor com acelerómetro e giroscópio para obter dados de sensores inerciais.
Lista de material:
Fig.1 - Placa Arduino compatível UNO. |
![]() |
![]() |
Fig.2 - Sensor MPU-6050. |
Contextualização:
Uma unidade de medição inercial (IMU do inglês inertial measurement unit) é um dispositivo eletrónico que permite quantificar a força específica de um corpo, a taxa angular e, por vezes, a orientação do corpo, usando uma combinação de acelerómetros, giroscópios e, às vezes, magnetómetros [1].
Set-up
Bibliotecas
![]() |
![]() |
![]() |
Fig.5 - Exemplo de utilização do gestor de bibliotecas do IDE Arduino para instalação da biblioteca Adafruit MPU6050. |
Programa
|
Código.1 - Programa exemplo de utilização de sensor MPU-6050 e biblioteca Adafruit MPU6050 com placa Arduino compatível UNO. |
Referências
[1] Wikipedia. Unidade de medição inercial. url: https://en.wikipedia.org/wiki/Inertial_measurement_unit (acedido em 26/04/2024).