Raspberry Pi で atlantis


atlantis を Raspberry Pi に移植しました。

atlantis は、OpenGL の初期の頃のデモアプリケーションで、母クジラ、子クジラ、イルカ、サメ4匹が泳ぎまわります。

atlantis
atlantis

オリジナルのソースコードは、以下からダウンロードできます。(GLUT のソースにも含まれます。)

https://www.opengl.org/archives/resources/code/samples/glut_examples/demos/demos.html

ソースのコピーライトを見ると 1993, 1994 となっているので、もう 20 年以上前ですね。

Windows 用の実行ファイルも含まれていますが、Cosmo 3D (SGI の Windows 用 OpenGL) の DLL が必要なので、動かせる環境はもうないでしょうね。そのため、Windows でも自前でビルドする必要がありそうです。

また、X のスクリーンセーバの xscreensaver-gl-extra にも改良版の atlantis が含まれています。たぶん、O2 が発売された頃にプロジェクションマッピングに対応したものがベースとなっていると思います。

オリジナルは GLUT + OpenGL ですが、Raspberry Pi で動かすために、SDL2 + OpenGL ES 1.1 に書き換えました。Raspberry Pi2 なら、そこそこ動きます。

よく見るとクジラのポリゴンが裏返っているようです。

ということで、クジラのポリゴンをキー入力で裏返す機能も付けました。

以下は、クジラのポリゴンを裏返して正しい表示にしたものです。

atlantis002
atlantis002
atlantis003
atlantis003
atlantis004
atlantis004
atlantis005
atlantis005

 


Raspberry Pi の IGZO LCD 接続キット


Raspberry Pi に接続可能な SHARP 7″ 高精細 IGZO LCD 接続キット for Pi [LQ070M1SX01-Kit0] が発売されています。

SHARP 7

SHARP 7″ 高精細 IGZO LCD 接続キット for Pi

組み立てキットですが、ケーブル接続、ネジ留め程度で組立てられます。

HDMI 接続で、ビデオ、オーディオ信号などを入力できます。解像度は 1200×1920 (60Hz) で、IGZO のため低消費電力となっています。また、VESA DDC(EDID)に対応しており、信号出力機器とネゴシエーションし、解像度などの自動設定(PnP)が可能。ただし、HDCP(著作権保護技術)には対応していません。

キット以外には、Raspberry Pi 本体の他、 HDMI ケーブル、USB Micro-B AC アダプタが別途必要です。

本 LCD を使用するには、/boot/config.txt の設定が必要です。また、本 LCDは、Portrait 1200×1920 が標準のため、Landscape 1920×1200 で使用するには、/boot/config.txt で display_rotate の設定が必要ですのでご注意ください。

詳細は取扱説明書を御覧ください。取扱説明書他のドキュメントは以下からダウンロード可能です。

なお、 本キット用フレーム、ケース、DACモジュールなども、鋭意開発中とのことです。

追記:
SHARP 7″ 高精細 IGZO LCDの組立・接続方法 も公開されています。


Raspberry Pi Windows 10 IoT Core 対応 WiFi ドングル -その2-


公式 WiFi ドングルの他に Raspberry Pi2/Pi3 の Windows 10 IoT Core 対応 WiFi ドングルとして、Raspberry Pi Windows 10 IoT Core 対応 WiFi ドングル -その1- では TP-LINK TL_WN725N を紹介しましたが、残念ながら公式 WiFi ドングル同様、国内では入手困難な上に技適を通っていないので事実上使用できませんでした。

Raspberry Pi をWi-Fi子機で無線化 -その1- と Raspberry Pi をWi-Fi子機で無線化 -その2- では、無線LANルーター子機を使って無線化する方法を紹介しました。国内メーカーの 無線LANルーター子機なら技適は通っているので安心して使用できます。(こちらの方法は、Windows 10 IoT Core でも無線化が可能です。)

