logo
+7 (495) 997-37-74
Москва, ул.Международная, 15




Yotster Vicino — Пример работы с NFC


Вы уже познакомились с устройством и приёмами программирования контроллера Yotster Vicino, в этой статье мы рассмотрим ещё одну его часть — микросхему M24LR64-R EEPROM памяти с двойным I2C и NFC/RFID доступом.

Эта микросхема имеет 64 килобита энергонезависимой памяти и позволяет сохранять и считывать данные по проводному I2C интерфейсу со стороны микроконтроллера и по беспроводным NFC/RFID интерфейсам со стороны различных устройств, таких как метки, ридеры, смартфоны и т. п. устройства.

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

Пример работы с NFC

В этом руководстве мы подробно разберём базовый пример взаимодействия с микросхемой M24LR64-R — мы беспроводным способом со смартфона с поддержкой NFC запишем байт в EEPROM память Yotster Vicino и затем используем этот байт для включения и выключения тестового светодиода на плате.

Освоив этот пример и поняв основные принципы работы с микросхемой M24LR64-R, вы в дальнейшем с лёгкостью сможете реализовать любой функционал, необходимый вашему проекту.

Библиотека Seeed Studio NFC_Tag_M24LR6E

Для того, чтобы работать с микросхемой M24LR64-R в среде Arduino IDE, необходимо сначала установить библиотеку Seeed Studio NFC_Tag_M24LR6E. Скачать её можно по указанной ссылке, затем её нужно установить в Arduino IDE стандартным способом.

Примечание. Здесь предполагается, что вы уже знакомы с работой в Arduino IDE и умеете создавать скетчи и загружать их в микроконтроллер. Также предполагается, что вы уже ознакомились с предыдущими статьями и руководствами по Yotster Vicino из этой документации.

Приложение для смартфона

По сценарию взаимодействия с контроллером Yotster Vicino, изменять байт в микросхеме EEPROM мы должны при помощи смартфона. Для этого сначала нужно установить специальное приложение на ваш смартфон под управлением операционной системы Android.

Приложение называется NfcVreader.apk и находится в папке Resources уже скачанной вами библиотеки Seeed Studio NFC_Tag_M24LR6E. Просто перенесите её на смартфон и установите стандартным способом.

Примечание. Возможно вам потребуется дать специальное разрешение на установку приложения на смартфоне «из неизвестного источника». Также ваш смартфон должен поддерживать работу с NFC и NFC должен быть включён в настройках смартфона.

Если вы всё сделали правильно, то сможете запустить приложение и увидеть его интерфейс.

Скетч для работы с NFC

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

/*  
  NFC TAG Demo for Yotster Vicino
  (based on standard example of NFC_Tag_M24LR6E Library)
  (c)2020 Electromicro
  License: GNU GPL 2.1
*/

#include "NfcTag.h"
#include <Wire.h>

#define LED_PIN 28

bool flag = false;
bool preFlag = false;

NfcTag nfcTag;

void setup() {
  Serial.begin(115200);
  while (!Serial) { ;}
  Serial.println("Start Yotster Vicino NFC Demo");
  
  pinMode(LED_PIN, OUTPUT);
  
  nfcTag.init(); 
}

void loop() {
  flag = nfcTag.readByte(EEPROM_I2C_LENGTH - 1) == 0xff ? true : false;

  if (flag != preFlag) {
    if (flag == true) {
      digitalWrite(LED_PIN, HIGH);
    } else {
      digitalWrite(LED_PIN, LOW);
    }
    preFlag = flag;
  }
  
  delay(1000);
}

Затем подробно разберём его работу. Вначале подключаем необходимые библиотеки.

#include "NfcTag.h"
#include <Wire.h>

Затем определяем пин встроенного в плату Yotster Vicino тестового светодиода.

#define LED_PIN 28

Вводим вспомогательные переменные и создаём объект nfcTag.

bool flag = false;
bool preFlag = false;

NfcTag nfcTag;

В функции setup() производим стандартные действия по инициализации вывода в Serial, конфигурируем пин светодиода и инициализируем объект nfcTag.

void setup() {
  Serial.begin(115200);
  while (!Serial) { ;}
  Serial.println("Start Yotster Vicino NFC Demo");
  
  pinMode(LED_PIN, OUTPUT);
  
  nfcTag.init(); 
}
Вот вывод в Serial при старте нашего скетча.
 

В функции loop() раз в секунду проверяется какое значение находится в заранее определённой ячейке EEPROM_I2C_LENGTH - 1, то есть в последней ячейке EEPROM памяти и в зависимости от этого включается или выключается встроенный светодиод.

void loop() {
  flag = nfcTag.readByte(EEPROM_I2C_LENGTH - 1) == 0xff ? true : false;

  if (flag != preFlag) {
    if (flag == true) {
      digitalWrite(LED_PIN, HIGH);
    } else {
      digitalWrite(LED_PIN, LOW);
    }
    preFlag = flag;
  }
  
  delay(1000);
}

Примечание. Сама память чипа M24LR64-R имеет объём 64 килобита, при этом она разбита на 8192 байта со стороны I2C интерфейса и 2048 блоков по 32 бита со стороны радио-интерфейсов.

Сценарий взаимодействия

После всех подготовительных действий мы можем реализовать сценарий взаимодействия между контроллером Yotster Vicino и смартфоном через NFC интерфейс.

Шаг 1. Подносим смартфон к контроллеру Yotster Vicino

Подносим смартфон к контроллеру Yotster Vicino, он определяет наличие NFC устройства, издаёт соответствующий звук и выводит окно интерфейса с подробной информацией.

Далее нам нужно нажать кнопку «BASIC FORMAT» для перехода в интерфейс с основными функциями программы, такими как чтение, запись данных и т. п. операции и выбрать там кнопку «WRITE».

Шаг 2. Записываем «0» в память Yotster Vicino

Затем в открывшемся окне вводим нужную нам ячейку памяти (07FF), что соответствует десятичной 2047, то есть той же ячейке, которую мы проверяем в скетче, ниже вводим значение «00» и нажимаем кнопку «WRITE».

В требуемую ячейку микросхемы M24LR64-R беспроводным способом записывается нулевое значение и примерно через секунду гаснет встроенный в плату Yotster Vicino светодиод.

Шаг 3. Записываем «FF» в память Yotster Vicino

Теперь вместо «00» вводим значение FF и снова нажимаем кнопку «WRITE».

В ту же ячейку памяти записывается значение «FF» и одновременно загорается встроенный  в плату тестовый светодиод.

Таким образом мы реализовали сценарий сквозного взаимодействия с EEPROM памятью микроконтроллера Yotster Vicino по I2C интерфейсу со стороны микроконтроллера и скетча и по NFC интерфейсу со стороны нашего смартфона.

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

Заключение

Микросхема M24LR64-R значительно расширяет возможности платы Yotster Vicino по созданию современных IoT приложений и, воспользовавшись этим простым руководством, вы можете создавать свои проекты с поддержкой NFC/RFID взаимодействия между различными устройствами.

Ссылки по теме

Обзор LoRa контроллера Yotster Vicino

Спецификации и подключение Yotster Vicino

Программирование Yotster Vicino

Где купить?

Yotster Vicino в магазине «Electromicro»

Техническая поддержка

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

  • Емейл для вопросов по нашей продукции: electromicro@bk.ru
  • Наш телефон: +7 (495) 997-37-74

Аналогичные товары