RFID-RC522 и TFT 128х128 на одной шине SPI

mag86
Offline
Зарегистрирован: 26.02.2017

Читал несколько статей про параллельное подключение по SPI, но самостоятельно подружить эти два модуля не смог. Нашел такую схему, но здесь не указан RESET. Его тоже надо на один пин подключать?

И второй вопрос: на дисплее пины подписаны по другому (VCC, GND, CS, RESET, A0, SDA, SCK, LED). Кто из них MOSI,  а кто MISO? Гугл поиск и изучения даташита успеха не принесли (((

дисплей 1.44 SPI 128x128 v2.1

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

1. Reset не относится к SPI, поэтому о его подключении нужно читать в дэйташите на конкретное устройство.

2. Это не интефейс SPI. Вероятнее всего I2C.

3. Верное подключение слева. Будет ли работать то, что справа - неизвестно. Если SPI-устройство - сдвиговый регистр, - будет. В остальных случаях нужно смотреть дэйташит.

mag86
Offline
Зарегистрирован: 26.02.2017

Забыл кстати написать, что у меня микроконтроллер Pro Mini atmega168.  Даташит на дисплей не нашел, только на его чип, но там ответа не нашел

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

А на какие именно вопросы Вы искали ответы в дэйташите? 

mag86
Offline
Зарегистрирован: 26.02.2017

Про пины. Моих познаний не хватило, чтоб разобраться. Понял только, что CS пин это Chip Select.

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

mag86 пишет:

Про пины. Моих познаний не хватило, чтоб разобраться. Понял только, что CS пин это Chip Select.

на вешеприведенных схемах есть пин CS ?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Значит так: из того набора пинов, что Вы перечислили, SDA и SCL относятся к интерфейсу I2C. Но I2C не нужен CS. Некоторые устройства могут работать как по I2C, так и по SPI, но об это можно узнать только из дэйташита к ним. Возможно, одни и те же пины выполняют в разных интерфейсах различные функции. Так что вот с этой точки зрения еще раз пересмотрите дэйташит.

mag86
Offline
Зарегистрирован: 26.02.2017

Хорошо. Может я, в силу неопытности, выражаюсь некорректно. Есть задача: к ардуино подключить RFID-reader и TFT-дисплей. Как это осуществить? Если можно, то на уровне какой пин куда подключить ))) 

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

mag86 пишет:

Хорошо. Может я, в силу неопытности, выражаюсь некорректно. Есть задача: к ардуино подключить RFID-reader и TFT-дисплей. Как это осуществить? Если можно, то на уровне какой пин куда подключить ))) 

хорошо, только надо знать интерфейсы обоих модулей, предоставите информацию ?

mag86
Offline
Зарегистрирован: 26.02.2017

Какую смогу - предоставлю с радостью. Только не совсем понял, что конкретно.

RFID-reader

  • Основан на микросхеме MFRC522;
  • Напряжение питания: 3.3V;
  • Потребляемый ток :13-26mA
  • Рабочая частота: 13.56MHz
  • Дальность считывания: 0 ~ 60 мм
  • Интерфейс: SPI, максимальная скорость передачи 10МБит/с

 

mag86
Offline
Зарегистрирован: 26.02.2017

по дисплею вот что нашел. Он на чипе ILI9163C

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

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

у вас какой выбор ?

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

mag86 пишет:

по дисплею вот что нашел. Он на чипе ILI9163C

а этот, насколько помню, только SPI интерфейс.

https://www.youtube.com/watch?v=1GEdd-N3GR0

mag86
Offline
Зарегистрирован: 26.02.2017

Честно говоря, меня устроит любой вариант - лишь бы работало стабильно )))

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

Короче, я ссылку дал, давайте экран вы прицепите, а потом и с RFID разберемся.

mag86
Offline
Зарегистрирован: 26.02.2017

Ну я по отдельности то эти устройства подключал - всё работает. Вопрос только в том как их одновременно подключить к ардуино.

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

схема! ваша схема, а не из интернета.

mag86
Offline
Зарегистрирован: 26.02.2017

В данный момент подключен RFID вот по такой схеме, только у меня не УНО, а Про Мини.

alexandervolikov
Offline
Зарегистрирован: 26.02.2017

Из ссылки, что вы привели ( ILI9163C )

работает на SPI

Wiring:

