ESP8266(Nodemcu)+ PN532(RFID)+ ST7735(显示器)可以在一个设置中使用吗?

ESP8266 (Nodemcu) + PN532 (RFID) + ST7735 (Display) in one setup possible?

我正在尝试让 RFID-Reader (PN532) 与显示器一起工作,所以它显示在那里,谁已经扫描了他的 RFID 卡。 我 运行 遇到的问题是,两个设备都使用了 2 个引脚 (D7 HMOSI) 和 (D5 HSLCK)。因此,我只是将两个连接都放在这些连接上。 (错了吗?)

现在,当初始化两个设备中的任何一个时,另一个被禁用。

我使用 Adafruit 来初始化这两个设备。

除此之外,ESP8266在连接RFID-Reader时不启动。从 3.3 伏 VCC 上移除引脚并等待初始化,然后添加引脚,只有这样 RFID-Reader 才能被识别并且 ESP8266 运行。 (崩溃的坏情况,因为它永远不会重启)

这是我的电缆设置:

这也是我的代码:

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_PN532.h>

#define PN532_SCK  (14)
#define PN532_MOSI (13)
#define PN532_SS   (15)
#define PN532_MISO (12)

#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library for ST7735
#include <Adafruit_ST7789.h> // Hardware-specific library for ST7789

#define TFT_CS         5
#define TFT_RST        16                                            
#define TFT_DC         4

Adafruit_PN532 nfc(PN532_SCK, PN532_MISO, PN532_MOSI, PN532_SS);
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);

void testdrawtext(char *text, uint16_t color) {
  tft.setCursor(0, 0);
  tft.setTextColor(color);
  tft.setTextWrap(true);
  tft.print(text);
}

void setup(void) {
  Serial.begin(9600);

  Serial.print(F("Hello! ST7735 TFT Init"));
  tft.initR(INITR_BLACKTAB);      // Init ST7735 chip, black tab
  Serial.println(F("Initialized"));
  tft.fillScreen(ST77XX_BLACK);

  while (!Serial) delay(10); 
  Serial.println("Hello! PN532 RFID Init");

  nfc.begin();   // Init PN532 chip

  uint32_t versiondata = nfc.getFirmwareVersion();
  if (! versiondata) {
    Serial.print("Didn't find PN532 board");
    while (1); // halt
  }
  
  // Got ok data, print it out!
  Serial.print("Found chip PN5"); Serial.println((versiondata>>24) & 0xFF, HEX); 
  Serial.print("Firmware ver. "); Serial.print((versiondata>>16) & 0xFF, DEC); 
  Serial.print('.'); Serial.println((versiondata>>8) & 0xFF, DEC);
  
  nfc.setPassiveActivationRetries(0xFF);
  nfc.SAMConfig();
  
  Serial.println("Waiting for a Card");
}

构造函数

 Adafruit_PN532 nfc(PN532_SCK, PN532_MISO, PN532_MOSI, PN532_SS);

创建一个使用软件 SPI 的 'driver'。但是您提供硬件 SPI 的引脚作为参数。 Adafruit_ST7735 库通过 SPI 库使用硬件 SPI 来访问显示器,因此 硬件 SPI 与 PN532 库的软件 SPI 冲突

使用

Adafruit_PN532 nfc(PN532_SS);

在 SPI 库上使用硬件 SPI 的构造函数。 SPI 库 'knows' SPI 引脚的引脚号。 (SPI库是boards包的一部分,不能单独安装。)

并且不要使用 SS (io 15) 作为 CS。使用不同的引脚。 io 15 是启动配置引脚,启动时必须为低电平。