ESP8266 (Nodemcu) + PN532 (RFID) + ST7735 (Display) 在一个设置中可能吗?
Posted
技术标签:
【中文标题】ESP8266 (Nodemcu) + PN532 (RFID) + ST7735 (Display) 在一个设置中可能吗?【英文标题】:ESP8266 (Nodemcu) + PN532 (RFID) + ST7735 (Display) in one setup possible? 【发布时间】:2022-01-16 07:22:06 【问题描述】:我正在尝试让 RFID 阅读器 (PN532) 与显示器一起工作,所以它显示在那里,他扫描了他的 RFID 卡。 我遇到的问题是,两个设备都使用了 2 个引脚(D7 HMOSI)和(D5 HSLCK)。因此,我只是将这两个连接都放在了那些上面。 (错了吗?)
现在,当初始化两个设备中的任何一个时,另一个会被禁用。
我使用 Adafruit 来初始化两个设备。
除此之外,当 RFID-Reader 连接时,ESP8266 不会启动。从 3.3Volt VCC 移除 Pin 并等待初始化,然后添加 Pin,然后 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");
【问题讨论】:
【参考方案1】:构造函数
Adafruit_PN532 nfc(PN532_SCK, PN532_MISO, PN532_MOSI, PN532_SS);
创建一个使用软件 SPI 的“驱动程序”。但是您提供硬件 SPI 的引脚作为参数。 Adafruit_ST7735 库通过 SPI 库使用硬件 SPI 来访问显示器,因此硬件 SPI 与 PN532 库的软件 SPI 冲突。
使用
Adafruit_PN532 nfc(PN532_SS);
在 SPI 库上使用硬件 SPI 的构造函数。 SPI 库“知道”SPI 引脚的引脚号。 (SPI库是boards包的一部分,不能单独安装。)
并且不要将 SS (io 15) 用作 CS。使用不同的引脚。 io 15 是引导配置引脚,在引导时必须为低电平。
【讨论】:
以上是关于ESP8266 (Nodemcu) + PN532 (RFID) + ST7735 (Display) 在一个设置中可能吗?的主要内容,如果未能解决你的问题,请参考以下文章