そうこうしているうちに、Hardware Compatibility List がまた更新され、新たに 2つ WiFi ドングルが追加されていました。

  • Realtek 8191 USB Wireless WIFI
  • Realtek 8192 USB Wireless WIFI

Realtek 8192 USB Wireless WIFI には、Realtek Single-Chip IEEE 802.11b/g/n 2T2R WLAN Controller with USB 2.0 Interface と書かれており、http://www.realtek.com.tw/products/productsView.aspx?Langid=1&PFid=48&Level=5&Conn=4&ProdID=277 によると、RTL8192CU (または RTL8192SU) を指しているのだろうと思われます。

Realtek RTL8192CU なら、国内メーカーの製品でも使われています。

等いろいろありますので、もしこれらの製品を持っているのなら試してみるのも悪くないでしょう。(アンテナ付きのものは、少々大きいですけれども。)

私は、実際に試して確認したわけではありませんので、試す場合は自己責任でお願いします。

 


Raspberry Pi の電源 -その2-


Raspberry Pi の電源には、Raspberry Pi の電源 -その1- に書いたようにAnker 40W 5ポート USB急速充電器 ACアダプタを使っています。これは他の機器にもまとめて USB 電源供給したいためです。

しかし、Raspberry Pi 一台だけなら、小型の 2.4A x 2 ポートの CUBE型USB充電器を使うのもいいでしょう。

USBアダプタ

Raspberry Pi を安定動作させるためには、2A 以上の電力を供給したいものです。USBアダプタ、USBケーブルは2A以上に対応したものを選びましょう。

Raspberry Pi の動作が不安定な場合や、画面右上の Rainbow square が出ている場合にはUSBアダプタ、USBケーブルを変えてみることをおすすめします。

USB充電ケーブルも2.4A対応のものを使いましょう。

こちらは2.4A対応というわけではありませんが、お得な長さが異なる充電ケーブル5本セット。

 

Raspberry Pi3:

  • Pi3 では推奨電源が 2.5A になりました。USB 端子に消費電力の高い機器を接続しないのであれば、2 A でも問題が起きることはないそうです。ただし、安心を求めるのであれば PSE マークの付いた Pi3 対応の電源(2.5A)を使いましょう。

Raspberry Pi で TightVNC サーバ


TightVNC サーバ

Raspberry Pi 本体のデスクトップ(Xサーバ)とは別にクライアント用のデスクトップ(Xサーバ)を使用することができる VNC サーバです。

Raspberry Pi 本体のデスクトップ(Xサーバ)は通常ディスプレイ番号0番で、HDMI 等で接続したディスプレイに表示されるデスクトップを指します。

TightVNC の VNC サーバは、それとは別のデスクトップ(ディスプレイ番号が異なる)でリモートで表示/操作することができます。VNCサーバを複数起動することで、異なるデスクトップを複数作成することができます。(それらはそれぞれディスプレイ番号が異なります。)また、それぞれのデスクトップのユーザは異なっても構いません。

※ 実は TightVNC には x0vncserver という本体のデスクトップをリモート操作するための VNC サーバもありますが、Raspberry Pi には apt-get でインストールすることはできません。(Raspberry Pi 用の x0vncserver をソースからビルドできるかどうかは不明です)

インストール方法:

apt-get で tightvncserver をインストールします。(必須ではありませんが、tightvncserver で使用する X11/75dpi, 100dpi フォントもインストールします。)

 

使用方法:

VNC のパスワードはユーザごとに管理されており、vncserver 初回起動時にそのユーザのパスワード設定を行います。(パスワードは後から vncpasswd で変更することも可能です。)
パスワードは6文字以上8文字以下。

パスワードの設定が行われた後、(vncserver を起動したユーザで)新しい X サーバが起動します。

‘raspberrypi:1′ の部分は、’VNC サーバのホスト名:ディスプレイ番号’ のことであり、また、5900 + ディスプレイ番号のポートを使用することを示しています。

