라즈베리파이 카메라 - opencv 테스트 (윈도우 개발자를 위주로)

리눅스 사용의 불편함( 윈도우즈환경에 익숙한 개발자를 위해..)이 있기 때문에 쉽게 윈도우즈 환경에서 테스트 하는 테스트를 진행 해 보도록 하겠다.
리눅스 명령어를 잘 몰라도 테스트 할수 있도록 해 보자.


기본적으로 VNC,  및 SAMBA가 설치 되어 있어야 한다.
(라즈베리파에서 VNC 설정 방법SAMBA 설치 방법 참고)


 

윈도우 탐색기를 이용하여 공유 폴더(SAMBA)에서 테스트 할 폴더 생성
 
\\Raspberrypi\pi\opencv_source\example\gray_test
 
  1. CMakeLists.txt 파일 생성(또는 기존 파일 복사)
  2. main.cpp 파일 생성(또는 기존 파일 복사)
  3. build 폴더 생성



main 코드 작성 및 수정



VNC 프로그램에서 라즈베리파이의 파일메니저 실행

예제 폴더 내에 있는 build 폴더에서 오른쪽 마우스 키를 눌러 터미널 실행



터미털 창에서 make 파일 생성
(make파일은 처음 한번만 생성해 주면 된다.)

pi@raspberrypi:~/opencv_source/example/gray_test/build $ cmake ..


make파일 생성 결과



예제파일 컴파일 하기
(코드 수정시 마다 컴파일 하면 된다.)

pi@raspberrypi:~/opencv_source/example/gray_test/build $ make
 
컴파일 결과 main 파일이 생성된것을 확인 할 수 있다.



프로그램 실행

파일메니저로 main 파일을 더블클릭해서 실행 하거나 터미널 창에서 프로그램 실행 하면 결과를 확인 할 수 있다.




테스트 결과

opencv를 이용하여 라즈베리파이 카메라에서 출력되는 영상을 그레이 영상으로 변환하여 출력 하는 예제가 실행 되는것을 확인 할 수 있다.





저작자 표시 비영리 변경 금지
신고

라즈베리파이3 -  VNC 설치 (윈도우에서 원격제어)

라즈베리파이 개발을 위해 모니터 및 키보드 연결없이 원격으로 접속해서 제어하면 편리한데 VNC 뷰어를 이용하면 된다.

(참고로 한번 설정하고 나면 다음부터는 자동으로 접속이 가능하다.)


VNC 서버 프로그램 설치

우선 라즈베리파이에 VNC 서버를 설치 해야 한다.

PUTTY와 같은 SSH를 이용하여 라즈베리파이 보드에 접속하여 x11vnc 패키지를 설치한다.

pi@raspberrypi:~ $ sudo apt-get install x11vnc xinetd



/boot/config.txt 파일을 편집기로 열어서 해상도 수정

pi@raspberrypi:~ $ sudo nano /boot/config.txt


해상도를 1280x720 으로 설정하고 저장한다.


바뀐 설정을 적용시키기 위해 라즈베리파이를 재부팅한다


VNC Server 프로그램을 실행한다.

pi@raspberrypi:~ $ x11vnc



VNC클라이언트 설치

PC상에는 VNC Viewer 프로그램을 실행해서 원격 제어 할 수 있다.

VNC Verwer는 https://www.realvnc.com/download/viewer/ 에서 다운로드 가능한다.


VNC 프로그램을 실행하고 라즈베리파이 IP로 접속한다.


 ID와 패스워드 입력하고 로그인



접속되면 윈도우 환경에서 라즈베리 파이제어가 가능해 진다.













저작자 표시 비영리 변경 금지
신고

[MSP430FR2311 EVM] FRAM 테스트

[MSP430]/MSP430_FRAM | 2017.03.30 00:42
Posted by nexp

[MSP430FR2311 EVM] FRAM 테스트





MSP430FR2311 의 최대 장점은 FRAM이다. RAM의 장점인 쉽고 빠르게 Read/Write 하고, FLASH의 장점인 전원 Off시 데이터 유지하는 장점을 가지고 있어서 저전력의 데이터 로깅 시스템에 적용하기에 좋은것 같다.


이러한 MSP430의 FRAM에 읽고 쓰는 테스트 를 해 보았다.



MSP430F2311 FRAM 블록도





FRAM에 Write 하는 코드는 상당히 간단하다.


void FRAMWrite(unsigned long *FRAM_write_ptr, unsigned long Data)

{

    SYSCFG0 = FRWPPW;


    *FRAM_write_ptr = Data;


    SYSCFG0 = FRWPPW | PFWP;

}



void FRAMWriteBuffer(unsigned long *FRAM_write_ptr, unsigned long *pBuf, unsigned int Size)

{

    unsigned int i=0;


    SYSCFG0 = FRWPPW;

    for (i = 0; i < Size; i++)

    {

        *FRAM_write_ptr++ = pBuf[i];

    }

    SYSCFG0 = FRWPPW | PFWP;

}



MSP430FR2311의 FRAM 메모리 주소는 아래와 같이 FFFF-FF80, FFFF-FF100로 코드 메모리와 같이 사용할 수 있다. 예제에서는 FD00에서 테스트 했다.


저작자 표시 비영리 변경 금지
신고

