電子工作」カテゴリーアーカイブ

ここに電子工作関係のページを集めます。

固定IPアドレスを割り振る方法

QR1514

QR1514

Raspberry Pi に固定IPアドレスを割り振る方法を紹介する。
Raspbian ではデフォルトで DHCP に設定されているため、IPアドレスを固定にして、DNS サーバを指定する必要がある。

IPアドレスの割り振り

/etc/network/interfaces を変更して、IPアドレスを割り振る。

#iface eth0 inet dhcp
iface eth0 inet static
address    192.168.2.100
netmask    255.255.255.0
gateway    192.168.2.1

上記の例では、DHCPクライアントを利用する設定をコメントアウトし、192.168.2.100 の IPアドレスを割り振るなどの設定した。
各自のネットワーク環境に合わせて設定してもらいたい。

DNSサーバの指定

/etc/resolv.conf を変更して、DNSサーバを指定する。

nameserver 192.168.2.2

ネットワーク設定の反映

以下のコマンドでネットワーク設定を反映する。

$ sudo /etc/init.d/networking reload

参考URL

 

WiringPi gpio コマンドの使い方

QR1875

QR1875

WiringPi の gpio コマンドの使い方を紹介する。

GPIO をファイルとして扱う場合は管理者権限が必要だったが、gpio コマンドで GPIO を制御する場合は管理者権限は必要ない。
このため GPIO を CGI 経由で制御する場合などにも応用することができる。

WiringPi をインストールしておく。インストール方法は「WiringPi のインストール」を参照。

GPIO の値の変更

$ gpio [-g] write <pin> 0/1

GPIO の値の読み出し

$ gpio [-g] read <pin>

<pin> の配置は以下のページを参照
Raspberry Pi | Wiring | Pins | Gordons Projects

gpio コマンドでは GPIO の値の変更や読み出し以外に、pwm を扱ったり、I2C や SPI のドライバを読み込んで /dev/ のファイルとしてアクセスしたりすることができる。
The GPIO utility | Gordons Projects

 

GPIO の値の読み出し/変更のサンプル

以前「GPIOをシェルスクリプトで制御する(QR516)」でシェルスクリプトで GPIO を制御する方法を紹介しました。
ここでは GPIO をファイルとして扱う方法を紹介しましたが、今回は同じサンプルを WiringPi の gpio コマンドを使って実装してみました。

WiringPi gpio コマンドを使うサンプル

$ gpio -g mode 4 out

$ gpio -g write 4 1
$ gpio -g read 4
1

$ gpio -g write 4 0
$ gpio -g read 4
0

$ gpio -g mode 4 down

ファイルとして扱ったサンプル

# echo “4” > /sys/class/gpio/export
# echo “out” > /sys/class/gpio/gpio4/direction

# echo 1 > /sys/class/gpio/gpio4/value
# cat /sys/class/gpio/gpio4/value
1

# echo 0 > /sys/class/gpio/gpio4/value
# cat /sys/class/gpio/gpio4/value
0

# echo “4” > /sys/class/gpio/unexport

参考URL

 

WiringPi のインストール

QR1870

QR1870

WiringPi とは、Raspberry Pi の GPIO を Arduino のように制御するためのライブラリです。
もともとは C 言語で実装されていましたが、Ruby、Python、PHP、Perl など言語でも実装されています。

各種言語の WiringPi | GitHub

 

WiringPi をインストールすると gpio というコマンドもインストールされます。
このコマンドを使ってシェルスクリプトで GPIO を制御することができます。

WiringPi のインストール

ソースのダウンロード

git clone で最新版のソースをダウンロードします。

$ git clone git://git.drogon.net/wiringPi

ビルド

git clone でできたディレクトリに移動してビルド用のスクリプトを実行します。

$ cd wiringPi
$ ./build

動作確認

バージョンの表示
(インストールしたバージョンが表示されます。)

$ gpio -v

gpio version: 1.12
Copyright (c) 2012 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty

This Raspberry Pi is a revision 2 board.

 

すべての GPIO のピンの値を出力

$ gpio readall
+———-+——+——–+——+——-+
| wiringPi | GPIO | Name   | Mode | Value |
+———-+——+——–+——+——-+
|      0   |  17  | GPIO 0 | IN   | Low   |
|      1   |  18  | GPIO 1 | IN   | Low   |
|      2   |  27  | GPIO 2 | OUT  | Low   |
|      3   |  22  | GPIO 3 | IN   | Low   |
|      4   |  23  | GPIO 4 | IN   | Low   |
|      5   |  24  | GPIO 5 | IN   | Low   |
|      6   |  25  | GPIO 6 | IN   | Low   |
|      7   |   4  | GPIO 7 | IN   | Low   |
|      8   |   2  | SDA    | ALT0 | High  |
|      9   |   3  | SCL    | ALT0 | High  |
|     10   |   8  | CE0    | IN   | Low   |
|     11   |   7  | CE1    | IN   | Low   |
|     12   |  10  | MOSI   | IN   | Low   |
|     13   |   9  | MISO   | IN   | Low   |
|     14   |  11  | SCLK   | IN   | Low   |
|     15   |  14  | TxD    | ALT0 | High  |
|     16   |  15  | RxD    | ALT0 | High  |
|     17   |  28  | GPIO 8 | IN   | Low   |
|     18   |  29  | GPIO 9 | IN   | Low   |
|     19   |  30  | GPIO10 | IN   | Low   |
|     20   |  31  | GPIO11 | IN   | Low   |
+———-+——+——–+——+——-+

