Подключение ESP8266 и PN532
Я пробую пример Android Hce в этой библиотеке PN532. Я не могу найти в коде, как установить адреса SDA и SCL, поэтому я попытался подключить их к контактам CLK и SD0. Серийный монитор выдает мне «Не найдена плата PN53x». Кто-нибудь может мне помочь?
#if 0
#include <SPI.h>
#include <PN532_SPI.h>
#include "PN532.h"
PN532_SPI pn532spi(SPI, 10);
PN532 nfc(pn532spi);
#elif 1
#include <PN532_HSU.h>
#include <PN532.h>
PN532_HSU pn532hsu(Serial1);
PN532 nfc(pn532hsu);
#else
#include <Wire.h>
#include <PN532_I2C.h>
#include <PN532.h>
#endif
void setup()
{
Serial.begin(115200);
Serial.println("-------Peer to Peer HCE--------");
nfc.begin();
uint32_t versiondata = nfc.getFirmwareVersion();
if (! versiondata) {
Serial.print("Didn't find PN53x board");
while (1); // остановка
}
// Данные в порядке, распечатайте их!
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);
// Установить максимальное количество повторных попыток чтения с карты
// Это предотвратит вечное ожидание карты, которая
// поведение PN532 по умолчанию.
//nfc.setPassiveActivationRetries(0xFF);
// настроить плату для чтения RFID-меток
nfc.SAMConfig();
}
void loop()
{
bool success;
uint8_t responseLength = 32;
Serial.println("Waiting for an ISO14443A card");
// устанавливаем щит в inListPassiveTarget
success = nfc.inListPassiveTarget();
if(success) {
Serial.println("Found something!");
uint8_t selectApdu[] = { 0x00, /* CLA */
0xA4, /* INS */
0x04, /* P1 */
0x00, /* P2 */
0x07, /* Length of AID */
0xF0, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, /* AID defined on Android App */
0x00 /* Le */ };
uint8_t response[32];
success = nfc.inDataExchange(selectApdu, sizeof(selectApdu), response, &responseLength);
if(success) {
Serial.print("responseLength: "); Serial.println(responseLength);
nfc.PrintHexChar(response, responseLength);
do {
uint8_t apdu[] = "Hello from Arduino";
uint8_t back[32];
uint8_t length = 32;
success = nfc.inDataExchange(apdu, sizeof(apdu), back, &length);
if(success) {
Serial.print("responseLength: "); Serial.println(length);
nfc.PrintHexChar(back, length);
}
else {
Serial.println("Broken connection?");
}
}
while(success);
}
else {
Serial.println("Failed sending SELECT AID");
}
}
else {
Serial.println("Didn't find anything!");
}
delay(1000);
}
void printResponse(uint8_t *response, uint8_t responseLength) {
String respBuffer;
for (int i = 0; i < responseLength; i++) {
if (response[i] < 0x10)
respBuffer = respBuffer + "0"; //Добавляет ведущие нули, если шестнадцатеричное значение меньше 0x10
respBuffer = respBuffer + String(response[i], HEX) + " ";
}
Serial.print("response: "); Serial.println(respBuffer);
}
void setupNFC() {
nfc.begin();
uint32_t versiondata = nfc.getFirmwareVersion();
if (! versiondata) {
Serial.print("Didn't find PN53x board");
while (1); // остановка
}
// Данные в порядке, распечатайте их!
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);
// настроить плату для чтения RFID-меток
nfc.SAMConfig();
}
@Maray97, 👍0
Обсуждение1 ответ
Лучший ответ:
▲ 1
Решено. Установите #if 1 и #elif 0. Связанный: ССК на D5 МИСО до D6 МОСИ к D7 SS на D0 (и установите его на pn532spi)
,
@Maray97
Смотрите также:
- Как подключить Wi-Fi Shield ESP-12E-ESP8266-UART-WIFI-Wireless-Shield к Arduino
- Ошибка компиляции ESP8266: "previous declaration of 'HTTPMethod HTTP_HEAD'"
- Чтение OID SNMP V2 из ESP8266/ESP32
- Подключение Lilypad USB + последовательного Wi-Fi-модуля ESP8266
- сервер espasync не работает, я получаю это сообщение об ошибке
- Трассировка стека сброса ESP12E Soft WDT ведет к библиотекам
- Библиотека ESP8266: получено 2 запроса вместо 1
- Странная проблема с software serial
Для I2C по умолчанию используются контакты, определенные в конфигурации вашей платы — возможно, контакты 4 и 5 (для зеркалирования A4 и A5 на Uno). Однако ваш код настроен на использование серийного номера, а не I2C., @Majenko
Я так сомневался, не могли бы вы сказать мне точную проводку для серийного номера? (Или для чего угодно, чтобы этот код работал). Я хотел бы даже знать, как получить эту информацию, обычно я нахожу распиновку в разделе определения (как это сделать), @Maray97
Для последовательного подключения подключите его к контактам UART1 TX и RX. Где они находятся, зависит от того, какой у вас модуль., @Majenko
Я подключил SCK к CLK (на ESP8266), MSO и MOSI подключил к D6 и D7. Как мне настроить это в коде? Я пытался изменить SPI, но это не сработало., @Maray97
Что и куда вы подключаете и какой код используете, зависит от того, какой у вас модуль PN532 и какой у вас модуль ESP8266., @Majenko
У меня есть модуль Elechouse PN532 V3 и NodeMCU., @Maray97
[Этот?](https://www.elechouse.com/elechouse/index.php?main_page=product_info&cPath=90_93&products_id=2205), @Majenko