ラベル RPi の投稿を表示しています。 すべての投稿を表示
ラベル RPi の投稿を表示しています。 すべての投稿を表示

2017年1月8日日曜日

Raspberry PI, HDMIから音声を出す

問題
Raspberry PIでHDMI接続時に、音声が出ない

環境
Raspberry PI3, Raspbian Jessie

原因
デフォルトではHDMI DriverのモードがDVIモード(音声は別途出力)になっている

解決
HDMI Driverモードを変更すうr

1./boot/config.txtを編集
viでconfig.txtを開き、以下を編集
sudo vi /boot/config.txt

#hdmi_driver=2
hdmi_driver=1

2.再起動


参考
http://s2jp.com/2013/12/raspberry-pi-sound/




Raspberry PIで再生させる生h264動画ファイルをMacで書き出す方法

Raspberry PIで再生させる生h264動画ファイルをMacで書き出す方法

問題
Macで書き出したh264コーデックの.movファイルや.mp4ファイルがRasperry piで再生できない。

環境
MacBookPro, OSX Sierra
Raspberry PI 3, Raspbian Jessie

原因
動画ファイルは生のh264ファイルの必要がある。
(.movなどのファイルコンテナに含めるとうまく認識できない)

解決
ffmpegで.movファイルなどから、生の.h264ファイルに変換する

1.ffmpegのダウンロード
http://ffmpeg.org/download.html

2.ターミナルからffmpegで変換
ffmpeg -i test.mov test.h264


参考
https://www.raspberrypi.org/forums/viewtopic.php?t=7547&p=105088

2016年4月18日月曜日

Raspberry PI GPIOピンで入力設定にする場合の注意点

Raspberry PIのGPIOピンで入力設定にする場合の注意点

環境:Raspberry PI 2, raspbian jessie

Raspberry PI 2のGPIOピンのレイアウトは以下
https://www.raspberrypi.org/documentation/usage/gpio/