参考URL

 

Raspberry Pi で IPv6 を有効にする

QR1795

QR1795

Raspberry Pi で IPv6 を有効化する方法を紹介します。
Raspbian ではデフォルトで IPv6 が無効になっているので IPv6 を使うためには設定を変更する必要があります。

 

 

/etc/modules に “ipv6” という行を追加する。

$ sudo emacs /etc/modules

 

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with “#” are ignored.
# Parameters can be specified after the module name.

ipv6

設定変更後に Raspberry Pi を再起動すると IPv6 が有効になる。

IPv6 を有効化した後の ifocnfig 結果

pi@raspberrypi ~ $ ifconfig
eth0      Link encap:イーサネット  ハードウェアアドレス b8:27:eb:44:f8:28
inetアドレス:192.168.2.2 ブロードキャスト:192.168.2.255  マスク:255.255.255.0
inet6アドレス: fe80::ba27:ebff:fe44:f828/64 範囲:リンク
UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1
RXパケット:126 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:96 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:1000
RXバイト:15527 (15.1 KiB)  TXバイト:12794 (12.4 KiB)

lo        Link encap:ローカルループバック
inetアドレス:127.0.0.1 マスク:255.0.0.0
inet6アドレス: ::1/128 範囲:ホスト
UP LOOPBACK RUNNING  MTU:16436  メトリック:1
RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:0 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:0
RXバイト:0 (0.0 B)  TXバイト:0 (0.0 B)

IPv6 を有効化する前の ifocnfig 結果

pi@raspberrypi ~ $ ifconfig
eth0      Link encap:イーサネット  ハードウェアアドレス b8:27:eb:44:f8:28
inetアドレス:192.168.2.2 ブロードキャスト:192.168.2.255  マスク:255.255.255.0
UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1
RXパケット:592 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:398 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:1000
RXバイト:71834 (70.1 KiB)  TXバイト:54398 (53.1 KiB)

lo        Link encap:ローカルループバック
inetアドレス:127.0.0.1 マスク:255.0.0.0
UP LOOPBACK RUNNING  MTU:16436  メトリック:1
RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:0 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:0
RXバイト:0 (0.0 B)  TXバイト:0 (0.0 B)

参考URL

How do I enable or use IPv6? | RaspbianFAQ – Raspbian

 

Raspberry Pi から Arduino を制御する(Firmata編)

QR1751

QR1751

Raspberry Pi から Arduino を制御する方法にはいくつかありあますが、今回は Arduino Firmata を使った制御方法を紹介します。

Firmata とは、Arduino のようなマイクロコントローラとホストマシン間での通信のための汎用プロトコルです。
Firmata を使うと Arduino に接続したホストマシンからシリアル経由で Arduino を制御するコマンドを送って Arduino を制御することができます。

Firmata を Arduino に書き込む

Arduino で Firmata を使うために Arduino に Firmata 用のスケッチを書き込む必要があります。
ここでは Arduino IDE のサンプルプログラムの Firmata 用のスケッチ「StandardFirmata」を利用します。

以下からサンプルを開いて、スケッチを Arduino に書き込みます。

Arduino IDE -> [File] -> [Examples] -> [Firmata] -> [StandardFirmata]

Arduino IDE | Firmata - StandardFirmata

Arduino IDE | Firmata – StandardFirmata

Raspberry Pi から Arduino を制御する

Raspberry Pi から Arduino に Firmata でコマンドを送るために、arduino_firmata という Ruby のライブラリを使います。
Arduino Firmata on Ruby

arduino_firmata のインストール

pi$ gem install arduino_firmata

(注) gem を使うために Ruby のインストールが必要です。以下のように apt-get で ruby と ruby-dev をインストールしてください。

pi$ sudo apt-get install ruby
pi$ sudo apt-get install ruby-dev

arduino_firmata の使い方

デジタル値の書き込み(GROVE – LED)

Raspberry Pi と Arduino を画像のように USB で接続しました。
GROVE のシールドを使って GROVE の LED を接続しています。

Raspberry Pi と Arduino を接続(GROVE - LED)

Raspberry Pi と Arduino を接続(GROVE – LED)

13番ピンに LED を接続して以下のコマンドを実行すると、13番ピンが “H” になり LED が点灯します。

pi$ arduino_firmata “digital_write 13, true” –arduino=/dev/ttyUSB0

