20124 년 8 월 10 일, 고정 시도 반복자 연결이 이루어지지 않은 경우 업데이트
에비트 트랜시버
이 라이브러리는 Temensy 및 Arduino와 같은 MCU 용 소형 무선 장치 (예 : E44-TTL-100) UART EBYTE Transceivers (예 : E44-TTL-100)와 함께 사용됩니다. 이 라이브러리를 사용하면 사용자가 작동 매개 변수를 프로그래밍하고 데이터를 보내고 수신 할 수 있습니다. 이 회사는 기능이 다른 여러 모듈을 만들지 만, 여기에서 대부분의 #defines는 모든 상수가 여러 데이터 시트에서 추출되었으며 데이터 시트가 각 설정을 나타내는 방식으로 바이너리에 나열되어야합니다. 상수에 대한 변경 또는 첨가는 데이터 시트 상수를 #defines에 직접 복사하는 문제가 될 수 있기를 바랍니다. 이 라이브러리의 사용은 약 970 바이트를 소비합니다.
이 EBYTE 장치를 프로그래밍하려면이 라이브러리 만 있으면됩니다.
데이터 구조를 읽으려면 EBYTE의 연쇄 객체에서 readBytes 메소드를 직접 호출 할 수 있습니다.
eserial.readbytes ((uint8_t*) & mydata, (uint8_t) sizeof (mydata));
데이터 구조를 작성하려면 EBYTE의 연쇄 객체에서 직접 쓰기 메소드를 호출 할 수 있습니다.
eserial.write ((uint8_t*) & mydata, (uint8_t) sizeof (mydata));
EBYTE 모델 번호 (부분 목록 만 표시됨) 이전 모델 번호 체계 E30-TTL-100, E30-490T20D, E31-TTL-100, E32-TTL-100, E32-TTL-500, E32-TTL-1W, E41-TTL-100, E41-TTL-100, E44-TTL-10, E44-TTL-500, E44-TTL-1W, E50-TTL-100, E50-TTL-500, E51-TTL-100, E51-TTL-500, E51-TTL-1W
새로운 모델 번호 체계 E22-900T22S, E22-230T22S, E22-400T22S, E22-230T30S, E22-400T30S, E22-900T30S, E30-433T20S3, E30-170T20D, E30-170T27D, E30-780T20S, E30-868T20S. E30-868T20D, E30-915T20D, E30-490T20D, E30-433T20S, E30-433T20D, E30-915T20S, E30-490T20S, E31-433T30S, E31-433T17S3, E31-230T3D, E31-230T17D, E31-230T3D. E31-230T27D, E31-433T17S, E31-433T17D, E31-433T27D, E31-433T30D, E31-433T33D, E32-433T20DC, E32-433T20S, E32-4333T20S2T20S2T20S2T20DC. E32-433T30D, E32-433T30S, E32-868T20D, E32-868T20S, E32-868T30D, E32-868T30S, E32-915T20D, E32-915T20S, E32-915T30D, E32-915T30S, E32-915T30S, E32-915T30D. E32-170T30D, E32-400T20
참고 : EBYTE 웹 사이트에서 선택한 모듈이 UART 통신을 지원하는지 확인하고 일부 모듈은 SPI 전용입니다.
다음은 라이브러리 사용에 관한 YouTube 비디오입니다 : https://youtu.be/hmjarkgucfa
모듈 연결
모듈 MCU 설명
- MO 작업/프로그램 모드를 제어하기위한 모든 디지털 핀* 핀
- M1 모든 디지털 핀* 핀 작업/프로그램 모드를 제어합니다
- RX 모든 디지털 핀* MCU TX 핀에 핀 (모듈이 MCU로 전송되므로 MCU는 모듈에서 데이터를 수신해야합니다.
- TX 모든 디지털 핀* MCU rx 핀에 핀 (모듈이 MCU로 전송되므로 MCU는 모듈에서 데이터를 수신해야합니다.
- AUX 작업이 완료된 시점을 나타내는 디지털 핀 핀 (낮은 바쁘고 높음이 완료 됨) (-1로 생략 할 수 있지만 사용 된 복구 시간이 고정되어 작업을 완료하기에 충분히 길지 않을 수 있습니다).
- VCC +3V3 또는 5V0, 장치가 5V0으로 더 따뜻해지고 더 많은 전력을 소비 할 수 있습니다.
- VCC지면 접지는 모듈 및 MCU에 일반적이어야합니다.
메모
- 핀이 PC에 대한 USB 연결 용으로 Arduino 핀 0 및 1에 연결하는 데주의하십시오. 프로그래밍 중에 EBYTE를 연결할 수는 없습니다. Arduino Pins 0과 1을 사용하지 않는 것이 좋습니다
- 이 단위의 신호 라인은 3V3이지만 5V 볼트이지만 5 볼트는 통신 고장을 초래할 수 있습니다. Arduino와 같은 5 볼트 MCU를 사용하는 경우 다음을 수행해야 할 수도 있습니다. a) Arduino를 사용하는 경우 Arduino를 사용하는 경우 MCU TX와 Transceiver RX 사이에 일련의 4K7 저항이 필요할 수 있습니다.
- 일부 응용 프로그램에서는 AUX 핀을 연결하기에 충분한 디지털 핀이 없었습니다. 걱정하지 마십시오 (객체의 인수 목록에서 -1을 통과합니다). 라이브러리는 전송을 완료하기 위해 적절한 지연을 제공하기 위해 내장 지연이 있습니다. 금액을 실험해야 할 수도 있습니다.
- 연결을위한 직렬 핀은 MCU, TEENENSY 3.2 예를 들어 : Serial1은 RX = 0, TX = 1, Serial2 RX = 9, TX = 10, Serial3 RX = 7, TX = 8입니다. Arduino는 USB 사용에 대한 핀 0 및 1을 제외하고는 소프트웨어 (MCU_RX_PIN, MCU_TX_PIN)를 사용하여 가장 직렬 핀 일 수 있습니다.
- Teensy 및 ESP32와 같은 일부 MCU는 소프트웨어를 사용하여 통신 포트를 만들 수 없습니다. 걱정할 필요가 없습니다. Ebtye를 전용 UART 포트 (Serial1의 Teensy 3.2에서 핀 0 및 핀 1)에 하드 와이어로 연결하십시오.
제조업체 웹 사이트
http://www.ebyte.com/en/ 예제 모듈이 라이브러리는 http://www.ebyte.com/en/product-view-news.aspx?id=174와 함께 사용하도록 의도됩니다.
일반 코드 사용
- 직렬 객체를 만듭니다
- 직렬 객체를 사용하는 EBYTE 객체를 만듭니다
- 직렬 객체를 시작하십시오
- init () Ebyte 객체
- 매개 변수 설정 (선택 사항이지만 발신자 및 수신자가 다른 경우 필요합니다)
- 보낸 데이터 보내기 또는 듣기 (단일 바이트) 또는 데이터 구조를 생성하고 보내십시오.
사용에 대한 팁
최상의 범위 :
- 데이터 시트는 최상의 결과가 안테나 2 미터가 지상에서 벗어 났음을 나타냅니다.
- 시야 이상이 이상적이지만 개인 테스트, 전송은 여전히 일부 장애물로 성공했습니다.
- 느린 공기 데이터 속도는 범위를 향상시킬 수 있지만 전송 시간이 길어 데이터를 얼마나 자주 보낼 수 있는지
- 고득점 안테나 (제조업체에서 구입할 수 있음)를 고려하십시오. 자세한 내용은 웹 사이트를 참조하십시오.
- 데이터 시트에는 최대 범위의 경우 5.0 볼트의 장치에 전원을 공급합니다 (신호 라인에서 3v3을 유지). 나는 공급 전압이 높은 작은 범위 차이를 발견했습니다.
- 데이터 시트는 최대 범위의 경우 공기 데이터 속도를 2.4 bps로 설정합니다. 나는 개인적으로 데이터 속도가 낮은 범위 차이가 거의 없으며 데이터 속도가 낮을수록 데이터를 보낼 수있는 빈도를 제한 할 수 있습니다.
데이터 전송 패킷
- 이 라이브러리에는 단일 바이트를 전송하는 방법이 있지만 더 많은 데이터를 전송하려면 라이브러리 SendStruct (& struct, sizeof (struct)) 메소드를 사용하여 데이터 구조를 작성하고 데이터 구조를 보내십시오. 참고 사항에 따라 참고 사항을 참고하므로 및 이전 구조 이름을 포함하십시오.
- 다시 느린 데이터 속도가 더 오래 걸리면 데이터 크기를 기준으로 이상적인 공기 데이터 속도 범위를 실험해야합니다.
- 각 프로세서 팩이 다른 방식에 대한 다른 MCU의 변경간에 구조물을 사용하여 데이터를 보내야하는 경우. 받는 끝에서 손상된 데이터를 얻으면 컴파일러가 구조물 포장을 최적화하지 않도록 강제하는 방법이 있습니다. 아직 작동하지 않았습니다. 저를 위해 일한 것은 스트럿과 핸들을 생성하는 라이브러리를 사용하는 것입니다. EasyTransfer.h (Google It를 확인하고 좋아하는 저자를 받으십시오)를 확인하십시오. 이 libs에서는 구조물을 보내고받는 방법을 사용합니다 (하드웨어 및 소프트웨어 리브가 있습니다. 그에 따라 사용하십시오. 즉,이 라이브러리를 사용하여 설정을 프로그래밍하고 관리 할 수 있지만 EasyTransfer를 사용할 수 있지만 EBYTE가 사용하는 일련 줄을 통해 데이터 전송을 처리 할 수 있습니다. 이상하게 들리지만, Serial 1.sendBytes (...)가 부르는 것과 같이 Serial 1.SendBytes (...)라고 말하는 것은 다른 일이 될 것입니다.
디버깅
- 무선 모듈이 PrintParameters () 메소드에 대해 모두 0을 반환하는 경우, 하드웨어 직렬을 사용하고 ESP32를 사용하는 경우 시작 () 문에서 전체 직렬 정의를 사용하고 있는지 확인하십시오.
#include <hardwareserial.h>
#define serial_0 serial2
serial_0.begin (9600, Serial_8n1, 16, 17);
- 무선 모듈이 PrintParameters () 메소드의 모든 0을 반환하는 경우 배선이 정확하고 작동하는지 확인하고 MCU RX는 EBYTE TX에 연결해야하며 그 반대도 마찬가지입니다. 또한 M0, M0 및 AUX가 유효한 디지털 포트에 연결되어 있는지 확인하십시오. 대부분의 문제는 잘못된 데이터 라인 연결 때문입니다
- 무선 모듈이 PrintParameters () 메소드의 모든 0을 반환하는 경우 배선이 올바른지 확인하면 모듈이 모드 변경 중에 수행되는 PinMode 변경에 반응하는 데 느리게 반응 할 수 있습니다. 데이터 시트에 따르면 2ms의 지연이 필요하지만 10ms가 더 신뢰할 수 있음을 발견했습니다. 일부 유닛의 경우 더 많은 시간이 필요합니다. 라이브러리 기본값은 50ms이지만 매개 변수를 올바르게 읽지 않으면 .h 파일 에서이를 증가시킵니다.
- 무선 모듈이 PrintParameters () 메소드의 모든 0을 반환하는 경우 배선이 올바르고 MCU가 5V0인지 확인하면 MXU TX 및 AUX 라인에 전압 디바이더를 추가해야 할 수도 있습니다. 5V0 신호가 전송되면 이러한 모듈은 까다로울 수 있습니다. 별도의 3v3 전원 공급 장치로 모듈에 전원을 공급할 때 매우 신뢰할 수있는 결과를 얻습니다. 나는 일반적으로 벅 컨버터 또는 선형 조정기를 사용합니다.
- 5V0 MCU를 사용하는 경우 EBYTE RX 라인 및 아마도 M0 및 M1 라인에 MCU TX 라인에 직렬 저항이 필요할 수 있습니다. 이 Ebyte 장치는 5 볼트 내성이지만 미안보다 안전합니다. 또한 MFG는 MCU TX 라인 및 AUX에서 4K7 풀업이 필요할 수 있다고 주장합니다. 나는이 트랜시버를 Uno 's, Mega's 및 Nano의 w/o 모든 저항에 사용했으며 모든 것이 좋았습니다. 나는 나노 가이 트랜시버들과 함께 일하지 않고 이상한 힘을 필요로하는 사례를 가지고있었습니다.
- 1W 장치 (30 dB 전력 출력)를 사용하는 경우 MCU의 온보드 전원 공급 장치와 별도로 유닛을 전원으로 전원을 공급하십시오. 현재 드로우는 온보드 등급을 초과하여 MCU를 파괴 할 수 있습니다. 1W 장치에 전원을 공급하려고 할 때 나노의 온보드 전압 조절기를 파괴했습니다.
- 송신기와 수신기가 다른 MCU (Arduino <-> teensy) 인 경우 구조 데이터 유형에 관계없이 데이터 구조를 전송하면 팩을 다르게 지불합니다. 이는 8 비트 프로세서와 32 비트 프로세서가 포장 프로세스를 처리하는 방법 때문입니다. 옵션 1)는 Eastransfer Lib를 사용하는 것입니다. 나는이 lib를 사용하고 그것은 잘 작동합니다. 옵션 2) __attribute __ ((packed)) 변수 속성을 시도하십시오. 옵션 3) 그리고 웃지 말고, 플로트를 100으로 곱하고 (및 int로 재발하는) 플로트를 보내면 수신 끝에서 그 값을 100으로 나눕니다 (플로트로 재 캐스팅).
- .printparameters에서 손상된 데이터를 얻는 것처럼 보이면 #include "avr/io.h"를 .ino 프로그램에 추가하십시오.
- 별도의 전원에서 EBYTE 모듈에 전원을 공급하는 경우 모든 근거가 연결되어 있는지 확인하십시오.