Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Módulo Arduino + GPS - Notificador de Destino

Componentes e suprimentos

Arduino UNO
× 1
Módulo GPS (genérico)
Módulo GPS NEO-6M
× 1
LED (genérico)
× 1
Drivers de motor Texas Instruments Dual H-Bridge L293D
× 1
Brown Dog Gadgets Motor de disco vibratório para barata solar
× 1
SparkFun Snappable Protoboard
× 1
Bateria de 9 V (genérica)
× 1
9V para conector Barrel Jack
× 1
A Box
Algo para encerrar o projeto.
× 1
Fios de jumpers (genérico)
× 1

Ferramentas e máquinas necessárias

Ferro de soldar (genérico)
Wire Stripper

Aplicativos e serviços online

Arduino IDE

Sobre este projeto





Introdução:o problema e a solução


Todos sabem que os engarrafamentos podem ser uma grande perda de tempo. E é impossível prever quanto tempo levaria da origem ao destino.

O problema dos engarrafamentos me afetou quando vim para uma cidade há dois meses. Todos os dias passo mais de duas horas presa em congestionamentos. E eu senti o seguinte:por que não posso utilizar esse tempo para fazer algo?

Nota:eu uso transporte público. :-)

Há muitas outras coisas que você pode fazer enquanto está preso no trânsito!

Alguns dos itens abaixo não são apenas divertidos, mas também produtivos:
  • Use o tempo para pensar e planejar, seja para projetos atuais e futuros.
  • Aproveite o tempo para se educar, assistir a vídeos de instrução ou fazer um curso de e-learning no Udemy, Coursera etc.

E, claro, fazendo produtos eletrônicos sempre me inspiram. Portanto, construí um notificador de destino usando o Arduino e o módulo GPS. Então, o que ele faz é sempre que você estiver próximo ao seu destino, ele o notifica por LED brilhante ou por vibração (usando um mini motor vibratório). Eu forneci circuitos para LED e motor vibratório.

Para isso, primeiro você precisa encontrar a latitude e a longitude para definir a localização. Depois de encontrar sua localização, você pode usar os valores de latitude e longitude para encontrar a distância até a localização e, mantendo um intervalo, você pode ligar o notificador. A lógica é simples, certo ?!

Então vamos começar.......





Peças e ferramentas:


Para começar com seu notificador de destino, aqui estão as partes necessárias:
  • Arduino UNO
  • Módulo GPS NEO-6M

GPS significa sistema de posicionamento global e pode ser usado para determinar a posição, o tempo e a velocidade se você estiver viajando.
  • Este módulo possui uma antena externa e EEPROM embutida.
  • Interface:RS232 TTL
  • Fonte de alimentação:3V a 5V
  • Baudrate padrão:9600 bps
  • Funciona com frases NMEA padrão

O módulo NEO-6M GPS possui quatro pinos:VCC, RX, TX e GND. O módulo se comunica com o Arduino via comunicação serial usando os pinos TX e RX, então a fiação não poderia ser mais simples:

Módulo NEO-6M GPS Fiação para Arduino UNO

VCC VIN

Pino RX TX definido no serial do software

Pino TX RX definido no serial do software

GND GND

L293D IC

O L293D é um driver de motor IC de 16 pinos que pode controlar até dois motores CC simultaneamente em qualquer direção.

Por que usar o L293D?

A entrada para o IC do driver do motor ou driver do motor é um sinal de baixa corrente. A função do circuito é converter o sinal de baixa corrente em um sinal de alta corrente. Esse sinal de alta corrente é então fornecido ao motor.

Biblioteca TinyGPS ++ :

A biblioteca TinyGPS ++ simplifica a obtenção de informações sobre a localização em um formato útil e fácil de entender.

A biblioteca TinyGPS ++ permite que você obtenha muito mais informações do que apenas a localização, e de forma simples, além da localização, você pode obter:

>> data

>> tempo

>> velocidade

>> curso

>> altitude

>> satélites

>> hdop





Capturando Latitude e Longitude:


Vou sugerir baixar arquivos fritzing fornecidos no final do projeto para melhor esclarecimento de conexão ou se tiver alguma dúvida sinta-se à vontade para perguntar nos comentários.





Código Arduino para captura de localização:

  #include  
#include
static const int RXPin =4, TXPin =3;
static const uint32_t GPSBaud =9600;
// O objeto TinyGPS ++
TinyGPSPlus gps;
// A conexão serial com o dispositivo GPS
SoftwareSerial ss (RXPin, TXPin);
configuração void () {
Serial.begin (9600);
ss.begin (GPSBaud);
}
void loop () {
// Este esboço exibe informações sempre que um novo frase está codificada corretamente.
while (ss.available ()> 0) {
gps.encode (ss.read ());
if (gps.location.isUpdated ()) {
Serial.print ("Latitude =");
Serial.print (gps.location.lat (), 6);
Serial.print ("Longitude =");
Serial.println (gps.location.lng (), 6);
}
}
}

Observação:você deve instalar Biblioteca TinyGPS ++

conecte de acordo com o diagrama de circuito e carregue o código acima, abra o monitor serial a uma taxa de transmissão de 9600 e você verá a seguinte saída

Nota: Para obter a latitude e longitude pode demorar algum tempo, porque o receptor precisa capturar os sinais. sempre que começa a receber sinais, o LED do módulo GPS pisca.





Notificador de destino através de LED:


Então para garantir que minha ideia funcione fiz um protótipo usando LED para avisar o destino. Então o que eu fiz foi adicionar valores de Latitude e Longitude de destino do código anterior (Read_Lat_Lng.ino) e encontrei a distância até o destino da localização atual. E usado para definir a faixa na qual o LED deve acender.





Código:

  #include  
#include
static const int RXPin =4, TXPin =3;
static const uint32_t GPSBaud =9600;
// O objeto TinyGPS ++
TinyGPSPlus gps;
// A conexão serial com o dispositivo GPS
SoftwareSerial ss (RXPin, TXPin);
// Para estatísticas que acontecer a cada 5 segundos
unsigned long last =0UL;
int ledPin =13;
configuração void ()
{
Serial.begin (115200);
ss.begin (GPSBaud);
pinMode (ledPin, OUTPUT);
}
void loop ()
{
// Despachar caracteres de entrada
while (ss.available ()> 0)
gps.encode (ss.read ());
if (gps.location.isUpdated ())
{
Serial. print (F ("Lat ="));
Serial.print (gps.location.lat (), 6);
Serial.print (F ("Long ="));
Serial.println (gps.location.lng (), 6);
}
else if (millis () - último> 5000)
{
Serial.println ();
if (gps.location.isValid ())
{
// substituir os valores 'Dest_LAT' e 'Dest_LON' bas edon sua localização
// você pode encontrar Latitude e Longitude em Read_Lat_Lng.ino
static const double Dest_LAT =18.786254, Dest_LON =73.880798;
double distanceToDest =
TinyGPSPlus ::distanceBetween (
gps.location.lat (),
gps.location.lng (),
Dest_LAT,
Dest_LON);
Serial.print (F ("Distância até Destino ="));
Serial.print (distanceToDest / 1000, 6); // * Imprime a distância até o destino
if (distanceToDest / 1000 <0,050000) // Aqui, quando distanceToDest / 1000 é menor que 0,050000, o LED acende. Portanto, altere * a distância até o destino de acordo com sua necessidade.
{
digitalWrite (ledPin, HIGH);
}
outro
{
digitalWrite (ledPin, LOW);
}
}
if (gps.charsProcessed () <10)
Serial.println (F ("AVISO:Sem dados GPS. Verifique a fiação."));
last =millis ();
Serial.println ();
}
}

Carregue o código e você verá o seguinte no monitor serial.

Portanto, a distância até o destino pode ser usada para definir o intervalo em que a operação de saída (notificação) deve ser executada.





O último!


OK, meu protótipo funcionou bem. Agora quero encerrar meu projeto em uma caixa que pode acomodar um Arduino, módulo GPS, motor com driver IC e fonte de alimentação de 9V.

