[HELP] Sending multiple data from Arduino UNO to nodemcu

Hi all!!!

i have trouble in my program for sending multiple data from arduino to nodemcu, in this case i will sending data from arduino, the data from two rfid readers counter which will be sent to my nodemcu then i will sent to thingspeak, but the problem is nodemcu only print one readers.

for examples, i have two readers (readers 0 and readers 1).
counter for readers 0 = 3
counter for readers 1 = 1

but in serial monitor nodemcu only print readers 1, but the two data are combined, so i confused i can not find out the data is for readers 0 or readers 1.(i will attach the result of both serial monitor).

heres code for Arduino

/**
 * --------------------------------------------------------------------------------------------------------------------
 * Example sketch/program showing how to read data from more than one PICC to serial.
 * --------------------------------------------------------------------------------------------------------------------
 * This is a MFRC522 library example; for further details and other examples see: https://github.com/miguelbalboa/rfid
 *
 * Example sketch/program showing how to read data from more than one PICC (that is: a RFID Tag or Card) using a
 * MFRC522 based RFID Reader on the Arduino SPI interface.
 *
 * Warning: This may not work! Multiple devices at one SPI are difficult and cause many trouble!! Engineering skill
 *          and knowledge are required!
 *
 * @license Released into the public domain.
 *
 * Typical pin layout used:
 * -----------------------------------------------------------------------------------------
 *             MFRC522      Arduino       Arduino   Arduino    Arduino          Arduino
 *             Reader/PCD   Uno/101       Mega      Nano v3    Leonardo/Micro   Pro Micro
 * Signal      Pin          Pin           Pin       Pin        Pin              Pin
 * -----------------------------------------------------------------------------------------
 * RST/Reset   RST          9             5         D9         RESET/ICSP-5     RST
 * SPI SS 1    SDA(SS)      ** custom, take a unused pin, only HIGH/LOW required **
 * SPI SS 2    SDA(SS)      ** custom, take a unused pin, only HIGH/LOW required **
 * SPI MOSI    MOSI         11 / ICSP-4   51        D11        ICSP-4           16
 * SPI MISO    MISO         12 / ICSP-1   50        D12        ICSP-1           14
 * SPI SCK     SCK          13 / ICSP-3   52        D13        ICSP-3           15
 *
 */
#include <Wire.h>
#include <SPI.h>
#include <MFRC522.h>
#include <SoftwareSerial.h>
#include <LiquidCrystal_I2C.h> //library penampil LCD

#define RST_PIN         9          // Configurable, see typical pin layout above
#define SS_1_PIN        10         // Configurable, take a unused pin, only HIGH/LOW required, must be diffrent to SS 2
#define SS_2_PIN        8          // Configurable, take a unused pin, only HIGH/LOW required, must be diffrent to SS 1

#define NR_OF_READERS   2

LiquidCrystal_I2C lcd(0x27,20,4); //0x3f dapat dicari dengan i2c scanner
SoftwareSerial s(5,6);
SoftwareSerial s1(5,6);


byte ssPins[] = {SS_1_PIN, SS_2_PIN};

MFRC522 mfrc522[NR_OF_READERS];   // Create MFRC522 instance.
int i = 1;
byte code[10];
String uidString;
int count0 = 0;
int count1 = 0;


/**
 * Initialize.
 */
void setup() {
  s.begin(9600);
  s1.begin(9600);
  Serial.begin(9600); // Initialize serial communications with the PC
  while (!Serial);
  SPI.begin();        // Init SPI bus
  
  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();
  }
  
  lcd.init();
  lcd.init();
  lcd.backlight(); //menghidupkan lampu latar LCD
  lcd.setCursor (3,0);
  lcd.print("Final Project");
  delay (1000);
  lcd.clear();
}

/**
 * Main loop.
 */
void loop() {
  lcd.setCursor (0,0);
  lcd.print("SCAN RFID");
  
  for (uint8_t reader = 0; reader < NR_OF_READERS; reader++) {
    // Look for new cards
    if(reader == 0){
      reader0(reader);
    }else if(reader == 1){
      reader1(reader);
    }      
  }
}