アナログ値の読み取り(GROVE – 温度センサ)

GROVE のシールドを使って GROVE の温度センサを接続しています。

DSC_0002

Raspberry Pi と Arduino を接続(GROVE – 温度センサ)

以下のコマンドで温度センサのアナログ値を取得できます。

pi$ arduino_firmata “analog_read 0” –arduino=/dev/ttyUSB0

arduino-firmata – analog-read の実行結果

取得した温度の値を補正するスクリプトを書いてみました。
以下のスクリプトを実行すると取得した温度のアナログ値から温度(摂氏)に変換します。
(小数の計算に bc コマンドを使っているので bc コマンドを apt-get install しておく)

#!/bin/sh

analog=`arduino_firmata “analog_read 0” –arduino=/dev/ttyUSB0`

resistance=`expr \( 1023 – $analog \) \* 10000 / $analog`
temperature=`echo 1 / \( l\( $resistance / 10000 \) / 3975 + 1 / 298.15 \) – 273.15 | bc -l`

echo $temperature

参考URL

 

ディスプレイに表示中の X の画面をリモートで操作する方法

QR1742

QR1742

Raspberry Pi でディスプレイに表示中の X の画面をリモートで操作する方法を紹介します。
x11vnc という表示中の X の画面に接続できる VNCサーバを使っています。

Raspberry Pi を使ってデモをするときに重宝しそうです。

x11vnc のインストール(@RPi)

pi$ sudo apt-get install x11vnc

VNCサーバ起動(@RPi)

pi$ x11vnc -display :0 -usepw -forever

VNCクライアントから接続(@PC)

vnc://pi@IPアドレス:5900

参考URL

Raspberry Pi Model B の納期(2013/04/22)

QR1704

QR1704

Raspberry Pi Model B を 5台購入しました。

日本のRSオンラインで在庫を持つようになったみたいで、以下のような流れで注文してから3日で手元に届きました。

 

 

  • 2013/04/19(Fri) 注文(RSオンライン(JP))
  • 2013/04/22(Mon) 配送

Raspberry Pi 購入

Raspberry Pi Model B は1日50台ほど売れているみたいなのでほしい人はお急ぎを! :-)

在庫確認(RSオンライン)

Raspberry Pi Weather station

QR1715

QR1715

天気予報をディスプレイに表示する記事の紹介です。

[kontroller]: Raspberry Pi Weather station

 

 

Yahoo の天気フィードの API から wget を使って情報を取得、シェルスクリプトでパースした結果をディスプレイに表示しています。

  1. Grabs the weather data from Yahoo weather feed.
  2. Extracts key weather data from the xml feed, and
  3. Displays the data to the LCD.

Web の API と電子工作を組み合わせで他にもいろいろ応用できそうですね! :)

USP MAGAZINE 2013 Summer 寄稿予定記事サポートページ を作ってみました。

QR1575

QR1575

少々先走りですが、「USP MAGAZINE 2013 Summer 寄稿予定記事サポートページ (QR1569)」を作ってみました。

われわれ著者陣は、USPマガジン 2013年夏号にも寄稿する予定ですが、それが認められるかどうかはまだ判りません。でも、サポートページだけは作っちゃいました。

さて、どうなることでしょう!?

— 3/31/2013 by hohno

無事、寄稿することになり、すでに脱稿しています。いまごろは印刷所で印刷製本中かと。今月(2013年6月)末に発売かいしとのことです。

— 6/28/2013 by hohno

「USPマガジン2013年春号 よりぬき版」が公開されました (QR1554)

QR1554

QR1554

去る 2013年3月27日に「USPマガジン2013年春号 よりぬき版」が公開されました。無料です。 今回寄稿した「UNIXネイティブの電子工作塾」も一部が掲載されています。 掲載されていない部分もそのままHTML化したり、同等の内容のページを新たに用意したりしつつありますので、今回の寄稿は実質的に全文をお読みいただけます(もちろん、権利関係の調整はしてあります)。

 

公開状況は以下のとおりです。(3/31/2013現在)

    1. O先生のレクチャー(対話形式の概論)(「よりぬき版」に収録)
    2. コラム:Raspberry Jam Session #1 Raspberry Pi で使えるOS(「よりぬき版」に収録)
    3. T君のノート(レクチャーをもとにした詳細なノート)(寄稿本文とほぼ同じ情報をHTML化して公開中)
    4. コラム:Raspberry Jam Session #2 お手軽シャットダウンフリー化(寄稿本文はHTML化して公開予定)
    5. スペシャルインタビュー(「よりぬき版」に収録)

 

公開されたよりぬき版は PDF 形式で、寄稿本文のQRコード部分がハイパーリンクになっています。ですので、タブレット等でこのより版を閲覧中にQRコードをクリックすると、とても自然にわれわれのサポートページとの間を行き来できます。

ぜひ、ご活用ください。

— 3/31/2013 by hohno