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

SmartWay

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

Перемычки (общие)
В целом
× 1
NPN-транзистор общего назначения
Для цепи вибрирующего моторного элемента
× 1
Керамический конденсатор 0,1 мкФ
Для цепи вибрирующего моторного элемента
× 1
Резистор 1 кОм
Для цепи вибрирующего моторного элемента
× 1
Резистор 221 Ом
Для схемы светодиодов RGB
× 1
Общий катод, рассеянный RGB
× 1
Модуль GPS GY-NEO6MV2
× 1
Ячейка с вибрационным двигателем
× 1
Держатель батареи UDOO 2AA для RTC
× 1
Arduino MKR Fox 1200
× 1

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

Паяльник (общий)

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

Веб-редактор Arduino
Sigfox

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

Обзор

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

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

SWay будет отслеживать геолокацию вашего ребенка с помощью GPS и немедленно отправлять родителям электронное письмо, если ребенок отклоняется от пути, который вы ему назначили. SmartWay также отправит родителям электронное письмо, когда ребенок придет домой или в школу, а также проинформирует их, если ребенок опаздывает. Таким образом, родители могут расслабиться и насладиться чашечкой кофе, зная, что их ребенок благополучно доставляется в школу и домой.

Функциональность

SmartWay будет постоянно отслеживать геолокацию вашего ребенка, начиная с момента его пробуждения и заканчивая возвращением домой. Устройство также оснащено светодиодом RGB и вибромотором, чтобы предупредить вашего ребенка, если он / она ходит неправильным путем в школу или опоздать, и поздравить его / ее, когда он / она придет в школу.

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

  • Первый цикл if (off track) определяет, отклонился ли ребенок от назначенного пути; в устройстве есть система, которая определяет количество раз, когда это происходит; если ваш ребенок отклонится от курса в первый раз, устройство предупредит его / ее, включив красный светодиод и завибрируя двигатель, после чего у ребенка будет две минуты, чтобы вернуться на курс. Если ребенок не уклоняется от курса в течение следующих двух минут, родитель получит электронное письмо с предупреждением о том, что его ребенок сбился с курса, вместе с его / ее геолокацией, электронное письмо будет отправлено с интервалом в 2 минуты, пока ребенок не прибудет. дома или в школе.
  • if (школьное время) и if (домашнее время) петли определяют, пришло ли время в школу и домой, затем устройство проверяет, прибыл ли ребенок в школу или домой, если он / она прибыл вовремя, светодиод станет зеленым, и устройство отправит родителям электронное письмо, информирующее их о том, что они ребенок прибыл в пункт назначения вместе со временем прибытия. В противном случае, если пришло время идти в школу, а ребенка нет в школе, это также будет

Устройство может отправлять только 12 байтов информации, поэтому при отправке необходим компактный пакет. Другие переменные будут настроены в бэкэнде SigFox.

Устройство может отправить четыре пакета

  • ребенок не по курсу - ("не по курсу")
  • ребенок прибыл домой - ("дома")
  • ребенок пришел в школу - («в школе»)
  • ребенок опаздывает - ("опаздывает")

Система предупреждений

Ребенок, носящий устройство, будет предупрежден всякий раз, когда он / она придет в школу, вернется домой, опоздает в пункт назначения или отклонился от курса

Устройство в действии

Преимущества

Родителям, использующим это устройство, принесут пользу:

  • обеспечить безопасное прибытие ребенка в школу и обратно.
  • следить за тем, чтобы их ребенок прибыл в эти места вовремя.
  • убедитесь, что их ребенок, конечно, не отклоняется.
  • Экономия энергии и низкая стоимость - батареи с длительным сроком службы

Создание проекта

Шаг 1. Необходимое оборудование

Чтобы приступить к созданию проекта, нам нужно собрать наши материалы. Для этого проекта вам потребуется:

  • перемычки
  • 1, транзистор NPN
  • 1, керамический конденсатор (0,1 мкФ)
  • 3 резистора (220 Ом)
  • 1, резистор (1 кОм)
  • 1, светодиод RGB
  • 1, модуль GPS
  • 1, вибромоторный элемент.
  • 1, Arduino MKR1200 fox
  • 1, 2 батарейных блока AAA / AA
  • 2 батарейки AA

Шаг 2. Подключение цепи

Следующим шагом будет подключение схемы; изображения Fritzing ниже иллюстрируют, как это делается. Электропроводка состоит из нескольких частей, поэтому они разделены на разные изображения.

Шаг 3. Подтверждение кода

Код состоит из нескольких функций, каждая из которых выполняет определенную роль в структуре проекта.

  • Система предупреждений
  • Получить GPS
  • Синхронизировать RTC
  • Местоположение процесса
  • Отправить пакет
  • Действия