Conexão ao IC L293D
  • Conecte 5V para ativar 1, Vs e Vss no L293D
  • Conecte os pinos de saída digital (estamos usando 6 e 7) à entrada 1 e à entrada 2 no L293D.
  • Conecte o GND do Arduino a ambos os pinos GND no mesmo lado do L293D
  • Por fim, conecte a saída 1 e a saída 2 do L293D aos pinos do motor.





Código:

  #include  
#include
static const int RXPin =4, TXPin =3;
static const uint32_t GPSBaud =9600;
// O objeto TinyGPS ++
TinyGPSPlus gps;
// A conexão serial com o dispositivo GPS
SoftwareSerial ss (RXPin, TXPin);
// Para estatísticas que acontecer a cada 5 segundos
unsigned long last =0UL;
int motorpin1 =6;
int motorpin2 =7;
configuração vazia ()
{
Serial .begin (115200);
ss.begin (GPSBaud);
pinMode (motorpin1, OUTPUT);
pinMode (motorpin2, OUTPUT);
}
void loop ()
{
// Despachar caracteres de entrada
while (ss.available ()> 0)
gps.encode (ss.read ());
se (gps.location.isUpdated ())
{
Serial.print (F ("Lat ="));
Serial.print (gps.location.lat (), 6);
Serial.print (F ("Long ="));
Serial.println (gps.location.lng (), 6);
}
else if (millis ( ) - último> 5000)
{
Serial.println ();
if (gps.location.isValid ())
{
// substitua os valores 'Dest_LAT' e 'Dest_LON' com base em sua localização
// você pode encontrar Latitude e Longitude em Read_Lat_Lng.ino
static const double Dest_LAT =18.786254, Dest_LON =73.880798;
double distanceToDest =
TinyGPSPlus ::distanceBetween (
gps.location.lat (),
gps.location.lng (),
Dest_LAT,
Dest_LON);
Serial.print (F ("Distância até o destino ="));
Serial.print (distanceToDest / 1000, 6); // * Imprime a distância até o destino
if (distanceToDest / 1000 <0,050000) // Aqui, quando distanceToDest / 1000 é menor que 0,050000, o LED acende. Portanto, altere * a distância até o destino de acordo com sua necessidade.
{
digitalWrite (motorpin1, LOW);
digitalWrite (motorpin2, HIGH);
}
else
{
digitalWrite (motorpin1, ALTO);
digitalWrite (motorpin2, ALTO);
}
}
if (gps.charsProcessed () <10)
Serial.println (F ("AVISO:Sem dados GPS. Verifique a fiação."));
último =milis ();
Serial.println ();
}
}

Bom trabalho!

Código

  • Read_Lat_Lng.ino
  • Destination_notifier_LED.ino
  • Destination_notifier_motor.ino
Read_Lat_Lng.ino Arduino
 #include  #include  static const int RXPin =4, TXPin =3; static const uint32_t GPSBaud =9600; // O TinyGPS ++ objectTinyGPSPlus gps; // A conexão serial com o GPS deviceSoftwareSerial ss (RXPin, TXPin); configuração vazia () {Serial.begin (9600); ss.begin (GPSBaud);} void loop () {// Este esboço exibe informações sempre que uma nova frase é codificada corretamente. while (ss.available ()> 0) {gps.encode (ss.read ()); if (gps.location.isUpdated ()) {Serial.print ("Latitude ="); Serial.print (gps.location.lat (), 6); Serial.print ("Longitude ="); Serial.println (gps.location.lng (), 6); }}} 
