Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Модуль Arduino + GPS - средство уведомления о пункте назначения

Компоненты и расходные материалы

Arduino UNO
× 1
Модуль GPS (общий)
GPS-модуль NEO-6M
× 1
LED (общий)
× 1
Драйверы двигателей Texas Instruments Dual H-Bridge L293D
× 1
Гаджеты для коричневой собаки Вибрационный дисковый двигатель с солнечным тараканом
× 1
SparkFun Snappable Protoboard
× 1
Батарея 9 В (стандартная)
× 1
9 В для разъема Barrel Jack
× 1
Коробка
Что-то, в которое будет заключен проект.
× 1
Перемычки (общие)
× 1

Необходимые инструменты и машины

Паяльник (общий)
Инструмент для зачистки проводов

Приложения и онлайн-сервисы

IDE Arduino

Об этом проекте

Введение:проблема и решение

Всем известно, что пробки на дорогах могут сильно расточить время. И невозможно предсказать, сколько времени займет путь от пункта отправления до пункта назначения.

Проблема пробок коснулась меня, когда я приехал в город два месяца назад. Каждый день больше двух часов провожу в пробках. И я подумал, почему я не могу использовать это время для чего-то?

Примечание:пользуюсь общественным транспортом. :-)

Есть много других вещей, которые вы можете сделать, попав в пробку!

Некоторые из приведенных ниже не только забавны, но и продуктивны:

  • Используйте время, чтобы подумать и спланировать как текущие, так и будущие проекты.
  • Найдите время для самообразования, посмотрите обучающие видео или пройдите электронный курс по Udemy, Coursera и т. д.

И, конечно же, изготовление Меня всегда вдохновляет электроника. Итак, я создал средство уведомления о пункте назначения, используя Arduino и модуль GPS. Когда вы приближаетесь к месту назначения, он уведомляет вас светящимся светодиодом или вибрацией (с помощью миниатюрного вибрационного двигателя). Я предоставил схемы как для светодиода, так и для вибромотора.

Для этого сначала вам нужно найти широту и долготу, чтобы определить местоположение. Как только вы найдете свое местоположение, вы можете использовать значения широты и долготы, чтобы определить расстояние до местоположения, и, сохраняя диапазон, вы можете включить уведомитель. Логика простая, правда ?!

Итак, приступим .......

Детали и инструменты:

Вот необходимые части, чтобы начать работу с уведомителем пункта назначения:

  • Arduino UNO
  • Модуль GPS NEO-6M

GPS обозначает глобальную систему позиционирования и может использоваться для определения местоположения, времени и скорости, если вы путешествуете.

  • Этот модуль имеет внешнюю антенну и встроенный EEPROM.
  • Интерфейс:RS232 TTL
  • Источник питания:от 3 до 5 В
  • Скорость передачи по умолчанию:9600 бит / с.
  • Работает со стандартными предложениями NMEA.

GPS-модуль NEO-6M имеет четыре контакта:VCC, RX, TX и GND. Модуль связывается с Arduino через последовательную связь с помощью контактов TX и RX, поэтому подключение не может быть проще:

Подключение GPS-модуля NEO-6M к Arduino UNO

VCC VIN

Вывод RX TX определен в серийном программном обеспечении

Вывод TX RX определен в серийном программном обеспечении

GND GND

L293D IC

L293D - это 16-контактная ИС драйвера двигателя, которая может одновременно управлять двумя двигателями постоянного тока в любом направлении.

Зачем использовать L293D?

На вход микросхемы драйвера двигателя или драйвера двигателя поступает слаботочный сигнал. Функция схемы состоит в преобразовании слаботочного сигнала в сильноточный. Этот сильный сигнал затем подается на двигатель.

Библиотека TinyGPS ++ :

Библиотека TinyGPS ++ упрощает получение информации о местоположении в удобном и понятном формате.

