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

Система посещаемости отпечатков пальцев Arduino с облачным хранилищем данных

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

Arduino Mega 2560 R3
× 1
Датчик отпечатков пальцев ElectroPeak R301T
× 1
Модуль адаптера TF-карты ElectroPeak Micro SD
× 1
Модуль ElectroPeak DS3231 I2C RTC
× 1
Модуль цветного экрана TFT-дисплея ElectroPeak 3.5 "
× 1
Плата ElectroPeak NodeMCU ESP8266 ESP-12E
× 1
ЭлектроПик от мужчины к перемычке с женщиной
× 1

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

Лазерный резак (универсальный)
Паяльник (общий)

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

IDE Arduino

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

Вы можете прочитать это и другие замечательные руководства на Официальный сайт ElectroPeak .

Обзор

В настоящее время изучение работы и реализации устройств IoT так важно из-за все более широкого использования систем IoT. В этом уроке мы собираемся создать устройство посещаемости по отпечатку пальца с Arduino, которое, помимо хранения информации о входе в систему и рабочих часов на карте памяти, загружает эту информацию на платформу ThingSpeak, как только она подключена к Интернету. и вы можете загрузить эту информацию с панели в различных форматах, например CSV.

Что вы узнаете

  • Работа с датчиками отпечатков пальцев
  • Загрузка данных на ThingSpeak с помощью NodeMCU
  • Сделайте устройство учета рабочего времени с датчиком отпечатков пальцев и Arduino.

Что такое ThingSpeak?

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

ThingSpeak - это платформа Интернета вещей, которая позволяет отображать и собирать данные в реальном времени в облачных вычислениях.

Взаимодействие с ThingSpeak и загрузка данных

Выполните следующие действия, чтобы установить соединение с ThingSpeak:

Шаг 1 ) Войдите на сайт ThingSpeak.com и создайте учетную запись.

Шаг 2 ) Войдите в систему после активации своей учетной записи и нажмите Новый канал . в Моем канале раздел.

Шаг 3 ) В новом открывшемся для вас окне напишите название вашей панели и любое описание, если это необходимо. Определите количество полей, которые вам нужны, назначив их имена. Остальные части не являются обязательными. Сохраните панель после заполнения информации.

Шаг 4 ) Теперь перейдите в Ключи API . в вашей панели.

Шаг 5 ) Вам понадобится идентификатор канала и Записать ключ API для передачи данных, так что запишите их.

Шаг 6) Загрузите ThingSpeak библиотеку и добавьте ее в свою Arduino IDE.

Библиотека ThingSpeak

