RFID-RC522 и TFT 128х128 на одной шине SPI
- Войдите на сайт для отправки комментариев
Вс, 26/02/2017 - 23:44
Читал несколько статей про параллельное подключение по SPI, но самостоятельно подружить эти два модуля не смог. Нашел такую схему, но здесь не указан RESET. Его тоже надо на один пин подключать?
И второй вопрос: на дисплее пины подписаны по другому (VCC, GND, CS, RESET, A0, SDA, SCK, LED). Кто из них MOSI, а кто MISO? Гугл поиск и изучения даташита успеха не принесли (((
дисплей 1.44 SPI 128x128 v2.1

1. Reset не относится к SPI, поэтому о его подключении нужно читать в дэйташите на конкретное устройство.
2. Это не интефейс SPI. Вероятнее всего I2C.
3. Верное подключение слева. Будет ли работать то, что справа - неизвестно. Если SPI-устройство - сдвиговый регистр, - будет. В остальных случаях нужно смотреть дэйташит.
Забыл кстати написать, что у меня микроконтроллер Pro Mini atmega168. Даташит на дисплей не нашел, только на его чип, но там ответа не нашел
А на какие именно вопросы Вы искали ответы в дэйташите?
Про пины. Моих познаний не хватило, чтоб разобраться. Понял только, что CS пин это Chip Select.
Про пины. Моих познаний не хватило, чтоб разобраться. Понял только, что CS пин это Chip Select.
на вешеприведенных схемах есть пин CS ?
Значит так: из того набора пинов, что Вы перечислили, SDA и SCL относятся к интерфейсу I2C. Но I2C не нужен CS. Некоторые устройства могут работать как по I2C, так и по SPI, но об это можно узнать только из дэйташита к ним. Возможно, одни и те же пины выполняют в разных интерфейсах различные функции. Так что вот с этой точки зрения еще раз пересмотрите дэйташит.
Хорошо. Может я, в силу неопытности, выражаюсь некорректно. Есть задача: к ардуино подключить RFID-reader и TFT-дисплей. Как это осуществить? Если можно, то на уровне какой пин куда подключить )))
Хорошо. Может я, в силу неопытности, выражаюсь некорректно. Есть задача: к ардуино подключить RFID-reader и TFT-дисплей. Как это осуществить? Если можно, то на уровне какой пин куда подключить )))
хорошо, только надо знать интерфейсы обоих модулей, предоставите информацию ?
Какую смогу - предоставлю с радостью. Только не совсем понял, что конкретно.
RFID-reader
по дисплею вот что нашел. Он на чипе ILI9163C
С радостью, сообщаю, что данный модуль может быть подключен с использованием трех интерфейсов
у вас какой выбор ?
по дисплею вот что нашел. Он на чипе ILI9163C
а этот, насколько помню, только SPI интерфейс.
https://www.youtube.com/watch?v=1GEdd-N3GR0
Честно говоря, меня устроит любой вариант - лишь бы работало стабильно )))
Короче, я ссылку дал, давайте экран вы прицепите, а потом и с RFID разберемся.
Ну я по отдельности то эти устройства подключал - всё работает. Вопрос только в том как их одновременно подключить к ардуино.
схема! ваша схема, а не из интернета.
В данный момент подключен RFID вот по такой схеме, только у меня не УНО, а Про Мини.
Из ссылки, что вы привели ( ILI9163C )
работает на SPI
Wiring:
Вот картинкаhttps://cdn.instructables.com/F55/7U7Z/IAJHFTH5/F557U7ZIAJHFTH5.MEDIUM.jpg?width=614Для MFRC522 есть нормальная библиотка только под SPI:
https://github.com/miguelbalboa/rfid
там внутри тоже всё подробно написано, вот:
Pin Layout
The following table shows the typical pin layout used:
MOSI, MISO, SCK сделать общими. А вот RST и SS переназначить в прошивке, например, на 4 и 5 пины. Должно заработать. Только обрабтите внимание, что обе платы работают на 3.3 вольтах. Если у Вас ардуино на 5 вольтах, то нужен стабилизатор на 3.3 в и конвертер логически уровней.
Только обрабтите внимание, что обе платы работают на 3.3 вольтах. Если у Вас ардуино на 5 вольтах, то нужен стабилизатор на 3.3 в и конвертер логически уровней.
Видимо вы их сами не когда не подлючали, работает от 5в. и одно и другое, на работе лежит макет, завтра видео постараюсь выложить, может с расборкой макета, если пиво будет :)
Да, я на это всё натыкался, но на главный вопрос где на дисплее MOSI и MISO так и не нашел ответа.
Лично сам всё и подключал. Оба работают.... по отдельности )))
работать от 5 вольт оно может, вопрос в том как скоро она сгорит, через минуту или через месяц. По даташиту (https://www.nxp.com/documents/data_sheet/MFRC522.pdf) рабочее напряжение от 2.5 до 3.6 вольт.
на дисплее MOSI - это SDA,
MISO (связь от платы к ардуино) на дисплее видимо нет, значит, подключать не надо.
А как Вы отдельно подключали дисплей?
если не обращать внимание на 3.3в, очивидноMISO это А0 на дисплее.вот инструкция по подключению этого дисплея:
http://www.instructables.com/id/The-Arduino-TFT-LCD-Connection/step2/Sta...
В скетчах для MFRCC522 нужно поменять SS (D10) и RST(9) на что-то другое, и должно заработать.
работать от 5 вольт оно может, вопрос в том как скоро она сгорит, через минуту или через месяц. По даташиту (https://www.nxp.com/documents/data_sheet/MFRC522.pdf) рабочее напряжение от 2.5 до 3.6 вольт.
на дисплее MOSI - это SDA,
MISO (связь от платы к ардуино) на дисплее видимо нет, значит, подключать не надо.
А как Вы отдельно подключали дисплей?
вы про чип, а мы про модуль, у которого есть стаб на 3.3в, а выводы, видимо, толлерантны к 5в.
Модуль noname с фото ТС - самый распространенный и дешевый, стабилизатора там нет.
Модуль noname с фото ТС - самый распространенный и дешевый, стабилизатора там нет.
млять, я спать хочу, вы поиздеваться решили ?
На счёт модуля дисплея не спорю)
Я про модуль MFRC522 говорю.
я говорю, у меня на макетке,(по моему) два иммено этих модуля висят на NANO, я завтра гляну и раскажу как там все.
Да время быстро летит, значится так, RFID у меня другой
PN532 NFC RFID Модуль V3
и он 5 вольтовый, и висит у меня на шине I2C, экран висин на SPI
так что извиняйте, сколероз проклятый.
Спасибо за ответы.
Моя модель RFID не поддерживает I2C, насколько мне удалось выяснить. Буду что то колдовать и пробовать с параллельным подключением....
Результат танцев с бубном )))) Вот схема моего подключения и скетч.
#include <SPI.h> #include <MFRC522.h> #include <Adafruit_GFX.h> // Подключаем библиотеку для работы с текстом и графикой #include <TFT_ILI9163C.h> // Подключаем библиотеку программных драйверов для работы с дисплеем 1.44 128x128 SPI const int RST_PIN = 9; // пин RST const int SS_PIN = 10; // пин SDA (SS) MFRC522 mfrc522(SS_PIN, RST_PIN); // создаём объект MFRC522 unsigned long uidDec, uidDecTemp; // для храниения номера метки в десятичном формате // В следующих 8-и строках опеределяем названия и соответствующие им RGB обозначения цветов, которые будем выводить на дисплей #define BLACK 0x0000 #define BLUE 0x001F #define RED 0xF800 #define GREEN 0x07E0 #define CYAN 0x07FF #define MAGENTA 0xF81F #define YELLOW 0xFFE0 #define WHITE 0xFFFF #define __CS 6 // Определяем пин к которому подключен разъем CS дисплея #define __DC 7 // Определяем пин к которому подключен разъем A0 дисплея #define __RES 8 // Определяем пин к которому подключен разъем RESET дисплея TFT_ILI9163C display = TFT_ILI9163C(__CS, __DC, __RES); // Связываем объект display с библиотекой TFT_ILI9163C и сообщаем библиотеке определенные для работы с дисплеем пины void setup() { Serial.begin(9600); // инициализация послед. порта display.begin(); // Иницализируем дисплей Serial.println("Waiting for card..."); SPI.begin(); // инициализация шины SPI mfrc522.PCD_Init(); // инициализация считывателя RC522 pinMode(SS_PIN, OUTPUT); pinMode(__CS, OUTPUT); } void loop() { digitalWrite(SS_PIN, LOW); digitalWrite(__CS, HIGH); if ( ! mfrc522.PICC_IsNewCardPresent()) { // Ожидание прикладывания новой RFID-метки: return; // выход, если не приложена новая карта } if ( ! mfrc522.PICC_ReadCardSerial()) { // Считываем серийный номер: return; // выход, если невозможно считать сер. номер } uidDec = 0; for (byte i = 0; i < mfrc522.uid.size; i++)// Выдача серийного номера метки. { uidDecTemp = mfrc522.uid.uidByte[i]; uidDec = uidDec * 256 + uidDecTemp; } Serial.println("Card ID: "); Serial.println(uidDec); // Выводим UID метки в консоль. digitalWrite(SS_PIN, HIGH); digitalWrite(__CS, LOW); display.fillScreen(); // Очищаем дисплей перед выводом display.setTextSize(1); // Определяем размер шрифта display.setCursor(10,5); // Устанавливаем курсор в левый верхний угол области вывода display.setTextColor(YELLOW); // Определяем цвет вывода на дисплей display.print(uidDec); display.setCursor(10,25); display.setTextColor(MAGENTA); display.print("Card ID"); delay(1000); }