3
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

Organization

SkyWay WebRTC Gatewayハンズオン Chapter0

ハンズオン のChapter0

前置き

まず簡単なLチカアプリケーションを作成します。
UDPでメッセージを送ってON/OFFします。
慣れているという方がいらっしゃったら、UDPで操作できるものであれば、LEDに限らず凝ったものを作っていただいても構いません。
また例はrubyで実装していますが、ruby以外の言語でも構いません。
(但し、講師が知らない言語で実装した場合サポートが受けられない可能性がありますのでご了承ください)

想定環境

RaspberryPi

  • RASPBIAN 4.14
  • Raspberry Pi HDカメラボードV2

Web

  • Chrome M69が動作する環境

回路

  • ブレッドボード
  • LED, 抵抗
  • ジャンパ線(メス-オス2本、オス-オス2本)

LEDと抵抗は、ハンズオン貸出機材としてはこちらのものを利用します
持ち込み参加の方は他のものでも構いませんが、Raspberry PiのGPIO(3.3V)で動作するものをお持ち下さい。

お貸し出ししたRaspberry Piは基本的な設定は完了しています。
またカメラについては別のものでも可能ですが、後述するgStreamerでのカメラからの映像取得において、オプションが変わる可能性があります。

必要なアプリケーションのインストール

# ライブラリのビルド環境のインストール
$ sudo apt install autoconf automake libtool
# 映像伝送用アプリケーションのインストール
$ sudo apt install gstreamer1.0-tools gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
# サンプルプログラムはRubyで書くのでRubyの開発環境をインストール
$ sudo apt install ruby-dev libssl-dev
# Raspberry PiのピンをRubyで使うためのgemをインストール
$ sudo gem install pi_piper

物理構成

この演習ではGPIOの21番を利用します。
https://www.raspberrypi.org/documentation/usage/gpio/
を参照すると、右上のピンです。あとは適当なGNDのピンを選んで配線しましょう。
この2つの線の間にLEDと抵抗を挟んでください。
3.3Vの電圧をかけますので、LEDのspecに合わせて適切な抵抗をはさんでください。

eeb23aaf-9ebe-5e73-2021-5886d9d87a74.png

カメラのセットアップ

まずカメラモジュールをraspberry piのカメラ端子に装着して下さい。
電源OFFの状態で、プリントケーブルを奥まで差し込み、ストッパーをガッチリ下まで押し込んで下さい。
その後、raspberry piを起動し、設定を行います。

$ sudo raspi-config

メニューが表示されるので、5. Interfacing Options > P1 Camera からenableにしてください。
Raspberry Piが再起動されます。

あとで使うのでカメラにアクセスするためのモジュールもインストールしておきます。

https://github.com/thaytan/gst-rpicamsrc.git
のClone or Downloadからzipをダウンロードして展開して下さい。
gitで入れてもらってもいいです。

$ cd gst-rpicamsrc-master
$ ./autogen.sh --prefix=/usr --libdir=/usr/lib/arm-linux-gnueabihf/
$ make
$ sudo make install

Lチカアプリケーション

#!/usr/bin/ruby
require "socket"
require "pi_piper"

def pin(pin, message)
  case message
  when "on"
    pin.on
  when "off"
    pin.off
  end
end

if __FILE__ == $0
  gpio_21 = PiPiper::Pin.new(:pin => 21, :direction => :out)

  udps = UDPSocket.open()
  udps.bind("0.0.0.0", 10000)

  loop do
    data = udps.recv(65535).chomp
    pin(gpio_21, data)
  end

  udps.close
end

UDPで受信したテキストメッセージが"on"であれば電圧をかけ、"off"であれば止めます。

実行

これを遠隔制御しましょう。

Lチカプログラムを起動します。Raspberry PIのハードウェアを触るので今回はroot権限で実行します。実用するときは適宜権限設定を変更してください。

$ sudo ruby rasbpi.rb 

↓RASPBERRY_PI_IP_ADDRESSの部分にはラズベリーパイのIPアドレスを入れて下さい

光らせる場合

$ echo "on" | nc -u RASPBERRY_PI_IP_ADDRESS 10000

止める場合

$ echo "off" | nc -u RASPBERRY_PI_IP_ADDRESS 10000   

以上で完了です。
これをインターネット越しに操作してみましょう。

次章ではWebRTC Gatewayの起動処理を行います。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
3
Help us understand the problem. What are the problem?