Шаг 7) Перейдите в IDE Arduino. Откройте WriteMultipleFiels из части примеров и введите значения SSID, пароля, идентификатора канала и ключа API записи.

  / * WriteMultipleFields Описание:Записывает значения в поля 1,2,3,4 и статус в одном обновлении Thingspeak каждые 20 секунд. Оборудование:платы на базе ESP8266 !!! ВАЖНО - Измените файл secrets.h для этого проекта, указав свое сетевое соединение и сведения о канале Thingspeak. !!! Примечание. - Требуется библиотека ESP8266WiFi и надстройка платы ESP8622. Подробнее см. Https://github.com/esp8266/Arduino. - Выберите целевое оборудование в меню «Инструменты»> «Плата». Этот пример написан для сети с использованием шифрования WPA. Для WEP или WPA измените вызов WiFi.begin () соответственно. Thingspeak (https://www.Thingspeak.com) - это сервис аналитической платформы Интернета вещей, который позволяет агрегировать, визуализировать и анализировать потоки данных в реальном времени в облаке. Посетите https://www.Thingspeak.com, чтобы получить бесплатную учетную запись и создать канал. Документация по коммуникационной библиотеке Thingspeak для Arduino находится в папке README.md, куда была установлена ​​библиотека. См. Https://www.mathworks.com/help/Thingspeak/index.html для полной документации Thingspeak. Информацию о лицензировании см. В прилагаемом файле лицензии. Авторские права 2018, The MathWorks, Inc. * / # include "Thingspeak.h" #include "secrets.h" #include  char ssid [] =SECRET_SSID; // SSID вашей сети (имя) char pass [] =SECRET_PASS; // ваш сетевой пароль int keyIndex =0; // номер индекса вашего сетевого ключа (необходим только для WEP) WiFiClient client; unsigned long myChannelNumber =SECRET_CH_ID; const char * myWriteAPIKey =SECRET_WRITE_APIKEY; // Инициализируем наши значения int number1 =0; int number2 =random (0,100); int number3 =random (0,100); int number4 =random (0,100); String myStatus =""; void setup () {Serial.begin (115200); // Инициализируем последовательный порт WiFi.mode (WIFI_STA); Thingspeak.begin (клиент); // Инициализируем Thingspeak} void loop () {// Подключаемся или повторно подключаемся к Wi-Fi if (WiFi.status ()! =WL_CONNECTED) {Serial.print ("Попытка подключиться к SSID:"); Serial.println (SECRET_SSID); while (WiFi.status ()! =WL_CONNECTED) {WiFi.begin (ssid, pass); // Подключаемся к сети WPA / WPA2. Измените эту строку, если используете открытую сеть или сеть WEP Serial.print ("."); задержка (5000); } Serial.println ("\ nConnected."); } // устанавливаем поля значениями Thingspeak.setField (1, number1); Thingspeak.setField (2, число2); Thingspeak.setField (3, число3); Thingspeak.setField (4, число4); // выяснить статус сообщения if (number1> number2) {myStatus =String ("field1 больше, чем field2"); } else if (число1 <число2) {myStatus =String ("поле1 меньше поля2"); } else {myStatus =String ("поле1 равно полю2"); } // устанавливаем статус Thingspeak.setStatus (myStatus); // запись в канал Thingspeak int x =Thingspeak.writeFields (myChannelNumber, myWriteAPIKey); if (x ==200) {Serial.println ("Обновление канала выполнено успешно."); } else {Serial.println ("Проблема с обновлением канала. Код ошибки HTTP" + String (x)); } // меняем значения number1 ++; если (число1> 99) {число1 =0; } число2 =случайное (0,100); число3 =случайное (0,100); число4 =случайное (0,100); задержка (20000); // Подождите 20 секунд, чтобы снова обновить канал}  

После загрузки кода вы увидите несколько случайных чисел, загруженных в поля с 1 по 4 вашей панели. Такой же структурированный код используется в системе посещаемости для загрузки данных.

Примечание

Подождите не менее 15 секунд между каждой загрузкой данных на панель ThingSpeak.

Создание системы посещаемости с помощью датчика отпечатков пальцев и Arduino

В этой системе после регистрации въезда и выезда человека по отпечатку пальца информация, включая дату, имя, время прибытия, время выезда и рабочее время сотрудника, сохраняется на SD-карте. Затем эта информация будет отправлена ​​в ThingSpeak в указанное вами время. При отсутствии подключения к Интернету неопубликованные данные сохраняются и будут перенаправлены на ThingSpeak, как только он будет подключен к Интернету. Поскольку информация хранится в EEPROM микроконтроллера, они не будут потеряны в случае отключения электроэнергии.

Схема

После подключения всех модулей установите ЖК-экран на Arduino.

Совет

Поскольку экран LCD Shield закрывает некоторые контакты Arduino, вы можете ограничить провод к определенному контакту снизу платы, если он вам нужен.

Код

Для этого кода вам потребуются следующие библиотеки:

Adafruit-Fingerprint-Sensor-Library

Adafruit-GFX-Library

MCUFRIEND_kbv

RTClib

