티스토리 뷰
1. 개요 |
ARTIK 050 모델은 아래 Pin 설명을 보면 알 수 있듯이 Analog 신호를 제어할 핀이 없습니다. 따라서 ADC 확장 모듈을 이용하여 아날로그 신호를 제어해야합니다. 추가적으로 ARTIK 050 모델을 모델 내에 전원 공급핀이 3.3v 하나만 있다는 것도 알아 둡시다.
2. 회로 |
MCP3208 모듈의 우측 핀을 보드에 알맞는 핀과 연결합니다.
연결한 회로의 모습은 다음과 같습니다.
MCP3208 모듈의 왼쪽은 아날로그 신호를 제어할 수 있는 핀들이 있으며 총 8 채널로 구성되어 있습니다. 또한 위 사진속 MCP3208 왼쪽에 연결된 모듈은 조도 센서이며 MCP3208 모듈을 테스트 하기 위해 추가하였습니다.
여기서 주의해야 할 점은 ADC모듈(MCP3208)이 받아오는 아날로그 값은 입력 전압과 아날로그 모듈을 지난 전압의 차이로 만들어지는 값이기 때문에 해당 ADC모듈의 15핀(오른쪽 위에서 2번째)인 에 들어가는 선과 아날로그 모듈에 들어가는 전원선이 같아야 합니다.
3. SourceCode |
WICED에서도 기본적인 SPI핀을 다루는 라이브러리를 제공합니다. 따라서 MCP3208의 DataSheet에 따라 코드를 작성합니다.
1. MCU Transmitted Data : 데이터를 받기 위해 보내는 Start Code 및 설정 데이터를 버퍼에 담는 코드입니다.
DataSheet에 따라 형식에 맞게 버퍼에 담습니다.
2. MCU Transmitted Data : Start Code 및 설정 데이터를 보내는 코드와 받은 데이터를 포멧하는 코드입니다.
받아온 3개의 버퍼에서 12비트를 가져옵니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | #include <stdio.h> #include "wiced.h" void application_start( ) { uint8_t txb[3]; uint8_t rxb[3]; uint16_t readValue=0; wiced_spi_device_t mcp3208_spi; wiced_spi_message_segment_t mcp3208_msg; txb[0] = (0x06 | ((CHANNEL & 0x07) >> 2)); txb[1] = ((CHANNEL & 0x07) << 6); txb[2] = 0x0; wiced_init(); mcp3208_spi.port = WICED_SPI_1; mcp3208_spi.chip_select = WICED_GPIO_22; mcp3208_spi.speed = 1000000; mcp3208_spi.mode = (SPI_CLOCK_RISING_EDGE | SPI_CLOCK_IDLE_HIGH | SPI_NO_DMA | SPI_MSB_FIRST); mcp3208_spi.bits = 8; wiced_spi_init(&mcp3208_spi); WPRINT_APP_INFO(( "Get Joystick Location & MCM3208 ADC\n" )); wiced_gpio_init(WICED_GPIO_10,OUTPUT_PUSH_PULL); wiced_gpio_output_high(WICED_GPIO_10); while ( 1 ){ memset (&mcp3208_msg,0, sizeof (mcp3208_msg)); mcp3208_msg.tx_buffer = txb; mcp3208_msg.rx_buffer = rxb; mcp3208_msg.length = sizeof (txb); wiced_spi_transfer(&mcp3208_spi, &mcp3208_msg,1); readValue = (((rxb[1] & 0x0F) << 8) | rxb[2]); printf ( "brightness: %d, %f(V)\n" , readValue, ((3.3/4096) * readValue)); wiced_rtos_delay_milliseconds( 100 ); } wiced_spi_deinit(&mcp3208_spi); wiced_gpio_deinit(WICED_GPIO_10); } |
4. 결과 |
결과 사진입니다.
5. 관련 문서 및 출처 |
https://www.artik.io
IoT Innovation Challenge 삼성 ARTIK 기술경진대회 교육자료
MCP3208 DataSheet
6. 소스 저장소 |
'HardWare > ARTIK' 카테고리의 다른 글
[ARTIK 050] RGB LED(LS5050RGB, KY-009) (0) | 2016.10.17 |
---|---|
[ARTIK 050] ARTIK Cloud & MQTT (0) | 2016.09.13 |
[ARTIK 050] GPIO 사용하기 (0) | 2016.09.12 |
[ARTIK 050] 개발 툴 킷 WICED 설치 (0) | 2016.09.12 |
[ARTIK 050] ARTIK 050(ARTIK Zero) 소개 (0) | 2016.09.12 |
- Total
- Today
- Yesterday
- 파일입출력
- 인텐트
- 서버
- Service
- 포켓몬 고
- java
- Java Decompiler
- LISTVIEW
- 아두이노
- vim
- Notification
- 카운터
- Res
- vim 설치
- 파일 입출력
- 자바 입출력
- android
- jad
- 유전
- 5582
- 테라펀딩 #투게더펀딩 #P2P투자 #부동산 소액 투자 #카카오 #토스
- c언어
- 알고리즘
- java 파일 입출력
- php
- 유전 알고리즘
- 포켓몬 Go
- java url
- counter
- 안드로이드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |