'neo-6m'에 해당되는 글 3건

  1. 2017.09.05 Software | u-blox 의 GPS 어플을 사용해 보자
  2. 2017.09.05 Hardware | FTDI Serial Adapter 를 사용해 보자
  3. 2017.09.05 Hardware | NEO-6M GPS 를 구동해 보자 2

Software | u-blox 의 GPS 어플을 사용해 보자

|

1. u-blox


생소한 이름인 u-blox 라는 회사는 GPS 칩을 만드는 스위스 회사 이름입니다.




https://en.wikipedia.org/wiki/U-blox

- https://www.u-blox.com/en


일전에 NEO-6M 이라는 GPS breakout board 를 이용해 놀아 봤는데, 그 메인 칩을 제조하는 회사지요.


GPS 가지고 노는 내용은 아래 link 를 참고하세요.


http://chocoball.tistory.com/entry/Hardware-NEO6M-GPS




2. u-center


GPS 칩을 만드는 회사가 그것을 활용하는 소프트웨어도 제공하고 있습니다.

이름하야 "u-center". 다운로드는 다음 link 에서 받을 수 있습니다.


https://www.u-blox.com/en/product/u-center-windows



Android 버전도 있네요. 저는 Windows 에서만 사용해 봤습니다.

사용자 manual 은 다운로드 받아 놨습니다.


u-center_UserGuide_(UBX-13005250).pdf





3. 설치


파일을 받고 설치를 시작합니다.

먼저 언어를 선택하고.



본격적으로 설치를 시작합니다.



라이센스에 Agree 해줍니다.



Standard Driver 와 Sensor Driver 를 설치하는 부분입니다.

Sensor Driver 는 breakout board 가 없을 경우를 말하는건가? 잘 모르겠습니다.

의심스러우면 걍 Standard Driver 를 쓰라고 합니다. 예...



인스톨할 디렉토리를 선택하고. (어차피 디폴트)



완료~!!!



인스톨된 버전을 확인해 보면 아래와 같습니다. 8.26 이네요.

회사 주소가 Switzerland 라고 나와 있습니다. 가보고 싶네요.



회사 주소는 여기라는 군요.


- u-blox AG Zürcherstrasse 68 8800 Thalwil Switzerland


궁금해서 Google Maps 의 street view 로 확인해 봤습니다.

좋은 동네같아요. 깔끔하고. 이런곳에서 일하면 인생이 윤택해질것 같습니다.






4. 기능


실행을 시키면 이런 식으로 확인 할 수 있습니다.

와~~~!!! 여러 정보가 보입니다.



처음에는 미국 위성만 잔뜩 보이더니만, 가끔 일본 위성도 뜹니다.

아쉽게도 한국 위성은 보이지 않습니다.



Sky View 에서는 방위 및 각도별로 표시해 줍니다.

이동 괘적도 보여주네요.



신호 강도에 대한 Histogram 을 보여주는 듯 합니다.



한국 하늘에서 측정한 것인데, 지구가 둥글다 보니, 다른곳의 위성도 같이 잡히는게 신기했습니다.



Satellite Signal History 에서는 각 위성에서 받는 신호 세기를 보여줍니다.



Statistic View 에서는 수신한 신호에서 유용한 data 를 뽑아서 보여줍니다.

실제적으로 이 data 를 가공하여 유용하게 사용될 것 같습니다.



현상태의 data 를 dump 뜨는 기능도 가지고 있습니다.

아마 문제가 생겼을 시에 사용되는 기능일 듯 합니다.



Chart 에서는 data 를 여러 형식으로 보여줍니다.

아래는 해발 높이를 보여주는 듯 합니다.



Messages 에서는 여러 data 의 현재 상태를 나타내 줍니다.





5. 정지한 상태에서 확인


정지한 상태에서 프로그램을 돌려 봤습니다.

베란다 난간에 외부 안테나를 설치하고 u-center 를 돌려 봅니다.



오오오! 신호를 잡아서 현재의 위치 및 시간을 알려줍니다.



대박입니다. 이렇게 비주얼하게 볼 수 있다니.

그리고 GPS 를 통하여 이루어지는 data 는 엄청 여러가지가 있네요.




6. 움직이면서 확인


