- 필요한 재료 :
- 회로도 :
- 처리를 사용하여 Android 애플리케이션 만들기 :
- 처리 코드 이해 :
- Arduino 프로그래밍 :
- EasyEDA를 사용한 회로 및 PCB 설계 :
- 온라인으로 샘플 계산 및 주문 :
- 블루투스 사인 보드 디스플레이 작동 :
길고 뻗어있는 고속도로 나 의사의 정문 등 어디든 정보를 제공하는 간판이 있습니다. 그러나 이러한 간판은 종종 지루하며 때때로 우리의 관심사에 따라 구성 할 수 없습니다. 그래서이 프로젝트 에서는 8 * 8 매트릭스 디스플레이를 사용하여 블루투스로 제어되는 사인 보드 를 만들 것 입니다. 이 프로젝트의 고유 한 기능은 사용자가 휴대폰에서 개별적으로 모든 64 개의 LED 를 제어 할 수있는 안드로이드 애플리케이션입니다. 이를 통해 사용자가 쉽게 맞춤형 디자인을 만들고 LED 디스플레이에 표시 할 수 있습니다. 흥미 롭죠? !! 그럼 시작하겠습니다…
필요한 재료:
- Arduino Pro mini
- MAX7219
- HC-05 블루투스 모듈
- 8 * 8 LED 매트릭스 디스플레이
- 20k 저항기
- DC 배럴 잭
회로도:
EasyEDA 애플리케이션을 사용하여 구축 된 이 Bluetooth 제어 LED 보드 의 회로도. 우리는 동일한 회로도를 사용하여 PCB 를 개발하고 EasyEDA를 사용하여 제작할 것입니다.
회로는 매우 간단합니다. 전체 프로젝트는 Arduino Board의 Raw 핀에 직접 제공되는 12V 어댑터로 전원이 공급됩니다. 이 원시 전압은 Bluetooth 모듈과 MAX7219 IC에 공급되는 + 5V로 조정됩니다. Bluetooth 모듈의 Tx 및 Rx 핀은 Arduino의 D11 및 D10에 연결되어 직렬 연결이 가능합니다.
디지털 핀 D5 ~ D7은 MAX7219 IC에 연결되어 SPI 통신을 통해 데이터를 송수신합니다. MAX7219의 ISET 핀은 20k 저항을 통해 하이 풀링됩니다.
이 프로젝트 에서는 PCB를 제작했습니다. PCB 의 설계 파일을 가져 와서 동일하게 사용하거나 브레드 보드에 회로를 구축 할 수 있습니다. 그러나 복잡성 때문에 8x8 디스플레이 모듈을 구입하거나 PCB를 사용하는 것이 좋습니다.
8x8 매트릭스 는 매우 유용한 디스플레이 모듈이며 많은 멋진 프로젝트에서 사용할 수 있습니다.
- Raspberry Pi로 8x8 LED 매트릭스 제어
- Arduino를 사용하여 8x8 LED 매트릭스에서 스크롤 텍스트 디스플레이
- Arduino를 사용하는 8x8 LED 매트릭스
- AVR 마이크로 컨트롤러와 인터페이싱하는 8x8 LED 매트릭스
처리를 사용하여 Android 애플리케이션 만들기:
Arduino 프로그래밍을 시작하기 전에 응답하기 위해 휴대폰에서 수신 할 데이터 유형을 알아야합니다. 이제 Android 애플리케이션이 생성되는 방법과이를 스마트 폰에서 사용하여 8x8 LED 매트릭스를 제어하는 방법을 살펴 보겠습니다.
이 프로젝트의 Android 애플리케이션은 Processing 소프트웨어를 사용하여 만들어졌습니다. 오픈 소스 개발 애플리케이션으로 안드로이드 애플리케이션과 시스템 애플리케이션을 개발할 수 있기 때문에 Arduino 또는 기타 마이크로 컨트롤러를 사용하여 흥미로운 프로젝트를 개발하는 데 쉽게 다운로드하여 사용할 수 있습니다. Processing을 사용하여 이미 몇 가지 프로젝트를 수행했으며 아래 링크를 클릭하여 확인할 수 있습니다.
- 처리를 사용하는 DIY FM 라디오
- Arduino를 사용한 가상 현실 / 제스처 제어
- Arduino를 사용하는 개인 채팅방.
- Processing APP 및 초음파 센서를 사용한 Arduino 레이더 시스템
- Arduino를 사용한 실시간 얼굴 감지 및 추적
- Arduino 및 프로세싱을 사용하는 DIY 속도계
- Arduino 가속도계를 사용한 탁구 게임
- Arduino를 사용하는 Biped 로봇
- DIY Arduino 열 화상 카메라
주제로 돌아가서 Android 애플리케이션의 전체 코드를 설명하는 것은 불가능하므로 직접 처리를 학습 한 다음 코드를 살펴보고 작동 방식을 이해해야합니다. 따라서 학습 과정을 건너 뛰려는 사람들은 아래 링크에서 Android 응용 프로그램을 다운로드 할 수 있습니다.
- Android 애플리케이션 다운로드
다음은 Android 애플리케이션 의 인터페이스입니다.
APK 파일은 모든 안드로이드 애플리케이션에 직접 설치할 수 있으며 다른 애플리케이션처럼 실행할 수 있습니다. 그러나 HC-05 Bluetooth 장치의 이름이 "HC-05"인지 확인하십시오. 그래야만 작동 할 수 있기 때문입니다.
처리 코드 이해:
화면 뒤에서 무슨 일이 일어나는지 알고 싶은 사람은 더 읽을 수 있고 다른 사람은 다음 제목으로 건너 뛸 수 있습니다. 기본적으로 Android 애플리케이션은 시작하는 동안 "HC-05"라는 Bluetooth 장치에 연결되고 64 개의 LED 세트를 원 형태로 표시합니다. 그런 다음 사용자가 원을 누르면 원이 빨간색으로 바뀌고 원 번호가 Bluetooth를 통해 Arduino로 전송되고 원의 번호를 수신하면 Arduino가 LED를 켭니다. 더 잘 이해하기 위해 Processing 프로그램의 중요한 라인을 살펴 보겠습니다. Android 애플리케이션의 전체 코드는 아래 링크에서 다운로드 할 수 있습니다.
- Android 애플리케이션 용 처리 코드
클래스와 객체를 사용하여 64 개의 LED를 표시하므로 각 LED를 쉽게 처리 할 수 있습니다. 아래 코드에서 볼 수 있듯이 for 루프를 사용하여 배열을 사용하여 1에서 64까지 반복합니다. 이것은 각 LED가 X 위치, Y 위치 및 색상의 자체 값을 가지며 쉽게 변경할 수 있습니다.
// dipslay 모든 LED가 (전 1 = INT; I <= 64; I ++)을위한 led_array.display을 (); // 모든 LED가 표시됨 class Led { float X_Pos; 부동 Y_Pos; 색상 색상; // CONSTRUTOR Led (float tempx, float tempy, color tempc) { X_Pos = tempx; Y_Pos = 템피; 색상 = tempc; } void display () { fill (색상); ellipse (X_Pos, Y_Pos, led_dia, led_dia); } }
LED는 디스플레이와 동일한 순서로 화면에로드됩니다. 각 LED는 LED의 직경과 동일한 거리로 분리되어 사용자가 현재 선택한 LED를 쉽게 구분할 수 있습니다. 아래 프로그램에서 볼 수 있듯이 각 요소가 LED의 X, Y 위치 및 색상 정보를 보유하는 배열을 만듭니다.
void load_leds () { led_array = 새로운 Led; int a = 1; for (int j = 0; j <= 7; j ++) { float y = height / 6 + j * (led_dia * 1.5); for (int i = 0; i <= 7; i ++) { float x = (width / 6) + i * (led_dia * 1.5); // fill (255); // ellipse (x, y, led_dia, led_dia); led_array = new Led (x, y, color (255,255,255)); a ++; } } }
프로그램의 주요 단계 는 사용자가 LED를 눌렀는지 확인하고, 그렇다면 LED의 색상을 변경하고 Bluetooth를 통해 LED 번호를 전송해야합니다. 이제 각 LED의 위치와 색상을 쉽게 지정할 수 있으므로 사용자가 누른 위치의 X, Y 값을 LED의 X, Y 값과 비교하기 만하면됩니다. 값이 서로 합쳐지면 LED 상태를 변경하고 아래와 같이 블루투스를 통해 번호를 보냅니다.
// 마우스가 led 위에 있는지 확인 // 예일 경우 (int i = 1; i <= 64; i ++) { if ((mouseX <(led_array.X_Pos + led_dia / 2)) && (mouseX> (led_array.X_Pos-led_dia / 2)) && (mouseY <(led_array.Y_Pos + led_dia / 2)) && (mouseY> (led_array.Y_Pos-led_dia / 2))) {led_array = new Led (led_array.X_Pos, led_array. Y_Pos, led_color); 바이트 데이터 = {byte (i)}; bt.broadcast (데이터); } }
이 외에도 프로그램은 전체 LED 를 모두 꺼서 전체 LED 를 재설정 할 수 있으며 LED를 빨간색 (ON) 또는 흰색 (OFF)으로 설정하여 토글 버튼도 있습니다. 토글 버튼이 표시되고 입력을 기다립니다. 누르면 해당 작업이 수행됩니다. 동일한 작업을 수행하는 코드는 그리기 루프 내부에서 호출되는 함수로 아래에 나와 있습니다.
void load_buttons () { rectMode (CENTER); textAlign (CENTER, CENTER); noStroke (); 채우기 (# 1BF2D4); rect (너비 / 2- 너비 / 4, 높이 /1.3, 너비 / 4, 높이 / 12); 채우기 (0); text ("Reset", 너비 / 2- 너비 / 4, 높이 /1.3); // 버튼 1 if (red == true) {fill (# 080F89); rect (너비 / 2 + 너비 / 4, 높이 /1.3, 너비 / 4, 높이 / 12); fill (255,0,0); text ("RED", 너비 / 2 + 너비 / 4, 높이 /1.3); } // 버튼 2 if (red == false) {fill (# 080F89); rect (너비 / 2 + 너비 / 4, 높이 /1.3, 너비 / 4, 높이 / 12); fill (255); text ("WHITE", width / 2 + width / 4, height / 1.3);} // 버튼 2 } void read_buttons () { if (mousePressed && click_flag == true) { color_val = get (mouseX, mouseY); click_flag = false; if (color_val ==-14945580) { 바이트 데이터 = {0}; bt.broadcast (데이터); println ("RESET"); load_leds (); // 모든 LED를 위치와 색상으로로드 } if (color_val ==-16248951) { 바이트 데이터 = {100}; bt.broadcast (데이터); if (red == true) red = false; 그렇지 않으면 (red == false) red = true; println ("TOGGLE"); } color_val = 0; } }
Arduino 프로그래밍:
전체 아두 이노 프로그램 이를위한 블루투스 무선 보드 프로젝트가 조절 이 화면의 하단에 제공됩니다; 직접 사용하고 보드에 업로드 할 수 있습니다. 프로그램의 중요한 라인은 아래에 설명되어 있습니다.
블루투스 모듈의 핀 (10, 11)에 접속되고, 따라서 우리는 이러한 핀들에 직렬 통신을 가능하게하는 소프트웨어를 사용하는 직렬 그리고, 우리는이 핀으로부터 데이터를 수신 할 수있다. (이)라는 변수에 블루투스 모듈에서 수신 된 데이터과 저장을 얻을 들어오는 . 들어오는 값이 "0"이면 아래 코드를 사용하여 모든 LED 를 끕니다.
if (BT.available ()) { 수신 = BT.read (); Serial.println (incoming); if (incoming == 0) m.clear (); // 디스플레이를 지 웁니다.
들어오는 값을 사용하여 사용자가 휴대폰 에서 눌렀 던 LED 와 해당 LED를 켜거나 끌 날씨를 결정해야합니다. 따라서 값이 100인지 확인합니다. 값이 10이면 사용자가 LED 색상을 토글하도록 요청한 것입니다. 그래서 우리는 LED를 켜야할지 꺼야하는지 알기 위해 변수를 빨간색으로 토글합니다.
else if (incoming == 100) // LED를 켜거나 꺼야하는지 확인 { if (red == true) red = false; 그렇지 않으면 (red == false) red = true; Serial.print ("빨간색:"); Serial.println (빨간색); }
마지막으로 값이 65보다 크면 사용자가 LED를 눌렀 음을 의미합니다. 1부터 64까지의 숫자에 따라 사용자가 눌렀 던 LED를 결정해야합니다. 해당 LED를 토글하려면 해당 LED의 Row 및 Column 값이 필요합니다.이 값은 각각 변수 X와 Y에 계산 및 저장되고 아래 코드에 표시됩니다. 마지막으로 변수 빨간색의 값에 따라 사용자 요청에 따라 LED를 켜거나 끕니다.
다른 경우 (수신 <= 64) {// ON가 계산 RO OFF LED가 토글 = TRUE; Y = 들어오는 / 8; X = 들어오는-(Y * 8); if (incoming % 8 == 0) {X = 8; Y-= 1;} Serial.println (X-1); Serial.println (Y); if (red == true) m.setDot ((X-1), (Y), true); // LED ON else if (red == false) m.setDot ((X-1), (Y), false); // LED 꺼짐 }
EasyEDA를 사용한 회로 및 PCB 설계:
이 Bluetooth Controlled Matrix 디스플레이 를 설계하기 위해 EasyEDA라는 온라인 EDA 도구를 선택했습니다. 나는 이전에 EasyEDA를 여러 번 사용했고, 좋은 발자국 모음을 가지고 있고 오픈 소스이기 때문에 사용하기 매우 편리하다는 것을 알았습니다. PCB를 설계 한 후 저렴한 PCB 제조 서비스를 통해 PCB 샘플을 주문할 수 있습니다. 또한 전자 부품 재고가 많고 사용자가 PCB 주문과 함께 필요한 부품을 주문할 수있는 부품 소싱 서비스를 제공합니다.
회로 및 PCB를 설계하는 동안 다른 사용자가 복사하거나 편집하고 작업의 이점을 얻을 수 있도록 회로 및 PCB 설계를 공개 할 수도 있습니다. 또한이 회로에 대해 전체 회로 및 PCB 레이아웃을 공개했습니다. 아래 링크:
easyeda.com/circuitdigest/8x8-led-matrix-display-control-with-bluetooth
'Layers'창에서 레이어를 선택하여 PCB의 모든 레이어 (Top, Bottom, Topsilk, Bottomsilk 등)를 볼 수 있습니다.
EasyEDA 의 Photo View 버튼을 사용하여 PCB의 제작 후 모습을 볼 수도 있습니다.
온라인으로 샘플 계산 및 주문:
이 Bluetooth Controlled Matrix PCB의 설계를 완료 한 후 JLCPCB.com을 통해 PCB를 주문할 수 있습니다. JLCPCB에서 PCB를 주문하려면 Gerber File이 필요합니다. PCB의 Gerber 파일을 다운로드하려면 EasyEDA 편집기 페이지에서 Fabrication Output 버튼을 클릭 한 다음 EasyEDA PCB 주문 페이지에서 다운로드하십시오.
이제 JLCPCB.com으로 이동하여 Quote Now 또는 버튼을 클릭하면 주문하려는 PCB 수, 필요한 구리 층 수, PCB 두께, 구리 무게 및 스냅 샷과 같은 PCB 색상을 선택할 수 있습니다. 아래에 표시:
모든 옵션을 선택한 후 "장바구니에 저장"을 클릭하면 EasyEDA에서 다운로드 한 Gerber 파일을 업로드 할 수있는 페이지로 이동합니다. Gerber 파일을 업로드하고 "장바구니에 저장"을 클릭하십시오. 마지막으로 Checkout Securely를 클릭하여 주문을 완료하면 며칠 후 PCB를 받게됩니다. 그들은 $ 2의 매우 낮은 비율로 PCB를 제작하고 있습니다. 그들의 빌드 시간은 또한 3-5 일의 DHL 배송으로 48 시간 인 매우 적습니다. 기본적으로 주문 후 일주일 이내에 PCB를 받게됩니다.
PCB를 주문한 후 며칠 후 아래 그림과 같이 멋진 포장재로 PCB 샘플을 얻었습니다.
그리고이 조각들을 얻은 후 PCB 위에 필요한 모든 구성 요소를 납땜했습니다.
내 PCB에서 8 * 8 디스플레이 모듈에 대해 잘못된 풋 프린트를 선택하여 무뚝뚝한 실수를 했으므로 그림과 같이 디스플레이를 장착하기 위해 Perf 보드를 사용해야했습니다. 그러나 이제 설치 공간은 PCB의 업데이트이며 수정 된 PCB를 주문하고 디스플레이 모듈을 쉽게 장착 할 수 있습니다.
블루투스 사인 보드 디스플레이 작동:
PCB를 얻거나 브레드 보드에 연결하여 하드웨어를 준비 하면 페이지 끝에 제공된 Arduino 프로그램 을 사용하여 Arduino Board에 업로드합니다. 안드로이드 응용 프로그램 APK 파일 도 위의 제공, 사용하고 원하는 안드로이드 장치에 응용 프로그램을 설치합니다.
하드웨어에 전원을 공급하고 휴대폰에서 HC-05 장치 이름을 검색하여 페어링합니다. 패스 키는 기본적으로 1234입니다. 그 후 방금 설치 한 응용 프로그램을 엽니 다. 응용 프로그램 의 화면 상단에 “ connected to HC-05 ” 가 표시되어야합니다. 그러면 화면의 LED를 터치 할 수 있으며 보드에서도 동일한 LED가 켜져 있음을 알 수 있습니다.
당신은 또한 수 있습니다 재설정 눌러 모든 LED를 끄 버튼을 토글 버튼을 눌러 또는 특정 LED 끄려면 결정한다. 기본적으로 누르는 LED는 켜집니다. 프로젝트의 전체 작업은 아래 비디오 에서 찾을 수 있습니다. 작동하는 데 문제가있는 경우 아래 의견란을 사용하거나 포럼에 글을 작성하여 더 많은 기술적 인 도움을 받으십시오. 튜토리얼을 이해하고 재미있게 만드셨기를 바랍니다.