VNC クライアントから 5900 + ディスプレイ番号 のポートに接続すると、ユーザパスワードを求められるので、先のパスワードを入力することでリモートデスクトップを開くことができます。

VNC クライアントとしては、Windows なら RealVNC Viewer(32bit版, 64bit版)、Mac なら画面共有、iPhone なら VNC Viewer、Android なら RealViewer、Raspberry Pi なら TightVNC viewer 等があります。

例えば Windows で RealVNC (VNC Viewer) を使う場合、Raspberry Pi で vncserver を起動した状態で、Windows から VNC クライアントを起動します。

vnc_client_001

「VNC Server」に ’Raspberry Pi のホスト名:ディスプレイ番号’ を指定します。ディスプレイ番号が1(ポート番号が 5901) の場合は、’ホスト名:1′ と指定します。(ホスト名は IPアドレスでも可)

vnc_client_002

VNCサーバが暗号化に対応していないという警告がでます。

vnc_client_003

指定した VNC サーバのパスワードを入力します。

vnc_client_004

Raspberry Pi のデスクトップが開きます。

 

Usage:

vncserver のコマンドライン引数は以下の通りです。

 

vncserver の主なオプション:

-kill :<DISPLAY#>

 

  • ディスプレイ番号を指定して vncserver を終了します。(この例では、ディスプレイ番号1の vncserver を終了)

 

-geometry <WIDTH>x<HEIGHT>

 

  • デスクトップサイズを指定します。(この例では 1280×800)

-depth <DEPTH>

 

  • デスクトップの色深度を指定します。(この例では 24bit Color)

 

VNC サーバの終了:

-kill オプションを使用して vncserver を終了します。

 

  • vncserver をディスプレイ番号を指定して終了します。(この例では、ディスプレイ番号1 の vncserver を終了)

 

パスワードの変更:

パスワードを変更する場合は、変更したユーザにログインした上で、vncpasswd コマンドで変更します。

 

自動起動設定:

vncserver を手動でいちいち立ち上げるのが面倒という場合には、Raspberry Pi の起動時に自動で vncserver を立ち上げるようにも設定できます。

ユーザ root で 1280×800 24bit Color の vncserver を自動起動するスクリプトです。(必要に応じて vncserver の引数やユーザを変更しましょう。)

このスクリプトを vncboot という名前で /etc/init.d に置き、実行属性を付け、自動起動するように設定します。

これで、Raspberry Pi の起動時に vncserver が自動起動します。

なお、自動起動しないようにするには、次のコマンドで登録を削除します。

 

参考:

TightVNC の X サーバの xdpyinfo の出力結果です。(この例では、デスクトップは 1024×768 24bitColor です。)


 


Raspberry Pi で x11vnc


x11vnc

x11vnc を使用することで、 Raspberry Pi 本体のデスクトップ(デフォルトの Xサーバ)を VNC クライアントでリモート表示/操作することができます。Raspberry Pi 本体のデスクトップとは別のデスクトップを VNC で使用したい場合は、TightVNC サーバを使用してください。

 

x11vnc
x11vnc

インストール方法:

x11vnc は、apt-get でインストールできます。

 

次に x11vnc に -storepasswd を指定して起動し、そのユーザのパスワードを設定して VNC サーバのパスワードを保存します。

 

自動起動の設定:

startx 実行時 (X サーバ起動時) に自動的に x11vnc を起動するには、以下の内容で ~/.config/autostart/x11vnc.desktop ファイルを作成する必要があります。(Raspbian 起動時に X サーバが自動起動するようになっている場合は、更に VNC サーバも自動起動します。)

 

注意:

VNC サーバのパスワードと x11vnc.desktop ファイルは、X サーバを起動するユーザに対して設定する必要があります。

 

使用方法:

自動起動の設定を行っている場合は、デフォルトの X サーバ(通常、ディスプレイ番号0番)が起動している状態で、ポート 5900 に VNC クライアントで接続します。