차 위에 설치해도 되고 dashboard 에 설치해도 됩니다.

외부 antenna 는 밑부분이 자석으로 되어 있어서, 차의 어느곳에나 착 달라 붙어 고정됩니다.



빵판은 데쉬보드 위에 올려 놨습니다.

PC와의 연결은 FTDI 호환보드인 CP2102 입니다.


http://chocoball.tistory.com/entry/Hardware-FTDI-FT232RL-using



이동하면서 측정했더니 확연히 다른 모습을 보여줍니다.

방위가 실시간으로 바뀌고, 속도계가 반응하기 시작했습니다!!!



외부 안테나를 사용해도 되나, 길게 늘릴 필요가 없어 NEO-6M 에 동봉된 길이가 짧은 안테나를 차 내부에서도 사용해 봤습니다.



달리면서 측정하니, GPS 의 진정한 가치를 알게 되는것 같습니다.




7. firmware update


원래 NEO-6M 제품을 사용하고 있으나, u-center 에서는 "u-blox 7" 으로 인식하고 있습니다.

NEO-6MV2 라고 표시되어 있는 만큼 그 사이에 chip 이 upgrade 되어서 그러는지 모르겠습니다.



메뉴의 "firmware update ..." 가 있어서 실행해 봤습니다.



Firmware image 는 u-blox 사이트에서 다운로드 받았고,

Flash Information Structure 파일인 "flash.xml" 은 u-center 프로그램 파일이 설치된 폴더에 있습니다.


결과는 에러...



사이트에서 제품 특징들에 대해 확인해 봤습니다.


이런... firmware update 를 할 수 있는 flash 가 장착된 칩은 "M" 이 붙으면 안되고,

"N" 이 붙어야 합니다.


https://www.u-blox.com/en/product/neo-7-series




더욱이, NEO-6 시리즈에서는 firmware update 를 할 수 있는 버전이 없다는 사실... 


https://www.u-blox.com/en/product/neo-6-series




만일 firmware update 가 가능하다면, 아래처럼 Extenstion(s) 부분에서 FWVER 항목이 나와야 할 것 같습니다.

(구글링 해서 찾아 봄)


Messages 의 MON-VER 를 확인해 보면,

7 시리즈는 맞는것 같은데, FWVER 옵션이 보이지 않습니다.



바로 포기합니다. (이미 해볼껀 다 해봤슴)

NEO-6M 을 샀는데 7 serise 가 들어있는 것만 해도 희한한 상황입니다.




FIN


GPS 를 통하여 지상에서 위성을 통한 무료 data 를 받아 이렇게까지 활용할 수 있다는 것이 신기했습니다.

GPS 는 문명의 이기임에는 확실해 보입니다.

NEO-M8N 보드를 구입해서 확인해 보고 싶어집니다.

And

Hardware | FTDI Serial Adapter 를 사용해 보자

|

1. Flash Programming


무선 WIFI 모듈인 ESP8266 을 사용하여 wireless speaker 를 제작하려고 준비하고 있습니다.




그러기 위해서는 ESP8266 의 펌웨어를 프로그래밍 해줘야 하는데,

이를 위해서는 Serial Converter / Adapter 가 필요합니다.


이 Serial Adapter 는, 펌웨어 관련된 모든것에 사용되는 것 같습니다.

미리 알았더라면, 예전에 Flashrom writer 시에 사용했을 터인데...


http://chocoball.tistory.com/entry/Hardware-flashROM-fix


이런 다방면의 활용성을 가지고 있으므로, 한두개 구비해 놓은게 좋을것 같다고 생각되어

한꺼번에 2개를 구입합니다.


동일한 제품을 구매하면 재미가 없으므로, 각각 다른 chip 을 사용한 adapter 를 구매합니다.




2. Silicon Labs CP2102


FT232 대용으로 나온 chip 입니다.

동작은 완벽히 호환되었습니다.


Spec. Sheet 는 다음과 같습니다.


CP2102-9.pdf


기존의 FT232RL breakout board 와 비교하여 pinout 들이 간략화 되어 있어

보드 자체의 크기도 작고, chip 도 소형화 되어 있습니다.


구매는 아래 link 에서 진행했어요.