Теперь загрузите следующий код и загрузите его на свой Arduino. Этот код написан для 11 человек с именами по умолчанию, но вы можете изменить их и удалить из режима по умолчанию. Чтобы зарегистрировать новое имя, просто подключите устройство к компьютеру и нажмите кнопку, чтобы войти в режим регистрации, затем откройте Serial Monitor и следуйте процессу регистрации, как показано на Serial Monitor.

Загрузите код из прикрепленных файлов:

Вы можете узнать больше об использовании SD-карты, модуля часов и ЖК-дисплея по следующим ссылкам:

Модуль SD-карты с Arduino:как читать / писать данные

Как использовать модуль DS1307 RTC с Arduino и сделать напоминание

Абсолютное руководство для начинающих по ЖК-дисплеям TFT от Arduino.

NodeMCU выполняет задачу загрузки информации в эту систему. Он принимает информацию о загрузке от Arduino через последовательный порт и возвращает статус загрузки . в Arduino. Загрузите следующий код на свой NodeMCU.

  #include "Thingspeak.h" #include ESP8266WiFi.h> char ssid [] ="ВАШ SSID"; char pass [] ="SSID PASSWORD"; клиент WiFiClient; unsigned long myChannelNumber =ИДЕНТИФИКАТОР ВАШЕГО КАНАЛА; const char * myWriteAPIKey ="КЛЮЧ API ЗАПИСИ ВАШЕГО КАНАЛА"; String Final =""; String Date =""; String Enter =""; String Exit =""; String Name =""; String WT =""; void String_Analyze (ввод строки) {int index1, index2, index3, index4; index1 =input.indexOf ('*', 0); index2 =input.indexOf ('*', index1 + 1); index3 =input.indexOf ('*', index2 + 1); index4 =input.lastIndexOf ('*'); Имя =вход; Дата =ввод; Enter =ввод; Выход =вход; WT =ввод; Name.remove (index1); Date.remove (index2); Date.remove (0, index1 + 1); Enter.remove (index3); Enter.remove (0, index2 + 1); Exit.remove (index4); Exit.remove (0, index3 + 1); WT.remove (0, index4 + 1);} void Get_String () {while (Serial.available ()) {Final =Serial.readString (); // считываем входящие данные как строку //Serial.println(Final); }} void setup () {Serial.begin (9600); WiFi.mode (WIFI_STA); Thingspeak.begin (клиент); pinMode (LED_BUILTIN, ВЫХОД); digitalWrite (LED_BUILTIN, HIGH);} void loop () {if (WiFi.status ()! =WL_CONNECTED) {//Serial.print("Попытка подключения к SSID:"); // Serial.println (ssid); while (WiFi.status ()! =WL_CONNECTED) {WiFi.begin (ssid, pass); // Подключаемся к сети WPA / WPA2. Измените эту строку, если используете открытую сеть или сеть WEP Serial.print ("0"); задержка (5000); }} digitalWrite (LED_BUILTIN, LOW); //Serial.println("\nConnected. "); Get_String (); String_Analyze (окончательный); если (! Final.equals ("")) {Thingspeak.setField (1, Дата); Thingspeak.setField (2, Имя); Thingspeak.setField (3, Enter); Thingspeak.setField (4, Выход); Thingspeak.setField (5, WT); int x =Thingspeak.writeFields (myChannelNumber, myWriteAPIKey); если (х ==200) {задержка (100); Serial.print («1»); } else {задержка (100); Serial.print («0»); } задержка (17000); Финал =""; }  

Сначала измените идентификатор канала . и Записать ключ API согласно вашей панели ThingSpeak.

String_Analuze (); Функция в этом коде делит входные строки NodeMCU на дату, имя, время прибытия и отправления, а также рабочие часы и отправляет эту информацию в ThingSpeak. Затем, если процесс загрузки успешен, он отправляет символ «1», а в противном случае он отправляет символ «0» в Arduino.

Сборка устройства учета рабочего времени