Эти разделы описаны ниже.

  • Система предупреждений
  void setOutputs () {pinMode (R, OUTPUT); pinMode (G, ВЫХОД); pinMode (B, ВЫХОД); pinMode (motorPin, OUTPUT);} void vibrateMotor () // вибрируем моторную ячейку {digitalWrite (motorPin, HIGH); задержка (1000); digitalWrite (motorPin, LOW);} void ledGreen () // Светодиод, зеленый {analogWrite (R, 0); analogWrite (G, 255); analogWrite (B, 0);} void ledOrange () // светодиод, оранжевый {analogWrite (R, 255); analogWrite (G, 45); analogWrite (B, 0);} void ledRed () // Светодиод, красный {analogWrite (R, 255); analogWrite (G, 0); analogWrite (B, 0);} void resetLED () // Выключаем светодиод {analogWrite (R, 0); analogWrite (G, 0); analogWrite (B, 0);}  

Этот раздел кода находится в functions.h файл. Код уведомит ребенка, носящего устройство, о текущем состоянии. В целом эти контуры управляют светодиодом RGB и вибрирующим двигателем.

  • Получить GPS
  bool getGPS (int run) {while (Serial1.available ()> 0) {if (gps.encode (Serial1.read ())) {if (run ==1) {processData (); } иначе, если (запустить ==2) {synchRTC (); } if (gps.location.isValid () &&gps.time.isValid () &&gps.date.isValid ()) {return true; } else {вернуть ложь; }}} if (millis ()> 10000 &&gps.charsProcessed () <10) {Serial.println ("Ошибка - модуль GPS ответил с ошибкой"); Serial.println («Код завершения»); Serial.println («________________________________________»); в то время как (1) {}; }}  