https://ko.aliexpress.com/item/CJMCU-CP2102-MICRO-USB-to-UART-TTL-Module-6Pin-Serial-Converter-UART-STC-Replace-FT232-NEW/32801557756.html


가격은 1.02 USD 로 부담이 없고 무료 배송입니다.



아래는 사이트에서 보여준 사진 입니다.

Chip 에 SILABS CP2102 라고 적혀 있는 것을 확인할 수 있습니다.



도착샷 들입니다.



보통은 USB 인터페이스 지만, 이 부품은 microUSB 입니다.



뒷면입니다.



Windows 에 USB를 통하여 연결하면, 알아서 드라이버를 잡아 줍니다.



장치 관리자에서 COM port 를 꼭 확인하여, 나중에 어플에서 잡아줄 때 참고하면 되겠습니다.






3. FTDI FT232RL


그 이름 그대로의 제품 입니다.

Chip 은 FT232RL 이네요.



가격은 1.65 USD 로 역시 저렴합니다.


Spec. Sheet 는 다음과 같습니다.


FT232RL.pdf


참고로 fake FT232RL chip 이 존재한다 합니다. Fake 제품이라고 해서 문제는 발생되지 않는다고 합니다.

다만, 원래 생산자의 시장을 잠식하면서, 막대한 손해를 끼치겠죠.


가장 단순한 판변법은, chip 상면에 세겨진 각인이 laser 로 쓰였는지, 프린팅 되었는지의 구분이라고 하네요.


https://zeptobars.com/en/read/FTDI-FT232RL-real-vs-fake-supereal


Chip 을 줌업 해봤습니다.

잘 모르겠지만 laser 로 쓰여진 듯 합니다. 그 사이에 fake chip 생산자의 기술이 올라갔을지 모르겠습니다.



구입은 아래 link 에서 진행했습니다.


https://ko.aliexpress.com/item/1pcs-FT232RL-FTDI-USB-3-3V-5-5V-to-TTL-Serial-Adapter-Module-forArduino-Mini-Port/32650148276.html


아래는 도착샷 입니다.


일반적인 포장으로 잘 왔습니다.

정전기 방지 포장도 되어 있습니다.



FTDI 용으로는 가장 많이 쓰이는 보드가 아닐까 합니다.



재미있는걸 하나 발견했습니다.
뒷면에 제품명이 프린팅 되어 있는데, 도착한 제품에는 "YP-05" 라고 되어 있고,
제품 소개 사이트에는 "FTD1232" 이라고 표기되어 있습니다.

일단 다른것도 그렇지만, FTDI 의 "I" 부분을 숫자 "1" 로 고쳐쓴 센스가 엿보입니다. 라이센스 문제를 피해가기 위함이겠죠?



아래는 제품 소개 사이트 뒷면 :-D



Windows driver 는 자동으로 잡힙니다.



처음에는 "FT232R USB UART" 로 인식한 후, driver 가 인스톨 완료 되면 아래와 같이, "USB Serial Converter / Port" 로 변경됩니다.



장치 관리자에서는 "USB Serial Port" 라고 표시됩니다.






4. 구동


NEO-6M GPS 와 연결해본 사진 입니다.

사진에는 FT232RL 만 보이지만, CP2102 로도 완벽히 동일하게 작동하였습니다.



NEO-6M 과의 자세한 동작 영상들은 아래 link 에서 확인해 보세요.


http://chocoball.tistory.com/entry/Software-ublox-GPS-application





FIN

정신을 차려 보니, 점점 많은 부품들이 제 주위에 쌓여가고 있습니다.

And

Hardware | NEO-6M GPS 를 구동해 보자

|

1. GPS


우리 생활에 이제는 필수가 된 GPS.

모바일 기기라면 이제 GPS 는 어디든 달려 있는 시대 입니다.



이게 Arduino 용의 breakout board 로 나와 줬네요.

센서에 목말라 있는 저로써는 꼭 구동해 보고싶은 센서 입니다.





2. 주문


AliExpress 에서 검색해 보면, 대략 3가지 제품으로 나뒵니다.

- Drone 용 소형 GPS : NEO-M8N

- 저가용 GPS : NEO-6M

- 그 외 안테나, 연장선 등의 부품


대략 저가용 GPS 인 NEO-6M 을 빼면, NEO-M8N 인데, 1만원이 넘어가는 나름 고가 센서가 됩니다.

우선 구동만을 확인해 볼 예정이므로, NEO-6M 을 구입합니다.


* NEO-6M 본체


https://ko.aliexpress.com/item/2pcs-lot-GY-NEO6MV2-new-GPS-module-with-Flight-Control-Flight-Control-EEPROM-MWC-APM2-5/1811853522.html



6천원 정도면, 밥 한끼 정도의 가격이므로, 취미의 즐거움을 위해 희생해 봅니다.


구입은 Arduino 취미를 시작한 작년 말에 구입했지만,

정작 사용해 보기까지는 시간이 걸렸습니다.


그 이유는 달려있는 안테나가 너무 짧아, 연장선을 구입하고, 다른 센서가지고 놀면서 늘어졌습니다.

GPS 는 좀 진득하게 사용해 봐야 할 것 같았거든요.



* 안테나 연장


https://ko.aliexpress.com/item/2016-New-GPS-Active-Remote-Antenna-Aerial-Connector-1575-42MHz-SMA-connector-For-3M/32616362445.html


PC 에 연결하여 확인하려면 외부로 가지고 나가야 하는데, laptop 이 필수 입니다.

구동 완료가 될 때까지 매번 밖에 나갈 수는 없으므로 연장 안테나를 구입합니다.



* 커넥터


https://ko.aliexpress.com/item/RF-pigtail-jumper-cable-6in-6-IPX-IPEX-I-PEX-U-FL-MHF-4-to-SMA/32357824395.html


연장 안테나의 끝 단자인 SMA Male connector 랑 breakout board 와의 연결을 위해,

SMA female connector 를 구입합니다.



다만 여기서 사고가 발생합니다.

바로 breakout board 에 있는 단자 크기를 몰라, 그냥 주문했더니, 맞지 않았습니다.


원래 breakout board 의 안테나 단자를 감싸야 하는데, 그 속으로 들어가버릴 정도로 작았습니다.

구매 사이트 사진에는 MHF-4 도 표시되어 있지만, 사실은 U. FL 규격을 구입해야 했었습니다.



결국 U. FL 규격의 SMA female 단자도 나중에 구입하지만,

또 기다려야 하니 좀이 쑤셔서 그냥 진행해 보기로 합니다.




3. 도착


도착은 3주정도 걸린 듯 합니다.



구성품은 NEO-6M breakout board 와 U. FL 커넥터가 달린 안테나 로 되어 있습니다.



여기에 문제의 "SMA female : MHF-4" 점퍼 입니다.



배송은 참 잘 왔습니다.



MHF-4 connector 는 WIFI 모듈에 자주 쓰이는 규격이라 아니, 나중에 또 쓸 일이 있겠죠?



판매자의 별 5개 요청 편지.

AliExpress 입점상들도 경쟁이 치열해지고 평가에 의해 매출이 달라지므로 신경을 많이 쓰는것 같습니다.

역시 글로벌로 장사를 하면, 사용자 피드백의 중요함이 사업에 있어서 크리티컬 하다는 것을 알 수 있습니다.


장사꾼들인 중국인들에게는 배울게 많습니다.



연장 안테나 모듀입니다.



배송은 잘 왔습니다.



이쪽 면이 자석으로 되어 있어서 차량이나 난간에 잘 고정이 됩니다.



난간에는 이렇게 설치 되었습니다.

왼쪽의 안테나는 FlightAware 용으로 세워진 안테나 입니다.

http://chocoball.tistory.com/entry/Hardware-PiAware-FlightAware





4. MHF-4


문제의 MHF-4 단자에 대해 살펴보기로 합니다.

구성품으로 달려있던 안테나 단자와 비교샷 입니다.


크기 자체의 차이로 따져 보면, 구성품의 connector 는 "U. FL" 규격으로 보입니다.

자세히 들여다 보면, 중심부에 꽂히는 심의 크기는 양쪽다 (MHF-4 / U. FL) 같아 보입니다.

여기서 착안하여 그냥 사용해 보기로 합니다.



원래는 이렇게 연결해서 사용됩니다.



U. FL 규격으로, breakout board 와 연결된 모습입니다.

외곽 금속을 커넥터가 잘 감싸 줘서 확실하게 고정이 되는 구조입니다.

이렇게 연결하면 손톱으로 튕기지 않는 한, 잘 붙어 있습니다.



SMA female : MHF-4 규격의 점퍼와 연결한 모습입니다.

Breakout 보드쪽 커넥터의 외경이 점퍼 외경을 반대로 감싸는 구조가 됩니다.

전기적 신호는 문제 없겠지만, 많이 헐겁습니다. 조금만 힘이 가해져도 금방 분리가 되어 버립니다. (진행하면서 가장 스트레스)



다시 주문한 "SMA-female : U. FL" 단자는 아직 도착하지 않았지만,

아래 구성처럼 연결하여 진행합니다.





5. Arduino 와 연결


Pin 들을 납땜해서 사용해도 되지만, 향후 어떤 보드에 실장하게 될 지 모르는지라,

납땜하지 않고 Probe Clip 을 이용하여 연결합니다.


Probe Clip 에 대해서는 다음 link 를 참조해 주세요.

http://chocoball.tistory.com/entry/Hardware-Probe-Clip



Arduino 와 연결된 모습입니다.





6. Layout


Pin 연결 정보 입니다.


    NEO-6M   | Arduino Nano
----------------------------
     VCC     |     3.3V
     RX      |     D9
     TX      |     D10
     GND     |     GND
----------------------------


보드 연결선은 다음과 같이 하면 됩니다.





7. Libaray 및 Sketch


여기서부터는 아래 사이트를 참고 하였습니다.


http://www.instructables.com/id/How-to-Communicate-Neo-6M-GPS-to-Arduino/


사전에 필요한 Library 는 다음 두가지 입니다.

미리 Arduino Library 폴더에 카피해 놓습니다.


* TinyGPS

http://arduiniana.org/libraries/tinygps/

https://github.com/mikalhart/TinyGPS


* SoftwareSerial

https://cdn.instructables.com/ORIG/F8C/OHR4/IVHQK4BI/F8COHR4IVHQK4BI.rar


위의 두 Library 가 준비되었다면, 아래 sketch 를 업로드해서 구동시킬 수 있습니다.


/*********************
 *10 to GPS Module TX*
 *09 to GPS Module RX*
 *********************/

#include "SoftwareSerial.h"
#include "TinyGPS.h"

SoftwareSerial mySerial(10, 9);
TinyGPS gps;

void gpsdump(TinyGPS &gps);
void printFloat(double f, int digits = 2);

void setup() {
	// Open serial communications and wait for port to open:
	Serial.begin(9600);
	// set the data rate for the SoftwareSerial port
	mySerial.begin(9600);
	delay(1000);
	Serial.println("uBlox Neo 6M");
	Serial.print("Testing TinyGPS library v. "); Serial.println(TinyGPS::library_version());
	Serial.println("by Mikal Hart");
	Serial.println();
	Serial.print("Sizeof(gpsobject) = "); 
	Serial.println(sizeof(TinyGPS));
	Serial.println(); 
}

void loop() // run over and over
{
	bool newdata = false;
	unsigned long start = millis();
	// Every 5 seconds we print an update
	while (millis() - start < 5000) {
		if (mySerial.available()) {
			char c = mySerial.read();
			//Serial.print(c); // uncomment to see raw GPS data
			if (gps.encode(c)) {
				newdata = true;
				break; // uncomment to print new data immediately!
			}
		}
	}
  
	if (newdata) {
		Serial.println("Acquired Data");
		Serial.println("-------------");
		gpsdump(gps);
		Serial.println("-------------");
		Serial.println();
	}
}

