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 是启动配置引脚,启动时必须为低电平。
我正在尝试让 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 是启动配置引脚,启动时必须为低电平。