㈠ 掌握物聯網開發技術,未來究竟有多吃香
「只要有人的地方,就有物聯網技術。」我不清楚這句話的出處,我只知道有人的地方就有江湖~哈哈。我想說的是,「物聯網技術」這個名詞是一個很大很泛的概念,我可以說不存在這種技術,我也可以說這技術實際上就是當今電子、通信、計算機三大領域的基礎技術。
我在這問題下的回答「物聯網和互聯網的區別和聯系?」簡單闡明了物聯網和互聯網之間的關系。請問,1994年中國接入互聯網以來,我們作為互聯網原著居民的90後,認為互聯網技術又是一種怎樣的技術呢?
我就奇了怪了,當初教育局怎麼不開一個互聯網技術專業?實際上現在也沒必要開設互聯網專業了,當今大學的計算機系本科所學的大部分內容,就是互聯網會用到的技術。其中之一是Web建站技術。
Web 建站技術中,HTML、HTML5、XHTML、CSS、SQL、JavaScript、PHP、ASP.NET、Web Services 是什麼? - 張秋怡的回答
什麼?你們計算機系不是學這些?來來來,我電腦壞了,過來幫我修一下電腦吧~
總之,互聯網是一個時代,物聯網,也是一個時代。物聯網技術是當今電子、通信、計算機、IT行業技術的大融合。如圖,物聯網技術的技術組成(簡單版)。
(。。。好像沒有什麼奇怪的啊?)
一二線城市早已實現了的公交卡,以及校園一卡通,用的就是RFID技術。RFID可讀可寫,所以公交卡、校園卡的錢能存在卡裡面。
NFC,也是RFID的技術一種,目前大部分手機都支持的NFC功能,手機取代公交卡真的是遲早的事。要是手機沒有NFC功能,也可以這么裝逼:
同樣,RFID開發也是離不開單片機開發,網上也有相關的RFID開發套件出售。
# 結語
當然,物聯網技術絕對不止以上五種,物聯網本身就是所有技術的大融合,做電子產品的還要考慮產品外殼,不過這是結構工程師的事情;做伺服器後台的還要考慮用戶帳號資料庫讀寫等,前端也要考慮如何把設備數據和操作方式優雅的展現給用戶看,這些是IT程序員的事情;電池技術也需要單方面突破,超小體積、超大容量,這個還得等待多時。
與其說物聯網是一種技術吧,不如說它是一個時代,物聯網通過對相關技術進行整合,形成一個時代的概念,是一個建立在技術基礎之上的時代。
㈡ arino門禁系統卡uid默認多少
1、序言
先說下簡單門禁系統的原理:
(1)IC卡激活:門禁卡管理員將卡片放到讀卡器、這時軟體讀取到IC卡的UID序列號信息(相當於身份證號碼),將這個UID錄入資料庫激活IC卡。
(2)刷卡:刷卡時讀卡器讀取到UID,查詢資料庫,如果資料庫中存在這個UID則表示有效用戶,繼而控制繼電器斷電,此時電磁鎖開門。
不亦買的RC522模塊採用SPI通信、據說也有串口通信的不過成本較高。大家可以看看這個模塊的主要配件:卡和讀卡器。
2、載入RC522庫文件
Arino本身有個操作RC5200的庫,如下圖所示,打開Arino開發工具中管理庫
搜索"RC522",選擇"MFRC522"安裝即可
點擊"More info"可以跳轉到github地址https://github.com/miguelbalboa/rfid ,下文會有提及。
安裝完畢後,可以看到關於MFRC522的庫示例,有讀取UID、獲取區塊信息、修改UID、卡片信息復制等
註:一般而言IC卡是不能修改0扇區0區塊的UID和廠商信息數據,這些是生產時就確定下來的的(關於IC卡的存儲結構有空再發文介紹,小夥伴們可以去網上查閱這方面資料也挺多的),能夠全扇區修改的俗稱UID卡才支持修改UID,一些不負責的門禁系統廠家僅根據UID來判斷用戶身份是不可靠的,一個簡單的方法是在讀之前先寫UID操作,如果可寫那麼這張卡就是UID卡即復制卡,判斷無效,系統也可記錄是哪張IC卡被復制了用於追溯非法行為,僅供交流與學習,請勿用於非法用途哦
3、模塊引腳接線
此處是網路上大部分相關文章沒有提及的,只告訴了如何接線,卻不告訴我們為什麼這樣接,甚至連Arino版本都不說清楚。
我們打開ReadNUID的示例裡面有各種版本Arino與RC522的引腳連接圖,我們按照這個接線即可。在上文提及的github項目主頁也有介紹。
RC522一共8個引腳,如圖所示:
3.3V供電、GND接地不用多說,IRQ是中斷才用到的此處沒有用到可以不接,其餘5個引腳接法如下表所示:
/* Typical pin layout used:
* -----------------------------------------------------------------------------------------
* MFRC522 Arino Arino Arino Arino Arino
* 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 SDA(SS) 10 53 D10 10 10
* 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
*/
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
4、程序代碼
此處測試的Arino型號是Arino Nano V3.0,其他型號請結合上表修改引腳號。
示例代碼讀取UID,並將其分別以十進制和十六進制輸出到串口,簡化版如下:
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN); //實例化類
// 初始化數組用於存儲讀取到的NUID
byte nuidPICC[4];
void setup() {
Serial.begin(9600);
SPI.begin(); // 初始化SPI匯流排
rfid.PCD_Init(); // 初始化 MFRC522
}
void loop() {
// 找卡
if ( ! rfid.PICC_IsNewCardPresent())
return;
// 驗證NUID是否可讀
if ( ! rfid.PICC_ReadCardSerial())
return;
MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
// 檢查是否MIFARE卡類型
if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&
piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
Serial.println("不支持讀取此卡類型");
return;
}
// 將NUID保存到nuidPICC數組
for (byte i = 0; i < 4; i++) {
nuidPICC[i] = rfid.uid.uidByte[i];
}
Serial.print("十六進制UID:");
printHex(rfid.uid.uidByte, rfid.uid.size);
Serial.println();
Serial.print("十進制UID:");
printDec(rfid.uid.uidByte, rfid.uid.size);
Serial.println();
// 使放置在讀卡區的IC卡進入休眠狀態,不再重復讀卡
rfid.PICC_HaltA();
// 停止讀卡模塊編碼
rfid.PCD_StopCrypto1();
}
void printHex(byte *buffer, byte bufferSize) {
for (byte i = 0; i < bufferSize; i++) {
Serial.print(buffer[i] < 0x10 ? " 0" : "");
Serial.print(buffer[i], HEX);
}
}
void printDec(byte *buffer, byte bufferSize) {
for (byte i = 0; i < bufferSize; i++) {
Serial.print(buffer[i] < 0x10 ? " 0" : "");
Serial.print(buffer[i], DEC);
}
}
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
5、運行結果
依次將卡A、卡B、卡A放到RC522讀卡區,串口列印信息如下
㈢ 大師,請問我通過樹莓派usb串口接收到的數據怎樣能夠在桌面上顯示,並
如果和Arino連接的串口,必須始終處於打開的狀態。如果關閉重新打開,那麼,Arino就會重啟,這是Arino的Bootload里設置的功能。
如果你有足夠的能力,可以嘗試修改你對應的Arino板子的Bootload,使其不會重啟,當然這比較麻煩。當然,你也可以修改你在派上的程序,使其保持對埠的打開後的佔用,不要用完了就關閉,這樣也可以。
不過,看你說是用PHP調用的C程序,估計調用完了串口就會自動關閉,你需要重新設計你的調用了。