0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何制作一個(gè)Arduino門鎖

454398 ? 來源:工程師吳畏 ? 2019-08-21 17:43 ? 次閱讀

步驟1:組件

以下是我們用于設(shè)置的組件,您可以混合/匹配各種型號(hào)。

以下組件可以可以從各種賣家那里購買,例如Aliexpress或eBay。

我們用于成功的組件如下:

Arduino MEGA(2560R3)

伺服(MG996R)

SD卡模塊(無型號(hào))

實(shí)時(shí)時(shí)鐘( DS3231)

藍(lán)牙(hc-05)

RFID(RC522)

鍵盤4 * 4(膜基質(zhì))

LCD 16 * 2(1602A)

RFID標(biāo)簽

SD

電阻(2k和220)

LED(綠色,紅色)

開關(guān)

電位計(jì)

安裝模塊的SD卡

Android手機(jī)

更完整的清單附上金額,模型和丹麥供應(yīng)商的鏈接。

第2步:它應(yīng)該如何工作

如何制作一個(gè)Arduino門鎖

當(dāng)?shù)谝淮谓油娫磿r(shí),門鎖通過鎖定開始,然后“空閑”,等待任何用戶輸入。

鍵盤

如果按下鍵盤,它開始按下存儲(chǔ)的密碼檢查按下的鍵。

如果按下錯(cuò)誤的鍵,則會(huì)增加錯(cuò)誤的計(jì)數(shù)器。

當(dāng)按下4位數(shù)時(shí),它將檢查錯(cuò)誤的計(jì)數(shù)器,如果超過‘ 0’液晶顯示屏打印“錯(cuò)誤的P “如果按下了4個(gè)數(shù)字并且錯(cuò)誤的計(jì)數(shù)器為‘0’,LCD將打印”密碼已接受“并且鎖定解鎖。

如果按”#“或在任何此過程中‘*’將重置過程和計(jì)數(shù)器值。

藍(lán)牙

如果收到藍(lán)牙數(shù)據(jù),它會(huì)讀取接收的數(shù)據(jù) - 如果此數(shù)據(jù)鎖定為“1”鎖定,它還會(huì)將“解鎖”發(fā)送回藍(lán)牙設(shè)備(Android手機(jī))

RFID

RFID模塊會(huì)掃描是否有任何附近的可讀標(biāo)簽,如果沒有它只是跳過。如果附近有可讀標(biāo)簽 - 它會(huì)讀取標(biāo)簽值并將其與我們預(yù)定義的標(biāo)簽進(jìn)行匹配,如果不匹配,則只需在LCD上打印“未授權(quán)”。如果標(biāo)簽匹配,則打印“歡迎”并解鎖門。它還會(huì)將日期和時(shí)間(包括標(biāo)簽持有者的名稱)保存到SD卡上的文本文件中。

解鎖后當(dāng)鎖定解鎖時(shí),它會(huì)設(shè)置一個(gè)步驟,這用于檢查門何時(shí)打開/關(guān)閉,以便鎖再次接合。它基本上使用3個(gè)步驟來跟蹤它的位置,操作是通過當(dāng)前的簡單開關(guān)完成的。

成功解鎖也會(huì)點(diǎn)亮綠色指示燈,就像紅色指示燈在當(dāng)前鎖定時(shí)會(huì)點(diǎn)亮一樣。

我們?cè)谏厦娓缴狭艘粋€(gè)流程圖,簡化了這一點(diǎn)。

步驟3:接線和電氣元件設(shè)置

我們利用Fritzing軟件繪制了我們的布線圖。

為了使Fritzing原理圖更容易,我們還制作了一個(gè)IO/Arduino超級(jí)引腳列表 - 這些都列在我們的文件中。

在上面的電氣圖中,你將找到組件之間的所有必要連接,包括布線概述。

由于我們使用了相當(dāng)多的電線和Arduino底部的雙排線,因此很難看到線點(diǎn)有了這樣的質(zhì)量,我們建議下載圖片并放大。

正如你所看到的那樣,我們只為面包板連接了一些東西,主要是電源(5 V)和GND,但這并不是反映我們使用面包板的真實(shí)世界測(cè)試設(shè)置持有除SD卡和鍵盤之外的大多數(shù)模塊,這也將在后面的步驟中顯示。

另請(qǐng)注意,我們正在使用電位計(jì)來控制LCD的亮度。