・ピン番号はSDカード挿入口に一番近いピンを1、対角線上の反対側が40
・GPIO番号(ピン番号とは違う)は上記サイトを参照
・GPIOの電源投入時のプルダウン/プルアップ状態はピンによって違う
(参考:http://d.hatena.ne.jp/hnw/20150607
・接続方法を間違えると、ショートしRaspberry PIがこわれる。
(参考:https://tool-lab.com/make/raspberrypi-startup-22/


例として、GPIO3にスイッチを接続する場合の安全と思われる接続方法は、
GPIO3 -> 330Ω -> SWITCH -> GND
などが考えられる。

解説:
GPIO3は電源投入時、入力モード+プルアップ(1.8kΩ)となる。SWITCHがオフの場合、GPIO3にかかる電圧はプルアップ接続されている3.3Vがかかり、HIGHとなる。SWITCHがオンの場合、GPIO3にかかる電圧は分圧により、約0.5V(= (330Ω / (1800Ω + 330Ω)) * 3.3V) がかかり、0.8V以下となるため、Lowとなる。また、GPIO3が設定ミスで出力モードで電圧が出力された場合、10mA(=3.3V/330Ω)が流れるが、最大定格(16mA)以内のため、安全と考えられる。

2016年4月11日月曜日

Raspberry PI, GNUStepのプライベートフレームワーク作成/使用方法メモ

Raspberry PIでプライベートフレームワークを作成/使用する方法のメモ
フレームワークの作成は手順通りだが、プライベートフレームワークとして使用する際にはリンカオプションなどいくつかコツがいる。

環境:Raspberry PI2, GNUStep, ProjectCenter

以下、HelloWorld.frameworkを作成し、プライベートフレームワークとして使用する例

<GNUStep統合開発環境のProjectCenterを準備する>

1.ProjectCenterをインストール
sudo apt-get install gnustep-devel



<HelloWorld.frameworkの作成>

1.ProjectCenterを起動
Menu > Programming > ProjectCenter


2.新規プロジェクトでFrameworkを作成する
PC > Project > New..を選択
Project Types > Frameworkを選択
フレームワークの名称を付けてOK(ここではHelloWorldとする。)


3.HelloWorldを実装する
Classes > HelloWorld.mに好きなコードを書く
ここでは以下のようにする

#import "HelloWorld.h"

@implementation HelloWorld

- (void)helloWorld
{
NSLog(@"HelloWorld: HelloWorld!!");
}

@end


4.HelloWorld.frameworkをビルドする
Project Builder > Build でビルド
プロジェクトフォルダ内にHelloWorld.frameworkが作成されていればOK。


<HelloWorld.frameworkの使用>

1.ProjectCenterを起動
Menu > Programming > ProjectCenter


2.新規プロジェクトでApplicationを作成する
PC > Project > New..を選択
Project Types > Applicationを選択
アプリの名称を付けてOK(ここではHelloWorldDemoとする。)


3.HelloWorldDemoを実装する
Classes > AppController.mでHelloWorld.hをインポートし、好きなコードを書く
ここでは以下のようにする

#import "AppController.h"
#import "HelloWorld.h"

@implementation AppController

- (void) applicationDidFinishLaunching: (NSNotification *)aNotif
{
HelloWorld *helloWorld = [[HelloWorld alloc] init];
[helloWorld helloWorld];
NSLog(@"HelloWorldDemo: %@", [NSBundle bundleForClass:[MLHelloWorld class]]);
}

@end


4.プロジェクトにHelloWorldフレームワークを追加する
Projectパネル内のLibrariesを選択した状態で、Project > Add Files..を選択
先ほどビルドしたHelloWorld.frameworkの中にあるlibHelloWorld.soを選択
(HelloWorld.frameworkではなく.soを選択しなければならない)
Librariesの一覧が、
gnustep-base
gnustep-gui
HelloWorld
となっていればOK。

※この時、GNUmakefile.preamble内に、リンカオプションとして
ADDITIONAL_GUI_LIBS += -lHelloWorld
が自動的に追加される。


5.プロジェクトのその他のリソースとしてHelloWorldフレームワークを追加する
Projectパネル内のOther Resourcesを選択した状態で、Project > Add Files..を選択
先ほどビルドしたHelloWorld.frameworkを選択

※この時、HelloWorldDemoプロジェクトフォルダ内にあるResourcesフォルダにHelloWorld.frameworkが自動的にコピーされる


6.ヘッダファイルのインクルードパスを追加する。
Project Inspector > Header Directory Search Orderを選択
./Resources/HelloWorld.frameworks/Headers と入力
※この時、GNUmakefile.preamble内に、リンカオプションとして
ADDITIONAL_INCLUDE_DIRS += -I./Resources/HelloWorld.framework/Headers
が自動的に追加される。
※これはビルド時にヘッダファイルを検索するフォルダの指定である


7.実行時のフレームワーク検索のためのリンカオプションを追加する
Project Inspector > Linker Flagsの欄に以下を追加する
-Wl,-R'$$ORIGIN/Resources/HelloWorld.framework/Versions/0.1'

※-Wl-R'path' は、実行ファイルに共有ライブラリの検索パスを追加するオプション
※$ORIGINは、ビルド後の実行ファイルの絶対パスを意味する。
※$$ORIGINの最初の$はエスケープ文字で、2つめの$を文字として扱う
※パスはシングルクォーテーションで囲わなければならない
※HelloWorld.framework内にあるシンボルリンクでは動作しなかったので、Versions/バージョン番号フォルダまで指定する必要がある
※5の操作で、ビルド後、HelloWorld.framework一式は、HelloWorldDemo.app > Resourcesフォルダ内にコピーされる。そのため、-Wl,-Rのパスは上記のようになる。


8.HelloWorldDemoをビルドする
Project Builder > Build でビルド
プロジェクトフォルダ内にHelloWorldDemo.appが作成されていればOK。


9.HelloWorldDemoを起動して確認する
起動してHelloWorld!!が表示されればOK

※NSLog(@"HelloWorldDemo: %@", [NSBundle bundleForClass:[MLHelloWorld class]]);の結果の末尾が、"HelloWorldDemo.app/Resources/HelloWorld.framework"となっていれば、プライベートフレームワークとして機能している。


ところで、ProjectCenterは設定に従って、ファイルの作成やコピー、makeファイルの自動生成を主に行う。特に以下のmakeファイルが設定によって頻繁に更新されるので、直接操作する場合は注意が必要。直接操作後にProjectCenterを開くと、もとの状態に戻る可能性がある。
GNUmakefile
GNUmakefile.preamble
GNUmakefile.postamble

参考:
http://industriousone.com/topic/linking-linux
http://wagavulin.hatenablog.com/entry/20091026/1256577635



2016年3月28日月曜日

Raspberry PI 全画面表示されない場合

Raspberry PIで解像度が全画面表示でない場合のメモ

問題
1920x1080ディスプレイを使用しているのに、解像度が小さい

環境
Raspberry PI2 B, Raspbian Jessie

原因
Raspbianの設定でoverscanが設定されている

解決
Menu > 設定 > Raspberru PIの設定 > システム > オーバースキャン > 無効 > 再起動


以上


2016年3月27日日曜日

Raspberry PI, clang リンカオプションメモ

Raspberry PI上でclangを使ってビルドする際のリンカオプションに関するメモ

確認環境:Raspberry PI2 B,  Raspbian Jessie, clang3.5.0-10, LLVM 3.5.0

問題:math.hが正常に読み込めない
解決:手動でリンクオプション-lmを設定
例:clang -o HelloWorld HelloWorld.m -lm

参考:http://d.hatena.ne.jp/mickey24/20081008/1223463875

2016年3月26日土曜日

Raspberry PI 無線LAN (WEP/DHCP接続) 設定

Raspberry PI 無線LAN (WEP/DHCP接続) 設定
環境:
MacBookPro2015, OS10.10
Raspberry PI2 B, Raspbean Jessie
PLANEX 11n/g/b 150Mbps GW-USNANO2A (FFP)(Raspberry PI対応機器)

1.ineterfacesコンフィグを開き、wlan0(無線ネットワーク)に以下のルールで設定
        wireless-essid 無線ルータのSSID
        wireless-key s: WEPキー
        wireless-mode managed

例)
sudo vi /etc/network/interfaces

-- interfacesコンフィグ--
auto lo
iface lo inet loopback
iface eth0 inet manual

# wireless settings
allow-hotplug wlan0
iface wlan0 inet dhcp
        wireless-essid xxxxxxxxxx
        wireless-key s: yyyyyyyyyy
        wireless-mode managed
iface default inet dhcp

allow-hotplug wlan1
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf


2.ネットワークを再起動
sudo ifdown wlan0 && sudo ifup wlan0
(再起動し、bound to xxx.xxx.xxx.xxxとDHCPが割り当てられたらOK)

以上

参考:
http://daisukekmr.hatenablog.com/entry/2015/02/11/193000
http://d.hatena.ne.jp/pasela/20121224/raspi_wlan

2016年3月25日金曜日

Raspberry PI Sambaによるファイル共有

Raspberry PIへSambaをインストールし、Macとファイル共有する。
環境:Mac Book Pro 2015, OS10.10 / Raspberry PI2 B, Raspbian Jessie

1.Sambaをインストール
apt-get install samba

2.Sambaを設定ファイルを開く
sudo vi /etc/samba/smb.conf

3.ファイルの最後に設定を追加
(以下、ログイン名piで共有する場合の例)
[pi]
force user = pi
path = /home/pi
guest ok = no
read only = no
writable = yes
public = yes
directory mode = 0707
create mode = 0606

4.Sambaのログインユーザ/パスワードを設定
sudo smbpasswd -a pi
(パスワードを入力)

5.Sambaの再起動
sudo samba restart

6.Macからアクセスする
Finder>メニューバー>サーバへ移動
smb://xxx.xxx.xxx.xxx
で、ログイン名+パスワードでアクセスする
(ホスト名を設定している場合は、 smb://hostname.localでもOK)


以上

参考:https://tool-lab.com/make/raspberrypi-startup-14/

Raspberry PIでObjective-C開発環境を整える

Raspberry PI2のRaspbian上でObjective-Cの開発環境を整える。
環境:Raspberry PI2 B+, Raspbian Jessie

Raspbian上でObjective-Cをビルドするには、gccまたはclang(+LLVM)とGNUStepのインストールが必要

※GNUStep(GNUStepBaseはFoundationフレームワークを含むライブラリ群。実用的に必須。
※gccはRaspbianにはデフォルトでインストールされている。
※clangは使いたい場合のみインストール。

以下、clangとGNUStepのインストールから、サンプルのコンパイルまでを示す。


1.clang (+LLVM)のインストール(任意)

sudo apt-get install clang

2.GNUStepのインストール

sudo apt-get install gnustep

3.サンプルのビルド

以下、HelloWorld.mのあるディレクトリでビルドする場合の例。

clangの場合:

clang -o HelloWorld HelloWorld.m -l objc -l gnustep-base -I /usr/include/GNUstep/ -fconstant-string-class=NSConstantString

gccの場合:

gcc -o HelloWorld HelloWorld.m -l objc -l gnustep-base -I /usr/include/GNUstep/ -fconstant-string-class=NSConstantString


※コンパイラオプションの解説

-o [バイナリ名 ソースファイル名...] :
ビルド(コンパイル+リンク)後のバイナリファイル名と、 ビルドするソースファイル名(またはオブジェクトファイル名)を指定する。上記では、HelloWorldというバイナリファイル名、HelloWorld.mというソースファイル名を指定している。

-l [ライブラリサーチパス] : 

コンパイル時に使用するリンクを指定する
上記ではobjcとgnustep-baseを指定。gnustep-baseはFoundationフレームワークを含むライブラリ。また、AppKitフレームワークを使う場合は、gnustep-guiを追加で指定する必要がある。

-I [ヘッダサーチパス] : 

ヘッダファイルを含むディレクトリパスを指定する
上記ではFoundationフレームワークのヘッダファイルを含む/usr/include/GNUstep/を指定している。他のサイトではGNUstepのディレクトリが他になっている場合があるが、自分で試した場合は上記のパスにインストールされていた。

-fconstant-string-class=クラス名:

gcc/clangで使用する文字列定数クラスを変更するオプション。gccのデフォルトではNXConstantStringクラスが使用され、これを使用する場合はソースコードでobjc/NXConstStr.hファイルをインクルードする必要がある。Foundationフレームワークでは文字列定数クラスはNSConstantStringクラスであるため、変更が必要。
https://gcc.gnu.org/onlinedocs/gcc/Constant-string-objects.html

以上

Raspberry PIにRaspbean Jessieをインストール

MacからRaspbianをSDカードへインストールする方法
環境:MacBookPro2015, OS10.10 / Raspberry PI2 B+, Raspbian Jessie

1.RaspberryPI公式サイトからRaspbianディスクイメージをダウンロードしておく
https://www.raspberrypi.org/downloads/raspbian/

2.SDカードをMacへ挿入
3.Terminalを開く
4.diskutilコマンドでSDカードのディスクIDを確認する。以下例。
diskutil list

5.diskutilコマンドでSDカードをアンマウントする。
以下SDカードがdisk4の場合の例。
diskutil unmountDisk /dev/disk4

6.diskutilコマンドでSDカードを初期化し、Raspbianをインストールする。
以下SDカードがdisk4の場合の例。
sudo dd bs=1m if=2016-03-18-raspbian-jessie.img of=/dev/rdisk4
(5分〜10分かかる。CTL+Tで進捗確認が可能)

以上

参考:
https://www.raspberrypi.org/documentation/installation/installing-images/mac.md