제조공정
| × | 1 | ||||
| × | 4 | ||||
| × | 4 | ||||
| × | 4 | ||||
| × | 1 | ||||
| × | 1 |
| ||||
|
|
이 프로젝트는 단일 Arduino 출력 핀에서 여러 릴레이 또는 기타 액추에이터를 제어하는 방법에 관한 것입니다.
이 솔루션은 사용 가능한 Arduino 출력 핀의 양이 충분하지 않고 릴레이와 같은 더 많은 액추에이터를 단일 출력 핀에서 병렬로 제어해야 하는 일반적인 상황에 사용할 수 있습니다.
작동 원리는 여러 NeoPixels(WS2812B 컨트롤러 칩이 있는 SMD5050 LED)의 LED 스트립 사용을 기반으로 합니다. 모든 픽셀은 LDR(Light Dependent Resistor)과 함께 결합되어 DIY 광커플러를 생성합니다(원하는 만큼, LED 스트립 길이에 의해서만 제한됨, 예:300픽셀 및 사용 가능한 5V 전원 공급 장치). 이러한 방식으로 직렬에서 병렬로의 변환이 생성됩니다(1에서 다수로)
모든 개별 LED는 하나의 동일한 Arduino 출력 핀에서 지정됩니다. 각 LDR(27kOhm 저항과 직렬로)은 5V 릴레이에 연결됩니다. 이러한 방식으로 Adafruit NeoPixel 라이브러리를 사용하여 1개의 Arduino 출력 PIN에서 많은 NeoPixel/LDR 조합을 제어할 수 있습니다. 릴레이 대신 LDR을 모든 회로에 대한 입력으로 사용하여 다른 액추에이터 장치를 연결할 수도 있습니다.
더 큰 계획의 일부인 이 프로젝트의 경우 ESP32(NodeMCU)가 사용됩니다. 그러나 일반 Arduino Uno(또는 거의 모든 다른 모델)가 작업을 수행합니다.
1단계:NeoPixel 광커플러 만들기
DIY 광커플러는 다음 재료로 만들어집니다.
<울>
참고:점의 분리는 LED의 분리와 같습니다.
"빛 누화를 피하기 위해 각 개별 LED의 빛을 다른 LED의 LDR과 분리하는 것이 중요합니다. ." 실제로 이것은 거의 불가능하므로 "켜짐" 상태의 각 LED에서 방출되는 빛의 양이 소프트웨어에서 낮은 수준으로 설정되었습니다.
사용된 LED 스트립은 10개의 LED 길이이지만 이 프로젝트에서는 4개의 LDR과 함께 4개의 픽셀만 사용합니다(간단함을 유지하기 위해)
2단계:전자 설정
브레드보드 설정에서는 ESP32(NodeMCU)를 사용했지만 모든 Arduino가 작업을 수행할 수 있습니다.
Fritzing으로 만든 회로도는 다음과 같습니다.
실제로는 다음과 같습니다.
보시다시피 1개의 출력 핀만 4개의 릴레이를 병렬로 제어하는 데 사용됩니다. 이 숫자는 최대 300까지 올라갈 수 있습니다! (5m 길이의 스트립에서 사용 가능한 LED 수만큼).
ESP32 장치는 3.3V 레벨(온보드 3.3V 전압 조정기)에서 작동하는 반면 5050 LED가 있는 LED 스트립은 5V에서 실행됩니다. ESP32에는 5V 전원이 공급됩니다(5V 어댑터 또는 5V의 USB 포트를 통해 전원 은행). NeoPixel LED는 ESP32의 5V 핀에서 직접 5V 공급을 받으며 사용되는 릴레이도 5V 유형입니다.
이 예에서는 4개의 옵토커플러 회로가 각각 하나의 230V 램프에 연결된 4개의 릴레이를 제어하는 데 사용됩니다.
사용된 출력 핀은 GPIO PIN 21이고 릴레이는 픽셀 번호 1, 2, 3, 4를 통해 제어됩니다.
3단계:소프트웨어 만들기
Arduino Sketch의 루프 기능은 간단하며 각 릴레이를 제어하여 램프를 전환하는 다양한 패턴을 표시하는 여러 "for" 루프로 구성됩니다.
특정 릴레이를 제어하려면 루프 코드 내에서 다음 함수가 호출됩니다.
무효 ControlRelais(int RelaisNo, bool RelaisState) { strip.setPixelColor(RelaisNo, RelaisState*15, RelaisState*15, RelaisState*15); // RelaisNo에 속한 LED 켜기/끄기 strip.show(); Serial.print(" RelaisNo "); Serial.print(RelaisNo); Serial.print(" ="); Serial.println(RelaisState); }코드>
실제로 이 기능은 특정 LED를 켜거나 끄는 것뿐입니다.
LED 주소는 해당 릴레이 번호에 해당합니다. LED는 LDR을 통해 릴레이를 트리거하기에 충분할 정도로 낮은 조명 수준에서 켜져 있으므로 빛 공해를 방지합니다(위에서 "빛 누화"라고도 함).
모든 노력과 구체적인 스케치의 결과는 다음 영화에 나와 있습니다.
섹션> <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">
/* 단일 Arduino 출력 핀에서 여러 Relais 또는 기타 액추에이터를 제어하기 위한 이 코드는 Pierre가 개발 및 생산했습니다. Pennings(2018년 12월) 이 솔루션은 사용 가능한 Arduino 출력 핀의 양이 충분하지 않고 Relais와 같은 더 많은 액추에이터를 병렬로 제어해야 하는 일반적인 상황에 사용할 수 있습니다. 작동 원리는 여러 Neopixel의 스트립을 사용하는 것을 기반으로 합니다. (WS2812B 컨트롤러 칩이 있는 SMD5050 LED) 모든 픽셀은 LDR(Light Dependent Resistor)과 함께 결합되어 DIY 광커플러 생성 모든 개별 LED는 하나의 동일한 ARDUINO 출력 핀과 LDR(27kOhm 저항과 직렬로 ), 5V Relais에 연결됩니다. 이러한 방식으로 Adafruit Neopixel 라이브러리를 사용하여 1개의 Arduino 출력 PIN에서 많은 Neopixel/LDR 조합을 제어할 수 있습니다. 더 큰 계획의 일부인 이 프로젝트의 경우 ESP 32(NodeMCU)가 사용되지만 일반 ARDUINO UNO(또는 거의 모든 다른 모델)가 작업을 수행합니다(물론 코드의 설정을 조정해야 합니다. 예를 들어 핀 할당이 다르기 때문에) ESP 32 장치는 3.3V 레벨(온보드 3.3V 전압 조정기)에서 작동하는 반면 5050 LED가 있는 LED 스트립은 5V에서 실행됩니다. ESP 32에는 5V 전원이 공급됩니다. 5V 어댑터 또는 5v 파워뱅크의 USB 포트) Neopixel LED는 ESP 32의 5V 핀에서 직접 5V 전원을 공급받으며 사용된 Relais도 5V 유형입니다. 이 예에서는 10개의 LED로 구성된 LED 스트립이 사용되며, 단순성을 위해 각각 하나의 230V LEDLamp에 연결된 4개의 Relais를 제어하는 4개의 광커플러 회로만 만들어집니다. 사용된 출력 핀은 GPIO PIN 21이고 RELAIS는 픽셀 번호 1,2,3,4를 통해 제어됩니다. 이 코드는 GPL3+ 라이선스에 따라 라이선스가 부여됩니다.*/#include섹션>#define NUM_LEDS 10////// ////////////////////////////////////////// GPIO 핀 초기화 int RelaisPin =21; // 핀 21은 제어 데이터(0 -3.3 V)를 Relaisint에 전송합니다. RelaisNo =0; // 제어할 해당 Relais의 변수bool RelaisState =false;int r =0;Adafruit_NeoPixel strip =Adafruit_NeoPixel(NUM_LEDS, RelaisPin, NEO_RGB + NEO_KHZ800);///////////////// ////////////////////////////////// 뒤에 오는 설정 코드는 "전원 켜기" 이후에 한 번 실행됩니다. RESETvoid setup() { Serial.begin(115200); 핀모드(릴레핀, 출력); // 출력으로 RelaisPin을 초기화합니다. strip.begin(); // 모든 LED를 "꺼짐"으로 초기화 for (int t =0; t <10; t++) { strip.setPixelColor(t, 15, 15, 15); // 전원을 켠 후 스트립의 모든 LED가 한 번 테스트됩니다. strip.show(); // WS2812 LED 스트립의 색상 순서는 R,G,B 지연(500)입니다. strip.setPixelColor(t, 0, 0, 0); // 그리고 다시 꺼짐 }}///////////////////////////////////////////// ///////// 뒤에 오는 루프 코드는 "전원 끄기" 또는 RESETvoid loop(){ for (int r =1; r <5; r++) // 4개의 Relais를 켤 때까지 반복적으로 실행됩니다. 형식 1에서 4까지 차례로 계산 {지연(500); ControlRelais(r, true); 지연(500); ControlRelais(r, false); }for (int k =4; k> 0; k--) // 4 Relais를 차례로 켜기 형식 4 to 1 { delay (500); ControlRelais(k , true); 지연(500); ControlRelais(k, false); } for (int r =1; r <5; r++) // 패턴의 4개 릴레이 켜기 { for (int k =4; k> 0; k--) { delay (500); ControlRelais(r, true); ControlRelais(k , true); 지연(500); ControlRelais(r, false); ControlRelais(k, false); } }}///////////////////LOOP의 끝/////////////////////////// ////////////////////////////////////////////////////// /////////////////////////////////// 이하 Relais를 제어하기 위한 함수(루프 내에서 호출)를 따릅니다. 무효 ControlRelais (int RelaisNo, bool RelaisState) { strip.setPixelColor(RelaisNo, RelaisState*15, RelaisState*15, RelaisState*15); // RelaisNo에 속한 LED 켜기/끄기 strip.show(); Serial.print(" RelaisNo "); Serial.print(RelaisNo); Serial.print(" ="); Serial.println(RelaisState); }
제조공정
구성품 및 소모품 Arduino Nano R3 × 1 LED 매트릭스 × 1 포토 저항기 × 1 브레드보드(일반) × 1 DS3231 × 1 앱 및 온라인 서비스 Arduino IDE 이 프로젝트 정보 몇 미터 떨어진 방의 시계 디스플레이를 읽으려면 이러한 LED 매트릭스 디스플레이가 필요합니다. 좋은 가격에 4셀 디스플레이를 구입한 후 Hackster에서 사용 가능한 프로젝트를
이 Arduino Tutorial에서는 RGB LED가 무엇이며 Arduino 보드와 함께 사용하는 방법을 배웁니다. 다음 동영상을 보거나 아래에 작성된 튜토리얼을 읽을 수 있습니다. RGB LED란 무엇입니까? RGB LED는 빨강, 초록, 파랑의 3가지 기본 색상을 혼합하여 다양한 색상을 낼 수 있습니다. 따라서 실제로 단일 케이스에 포장된 빨간색, 녹색 및 파란색 3개의 개별 LED로 구성됩니다. 이것이 4개의 리드가 있는 이유입니다. 3가지 색상 각각에 대해 하나의 리드가 있고 RGB LED 유형에 따라 하나의 공통 캐소