從左到右列出“較大”的物體/模塊:伺服,DS3231,HC-05,面包板+ Arduino,RC522,SD卡,LCD,鍵盤。

在上圖中,+導(dǎo)線為紅色為5 V,棕色為3.3 V, - (GND)導(dǎo)線為藍(lán)色。

第4步:編程Arduino

所以編程Arduino本身 - 這就是樂趣開始的地方 - 我們?cè)诖a的不同部分附上了5張圖片。這是我們的測(cè)試設(shè)置中的代碼,我們?cè)诖a中對(duì)串行打印進(jìn)行了大量的故障排除,它們對(duì)于查看我們遇到的問題/我們做錯(cuò)了什么非常有幫助。

代碼已被壓縮更好地適應(yīng)圖片。

上面的第一張圖片是我們正在初始化和全局變量:

以下行:

1初始化軟件序列,包括設(shè)置引腳所以我們不必使用HW串口。

4初始化實(shí)時(shí)時(shí)鐘模塊

7-9定義引腳,包括RFID模塊的從選擇引腳,并創(chuàng)建實(shí)例。

12 -13定義SD卡模塊的從機(jī)選擇引腳,同時(shí)設(shè)置文件變量

16-28定義(映射)鍵盤布局,行和列,同時(shí)設(shè)置使用的引腳。

31定義用于LCD的引腳。

33-37聲明變量。

40定義伺服電機(jī)。

43我們的字符串變量包含默認(rèn)密碼。

44-45變量適用于LCD位置和鍵盤前置SSE的。

上面的第二張圖片是對(duì)鍵盤進(jìn)行編程:

3-4是用于跟蹤鍵盤上按下的內(nèi)容的變量以及“鍵”密碼。

6-12正在打印鍵按下LCD后,延遲使代碼等待幾秒鐘,然后按下按鍵消失在液晶顯示屏上。

如果按下‘*’或‘?!?,應(yīng)該會(huì)發(fā)生什么情況 - 在我們的例子中如果按下的鍵與我們預(yù)定義的密碼匹配,會(huì)發(fā)生什么情況。

如果按下的鍵與我們預(yù)定義的密碼不符,則為25-29。如果發(fā)生的話,會(huì)發(fā)生什么情況。我們達(dá)到了密碼的最大長度(4位數(shù)),我們按鍵錯(cuò)誤.46-60,最后如果我們達(dá)到了最大長度且輸入沒有錯(cuò)誤

第三上面的圖片是藍(lán)牙編程:這里我們檢查串口上是否有來自藍(lán)牙的數(shù)據(jù)。由于我們只是從藍(lán)牙處理一個(gè)簡單的‘1’代碼這里從序列中讀取并將其放入我們的變量中e。

4-8如果藍(lán)牙連接有‘1’會(huì)發(fā)生什么,這里我們還會(huì)將“Unlocked”發(fā)回藍(lán)牙串口。

第四張圖片以上是編程RFID:4-5我們正在檢查附近是否有卡。

8-9從卡上讀取值。

12-18將RFID值添加到我們的字符串變量。

20-21基本上使我們的變量大寫的內(nèi)容。

22我們正在檢查變量是否符合我們的預(yù)定義。

24-25選擇我們的奴隸,我們需要SD卡模塊。

27我們打開SD卡上的文件,以便接收打印數(shù)據(jù)。

如果我們的可變數(shù)據(jù)與我們預(yù)定義的任何一個(gè)匹配,我們?cè)贚CD上打印名稱,并將日期和時(shí)間以及名稱打印到SD卡上的日志。

70-72調(diào)用功能“setlocked”并將其設(shè)置為false - 解鎖鎖定。

如果標(biāo)簽值沒有,則為74-78不符合我們的預(yù)定義。

上面的第五張圖片是我們實(shí)際控制伺服的功能:如果是setL,則為3調(diào)用ocked(true)。

5-10安裝舵機(jī)并給它一個(gè)位置,基本上鎖門。

如果設(shè)置了setLocked(假),則為12連接伺服并給它一個(gè)位置去解鎖門。

步驟5:編程Android手機(jī)

我們已經(jīng)使用簡單易用的基于Web的MIT App Inventor 2來編寫Android手機(jī)。

之前沒有使用App Inventor,我們發(fā)現(xiàn)它非常簡單直接使用 - 因?yàn)樗拖衿磮D一樣。然而,我們確實(shí)遵循了各種基本功能指南。

