본문 바로가기
프로젝트 기록/23SEMA_Control_STM32

[LoRa] 2편. 로라 모듈이 연결된 보드끼리 연결

by 소요이 2023. 1. 11.
728x90

[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 테스트

 

여기까지 회로를 정리하면,

LoRa 회로 정리한 사진

 

 

F446RE 보드에 핀 연결