Вы уже познакомились с устройством и приёмами программирования контроллера 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