2013-07-29 4 views
0

Arduino (Uno, 현재), GPS (Sparkfun GS407) 및 GSM 모뎀 (Sparkfun ADH8066)으로 구성된 애완 동물 프로젝트를 만들고 있습니다. 생각은 SMS를 모뎀에 보낼 수 있고 그것이있는 곳에서 답장을 보내도록 할 수 있습니다.Arduino SoftwareSerial connections

문제는 GPS와 GSM 모듈을 모두 꽂으면 시리얼 통신이 엉망이되기 시작한다는 것입니다. 이제 나는 이것이 왜 일어나고 있는지에 대한 두 가지 아이디어를 가지고 있습니다.

1) 직렬 통신 (9600 보드 만 사용)을 사용할 때는 분명히 좋은 근거가 필요합니다. 나는 전자 공학에 익숙하지 않아서 내가 어떻게 나의 근거를 향상시킬 지 확신하지 못한다.

2) SoftwareSerial은 한 번에 송수신하는 핀 세트 만 지원한다는 어딘가 (아마도 here)를 읽었습니다. GPS가 가짜 양의 데이터를 분출하는 경우 문제가 될 수 있습니다.

내가 이상한 직렬 출력을보고있는 이유에 대해 누구든지 언급 할 수 있습니까?

답변

0

접지가 문제가되지 않아야합니다. 연결된 근거가있는 한 괜찮을 것입니다. Sparkfun 보드는 민감한 접지 문제를 처리합니다.

이상한 데이터는 거의 확실하게 여러 개의 소프트웨어를 사용하고 있으므로 사용자가 발견 한대로 권장되지 않습니다.

한 가지 해결책은 하나의 장치에 하드웨어 직렬 포트를 사용하고 다른 장치에는 소프트웨어 직렬 포트를 사용하는 것입니다. (하드웨어보다 GPS가 GSM보다 더 자주 업데이트되기 때문에)

+0

감사합니다. 내가 사용할 코드를 제안 해 주시겠습니까? 효율적인 코드를 찾기 위해 고심하고 있으며 새로운 SMS 메시지를 위해 GSM 모뎀을 직렬로 폴링하지 않습니다. – mabnz

+0

이상적인 솔루션은 GSM 모뎀이 (전송 된 회선을 나타내는) 종료 문자를 전송할 때 소프트웨어 업데이트 인터럽트가 자동으로 해당 업데이트를 처리하기 위해 호출하려는 일부 기능을 호출하도록 소프트웨어 설치를 설정하는 것입니다. 이렇게하면 available() 및 read()를 계속해서 수행 할 필요가 없어집니다. 그러나 이렇게하려면 라이브러리를 수정해야하지만 그렇게 어렵지는 않습니다. 라이브러리에 코딩 된 인터럽트 서비스 루틴 (ISR)이 있으므로 편집하여 바이트가 종료 문자 (\ 0 또는 널 종료 자) 일 경우 X 함수를 실행할 수 있습니다. – user2461391