[MSP430FR2311 EVM] ADC테스트 - 내장 온도 센서 테스트



MSP430FR2311 는 10bit, 12bit ADC가 8채널이 있다. 최대 200ksps 까지 변환 가능하기존 MSP430시리즈와 크게 차이는 없지만 FRAM을 사용하면 장점이 될만한 기능이 있는것 같다.



MSP430FR2311 ADC 블록도



MSP430FR2311 ADC 초기화 코드


    // Configure ADC - Pulse sample mode; ADCSC trigger

    ADCCTL0 |= ADCSHT_8 | ADCON;                                  // ADC ON,temperature sample period>30us

    ADCCTL1 |= ADCSHP;                                            // s/w trig, single ch/conv, MODOSC

    ADCCTL2 |= ADCRES;                                            // 10-bit conversion results

    ADCMCTL0 |= ADCSREF_1 | ADCINCH_12;                           // ADC input ch A12 => temp sense

    ADCIE |=ADCIE0;                                               // Enable the Interrupt request for a completed ADC_B conversion


    // Configure reference

    PMMCTL0_H = PMMPW_H;                                          // Unlock the PMM registers

    PMMCTL2 |= INTREFEN | TSENSOREN;                              // Enable internal reference and temperature sensor





MSP430FR2311 온도센서 특성 그래프



MSP430FR2311 ADC 인터럽트 핸들러

// ADC interrupt service routine

#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)

#pragma vector=ADC_VECTOR

__interrupt void ADC_ISR(void)

#elif defined(__GNUC__)

void __attribute__ ((interrupt(ADC_VECTOR))) ADC_ISR (void)

#else

#error Compiler not supported!

#endif

{

    switch(__even_in_range(ADCIV,ADCIV_ADCIFG))

    {

        case ADCIV_NONE:

            break;

        case ADCIV_ADCOVIFG:

            break;

        case ADCIV_ADCTOVIFG:

            break;

        case ADCIV_ADCHIIFG:

            break;

        case ADCIV_ADCLOIFG:

            break;

        case ADCIV_ADCINIFG:

            break;

        case ADCIV_ADCIFG:

            temp = ADCMEM0;

            // Temperature in Celsius

            // The temperature (Temp, C)=

            IntDegC = (temp-CALADC_15V_30C)*(85-30)/(CALADC_15V_85C-CALADC_15V_30C)+30;


            // Temperature in Fahrenheit

            // Tf = (9/5)*Tc | 32

            IntDegF = 9*IntDegC/5+32;

            //__bic_SR_register_on_exit(LPM3_bits);               // Exit LPM3


            break;

        default:

            break;

    }

}










저작자 표시 비영리 변경 금지
신고

[MSP430FR2311 EVM] UART 테스트

[MSP430]/MSP430_FRAM | 2017.03.30 00:38
Posted by nexp

[MSP430FR2311 EVM] UART 테스트







MSP430FR2311 UART 초기화 코드

MSP430 UART Baudrate 설정 생성코드 참고


    // Configure UART pins

     P1SEL0 |= BIT6 | BIT7;                    // set 2-UART pin as second function



       // Configure UART

     UCA0CTLW0 |= UCSWRST;                     // Put eUSCI in reset

     UCA0CTLW0 |= UCSSEL__SMCLK;


     // Baud Rate calculation

     UCA0BR0 = 8;                              // 1000000/115200 = 8.68

     UCA0MCTLW = 0xD600;                 // 1000000/115200 - INT(1000000/115200)=0.68

                                                     // UCBRSx value = 0xD6 (See UG)

     UCA0BR1 = 0;

     UCA0CTLW0 &= ~UCSWRST;          // Initialize eUSCI



MSP430 에서 UART 보레이트 설정시 항상 문제가 되던 부분은 오차율인데... MCTLW 레지스터를 설정하면  보상 가능하다.


ex) 115200 @ 1Mhz 

1000000/115200 - INT(1000000/115200)=0.68

0.68 => 0.6667 -> 0xD6 





MSP430FR2311 UART 송수신 코드

unsigned char U0_GetByte(void)

{

while(!(UCA0IFG & UCRXIFG));

return UCA0RXBUF;

}


void U0_PutByte(unsigned char Data)

{

    UCA0TXBUF = Data;

    while(!(UCA0IFG & UCTXIFG));

}




참고로 CCS 에는 시리얼 포트 터미널창이 있어 간단히 UART 테스트를 해 볼수 있다.




저작자 표시 비영리 변경 금지
신고

블로그 이미지

nexp

카테고리

분류 전체보기 (1550)
[MyProject] (48)
[TI] (75)
[NXP] (51)
[ST_MICRO] (128)
[FreeScale] (31)
[MSP430] (139)
[Microchip] (131)
Cortex-M (36)
[ATMEL] (29)
[AnalogDevice] (22)
[Embedded] (2)
ARM9 (24)
[AVR] (80)
[DSP] (111)
[8051] (21)
[MCU] (50)
[INTERFACE] (210)
[AppBoard] (23)
[ROBOT] (25)
[MODULE] (127)
[SENSOR] (41)
[DATA] (21)
[FPGA] (29)
[EVB] (1)
[Proramming] (38)
[MyLog] (6)
[IDEA] (0)
[Utility] (19)
[Book] (24)
취미생활 (4)
[Link] (2)

티스토리 툴바