1. 아두이노 프로그램설치 되었다고 가정.
Serial 로 시작되는 부분은 PC 로 자료를 전송 또는 수신
Serial_BT 로 시작되는 부분은 스마트폰으로 전송 또는 수신
GpsSerial 로 시작되는 부분은 gps 로 전송 또는 수신
전송은 writer, 수신은 read
2. *** max-10s 는 장비가 없고, neo-m8n (rom) 버전을 가지고 있기에..
neo-m8n 을 rate 변경하고, 115200으로 변경 하여 스마트폰에서 수신 확인함.
스마트폰에서 "ESP32_mini" 로 인식하여 암호는 없음.
3. 장점 : esp32 mini 보드가 3v 출력이 있고 충전 이 가능 함.
통신은 class2 (wifi 는 사용 안함)
조금더 회로를 구성 하면 버튼도 가능 하고 lcd 를 추가도 가능
단점 : 아두이노 프로그램 이 가능 해야함.
4. 이하 확인된 소스
#include "BluetoothSerial.h"
BluetoothSerial Serial_BT; // Bluetooth Mac -> CC:50:E3:B6:0C:DE
HardwareSerial GpsSerial(1); // Uart 1
#define bps_96 9600 //
#define bps_11 115200 //
#define Gps_RXD 21 // GPS RX Port
#define Gps_TXD 22 // GPS TX Port
void setup() {
Serial_BT.begin("ESP32_Mini"); // esp32 와 Bluetooth 통신(Name 초기화)
Serial.begin(bps_11); // 고정 esp32 와 PC 통신 시작 (통신 속도 115200)
GpsSerial.begin(bps_96, SERIAL_8N1, Gps_RXD, Gps_TXD); // esp32 와 gps 통신 시작 (처음 통신 속도는 9600)
//rate_2(); // hz 변경 초당 2 번 신호
rate_5(); // hz 변경 초당 5 번 신호 이부분은 추가하여 사용 가능
//GpsSerial.print(0xB562060806006400010001007A12, HEX);
port_115(); // 통신속도변경
delay(500); // 잠시 대기
GpsSerial.begin(bps_11, SERIAL_8N1, Gps_RXD, Gps_TXD); // esp32 와 gps 통신 시작 115200 으로
}
void loop() {
// esp32 에서 gps의 자료 를 읽으면
if (GpsSerial.available())
{
byte Data = GpsSerial.read(); // gps 자료를 읽어서
Serial_BT.write(Data); // bluetooth 로 내보내기
//Serial.write(Data); // PC 로 내보내기
}
// esp32 에서 bluetooth의 자료 를 읽으면
// 핸드폰에서 불루투스로 gps 에게 명령을 하는 경우에 사용
if (Serial_BT.available())
{
//byte Data = Serial_BT.read(); // bluetooth 신호를 읽어서
//GpsSerial.write(Data); // gps 로 보내기
//Serial.write(Data); // PC 로 보내기
}
// esp32 에서 pc 의 자료를 읽으면
// pc 에서 (예: u-center) 에서 gps 로 명령 하는 경우 또는 스마트폰으로 명령하는 경우
if (Serial.available())
{
// byte Data=Serial.read(); // pc 의 자료를 읽어서
// GpsSerial.write(Data); // gps 로 보내기
// Serial_BT.write(Serial.read()); // bluetooth 로 내보내기
}
}
// ublox 장비에 쓰기
void send_Ublox(byte *msg, byte msgLength) {
for(int i = 0; i < msgLength; i++) {
GpsSerial.write(msg[i]);
GpsSerial.flush();
}
GpsSerial.println();
GpsSerial.flush();
}
// rate 2 자료
void rate_2()
{
//B5 62 06 08 06 00 F4 01 01 00 01 00 0B 77 2hz
byte d[] = {0xB5, 0x62, 0x06, 0x08, 0x06, 0x00, 0xF4, 0x01, 0x01, 0x00, 0x01, 0x00, 0x0B, 0x77};
send_Ublox(d, sizeof(d));
}
// rate 5 자료
void rate_5()
{
//B5 62 06 08 06 00 C8 00 01 00 01 00 DE 6A 5hz
byte d[] = {0xB5, 0x62, 0x06, 0x08, 0x06, 0x00, 0xC8, 0x00, 0x01, 0x00, 0x01, 0x00, 0xDE, 0x6A};
send_Ublox(d, sizeof(d));
}
// 115200
void port_115()
{
//B5 62 06 00 14 00 01 00 00 00 D0 08 00 00 00 C2 01 00 07 00 02 00 00 00 00 00 BF78
byte d[] = {0xB5, 0x62, 0x06, 0x00, 0x14, 0x00, 0x01, 0x00, 0x00, 0x00, 0xD0, 0x08, 0x00, 0x00, 0x00,
0xC2, 0x01, 0x00, 0x07, 0x00,0x02, 0x00, 0x00,0x00, 0x00, 0x00,0xBF,0x78};
send_Ublox(d, sizeof(d));
}