void gpsdump(TinyGPS &gps) {
  long lat, lon;
  float flat, flon;
  unsigned long age, date, time, chars;
  int year;
  byte month, day, hour, minute, second, hundredths;
  unsigned short sentences, failed;

  gps.get_position(&lat, &lon, &age);
  Serial.print("Lat/Long(10^-5 deg): "); Serial.print(lat); Serial.print(", "); Serial.print(lon); 
  Serial.print(" Fix age: "); Serial.print(age); Serial.println("ms.");
  
  // On Arduino, GPS characters may be lost during lengthy Serial.print()
  // On Teensy, Serial prints to USB, which has large output buffering and
  //   runs very fast, so it's not necessary to worry about missing 4800
  //   baud GPS characters.

  gps.f_get_position(&flat, &flon, &age);
  Serial.print("Lat/Long(float): "); printFloat(flat, 5); Serial.print(", "); printFloat(flon, 5);
    Serial.print(" Fix age: "); Serial.print(age); Serial.println("ms.");

  gps.get_datetime(&date, &time, &age);
  Serial.print("Date(ddmmyy): "); Serial.print(date); Serial.print(" Time(hhmmsscc): ");
    Serial.print(time);
  Serial.print(" Fix age: "); Serial.print(age); Serial.println("ms.");

  gps.crack_datetime(&year, &month, &day, &hour, &minute, &second, &hundredths, &age);
  Serial.print("Date: "); Serial.print(static_cast(month)); Serial.print("/"); 
    Serial.print(static_cast(day)); Serial.print("/"); Serial.print(year);
  Serial.print("  Time: "); Serial.print(static_cast(hour+8));  Serial.print(":"); //Serial.print("UTC +08:00 Malaysia");
    Serial.print(static_cast(minute)); Serial.print(":"); Serial.print(static_cast(second));
    Serial.print("."); Serial.print(static_cast(hundredths)); Serial.print(" UTC +08:00 Malaysia");
  Serial.print("  Fix age: ");  Serial.print(age); Serial.println("ms.");

  Serial.print("Alt(cm): "); Serial.print(gps.altitude()); Serial.print(" Course(10^-2 deg): ");
    Serial.print(gps.course()); Serial.print(" Speed(10^-2 knots): "); Serial.println(gps.speed());
  Serial.print("Alt(float): "); printFloat(gps.f_altitude()); Serial.print(" Course(float): ");
    printFloat(gps.f_course()); Serial.println();
  Serial.print("Speed(knots): "); printFloat(gps.f_speed_knots()); Serial.print(" (mph): ");
    printFloat(gps.f_speed_mph());
  Serial.print(" (mps): "); printFloat(gps.f_speed_mps()); Serial.print(" (kmph): ");
    printFloat(gps.f_speed_kmph()); Serial.println();

  gps.stats(&chars, &sentences, &failed);
  Serial.print("Stats: characters: "); Serial.print(chars); Serial.print(" sentences: ");
    Serial.print(sentences); Serial.print(" failed checksum: "); Serial.println(failed);
}

void printFloat(double number, int digits) {
	// Handle negative numbers
	if (number < 0.0) {
		Serial.print('-');
		number = -number;
	}

  // Round correctly so that print(1.999, 2) prints as "2.00"
  double rounding = 0.5;
  for (uint8_t i=0; i 0)
    Serial.print("."); 

  // Extract digits from the remainder one at a time
  while (digits-- > 0) 
  {
    remainder *= 10.0;
    int toPrint = int(remainder);
    Serial.print(toPrint);
    remainder -= toPrint;
  }
}





8. 구동


실제 구동 영상입니다.

신호를 받기 시작하면 GPS의 LED 도 깜빡이면서 구동되고 있다는 것을 알 수 있습니다.



Arduino IDE 의 Serial Monitor 에서 아래와 같은 정보가 스크롤 됩니다.



정보를 보면 제대로 GPS 위성과 통신을 하는 것 같습니다.

확실히 베란다 난간에 GPS 안테나를 붙이니 정보를 잘 받네요.





FIN

일상 생활에서 GPS는 필수 기기 입니다.

눈에 보이지 않았던 중간 단계를 확인할 수 있어서 좋았습니다.





Update

"SMA Female - U. FL" 어뎁터가 도착했습니다.


딱 봐도 굵기가 다릅니다.

역시 신호와 전류는 두꺼운게 좋습니다.



커넥터 부분을 비교해 봤어요.

제일 밑에가 부속으로 딸려 있던 안테나, 중간이 잘못 구입한 MHF-3 규격, 윗부분이 새로 구입한 U. FL 규격 사진입니다.



전체 비교샷 입니다.



NEO-6M 에 바로 결속해 봤습니다.

딱 맞습니다. 손톱으로 의도적으로 뜯지 않는 한, 튼튼하게 결속되어 있습니다.



And
prev | 1 | next