불과 300엔으로 IoT 버튼을 만드는 방법

이런걸 발견했어



100엔 숍에서 물색하고 있으면, 이런 것을 발견했어. 100엔 숍인데 300엔 ※이었지만, 여러가지 놀 수 있을 것이므로 무심코 충동 사 버렸어. (※ 나중에 아마존을 보면 1 엔에서 팔았습니다 )


블루투스로 스마트폰에 커맨드를 보낼 수 있다는 것은 스마트폰이 아니라 라즈파이와 블루투스로 연결되면, 물리 버튼과 웹을 연계시키는 IoT같을 수 있을 것 같네요. 예를 들면 버튼을 누르면 Amazon에서 주문할 수 있다니 Dash 버튼이라든가. 이번에는 LINE에 메시지를 Push 통지하는 LINE 버튼을 만들어 보겠습니다.

준비하는 것


  • Raspberry-Pi3 (Bluetooth가 켜져 있으면 OK)
  • 원격 셔터 (AB Shutter 3)

  • 만드는 방법



    라즈파이와 원격 셔터 연결



    우선은 라즈파이와 리모트 셔터를 Bluetooth로 페어링 해요. 블루투스를 사용하기 위해 필요한 패키지를 라즈파이에 설치한다.
    sudo apt-get install bluez bluetooth libbluetooth-dev build-essential
    

    다음은 bluetooth의 페어링이다. 원격 셔터는 측면 스위치를 켜면 잠시 동안 페어링 대기 상태가 될 것입니다. 라즈파이에서 bluetoothctl 명령으로 페어링합시다. 이름이 AB Shutter3 인 장치가 원격 셔터입니다.
    $ bluetoothctl
    [bluetooth]# power on
    [bluetooth]# scan on ←リモートシャッターをペアリング待ちにしておく
    ...
    Device FF:FF:7F:F1:XX:XX AB Shutter3 ←これがリモートシャッター
    ...
    [bluetooth]# info FF:FF:7F:F1:XX:XX
    Device FF:FF:7F:F1:XX:XX
        Name: AB Shutter3       
        Alias: AB Shutter3       
        Appearance: 0x03c1
        Icon: input-keyboard
        Paired: yes
        Trusted: yes
        Blocked: no
        Connected: no
        LegacyPairing: no
        UUID: Generic Access Profile    (00001800-0000-1000-8000-00805f9b34fb)
        UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)
        UUID: Device Information        (0000180a-0000-1000-8000-00805f9b34fb)
        UUID: Battery Service           (0000180f-0000-1000-8000-00805f9b34fb)
        UUID: Human Interface Device    (00001812-0000-1000-8000-00805f9b34fb)
        Modalias: usb:v248Ap8266d0001
    [bluetooh]# pair F:FF:7F:F1:XX:XX
    

    버튼 조작 감지



    페어링이 완료되면, 이번에는 리모트 셔터 버튼의 조작을 검지하는 프로그램을 개발하겠습니다! , , 라고 생각하면 , 이미 완성하고 있는 것을 GitHub로 찾아 버렸다. . "bluebutton"이라는 소프트웨어다. 길게 누르면 보통 누름도 구분할 수 있을 것 같다. Ruby2 이상이 필요하므로 즉시 설치하자.
    sudo apt-get install ruby
    sudo gem install bluebutton
    

    설정 파일에서 버튼을 눌렀을 때의 동작을 스스로 결정할 수 있는 것 같다. ~/config/bluebutton라는 파일 이름으로 다음 파일을 만들었습니다.
    keyup=curl -XPOST 'https://my-app.now.sh/postLineMessage'
    keydown=echo DOWN
    longup=echo LONG UP
    longdown=echo LONG DOWN
    

    버튼을 눌렀다가 놓았을 때, LINE에의 투고를 트리거하는 API( https://my-app.now.sh )를 두드리는 설정이야. 이 API는 다음 번 이후로 만들어 갈거야. 그 이외의 동작(버튼 길게 누르기 등)은 화면에 로그를 출력할 뿐이에요.
    $ bluebutton -d="Shutter3" -c ~/config/bluebutton
    

    이제 원격 셔터 버튼을 누르면 API에 요청을 던지게 되었습니다. 버튼 조작이 인식되고 있는지 동작 확인을 해 보자.



    위의 이미지에서는 라즈파이가 Mac에서 로그인하여 bluebutton의 실행 화면을 표시하게 해요. 10m 정도 떨어져도 버튼 조작을 감지해 주었어.
    다음 번에는 Node.js를 사용하여 LINE 봇에 게시하는 API를 개발, Now.sh에 배포하여 IoT 버튼을 완성하겠습니다.

    추가


  • LINE Bot에 알리기 위해 계속 기사을 썼습니다. 하지만 너무 IoT 버튼과는 관계없어. .
  • 버튼 조작이 검지되었는지 여부를 알기 어려운 지적이 있고, 실제로 그대로다. 나는 라즈파이에 스피커를 연결해, 버튼 조작 검지시에 라즈파이에 말하고 있어.
  • $ npm install openjtalk
    

    speak.js
    const OpenJTalk = require('openjtalk');
    const mei = new OpenJTalk();
    mei.talk('ボタンが押されたよ', 250);
    

    config/bluebutton
    keyup=node ~/speak.js && curl -XPOST https://xxx.now.sh -d '{msg: "xx"}'
    

    좋은 웹페이지 즐겨찾기