Destination_notifier_LED.ino Arduino
 #include  #include  static const int RXPin =4, TXPin =3; static const uint32_t GPSBaud =9600; // O TinyGPS ++ objectTinyGPSPlus gps; // A conexão serial com o GPS deviceSoftwareSerial ss (RXPin, TXPin); // Para estatísticas que acontecem a cada 5 segundosunsigned long last =0UL; int ledPin =13; void setup () {Serial.begin (115200); ss.begin (GPSBaud); pinMode (ledPin, OUTPUT);} void loop () {// Despacha caracteres de entrada enquanto (ss.available ()> 0) gps.encode (ss.read ()); if (gps.location.isUpdated ()) {Serial.print (F ("Lat =")); Serial.print (gps.location.lat (), 6); Serial.print (F ("Long =")); Serial.println (gps.location.lng (), 6); } else if (millis () - last> 5000) {Serial.println (); if (gps.location.isValid ()) {// substitua os valores 'Dest_LAT' e 'Dest_LON' com base em sua localização // você pode encontrar Latitude e Longitude em Read_Lat_Lng.ino static const double Dest_LAT =18.786254, Dest_LON =73.880798; double distanceToDest =TinyGPSPlus ::distanceBetween (gps.location.lat (), gps.location.lng (), Dest_LAT, Dest_LON); Serial.print (F ("Distância até o destino =")); Serial.print (distanceToDest / 1000, 6); // * Imprime a distância até o destino se (distanceToDest / 1000 <0,050000) // Aqui, quando distanceToDest / 1000 é menor que 0,050000, o LED acende. Portanto, altere * a distância até o destino de acordo com sua necessidade. {digitalWrite (ledPin, HIGH); } else {digitalWrite (ledPin, LOW); }} if (gps.charsProcessed () <10) Serial.println (F ("AVISO:Sem dados GPS. Verifique a fiação.")); último =milis (); Serial.println (); }} 
Destination_notifier_motor.ino Arduino
 #include  #include  static const int RXPin =4, TXPin =3; static const uint32_t GPSBaud =9600; // O TinyGPS ++ objectTinyGPSPlus gps; // A conexão serial com o GPS deviceSoftwareSerial ss (RXPin, TXPin); // Para estatísticas que acontecem a cada 5 segundosunsigned long last =0UL; int motorpin1 =6; int motorpin2 =7; void setup () {Serial.begin (115200); ss.begin (GPSBaud); pinMode (motorpin1, OUTPUT); pinMode (motorpin2, OUTPUT); } void loop () {// Despacha caracteres de entrada enquanto (ss.available ()> 0) gps.encode (ss.read ()); if (gps.location.isUpdated ()) {Serial.print (F ("Lat =")); Serial.print (gps.location.lat (), 6); Serial.print (F ("Long =")); Serial.println (gps.location.lng (), 6); } else if (millis () - last> 5000) {Serial.println (); if (gps.location.isValid ()) {// substitua os valores 'Dest_LAT' e 'Dest_LON' com base em sua localização // você pode encontrar Latitude e Longitude em Read_Lat_Lng.ino static const double Dest_LAT =18.786254, Dest_LON =73.880798; double distanceToDest =TinyGPSPlus ::distanceBetween (gps.location.lat (), gps.location.lng (), Dest_LAT, Dest_LON); Serial.print (F ("Distância até o destino =")); Serial.print (distanceToDest / 1000, 6); // * Imprime a distância até o destino se (distanceToDest / 1000 <0,050000) // Aqui, quando distanceToDest / 1000 é menor que 0,050000, o LED acende. Portanto, altere * a distância até o destino de acordo com sua necessidade. {digitalWrite (motorpin1, LOW); digitalWrite (motorpin2, HIGH); } else {digitalWrite (motorpin1, HIGH); digitalWrite (motorpin2, HIGH); }} if (gps.charsProcessed () <10) Serial.println (F ("AVISO:Sem dados GPS. Verifique a fiação.")); último =milis (); Serial.println (); }} 

Esquemas

read_lat_lng_l3VSL54w0k.fzz destination_notifier_led_c7qaqTImXg.fzz destination_notifier_motor_fGc8OV6Y0w.fzz

Processo de manufatura

  1. Dados digitais Arduino
  2. JX Wave Generator
  3. Homem de Ferro
  4. Encontre-me
  5. Arduino 3D-Printed Robotic Arm
  6. Como fazer a interface do Arduino Mega com o Módulo GPS NEO-6M
  7. Controle do umidificador Arduino
  8. u-blox LEA-6H 02 Módulo GPS com Arduino e Python
  9. NeoMatrix Arduino Pong
  10. Joystick Arduino