fluent-plugin-arduino를 썼다.

8636 단어 FluentdArduino루비

재료 어쨌든 ...





재료 어쨌든,
지금은 빠져있다 Arduinofluentd
좋을까~라고 생각했기 때문에 어쩐지 마시면서 써 보았다.

fluent-plugin-arduino

움직이면 좋겠다는 느낌으로 구현한 느낌으로...
기능이 빈약하고 LED를 치카치카시킬 수밖에 없다.

사용하려면



다음 부품이 필요합니다.
  • Arduino UNO
  • LED 일부
  • 브레드보드
  • 점퍼 코드

  • 사용해보기



    사용해 본 동영상이 이쪽.

    gif

    설치를 위해



    다음은 알고 있는 사람용... (설명 생략하고 있다...)

    Arduino


  • Arduino IDE

  • Arduino IDE를 이용하여 Arduino측에 시리얼 통신의 수락이 되는 프로그램을 빌드하고 전송해야 한다.
    전송을 위한 프로그램은 여기에 있다.

    led.ino
    #define UPPER_CASE 65
    #define LOWER_CASE 97
    
    void setup() {
      for(int i = 0; i <= 13; i++) {
        pinMode(i, OUTPUT);
      }
      Serial.begin(9600);
      Serial.print("\nSetup...");
    }
    
    void loop() {
      if (Serial.available()) {
        char c = Serial.read();
        // LOW
        if (int(c) < 97){
          digitalWrite((int(c) - UPPER_CASE), LOW);
        }
        // HIGH
        else {
          digitalWrite((int(c) - LOWER_CASE), HIGH);
        }
      }
    }
    

    PC



    PC측에서는 fluentd를 기동해 둘 필요가 있다.
    그래서 Arduino를 연결하는 포트 (또는 장치)
    를 지정해 둘 필요가 있다.

    샘플이 되는 설정 파일을 여기 에 두었다.
    <source>
      type forward
      port 24224
    </source>
    
    <match arduino.test1.**>
      type  arduino
      key   name
      value kaiki
      pin   13
      port  /dev/cu.usbmodem1431
    </match>
    
    <match arduino.test2.**>
      type  arduino
      key   name
      value senjogahara
      pin   12
      port  /dev/cu.usbmodem1431
    </match>
    
    <match arduino.test3.**>
      type  arduino
      key   name
      value araragi
      pin   11
      port  /dev/cu.usbmodem1431
    </match>
    
    <match arduino.test4.**>
      type  arduino
      key   name
      value sengoku
      pin   10
      port  /dev/cu.usbmodem1431
    </match>
    
    <match arduino.test5.**>
      type  arduino
      key   name
      value hanekawa
      pin   9
      port  /dev/cu.usbmodem1431
    </match>
    

    '
    이 예에서는 /dev/cu.usbmodem1431설정 방법은 최선을 다하고 구구 싶다.

    어떻게 통신합니까?



    Arduino의 직렬 통신 기능 을 이용하고 있다.
    시리얼 통신이라고 하면, 동기라든지 생각하지 않고 무언가를 교환하려고 하면 255바이트까지의 정보 밖에 보낼 수 없다.
    스스로 프로토콜 생각해 두면 좋겠지만, 까다로운...
    어떻게 제어하겠지?라고 생각한 결과, ASCII 코드를 보내는 것으로 동작하도록(듯이) 하고 있다.

    ※ 2013/12/17 추가 Serial.readBytes()

    Hash의 키가 되어 있는 숫자가 pin 번호를 나타낸다.
    A라든지 a라든지, PC로부터 Arduino에 보내면 Arduino측이
    ASCII 코드를 숫자로 바꾸고 적절하게 뺍니다.
    특정 핀에 전류를 흘리거나 흘리지 않도록 제어한다.
    PIN_NUMBER = {
        "0"  => "A",
        "1"  => "B",
        "2"  => "C",
        "3"  => "D",
        "4"  => "E",
        "5"  => "F",
        "6"  => "G",
        "7"  => "H",
        "8"  => "I",
        "9"  => "J",
        "10" => "K",
        "11" => "L",
        "12" => "M",
        "13" => "N"
    }
    

    fluent-cat에서 fluentd에 데이터를 보내고 일치하는 태그라면
    LED를 깜박입니다.

    미래



    서보라든지 사용해 무언가 움직이거나,
    직렬 통신을 사용하여 문자열을 교환하는 라이브러리를 작성하십시오.
    LCD 모듈에 뭔가 표시하거나 그런 일 해보고 싶다.

    다만, 하고 싶은 일이 있으면 그만큼 Arduino용의 코드(Sketch)를 써야 하기 때문에, 까다롭다.

    좋은 웹페이지 즐겨찾기