Библиотека TinyGPS ++ позволяет вам получить гораздо больше информации, чем просто местоположение, и простым способом, помимо местоположения, вы можете получить:

>> дата

>> время

>> скорость

>> конечно

>> высота

>> спутники

>> hdop

Захват широты и долготы:

Я предлагаю загрузить файлы fritzing, указанные в конце проекта, для лучшего понимания связи или, если у вас есть сомнения, не стесняйтесь спрашивать в комментариях.

Код Arduino для захвата местоположения:

  #include  
#include
static const int RXPin =4, TXPin =3;
static const uint32_t GPSBaud =9600;
// Объект TinyGPS ++
TinyGPSPlus gps;
// Последовательное соединение с устройством GPS
SoftwareSerial ss (RXPin, TXPin);
void setup () {
Serial.begin (9600);
ss.begin (GPSBaud);
}
void loop () {
// Этот скетч отображает информацию каждый раз, когда новый предложение правильно закодировано.
while (ss.available ()> 0) {
gps.encode (ss.read ());
if (gps.location.isUpdated ()) {
Serial.print ("Широта =");
Serial.print (gps.location.lat (), 6);
Serial.print ("Longitude =");
Serial.println (gps.location.lng (), 6);
}
}
}

Примечание:необходимо установить Библиотека TinyGPS ++

подключитесь в соответствии с принципиальной схемой и загрузите приведенный выше код, откройте последовательный монитор со скоростью 9600 бод, и вы увидите следующий результат

Примечание. Для определения широты и долготы может потребоваться некоторое время, поскольку приемник должен улавливать сигналы. всякий раз, когда он начинает получать сигналы, светодиод на модуле GPS мигает.

Индикатор уведомления о месте назначения:

Поэтому, чтобы убедиться, что моя идея работает, я сделал прототип, используя светодиоды для уведомления пункта назначения. Итак, что я сделал, я добавил значения широты и долготы пункта назначения из предыдущего кода (Read_Lat_Lng.ino) и нашел расстояние до пункта назначения от текущего местоположения. И использовал его для настройки диапазона, при котором светодиод должен включаться.

Код:

  #include  
#include
static const int RXPin =4, TXPin =3;
static const uint32_t GPSBaud =9600;
// Объект TinyGPS ++
TinyGPSPlus gps;
// Последовательное соединение с устройством GPS
SoftwareSerial ss (RXPin, TXPin);
// Для статистики, которая происходит каждые 5 секунд
unsigned long last =0UL;
int ledPin =13;
void setup ()
{
Serial.begin (115200);
ss.begin (GPSBaud);
pinMode (ledPin, OUTPUT);
}
void loop ()
{
// Отправка входящих символов
while (ss.available ()> 0)
gps.encode (ss.read ());
if (gps.location.isUpdated ())
{
Последовательный. print (F ("Lat ="));
Serial.print (gps.location.lat (), 6);
Serial.print (F ("Long ="));
Serial.println (gps.location.lng (), 6);
}
иначе if (millis () - last> 5000)
{
Serial.println ();
if (gps.location.isValid ())
{
// заменяем значения 'Dest_LAT' и 'Dest_LON' базовыми edon ваше местоположение
// вы можете найти широту и долготу из 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 ("Расстояние до Destination ="));
Serial.print (distanceToDest / 1000, 6); // * Печатает расстояние до пункта назначения
if (distanceToDest / 1000 <0,050000) // Здесь, когда distanceToDest / 1000 меньше 0,050000, загорается светодиод. Поэтому измените * расстояние до пункта назначения в соответствии с вашими требованиями.
{
digitalWrite (ledPin, HIGH);
}
else
{
digitalWrite (ledPin, LOW);
}
}
if (gps.charsProcessed () <10)
Serial.println (F ("ВНИМАНИЕ:нет данных GPS. Проверьте проводку."));
last =millis ();
Serial.println ();
}
}

Загрузите код, и на мониторе последовательного порта вы увидите следующее.