第一張照片是我們簡單的應(yīng)用程序最終看起來的方式 - 正如您在右側(cè)看到的那樣,有兩個(gè)按鈕,其中一個(gè)是列表。單擊頂部的藍(lán)牙橫幅顯示手機(jī)的藍(lán)牙列表,點(diǎn)擊HC-05將手機(jī)連接到Arduino藍(lán)牙模塊。

然后是解鎖按鈕 - 它按照說法執(zhí)行操作,解鎖門,我們無法鎖門,因?yàn)槿绻愦蜷_它,它會(huì)在關(guān)閉時(shí)自動(dòng)鎖定。

第一行文字只顯示你是否連接 - 在實(shí)際應(yīng)用中根據(jù)連接,它是紅色或藍(lán)色。

第二個(gè)顯示鎖定的當(dāng)前狀態(tài)。

第二張圖片是我們的塊設(shè)計(jì)(拼圖) - 應(yīng)用實(shí)際上做了什么。

從左上角開始,我們基本上告訴它在點(diǎn)擊藍(lán)牙橫幅時(shí)要做什么。

第二部分是我們想要在彈出窗口中連接到所選設(shè)備。

T第三部分是我們?cè)邳c(diǎn)擊解鎖按鈕時(shí)想要做的 - 我們只是發(fā)送49,因?yàn)檫@是用ASCII發(fā)送的,數(shù)字‘49’等于‘1’ - 所以我們實(shí)際上發(fā)送一個(gè)‘1’到Arduino。

繼續(xù)到圖片的右側(cè),我們使用時(shí)鐘計(jì)時(shí)器來更新(有點(diǎn)實(shí)時(shí))連接文本,所以如果連接被刪除,那么文本就會(huì)顯示。/》我們也使用這個(gè)時(shí)鐘發(fā)送我們的鎖定/解鎖狀態(tài),這在啟動(dòng)應(yīng)用程序時(shí)拋出“無連接的藍(lán)牙設(shè)備”的缺點(diǎn),但我們更喜歡這個(gè)狀態(tài)。

步驟6:3D打印

如前所述,我們使用了一些3D打印部件用于將伺服系統(tǒng)安裝到鎖舌上。

我們使用的打印機(jī)是Ultimaker 2+,使用0.4 mm黑色PLA。我們使用的軟件是Fusion 360編輯設(shè)計(jì)和Cura來制作它適合Ultimaker。它很簡單,由兩個(gè)組成事情,一個(gè)是死鎖附件,第二個(gè)是伺服的安裝座 - 包括一個(gè)用于LED的孔,如果需要,還有一個(gè)用于手動(dòng)操作按鈕的方孔。

deadbolt附件需要三個(gè)多小時(shí)才能打印,伺服支架/外殼需要超過21個(gè)小時(shí)才能打印出來。

Hacker Shack對(duì)死鎖的3D設(shè)計(jì)及其鏈接的致謝:https://bit.ly/2YQ4c97

第7步:測(cè)試設(shè)置

因?yàn)槲覀兌际蔷幊藺rduino的新手 - 只是因?yàn)樵趯⑺袞|西焊接在一起并可能放在一起之前先測(cè)試一下是個(gè)好主意在一個(gè)漂亮的盒子里,我們利用大型面包板將大多數(shù)東西連在一起。然而,這確實(shí)使得所有接線看起來都很麻煩。

確保一切都按照我們想要的方式工作后,剩下的就是將伺服裝置安裝到3D打印機(jī)適配器并連接使用螺絲將伺服系統(tǒng)安裝到外殼上。

你可能需要使用墊片才能使它適合你的鎖舌。

由于這是我們學(xué)期的一個(gè)項(xiàng)目,我們實(shí)際上并沒有把東西焊在一起,因?yàn)槲覀兾蚁M院罂梢詫⑽覀兊牧慵糜诓煌捻?xiàng)目 - 但是它可以使它更好看,能夠移除大量的布線。

步驟8:測(cè)試設(shè)置 - Youtube

第9步:完整代碼

//Libraries used

#include //LCD MODULE

#include //Keypad MODULE

#include《 MFRC522.h》 //RFID MODULE

#include //RFID AND SD CARD MODULES

#include //SD CARD MODULE

#include //RTC MODULE

#include //Servo MODULE

#include //Software Serial

SoftwareSerial mySerial(10, 11); //SoftSerial initialize. pin number RX, TX

