ASRock BC-250 보드 RAZER CORE X CHROMA 에 설치하기 5

주문 제작 하였던 브라켓이 도착하였다.  재질은 철이 아니고 알루미늄이라 그런지 상당히 가볍고 잘못하면 휘어질 것 같은 느낌이 든다. 제작하고 수령하기 까지 거의 3주라는 긴 시간이 걸렸다. 원래 이렇게 까지 걸리진 않는데 원인은 가공 엔지니어로 부터 온 메일을 확인하지 않고 3일이나 흐른 뒤에 답장을 하였고, 연말 기간도 걸려서 늦어져 버렸다. BC-250 카드에 기존 브라켓을 제거하고 새로 설계한 브라켓을 달아보니 아주 잘 맞았다. 버튼도 잘 눌리고 이더넷, USB, DP 포트 모두 사용에 문제가 없다. 이렇게 보고 나서 알아차린 부분이지만 하단 쪽에 고정 다리를 추가한다는 것을 빼먹었다. 다시 만드는 건 금액도 만만치 않았기 때문에 수정해서 발주를 다시 넣지는 않을 예정이고 튼튼하게 고정하기 위해 다른 솔루션을 찾아 보려고 한다. 사실 브라켓을 설계한 건 설치 문제도 있지만 완성된 시스템이 외관상으로 봤을 때 튀는 부분 없이 완성도가 높아 보이길 원했기 때문이다. 이렇게 보니 모양도 그럴싸하고 원래 이런 제품일지도 모른다는 착각도 든다. 타공 모양도 벌집 모양으로 했으면 더 완벽했겠지만 만드는 동안에는 그런 생각 없이 만들었기 때문에 큰 후회는 없다. 장착 되어있던 USB 허브 보드 대신 사용될 PCB도 도착하였다. 기존 허브 보드와 비교하자면 사이즈만 많이 커졌지만 브라켓과 호환이 되는지 확인하였고 장착하는 데는 문제가 없을 것으로 예상하고 있다.  지금 보니 오디오 앰프가 꼭 있어야 했는지 살짝 욕심이 과했다는 생각도 든다. 조립에 사용될 부품들은 아직 수급 중이며 차근차근 조립을 해 나갈 예정이다. 먼저 설계했던 PSU 전원 컨트롤 보드는 다음과 같이 장착 되었고 주요 동작에는 큰 이상이 없으나 몇 가지 수정 사항이 생겼다. 수정 사항은 허브 보드을 새로 설계하면서 발생한 것으로 두 보드 간에 별도의 통신 선이 연결된다. 사실 이렇게 기능을 분리할 필요는 없었는데 첫 번째로 만든 보드에서 하드웨어 적으로 누락된 기능이 있기 때문에 허...

LoRa 모듈 E22-900T22S Breakout Board 설계 2


지난번 설계에서 두 가지 업데이트 사항이 있다.
첫 번째로 3.3V 로 로직 컨버터를 거치지 않고 직접 통신할수 있는 포트를 구성하였다. 
이 포트를 통해 3.3V 동작의 MCU를 사용할때 좀 더 빠르게 회로를 구성  할수 있을것으로 기대한다.
두 번째로 동작 전압 레벨이 서로 다른 MCU 와 Lora 모듈이 통신할때 사용할 기준전압을 직접 인가 할 수 있도록 하였다.



보드에는 위 와같은 점퍼가 주어지는데 3.3V 나 5V 로 점프 시키지 않을 경우 VREF 핀에 사용할 소스전압을 직접 인가해 주어야한다. 특수한 경우가 아니라면 Vref를 사용하는일은 없을것 같다.


위사 진들은 이번에 제작한 테스트 모듈이다. 
왼쪽은 E22-900T22S 모듈이고 오른쪽은 ATmega328P/PB 3.3V 8Mhz 보드를 준비했다.
오른쪽의 보드는 ATmega328P/PB 를 모두 장착하여 사용할 수 있도록 설계했다.

E22-900T22S 보드의 전체 회로는 다음과 같다.
동작 전압 레벨이 서로 다른 장치와 통신 할 수 있도록 레벨 컨버터를 추가 하였고, 핀 헤더를 장착하여 다른 MCU 보드와 통신하거나 점퍼를 수정해서 USB 시리얼 통신을 할수 있도록 했다.



모듈의 테스트는 mischianti의 E22 라이브러리를 사용했다.

정리가 아주 잘 되어있는 라이브러리로 생각된다.

아래 코드는 라이브러리에 포함된 시리얼 입력을 LoRa 통신으로 전송하는 예제이다.

LoraATmega328p
AUXD3
RXD4
TXD5
M1D6/GND
M0D7/GND

송신측 코드

#include "Arduino.h"
#include "LoRa_E22.h"

LoRa_E22 e22ttl(4, 5, 3, 7, 6);

void setup() {
    Serial.begin(9600);
    delay(500);

    // Startup all pins and UART
    e22ttl.begin();

    Serial.println("Hi, I'm going to send message!");

    // Send message
    ResponseStatus rs = e22ttl.sendBroadcastFixedMessage(0x47, "Hello, world?");
    // Check If there is some problem of succesfully send
    Serial.println(rs.getResponseDescription());
}

void loop() {
    // If something available
    if (e22ttl.available() > 1) {
        // read the String message
#ifdef ENABLE_RSSI
        ResponseContainer rc = e22ttl.receiveMessageRSSI();
#else
        ResponseContainer rc = e22ttl.receiveMessage();
#endif
        // Is something goes wrong print error
        if (rc.status.code != 1) {
            Serial.println(rc.status.getResponseDescription());
        } else {
            // Print the data received
            Serial.println(rc.status.getResponseDescription());
            Serial.println(rc.data);
#ifdef ENABLE_RSSI
            Serial.print("RSSI: ");
            Serial.println(rc.rssi, DEC);
#endif
        }
    }
    if (Serial.available()) {
        String input = Serial.readString();
        ResponseStatus rs = e22ttl.sendBroadcastFixedMessage(0x47, input);
        // Check If there is some problem of succesfully send
        Serial.println(rs.getResponseDescription());
    }
}


수신측 코드

#define DESTINATION_ADDL 3

#include "Arduino.h"
#include "LoRa_E22.h"

LoRa_E22 e22ttl(4, 5, 3, 7, 6);

void setup() {
    Serial.begin(9600);
    delay(500);

    // Startup all pins and UART
    e22ttl.begin();
}

void loop() {
    // If something available
    if (e22ttl.available() > 1) {
        // read the String message
#ifdef ENABLE_RSSI
        ResponseContainer rc = e22ttl.receiveMessageRSSI();
#else
        ResponseContainer rc = e22ttl.receiveMessage();
#endif
        // Is something goes wrong print error
        if (rc.status.code != 1) {
            Serial.println(rc.status.getResponseDescription());
        } else {
            // Print the data received
            Serial.println(rc.status.getResponseDescription());
            Serial.println(rc.data);
#ifdef ENABLE_RSSI
            Serial.print("RSSI: ");
            Serial.println(rc.rssi, DEC);
#endif
        }
    }
    if (Serial.available()) {
        String input = Serial.readString();
        e22ttl.sendFixedMessage(0, DESTINATION_ADDL, 0x47, input);
    }
}



Comments

Popular posts from this blog

[POE] - 패스 오브 엑자일 획득키 F 의 사용법 (Path of Exile)

[AD보드] - 맥북 패널을 모니터로 만들기 ( LP154WP4-TLA1 )

[Arduino] - HC-06를 이용해 PC 와 Arduino 블루투스 연결