Таким образом, расстояние до пункта назначения можно использовать для определения диапазона, в котором должна выполняться операция вывода (уведомление).

Последний!

Хорошо, мой прототип работал нормально. Теперь я хочу поместить свой проект в коробку, в которую поместятся Arduino, модуль GPS, двигатель с микросхемой драйвера и источник питания 9 В.

Подключение к микросхеме L293D

  • Подключите 5 В к Enable 1, Vs и Vss на L293D.
  • Подключите контакты цифрового выхода (мы используем 6 и 7) к входам 1 и 2 на L293D.
  • Подключите GND вашего Arduino к обоим контактам GND на одной стороне L293D
  • Наконец, подключите выход 1 и выход 2 L293D к контактам двигателя.

Код:

  #include  
#include
static const int RXPin =4, TXPin =3;
static const uint32_t GPSBaud =9600;
// Объект TinyGPS ++
TinyGPSPlus gps;
// Последовательное соединение с устройством GPS
SoftwareSerial ss (RXPin, TXPin);
// Для статистики, которая происходит каждые 5 секунд
unsigned long last =0UL;
int motorpin1 =6;
int motorpin2 =7;
void setup ()
{
Последовательный .begin (115200);
ss.begin (GPSBaud);
pinMode (motorpin1, OUTPUT);
pinMode (motorpin2, OUTPUT);
}
void loop ()
{
// Отправка входящих символов
while (ss.available ()> 0)
gps.encode (ss.read ());
если (gps.location.isUpdated ())
{
Serial.print (F ("Lat ="));
Serial.print (gps.location.lat (), 6);
Serial.print (F ("Long ="));
Serial.println (gps.location.lng (), 6);
}
иначе if (millis ( ) - last> 5000)
{
Serial.println ();
if (gps.location.isValid ())
{
// заменяем значения Dest_LAT и Dest_LON в зависимости от вашего местоположения
// вы можете найти широту и долготу из 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 ("Расстояние до пункта назначения ="));
Serial.print (distanceToDest / 1000, 6); // * Печатает расстояние до пункта назначения
if (distanceToDest / 1000 <0,050000) // Здесь, когда distanceToDest / 1000 меньше 0,050000, загорается светодиод. Поэтому измените * расстояние до пункта назначения в соответствии с вашими требованиями.
{
digitalWrite (motorpin1, LOW);
digitalWrite (motorpin2, HIGH);
}
else
{
digitalWrite (motorpin1, ВЫСОКИЙ);
digitalWrite (motorpin2, HIGH);
}
}
if (gps.charsProcessed () <10)
Serial.println (F ("ВНИМАНИЕ:нет данных GPS. Проверьте проводку."));
last =millis ();
Serial.println ();
}
}

Удачи!

