Skocz do zawartości

Problem z pinem MISO na nodeMCU


SOYER

Pomocna odpowiedź

Dobra wrócę do domu to sprawdzę. Dla swojej obrony powiem tylko tyle, że owszem oglądałem ten plik nagłówkowy, ale byłem przekonany, że jeśli  w argumentach jest taka kolejność (ssPin, rstPin), to nie wpisanie rstPin spowoduje, że zostanie tylko ssPin, bo taka jest kolejność.  Ty twierdzisz, że podanie tylko jednego argumentu powoduje, że inicjalizator traktuje go jako rstPin? Dobrze rozumiem?

Czyli obowiązkowo muszę podać, dwa argumenty?

Link do komentarza
Share on other sites

35 minut temu, SOYER napisał:

oglądałem ten plik nagłówkowy, ale byłem przekonany, że jeśli  w argumentach jest taka kolejność (ssPin, rstPin), to nie wpisanie rstPin spowoduje, że zostanie tylko ssPin, bo taka jest kolejność

Czyli Twoim zdaniem jeśli parametr funkcji nazywa się resetPowrDownPin to nie jest to pin RST tylko SS... ciekawy tok rozumowania, nie powiem 😉

36 minut temu, SOYER napisał:

Czyli obowiązkowo muszę podać, dwa argumenty?

Tak. Przy okazji (czytając sobie kod PCD_Init) śmiem twierdzić, że piny RST powinny być oddzielne dla każdego czytnika (jeśli tam zajrzysz to zobaczysz, że funkcja sprawdza stan pinu RST, i przy więcej niż jednym czytniku może robić jakieś dziwne rzeczy).

Możesz spróbować podać 255 jako drugi argument i sprawdzić, czy zareaguje na softReset. Ja już niestety muszę wracać do swoich adwordsów 😞

 

  • Lubię! 1
Link do komentarza
Share on other sites

33 minuty temu, ethanak napisał:

Czyli Twoim zdaniem jeśli parametr funkcji nazywa się resetPowrDownPin to nie jest to pin RST tylko SS... ciekawy tok rozumowania, nie powiem

Nie, tam są dwa argumenty, pierwszy od ss, a drugi od rst..., przeczytaj jeszcze raz mój poprzedni post proszę i powiedz w którym miejscu źle myślę.

Druga sprawa, tak jak wcześniej pisałem, przedtem miałem identycznie podpięte, też bez reset i działało. Jedyne co to być może mam teraz coś podpięte pod pin 9 który jest przypisany do rst, ale rst to przecież jest tylko OUTPUT.

 

Link do komentarza
Share on other sites

13 minut temu, SOYER napisał:

ale rst to przecież jest tylko OUTPUT.

Hm... może ja czytać nie umiem, albo co... fragment PCD_Init():

    // If a valid pin number has been set, pull device out of power down / reset state.
	if (_resetPowerDownPin != UNUSED_PIN) {
		// First set the resetPowerDownPin as digital input, to check the MFRC522 power down mode.
		pinMode(_resetPowerDownPin, INPUT);
	
		if (digitalRead(_resetPowerDownPin) == LOW) {	// The MFRC522 chip is in power down mode.
	

Rozumiem, że jak jakiś pin się ustawia na INPUT to on jest OUTPUT?

15 minut temu, SOYER napisał:

przeczytaj jeszcze raz mój poprzedni post proszę i powiedz w którym miejscu źle myślę.

Nie wiem, co myślałeś, ale w kodzie podałeś jeden argument, czyli pin RST, pozostawiając SS jako domyślny.

Co do dwóch argumentów i "tylko output" patrz wyżej.

 

  • Lubię! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Ok, dzięki @ethanak zadziałało z podstawieniem pod pin reset wartości 255. Odpaliło szkic czytało karty z obu czytników.

Tylko, że teraz nie działa, wywala przez seriala jakiś panic core:

Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled.

Core  1 register dump:

PC      : 0x400d13ac  PS      : 0x00060a30  A0      : 0x800d13fe  A1      : 0x3ffb2790

A2      : 0x3ffc10c0  A3      : 0x00000000  A4      : 0x00000000  A5      : 0x00000001

A6      : 0x00060c20  A7      : 0x00000001  A8      : 0x00000000  A9      : 0x00000007 

A10     : 0x00000000  A11     : 0x00060c23  A12     : 0x0000000a  A13     : 0x00000001

A14     : 0x007b7f18  A15     : 0x003fffff  SAR     : 0x00000010  EXCCAUSE: 0x0000001c 

EXCVADDR: 0x00000000  LBEG    : 0x400ed6a8  LEND    : 0x400ed6b4  LCOUNT  : 0x00000000 

Backtrace:0x400d13a9:0x3ffb27900x400d13fb:0x3ffb27b0 0x400d1420:0x3ffb27d0 0x400d1166:0x3ffb27f0 0x400d1c62:0x3ffb2820 
 

Nic nie działa, nie mogę nawet nowego szkicu wgrać.

 

Link do komentarza
Share on other sites

#include "Arduino.h"
#include "DFRobotDFPlayerMini.h"
#include <SPI.h>
#include <MFRC522.h>

/////////////////RFID////////////
#define RST_PIN         255          // Configurable, see typical pin layout above
#define SS_1_PIN        15        // Configurable, take a unused pin, only HIGH/LOW required, must be different to SS 2
#define SS_2_PIN        27   
#define NR_OF_READERS   2
byte ssPins[] = {SS_1_PIN, SS_2_PIN};
MFRC522 mfrc522[NR_OF_READERS];

//////////DFPLAYER/////////////
DFRobotDFPlayerMini myDFPlayer;



void setup() {
  
  Serial.begin(9600);
  Serial1.begin(9600, SERIAL_8N1, 23, 19);
  Serial2.begin(9600);
  SPI.begin(14,12,13);
      for (uint8_t reader = 0; reader < NR_OF_READERS; reader++) {
        mfrc522[reader].PCD_Init(ssPins[reader], RST_PIN); // Init each MFRC522 card
        Serial.print(F("Reader "));
        Serial.print(reader);
        Serial.print(F(": "));
        mfrc522[reader].PCD_DumpVersionToSerial();
       }
  myDFPlayer.volume(10);
  delay(3000);
  myDFPlayer.play(1);  //Play the first mp3
  delay(2000);
  myDFPlayer.play(2);
  test_sim800_module();

 
}

void loop() {
updateSerial();
rfid();
}
void rfid(){
    for (uint8_t reader = 0; reader < NR_OF_READERS; reader++) {
    // Look for new cards

    if (mfrc522[reader].PICC_IsNewCardPresent() && mfrc522[reader].PICC_ReadCardSerial()) {
      Serial.print(F("Reader "));
      Serial.print(reader);
      // Show some details of the PICC (that is: the tag/card)
      Serial.print(F(": Card UID:"));
      dump_byte_array(mfrc522[reader].uid.uidByte, mfrc522[reader].uid.size);
      Serial.println();
      Serial.print(F("PICC type: "));
      MFRC522::PICC_Type piccType = mfrc522[reader].PICC_GetType(mfrc522[reader].uid.sak);
      Serial.println(mfrc522[reader].PICC_GetTypeName(piccType));

      // Halt PICC
      mfrc522[reader].PICC_HaltA();
      // Stop encryption on PCD
      mfrc522[reader].PCD_StopCrypto1();
    } //if (mfrc522[reader].PICC_IsNewC
  } //for(uint8_t reader
}
void dump_byte_array(byte *buffer, byte bufferSize) { /////RFID
  for (byte i = 0; i < bufferSize; i++) {
    Serial.print(buffer[i] < 0x10 ? " 0" : " ");
    Serial.print(buffer[i], HEX);
  }
}

void test_sim800_module()
{
  Serial2.println("AT");
  updateSerial();
  Serial.println();
  Serial2.println("AT+CSQ");
  updateSerial();
  Serial2.println("AT+CCID");
  updateSerial();
  Serial2.println("AT+CREG?");
  updateSerial();
  Serial2.println("ATI");
  updateSerial();
  Serial2.println("AT+CBC");
  updateSerial();
  Serial2.println("AT+CLVL=95");
  updateSerial();
  Serial2.println("AT+CRSL=95");
  updateSerial();
/*Serial2.println("AT+CMIC= 0,14");
  updateSerial();
  Serial2.println("AT+CMIC= 1,14");
  updateSerial();
  Serial2.println("AT+CMIC= 2,14");
  updateSerial();
  Serial2.println("AT+CMIC= 3,14");
  updateSerial();*/
}
void updateSerial()
{
  delay(500);
  while (Serial.available())
  {
    Serial2.write(Serial.read());//Forward what Serial received to Software Serial Port
  }
  while (Serial2.available())
  {
    Serial.write(Serial2.read());//Forward what Software Serial received to Serial Port
  }
}
//void printDetail(uint8_t type, int value);

Wgrałem ten szkic i siadło...

Link do komentarza
Share on other sites

(edytowany)

Cuda wianki, kiedy próbuję wgrać szkic z przykładów WiFiScan, to wgrywa się bez problemu, mało tego nie musze wciskać przycisku BOOT, co zawsze musiałem robić. Ale innego szkicu nie da rady wgrać, z BOOTem czy bez.

Komunikat:

esptool.py v4.2.1
Serial port COM3
Connecting.........
Chip is ESP32-D0WD-V3 (revision 3)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: c4:de:e2:10:73:5c
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
WARNING: Failed to communicate with the flash chip, read/write operations will fail. Try checking the chip connections or removing any other hardware connected to IOs.
Configuring flash size...
Flash will be erased from 0x00001000 to 0x00005fff...
Flash will be erased from 0x00008000 to 0x00008fff...
Flash will be erased from 0x0000e000 to 0x0000ffff...
Flash will be erased from 0x00010000 to 0x000bafff...
Compressed 18912 bytes to 13025...

A fatal error occurred: Packet content transfer stopped (received 8 bytes)
A fatal error occurred: Packet content transfer stopped (received 8 bytes)

Poniżej zrzut ekranu z ustawień płytki

 

Zrzut ekranu (5).png

Edytowano przez SOYER
Link do komentarza
Share on other sites

Zatem, wgrywać kod znowu można, czemu nie wiem. Się samo zrobiło...

Różne szkice działają, przy innych wpada w panikę, przy czym wcześniej przy nich nie wpadał...

Np. ten szkic, działał, a teraz esp panikuje:

#include "Arduino.h"
#include "DFRobotDFPlayerMini.h"

DFRobotDFPlayerMini myDFPlayer;

void setup() {
  Serial.begin(9600);
  Serial1.begin(9600, SERIAL_8N1, 23, 19);
  Serial2.begin(9600);
  myDFPlayer.volume(10);
  delay(3000);
  myDFPlayer.play(1);  //Play the first mp3
  delay(2000);
  myDFPlayer.play(2);
  test_sim800_module();
}

void loop() {
updateSerial();
}

void test_sim800_module()
{
  Serial2.println("AT");
  updateSerial();
  Serial.println();
  Serial2.println("AT+CSQ");
  updateSerial();
  Serial2.println("AT+CCID");
  updateSerial();
  Serial2.println("AT+CREG?");
  updateSerial();
  Serial2.println("ATI");
  updateSerial();
  Serial2.println("AT+CBC");
  updateSerial();
  Serial2.println("AT+CLVL=95");
  updateSerial();
  Serial2.println("AT+CRSL=95");
  updateSerial();
/*Serial2.println("AT+CMIC= 0,14");
  updateSerial();
  Serial2.println("AT+CMIC= 1,14");
  updateSerial();
  Serial2.println("AT+CMIC= 2,14");
  updateSerial();
  Serial2.println("AT+CMIC= 3,14");
  updateSerial();*/
}
void updateSerial()
{
  delay(500);
  while (Serial.available())
  {
    Serial2.write(Serial.read());//Forward what Serial received to Software Serial Port
  }
  while (Serial2.available())
  {
    Serial.write(Serial2.read());//Forward what Software Serial received to Serial Port
  }
}

Co jest nie wiem..., ..., ..., ... .

Link do komentarza
Share on other sites

(edytowany)

Zaś np. ten szkic który jest częścią powyższego działa ok:

#include "Arduino.h"
#include "DFRobotDFPlayerMini.h"

DFRobotDFPlayerMini myDFPlayer;

void setup() {
  Serial.begin(9600);
  Serial1.begin(9600, SERIAL_8N1, 23, 19);
  Serial2.begin(9600);
  myDFPlayer.volume(10);
  delay(3000);
  myDFPlayer.play(1);  //Play the first mp3
  delay(2000);
  myDFPlayer.play(2);
  test_sim800_module();
}

void loop() {
updateSerial();
}

void test_sim800_module()
{
  Serial2.println("AT");
  updateSerial();
  Serial.println();
  Serial2.println("AT+CSQ");
  updateSerial();
  Serial2.println("AT+CCID");
  updateSerial();
  Serial2.println("AT+CREG?");
  updateSerial();
  Serial2.println("ATI");
  updateSerial();
  Serial2.println("AT+CBC");
  updateSerial();
  Serial2.println("AT+CLVL=95");
  updateSerial();
  Serial2.println("AT+CRSL=95");
  updateSerial();
/*Serial2.println("AT+CMIC= 0,14");
  updateSerial();
  Serial2.println("AT+CMIC= 1,14");
  updateSerial();
  Serial2.println("AT+CMIC= 2,14");
  updateSerial();
  Serial2.println("AT+CMIC= 3,14");
  updateSerial();*/
}
void updateSerial()
{
  delay(500);
  while (Serial.available())
  {
    Serial2.write(Serial.read());//Forward what Serial received to Software Serial Port
  }
  while (Serial2.available())
  {
    Serial.write(Serial2.read());//Forward what Software Serial received to Serial Port
  }
}

Jak też ten, który jest drugą częścią tego z poprzedniego posta, tez działa:

#include "Arduino.h"
//#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"


DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);

void setup()
{
  Serial1.begin(9600, SERIAL_8N1, 23, 19);
  Serial.begin(9600);
  
  Serial.println();
  Serial.println(F("DFRobot DFPlayer Mini Demo"));
  Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));
  
  if (!myDFPlayer.begin(Serial1)) {  //Use softwareSerial to communicate with mp3.
    Serial.println(F("Unable to begin:"));
    Serial.println(F("1.Please recheck the connection!"));
    Serial.println(F("2.Please insert the SD card!"));
    while(true){
      delay(0); // Code to compatible with ESP8266 watch dog.
    }
  }
  Serial.println(F("DFPlayer Mini online."));
  
  myDFPlayer.volume(10);  //Set volume value. From 0 to 30
  myDFPlayer.play(1);  //Play the first mp3
  delay(2000);
  myDFPlayer.play(2);
  
}