/** SCAN RFID TAG READER0 */
void reader0(int reader){
    if (mfrc522[reader].PICC_IsNewCardPresent() && mfrc522[reader].PICC_ReadCardSerial()) {
      Serial.println();
      Serial.print(F("Reader "));
      Serial.print(reader);
      // Show some details of the PICC (that is: the tag/card)
      Serial.println();
      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));
      count0++;
      lcd.setCursor (0,0);
 
      Serial.print("Counter ");
      Serial.print(reader);
      Serial.print(" = ");
      Serial.print(count0);
      Serial.println();
      s.write(count0);
       }
      
      mfrc522[reader].PICC_HaltA();
      mfrc522[reader].PCD_StopCrypto1();   
}

/** SCAN RFID TAG READER1 */
void reader1(int reader){
    if (mfrc522[reader].PICC_IsNewCardPresent() && mfrc522[reader].PICC_ReadCardSerial()) {
      Serial.println();
      Serial.print(F("Reader "));
      Serial.print(reader);
      Serial.println();
      // 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));
      count1++;
      lcd.setCursor (0,0);

      Serial.print("Counter ");
      Serial.print(reader);
      Serial.print(" = ");
      Serial.print(count1);
      Serial.println();
      s1.write(count1);
    }
      
      mfrc522[reader].PICC_HaltA();
      // Stop encryption on PCD
      mfrc522[reader].PCD_StopCrypto1();      
}

/**
 * Helper routine to dump a byte array as hex values to Serial.
 */
void dump_byte_array(byte *buffer, byte bufferSize) {
  for (byte i = 0; i < bufferSize; i++) {
    Serial.print(buffer[i] < 0x10 ? " 0" : " ");
    Serial.print(buffer[i], HEX);
  }
}

and for nodemcu

#include <SoftwareSerial.h>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ThingSpeak.h>

const char* ssid = "######";
const char* password = "######";

WiFiClient client;
unsigned long myChannelNumber = ######;
const char* myWriteAPIKey = "######";
SoftwareSerial s(D6,D5);
SoftwareSerial s1(D6, D5);
int counter0;
int counter1;

void setup() {
  s.begin(9600);
  s1.begin(9600);
  Serial.begin(9600);
  ThingSpeak.begin(client);

}

void loop() {
  if(WiFi.status() != WL_CONNECTED){
    Serial.print("Mencoba Connect ke SSID: ");
    Serial.println(ssid);
    delay(2000);
    while(WiFi.status() != WL_CONNECTED){
      WiFi.begin(ssid, password); //
      Serial.print(".");
      delay(5000);
    }
    Serial.print("\nConnected.");
  }
  if(s.available() ){
      counter0 = s.read();
      Serial.println();
      Serial.print("Reader 0 = ");
      Serial.print(counter0);
      delay(100);
  }else  if(s1.available() ){
      counter1 = s1.read();
      Serial.println();
      Serial.print("Reader 1 = ");
      Serial.print(counter1);
      delay(100);
  }
   
//      ThingSpeak.writeField(myChannelNumber, 1, counter0, myWriteAPIKey);
   delay(10);
 
}

picture explaination :
-blue should be readers 0
-red should be readers 1

pls help this is for my final project in my college :frowning:

by the way sorry for my english ;D

You can not have two instances of SoftwareSerial in your code, let alone have them using the same pins. You need to have 1 SoftwareSerial and then send more information with the count so you know if the data coming in is from reader0 or reader1

blh64:
You can not have two instances of SoftwareSerial in your code, let alone have them using the same pins. You need to have 1 SoftwareSerial and then send more information with the count so you know if the data coming in is from reader0 or reader1

oh i see, but the data will be sent to thingspeak and each reader will fill in each field, for examples readers 0 will fill in readers 0 field and readers 1 too, do you have any clue how to send this data? thank you sir :smiley: