資料介紹
電路板如下圖:
組件
499 Adafruit 工業有限責任公司 |
x 1 |
ESP-WROOM-32 | x 1 |
描述
基于 RFID 的學生出勤監控系統
在教室里,時間被浪費在點名上,因為它是手動完成的。在這個提議的系統中,被授權的學生被賦予一個 RFID 標簽。通過將 RFID 標簽放在閱讀器上,學生或工作人員可以立即驗證他們的出勤情況。因此,存儲在該卡中的數據被稱為該人的身份/出勤。一旦學生將卡片放在 RFID 讀卡器前面,它就會讀取數據并與存儲的數據進行驗證。蜂鳴器會在掃描 RFID 標簽時發出蜂鳴聲。如果數據匹配,則它會在 LCD 上顯示一條消息,確認該學生的輸入,否則會顯示一條消息,拒絕出席。通過按下連接到微控制器的狀態按鈕,可以從該系統中檢索學生的出勤狀態。最后,他/她的日期和時間數據存儲在谷歌表格中。這個特定的谷歌表格顯示了日期、時間和 RFID 標簽中存儲的數據。因此,由于所有學生的出勤情況都直接存儲在數據庫中,因此節省了大量時間。它將產生一個實時考勤監控系統,供講師、校園管理人員和家長等各方訪問。
代碼
RFID入口代碼
阿杜諾
? |
#include |
? |
#include |
? | //-------------------------------------------------- |
? | //GPIO 0 --> D3 |
? | //GPIO 2 --> D4 |
? | const uint8_t RST_PIN = D3; |
? | const uint8_t SS_PIN = D4; |
? | int BUZZER = 2; |
? | //-------------------------------------------------- |
? | MFRC522 mfrc522(SS_PIN, RST_PIN); |
? | MFRC522::MIFARE_Key key; |
? | //-------------------------------------------------- |
? | /* Be aware of Sector Trailer Blocks */ |
? | int blockNum = 4; |
? | byte block_data[16]; |
? | /* Create array to read data from Block */ |
? | /* Length of buffer should be 4 Bytes |
? | more than the size of Block (16 Bytes) */ |
? | byte bufferLen = 18; |
? | byte readBlockData[18]; |
? | //-------------------------------------------------- |
? | MFRC522::StatusCode status; |
? | //-------------------------------------------------- |
? | ? |
? | ? |
? | ? |
? | void setup() |
? | { |
? | //------------------------------------------------------ |
? | //Initialize serial communications with PC |
? | Serial.begin(9600); |
? | //------------------------------------------------------ |
? | //Initialize SPI bus |
? | SPI.begin(); |
? | //------------------------------------------------------ |
? | //Initialize MFRC522 Module |
? | mfrc522.PCD_Init(); |
? | Serial.println("Scan a MIFARE 1K Tag to write data..."); |
? | //------------------------------------------------------ |
? | } |
? | ? |
? | ? |
? | ? |
? | /**************************************************************************************************** |
? | * loop() function |
? | ****************************************************************************************************/ |
? | void loop() |
? | { |
? | //------------------------------------------------------------------------------ |
? | /* Prepare the ksy for authentication */ |
? | /* All keys are set to FFFFFFFFFFFFh at chip delivery from the factory */ |
? | for (byte i = 0; i < 6; i++){ |
? | key.keyByte[i] = 0xFF; |
? | } |
? | //------------------------------------------------------------------------------ |
? | /* Look for new cards */ |
? | /* Reset the loop if no new card is present on RC522 Reader */ |
? | if ( ! mfrc522.PICC_IsNewCardPresent()){return;} |
? | //------------------------------------------------------------------------------ |
? | /* Select one of the cards */ |
? | if ( ! mfrc522.PICC_ReadCardSerial()) {return;} |
? | //------------------------------------------------------------------------------ |
? | Serial.print("\n"); |
? | Serial.println("**Card Detected**"); |
? | /* Print UID of the Card */ |
? | Serial.print(F("Card UID:")); |
? | for (byte i = 0; i < mfrc522.uid.size; i++){ |
? | Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "); |
? | Serial.print(mfrc522.uid.uidByte[i], HEX); |
? | } |
? | Serial.print("\n"); |
? | /* Print type of card (for example, MIFARE 1K) */ |
? | Serial.print(F("PICC type: ")); |
? | MFRC522::PICC_Type piccType = mfrc522.PICC_GetType(mfrc522.uid.sak); |
? | Serial.println(mfrc522.PICC_GetTypeName(piccType)); |
? | ? |
? | ------------------------------------------------------------------------------ |
? | blockNum =4; |
? | toBlockDataArray("211EC206"); //ID |
? | WriteDataToBlock(blockNum, block_data); |
? | ReadDataFromBlock(blockNum, readBlockData); |
? | dumpSerial(blockNum, readBlockData); |
? | ? |
? | blockNum =5; |
? | toBlockDataArray("Madhumithra"); //First Name |
? | WriteDataToBlock(blockNum, block_data); |
? | ReadDataFromBlock(blockNum, readBlockData); |
? | dumpSerial(blockNum, readBlockData); |
? | ? |
? | blockNum =6; |
? | toBlockDataArray("S"); //Last Name |
? | WriteDataToBlock(blockNum, block_data); |
? | ReadDataFromBlock(blockNum, readBlockData); |
? | dumpSerial(blockNum, readBlockData); |
? | ? |
? | blockNum =8; |
? | toBlockDataArray("Shanmugavel.M"); //Father Name |
? | WriteDataToBlock(blockNum, block_data); |
? | ReadDataFromBlock(blockNum, readBlockData); |
? | dumpSerial(blockNum, readBlockData); |
? | ? |
? | blockNum =9; |
? | toBlockDataArray("24-09-2003"); //Date of Birth |
? | WriteDataToBlock(blockNum, block_data); |
? | ReadDataFromBlock(blockNum, readBlockData); |
? | dumpSerial(blockNum, readBlockData); |
? | ? |
? | blockNum =10; |
? | toBlockDataArray("8526267629"); //Phone Number |
? | WriteDataToBlock(blockNum, block_data); |
? | ReadDataFromBlock(blockNum, readBlockData); |
? | dumpSerial(blockNum, readBlockData); |
? | ? |
? | blockNum =12; |
? | toBlockDataArray("Pollachi"); //Address |
? | WriteDataToBlock(blockNum, block_data); |
? | ReadDataFromBlock(blockNum, readBlockData); |
? | dumpSerial(blockNum, readBlockData); |
? | ? |
? | //tone(BUZZER, 1000, 1000); |
? | } |
? | ? |
? | ? |
? | ? |
? | /**************************************************************************************************** |
? | * Writ() function |
? | ****************************************************************************************************/ |
? | void WriteDataToBlock(int blockNum, byte blockData[]) |
? | { |
? | Serial.print("Writing data on block "); |
? | Serial.print(blockNum); |
? | //------------------------------------------------------------------------------ |
? | /* Authenticating the desired data block for write access using Key A */ |
? | status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, blockNum, &key, &(mfrc522.uid)); |
? | if (status != MFRC522::STATUS_OK){ |
? | Serial.print("Authentication failed for Write: "); |
? | Serial.println(mfrc522.GetStatusCodeName(status)); |
? | return; |
? | } |
? | //------------------------------------------------------------------------------ |
? | else { |
? | Serial.println("Authentication success"); |
? | } |
? | //------------------------------------------------------------------------------ |
? | /* Write data to the block */ |
? | status = mfrc522.MIFARE_Write(blockNum, blockData, 16); |
? | if (status != MFRC522::STATUS_OK) { |
? | Serial.print("Writing to Block failed: "); |
? | Serial.println(mfrc522.GetStatusCodeName(status)); |
? | return; |
? | } |
? | else |
? | {Serial.println("Data was written into Block successfully");} |
? | //------------------------------------------------------------------------------ |
? | } |
? | ? |
? | ? |
? | ? |
? | ? |
? | ? |
? | /**************************************************************************************************** |
? | * ReadDataFromBlock() function |
? | ****************************************************************************************************/ |
? | void ReadDataFromBlock(int blockNum, byte readBlockData[]) |
? | { |
? | Serial.print("Reading data from block "); |
? | Serial.println(blockNum); |
? | //------------------------------------------------------------------------------ |
? | /* Authenticating the desired data block for Read access using Key A */ |
? | status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, blockNum, &key, &(mfrc522.uid)); |
? | //------------------------------------------------------------------------------ |
? | if (status != MFRC522::STATUS_OK){ |
? | Serial.print("Authentication failed for Read: "); |
? | Serial.println(mfrc522.GetStatusCodeName(status)); |
? | return; |
? | } |
? | else { |
? | Serial.println("Authentication success"); |
? | } |
? | //------------------------------------------------------------------------------ |
? | /* Reading data from the Block */ |
? | status = mfrc522.MIFARE_Read(blockNum, readBlockData, &bufferLen); |
? | if (status != MFRC522::STATUS_OK){ |
? | Serial.print("Reading failed: "); |
? | Serial.println(mfrc522.GetStatusCodeName(status)); |
? | return; |
? | } |
? | else { |
? | Serial.println("Block was read successfully"); |
? | } |
? | //------------------------------------------------------------------------------ |
? | } |
? | ? |
? | ? |
? | ? |
? | /**************************************************************************************************** |
? | * dumpSerial() function |
? | ****************************************************************************************************/ |
? | void dumpSerial(int blockNum, byte blockData[]) |
? | { |
? | Serial.print("\n"); |
? | Serial.print("Data in Block:"); |
? | Serial.print(blockNum); |
? | Serial.print(" --> "); |
? | for (int j=0 ; j<16 ; j++){ |
? | Serial.write(readBlockData[j]); |
? | } |
? | Serial.print("\n");Serial.print("\n"); |
? | } |
? | ? |
? | ? |
? | /**************************************************************************************************** |
? | * dumpSerial() function |
? | ****************************************************************************************************/ |
? | void toBlockDataArray(String str) |
? | { |
? | byte len = str.length(); |
? | if(len > 16) len = 16; |
? | for (byte i = 0; i < len; i++) block_data[i] = str[i]; |
? | for (byte i = len; i < 16; i++) block_data[i] = ' '; |
? | } |
RFID發布代碼
阿杜諾
? |
#include |
? |
#include |
? |
#include |
? |
#include |
? |
#include |
? | ? |
? |
#include |
? |
#include |
? | LiquidCrystal_I2C lcd(0x27, 16, 2); |
? | //--------------------------------------------------------------------------------------------------------- |
? | // Enter Google Script Deployment ID: |
? | const char *GScriptId = "AKfycbwTtq4rcL8zUaB8rjExY9KYo26q_n0hVqkiEdjS9YEBtfRg5C80OWvEVK2Hv5YUEj8ivw"; |
? | //--------------------------------------------------------------------------------------------------------- |
? | // Enter network credentials: |
? | const char* ssid = "ECE"; |
? | const char* password = "62806280"; |
? | //--------------------------------------------------------------------------------------------------------- |
? | // Enter command (insert_row or append_row) and your Google Sheets sheet name (default is Sheet1): |
? | String payload_base ="{"command": "insert_row", "sheet_name": "Sheet1", "values": "; |
? | String payload = ""; |
? | //--------------------------------------------------------------------------------------------------------- |
? | // Google Sheets setup (do not edit) |
? | const char* host= "script.google.com"; |
? | const int httpsPort = 443; |
? | const char* fingerprint = ""; |
? | String url = String("/macros/s/") + GScriptId + "/exec"; |
? | HTTPSRedirect* client = nullptr; |
? | //------------------------------------------------------------ |
? | // Declare variables that will be published to Google Sheets |
? | String student_id; |
? | //------------------------------------------------------------ |
? | int blocks[] = {4,5,6,8,9, 10, 12}; |
? | #define total_blocks(sizeof(blocks) / sizeof(blocks[0])) |
? | //------------------------------------------------------------ |
? | #define RST_PIN0//D3 |
? | #define SS_PIN 2//D4 |
? | #define BUZZER 4//D2 |
? | //------------------------------------------------------------ |
? | MFRC522 mfrc522(SS_PIN, RST_PIN); |
? | MFRC522::MIFARE_Key key; |
? | MFRC522::StatusCode status; |
? | //------------------------------------------------------------ |
? | /* Be aware of Sector Trailer Blocks */ |
? | int blockNum = 2; |
? | /* Create another array to read data from Block */ |
? | /* Legthn of buffer should be 2 Bytes more than the size of Block (16 Bytes) */ |
? | byte bufferLen = 18; |
? | byte readBlockData[18]; |
? | //------------------------------------------------------------ |
? | ? |
? | /**************************************************************************************************** |
? | * setup Function |
? | ****************************************************************************************************/ |
? | void setup() { |
? | //---------------------------------------------------------- |
? | Serial.begin(9600); |
? | delay(10); |
? | Serial.println('\n'); |
? | //---------------------------------------------------------- |
? | SPI.begin(); |
? | //---------------------------------------------------------- |
? | //initialize lcd screen |
? | lcd.init(); |
? | // turn on the backlight |
? | lcd.backlight(); |
? | lcd.clear(); |
? | lcd.setCursor(0,0); //col=0 row=0 |
? | lcd.print("Connecting to"); |
? | lcd.setCursor(0,1); //col=0 row=0 |
? | lcd.print("WiFi..."); |
? | //---------------------------------------------------------- |
? | // Connect to WiFi |
? | WiFi.begin(ssid, password); |
? | Serial.print("Connecting to "); |
? | Serial.print(ssid); Serial.println(" ..."); |
? | ? |
? | while (WiFi.status() != WL_CONNECTED) { |
? | delay(1000); |
? | Serial.print("."); |
? | } |
? | Serial.println('\n'); |
? | Serial.println("Connection established!"); |
? | Serial.print("IP address:\t"); |
? | Serial.println(WiFi.localIP()); |
? | //---------------------------------------------------------- |
? | // Use HTTPSRedirect class to create a new TLS connection |
? | client = new HTTPSRedirect(httpsPort); |
? | client->setInsecure(); |
? | client->setPrintResponseBody(true); |
? | client->setContentTypeHeader("application/json"); |
? | //---------------------------------------------------------- |
? | lcd.clear(); |
? | lcd.setCursor(0,0); //col=0 row=0 |
? | lcd.print("Connecting to"); |
? | lcd.setCursor(0,1); //col=0 row=0 |
? | lcd.print("Google "); |
? | delay(5000); |
? | //---------------------------------------------------------- |
? | Serial.print("Connecting to "); |
? | Serial.println(host); |
? | //---------------------------------------------------------- |
? | // Try to connect for a maximum of 5 times |
? | bool flag = false; |
? | for(int i=0; i<5; i++){ |
? | int retval = client->connect(host, httpsPort); |
? | //************************************************* |
? | if (retval == 1){ |
? | flag = true; |
? | String msg = "Connected. OK"; |
? | Serial.println(msg); |
? | lcd.clear(); |
? | lcd.setCursor(0,0); //col=0 row=0 |
? | lcd.print(msg); |
? | delay(2000); |
? | break; |
? | } |
? | //************************************************* |
? | else |
? | Serial.println("Connection failed. Retrying..."); |
? | //************************************************* |
? | } |
? | //---------------------------------------------------------- |
? | if (!flag){ |
? | //____________________________________________ |
? | lcd.clear(); |
? | lcd.setCursor(0,0); //col=0 row=0 |
? | lcd.print("Connection fail"); |
? | //____________________________________________ |
? | Serial.print("Could not connect to server: "); |
? | Serial.println(host); |
? | delay(5000); |
? | return; |
? | //____________________________________________ |
? | } |
? | //---------------------------------------------------------- |
? | delete client;// delete HTTPSRedirect object |
? | client = nullptr; // delete HTTPSRedirect object |
? | //---------------------------------------------------------- |
? | } |
? | ? |
? | /**************************************************************************************************** |
? | * loop Function |
? | ****************************************************************************************************/ |
? | void loop() { |
? | //---------------------------------------------------------------- |
? | static bool flag = false; |
? | if (!flag){ |
? | client = new HTTPSRedirect(httpsPort); |
? | client->setInsecure(); |
? | flag = true; |
? | client->setPrintResponseBody(true); |
? | client->setContentTypeHeader("application/json"); |
? | } |
? | if (client != nullptr){ |
? | if (!client->connected()) |
? | {client->connect(host, httpsPort);} |
? | } |
? | else{Serial.println("Error creating client object!");} |
? | //---------------------------------------------------------------- |
? | lcd.clear(); |
? | lcd.setCursor(0,0); //col=0 row=0 |
? | lcd.print("Scan your Tag"); |
? | ? |
? | /* Initialize MFRC522 Module */ |
? | mfrc522.PCD_Init(); |
? | /* Look for new cards */ |
? | /* Reset the loop if no new card is present on RC522 Reader */ |
? | if ( ! mfrc522.PICC_IsNewCardPresent()) {return;} |
? | /* Select one of the cards */ |
? | if ( ! mfrc522.PICC_ReadCardSerial()) {return;} |
? | /* Read data from the same block */ |
? | Serial.println(); |
? | Serial.println(F("Reading last data from RFID...")); |
? | //---------------------------------------------------------------- |
? | String values = "", data; |
? | /* |
? | //creating payload - method 1 |
? | //---------------------------------------------------------------- |
? | ReadDataFromBlock(blocks[0], readBlockData); //student id |
? | data = String((char*)readBlockData); data.trim(); |
? | student_id = data; |
? | //---------------------------------------------------------------- |
? | ReadDataFromBlock(blocks[1], readBlockData); //first name |
? | data = String((char*)readBlockData); data.trim(); |
? | first_name = data; |
? | //---------------------------------------------------------------- |
? | ReadDataFromBlock(blocks[2], readBlockData); //last name |
? | data = String((char*)readBlockData); data.trim(); |
? | last_name = data; |
? | //---------------------------------------------------------------- |
? | ReadDataFromBlock(blocks[3], readBlockData); //phone number |
? | data = String((char*)readBlockData); data.trim(); |
? | phone_number = data; |
? | //---------------------------------------------------------------- |
? | ReadDataFromBlock(blocks[4], readBlockData); //address |
? | data = String((char*)readBlockData); data.trim(); |
? | address = data; data = ""; |
? | //---------------------------------------------------------------- |
? | values = """ + student_id + ","; |
? | values += first_name + ","; |
? | values += last_name + ","; |
? | values += phone_number + ","; |
? | values += address + ""}"; |
? | //----------------------------------------------------------------*/ |
? | //creating payload - method 2 - More efficient |
? | for (byte i = 0; i < total_blocks; i++) { |
? | ReadDataFromBlock(blocks[i], readBlockData); |
? | //************************************************* |
? | if(i == 0){ |
? | data = String((char*)readBlockData); |
? | data.trim(); |
? | student_id = data; |
? | values = """ + data + ","; |
? | } |
? | //************************************************* |
? | else if(i == total_blocks-1){ |
? | data = String((char*)readBlockData); |
? | data.trim(); |
? | values += data + ""}"; |
? | } |
? | //************************************************* |
? | else{ |
? | data = String((char*)readBlockData); |
? | data.trim(); |
? | values += data + ","; |
? | } |
? | } |
? | //---------------------------------------------------------------- |
? | // Create json object string to send to Google Sheets |
? | // values = """ + value0 + "," + value1 + "," + value2 + ""}" |
? | payload = payload_base + values; |
? | //---------------------------------------------------------------- |
? | lcd.clear(); |
? | lcd.setCursor(0,0); //col=0 row=0 |
? | lcd.print("Publishing Data"); |
? | lcd.setCursor(0,1); //col=0 row=0 |
? | lcd.print("Please Wait..."); |
? | //---------------------------------------------------------------- |
? | // Publish data to Google Sheets |
? | Serial.println("Publishing data..."); |
? | Serial.println(payload); |
? | if(client->POST(url, host, payload)){ |
? | // do stuff here if publish was successful |
? | lcd.clear(); |
? | lcd.setCursor(0,0); //col=0 row=0 |
? | lcd.print("Student ID: "+student_id); |
? | lcd.setCursor(0,1); //col=0 row=0 |
? | lcd.print("Present"); |
? | } |
? | //---------------------------------------------------------------- |
? | else{ |
? | // do stuff here if publish was not successful |
? | Serial.println("Error while connecting"); |
? | lcd.clear(); |
? | lcd.setCursor(0,0); //col=0 row=0 |
? | lcd.print("Failed."); |
? | lcd.setCursor(0,1); //col=0 row=0 |
? | lcd.print("Try Again"); |
? | } |
? | //---------------------------------------------------------------- |
? | // a delay of several seconds is required before publishing again |
? | delay(5000); |
? | tone(BUZZER, 1000, 1000); |
? | } |
? | ? |
? | ? |
? | /**************************************************************************************************** |
? | * |
? | ****************************************************************************************************/ |
? | /**************************************************************************************************** |
? | * ReadDataFromBlock() function |
? | ****************************************************************************************************/ |
? | void ReadDataFromBlock(int blockNum, byte readBlockData[]) |
? | { |
? | //---------------------------------------------------------------------------- |
? | /* Prepare the ksy for authentication */ |
? | /* All keys are set to FFFFFFFFFFFFh at chip delivery from the factory */ |
? | for (byte i = 0; i < 6; i++) { |
? | key.keyByte[i] = 0xFF; |
? | } |
? | //---------------------------------------------------------------------------- |
? | /* Authenticating the desired data block for Read access using Key A */ |
? | status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, blockNum, &key, &(mfrc522.uid)); |
? | //----------------------------------------------------------------------------s |
? | if (status != MFRC522::STATUS_OK){ |
? | Serial.print("Authentication failed for Read: "); |
? | Serial.println(mfrc522.GetStatusCodeName(status)); |
? | return; |
? | } |
? | //---------------------------------------------------------------------------- |
? | else { |
? | Serial.println("Authentication success"); |
? | } |
? | //---------------------------------------------------------------------------- |
? | /* Reading data from the Block */ |
? | status = mfrc522.MIFARE_Read(blockNum, readBlockData, &bufferLen); |
? | if (status != MFRC522::STATUS_OK) { |
? | Serial.print("Reading failed: "); |
? | Serial.println(mfrc522.GetStatusCodeName(status)); |
? | return; |
? | } |
? | //---------------------------------------------------------------------------- |
? | else { |
? | readBlockData[16] = ' '; |
? | readBlockData[17] = ' '; |
? | Serial.println("Block was read successfully"); |
? | } |
? | //---------------------------------------------------------------------------- |
? | } |
?
?
?
- 基于GPS/RFID、GPRS技術的學生安全定位系統
- 基于RFID模塊的在線考勤系統 0次下載
- 基于RFID的訪問控制和監控系統
- 基于RFID的智能安防閉鎖系統設計方案 41次下載
- 時隙ALOHA法對RFID系統防碰撞問題中的應用說明 5次下載
- 如何進行RFID中間件讀寫器管理的倉庫管理系統 21次下載
- RFID 學生考勤系統的詳細資料介紹免費下載 46次下載
- 2017年江西省大學生電子設計制作現場(28屆)賽題 22次下載
- 基于RFID工業炸藥生產過程實時監控系統的開發與實現許亮 4次下載
- 基于ZigBee和RFID技術的冷鏈無線監控系統張學龍 1次下載
- 基于RFID技術的核心物品實時監控管理系統 13次下載
- 基于RFID的醫院廢物監控管理系統 34次下載
- 基于RFID的學生考勤系統設計
- 基于CAN總線的負荷監控系統的設計與開發
- 人員出勤表
- RFID系統的基本組成 rfid系統的工作原理 4221次閱讀
- 基于SSM的學生管理系統 1097次閱讀
- 基于SSM的學生管理系統 954次閱讀
- 運用RFID技術的學生考勤系統設計 2812次閱讀
- 使用RFID標簽的安防監控系統設計 1357次閱讀
- RFID倉儲管理系統的特點 1624次閱讀
- RFID在牧場中是如何應用的 905次閱讀
- 基于rfid的車輛監控系統如何來設計實現 1793次閱讀
- 走班考勤系統是如何發揮RFID的特長的 1371次閱讀
- 基于RFID技術的MES系統設計方案 3353次閱讀
- rfid系統的工作原理_rfid系統的組成 1.4w次閱讀
- 基于RFID監控系統的醫療廢物信息化管理方案 3967次閱讀
- 基于RFID技術的嵌入式系統設計實現方案分析 768次閱讀
- 智慧校園安全設備視頻監控檢測系統方案 2419次閱讀
- 基于ZigBee技術的有源RFID系統 2204次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多