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 ![]()
by the way sorry for my english ;D