接続時のパスワードは、先で保存したパスワードになります。

クライアント側には、Raspberry Pi 本体のデスクトップが表示されます。(デスクトップのサイズはもちろん本体のデスクトップのサイズとなります。)

なお、x11vnc のデスクトップのサイズを変更するには、本体のデスクトップのサイズごと変更する必要があります。(/boot/config.txt の framebuffer_width, framebuffer_height で指定することが可能です。)

raspi_xgears

デフォルトのXサーバは GLX 対応(ただしソフトウェアレンダラ)なので、別マシンの OpenGL アプリケーションをリモート表示することも可能です。

参考:

x11vnc の X サーバ(デフォルトの X サーバ)の xdpyinfo 出力結果です。(この例では、1280×800 サイズ)

 


Raspberry Pi で VNC


はじめに

VNC(Virtual Network Computing) は、サーバ/クライアントモデルのシステムで、サーバ側のデスクトップをクライアント側で表示/操作することができるリモートデスクトップシステムです。

Mac の画面共有
Mac の画面共有で Raspberry Pi の VNC サーバに接続

例えば、Raspberry Pi で VNC サーバを動かし、Windows や Mac、Linux、スマホ等で VNC クライアントを使うことで、 Raspberry Pi のデスクトップを表示/操作することができます。(MacOS X の場合、画面共有は vnc プロトコルを使用しますので、特別な VNC クライアントを使わなくても Raspberry Pi の VNC サーバに接続することができます。)

VNC は音声をサポートしていないため、サーバ側のサウンドをクライアント側で聞くことはできません。

VNC サーバ

Raspberry Pi で多く利用されている VNC サーバは次の2種類です。

  • TightVNC サーバ
  • x11vnc

 

TightVNC サーバ

TightVNC サーバは、Raspberry Pi 本体のデスクトップとは別にクライアント用のデスクトップを使用することができる VNC サーバです。

Raspberry Pi 本体のデスクトップとは別の X サーバを使用し、解像度も本体側のデスクトップに影響されません。

 

x11vnc

x11vnc は、Raspberry Pi 本体のデスクトップをそのままリモートで操作することができる VNC サーバです。

Raspberry Pi 本体のデスクトップをそのままリモートで操作するため、リモートデスクトップのサイズは Raspberry Pi 本体のデスクトップのサイズと同じになります。

 

Dispmanx VNC Server

特殊な VNC サーバで、Raspberry Pi 本体コンソールをリモートで操作することができる VNC サーバです。

/dev/fb0 の画面だけではなく、Raspberry Pi 本体コンソールに表示される GPU 画面(OpenGL ES, OpenVG アプリケーション)も VNC クライアント側に表示することができます。もちろん、Raspberry Pi 本体のデスクトップの解像度と同じになります。

 

VNC クライアント

VNC サーバに接続して、接続先のデスクトップを表示/操作するためのソフトウェアです。

Windows や Mac、Linux 等で  VNC サーバを動かし、Raspberry Pi で VNC クライアントを動かせば、Raspberry Pi で Windows や Mac、Linux 等の画面表示/操作ができます。

以下は、Raspberry Pi で動く VNC クライアントソフトウェアです。

TightVNC viewer

TightVNC viewer は、一般的な VNC クライアントソフトウェアです。TighgVNC Server に接続する場合には、独自の転送方式の Tight Encoding が使用できます。

krdc

krdc は、Raspberry Pi から Windows や Mac、Linux 等の VNC サーバに接続して、画面表示/操作が可能となる VNC クライアントソフトウェアです。

krdc は、vnc プロトコル以外にも rdp プロトコルに対応していています。そのため、Windows のリモートデスクトップクライアントソフトウェアでもあります。

krdc
krdc

この画面は、Raspberry Pi の krdc で自身の VNC サーバに接続したものです。(ただし、VNC サーバは krdc を実行したデスクトップとは異なるデスクトップを使用しています。)