BASIC4MCU | 질문게시판 | pn532 데이터 전송
페이지 정보
작성자 알려주세요제발ㅠㅠ 작성일2020-08-18 10:11 조회8,007회 댓글3건본문
안녕하세요
현재 pH 센서와 NFC(pn532)센서를 결합하여 핸드폰 NFC를 이용하여 pH 측정을 계획중입니다.
현재 핸드폰 NFC를 이용하여 pH측정 코드 까지는 작성하였고 측정할 수 있었는데
측정한 데이터를 핸드폰으로 전송하는 코드를 찾지못해서 문의 드립니다.
하단은 지금까지 작성한 코드입니다.
#include <SPI.h>
#include <PN532.h>
// PH 센서
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
#define SensorPin 0
unsigned long int avgValue;
float b;
int buf[10],temp;
#define PN532_CS 10
PN532 nfc(PN532_CS);
#define NFC_DEMO_DEBUG 1
// 초기화
void setup()
{
// LCD initialize
lcd.init();
lcd.backlight();
#ifdef NFC_DEMO_DEBUG
Serial.begin(115200);
Serial.println("Hello!");
#endif
nfc.begin();
uint32_t versiondata = nfc.getFirmwareVersion();
if (! versiondata) {
#ifdef NFC_DEMO_DEBUG
Serial.print("Didn't find PN53x board");
#endif
while (1); // halt
}
#ifdef NFC_DEMO_DEBUG
// Got ok data, print it out!
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);
Serial.print("Supports ");
Serial.println(versiondata & 0xFF, HEX);
#endif
// configure board to read RFID tags and cards
nfc.SAMConfig();
}
// 전기끊기기 전까지 계속도는애
void loop()
{
card();
}
// 카드 인식해서 pH값 읽는 함수
void card(){
uint32_t id;
// look for MiFare type cards
id = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A);
if (id != 0)
{
#ifdef NFC_DEMO_DEBUG
Serial.print("Read card #");
Serial.println(id);
String pH = phSensor();
#endif
uint8_t keys[]= { 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF };
if(nfc.authenticateBlock(1, id ,0x08,KEY_A,keys)) //authenticate block 0x08
{
//if authentication successful
uint8_t block[16];
//read memory block 0x08
if(nfc.readMemoryBlock(1,0x08,block))
{
#ifdef NFC_DEMO_DEBUG
//if read operation is successful
for(uint8_t i=0;i<16;i++)
{
//print memory block
Serial.print(block[i],HEX);
Serial.print(" ");
}
Serial.println();
#endif
}
}
}
delay(500);
}
// phSensor 값 읽는 함수
String phSensor(){
Serial.println(" in phsensor ");
// Ph Sensor Data Read
for(int i=0;i<10;i++){
buf[i]=analogRead(SensorPin);
delay(10);
}
// value align
for(int i=0;i<9;i++){
for(int j=i+1;j<10;j++){
if(buf[i]>buf[j]){
temp=buf[i];
buf[i]=buf[j];
buf[j]=temp;
}
}
}
avgValue=0;
for(int i=2;i<8;i++)
avgValue+=buf[i];
// Ph값
float phValue=(float)avgValue*4/1024/6;
phValue=4*phValue;
// 시리얼 모니터에 측정한 ph값 출력
Serial.print(" pH:");
Serial.print(phValue,2);
Serial.println(" ");
// phValue의 숫자값을 문자열 형태로 변환
String strPhValue = String(phValue);
// 0번째 줄 0번째 셀에 커서를 맞춤
lcd.setCursor(0,0);
// lcd 에 출력
lcd.print(strPhValue);
return strPhValue;
}
댓글 3
조회수 8,007master님의 댓글
master 작성일
https://www.google.com/search?ei=ATQ7X4yTGdG3mAWrw5GQCA&q=%EC%95%84%EB%91%90%EC%9D%B4%EB%85%B8+%EC%99%80%EC%9D%B4%ED%8C%8C%EC%9D%B4+%ED%9C%B4%EB%8C%80%ED%8F%B0+%EC%95%B1%EC%9D%B8%EB%B2%A4%ED%84%B0&oq=%EC%95%84%EB%91%90%EC%9D%B4%EB%85%B8+%EC%99%80%EC%9D%B4%ED%8C%8C%EC%9D%B4+%ED%9C%B4%EB%8C%80%ED%8F%B0+%EC%95%B1%EC%9D%B8%EB%B2%A4%ED%84%B0&gs_lcp=CgZwc3ktYWIQAzIFCAAQzQIyBQgAEM0CMgUIABDNAjIFCAAQzQIyBQgAEM0COgQIABAeOgUIIRCgAToECCEQFVDfkQJY-KUEYI2qBGgAcAB4AIABmwGIAYYOkgEEMC4xM5gBAKABAaoBB2d3cy13aXrAAQE&sclient=psy-ab&ved=0ahUKEwjMl6ry0aPrAhXRG6YKHathBIIQ4dUDCAw&uact=5
//
https://www.google.com/search?ei=STQ7X5jfDOmLr7wPtLGm2A0&q=%EC%95%84%EB%91%90%EC%9D%B4%EB%85%B8+%EB%B8%94%EB%A3%A8%ED%88%AC%EC%8A%A4+%ED%9C%B4%EB%8C%80%ED%8F%B0+%EC%95%B1%EC%9D%B8%EB%B2%A4%ED%84%B0&oq=%EC%95%84%EB%91%90%EC%9D%B4%EB%85%B8+%EB%B8%94%EB%A3%A8%ED%88%AC%EC%8A%A4+%ED%9C%B4%EB%8C%80%ED%8F%B0+%EC%95%B1%EC%9D%B8%EB%B2%A4%ED%84%B0&gs_lcp=CgZwc3ktYWIQAzIFCAAQzQIyBQgAEM0CMgUIABDNAlDszQFYkuMBYPLmAWgCcAB4AoABgQGIAcsJkgEEMC4xMJgBAKABAaoBB2d3cy13aXrAAQE&sclient=psy-ab&ved=0ahUKEwjYp8iU0qPrAhXpxYsBHbSYCdsQ4dUDCAw&uact=5
휴대폰과의 연결은 블루투스 또는 와이파이를 사용하는 예제를 쉽게 찾을 수 있습니다.
알려주세요제발ㅠㅠ님의 댓글
알려주세요제발ㅠㅠ
혹시 NFC를 이용하여 데이터를 전송할 수 있는 예제는 없을까요?
master님의 댓글
master
NFC는 양방향 통신 규격이 아니라서
아두이노와 휴대폰의 통신에 사용하지 못합니다.