void loop()
{
  static unsigned long timer = millis();
  
  if (millis() - timer > 3000) {
    timer = millis();
    myDFPlayer.next();  //Play next mp3 every 3 second.
  }
  
  if (myDFPlayer.available()) {
    printDetail(myDFPlayer.readType(), myDFPlayer.read()); //Print the detail message from DFPlayer to handle different errors and states.
  }
}

void printDetail(uint8_t type, int value){
  switch (type) {
    case TimeOut:
      Serial.println(F("Time Out!"));
      break;
    case WrongStack:
      Serial.println(F("Stack Wrong!"));
      break;
    case DFPlayerCardInserted:
      Serial.println(F("Card Inserted!"));
      break;
    case DFPlayerCardRemoved:
      Serial.println(F("Card Removed!"));
      break;
    case DFPlayerCardOnline:
      Serial.println(F("Card Online!"));
      break;
    case DFPlayerUSBInserted:
      Serial.println("USB Inserted!");
      break;
    case DFPlayerUSBRemoved:
      Serial.println("USB Removed!");
      break;
    case DFPlayerPlayFinished:
      Serial.print(F("Number:"));
      Serial.print(value);
      Serial.println(F(" Play Finished!"));
      break;
    case DFPlayerError:
      Serial.print(F("DFPlayerError:"));
      switch (value) {
        case Busy:
          Serial.println(F("Card not found"));
          break;
        case Sleeping:
          Serial.println(F("Sleeping"));
          break;
        case SerialWrongStack:
          Serial.println(F("Get Wrong Stack"));
          break;
        case CheckSumNotMatch:
          Serial.println(F("Check Sum Not Match"));
          break;
        case FileIndexOut:
          Serial.println(F("File Index Out of Bound"));
          break;
        case FileMismatch:
          Serial.println(F("Cannot Find File"));
          break;
        case Advertise:
          Serial.println(F("In Advertise"));
          break;
        default:
          break;
      }
      break;
    default:
      break;
  }
  
}

 

Edytowano przez SOYER
Link do komentarza
Share on other sites

Prędkość zmniejszyłem do minimalnej możliwej, kabelek mam ten sam od zawsze. Szkice wgrywa, jednak przy jednych, wywala panica. Twierdzisz, że pomimo, że IDE pokazuje, że wgrane to nie wgrał prawidłowo? Mam zainwestować w inny kabel? Co to znaczy porządny? Drogi?

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.