Это цикл, отвечающий за получение местоположения и времени от модуля GPS. Этот цикл выполняет 3 функции, он используется в цикле настройки чтобы синхронизировать GPS, он затем используется для синхронизации бортового RTC с GPS и используется в основном цикле для получения геолокации устройства.

  • Синхронизировать RTC
  void synchRTC () {Serial.println ("Синхронизация RTC"); Serial.println («________________________________________»); Serial.println («ОК - инициализация RTC»); rtc.begin (); Serial.println («ОК - время синхронизации»); // нам нужно обрезать первые 2 цифры переменной (2018 -> 18) uint16_t yearRAW =gps.date.year (); Строка yearString =String (yearRAW); yearString.remove (0,1); uint16_t год =yearString.toInt (); rtc.setTime (gps.time.hour (), gps.time.minute (), gps.time.second ()); rtc.setDate (gps.date.day (), gps.date.month (), год); Serial.println («Успех - синхронизация RTC»); Serial.println («________________________________________»); Serial.println (""); Serial.println (""); Serial.println ("");}  

Этот фрагмент кода синхронизирует бортовые часы реального времени со временем, полученным от модуля GPS, он сначала считывает данные из модуля GPS, а затем обрабатывает их. Затем цикл устанавливает текущее время встроенного RTC равным полученному времени и запускает RTC.

  • Процесс Местоположение
  bool processData () {if (gps.location.isValid ()) {latitude =gps.location.lat (); longitude =gps.location.lng (); широта =53,355504; долгота =-6,258452; if (check.isOut ()) {if (check.track ()) {Serial.println («ВНЕ ГРАНИЦ»); warn.offTrackLoop (); }} если (check.isHomeTime () &&прибыла школа) {если (check.isHome ()) {Serial.println ("ДОМА"); warn.arhibitedHomeLoop (); } else {Serial.println ("ПОЗДНЕЕ -> ДОМАШНЕЕ"); warn.lateLoop (); }} иначе, если (check.isSchoolTime () &&прибылаHome) {Serial.println ("."); если (check.isSchool ()) {Serial.println ("В ШКОЛЕ"); warn.arhibitedSchoolLoop (); } else {Serial.println ("ПОЗДНЕЕ -> ШКОЛА"); warn.lateLoop (); }} else {Serial.println ("В ПУТИ"); }}}  

Этот цикл обработает местоположение устройства и сравнит его с текущим временем, чтобы увидеть, где в это время должен быть ребенок. Затем он выполнит соответствующее действие в зависимости от результата.

  • Делать Действия
  struct Do {void offTrackLoop () {если (offTrackVar) {parseData (0); } vibrateMotor (); ledRed (); задержка (1000); vibrateMotor (); resetLED (); offTrackVar =true; задержка (120000); } void lateLoop () {если (! lateVar) {parseData (1); } vibrateMotor (); ledOrange (); задержка (1000); resetLED (); lateVar =true; } void прибылHomeLoop () {lateVar =false; offTrackVar =false; vibrateMotor (); ledGreen (); задержка (1000); resetLED (); parseData (2); прибылHome =true; прибылаШкола =ложь; } void прибылSchoolLoop () {lateVar =false; offTrackVar =false; vibrateMotor (); ledGreen (); задержка (1000); resetLED (); parseData (3); прибылHome =false; прибылаШкола =правда; }};  

Эта структура вызывается для выполнения действий с ответом, предоставленным Местоположение процесса, он предупредит ребенка о переключении светодиода RGB и вибрирующего моторного отсека. При необходимости он также отправит пакет в SigFox.

  • Отправить Пакет
  void parseData (int state) {SigFox.beginPacket (); // начинаем процесс отправки сообщения if (state ==0) // не в курсе {SigFox.print ("off track"); // отправляем сообщение} else if (state ==1) // поздно {SigFox.print ("late"); // отправляем сообщение} else if (state ==2) // прибыл домой {SigFox.print ("дома"); // отправляем сообщение} else // школа прибыла {SigFox.print ("в школе"); // отправляем сообщение} SigFox.endPacket ();}  

Эта функция отправляет данные в SigFox, начинается отправка пакета, а затем анализируется соответствующее значение.

Настройка переменных

Код будет содержать несколько переменных с TODO, написанным в виде комментария после них, эти переменные должны быть настроены для соответствия клиенту, клиенту будет предложено настроить

  • Время в школу
  • Время, необходимое ребенку для путешествия
  • Время окончания школы
  • Отладка?
  • Геолокация школы (LAT, LNG);
  • Домашняя геолокация (LAT, LNG);

Приведенное ниже руководство поможет вам настроить переменные.

Библиотеки

SigFox - авторское право (c) Стандартная общественная лицензия ограниченного применения GNU компании Arduino LLC, 2016 г., эта библиотека находится в общественном достоянии

ctype - copyright (c) 2006 Free Software Foundation под Стандартной общественной лицензией GNU, эта библиотека находится в общественном достоянии

RTCZero - авторское право (c) 2015 Arduino LLC под Стандартной общественной лицензией ограниченного применения GNU, эта библиотека находится в общественном достоянии

Строка - авторское право (c) Эрнандо Барраган, 2009-10, авторское право (c) Пол Стоффренген, 2011 г., согласно Стандартной общественной лицензии ограниченного применения GNU, эта библиотека находится в общественном достоянии

TinyGPS ++ - авторское право (c) 2008-13 Mikal Hart под Стандартной общественной лицензией GNU Lesser General License, эта библиотека находится в общественном достоянии

Настройка

Убедитесь, что цепь правильно подключена. Для получения дополнительных сведений о настройке MKR fox щелкните здесь, чтобы перейти к руководству по Arduino. Если вы хотите узнать больше о библиотеке Arduino SigFox, щелкните здесь.

Серверная программа

Для программирования серверной части у вас должен быть зарегистрированный Arduino MKR1200 fox.

  • Шаг 1

Откройте серверную часть SigFox и войдите в свою учетную запись SigFox.

  • Шаг 2

нажмите «Тип устройства» в раскрывающемся меню вверху страницы

  • Шаг 3:

выберите свой Arduino MKRfox и нажмите «Изменить»

  • Шаг 4.

Выберите обратные вызовы в меню слева и перейдите к кнопке «новый» в правом верхнем углу.

  • Шаг 5.

После того, как вы нажали «Создать», вам будет представлен ряд параметров конфигурации обратного вызова, нажмите «Пользовательские обратные вызовы»

Затем откроется окно, вы должны заполнить данную форму, чтобы создать обратный вызов

В конце ваше сообщение должно выглядеть так:

Теперь нажмите "ОК", и все готово.

Финал

Последнее, что вам нужно сделать, это загрузить приведенный ниже код. Убедитесь, что вы настроили переменную, помеченную как «TODO», в соответствии с вашими предпочтениями, дождитесь, пока синий индикатор на модуле GOS не начнет мигать, а затем отключите микроконтроллер от вашего компьютера и поместите батарейки в батарейный отсек. Все готово.

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

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

Фон

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

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

Код

SmartWay
Полный код

Изготовленные на заказ детали и корпуса

По умолчанию не входит в состав Fritzing arduino_mkr_fox_1200_fixed_gwlzp1tuih_uh8ucYEGxI.fzpz

Схема

general_WZeRYkIUCF.fzz

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

  1. Коллекторные двигатели переменного тока
  2. Прототип Raspoulette
  3. Простой робот Pi
  4. Как проверить двигатель постоянного тока
  5. Что такое линейный двигатель?
  6. Введение в двигатель BLDC
  7. Что такое мотор-редуктор?
  8. Что такое серводвигатель?
  9. Что такое редуктор серводвигателя?
  10. Понимание стартера двигателя