- Materiais utilizados
- Módulo NEO6M GPS
- Display I2C OLED de 1,3 polegadas
- Diagrama de circuito
- Programando Arduino para Velocímetro OLED do Arduino
Velocímetros são usados para medir a velocidade de deslocamento de um veículo. Anteriormente, usamos o sensor IR e o sensor Hall para construir o velocímetro analógico e o velocímetro digital, respectivamente. Hoje vamos usar o GPS para medir a velocidade de um veículo em movimento. Os velocímetros GPS são mais precisos do que os velocímetros padrão porque podem localizar continuamente o veículo e calcular a velocidade. A tecnologia GPS é amplamente utilizada em smartphones e veículos para navegação e alertas de tráfego.
Neste projeto, iremos construir um velocímetro Arduino GPS usando um módulo NEO6M GPS com um display OLED.
Materiais utilizados
- Arduino Nano
- Módulo NEO6M GPS
- Tela I2C OLED de 1,3 polegadas
- Tábua de pão
- Conectando Jumpers
Módulo NEO6M GPS
Aqui estamos usando o módulo NEO6M GPS. O módulo NEO-6M GPS é um receptor GPS popular com uma antena de cerâmica embutida, que fornece uma forte capacidade de busca por satélite. Este receptor tem a capacidade de detectar locais e rastrear até 22 satélites e identificar locais em qualquer lugar do mundo. Com o indicador de sinal integrado, podemos monitorar o status da rede do módulo. Possui uma bateria de backup de dados para que o módulo possa salvar os dados quando a alimentação principal for desligada acidentalmente.
O coração central dentro do módulo receptor GPS é o chip NEO-6M GPS da u-blox. Ele pode rastrear até 22 satélites em 50 canais e tem um nível de sensibilidade impressionante de -161 dBm. Este motor de posicionamento u-blox 6 de 50 canais possui um Time-To-First-Fix (TTFF) de menos de 1 segundo. Este módulo suporta a taxa de transmissão de 4800-230400 bps e possui a taxa de transmissão padrão de 9600.
Características:
- Tensão operacional: (2,7-3,6) V DC
- Corrente operacional: 67 mA
- Taxa de Baud: 4800-230400 bps (9600 padrão)
- Protocolo de Comunicação: NEMA
- Interface: UART
- Antena externa e EEPROM embutida.
Pinagem do Módulo GPS:
- VCC: pino de tensão de entrada do módulo
- GND: pino de aterramento
- RX, TX: pinos de comunicação UART com microcontrolador
Anteriormente, conectamos o GPS ao Arduino e construímos muitos projetos usando módulos GPS, incluindo rastreamento de veículos.
Display I2C OLED de 1,3 polegadas
O termo OLED significa “ diodo emissor de luz orgânico”, ele usa a mesma tecnologia que é usada na maioria de nossos televisores, mas tem menos pixels em comparação com eles. É muito divertido ter esses módulos de exibição legais em interface com o Arduino, pois isso fará com que nossos projetos pareçam legais. Abordamos um artigo completo sobre monitores OLED e seus tipos aqui. Aqui, estamos usando um display OLED monocromático SH1106 de 4 pinos de 1,28 ”OLED. Este display só pode funcionar no modo I2C.
Especificações técnicas:
- Driver IC: SH1106
- Tensão de entrada: 3,3V-5V DC
- Resolução: 128x64
- Interface: I2C
- Consumo de corrente: 8 mA
- Cor do pixel: azul
- Ângulo de visão:> 160 graus
Descrição do pino:
VCC: Fonte de alimentação de entrada 3,3-5 V DC
GND: Pino de referência de aterramento
SCL: pino do relógio da interface I2C
SDA: Pino de dados seriais da interface I2C
A comunidade do Arduino já nos forneceu várias bibliotecas que podem ser usadas diretamente para tornar isso muito mais simples. Experimentei algumas bibliotecas e descobri que a Biblioteca Adafruit_SH1106.h era muito fácil de usar e tinha um punhado de opções gráficas, portanto, usaremos as mesmas neste tutorial.
OLED parece muito legal e pode ser facilmente conectado a outros microcontroladores para construir alguns projetos interessantes:
- Interface do display OLED SSD1306 com Raspberry Pi
- Interface do display OLED SSD1306 com o Arduino
- Relógio da Internet usando ESP32 e display OLED
- Controlador automático de temperatura AC usando Arduino, DHT11 e IR Blaster
Diagrama de circuito
O diagrama de circuito para este velocímetro Arduino GPS usando OLED é fornecido abaixo.
A configuração completa será semelhante a abaixo:
Programando Arduino para Velocímetro OLED do Arduino
O código completo do projeto é fornecido na parte inferior do tutorial. Aqui estamos explicando o código completo linha por linha.
Em primeiro lugar, inclua todas as bibliotecas. Aqui, a biblioteca TinyGPS ++. H é usada para obter as coordenadas GPS usando o módulo receptor GPS e Adafruit_SH1106.h é usado para OLED.
#incluir
Então, é definido o endereço I2C do OLED, que pode ser OX3C ou OX3D, aqui é OX3C no meu caso. Além disso, o pino de reinicialização do display deve ser definido. No meu caso, ele é definido como -1, pois o monitor está compartilhando o pino Reset do Arduino.
#define OLED_ADDRESS 0x3C #define OLED_RESET -1 display Adafruit_SH1106 (OLED_RESET);
A seguir, os objetos para o TinyGPSPlus e a classe Softwareserial são definidos conforme mostrado abaixo. A classe serial do software precisa do número do pino do Arduino. para comunicação serial, que é definida como 2 e 3 aqui.
int RX = 2, TX = 3; TinyGPSPlus gps; SoftwareSerial gpssoft (RX, TX);
Dentro de setup () , a inicialização é feita para comunicação serial e OLED. A taxa de transmissão padrão para a comunicação serial do software é definida como 9600. Aqui, SH1106_SWITCHCAPVCC é usado para gerar a tensão do display de 3,3 V internamente e a função display.begin é usada para inicializar o display.
void setup () { Serial.begin (9600); gpssoft.begin (9600); display.begin (SH1106_SWITCHCAPVCC, OLED_ADDRESS); display.clearDisplay (); }
Dentro enquanto verdadeiro loop, os dados seriais recebidos são validados, se os sinais de GPS válidos são recebidos, em seguida, displayspeed () é chamado para mostrar o valor de velocidade em OLED.
while (gpssoft.available ()> 0) if (gps.encode (gpssoft.read ())) displayspeed ();
Dentro da função displayspeed () , os dados de velocidade do módulo GPS são verificados usando a função gps.speed.isValid () e se retornar um valor verdadeiro, então o valor de velocidade é exibido no display OLED. Aqui, o tamanho do texto no OLED é definido usando a função display.setTextSize e a posição do cursor é definida usando a função display.setCursor . Os dados de velocidade do módulo GPS são decodificados usando a função gps.speed.kmph () e, finalmente, são exibidos usando display.display () .
if (gps.speed.isValid ()) { display.setTextSize (2); display.setCursor (40, 40); display.print (gps.speed.kmph ()); display.display (); }
Por fim, carregue o código no Arduino Uno e coloque o sistema em veículo em movimento, e você poderá ver a velocidade no display OLED conforme mostrado na imagem abaixo.
O código completo com um vídeo de demonstração é fornecido abaixo.