You are a newbie and need help? Here's:
This display has 8 pin (at the time I'm writing this):

TFT side   -------------------- microprocessor  
- Vcc       -->     +3V3V(!!!!)
- Gnd       -->     Gnd
- CS        -->     CS pin (3v3 level!)
- RST       -->     connect to a MCU pin or tie to +3V3 or 10K to 3V3 (do NOT leave float!)
- A0        -->     DC or RS pin (3v3 level!)
- SDA       -->     Mosi (3v3 level!)
- SCK       -->     Sclk (3v3 level!)
- LED       -->     Some display need a resistor (see note below)

Вот картинка

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:

  PCD Arduino Teensy
MFRC522 Uno / 101 Mega Nano v3 Leonardo / Micro Pro Micro 2.0 ++ 2.0 3.1
Signal Pin Pin Pin Pin Pin Pin Pin Pin Pin
RST/Reset RST [1] [1] D9 RESET / ICSP-5 RST 7 4 9
SPI SS SDA [3] 10 [2] 53 [2] D10 10 10 0 20 10
SPI MOSI MOSI 11 / ICSP-4 51 D11 ICSP-4 16 2 22 11
SPI MISO MISO 12 / ICSP-1 50 D12 ICSP-1 14 3 23 12
SPI SCK SCK 13 / ICSP-3 52 D13 ICSP-3 15 1 21 13
[1] (12) Configurable, typically defined as RST_PIN in sketch/program.
[2] (12) Configurable, typically defined as SS_PIN in sketch/program.
[3] The SDA pin might be labeled SS on some/older MFRC522 boards.

MOSI, MISO, SCK сделать общими. А вот RST и SS переназначить в прошивке, например, на 4 и 5 пины. Должно заработать. Только обрабтите внимание, что обе платы работают на 3.3 вольтах. Если у Вас ардуино на 5 вольтах, то нужен стабилизатор на 3.3 в и конвертер логически уровней.

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

alexandervolikov пишет:

Только обрабтите внимание, что обе платы работают на 3.3 вольтах. Если у Вас ардуино на 5 вольтах, то нужен стабилизатор на 3.3 в и конвертер логически уровней.

Видимо вы их сами не когда не подлючали, работает от 5в. и одно и другое, на работе лежит макет, завтра видео постараюсь выложить, может с расборкой макета, если пиво будет :)

mag86
Offline
Зарегистрирован: 26.02.2017

Да, я на это всё натыкался, но на главный вопрос где на дисплее MOSI и MISO так и не нашел ответа.

mag86
Offline
Зарегистрирован: 26.02.2017

Лично сам всё и подключал. Оба работают.... по отдельности )))

alexandervolikov
Offline
Зарегистрирован: 26.02.2017

работать от 5 вольт оно может, вопрос в том как скоро она сгорит, через минуту или через месяц. По даташиту (https://www.nxp.com/documents/data_sheet/MFRC522.pdf) рабочее напряжение от 2.5 до 3.6 вольт.

на дисплее MOSI - это SDA,

MISO (связь от платы к ардуино) на дисплее видимо нет, значит, подключать не надо.

А как Вы отдельно подключали дисплей?

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015
You are a newbie and need help? Here's:
This display has 8 pin (at the time I'm writing this):

TFT side   -------------------- microprocessor  
- Vcc       -->     +3V3V(!!!!)
- Gnd       -->     Gnd
- CS        -->     CS pin (3v3 level!)
- RST       -->     connect to a MCU pin or tie to +3V3 or 10K to 3V3 (do NOT leave float!)
- A0        -->     DC or RS pin (3v3 level!)
- SDA       -->     Mosi (3v3 level!)
- SCK       -->     Sclk (3v3 level!)
- LED       -->     Some display need a resistor (see note below)

если не обращать внимание на 3.3в, очивидно MISO  это А0 на дисплее.

alexandervolikov
Offline
Зарегистрирован: 26.02.2017

вот инструкция по подключению этого дисплея:

http://www.instructables.com/id/The-Arduino-TFT-LCD-Connection/step2/Sta...

LCD pin              Arduino pin
-------              -----------
1 LED (backlight)    Vcc (3.3v)
2 SCK (slave clock)  D13
3 SDA (MOSI)         D11
4 A0  (DC)           D9
5 RESET              Vcc (3.3v)
6 CS (SS)            D10
7 Gnd                Gnd
8 Vcc                Vcc (3.3v)

В скетчах для MFRCC522 нужно поменять SS (D10) и RST(9)  на что-то другое, и должно заработать.

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

alexandervolikov пишет:

работать от 5 вольт оно может, вопрос в том как скоро она сгорит, через минуту или через месяц. По даташиту (https://www.nxp.com/documents/data_sheet/MFRC522.pdf) рабочее напряжение от 2.5 до 3.6 вольт.

на дисплее MOSI - это SDA,

MISO (связь от платы к ардуино) на дисплее видимо нет, значит, подключать не надо.

А как Вы отдельно подключали дисплей?

вы про чип, а мы про модуль, у которого есть стаб на 3.3в, а выводы, видимо, толлерантны к 5в.

alexandervolikov
Offline
Зарегистрирован: 26.02.2017

Модуль noname с фото ТС - самый распространенный и дешевый, стабилизатора там нет.

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

alexandervolikov пишет:

Модуль noname с фото ТС - самый распространенный и дешевый, стабилизатора там нет.

млять, я спать хочу, вы поиздеваться  решили ? 

 

alexandervolikov
Offline
Зарегистрирован: 26.02.2017

На счёт модуля дисплея не спорю)

Я про модуль MFRC522 говорю.

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

я говорю, у меня на макетке,(по моему) два иммено этих модуля висят на NANO, я завтра гляну и раскажу как там все.

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

Да время быстро летит, значится так, RFID у меня другой 

PN532 NFC RFID Модуль V3 

и он 5 вольтовый, и висит у меня на шине I2C, экран висин на SPI

так что извиняйте, сколероз проклятый.

mag86
Offline
Зарегистрирован: 26.02.2017

Спасибо за ответы.

Моя модель RFID не поддерживает I2C, насколько мне удалось выяснить. Буду что то колдовать и пробовать с параллельным подключением....

mag86
Offline
Зарегистрирован: 26.02.2017

Результат танцев с бубном )))) Вот схема моего подключения и скетч.

#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);

}