Код

  • 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; // Объект TinyGPS ++ TinyGPSPlus gps; // Последовательное подключение к GPS deviceSoftwareSerial SS (RXPin, TXPin); установка void () {Serial.begin (9600); ss.begin (GPSBaud);} void loop () {// Этот скетч отображает информацию каждый раз, когда новое предложение правильно закодировано. в то время как (ss.available ()> 0) {gps.encode (ss.read ()); если (gps.location.isUpdated ()) {Serial.print ("Широта ="); Serial.print (gps.location.lat (), 6); Serial.print ("Долгота ="); 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; // Объект TinyGPS ++ TinyGPSPlus gps; // Последовательное подключение к GPS deviceSoftwareSerial ss (RXPin, TXPin); // Для статистики, которая происходит каждые 5 секунд unsigned long last =0UL; int ledPin =13; void setup () {Serial.begin (115200); ss.begin (GPSBaud); pinMode (ledPin, OUTPUT);} void loop () {// Отправка входящих символов while (ss.available ()> 0) gps.encode (ss.read ()); если (gps.location.isUpdated ()) {Serial.print (F ("Lat =")); Serial.print (gps.location.lat (), 6); Serial.print (F ("Long =")); Serial.println (gps.location.lng (), 6); } иначе, если (millis () - last> 5000) {Serial.println (); if (gps.location.isValid ()) {// замените значения 'Dest_LAT' и 'Dest_LON' в зависимости от вашего местоположения // вы можете найти широту и долготу из Read_Lat_Lng.ino static const double Dest_LAT =18.786254, Dest_LON =73.880798; двойное расстояниеToDest =TinyGPSPlus ::distanceBetween (gps.location.lat (), gps.location.lng (), Dest_LAT, Dest_LON); Serial.print (F ("Расстояние до пункта назначения =")); Serial.print (distanceToDest / 1000, 6); // * Печатает расстояние до пункта назначения if (distanceToDest / 1000 <0,050000) // Здесь, когда distanceToDest / 1000 меньше 0,050000, загорается светодиод. Поэтому измените * расстояние до пункта назначения в соответствии с вашими требованиями. {digitalWrite (ledPin, HIGH); } else {digitalWrite (ledPin, LOW); }} if (gps.charsProcessed () <10) Serial.println (F («ВНИМАНИЕ:нет данных GPS. Проверьте проводку.»)); последний =миллис (); Serial.println (); }} 
Destination_notifier_motor.ino Arduino
 #include  #include  static const int RXPin =4, TXPin =3; static const uint32_t GPSBaud =9600; // Объект TinyGPS ++ TinyGPSPlus gps; // Последовательное подключение к GPS deviceSoftwareSerial ss (RXPin, TXPin); // Для статистики, которая происходит каждые 5 секунд unsigned 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 () {// Отправка входящих символов while (ss.available ()> 0) gps.encode (ss.read ()); если (gps.location.isUpdated ()) {Serial.print (F ("Lat =")); Serial.print (gps.location.lat (), 6); Serial.print (F ("Long =")); Serial.println (gps.location.lng (), 6); } иначе, если (millis () - last> 5000) {Serial.println (); if (gps.location.isValid ()) {// замените значения 'Dest_LAT' и 'Dest_LON' в зависимости от вашего местоположения // вы можете найти широту и долготу из Read_Lat_Lng.ino static const double Dest_LAT =18.786254, Dest_LON =73.880798; двойное расстояниеToDest =TinyGPSPlus ::distanceBetween (gps.location.lat (), gps.location.lng (), Dest_LAT, Dest_LON); Serial.print (F ("Расстояние до пункта назначения =")); Serial.print (distanceToDest / 1000, 6); // * Печатает расстояние до пункта назначения if (distanceToDest / 1000 <0,050000) // Здесь, когда distanceToDest / 1000 меньше 0,050000, загорается светодиод. Поэтому измените * расстояние до пункта назначения в соответствии с вашими требованиями. {digitalWrite (motorpin1, НИЗКИЙ); digitalWrite (моторпин2, ВЫСОКИЙ); } else {digitalWrite (моторпин1, ВЫСОКИЙ); digitalWrite (моторпин2, ВЫСОКИЙ); }} if (gps.charsProcessed () <10) Serial.println (F («ВНИМАНИЕ:нет данных GPS. Проверьте проводку.»)); последний =миллис (); Serial.println (); }} 

Схема

read_lat_lng_l3VSL54w0k.fzz destination_notifier_led_c7qaqTImXg.fzz destination_notifier_motor_fGc8OV6Y0w.fzz

Производственный процесс

  1. Цифровые игральные кости Arduino
  2. Генератор волн JX
  3. Железный человек
  4. Найди меня
  5. Роботизированная рука, напечатанная на 3D-принтере Arduino
  6. Как связать Arduino Mega с GPS-модулем NEO-6M
  7. Управление увлажнителем Arduino
  8. u-blox LEA-6H 02 GPS-модуль с Arduino и Python
  9. NeoMatrix Arduino Pong
  10. Джойстик Arduino