- Arduino 자동 블라인드를 구축하는 데 필요한 구성 요소
- Arduino를 사용하여 롤러 블라인드 제어
- 블라인드 기어 설계 및 제작
- 모터 홀더 및 블라인드 기어 3D 프린팅
- Arduino 블라인드 제어를위한 회로도
- Arduino Blind Control 용 Blynk 애플리케이션
- Blynk를 사용하여 블라인드를 제어하도록 NodeMCU 프로그래밍
- Google Assistant를 사용하여 블라인드 제어
- Arduino 기반 자동 창 블라인드 제어 – 데모
"좋은 아침. 오전 7시입니다. 말리부의 날씨는 72 도입니다…”마블 시네마 틱스 유니버스에 소개 된 JARVIS의 첫 단어였습니다. 대부분의 아이언 맨 팬들은이 장면을 기억하고 JARVIS가 아침에 (종류의) 창문을 열고 시간과 날씨에 대한 업데이트를 제공 할 수 있었다는 것을 기억해야합니다. 영화에서 창 유리는 실제로 See-Through Touch 디스플레이로 만들어 졌기 때문에 JARVIS는 검은 색에서 투명으로 바꾸고 날씨 통계를 표시 할 수있었습니다. 그러나 실제로는 투명 터치 스크린과는 거리가 멀고 더 가까울수록 창 블라인드 또는 제약 조건을 자동으로 제어 할 수 있습니다.
그래서이 프로젝트에서 우리는 정확히 미리 정의 된 시간에 자동으로 열리고 닫히는 자동화 된 전동 블라인드를 만들 것입니다. 이전에는 조명, 모터 등을 자동화하는 많은 홈 자동화 프로젝트를 구축했습니다. 관심이 있으시면 확인하실 수 있습니다. 다시 돌아 오면이 Arduino 제어 블라인드 는 음성 명령을 통해 원격으로 블라인드를 열거 나 닫을 수 있도록 Google 어시스턴트의 명령을받을 수 있습니다. 흥미 롭습니까? 그런 다음 만들어 보겠습니다.
Arduino 자동 블라인드를 구축하는 데 필요한 구성 요소
이 프로젝트는 비교적 간단하며 필요한 구성 요소가 많지 않습니다. 아래 나열된 항목을 모으십시오.
- NodeMCU
- 스테퍼 모터 – 28BYJ-48
- 스테퍼 모터 드라이버 모듈
- LM117-3.3V
- 커패시터 (10uf, 1uf)
- 12V DC 어댑터
- 성능 보드
- 납땜 키트
- 3D 프린터
Arduino를 사용하여 롤러 블라인드 제어
현재 시장에는 많은 유형의 블라인드가 있지만 가장 일반적으로 사용되는 블라인드는 블라인드를 열거 나 닫을 수있는 비딩이있는 로프 (아래 그림 참조)가 있습니다.
이 원형 로프를 시계 방향으로 당기면 블라인드가 열리고이 로프를 반 시계 방향으로 당기면 블라인드가 닫힙니다. 따라서이 프로세스를 자동화하려면 모터를 사용하여이 로프를 시계 방향 또는 시계 반대 방향으로 당기기 만하면됩니다. 사실, 이것이 우리가이 프로젝트에서 할 일입니다. 우리는 NodeMCU와 함께 28BYJ-48 스테퍼 모터를 사용하여 비드 로프를 당길 것입니다.
블라인드 기어 설계 및 제작
이 프로젝트의 전자 부분은 매우 간단하고 간단했으며, 도전적인 부분은 비드 로프를 당길 수있는 블라인드 기어를 만드는 것이 었습니다. 이 글을 블라인드 기어 디자인으로 시작하겠습니다. 기어를 디자인하는 방법에 대해서는 자세히 설명하지 않겠습니다.하지만이 기본 아이디어가 도움이 될 것입니다. 구슬이있는 로프의 이미지는 아래와 같습니다.
다시 말하지만, 로프에는 여러 종류가 있지만 가장 일반적으로 사용되는 로프는 각 비딩의 중심 간 거리가 6mm이고 각 비딩의 직경이 4mm입니다. 이 정보를 사용하여 장비 설계를 시작할 수 있습니다. 블라인드에있는 로프의 치수가 논의 된 것과 같으면이 단계를 건너 뛰고이 기사에서 제공하는 STL 파일을 다운로드하고 장비를 인쇄하면됩니다. 로프가 다른 비딩 배열을 가지고 있다면 이것이 블라인드 기어를 재 설계해야하는 방법입니다.
최적의 기어 휠 크기를 얻기 위해 기어에 24 개의 비드를 사용하기로 결정했습니다. 기어 휠이 크거나 작도록이 값에 가까운 숫자를 선택할 수 있습니다. 이제 각 비딩 사이의 거리가 6mm라는 것을 알고 있으며 기어에 24 개의 비드가 필요합니다. 둘 다 곱하면 기어 휠의 둘레가됩니다. 이 데이터로 기어 휠의 반경을 계산할 수 있습니다. 위 이미지에서 볼 수 있듯이 기어 휠의 직경은 약 46mm로 계산되었습니다. 그러나 4mm 인 비딩의 직경을 고려하지 않았기 때문에 이것은 기어의 실제 직경이 아닙니다. 따라서 기어 휠의 실제 직경은 42mm가 될 것이며, 가장 잘 작동하는 기어 휠을 찾기 전에 많은 기어 휠을 인쇄하고 테스트했습니다. 디자인에 관심이 없다면다음 단락에서 STL 파일을 다운로드하여 인쇄하고 프로젝트를 계속하십시오.
모터 홀더 및 블라인드 기어 3D 프린팅
기어와 함께 벽에 뚫고 스테퍼 모터를 제자리에 고정 할 수있는 작은 케이스도 필요합니다.이 프로젝트에 사용 된 케이스와 기어는 아래에 나와 있습니다.
아래 주어진 Arduino Blind Control Thingiverse 페이지에서 전체 디자인 파일과 STL 파일을 찾을 수 있습니다. 블라인드 기어와 모터 케이스를 다운로드하여 인쇄 할 수 있습니다.
블라인드 기어 및 모터 케이스용 STL 파일 다운로드
Arduino 블라인드 제어를위한 회로도
기어와 조립이 준비되면 전자 및 소프트웨어 부품을 쉽게 진행할 수 있습니다. IoT 블라인드 제어 프로젝트의 전체 회로도가 아래에 나와 있습니다.
전체 설정에 전원을 공급하기 위해 12V 어댑터를 사용했습니다. LM1117-3.3V 레귤레이터는 12V를 3.3V로 변환하여 NodeMCU 보드에 전원을 공급하는 데 사용할 수 있습니다. 스테퍼 모터 드라이버 모듈은 12V 어댑터에서 직접 전원을 공급받습니다. 스테퍼 모터를 5V에서 실행 해 보았지만 블라인드를 당기기에 충분한 토크를 제공하지 않았으므로 12V도 사용하고 있는지 확인하십시오.
그 외에도 회로는 매우 간단합니다. 스테퍼 모터를 처음 사용하는 경우 스테퍼 모터 기사의 기본 사항을 살펴보고 작동 방식과 마이크로 컨트롤러와 함께 사용할 수있는 방법을 이해하십시오.
Arduino Blind Control 용 Blynk 애플리케이션
Controlling Blinds를위한 Arduino 프로그램에 들어가기 전에 blynk 애플리케이션을 열고 블라인드를 열거 나 닫을 수있는 몇 가지 버튼을 만들어 보겠습니다. 나중에 Google 홈에서 제어하려면이 정보가 필요합니다.
블라인드를 열고 닫는 버튼 두 개와 매일 오전 10시에 블라인드를 여는 1 회 버튼을 추가했습니다. 여러 타이머를 추가하여 하루 중 다른 간격으로 블라인드를 열거 나 닫을 수 있습니다. 기본적으로 블라인드를 닫아야 할 때 가상 핀 V1을 트리거해야하고 블라인드를 열어야 할 때 가상 핀 V2를 트리거해야합니다. 여기에서 누른 버튼을 기반으로 스테퍼 모터를 제어하는 프로그램은 아두 이노 IDE에 작성 될 것입니다.
Blynk를 사용하여 블라인드를 제어하도록 NodeMCU 프로그래밍
이 블라인드 컨트롤 프로젝트에 대한 전체 ESP8266 코드는이 페이지 하단에서 찾을 수 있습니다. 우리의 프로그램은 blynk 응용 프로그램의 명령을 기다려야하고 그 명령에 따라 스테퍼 모터를 시계 방향 또는 반 시계 방향으로 회전해야합니다. 코드의 중요한 부분은 아래에서 설명합니다.
우리의 회로도에 따르면, 우리는 스테퍼 모터를 제어하기 위해 nodemcu의 디지털 핀 1, 2, 3, 4를 사용했습니다. 따라서 아래와 같이이 핀을 사용하여 stepper라는 인스턴스를 만들어야합니다. 1, 3, 2, 4의 순서로 핀을 정의했습니다. 의도적으로 수행되었으며 실수가 아닙니다. 모터가 제대로 작동하려면 핀 2와 3을 바꿔야합니다.
// 스텝 및 핀을 사용하여 스테퍼 클래스의 인스턴스를 만듭니다. Stepper stepper (STEPS, D1, D3, D2, D4);
다음 단계에서는 blynk 애플리케이션 인증 토큰과 IoT Blind 컨트롤러를 연결해야하는 Wi-Fi 자격 증명을 공유해야합니다. 이 Blynk 인증 토큰을 얻는 방법을 잘 모르는 경우 Blynk LED 제어 프로젝트를 참조하여 blynk 애플리케이션의 기본 사항과 사용 방법을 이해하십시오.
// Blynk 앱에서 인증 토큰을 받아야합니다. // 프로젝트 설정 (너트 아이콘)으로 이동합니다. char auth = "l_b47mF1hioCc_7FzdKMJJeFnJjTxxxx"; // WiFi 자격 증명. // 개방형 네트워크의 경우 암호를 ""로 설정합니다. char ssid = "CircuitDigest"; char pass = "dummy123";
코드로 넘어 가서 setup 함수 이후에 blynk에 대해 두 가지 방법을 정의했습니다. 앞서 언급했듯이 가상 핀 V1 및 V2가 수행해야하는 작업을 정의해야합니다. 동일한 코드는 다음과 같습니다.
BLYNK_WRITE (V1) // 블라인드 닫기 {Serial.println ("Closing Blinds"); if (opened == true) {for (int c_val = 0; c_val <= 130; c_val ++) // 닫기 위해 시계 반대 방향으로 회전 {stepper.step (c_val); 수율(); } 닫힘 = 참; 열림 = 거짓; disable_motor (); // 소비 전력과 발열을 줄이기 위해 사용 후에는 항상 스테퍼 모터를 사용할 수 있습니다.}} BLYNK_WRITE (V2) // 블라인드 열기 {Serial.println ("Opening Blinds"); if (closed == true) {for (int cc_val = 0; cc_val> = -130; cc_val--) // 열기 위해 시계 방향으로 회전 {stepper.step (cc_val); 수율(); } 열림 = 참; 닫힘 = 거짓; } disable_motor (); // 전력 소비와 발열을 줄이기 위해 사용 후에는 항상 스테퍼 모터를 사용할 수 있습니다.}
보시다시피 V1은 블라인드를 닫는 데 사용되고 V2는 블라인드를 여는 데 사용됩니다. 루프는 (130) 단계에 대해 시계 방향 또는 반 시계 방향으로 모터를 회전 시키도록 사용된다. 나는 블라인드를 실험하여 130 단계로 블라인드를 완전히 열고 닫을 수 있음을 확인했습니다. 귀하의 번호는 다를 수 있습니다. 는 루프 시계 방향과 반 시계 방향으로 회전 스테퍼 모터 아래 도시된다.
for (int c_val = 0; c_val <= 130; c_val ++) // 닫기 위해 시계 반대 방향으로 회전 {stepper.step (c_val); 수율(); } for (int cc_val = 0; cc_val> = -130; cc_val--) // 열기 위해 시계 방향으로 회전 {stepper.step (cc_val); 수율(); }
또한 프로그램에서 두 개의 부울 변수가 "열림"및 "닫힘"임을 알 수 있습니다. 이 두 변수는 모터가 블라인드를 두 번 열거 나 닫는 것을 방지하는 데 사용됩니다. 즉, 블라인드는 이전에 닫 혔을 때만 열리고 이전에 열렸을 때만 닫힙니다.
28BJY-48 스테퍼 모터의 속도를 높이는 방법은 무엇입니까?
28BJY-48 스테퍼 모터 사용의 한 가지 단점은 매우 느리다는 것입니다. 이 모터는 원래 고정밀 저속 응용 분야에서 사용하도록 제조되었으므로 이러한 모터가 고속으로 회전 할 것으로 기대하지 마십시오. Arduino를 사용하여 스테퍼 모터의 속도를 높이려면 변경할 수있는 두 가지 매개 변수가 있습니다. 하나는 #define STEPS 64인데, 스텝이 64로 정의 될 때 모터가 비교적 빠르다는 것을 알았습니다. 또 다른 매개 변수는 stepper.setSpeed (500); 다시 저는 500이 최적의 값이라는 것을 알았습니다. 그 이상은 실제로 스테퍼 모터를 느리게 만듭니다.
이 모터의 속도를 높이는 다른 방법을 알고 있습니까? 그렇다면 아래 댓글 섹션에 남겨주세요.
스테퍼 모터가 과열되는 것을 방지하는 방법은 무엇입니까?
스테퍼 모터는 과열을 방지하기 위해 사용하지 않을 때는 항상 비활성화해야합니다. 스테퍼 모터를 비활성화하는 것은 매우 간단합니다. 스테퍼 모터를 제어하는 GPIO 핀 4 개 모두의 핀 상태를 로우로 변경하기 만하면됩니다. 이것은 매우 중요합니다. 그렇지 않으면 모터가 + 12V에서 매우 뜨거워 져 영구적으로 손상 될 수 있습니다. 스테퍼 모터를 비활성화하는 프로그램은 다음과 같습니다.
void disable_motor () // 가열을 피하기 위해 완료되면 모터를 끕니다 {digitalWrite (D1, LOW); digitalWrite (D2, LOW); digitalWrite (D3, LOW); digitalWrite (D4, LOW); }
Google Assistant를 사용하여 블라인드 제어
blynk API를 사용하여 Google 어시스턴트를 통해 블라인드를 제어 할 것입니다. 음성 제어 홈 자동화 프로젝트와 유사하므로 관심이있는 경우 확인하십시오. 기본적으로 Google Assistant에 사전 정의 된 문구를 말할 때 아래 링크를 트리거해야합니다.
//http://188.166.206.43/l_b47mF1hioCc_7FzdKMJJeFnJjTxxxx/update/V1?value=1 /
인증 토큰을 blynk 애플리케이션에서 제공 한 토큰으로 변경해야합니다. 크롬 브라우저에서이 링크를 테스트하여 예상대로 작동하는지 확인할 수도 있습니다. 이제 링크가 준비되었으므로 IFTTT로 이동하여 블라인드를 닫고 열도록 요청할 때 가상 핀 V1 및 V2를 트리거 할 수있는 두 개의 애플릿을 생성하면됩니다. 다시 말하지만, 우리는 이것을 여러 번 수행했기 때문에 이것에 대해 자세히 설명하지 않습니다. 도움이 더 필요하면이 음성 제어 FM 라디오 프로젝트를 참조하고 adafruit 서비스를 웹훅으로 교체하기 만하면됩니다. 또한 참조를 위해 내 스 니펫의 스크린 샷을 공유하고 있습니다.
Arduino 기반 자동 창 블라인드 제어 – 데모
회로 및 3D 인쇄 인클로저가 준비되면 벽에 두 개의 구멍을 뚫어 장치를 벽에 조립하기 만하면됩니다. 내 장착 설정은 아래 그림에 나와 있습니다.
그 후 블라인드가 열린 상태인지 확인한 다음 회로의 전원을 켭니다. 이제 blynk 응용 프로그램이나 Google Assistant를 통해 블라인드를 닫을 수 있으며 작동합니다. 또한 blynk 응용 프로그램에서 타이머를 설정하여 하루 중 특정 시간에 블라인드를 자동으로 열고 닫을 수 있습니다.
프로젝트의 전체 작업은 아래 비디오에서 찾을 수 있습니다. 질문이 있으시면 아래 댓글 섹션에 자유롭게 작성하십시오. 또한 다른 기술 토론을 위해 포럼을 사용할 수 있습니다.