//Realtime clock hardware interface initialize

DS3231 rtc(SDA, SCL);

//RFID pins same instance

#define SSRFID_PIN 53 //SS PIN for RFID //SS PIN (Slave Select)

#define RSTRFID_PIN 47 //RST PIN

MFRC522 mfrc522(SSRFID_PIN, RSTRFID_PIN); //instance

//SD Card

#define SSSD_PIN 54 //SS PIN (Slave Select)

File myFile; //File being used

//KEYPAD Grid

const byte ROWS = 4; //keypad Rows

const byte COLS = 4; //keypad Columns

//layout af keypad

char hexaKeys[ROWS][COLS] = {

{‘1’, ‘2’, ‘3’, ‘A’},

{‘4’, ‘5’, ‘6’, ‘B’},

{‘7’, ‘8’, ‘9’, ‘C’},

{‘*’, ‘0’, ‘#’, ‘D’}

};

byte rowPins[ROWS] = {31, 33, 35, 37}; //pinout Rows

byte colPins[COLS] = {39, 41, 43, 45}; //pinout Columns

Keypad keyPad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

//LCD RELATED

LiquidCrystal lcd(22, 23, 24, 25, 26, 27); //LCD pins

int redPin = 2; //Red LED Pin (No Access)

int greenPin = 3; //Green LED Pin (Access Granted)

int doorPin = 5; //Door Magnet (HIGH if door is closed)

int steps = 0; //Step counter for door + locking control

int state = 0; //Bluetooth state

//Servo (needed in setlocked function)

Servo servo_Motor;

String password = “1234”; //Keypad Default Password

int position = 0; // Variable for Cursor(LCD) and Password position(0-3 = 4)

int wrong = 0; // Variabel for wrong password

//RFID

//1A 83 57 D3 = Blue RFID Tag

//52 0B C6 1F = White Creditcard Tag

void setup() {

Serial.begin(9600); //Start the Serial Function(to communicate over USB

rtc.begin(); //Start the Real Time Clock

mySerial.begin(9600); //Bluetooth Serial

pinMode(doorPin, INPUT_PULLUP);

//SD CARD

pinMode(46, OUTPUT); //Changes pin 46 to output mode (SS pin)

digitalWrite(46, HIGH); //Has to be high from startup since we‘re using RFID

//RFID

pinMode(53, OUTPUT); //Changes pin 53 to output mode (SS pin)

digitalWrite(53, LOW); //Has to be low from startup so RFID is used.

SPI.begin(); //Start the SPI (Serial Peripheral Interface) for RFID&SDCard

mfrc522.PCD_Init(); //Start the RFID

if (!SD.begin(46)) { //Start the SD library and Card (! for invert)

while (1);

}

Serial.println(“initialization done.”); //Troubleshoot Serial

lcd.begin(16, 2); //LCD Size

lcd.clear();

servo_Motor.attach(6); //Attach Servo to pin 6(PWM)

setLocked(true); //Locks the first time during setup

}

void loop() {

lcd.clear(); //Clears the LCD

lcd.print(“Enter Password:”); //Prints on the LCD

delay(100);

//Keypad

char pressed = keyPad.getKey(); //Variable for pressed on keypad

String key[4]; //Variable

if (pressed) //If keypad pressed

{

lcd.clear(); //Clear LCD

lcd.print(“Enter Password:”); //Print LCD

lcd.setCursor(position, 1); //Sets the cursor to our variable on the “second row”

lcd.print(pressed); //Prints the pressed key

delay(200);

if (pressed == ’*‘ || pressed == ’#‘) //If Star or Square is pressed

{

position = 0; //Reset position

setLocked(true);//Set locked

lcd.clear(); //Clear LCD

}

else if (pressed == password[position]) //Else if the pressed key matches the password position

{

key[position] = pressed; //Adds the pressed to the key variable

position++; //adds 1 to position

}

else if (pressed != password[position] ) //Else if pressed key doesnt match password position

{

wrong++; //Add 1 to wrong variable

position ++; //Add 1 to position

}

if (position == 4) //If position = 4 (password is max 4)

{

if ( wrong 》 0) //if the wrong variable is above zero

{

wrong = 0; //Reset wrong variable

position = 0; //Reset position variable

lcd.clear(); //Clear LCD

lcd.print(“WRONG”); //print

lcd.setCursor(5, 1); //sets cursor position LCD

lcd.print(“PASSWORD”); //print

delay(1000);

setLocked(true); //set locked

}

else if (position == 4 && wrong == 0) //If position is 4 and wrong variable is zero

{

position = 0; //reset position variable

wrong = 0; //reset wrong variable

lcd.clear();

lcd.print(“PASSWORD”);

lcd.setCursor(6, 1);

lcd.print(“ACCEPTED”);

delay(1000);

lcd.clear();

lcd.print(“Door Open”);

setLocked(false); //Unlocking

steps = 1; //sets step to 1

}

}

}

//Bluetooth

else if (mySerial.available() 》 0) { // Checks whether data is comming from the serial port

state = mySerial.read(); // Reads the data from the serial port

if (state == ’1‘) {

lcd.clear(); //Clear LCD

lcd.print(“Bluetooth Open”); //LCD print

setLocked(false); //unlocking

steps = 1; //sets steps so door autolock works

mySerial.println(“Unlocked”); // Send back the String “Unlocked”

}

}

//RFID

else {

//Wait for a card

if ( ! mfrc522.PICC_IsNewCardPresent()) {

return;

}

//Read Card value

if ( ! mfrc522.PICC_ReadCardSerial()) {

return;

}

String content = “”; //Variable for UID from tag

for (byte i = 0; i 《 mfrc522.uid.size; i++) {

content.concat(String(mfrc522.uid.uidByte[i] 《 0x10 ? “ 0” : “ ”));

content.concat(String(mfrc522.uid.uidByte[i], HEX));

}

//Compare RFID Tags and do XX

content.toUpperCase();

content = content.substring(1);

if ((content == “1A 83 57 D3”) || (content == “52 0B C6 1F”)) { //If variable content matches either tag

digitalWrite(53, HIGH); //SS Pin RFID HIGH to not use

digitalWrite(46, LOW); //SS pin SD Card LOW to use

myFile = SD.open(“l(fā)og.txt”, FILE_WRITE); //Opens the file on SDCARD

if (content == “1A 83 57 D3”) { //If variable matches

lcd.clear();

lcd.setCursor(3, 0);

lcd.print(“Velkommen”); //Print welcome LCD

lcd.setCursor(4, 1);

lcd.print(“Flemming”); //print name LCD

//SD START

myFile.print(rtc.getDateStr()); //Prints the RTC Date to SD card

myFile.print(“ ”); //Prints a space

myFile.print(rtc.getTimeStr()); //Prints RTC Time HH/MM/SS

myFile.print(“ ”); //Prints a space

myFile.println(“Flemming”); //Prints the name entering

myFile.close(); //Closes the file opened on the SD Card

digitalWrite(46, HIGH); //SS pin SD card High

digitalWrite(53, LOW); //SS pin RFID Low

}

if (content == “52 0B C6 1F”) {

lcd.clear();

lcd.setCursor(3, 0);

lcd.print(“Velkommen”);

lcd.setCursor(4, 1);

lcd.print(“Mikkel”);

myFile.print(rtc.getDateStr()); //Prints the RTC Date to SD card

myFile.print(“ ”); //Prints a space

myFile.print(rtc.getTimeStr()); //Prints RTC Time HH/MM/SS

myFile.print(“ ”); //Prints a space

myFile.println(“Mikkel”); //Prints the name entering

myFile.close(); //Closes the file opened on the SD Card

digitalWrite(46, HIGH); //SS pin SD card High

digitalWrite(53, LOW); //SS pin RFID Low

}

setLocked(false); //Unlocking

steps = 1; //Setting step 1

}

else { //If RFID Tag doesnt match

lcd.clear(); //Clear LCD

lcd.print(“Not Authorized”); //Print LCD

delay(2000);

}

}

//Door Magnet, closed, open, closed (For relocking)

while (steps 》 0) { //If steps is above 0

if ((steps == 1) && (digitalRead(doorPin) == HIGH )) { //If step = 1 read the doorpin if high (closed) continue

steps = 2; //Set step 2

}

if ((steps == 2) && (digitalRead(doorPin) == LOW)) { //if step = 2 read the doorpin if low (open)

steps = 3; //set step 3

}

if ((steps == 3) && (digitalRead(doorPin) == HIGH)) { //If step = 3 read the doorpin if high (closed) continue

setLocked(true); //set locked

lcd.clear(); //Clear LCD

lcd.print(“Enter Password:”); //LCD print

mySerial.println(“l(fā)ocked”); // Send back the String “l(fā)ocked”

steps = 0; //set steps = 0

}

}

} //loop end

void setLocked(int locked) //function for the doorlock

{

if (locked) //if locked is true, lock

{

digitalWrite(redPin, HIGH); //Red on

digitalWrite(greenPin, LOW); //Green off

servo_Motor.attach(6); //attach servo to pin 6

servo_Motor.write(150); //write Servo position

delay(1000);

servo_Motor.detach(); //deattach servo

}

else //if locked is false, unlock

{

digitalWrite(redPin, LOW); //Red off

digitalWrite(greenPin, HIGH); //Green on

servo_Motor.attach(6); //Attach Servo to pin 6

servo_Motor.write(0); //write servo position

delay(1000);

servo_Motor.detach(); //Deattach Servo

}

}

第10步:最后的想法

對(duì)于我們自動(dòng)化的第二個(gè)學(xué)期來說,這是一個(gè)有趣的小項(xiàng)目。

好處:

有趣和實(shí)用的項(xiàng)目,我們必須嘗試使用MIT App Inventor 2構(gòu)建一個(gè)簡單的應(yīng)用程序,并使用Ultimaker 3D打印機(jī),同時(shí)擺弄圍繞面包板上的所有電線,使代碼實(shí)際工作 - 它確實(shí)給出了基于文本的編程如何工作的一些見解。

缺點(diǎn):

可能不是最安全(沒有)智能鎖 - 也不會(huì)留下最小的足跡 - 即使是Arduino和面包板都非常大。

可能的未來升級(jí):

更改3D設(shè)計(jì),既可以減少占地面積,也可以為Arduino騰出空間 - 這可能包括使用齒輪功能伺服器可以和Arduino一起坐在一邊。

如前所述,將電線焊接在一起,電線非常雜亂。

添加某種安全性,使其真正適合于前門。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Arduino
    +關(guān)注

    關(guān)注

    187

    文章

    6455

    瀏覽量

    186351
  • 門鎖
    +關(guān)注

    關(guān)注

    0

    文章

    47

    瀏覽量

    11900
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    項(xiàng)目分享 | 小熊派DIY款指紋門鎖

    今天小熊派就來手把手教大家如何利用小熊派開發(fā)板進(jìn)行指紋門鎖制作,讓你擁有款自己的指紋門鎖。指紋門鎖電路搭建及其工作原理: 首先,從整體架
    發(fā)表于 10-09 13:55

    安全門鎖,門鎖開防護(hù)到位

    機(jī)械門鎖
    jf_31892182
    發(fā)布于 :2024年07月16日 13:40:17

    Arduino放回了個(gè)空的schetch,重新打開了程序不斷重啟的原因?

    。 我用Arduino把它放回去,重新啟動(dòng)。 我用Arduino放回了個(gè)空的schetch,我重新打開了程序,它不斷重啟。
    發(fā)表于 07-10 07:22

    OpenHarmony南向開發(fā)案例:【智能門鎖

    不僅可以接收數(shù)字管家應(yīng)用下發(fā)的指令來控制門鎖開啟,而且還可以通過數(shù)字管家設(shè)置不同的開鎖密碼以及次性密碼,實(shí)現(xiàn)給臨時(shí)用戶個(gè)臨時(shí)密碼,保證門戶安全。當(dāng)然除了開鎖的功能,智能
    的頭像 發(fā)表于 04-13 22:38 ?857次閱讀
    OpenHarmony南向開發(fā)案例:【智能<b class='flag-5'>門鎖</b>】

    如何用Arduino制作個(gè)簡易自動(dòng)喂魚器

    如果你家里養(yǎng)有魚,并想找到種自動(dòng)化喂食的方法,這個(gè)項(xiàng)目可能會(huì)對(duì)你有所啟發(fā)。 在這個(gè)教程中,作者將展示如何制作自己的基于Arduino的自動(dòng)喂魚器,讓小魚不在餓肚子。 自動(dòng)喂魚器的工作原理非常
    發(fā)表于 03-28 11:25

    如何制作自己的Arduino電容計(jì)

    在這個(gè)項(xiàng)目中,您將學(xué)習(xí)如何制作自己的Arduino電容計(jì)(測(cè)量電容器的值,范圍從pF到1000的uF)。般來說,電子愛好者喜歡設(shè)計(jì)自己的小工具而不是購買。在這個(gè)項(xiàng)目中,我們使用兩種電容測(cè)量方法,即
    的頭像 發(fā)表于 02-25 15:10 ?1317次閱讀
    如何<b class='flag-5'>制作</b>自己的<b class='flag-5'>Arduino</b>電容計(jì)

    個(gè)簡單的晝夜觸發(fā)自動(dòng)門鎖電路分享

    這篇文章解釋了個(gè)簡單的晝夜觸發(fā)自動(dòng)門鎖電路,可用于在白天自主解鎖狗窩門,并在夜幕降臨時(shí)將其鎖定。
    的頭像 發(fā)表于 02-25 11:28 ?568次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>簡單的晝夜觸發(fā)自動(dòng)<b class='flag-5'>門鎖</b>電路分享

    如何使用Arduino制作智能垃圾箱

    在這個(gè)項(xiàng)目中,我將向您展示如何使用Arduino制作智能垃圾箱,當(dāng)您帶著垃圾接近時(shí),垃圾箱的蓋子會(huì)自動(dòng)打開。
    的頭像 發(fā)表于 02-11 12:22 ?2629次閱讀
    如何使用<b class='flag-5'>Arduino</b><b class='flag-5'>制作</b>智能垃圾箱

    使用Arduino Nano制作個(gè)4×4×4 LED立方體

    在這個(gè)項(xiàng)目中,我們將使用 Arduino Nano 制作個(gè)很酷的 4×4×4 LED立方體。LED 立方體,也稱為 LED矩陣,可以照亮您的房間、學(xué)習(xí)空間或創(chuàng)客區(qū)域,使其看起來非???/div>
    的頭像 發(fā)表于 02-11 12:07 ?2870次閱讀
    使用<b class='flag-5'>Arduino</b> Nano<b class='flag-5'>制作</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>4×4×4 LED立方體

    構(gòu)建個(gè)基于Arduino的空氣質(zhì)量監(jiān)測(cè)系統(tǒng)

    呼吸清潔、健康的空氣對(duì)我們的健康至關(guān)重要,但在許多環(huán)境中,空氣質(zhì)量仍然是個(gè)問題。在本文中,我們將深入探討如何創(chuàng)建個(gè)基于Arduino的空
    的頭像 發(fā)表于 02-11 12:03 ?3801次閱讀
    構(gòu)建<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>基于<b class='flag-5'>Arduino</b>的空氣質(zhì)量監(jiān)測(cè)系統(tǒng)

    Arduino制作循跡小車教程

    Arduino制作循跡小車完全教程
    發(fā)表于 01-05 11:09 ?4次下載

    Arduino的功能及其限制

    Arduino種開源電子原型平臺(tái),它基于易于使用的硬件和軟件,可以用于制作各種嵌入式系統(tǒng)。然而,盡管Arduino非常強(qiáng)大,但它也有
    的頭像 發(fā)表于 12-21 14:15 ?1014次閱讀

    如何用8個(gè)零件制作個(gè)無線電設(shè)備

    應(yīng)急無線電發(fā)射器EMTX的制作,對(duì)于初學(xué)者而言是個(gè)很好的入門DIY項(xiàng)目,今天,本文作者Kostas(SV3ORA)給我們介紹了如何構(gòu)建個(gè)8組件40/30米QRP應(yīng)急無線電發(fā)射器,步驟
    的頭像 發(fā)表于 11-20 14:40 ?2084次閱讀
    如何用8<b class='flag-5'>個(gè)</b>零件<b class='flag-5'>制作</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>無線電設(shè)備

    如何實(shí)現(xiàn)個(gè)信號(hào)發(fā)生器的制作呢?

    今天給大家分享個(gè)信號(hào)發(fā)生器的制作方法,這個(gè)小制作不但有正弦波還有方波,就連三角波都可以輸出,你是不是覺得定會(huì)很難吧
    的頭像 發(fā)表于 11-15 15:33 ?1869次閱讀
    如何實(shí)現(xiàn)<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>信號(hào)發(fā)生器的<b class='flag-5'>制作</b>呢?

    Arduino制作雕刻機(jī)時(shí)用哪個(gè)pin來控制激光器開關(guān)?

    Arduino制作雕刻機(jī)是用哪個(gè)pin來控制激光器的開關(guān)? Limit Z_Axis 還是 SPINDLE_ENABLE 好像要交換下.
    發(fā)表于 10-27 07:52