[2편. 로라 모듈이 연결된 보드끼리 연결]
0. 계획 순서
tx측에 코드도 포함된 코드를 보드에 업로드 해서 test해 볼 것이다.
내가 테스트 한 tx코드는 타이머 등 기타 관련 코드도 합쳐져 있는 코드다.
먼저 배열 값 주고받기 테스트를 해서
통신 상태 OK 값을 return 받는다.
송신을 하게 되면 30~49까지의 값이 들어와야 하고,
우리가 선택한 rx 배열의 index에 따라
30, 31, 32, 48이 들어올 것이다.
1. 코드 알고리즘 정리
LoRa 개체인 myLoRa를 만들고
myLoRa = newLoRa()를 통해 생성자를 호출한다.
myLoRa를 통해 핀설정을 해주고
그 밑에는 주파수와 대역폭 같은 것을 설정할 수 있다.
주파수의 경우 433Mhz를 사용할 것이기 때문에 바꾸지 않았다.
spredingFactor는 확산계수인데, 이것을 통해 통신을 얼마나 빠르게 할지를 조절할 수 있다.
확산계수가 작을수록 통신 속도는 빨라지게 되는데
그에 따라 통신거리도 줄어드는 trade off 관계이기 때문에
잘 비교해가며 조절해야한다.
LoRa_reset을 통해 초기화를 하고
LoRa_init함수를 통해 모듈의 메모리에 위의 값들을 저장하게 된다.
이 LoRa_init 함수는 모듈 응답 상태를 나타내는 “상태 코드”를 반환하는데
이 값을 통해 문제점을 파악할 수 있다.
2. 상태 코드 RETURN 받기
이 LoRa_init 함수는 모듈 응답 상태를 나타내는 “상태 코드”를 반환하는데
이 값을 통해 문제점을 파악할 수 있다.
200(LORA_OK)은 모든 것이 정상이라는 의미이고,
404(LORA_NOT_FOUND)는 마이크로 컨트롤러가 LoRa 모듈과 통신 할 수 없는 것을 의미하고
503(LORA_UNAVAILABLE)은 LoRa의 설정(예: NSS 포트, RESET 포트)이 올바르지 않다는 것을 의미한다.
코드 404가 나왔다...
문제점을 찾아보니
1. 핀이 헐거워서 Tx측 RESET 핀이 빠져있었다. -> 튼튼한 점퍼선으로 연결했다.
2. 보레이트가 빨라서 그랬을 수도 있다. -> 설정을 다음과 같이 바꿨다.(Tx, Rx측 둘 다)
보레이트가 351.56kBit/s로
내려간 것을 확인했다.
그리고 다시 code gen을 하고 테스트 했다.
그 결과
통신 정상 코드 200 return받는 것 까지 확인했다.
여기서 부족한 점은,
내가 배열에 대한 이해도가 부족해서 원하는 값을 주고받는 것이 부족하다.
그리고 해봐야 할 것이
- 거리 테스트
- delay 테스트
여기까지 회로를 정리하면,
'프로젝트 기록 > 23SEMA_Control_STM32' 카테고리의 다른 글
[STM32] HAL_UART_Transmit()/ Sprintf 사용법 (0) | 2023.01.12 |
---|---|
[LoRa] 3편. 통신을 위한 안테나 정리 (0) | 2023.01.11 |
[STM32제어] UART 통신, teraterm 이용해서 값 주고받기 (0) | 2023.01.10 |
[STM32] teraterm에서 시리얼 입력이 안될 때 (0) | 2023.01.10 |
[STM32 CUBE IDE] 프로젝트에 라이브러리 파일 추가하기 (1) | 2023.01.10 |