제조공정
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 2 | ||||
| × | 1 |
|
| ||||
| ||||
| ||||
| ||||
|
환영합니다, 호기심 많은 친구! 우리는 전 세계 수백만 명에게 긍정적인 영향을 미칠 수 있는 기발한 아이디어를 내놓기 위해 실험하고 혁신하는 것이 그 어느 때보다 쉬워진 인터넷 혁명 시대에 살고 있습니다.
집에 있는 선반, 서랍, 옷장 또는 문에 약간의 보안을 추가하고 싶으십니까? 인터넷을 사용한 혁신과 관련하여 우리가 사용할 수 있는 수천 개의 플랫폼과 도구 중에서 눈에 띄는 두 가지는 Arduino
입니다. 및 볼트 IoT
. 이 프로젝트에서는 얼굴 인증을 사용하여 잠금을 해제하는 보안 시스템을 갖도록 표준 선반을 수정합니다. Windows Forms 애플리케이션을 구축하겠습니다. C#에서 신뢰할 수 있는 얼굴을 저장, 확인 및 잠금 해제할 수 있습니다. FacePlusPlus API
를 사용합니다. 얼굴 인증 및 Bolt IoT Cloud API용 Bolt WiFi Module 및 Arduino와 통신하기 위한 것입니다. Bolt WiFi 모듈을 Arduino Uno와 인터페이스할 것입니다. , 서보 모터를 제어하여 도어를 잠그거나 잠금 해제합니다.
흥분한? 시작하겠습니다.
배경
Internshala Training에서 진행하는 Innovate Challenge 및 IoT 교육의 일환으로 이 프로젝트를 만들었습니다. 그들의 교육은 API 서비스, 객체 지향 프로그래밍, 그리고 가장 중요한 Bolt WiFi 모듈 사용에 대한 기본 사항을 이해하는 데 도움이 되었습니다. 이 교육의 일부로 수행된 Capstone 프로젝트의 개요는 여기에서 찾을 수 있습니다. 이러한 개념의 대부분은 이 프로젝트를 개발하는 동안 유용했습니다. 이를 가능하게 한 Internshala 팀에 큰 박수를 보냅니다.
1단계:소프트웨어 구축
Visual Studio를 사용하여 Windows Forms 애플리케이션을 빌드합니다. 이 애플리케이션은 Windows 시스템에서 실행되며 인증된 얼굴 관리, FacePlusPlus API를 사용한 얼굴 인증 및 Bolt WiFi 모듈과의 통신을 담당합니다. 우리는 C#을 사용하여 코딩할 것입니다.
Visual Studio를 실행하고 새 Windows Forms 응용 프로그램 프로젝트를 만듭니다. Visual Studio를 완전히 처음 사용하는 경우 Visual Studio를 사용하여 Windows Forms 응용 프로그램 개발의 기본 사항을 배우는 것이 좋습니다. 시작하기에 좋은 자료입니다.
이 튜토리얼에서는 주요 기능과 중요한 기능을 수행하는 프로젝트의 스니펫을 사용하여 코드만 설명합니다. 대부분의 코드가 자명하고 잘 문서화되어 있으므로 전체 코드를 살펴보는 것은 지루하고 불필요합니다.
우리의 Visual Studio 프로젝트는 다양한 목적을 위해 3개의 라이브러리를 사용합니다. 그들은:
<울>참고:위 API에서 다양한 방법을 명확하게 사용하려면 여기, 여기 및 여기에서 해당 문서를 참조하세요.
시작하기
코딩을 시작하기 전에 몇 가지 설정이 필요합니다.
1. Bolt Cloud API 자격 증명
아직 하지 않았다면 cloud.boltiot.com으로 이동하여 계정을 설정하십시오. 로그인한 후 WiFi 모듈을 Bolt Cloud와 연결하십시오. 이를 위해 휴대폰에 Bolt IoT 설정 앱을 다운로드하십시오. 앱에 제공된 지침에 따라 기기를 계정에 연결합니다. 여기에는 Bolt를 로컬 WiFi 네트워크와 페어링하는 작업이 포함됩니다. 성공적으로 연결되면 대시보드에 장치가 표시됩니다. 이제 기기 ID를 얻을 수 있습니다. 및 API 키 대시보드에서.
2. FacePlusPlus API 자격 증명
이 프로젝트에서 우리가 의존하는 또 다른 API 서비스는 FacePlusPlus API입니다. . 다양한 이미지 인식 서비스를 제공하는 무료 플랫폼입니다. 우리는 그것을 얼굴 식별에 사용합니다. 계정을 만들고 FacePlusPlus 콘솔로 이동합니다. API 키
로 이동 앱
아래 +API 키 가져오기
를 클릭합니다. . 새로 생성된 API 키를 기록해 둡니다. 및 API 비밀번호 .
이제 다음이 준비되어 있어야 합니다.
개인 읽기 전용 문자열 BOLT_DEVICE_ID ="BOLTXXXXXX";개인 읽기 전용 문자열 BOLT_API_KEY ="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; 개인 읽기 전용 문자열 FPP_API_KEY ="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";개인 읽기 전용 문자열 FPP_API_SECRET ="XXXXXXXXXXXXXXXXXXXXXXXXXXXX";
myBolt
라는 Bolt 클래스의 새 전역 인스턴스를 만듭니다. , 이를 통해 향후 WiFi 모듈과의 모든 통신:
myBolt =새로운 볼트(BOLT_API_KEY, BOLT_DEVICE_ID);
즉, 이제 애플리케이션이 일부 핵심 기능을 수행하는 방법을 살펴보겠습니다.
1. 도어 잠금/잠금 해제
디지털 핀 0이 HIGH
일 때 회로를 설계했습니다. , 문이 잠겨 있어야 하며 디지털 핀 3이 HIGH
일 때 , 문이 잠겨 있어야 합니다. 이것은 나중에 회로도를 논의할 때 더 명확해질 것입니다.
잠금을 위해 DigitalMultiWrite를 사용합니다. 코드>
HIGH
를 작성하는 라이브러리의 메소드 값을 D0으로, LOW 값을 D3으로 설정합니다. 이것은 Arduino에게 문을 잠그도록 신호를 보냅니다. 잠금 해제와 유사하게 LOW
를 작성합니다. 값을 D0 및 HIGH
로 값을 D3으로 지정합니다. 이것은 Arduino에게 문을 열도록 신호를 보냅니다. 이 튜토리얼의 뒷부분에서 Arduino 코드와 회로 설계에 대해 논의할 것입니다.
잠금을 수행하는 코드:
개인 비동기 작업 LockDoor(){ MultiPinConfig multiPinConfig =new MultiPinConfig(); MultiPinConfig.AddPinState(DigitalPins.D0, DigitalStates.High); //잠금 신호 multiPinConfig.AddPinState(DigitalPins.D3, DigitalStates.Low); //잠금 해제 신호 await myBolt.DigitalMultiWrite(multiPinConfig); multiPinConfig =새로운 MultiPinConfig(); multiPinConfig.AddPinState(DigitalPins.D0, DigitalStates.Low); //잠금 신호 multiPinConfig.AddPinState(DigitalPins.D3, DigitalStates.Low); //잠금 해제 신호 await myBolt.DigitalMultiWrite(multiPinConfig);}
잠금 해제를 수행하는 코드:
개인 비동기 작업 UnlockDoor(){ MultiPinConfig multiPinConfig =new MultiPinConfig(); multiPinConfig.AddPinState(DigitalPins.D0, DigitalStates.Low); //잠금 신호 multiPinConfig.AddPinState(DigitalPins.D3, DigitalStates.High); //잠금 해제 신호 await myBolt.DigitalMultiWrite(multiPinConfig); multiPinConfig =새로운 MultiPinConfig(); multiPinConfig.AddPinState(DigitalPins.D0, DigitalStates.Low); //잠금 신호 multiPinConfig.AddPinState(DigitalPins.D3, DigitalStates.Low); //잠금 해제 신호 await myBolt.DigitalMultiWrite(multiPinConfig);}
2. 신뢰할 수 있는 얼굴 추가/제거
신뢰할 수 있는 얼굴의 이미지 데이터는 Base64 문자열로 인코딩되어 컴퓨터에 로컬로 저장됩니다. 각 얼굴의 해당 이름 목록도 저장됩니다. 우리 프로그램에서 얼굴을 추가하기 위해 먼저 현재 프레임에 사용 가능한 얼굴이 있는지 확인합니다. FacePlusPlus의 Detect API를 사용하여 이 작업을 수행합니다. 감지된 얼굴의 기능을 포함할 JSON 응답을 반환합니다. 얼굴이 감지되지 않으면 응답은 단순히 []
가 됩니다. . 얼굴이 감지되면 이미지의 base64 인코딩 문자열과 해당 이름을 저장합니다. 다음은 신뢰할 수 있는 얼굴을 추가하는 방법에 대한 비디오 데모입니다.
얼굴을 제거하는 것은 매우 간단합니다. 제거 버튼을 누르면 저장된 목록에서 이미지 데이터와 이름이 삭제됩니다.
얼굴 정보를 추가하고 저장하는 코드:
//이미지를 base64 문자열로 변환하고 목록에 추가합니다. ImageDataList.Add(ImageToBase64((Image)PreviewBox.Image.Clone()));//목록에 얼굴 이름 추가.Add(FaceNameTextBox.Text.Trim()); // 얼굴 이미지 데이터를 nameProperties.Settings.Default.Base64ImageData =ImageDataList;Properties.Settings.Default.FaceNames =NameList;Properties.Settings.Default.Save();
와 함께 기본 인코딩된 문자열로 저장합니다.
얼굴 정보를 제거하는 코드:
//listNameList.RemoveAt(e.RowIndex);ImageDataList.RemoveAt(e.RowIndex); //faceProperties.Settings.Default.FaceNames 제거 후 목록 저장 =NameList;Properties.Settings.Default.Base64ImageData =ImageDataList;Properties.Settings.Default.Save();
각 라인의 주석으로 프로세스를 설명하는 첨부 프로젝트의 코드를 확인하여 명확한 아이디어를 얻으세요.
3. 얼굴 인증
FacePlusPlus에서 비교 API를 사용하여 얼굴을 신뢰할 수 있는지 여부를 확인합니다. 이 과정에서 저장된 목록의 각 얼굴을 선형으로 반복하고 캡처한 이미지와 비교합니다. API가 80% 이상의 신뢰도를 반환하면 문을 열어드립니다.
이 비교를 수행하는 코드는 다음과 같습니다.
WebClient 클라이언트 =new WebClient(); byte[] 응답 =client.UploadValues("https://api-us.faceplusplus.com/facepp/v3/compare", new NameValueCollection(){ { "api_key", FPP_API_KEY }, { "api_secret", FPP_API_SECRET }, { "image_base64_1", face1Base64}, { "image_base64_2", face2Base64} });}); 문자열 신뢰 =JObject.Parse(System.Text.Encoding.UTF8.GetString(응답))["신뢰"].ToString();
WebClient.UploadValues 메소드는 비교할 두 얼굴의 base64로 인코딩된 얼굴 데이터 및 API 자격 증명과 함께 FacePlusPlus API에 요청을 보냅니다. 응답은 Newtonsoft JSON을 사용하여 구문 분석됩니다. 라이브러리 및 자신감 코드> 값을 얻습니다. 인수를 명확하게 이해하려면 비교 API 문서를 읽으십시오.
4. 벨 듣기 스레드
우리는 사용자가 카메라를 보면서 누를 수 있도록 호출 벨 버튼과 같은 물리적 푸시 버튼을 제공하여 문을 열 계획입니다. 이를 가능하게 하려면 벨 버튼 누르기 이벤트를 지속적으로 수신하는 새로운 전용 스레드를 생성해야 합니다.
이 자습서의 뒷부분에서 푸시 버튼이 사용되는 방식과 Bolt WiFi 모듈의 D4 핀을 HIGH
로 만드는 방법을 살펴보겠습니다. 버튼을 눌렀을 때. 지금은 위의 내용만 가정하겠습니다. 따라서 이 스레드에서는 지속적으로 DigitalRead
D4 핀 값. HIGH
인 경우 , 우리는 그것을 벨 링 이벤트로 받아 얼굴 캡처 및 인증을 수행할 것입니다.
벨 수신 스레드에서 계속 실행될 코드는 다음과 같습니다.
while (ListenForBell){ 응답 R =await myBolt.DigitalRead(DigitalPins.D4); if (R.Value =="1") { RingBell_Click(null, null); Thread.Sleep(2000); } Thread.Sleep(2000);}
각 반복 사이에 2초 동안 중지하고 기다립니다. 그렇지 않으면 Bolt Cloud API의 사용 할당량이 빠르게 소진됩니다.
2단계:Visual Studio 프로젝트 빌드
전체 프로젝트 다운로드 여기 . Facebolt Doorlock.sln
을 엽니다. Visual Studio에서 파일. 솔루션이 로드되면 Form1.cs
를 엽니다. 파일을 만들고 API 자격 증명으로 코드를 업데이트합니다. '시작'이라는 녹색 재생 버튼을 눌러 프로그램을 빌드하고 실행합니다.
이 프로그램을 사용하면 시스템에 연결된 카메라 장치 중에서 선택하고 카메라의 라이브 피드를 볼 수 있습니다. 신뢰할 수 있는 얼굴을 추가/제거할 수 있습니다. 얼굴 모니터링을 시작합니다. 프로그램이 볼트 장치의 연결을 확인하면 벨을 누르거나 프로그램에서 직접 문을 잠글 수 있습니다.
<그림> <그림> 그림> <그림> 그림>이제 프로그램에서 얼굴 인증, 잠금 및 잠금 해제가 어떻게 작동하는지 혼란스러워도 괜찮습니다. 회로도 설계와 Arduino 코드를 보면 더 명확해질 것입니다. 또한 마지막에 각 작업의 이벤트 흐름을 분해할 것입니다.
3단계 :회로 설계 및 Arduino 코드
우리 회로에서는 다음 기능을 구현하려고 합니다.
<울>우리 프로젝트의 회로 연결은 다음과 같습니다.
<그림> <그림> 그림>아직 다운로드하지 않았다면 여기에서 Arduino IDE를 다운로드하고 Arduino를 시스템에 연결하십시오. 코드를 업로드하기 전에 IDE 설정에서 올바른 Arduino 모델과 포트를 설정했는지 확인하세요.
Arduino 코드:
#include #define ServoPin 4#define LockSignalPin 2#define UnLockSignalPin 3#define BellButtonPin 5#define LockButtonPin 8#define RingBellSignalPin 6#define BuzzerPin 7#define GreenPinDefine RedPin 마이서보; 무효 설정() { pinMode(LockSignalPin, INPUT); 핀모드(UnLockSignalPin, INPUT); 핀모드(벨버튼핀, 입력); 핀모드(잠금버튼핀, 입력); 핀모드(부저핀, 출력); 핀모드(레드레드핀, 출력); 핀모드(그린레드핀, 출력); 핀모드(RingBellSignalPin, OUTPUT); digitalWrite(RedLedPin, LOW); digitalWrite(GreenLedPin, LOW); digitalWrite(RingBellSignalPin, LOW); myServo.attach(서보핀); Serial.begin(9600);} 무효 루프() { int lockButton, 잠금, 잠금 해제, 벨; 문자 번호[5]; 잠금 =디지털 읽기(LockSignalPin); 잠금 해제 =digitalRead(UnLockSignalPin); // Bolt의 잠금 신호가 HIGH인지 확인 if(lock ==HIGH) { // 모터를 잠금 위치로 돌림 myServo.write(120); // LED 표시 설정 digitalWrite(GreenLedPin, LOW); digitalWrite(RedLedPin, HIGH); // 버즈 잠금 소리 digitalWrite(BuzzerPin, HIGH); 지연(1000); digitalWrite(BuzzerPin, LOW); 지연(1000); } // Bolt의 Unlock 신호가 HIGH인지 확인 else if(unlock ==HIGH) { // 모터를 잠금 해제 위치로 돌림 myServo.write(0); // LED 표시 설정 digitalWrite(GreenLedPin, HIGH); digitalWrite(RedLedPin, LOW); 지연(2000); } 벨 =디지털읽기(벨버튼핀); if(bell ==HIGH) // 사용자가 벨을 눌렀음 ring betton { // 링 버튼이 눌렸음을 볼트로 신호 digitalWrite(RingBellSignalPin, HIGH); // 호출 벨 사운드 패턴 ! digitalWrite(부저핀, 높음); 지연(100); digitalWrite(BuzzerPin, LOW); 지연(20); digitalWrite(부저핀, 높음); 지연(200); digitalWrite(BuzzerPin, LOW); 지연(100); digitalWrite(부저핀, 높음); 지연(100); digitalWrite(BuzzerPin, LOW); 지연(20); digitalWrite(부저핀, 높음); 지연(200); digitalWrite(BuzzerPin, LOW); 지연(1500); // 신호 끄기 digitalWrite(RingBellSignalPin, LOW); } 잠금 버튼 =디지털 읽기(잠금 버튼 핀); if(lockButton ==HIGH) // 사용자 누름 lock betton { // 모터를 잠금 위치로 돌림 myServo.write(120); // LED 표시 설정 digitalWrite(GreenLedPin, LOW); digitalWrite(RedLedPin, HIGH); // 버즈 잠금 소리 digitalWrite(BuzzerPin, HIGH); 지연(1000); digitalWrite(BuzzerPin, LOW); }}
이벤트 흐름
이제 WinForm 애플리케이션과 Arduino 디자인이 모두 준비되었으므로 코드를 자세히 살펴보고 각 작업의 제어 흐름을 살펴보겠습니다.
1. 링 버튼 누르기
<그림>2. 잠금 버튼 누르기
<그림>위의 두 작업은 Windows Forms 애플리케이션에서도 직접 실행할 수 있습니다.
여기에서 볼트 WiFi 모듈이 Windows Forms 애플리케이션과 Arduino 간의 중요한 무선 인터페이스 역할을 합니다. Bolt Cloud API를 사용하면 프로젝트를 확장하고 Android와 같은 다른 플랫폼에서 애플리케이션을 빌드하고 휴대폰을 사용하여 문을 열 수 있습니다! 이러한 유연성은 IoT와 Bolt 플랫폼의 힘입니다.
이제 소프트웨어 설계 부분을 완료했으므로 잠글 수 있는 도어 메커니즘을 구축해 보겠습니다.
4단계:하드웨어 구축
주변에 신발장이 있어 이 프로젝트에서 잠금 데모에 사용할 것입니다. 선반, 문, 옷장 또는 해킹 가능한 잠금 장치가 있는 모든 것을 사용할 수 있습니다. 그것은 정말 당신에게 달려 있습니다.
<그림> <그림> 그림> <그림> 그림> <그림> 그림>우리는 서보 모터를 잠금 장치와 연결하는 커플링 메커니즘을 구축해야 합니다. 이를 위해 내 아이디어는 병과 다른 병의 뚜껑에서 잘린 목을 사용하는 것입니다. 병목을 서보 모터에 연결하고 캡을 잠금 장치에 연결합니다. 그런 다음 나일론 실을 사용하여 연결합니다. 그러면 모터가 회전할 때마다 잠금/잠금 해제 동작이 발생합니다.
뚜껑에 구멍이 뚫린 필수 병목은 아래 그림과 같습니다. 이것을 신발장 잠금 샤프트에 부착하겠습니다.
<그림> <그림> 그림>다른 병의 뚜껑은 서보 모터에 부착해야 합니다. 우리는 구리선을 사용하여 캡을 모터의 회전축에 연결합니다.
<그림> <그림> 그림> <그림> 그림>이제 이 두 가지를 결합해야 합니다. 이를 위해 나일론 실을 사용합니다. 필요한 길이의 실을 이용하여 고리를 만들고 양쪽 캡에 실을 달아주세요.
<그림> <그림> 그림>일단 결합되면 상호 회전 동작을 일으킬 수 있습니다.
<그림>이제 회전 메커니즘이 준비되었으므로 잠금 장치를 해킹하여 병목을 고정할 차례입니다. 구멍을 뚫었으므로 랙에서 잠금 샤프트의 나사를 풀고 그 위에 병 목을 놓고 잠금 장치를 다시 단단히 조이기만 하면 됩니다.
<그림>이제 서보 모터를 신발장에 고정하는 일만 남았습니다. 뜨거운 글루건을 사용하여 모터를 랙에 봉인하겠습니다.
<그림> <그림> 그림>실의 길이를 조정하고 충분히 조이면 최종 준비가 완료된 것입니다. 아래와 같이 서보 모터가 도어를 올바르게 잠그고 잠금 해제할 수 있습니다!
<그림> <그림> 그림>반드시 병목-나사 결합 방식을 사용할 필요는 없습니다. 잠금 시스템에 가장 적합하고 편리한 방법을 사용하십시오.
다행히 랙의 올바른 위치에 작은 구멍이 있었습니다. 이를 통해 서보 모터 연결을 쉽게 분리할 수 있었습니다. 약간의 장식 작업과 라벨링을 마친 후 이제 마지막 스마트 신발장을 사용할 준비가 되었습니다.
<그림> <그림> 그림> <그림> 그림> <그림> 그림> <그림> 그림> <그림> 그림>이제 모든 준비가 완료되었습니다. 남은 일은 회로를 작동시키고 WinForms 응용 프로그램에 신뢰할 수 있는 얼굴을 추가하고 문에 얼굴 잠금 보안을 사용하는 것입니다. Arduino와 Bolt WiFi 모듈에 전원을 공급해야 합니다. 나는 10000mAh 보조 배터리를 사용하여 둘 다에 전원을 공급합니다. 내가 사용하는 웹캠은 Microsoft LifeCam VX-800입니다. 오래되었지만 여전히 노트북의 카메라보다 낫습니다. 데모 비디오를 확인하십시오. 그것은 우리 프로젝트의 작업을 자세히 보여줍니다.
비디오 데모
실행 중인 프로젝트 보기(동영상 품질에 대한 사과):
결론
헐.. 꽤 길었다. 이 프로젝트는 Bolt IoT로 구동되는 Internshala의 IoT 교육의 결실입니다. 이 프로젝트는 매우 간단하지만 사물 인터넷의 잠재력과 사람들의 일상 생활을 더 쉽게 만드는 방법을 보여줍니다.
어쨌든.. 이것은 저에게 훌륭한 학습 경험이었습니다. 여러분이 이 빌드를 즐기길 바라며 어떤 새로운 혁신을 만들어낼지 기대됩니다. 이 벤처를 가능하게 해준 Internshala와 Bolt IoT의 교육 팀에 진심으로 감사를 표하며 글을 마칩니다.
그리고 그것은 랩입니다!
섹션> <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">
#include#define ServoPin 4#define LockSignalPin 2#define UnLockSignalPin 3#define BellButtonPin 5#define LockButtonPin 8#define RingBellSignalPin 6#define BuzzerPin 7#define GreenPino RedPin; 무효 설정() { pinMode(LockSignalPin, INPUT); 핀모드(UnLockSignalPin, INPUT); 핀모드(벨버튼핀, 입력); 핀모드(잠금버튼핀, 입력); 핀모드(부저핀, 출력); 핀모드(레드레드핀, 출력); 핀모드(그린레드핀, 출력); 핀모드(RingBellSignalPin, OUTPUT); digitalWrite(RedLedPin, LOW); digitalWrite(GreenLedPin, LOW); digitalWrite(RingBellSignalPin, LOW); myServo.attach(서보핀); Serial.begin(9600);}void 루프() { int lockButton, 잠금, 잠금 해제, 벨; 문자 번호[5]; 잠금 =디지털 읽기(LockSignalPin); 잠금 해제 =digitalRead(UnLockSignalPin); // Bolt의 잠금 신호가 HIGH인지 확인 if(lock ==HIGH) { // 모터를 잠금 위치로 돌림 myServo.write(120); // LED 표시 설정 digitalWrite(GreenLedPin, LOW); digitalWrite(RedLedPin, HIGH); // 버즈 잠금 소리 digitalWrite(BuzzerPin, HIGH); 지연(1000); digitalWrite(BuzzerPin, LOW); 지연(1000); } // Bolt의 Unlock 신호가 HIGH인지 확인 else if(unlock ==HIGH) { // 모터를 잠금 해제 위치로 돌림 myServo.write(0); // LED 표시 설정 digitalWrite(GreenLedPin, HIGH); digitalWrite(RedLedPin, LOW); 지연(2000); } 벨 =디지털읽기(벨버튼핀); if(bell ==HIGH) // 사용자가 벨을 눌렀음 ring betton { // 링 버튼이 눌렸음을 볼트로 신호 digitalWrite(RingBellSignalPin, HIGH); // 호출 벨 사운드 패턴 ! digitalWrite(부저핀, 높음); 지연(100); digitalWrite(부저핀, 낮음); 지연(20); digitalWrite(부저핀, 높음); 지연(200); digitalWrite(BuzzerPin, LOW); 지연(100); digitalWrite(부저핀, 높음); 지연(100); digitalWrite(BuzzerPin, LOW); 지연(20); digitalWrite(부저핀, 높음); 지연(200); digitalWrite(BuzzerPin, LOW); 지연(1500); // 신호 끄기 digitalWrite(RingBellSignalPin, LOW); } 잠금 버튼 =디지털 읽기(잠금 버튼 핀); if(lockButton ==HIGH) // 사용자 누름 lock betton { // 모터를 잠금 위치로 돌림 myServo.write(120); // LED 표시 설정 digitalWrite(GreenLedPin, LOW); digitalWrite(RedLedPin, HIGH); // 버즈 잠금 소리 digitalWrite(BuzzerPin, HIGH); 지연(1000); digitalWrite(BuzzerPin, LOW); }}
미리보기 없음(다운로드만 가능)
제조공정
구성품 및 소모품 Arduino Nano R3 × 1 HC-05 블루투스 모듈 × 1 Maxim 통합 DS18B20 프로그래밍 가능 분해능 1선식 디지털 온도계 × 1 oled 1306 I2C 바이컬러 × 1 ControlEverything.com I2C용 4채널 릴레이 컨트롤러 × 1 앱 및 온라인 서비스 Android용 Morich 직렬 블루투스 터미널 Android용 Arduino Bluetoot
구성품 및 소모품 Arduino UNO × 1 SparkFun 버튼 패드 4x4 - LED 호환 × 1 Adafruit Standard LCD - 파란색 바탕에 16x2 흰색 × 1 릴레이(일반) × 1 9V 배터리(일반) × 1 단일 회전 전위차계 - 10k 옴 × 1 저항 10k 옴 × 1 앱 및 온라인 서비스 Arduino IDE 이 프로젝트 정보