ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Arduino UNO와 Raspberry PI 3간 Bluetooth 통신 테스트
    Arduino Uno/Bluetooth HC-05, HC-06 2019. 1. 28. 14:03



    HC-05를 연결한 Arduino UNO와 Raspberry PI 3간 통신 테스트를 진행했습니다.




    1. bluetoothctl 명령을 사용하여 페어링하는 방법


    2. LED 제어 테스트




    1. bluetoothctl 명령을 사용하여 페어링하는 방법

    라즈베리파이와 Arduino UNO간 페어링하는 방법을 설명합니다.



    1. Arduino UNO와 HC-05 Bluetooth 모듈을 다음처럼 연결하고 Arduino UNO에 전원을 연결합니다.

     


    Arduino UNO D3  → HC-05 Bluetooth 모듈 RXD

    Arduino UNO D2  → HC-05 Bluetooth 모듈 TXD

    Arduino UNO GND  → HC-05 Bluetooth 모듈 GND

    Arduino UNO 5V  → HC-05 Bluetooth 모듈 VCC





    2.  필요한 패키지를 설치합니다.


    pi@raspberrypi:~ $ sudo apt-get install bluetooth bluez bluez-tools



    Raspberry Pi 3의 터미널에서  bluetoothctl  명령을 실행합니다.

    현재 디폴트로 설정되어 있는 Raspberry Pi 3에 내장된 Bluetooth 모듈의 맥어드레스를 출력해줍니다.

    [bluetooth] # 옆에 커서가 깜박이면서  명령 입력 대기모드가 됩니다.


    pi@raspberrypi:~ $ bluetoothctl
    [NEW] Controller B8:27:EB:DA:FA:66 raspberrypi [default]
    [bluetooth]#


    bluetoothctl는 블루투스 디바이스를 검색하고 페어링 및 연결 등의 목적으로 사용할 수 있는 유틸리티입니다.

    대화형 명령 방식이라서  명령을 입력하면 바로 결과를 보여줍니다.




    3. show를 입력하면 Raspberry Pi 3에서 사용중인 모듈의 정보를 보여줍니다.


    블루투스 모듈의 맥어드레스는 B8:27:E8:DA:FA:66입니다.

    Powered: yes 현재 모듈의 전원이 켜져 있습니다.

    Discoverable: no 다른 블루투스 장치에서 검색할 수 없도록 설정되어 있습니다.

    Pairable: yes 페어링이 가능하도록 설정되어 있습니다.

    Discovering: no 현재 다른 블루투스 장치를 검색하고 있지 않습니다.

    UUID 목록은 라즈베리파이에서 제공하는 블루투스 서비스입니다.


    [bluetooth]# show
    Controller B8:27:EB:DA:FA:66
           Name: raspberrypi
           Alias: raspberrypi
           Class: 0x480000
           Powered: yes
           Discoverable: no
           Pairable: yes
           UUID: Headset AG                (00001112-0000-1000-8000-00805f9b34fb)

           UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)

           UUID: A/V Remote Control        (0000110e-0000-1000-8000-00805f9b34fb)

           UUID: Generic Access Profile    (00001800-0000-1000-8000-00805f9b34fb)

           UUID: PnP Information           (00001200-0000-1000-8000-00805f9b34fb)

           UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)

           UUID: Audio Source              (0000110a-0000-1000-8000-00805f9b34fb)

           UUID: Handsfree Audio Gateway   (0000111f-0000-1000-8000-00805f9b34fb)

           Modalias: usb:v1D6Bp0246d052B
           Discovering: no




    4. 모듈의 전원이 꺼져있다면(Powered: no) 다음 명령으로 모듈의 전원을 켜줍니다.


    [bluetooth]# power on
    [CHG] Controller B8:27:EB:DA:FA:66 Class: 0x6c0000
    Changing power on succeeded
    [CHG] Controller B8:27:EB:DA:FA:66 Powered: yes




    5. 에이전트를 활성화하고 기본값으로 설정합니다. 페어링 핀 코드를 요청 및 확인을 하기 위해 필요합니다.


    [bluetooth]# agent on
    Agent registered
    [bluetooth]# default-agent
    Default agent request successful




    6. 주변에 있는 블루투스 디바이스를 검색합니다.  HC-05가 검색될 때까지 대기합니다.


    [bluetooth]# scan on
    Discovery started
    [CHG] Controller B8:27:EB:DA:FA:66 Discovering: yes
    [NEW] Device 00:09:A7:24:A7:CF Beoplay E8
    [NEW] Device 57:F3:99:2E:15:7B 57-F3-99-2E-15-7B
    [NEW] Device 54:BD:5A:3F:4E:62 54-BD-5A-3F-4E-62
    [NEW] Device 44:CD:06:A2:89:EC 44-CD-06-A2-89-EC
    [NEW] Device 9C:8C:6E:E1:7E:23 9C-8C-6E-E1-7E-23
    [NEW] Device 5E:5A:12:DB:1E:AC 5E-5A-12-DB-1E-AC
    [NEW] Device 64:1C:B0:14:A8:44 64-1C-B0-14-A8-44
    [NEW] Device 4D:A4:8C:6C:A6:00 4D-A4-8C-6C-A6-00
    [NEW] Device 5A:F6:24:E8:93:7C 5A-F6-24-E8-93-7C
    [NEW] Device 20:15:08:13:18:58 20-15-08-13-18-58
    [CHG] Device 20:15:08:13:18:58 LegacyPairing: no
    [CHG] Device 20:15:08:13:18:58 Name: HC-05
    [CHG] Device 20:15:08:13:18:58 Alias: HC-05




    7. 주변 블루투스 디바이스 검색을 중지합니다.


    [bluetooth]# scan off
    Discovery stopped
    [CHG] Controller B8:27:EB:DA:FA:66 Discovering: no




    8. pair 명령과 앞에서 확인한 HC-05의 블루투스 모듈 맥어드레스를 같이 적어주면 페어링이 진행됩니다.

    핀번호로 1234를 입력하고 엔터키를 누릅니다.


    [bluetooth]# pair 20:15:08:13:18:58
    Attempting to pair with 20:15:08:13:18:58
    [CHG] Device 20:15:08:13:18:58 Connected: yes
    Request PIN code
    [agent] Enter PIN code: 1234




    9. 잠시 후 페어링이 완료됩니다.


    [CHG] Device 20:15:08:13:18:58 UUIDs: 00001101-0000-1000-8000-00805f9b34fb
    [CHG] Device 20:15:08:13:18:58 ServicesResolved: yes
    [CHG] Device 20:15:08:13:18:58 Paired: yes
    Pairing successful
    [CHG] Device 20:15:08:13:18:58 ServicesResolved: no
    [CHG] Device 20:15:08:13:18:58 Connected: no

    [bluetooth]#




    10. 페어링 완료후, trust 명령을 해줘야 합니다.


    [bluetooth]# trust 20:15:08:13:18:58
    [CHG] Device 20:15:08:13:18:58 Trusted: yes

    Changing 20:15:08:13:18:58 trust succeeded




    11.  info 명령과 블루투스 모듈 맥어드레스를 같이 적어주면 모듈 상태를 보여줍니다. PairedTrusted 항목이 yes입니다.


    [bluetooth]# info 20:15:08:13:18:58

    Device 20:15:08:13:18:58

           Name: HC-05

           Alias: HC-05

           Class: 0x001f00

           Paired: yes

           Trusted: yes

           Blocked: no

           Connected: no

           LegacyPairing: yes

           UUID: Serial Port               (00001101-0000-1000-8000-00805f9b34fb)




    12.  페어링을 취소하는 방법을 잠시 설명하겠습니다.  지금 진행하지는 마세요.

    paired-devices 명령으로 현재 페어링된 디바이스 확인을 할 수 있습니다.


    [bluetooth]# paired-devices
    Device 20:15:08:13:18:58 HC-05



    remove 명령과 HC-05 블루투스 모듈 맥어드레스를 같이 적어주면 페어링 설정이 Raspberry Pi 에서 삭제됩니다.


    [bluetooth]# remove 20:15:08:13:18:58
    [DEL] Device 20:15:08:13:18:58 HC-05

    Device has been removed




    13.  quit 명령으로  bluetoothctl를 종료합니다.


    [bluetooth]# quit
    Agent unregistered
    [DEL] Controller B8:27:EB:DA:FA:66 raspberrypi [default]



    2. LED 제어 테스트

    1. 아두이노 우노에 다음 코드를 업로드합니다.

     

    #include <SoftwareSerial.h>


    SoftwareSerial softwareSerial(2, 3); // RX, TX



    void setup() {


    softwareSerial.begin(9600);

    pinMode(LED_BUILTIN, OUTPUT);

    }


    void loop() {


    if (softwareSerial.available() > 0 ) {



      char command = softwareSerial.read();

      int ledStatus = digitalRead(LED_BUILTIN);


      switch (command){


        case '1':

        

          if (ledStatus == LOW){

            digitalWrite(LED_BUILTIN, HIGH);

            softwareSerial.println("LED가 켜졌습니다.\n");

          }

          else{

            softwareSerial.println("이미 LED가 켜져있습니다.\n");

          }

          break;


        case '2':

        

          if (ledStatus == HIGH){

            digitalWrite(LED_BUILTIN, LOW);

            softwareSerial.println("LED가 꺼졌습니다.\n");

          }

          else{

            softwareSerial.println("이미 LED가 꺼져있습니다.\n");

          }

          break;


        case 'S':

        case 's':

            

          if (ledStatus == LOW){

            softwareSerial.println("LED 상태: 꺼짐\n");

          }

          else {

            softwareSerial.println("LED 상태: 켜짐\n");

          }

          break;

        

      }    

    }

    }

     

     

     

    2. HC-05의 맥어드레스를 확인합니다.

     

    pi@raspberrypi:~ $ hcitool scan
    Scanning ...
           20:15:08:13:18:58       HC-05

     

    보이지 않는 경우 앞에서 확인한 맥어드레스를 사용하세요.

     

     

    3. HC-05와 시리얼 통신을 하기 위해  /dev/rfcomm0 디바이스를 생성합니다.

     

    pi@raspberrypi:~ $ sudo rfcomm bind rfcomm0 20:15:08:13:18:58

     

     

     

    4. 아래 첨부한 miniterm 소스  코드를 miniterm.c로 저장하여 컴파일합니다.

    http://www.openfoundry.org/svn/xenids/xen-4.0.0/tools/misc/miniterm/miniterm.c

     

    pi@raspberrypi:~ $ gcc -o miniterm miniterm.c

     

     

    /******************************************************************************
    * miniterm.c
    *
    * Adapted from the example program distributed with the Linux Programmer's
    * Guide (LPG). This has been robustified and tweaked to work as a debugging
    * terminal for Xen-based machines.
    *
    * Modifications are released under GPL and copyright (c) 2003, K A Fraser
    * The original copyright message and license is fully intact below.
    */

    /*
    *  AUTHOR: Sven Goldt (goldt@math.tu-berlin.de)
    *
    *  This program is free software; you can redistribute it and/or
    *  modify it under the terms of the GNU General Public License
    *  as published by the Free Software Foundation; either version 2
    *  of the License, or (at your option) any later version.
    *
    *  This program is distributed in the hope that it will be useful,
    *  but WITHOUT ANY WARRANTY; without even the implied warranty of
    *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    *  GNU General Public License for more details.
    *
    */

    #include <termios.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <fcntl.h>
    #include <signal.h>
    #include <sys/types.h>
    #include <sys/wait.h>
    #include <string.h>

    #define DEFAULT_BAUDRATE   115200
    #define DEFAULT_SERDEVICE  "/dev/ttyS0"
    #define ENDMINITERM        0x1d

    volatile int stop = 0;

    void child_handler(int s)
    {
       stop = 1;
    }

    int cook_baud(int baud)
    {
       int cooked_baud = 0;
       switch ( baud )
       {
       case     50: cooked_baud =     B50; break;
       case     75: cooked_baud =     B75; break;
       case    110: cooked_baud =    B110; break;
       case    134: cooked_baud =    B134; break;
       case    150: cooked_baud =    B150; break;
       case    200: cooked_baud =    B200; break;
       case    300: cooked_baud =    B300; break;
       case    600: cooked_baud =    B600; break;
       case   1200: cooked_baud =   B1200; break;
       case   1800: cooked_baud =   B1800; break;
       case   2400: cooked_baud =   B2400; break;
       case   4800: cooked_baud =   B4800; break;
       case   9600: cooked_baud =   B9600; break;
       case  19200: cooked_baud =  B19200; break;
       case  38400: cooked_baud =  B38400; break;
       case  57600: cooked_baud =  B57600; break;
       case 115200: cooked_baud = B115200; break;
       }
       return cooked_baud;
    }

    int main(int argc, char **argv)
    {
       int              fd, c, cooked_baud = cook_baud(DEFAULT_BAUDRATE);
       char            *sername = DEFAULT_SERDEVICE;
       struct termios   oldsertio, newsertio, oldstdtio, newstdtio;
       struct sigaction sa;
       static char start_str[] =
           "************ REMOTE CONSOLE: CTRL-] TO QUIT ********\r\n";
       static char end_str[] =
           "\n************ REMOTE CONSOLE EXITED *****************\n";

       while ( --argc != 0 )
       {
           char *p = argv[argc];
           if ( *p++ != '-' )
               goto usage;
           if ( *p == 'b' )
           {
               p++;
               if ( (cooked_baud = cook_baud(atoi(p))) == 0 )
               {
                   fprintf(stderr, "Bad baud rate '%d'\n", atoi(p));
                   goto usage;
               }
           }
           else if ( *p == 'd' )
           {
               sername = ++p;
               if ( *sername == '\0' )
                   goto usage;
           }
           else
               goto usage;
       }

       /* Not a controlling tty: CTRL-C shouldn't kill us. */
       fd = open(sername, O_RDWR | O_NOCTTY);
       if ( fd < 0 )
       {
           perror(sername);
           exit(-1);
       }

       tcgetattr(fd, &oldsertio); /* save current modem settings */

       /*
        * 8 data, no parity, 1 stop bit. Ignore modem control lines. Enable
        * receive. Set appropriate baud rate. NO HARDWARE FLOW CONTROL!
        */
       newsertio.c_cflag = cooked_baud | CS8 | CLOCAL | CREAD;

       /* Raw input. Ignore errors and breaks. */
       newsertio.c_iflag = IGNBRK | IGNPAR;

       /* Raw output. */
       newsertio.c_oflag = OPOST;

       /* No echo and no signals. */
       newsertio.c_lflag = 0;

       /* blocking read until 1 char arrives */
       newsertio.c_cc[VMIN]=1;
       newsertio.c_cc[VTIME]=0;

       /* now clean the modem line and activate the settings for modem */
       tcflush(fd, TCIFLUSH);
       tcsetattr(fd,TCSANOW,&newsertio);

       /* next stop echo and buffering for stdin */
       tcgetattr(0,&oldstdtio);
       tcgetattr(0,&newstdtio); /* get working stdtio */
       newstdtio.c_iflag &= ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON);
       newstdtio.c_oflag &= ~OPOST;
       newstdtio.c_cflag &= ~(CSIZE | PARENB);
       newstdtio.c_cflag |= CS8;
       newstdtio.c_lflag &= ~(ECHO | ICANON | IEXTEN | ISIG);
       newstdtio.c_cc[VMIN]=1;
       newstdtio.c_cc[VTIME]=0;
       tcsetattr(0,TCSANOW,&newstdtio);

       /* Terminal settings done: now enter the main I/O loops. */
       switch ( fork() )
       {
       case 0:
           close(1); /* stdout not needed */
           for ( c = (char)getchar(); c != ENDMINITERM; c = (char)getchar() )
               write(fd,&c,1);
           tcsetattr(fd,TCSANOW,&oldsertio);
           tcsetattr(0,TCSANOW,&oldstdtio);
           close(fd);
           exit(0); /* will send a SIGCHLD to the parent */
           break;
       case -1:
           perror("fork");
           tcsetattr(fd,TCSANOW,&oldsertio);
           close(fd);
           exit(-1);
       default:
           write(1, start_str, strlen(start_str));
           close(0); /* stdin not needed */
           sa.sa_handler = child_handler;
           sa.sa_flags = 0;
           sigaction(SIGCHLD,&sa,NULL); /* handle dying child */
           while ( !stop )
           {
               read(fd,&c,1); /* modem */
               c = (char)c;
               write(1,&c,1); /* stdout */
           }
           wait(NULL); /* wait for child to die or it will become a zombie */
           write(1, end_str, strlen(end_str));
           break;
       }

       return 0;

    usage:
       printf("miniterm [-b<baudrate>] [-d<devicename>]\n");
       printf("Default baud rate: %d\n", DEFAULT_BAUDRATE);
       printf("Default device: %s\n", DEFAULT_SERDEVICE);
       return 1;
    }

     

     

     

    5. 다음처럼 실행 후, 테스트를 해봅니다.

    1을 누르면 아두이노에 연결된 LED가 켜지고 2를 누르면 LED가 꺼집니다.

    s를 입력하면 현재 LED 상태를 출력합니다. 종료시에는 Ctrl + ] 를 입력하세요.

     

    pi@raspberrypi:~ $ ./miniterm -b9600 -d/dev/rfcomm0
    ************ REMOTE CONSOLE: CTRL-] TO QUIT ********
    LED가 켜졌습니다.

    이미 LED가 켜져있습니다.

    LED가 꺼졌습니다.

    LED 상태: 꺼짐

    LED 상태: 꺼짐

    LED가 켜졌습니다.

    LED가 꺼졌습니다.

    LED가 켜졌습니다.

    LED가 꺼졌습니다.

    LED 상태: 꺼짐

    LED가 켜졌습니다.

    LED가 꺼졌습니다.



    ************ REMOTE CONSOLE EXITED *****************

     

     

    마지막 업데이트 2019. 8. 8

     

     

     

     


    포스트 작성시에는 문제 없었지만 이후 문제가 생길 수 있습니다.
    댓글로 알려주시면 빠른 시일내에 답변을 드리겠습니다.

    여러분의 응원으로 좋은 컨텐츠가 만들어집니다. 지금 본 내용이 도움이 되었다면 후원 또는 유튜브 구독 부탁드립니다. 감사합니다 : )

    유튜브 구 독 하 기
    후 원 하 기


    댓글 50

    • BlogIcon 김태범 2016.06.21 17:17


      라즈베리와 아두이노간의 블루투스 통신을 공부하다 문제가생겨 질문올립니다ㅜㅜ.
      아두이노 블루투스모듈과 안드로이드간에 페어링은 잘되는데 라즈베리파이3에서 아두이노모듈을 검색하여 페어링을 하면 위글과같이 paired successfully.....와같은 오류가뜹니다.ㅜ
      어떻게 해야 페어링이 될까요?

    • BlogIcon 김태범 2016.06.21 19:55


      이메시지가 페어링이 된 상태라면 뒤에 but this device has no services which can be used with Raspberry Pi. 는 무슨뜻인가요??? ㅠㅠ 글에 써놓으신것처럼 메시지 그냥 무시하고 코딩했는데 아두이노로 전송이 안되는데 무엇이문제일까요?

    • BlogIcon 김태범 2016.06.21 20:40


      오~~감사합니다. 통신성공했어요~정말감사합니다 혹시 실례가 안된다면 메일주소를 알수있을까요? 다음에 모르는것이 있을때 질문을 하고싶습니다.

    • 2016.10.19 10:34


      비밀댓글입니다

    • 2017.11.06 15:29


      말씀하신대로 연결을 하면 연결이 잠깐 됐다가 disconnect로 바뀌네요 ㅠㅠ 그 이후로 다시 connect를 시도하면 connection failed - no usable service on this device 라 뜨는데 어떻게 하면 수정할 수 있을까요 ㅠ

    • 이길훈 2017.11.21 02:35


      라즈베리와 아두이노간 블루투스 통신을 공부하다 궁금한게 생겨 질문올립니다
      1. HC-06 (1.8v)으로는 라즈베리파이와의 통신이 불가능한가요??
      가능하다면 HC-05와 같은방법으로 사용하면 될까요??
      (HC-06으로 일단 페어링은 되었고 라즈베리파이에서 보낸 신호를 받는것까지는 성공하였습니다. 하지만 아두이노에서 보낸 신호를 라즈베리파이에서 받아오질 못하고있습
      니다.)
      혹시 추가로 설정해줘야할 부분이 있다면 어떤부분일까요??

      2. 아두이노에서 보낸 신호를 라즈베리파이에서 받아 작동하게끔 하려고 하는데
      아두이노를 master mode 로 하고 라즈베리파이를 slave mode 로 하여 사용할 수 있을까요??
      이 방법이 아니라면 혹시 어떤방법을 사용할 수 있을까요?

      감사합니다!




      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2017.11.21 19:53 신고


        1. 별다른 변경없이 HC-05와 HC-06이 동일하게 동작했던거 같습니다.

        2. 라즈 코드에서 특정 신호들어오면 원하는 동작하도록 수정만 해주면 될듯합니다.

    • Favicon of http://dd BlogIcon 주상욱 2018.02.06 17:04


      혹시 라즈베리와 아트메가간에도 통신하는 법도 올려주실수 있나요???ㅜㅜ 아트메가에서 신호를 라즈베리로 줘서 라즈베리에서 led 키는걸 해보고싶은데
      찾아봐도 잘 나오지 않네요 ㅜㅜ

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2018.02.07 17:38 신고


        지금 테스트해보기가 여의치 않아서 해볼 수가 없네요.. 죄송해요..

        라즈베리파이의 RX, TX, GND를 avr의 TX,
        RX, GND에 연결하면 될듯해요

        그리고 아래 링크에 따르면..
        https://raspberrypi.stackexchange.com/questions/69961/raspberry-pi-3-uart-with-atmega328p

        /boot/cmdline.txt에서

        console=serial0,115200를 제거하라고 하네요..

    • 김윤희 2019.01.27 23:35


      도움이 정말 많이 되는 글이네요. 감사합니다.
      저는 블루투스가 hm으로 시작되는것인데 hcitool scan 명령어를 치면 왜 맥주소가 뜨지 않을까요.. 그 전까지는 다 성공했습니다.

    • 남생 2019.01.30 19:51


      위에 예제를 통해서 실행을 성공시켰는데요
      이 예제를 이용해서 아두이노에서 블루투스를 통하여 압력센서값을 라즈베리파이에 전송하여
      라즈베리파이 터미널에 센서값을 출력시켰는데요
      터미널에서 출력되는 값을 라즈베리파이 안에 있는 파이썬을 통해서 데이터베이스에 저장하고 싶은데
      어떻게 해야 될까요?



      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.01.30 21:09 신고


        C언어의 경우에는 MySQL API를 사용하면 데이터베이스에 저장할 수 있습니다.

        링크를 참고하세요..
        https://stackoverflow.com/a/44860835

        파이썬도 가능할듯합니다.

      • 공부하는자 2019.07.03 19:08


        혹시 어떻게하셨는지 소스좀 알수있을까요?

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.07.04 00:00 신고


        해보고 답변을 단게 아니라서 작성된 소스코드가 없습니다.

        위에 언급한 링크를 참조하세요.

    • 거북 2019.02.01 20:19


      위의 예제를 실행해봤는데요
      아두이노 시리얼창에서 출력한 값을
      파이썬에서 출력을 원하는데요

      #include <SoftwareSerial.h>
      SoftwareSerial softwareSerial(2, 3); // RX, TX
      void setup() {
      softwareSerial.begin(9600);
      Serial.begin(9600);
      }

      void loop() {
      int sensorval = analogRead(A0);
      Serial.println(sensorval);
      int brightness = map(sensorval, 0, 1023, 0, 255);
      delay(1500);
      }
      아두이노 소스입니다.

      import os, sys
      import serial

      export = "sudo rfcomm bind rfcomm0 98:D3:81:FD:45:BC"
      os.system(export)

      port = "/dev/rfcomm0"

      serialFromArduino = serial.Serial(port,9600)
      serialFromArduino.flushInput()
      while True:
      input_s = serialFromArduino.readline()
      input = int(input_s)
      print(input)
      이게 라즈베리파이 파이썬 소스인데요
      외부 아두이노에서 블루투스를 사용하여 시리얼에서 출력한 값을 읽어
      파이썬 콘솔에다가 띄우고 싶은데 값이 출력되질 않네요 ㅠㅠ
      도와주세요

    • 노력 2019.05.21 10:50


      시리얼값을 받아서 받은 시리얼값을 활용하여 프로그래밍을 하고싶은데요 어떻게 해야할까요???

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.05.21 10:57 신고


        어떤 방식으로 하려고 하나요? 포스트에 있는 수신 받은 문자를 확인하여 대응하는 것을 송신하는 방식과 다르게 하려고 하나요?

    • 동삭동칼잽기 2019.05.29 20:39


      안녕하세요 자세한 설명과 코드설명으로 실험에 성공하였습니다. 감사합니다. 최근 올리신 유튜브로 파이썬강좌 잘듣고 있습니다. 항상 친절하신 설명으로 좋은 정보 얻어갑니다.

      라즈베리파이로 아두이노HC06 통신을 기반으로 하여 우노의 led를 라즈베리파이의 키보드가 아닌 어플로 제어하는 실험을 하고있는데용.
      blynk과 라즈베리파이를 연결해서 1,2 를 blynk어플의 virtual pin 으로 대체하여
      virtual pin1, virtual pin2 를 누를 시 led 가 켜지고 꺼지게 하고 싶습니다.

      miniterm.c 의 코드에서 라즈베리파이가 hc06을 제어하는 구간의 코드가 어딘지 궁금합니다.

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.05.29 20:54 신고


        미니텀에서는 문자열을 보낼뿐 제어하는 코드가 없습니다.

        아두이노에서 받은 문자를 보고 동작하는 겁니다.

      • 동삭동칼잽이 2019.05.29 23:39


        아항 그럼 미니텀피일은 콘솔창을 띄우기위한 소스파일인건가요?? 문자열을 라베에서 모듈로보내는건 그 위의 코드가 진행하는 것인가요??

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.05.29 23:48 신고


        아두이노와 문자열을 주고받기 위해 미니텀 코드를 사용합니다.

    • 이재희 2019.07.02 17:51


      다 됐는데 마지막에 1,2 이랑 s를 눌러도 아무반응이 없네요 ㅠㅠ

      • 이재희 2019.07.02 17:53


        아무 반응이 없어서 나가면 8이 써져있는 상태로 나가지는데 어떻게 해야되나요ㅠㅠ

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.07.02 18:59 신고


        rx핀과 tx핀을 반대로 연결한건 아닌지 보세요.

      • 이재희 2019.07.10 14:00


        이제 이걸 웹을 만들어서 on off로 켜고 끌 수 있게 만들고싶은데 가능한가요? 가능하면 쉽게 할 수 있나요?ㅠㅠ

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.07.10 14:34 신고


        웹하고 연결하려면 블루투스가 아닌 WIFI를 사용해야 할 듯합니다.

        다음 링크에서 안드로이드앱의 역활을 웹이하게 만들면됩니다. 웹에서 소켓 통신하는 것을 찾아보세요.

        https://webnautes.tistory.com/816

      • 이재희 2019.07.12 15:49


        귀찮게 해드려 죄송합니다 마지막 질문 드릴게요 ㅠㅠㅠ 나가기 버튼을 컨트롤 ]
        가 아닌 숫자 0이나 간단한걸로 바꾸고 싶은데 코드를 봐도 잘 모르겠네요 ㅠㅠ 어디서 수정해야될까요???

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.07.12 16:09 신고


        괜찮습니다 : )

        터미널 코드라서 Ctrl 키와 특정키를 눌렀을 때 종료하도록 되어 있는 것입니다.

        특정 문자로 바꾸게 되면 입력한 문자열에 의해서 오동작할 가능성이 있습니다.

      • 이재희 2019.07.26 13:11


        코드중에 fork에 관한 궁금증이 있고 사진도 첨부해야돼서 그런데 실례가 안된다면 이메일 주소좀 알 수 있을까요?ㅠㅠ

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.07.26 13:15 신고


        webnautes@naver.com 입니다.

        바로 답변이 어려울 수 있습니다.

    • 공부하는자 2019.07.03 19:09


      안녕하세요 이거를 보고 예제를 실행시켜서 성공은 했습니다.

      하지만, 라즈베리에서 제어가 아닌 아두이노에서 센서값을 라즈베리에 받고싶은데요
      혹시 방법좀 알수있을까요?? 이리저리 검색하고 돌아다녀봐도 잘 안나와서요..

    • 갤러기 2019.08.07 20:12


      안녕하세요 HM 10 블루투스 따라하고 있습니다.
      아두이노에서 아날로그 센서로 받은 정보를 라즈베리 파이로 전송을 하려고 하는데 6번에서 블루투스 검색을 했을때 검색이 안됩니다...
      HM 10 은 안되는 건가요??

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.08.07 21:02 신고


        Bluetooth가 아니라 BLE(Bluetooth Low Energy)라서 본 포스트에서 소개하는 방법으로는 진행이 안되는 듯합니다.


        아래 포스트의 gattlib 코드를 분석하면 진행이 가능할 듯합니다.

        Raspberry Pi 3에서 Arduino 101 BLE 제어 및 정보 가져오기 ( C 언어 라이브러리 사용 )
        https://webnautes.tistory.com/972

    • hinamura 2019.08.08 17:28


      4번에서 miniterm 을 컴파일하라고 하고 밑에 링크가 있는데 링크가 열리질 않습니다.
      링크는 그냥 밑에 minterm 코딩 파일인가요?
      그냥 라즈베리파에 아래의 miniterm 코딩을 치면 되나요?
      혹시 그냥 치면 되는거라면 라즈베리파이 터미널 킨상태에서 어디에 치면 되나요?

    • 가나아 2019.09.06 22:00


      안녕하세요 현재 jetson에 동글을 연결해 아두이노 와 블루투스로 연결을 해보려고 하고있습니다
      jetson 우분투여서 똑같이 따라하고있는데 rfcomm0 디바이스를 만드는것부터 되질 않네요.
      RFCOMM TTY surpport not available 이 뜨면 어떻게 해야하나요..?

    • haribo 2019.11.25 14:28


      안녕하세요 위 게시글을 보고 라즈베리파이와 아두이노 간에 블루투스 연결을 했습니다.
      혹시 텍스트 파일로되어있는 .txt를 라즈베리파이에서 아두이노로 블루투스를 통해서 보내고 싶은데 어떻게 해야 하나요?

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.11.25 21:38 신고


        한쪽에서 파일을 열어서 일정한 크기로 전송하고 반대 쪽에서는 받아서 파일에 저장하면 됩니다. 저장하는 쪽에서 사용할 파일 이름은 미리 약속해서 정하는 게 편할듯합니다.

Designed by Tistory.