모든 소프트웨어 직렬 라이브러리의 차이점은 무엇입니까? Arduino Nano와 호환되는 것은 무엇입니까?


11

너무 많은 소프트웨어 직렬 라이브러리가 있습니다. 차이점은 무엇입니까? Arduino Nano와 함께 사용할 수있는 것은 무엇입니까? Arduino Nano의 경우 보드 속도 115200의 하드웨어 직렬 포트 1 개와 소프트웨어 직렬 포트 1 개가 필요합니다.

Arduino Nano의 어느 핀에서 소프트웨어 시리얼 라이브러리를 사용할 수 있습니까?


I2C 키패드로 neoswserial을 사용하고 있지만 key=getKey();GSM (핀 2 & 3 Arduino Uno 사용)을 추가하면 SMS가 수신되지 않습니다. 도와주세요, 제발.
Nguyễn Trường Hải

답변:


16

이 답변 에는 4 가지 기본 선택 사항이 있습니다.

  • HardwareSerial항상 최고입니다. 미리 정의 된 Serial변수를 사용하십시오 . 일부 아두 이노에서라는 추가 HardwareSerial 포트,있다 Serial1, Serial2등 나노에만있다 Serial.

  • AltSoftSerial, 최고의 소프트웨어 시리얼 라이브러리. 하나의 인스턴스 만 허용되며 입력 캡처 핀 중 하나 (나노의 경우 핀 8 및 9)에 사용해야합니다.

  • NeoSWSerial다음은 최고입니다. 두 핀에서 작동하지만 전송 속도 9600, 19200 및 38400에서만 작동합니다.

  • SoftwareSerial최악의 선택입니다. 두 개의 핀에서 작동하지만 매우 비효율적입니다. 문자를 보내 거나 받는 전체 시간 동안 인터럽트를 비활성화 하고 다른 모든 직렬 선택과 달리 동시에 두 가지를 모두 수행 할 수는 없습니다. 이것은 스케치의 다른 부분, 다른 장치 통신 또는 라이브러리를 방해 할 수 있습니다.

보다 느린 전송 속도를 사용할 수있는 경우 디버그 인쇄를 켠 상태로 유지 하거나 장치에 Serial사용할 수 있습니다.AltSoftSerialNeoSWSerial

그러나 115200을 사용해야하는 경우 신뢰할 수있는 유일한 방법은 Serial입니다. 비록 AltSoftSerialSoftwareSerial그 전송 속도를 허용, 그들은 보낼 수 없습니다 / 제대로 데이터를받을 수 있습니다.

이 경우 Serial115200 장치를 사용 하는 것이 좋습니다 . ISP를 사용하지 않는 한 USB를 통해 새 스케치를 업로드하려면 장치 연결을 끊어야합니다.

그런 다음 AltSoftSerial또는 NeoSWSerial디버그 문에 사용 하십시오. PC에 연결하려면 선택한 핀에 TTL 직렬 -USB 어댑터 (일명 FTDI)가 필요합니다. Serial Monitor또는 다른 터미널 에뮬레이터 프로그램 이 USB의 COM 포트에서 읽습니다.


AltSoftSerial은 성능 및 특성면에서 동일합니까? NeoICSerial이 기능을 추가 한 것만입니까? 나는 완전히 이해하지 못했다. github.com/SlashDevin/NeoICSerial
William Roy

2
@WilliamRoy, NeoICSerialattachInterrupt메소드를 추가합니다 AltSoftSerial. 인터럽트에서 각 문자를 처리 할 필요는 없습니다. 문자 를 사용할 수 있으면를 사용 AltSoftSerial하여 호출하면 됩니다. 마찬가지로 코어에 동일한 기능을 추가합니다 . 그러나 완전히 다른 클래스입니다 ( 기능 도 있습니다). available()read()NeoHWSerialattachInterruptHardwareSerialNeoSWSerialattachInterrupt
슬래시 dev

-2

직렬 소프트웨어는 모든 비트를 순서대로 저장하기 위해 등록 된 기본 포트와 다른 직렬 포트를 에뮬레이션하고 메인 루프를 호출하는 플래그를 설정합니다. 소프트웨어 직렬은 모든 비트를 하나씩 수신해야하므로 디지털 포트를 읽고 특정 시간 동안 기다렸다가 디지털 핀을 다시 읽어야합니다. 10 번 (1 시작 비트, 8 데이터 비트 및 1 종료 비트)으로 만들어야합니다. 시간이 매우 중요합니다. 소프트웨어 시리얼을 사용하려면 성능에 대해 더 걱정해야합니다.

RX 핀에 디지털 인터럽트 핀을 사용할 수 있으므로 아래쪽 경계 (시작 비트)에서 "호출"되고 수신 된 8 비트입니다.


1
이조차하지 않는 시도를 원래의 질문에 대답 할 수 있습니다.
Edgar Bonet 17

1
예, Arduino 커뮤니티가 자신에게 주변기기 코드를 모르기 때문에 원래 질문에 답하지 않습니다.
rodrigo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.