Translate

이 블로그 검색

2015년 7월 20일 월요일

onLocationChanged가 호출되지 않는 문제 해결


1. Galaxy S2 (OS 4.0 – Ice Cream Sandwich)에서는 GPS WiFi를 켜면, BestProvider network이 된다. (GPS만 켰을 때도 BestProvidergps가 아니라 network이 되었다.) 그리고 이 경우에 onLocationChanged가 정상적으로 호출되었다.


2. Galaxy S4 (OS 4.4 – KitKat)에서는 위치(GPS가 아니라 위치(Location)이다!)WiFi 또는 Data를 켰을 때, BestProvidergps가 되었다. 위치를 켤 때, 위치 정확도 개선에 대한 동의 여부를 묻는 창이 나오는데, 이 때 동의를 안 하면, GPS Provider만 활성화 되고, 동의하면 Network Provider도 함께 활성화되는데, Network Provider가 활성화 되고 그 것을 사용해야만 onLocationChanged가 정상적으로 호출되었다. (GPS Provider를 사용해서는 호출되지 않았다.)

2015년 7월 11일 토요일

아두이노 배우기-1


아두이노 우노
Arduino Uno(아두이노 우노) MCU 보드이다. 두 개의 MCU를 가지고 있는데, 하나는 ATmega328 MCU이고 다른 하나는 ATmega16u2 USB-to-Serial이다.

ATmega16u2(16KB Flash Memory, 32-pin, USB Controller)는 기존 보드들에서 사용하던 FTDI USB-to-serial driver chip대체하기 위한 것으로 USB-to-Serial converter로 프로그램되어 있다.

DIO 14핀이 있는데, 이 중 6개는 PWM용으로도 사용된다. AI 6핀이 있다. Flash Memory 32KB가 있는데, 이 중 약 1KB Bootloader용으로 사용된다. SRAM 2KB가 있고, EEPROM 1KB이다. Clock Speed 16MHz이다.


아두이노 ADK (및 아두이노 메가)
Adruino ADK ( Arduino Mega) MCU ATmega2560(256KB Flash Memory, 100-pin)을 사용한다. DIO 54핀이 있는데, 이 중 15개(D2~13, D44~46)는 PWM용으로도 사용된다. AI 16핀이 있다. Flash Memory 256KB가 있는데, 이 중 약 8KB Bootloader용으로 사용된다. SRAM 8KB가 있고, EEPROM 4KB이다. Clock Speed 16MHz이다.


ICSP?
ICSP(In Circuit Serial Programming)MCU에 직접 프로그래밍 가능한 통신 포트이다. ICSP SPI 통신을 사용하며 6(SPI 3(MOSI, MISO, SCK) + Vcc, GND, Reset) 또는 10핀이다. 아두이노에는 6핀 짜리 2가 있는데, 하나는 메인 MCU를 프로그래밍하기 위한 것이고 다른 하나는 USB-to-Serial MCU를 위한 것이다.


SPI?
SPI(Serial Peripheral Interface)MCU와 주변 장치간의 시리얼 통신을 하기 위한 규약 중의 하나이다. (Motorola에서 개발) 동기식으로 Clock을 사용한다. 연결 방식에는 3 Wire, 4 Wire, 멀티 슬레이브 방식이 있다. 우노에서는 4 Wire 방식으로, D10 ~ D13이 각각 SS, MOSI(Master Out Slave In), MISO(Master In Slave Out), SCK(Serial ClocK)로 사용된다. 아두이노 (스케치) 프로그래밍에서는 <SPI.h> Include하여 사용한다. 아두이노와 SPI 통신을 하는 모듈로는 SD 카드, 이더넷, RFID, NFC 모듈 등이 있다.


I2C?
I2C(IIC – Inter Integrated Circuit)MCU와 저속 주변 장치간의 시리얼 통신을 하기 위한 규약 중의 하나이다. (Philips에서 개발) TWI(Two Wire Interface)라고도 하며 2 Wire(SCL, SDA)만을 사용한다. (SCL: Serial CLock, SDA: Serial DAta) 따라서 단방향 통신이다. 아두이노 (스케치) 프로그래밍에서는  <Wire.h>를 Include하여 사용한다. 우노에는 2개가 있다.


외부와의 범용 비동기 시리얼 통신(UART)
우노는 1, 메가는 4개가 있다. 하드웨어 시리얼 통신과 소프트웨어 시리얼 통신이 있다. 소프트웨어 시리얼 통신을 위해서는 <SoftwareSerial.h>를 Include해야 한다. 이 때 주의할 점은 PCINT 지원 핀만 사용할 수 있다는 것이다. 또한 소프트웨어 시리얼 통신은 한 번에 하나의 포트만 수신할 수 있다.


PWM 포트
우노에는 6. (3,5,6,9,10,11) Duty Cycle 값은 0 ~ 255. (225일 때, 5V) 주파수는 5 & 6번은 980Hz, 나머지는 490Hz(주기는 약 2ms)로 고정임. 우노에는 (주파수가 다르게 설정된) 3개의 하드웨어 타이머가 있으며 각각 2개의 PWM 포트를 제어. 따라서 PWM 포트 2개를 사용시 짝을 지어 사용해야 함. (5&6: TIMER0, 9&10: TIMER1, 3&11: TIMER2)
* TIMER0: 8-bit, delay(), millis(), TIMER1: 16-bit, Servo, TIMER2: 8-bit, tone()


DC 입력 전원 포트
7 ~ 12V DC. 9V 1A 또는 12V 1A DC 어댑터 사용.


USB 포트
우노: Type B USB 사용. (ADK : Micro USB 사용)

아두이노 우노


* 참조
아두이노 스타터 최강 참고서: 아두이노 프로그래밍을 하기 위한 최적의 참고서
 (): YoungSoon Park