<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> Arduino >> 瀏覽文章

        arduino RDM8800+SIM900實現刷NFC卡短信提示

        作者:未知   來源:互聯網   點擊數:  更新時間:2014年07月27日   【字體:

        RDM8800是一款能讀寫13.56Mhz NFC RFID卡的單片機,串口直接輸出,體積小巧,性能穩定。兼容arduino,我們可以像使用arduino一樣修改它的固件來實現我們想要的功能。

         

        今天教小伙伴們使用RDM8800燒寫程序來實現刷NFC卡,把卡號通過短信發送到手機上。這有什么實際意義嗎?比如上班打卡?一起來大開腦洞吧!

        本次教程需要用到的配件有:




        首先下載RDM8800的硬件補丁包和庫文件:http://pan.baidu.com/s/1jG63c7k

        下載完成后把每個壓縮包都解壓出來,將Iteaduino_Lite文件夾放到你的Arduino IDE安裝目錄下的hardware 文件夾里面,把PN532_SPI文件夾放到你的Arduino IDE安裝目錄下的libraries 文件夾里面。

        注意:新的硬件驅動和庫文件需要在IDE下次運行時生效,所以在操作上面這一步的時候請關閉arduino IDE軟件。

        接下來,我們需要給RDM8800燒寫固件。按照下面的硬件連接圖來連接FOCA轉串板和RDM8800。注意:FOCA轉串板的開關要打到5V。詳細引腳定義請查閱datasheet和原理圖。

        使用USB mini接口的數據線將FOCA轉串板連接到電腦上,開始燒寫以下代碼:

         

        #include

        #include

        #define delaytime 2000

        #define timeout1 5000

        #define timeout2 7000

        char number[20] = "123456789";   //改成接收短信的手機號碼

        byte comm_buf[20];

        const int LED = 3;

        #define PN532_CS 10

        PN532 nfc(PN532_CS);

        //#define  NFC_DEMO_DEBUG 1

        unsigned int frame_format;

         

        unsigned char id_buffer[10];

        uint32_t old_id;

        unsigned long lasttime=0;

        unsigned long prev_time=0;

        unsigned char r_buffer[30];

         

        void setup(void) {

          Serial.begin(9600); 

          nfc.begin();

          nfc.SAMConfig();

         

          pinMode(LED,OUTPUT);

          digitalWrite(LED,HIGH);

          delay(1000);

          digitalWrite(LED,LOW);

          delay(10000);

         

            lasttime = millis();

        }

         

        void loop(void) {

          uint32_t id;

          // look for MiFare type cards

          id = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A);

         

               if (id != 0)

               {

                   if(old_id != id)

                   {

                      old_id = id;

                       hex_to_dec(id);

                      while(Serial.available())

                          Serial.read();                 

                      Serial.println("AT+CMGF=1");

                        prev_time = millis();

                      int a=0;

                      while((millis() - prev_time)

                      {

                          if(Serial.available())

                          {

                            

                             r_buffer[a++]=Serial.read();

                            

                             if(strstr((char *)r_buffer, "OK"))

                                 break;

                         

                          }

                         

                         

                      }

                      Serial.print("AT+CMGS=\"");

                      Serial.print(number);

                      Serial.println("\"");

                      prev_time = millis();

                      a=0;

                      while((millis() - prev_time)

                      {

                          if(Serial.available())

                          {

                            

                             r_buffer[a++]=Serial.read();

                            

                             if(strstr((char *)r_buffer, ">"))

                                 break;

                         

                          }

                         

                         

                      }

                      Serial.print("card: ");

                      for(unsigned char i=0;i<10;i++)

                      {

                          Serial.write(id_buffer[i]);

                      }

                      char buf_end[2];

                      buf_end[0]=0x1a;

                      buf_end[1]='\0';

                      Serial.println(buf_end);

                      prev_time = millis();

                      a=0;

                      while((millis() - prev_time)

                      {

                          if(Serial.available())

                          {

                            

                             r_buffer[a++]=Serial.read();

                            

                             if(strstr((char *)r_buffer, "OK"))

                                 break;

                         

                          }

                         

                         

                      }

                       

                  

                   }

         

                      lasttime = millis();

                  

         

               }

              

               if(millis() - lasttime > delaytime)

               {

                   lasttime = millis();

                   old_id=0;

         

               }

           

        }

         

        void hex_to_dec(uint32_t value)

        {

            id_buffer[0] = 0x30 + value / 1000000000;

            id_buffer[1] = 0x30 + value % 1000000000 / 100000000;

            id_buffer[2] = 0x30 + value % 100000000 / 10000000;

            id_buffer[3] = 0x30 + value % 10000000 / 1000000;

            id_buffer[4] = 0x30 + value % 1000000 / 100000;

            id_buffer[5] = 0x30 + value % 100000 / 10000;

            id_buffer[6] = 0x30 + value % 10000 / 1000;

            id_buffer[7] = 0x30 + value % 1000 / 100;

            id_buffer[8] = 0x30 + value % 100 / 10;

            id_buffer[9] = 0x30 + value % 10;

        }

        燒寫的時候選擇“board板子類型:Iteaduino_Lite”,然后選擇相應的串口。

        點擊upload,提示燒寫成功,RDM8800的固件就燒好了。

        接下來是測試,拔掉電源線和所有杜邦線,按照下面的硬件連接圖來連接FOCA,RDM8800SIM900模塊。

        SIM900模塊裝上SIM卡(僅支持聯通/移動sim卡)和天線,把NFC的天線板連接到RDM8800的接口上,然后插上USB線供電。實物如下圖:

        上電后,SIM900開機,看到NET LED燈開始閃爍時,等待10s。然后把NFC typeA卡放到RDM8800的天線板上,這時RDM8800會把讀到的卡號發送到對應的手機上,例如: “card: 0046553491” 。輸出格式為“card: +卡號”。

        卡一直放在天線板上只讀一次,只發一次短信,同一張卡需要隔2秒后才能刷第二次并發送短信,不同的卡號無需等待。

        此處的FOCA僅是用于供電,你也可以使用5V/1A適配器或者電池供電。

         視頻演示地址:http://v.youku.com/v_show/id_XNzQ1OTM5ODIw.html

        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