Вы можете использовать следующие карты и оргстекло разных цветов или любой другой материал для создания корпуса устройства посещаемости.

Загрузите карту лазерной резки корпуса устройства из приложений:

После размещения электронных компонентов и сборки всего корпуса установите его в желаемом месте. Теперь просто подключите к устройству адаптер на 12 В, и оно начнет работать.

Что дальше?

  • Попробуйте использовать больше значков на ЖК-дисплее.
  • Попробуйте добавить в систему опцию RFID.
  • Попробуйте загрузить данные в таблицы Google . вместо ThingSpeak .

Если вы найдете это руководство полезным и интересным, поставьте нам лайк Facebook.

Код

  • Код 1
  • Код 2
Код 1 Arduino
Взаимодействие с Thingspeak и загрузка данных
 / * WriteMultipleFields Описание:Записывает значения в поля 1,2,3,4 и статус в одном обновлении Thingspeak каждые 20 секунд. Оборудование:платы на базе ESP8266 !!! ВАЖНО - Измените файл secrets.h для этого проекта, указав свое сетевое соединение и сведения о канале Thingspeak. !!! Примечание. - Требуется библиотека ESP8266WiFi и надстройка платы ESP8622. Подробнее см. Https://github.com/esp8266/Arduino. - Выберите целевое оборудование в меню «Инструменты»> «Плата». Этот пример написан для сети с использованием шифрования WPA. Для WEP или WPA измените вызов WiFi.begin () соответственно. Thingspeak (https://www.Thingspeak.com) - это сервис аналитической платформы Интернета вещей, который позволяет агрегировать, визуализировать и анализировать потоки данных в реальном времени в облаке. Посетите https://www.Thingspeak.com, чтобы получить бесплатную учетную запись и создать канал. Документация по коммуникационной библиотеке Thingspeak для Arduino находится в папке README.md, куда была установлена ​​библиотека. См. Https://www.mathworks.com/help/Thingspeak/index.html для полной документации Thingspeak. Информацию о лицензировании см. В прилагаемом файле лицензии. Авторские права 2018, The MathWorks, Inc. * / # include "Thingspeak.h" #include "secrets.h" #include  char ssid [] =SECRET_SSID; // SSID вашей сети (имя) char pass [] =SECRET_PASS; // ваш сетевой пароль int keyIndex =0; // номер индекса вашего сетевого ключа (необходим только для WEP) WiFiClient client; unsigned long myChannelNumber =SECRET_CH_ID; const char * myWriteAPIKey =SECRET_WRITE_APIKEY; // Инициализируем наши значения int number1 =0; int number2 =random (0,100); int number3 =random (0,100); int number4 =random (0,100); String myStatus =""; void setup () {Serial.begin (115200); // Инициализируем последовательный порт WiFi.mode (WIFI_STA); Thingspeak.begin (клиент); // Инициализируем Thingspeak} void loop () {// Подключаемся или повторно подключаемся к Wi-Fi if (WiFi.status ()! =WL_CONNECTED) {Serial.print ("Попытка подключиться к SSID:"); Serial.println (SECRET_SSID); while (WiFi.status ()! =WL_CONNECTED) {WiFi.begin (ssid, pass); // Подключаемся к сети WPA / WPA2. Измените эту строку, если используете открытую сеть или сеть WEP Serial.print ("."); задержка (5000); } Serial.println ("\ nConnected."); } // устанавливаем поля значениями Thingspeak.setField (1, number1); Thingspeak.setField (2, число2); Thingspeak.setField (3, число3); Thingspeak.setField (4, число4); // выяснить статус сообщения if (number1> number2) {myStatus =String ("field1 больше, чем field2"); } else if (число1 <число2) {myStatus =String ("поле1 меньше поля2"); } else {myStatus =String ("поле1 равно полю2"); } // устанавливаем статус Thingspeak.setStatus (myStatus); // запись в канал Thingspeak int x =Thingspeak.writeFields (myChannelNumber, myWriteAPIKey); if (x ==200) {Serial.println ("Обновление канала выполнено успешно."); } else {Serial.println ("Проблема с обновлением канала. Код ошибки HTTP" + String (x)); } // меняем значения number1 ++; если (число1> 99) {число1 =0; } число2 =случайное (0,100); число3 =случайное (0,100); число4 =случайное (0,100); задержка (20000); // Ждем 20 секунд, чтобы снова обновить канал} 
