ESP8266MOD - čtečka RFID karet s displejem

ESP8266MOD - čtečka RFID karet s displejem
« kdy: 15. 01. 2022, 10:30:45 »
Ahoj,
snažím se rozchodit ESP8266 s RFID-RC522 čtečkou karet a I2c displejem.
Bohužel mi nefunguje obojí zároveň.
Buď můžu inicializovat čtečku, kartu přečíst a poslat výstup alespoň na terminál nebo inicializovat display a zobrazovat text.
Obojí zároveň nefunguje.
Vůbec netuším proč.
Čtečka a displej používají stejný SDA port na ESP8266.
Port SDA je na desce jenom jeden.
Netuším jestli potřebuji dva SDA porty?
Kód: [Vybrat]
https://i2.wp.com/randomnerdtutorials.com/wp-content/uploads/2019/05/ESP8266-NodeMCU-kit-12-E-pinout-gpio-pin.png?quality=100&strip=all&ssl=1


testovací kód

Kód: [Vybrat]

#include <SPI.h>
#include <MFRC522.h>
#include <ESP8266WiFi.h>

#include <WiFiClientSecure.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F, 16, 2);
#define SS_PIN D2
#define RST_PIN D3   // Configurable, see typical pin layout above

MFRC522 mfrc522(SS_PIN,RST_PIN);  // Create MFRC522 instance

const char* host = "script.google.com";
const int httpsPort = 443;
const char* fingerprint  = "AB AB CD CD"; // for https


//***********Things to change*******************
const char* ssid = "";
const char* password = "";
String GOOGLE_SCRIPT_ID = ""; // Replace by your GAS service id
const String unitName = "headquarter"; // any name without spaces and special characters
//***********Things to change*******************
uint64_t openGateMillis = 0;

void LcdClearAndPrint(String text)
{
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print(text);
}



void setup() {



 

  Serial.begin(9200);

 

  //lcd.init(); // Init with pin default ESP8266 or ARDUINO
// lcd.begin(0, 2); //ESP8266-01 I2C with pin 0-SDA 2-SCL
// Turn on the blacklight and print a message.
  //lcd.backlight();
  //LcdClearAndPrint("Loading");


  // Initialize serial communications with the PC

  SPI.begin();      // Init SPI bus
  delay(900);
  mfrc522.PCD_Init();   // Init MFRC522
  delay(900);       // Optional delay. Some board do need more time after init to be ready, see Readme
  mfrc522.PCD_DumpVersionToSerial();  // Show details of PCD - MFRC522 Card Reader details
  delay(900);
  Serial.println(F("Scan PICC to see UID, SAK, type, and data blocks..."));
  //LcdClearAndPrint("Ready");
}
byte readCard[4];




void loop() {


 
  if (!mfrc522.PICC_IsNewCardPresent()) {
    return;
  }

  // Select one of the cards
  // Reset the loop if no new card present on the sensor/reader. This saves the entire process when idle.
  if (!mfrc522.PICC_ReadCardSerial()) {
    return;
  }
  //LcdClearAndPrint("Please wait...");
  Serial.println(F("Scanned PICC's UID:"));
  String uid = "";
  for (uint8_t i = 0; i < 4; i++) {  //
    readCard[i] = mfrc522.uid.uidByte[i];
    Serial.print(readCard[i], HEX);
    uid += String(readCard[i],HEX);
  }
  Serial.println("");


  //LcdClearAndPrint("Dummy");



  mfrc522.PICC_HaltA();
}











RDa

  • *****
  • 1 727
    • Zobrazit profil
    • E-mail
Re:ESP8266MOD - čtečka RFID karet s displejem
« Odpověď #1 kdy: 15. 01. 2022, 15:08:33 »
To vypada ze LCD je na I2C (2 draty), ale ctecka je SPI? (4 draty).
Pokud tyto 2 porty sdileji spolecne piny, tak to nemas sanci uchodit bez dodatecneho cipu.

Re:P8266MODES - čtečka RFID karet s displejem
« Odpověď #2 kdy: 15. 01. 2022, 17:40:35 »
Dovolil bych si rozporovat to, že v ESP8266 je jen jedno SDA. I2C je pokud si dobře pamatuji v tomto čipu řešeno čistě softwarově, takže SDA nemusí být svázáno jen s jednou pinožkou.

Re:ESP8266MOD - čtečka RFID karet s displejem
« Odpověď #3 kdy: 15. 01. 2022, 20:27:58 »
Ano, je to tak. Jakc SPI tak I2C je emulováno v SW.  Problém však je v tom, že spoustu pinů má nějaké speciální podmínky, pro které nejdou použít - např při startu musí být PULLDOWN.
Takže bych využil ty piny, které  jsou teď doporučeny pro I2C a SPI. Viz:
https://escapequotes.net/wp-content/uploads/2016/02/esp8266-wemos-d1-mini-pinout.png
V žádném případě bych nepoužíval pin D0 (GPIO16), ten pin más spoustu omezení a podmínek (např, nemá interupt on change, což je pro emulaci sběrnice docela problém).
Jestli jsem kod dobře pochopil, tak vám stejně jede čtečka čipů na SPI a displej na i2C. Tak se přidržte těch pinů co jsou pro to doporučeny a bude to fungovat.
Jinak doporučuju udělat revizi a přepsání kodu - mícháte tam označování pinů názvy Dx a v dalším příkaze používate GPIO číslo  - skvělá jízdenka do problémů, když poušíte pochopit co který pin vlastně dělá a jestli to neposíláte "přes sebe".
Dále jen tak mezi námi děvčaty - Serial.begin(9200) taky není úplně standardní hodnota (9600).



ByCzech

  • *****
  • 1 823
    • Zobrazit profil
    • E-mail
Re:ESP8266MOD - čtečka RFID karet s displejem
« Odpověď #4 kdy: 16. 01. 2022, 21:39:44 »
Dále jen tak mezi námi děvčaty - Serial.begin(9200) taky není úplně standardní hodnota (9600).

19200?