Код 2 Arduino
 #include "Thingspeak.h" #include ESP8266WiFi.h> char ssid [] ="ВАШ SSID"; char pass [] ="ПАРОЛЬ SSID"; клиент WiFiClient; unsigned long myChannelNumber =ИДЕНТИФИКАТОР ВАШЕГО КАНАЛА; const char * myWriteAPIKey ="КЛЮЧ API ЗАПИСИ ВАШЕГО КАНАЛА"; String Final =""; String Date =""; String Enter =""; String Exit =""; String Name =""; String WT =""; void String_Analyze (String ввод) {int index1, index2, index3, index4; index1 =input.indexOf ('*', 0); index2 =input.indexOf ('*', index1 + 1); index3 =input.indexOf ('*', index2 + 1); index4 =input.lastIndexOf ('*'); Имя =вход; Дата =ввод; Enter =ввод; Выход =вход; WT =ввод; Name.remove (index1); Date.remove (index2); Date.remove (0, index1 + 1); Enter.remove (index3); Enter.remove (0, index2 + 1); Exit.remove (index4); Exit.remove (0, index3 + 1); WT.remove (0, index4 + 1);} void Get_String () {while (Serial.available ()) {Final =Serial.readString (); // считываем входящие данные как строку //Serial.println(Final); }} void setup () {Serial.begin (9600); WiFi.mode (WIFI_STA); Thingspeak.begin (клиент); pinMode (LED_BUILTIN, ВЫХОД); digitalWrite (LED_BUILTIN, HIGH);} void loop () {if (WiFi.status ()! =WL_CONNECTED) {//Serial.print("Попытка подключения к SSID:"); // Serial.println (ssid); while (WiFi.status ()! =WL_CONNECTED) {WiFi.begin (ssid, pass); // Подключаемся к сети WPA / WPA2. Измените эту строку, если используете открытую сеть или сеть WEP Serial.print ("0"); задержка (5000); }} digitalWrite (LED_BUILTIN, LOW); //Serial.println("\nConnected. "); Get_String (); String_Analyze (окончательный); если (! Final.equals ("")) {Thingspeak.setField (1, Дата); Thingspeak.setField (2, Имя); Thingspeak.setField (3, Enter); Thingspeak.setField (4, Выход); Thingspeak.setField (5, WT); int x =Thingspeak.writeFields (myChannelNumber, myWriteAPIKey); если (х ==200) {задержка (100); Serial.print («1»); } else {задержка (100); Serial.print («0»); } задержка (17000); Финал =""; } 

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

uploads2ftmp2fdcd9a041-0d41-433f-b48f-b7fa0a1b7a832felectropeak_attendance_code_q4bsYBzou5.zip uploads2ftmp2f93ae52e3-7f3c-4744-b2db-b69baed578622fattendanceboxlasercut_ryMUOo5d7h.dwg

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

  1. 10 преимуществ использования облачного хранилища
  2. DVD-плеер
  3. Система посещаемости с использованием Arduino и RFID с Python
  4. Беспроводная магнитная передача данных
  5. Система сигнализации Arduino:SERENA
  6. Регистратор данных температуры и влажности
  7. Емкостной датчик отпечатков пальцев с Arduino или ESP8266
  8. Башня датчика облаков Arduino
  9. Система вентиляции подвала / подвала
  10. Облако в Интернете вещей