2017-06

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Raspberry Pi で カメラ付きWifiBot を作成

概要:
やってみた報告。
Raspberry Pi に USB WifiとWebカメラをつなげてロボットを制御してみました。
PC、スマホ等のブラウザからカメラのストリーミングを見ながら操作が可能です。
作り方、ソースコードについては後日公開予定(今月中)。


構成:
今回のロボットの構成は以下のようになっています。
・ Raspberry Pi
・ バッファ回路(GPIO用)
・ モータードライバ回路(GPIOで制御)
・ 電源回路(エネループ6本から降圧)
・ USBハブ(外部から電源を供給)
・ USB無線LANアダプタ
・ Webカメラ(UVC対応)


動作確認:



こんなかんじでスマホのブラウザからロボットを動かすことができます。


まとめ:
電源周りでかなり時間を取られてしましました。
次からはエネループではなく、リチウムポリマーの運用を考えたほうがいいのかもしれません。

Raspberry Pi SDカードへのイメージ書き込み

概要:
新しくSDを新調したので、イメージの書き込みとSDの設定までやってみました。
Raspberry Pi で現在公開されている構築済みのイメージは、
・Debian(squeeze)
・Arch Linux ARM
・QtonPi
があります。
今回は,推奨されている Debian を使うことにします。

Mac、Linux、Windowsの全ての環境で書き込みを行うことができます。
今回は、Windowsを使用します。


作業環境:
・ Raspberry Pi
・ PC(Windows) SDカードスロット付
・ SDカード(8G以上推奨)


環境整備:
最初に書き込むイメージとツールを用意します。
イメージ :Debian
ツール  :Win32 Disk Imager

これらを解凍し、ツールによってイメージの書き込みを行います。


イメージの書き込み:
解凍したWin32 Disk Imager を起動すると次のようなウィンドウが出現します。
次の画像のように、
① 書き込むイメージを選択
② インストールに使用するSDカードを選択
③ 書き込み
のように作業を行います。
インストールするドライブを間違えると、データが飛ぶので注意してください。

win32image



SD設定:
インストール後の段階では、SDカードは2Gを使うことが想定されており、
使用できる容量が2Gとなっています。
そのため、パーティションを設定し直す必要があります。

Raspberry Pi のコンソールから以下のように打ち込み、設定を行います。
①ー② プログラム起動と現在のパーティション構成の表示
③ー⑥ 不必要なパーティション削除
⑦ー⑪ プライマリパーティションのサイズ設定
sd
完了後再起動をします。

ファイルシステムをリサイズします。
sudo resize2fs /dev/mmcb1k0p2
(16GBのSDで30分程度待機)
reboot

コマンドによって、成功しているかを確認
df -h

Swapファイルを設定します。
sudo dd if=/dev/zero of=/var/swapfile bs=1M count=128
sudo mkswap /var/swapfile
sudo swapon /var/swapfile
sudo reboot

最後にスワップファイルが起動時にマウントされるように設定を行います
sudo vi /etc/fstab

以下の行を追加:

/dev/mmcblk0p2 / ext4 defaults,noatime,nodiratime 0 0
/var/swapfile none swap sw 0 0

再起動して設定完了です。


まとめ:
今回はRaspberry PiのSD領域を全て使用するまでの手順を書いてみました。
しばらくRaspberry Piの容量の問題で悩んでいたのですが、これで解消できました。
これぐらいのことはもう少し前に気づくべきだった。。。

次はRaspberry Pi 単体でカーネルのアップデートを行う方法を書こうかなと考えています。


参考サイト:
Raspberry Pi Image Downlolad
Win32 Disk Imager
Basic Raspberry Pi Setup
Scary rapartitioning of SD Card On Raspberry Pi

Raspberry Pi の GPIO でLEDを点滅させてみる

概要:
Raspberry PIでLEDの点滅をやってみました。
本当は入出力ができるのですが、今回は出力までとなります。


使用機器:
・Raspberry Pi
・入出力回路(適当に作ったもの)


導入:
パッケージ管理ソフトの導入
sudo apt-get install mercurial
sudo apt-get install python-dev

パッケージ取得とインストール
hg clone https://code.google.com/p/raspberry-gpio-python/
cd raspberry-gpio-python
sudo python setup.py install

インストールに成功したかの確認をします。
python
>> import RPi.GPIO

これでエラーが発生しなければ、インストールが完了しています。


ハードウェア仕様:
Raspberry Piには、汎用IOポートがついています。
それらを使ってArduinoのような入出力を行うことができます。
ただし、LEDのような素子を使用するためには出力電流が足りないため、
ドライブ用の外付けの回路を作成する必要があります。

全ての入出力ポートでは、入出力を制御することができます。
・ 3.3V出力ピン(1ピン):最大50mAの出力が可能
・ 5.0V出力ピン(1ピン):最大出力電流は入力に使っている電源による
・ GPIOピン(28ピン) :0-27までのピンが存在し、合計2mA-16mAでの電流を出力可能
*GPIOピンは定格電圧は3.3Vなので、これ以上かけるとRPiが壊れるので注意してください。

それぞれのGPIOポートは以下の機能を持っています。
1.通常入出力、割り込み pin 0-27
2.シリアル通信 pin 14 (TXD), 15(RXD)
3.I2C pin 8-7 ( SPI0 )
4.PWM pin 18

詳しいピン配置等については以下のサイトで確認できます
http://elinux.org/Rpi_Low-level_peripherals


外部接続ハードウェア:
今回作成したハードはトランジスタを使ってLEDをドライブする簡単な回路です。
本当ならフォトカプラ等を使って電気的に絶縁するべきですが。。。
作成した回路図を載せておきます。

RPi GPIO


プログラムと実行テスト:
実際にインストールしたライブラリと作成した回路を使って
LEDの点滅プログラムを作成してみます。

プログラムは次のようなものになります。

import RPi.GPIO as GPIO
import time

# 入出力設定
GPIO.setmode( GPIO.BCM )
GPIO.setup(17, GPIO.OUT)
GPIO.setup(21, GPIO.OUT)
GPIO.setup(22, GPIO.OUT)

while 1 :
GPIO.output( 17, True )
time.sleep(0.5)
GPIO.output( 21, True )
time.sleep(0.5)
GPIO.output( 22, True )
time.sleep(0.5)
GPIO.output( 17, False )
time.sleep(0.5)
GPIO.output( 21, False )
time.sleep(0.5)
GPIO.output( 22, False )
time.sleep(0.5)

*管理者権限で実行

これを実行した結果は次のようになります。



まとめ:
今回は、Raspberry Piの汎用入出力を使ってLEDを点灯させてみました。
次はこれを使ったカメラ付きの台車でも作ってみようかと考えています。
通信はシリアルにするか、GPIOにするか迷い中。。。


参考サイト:
RPi .GPIO
RPi Low-Level peripherals


Raspberry Pi でシリアル通信

概要:

Raspberry Piとマイコンをシリアルでつなぐために、2つの方法を試してみました。
1.USB-シリアル変換ケーブルを使った通信
2.Raspberry PiのGPIOピンを使った通信
これらを試し、Pythonでサンプルプログラムを実行するまでやってみました。


実験環境:

・Raspberry Pi
・USB-シリアルコンバータ(FT232RL)
・Python実行環境
・python-serialライブラリ


USB-シリアル変換ケーブルを使った通信:

多くのシリアル変換ケーブルで使用されているFTF232というICは、
Linux2.6.31から標準で導入されているため、USBポートに挿せば認識します。
認識しているかをlsusbコマンドを使って確認してみます。


pi@raspberrypi:~$ lsusb
Bus 001 Device 004: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

このように簡単に認識できます。


GPIOピンを使った通信:

RaspberryPiのGPIOピンにはシリアル機能を持ったものがあり、
これを使うことでマイコンと簡単に通信することができます。
*RaspberryPiに接続するUSB-シリアル変換ICは3.3Vのものを使ってください。
 5Vのものを使用すると、RaspberryPiが破損する可能性があります。


Raspberry Piで使用できるシリアルピンの配置は次のようになっています。
Raspberry Serial Pin

簡単に接続はできますが、初期設定ではGPIOのシリアルピンは
任意の文字列を出力するポートとして使えないため設定を変更する必要があります。

最初に、/boot/cmdline.txt を以下のように編集します。
初期値:

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait


編集後:

dwc_otg.lpm_enable=0 rpitestmode=1 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait


次に、/etc/inittab 内の以下の行をコメントアウトして、シリアルからのログインを無効化します。
2:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100 


最後に再起動をして準備は完了です。
sudo reboot


動作実験:

最初に、サンプルを動かすためにPythonのシリアルポート操作ライブラリをインストールします。
 sudo apt-get install python-serial 


通信する方法によって、以下のように操作するデバイスが変化します。
・ USB-シリアル変換ケーブルを使用する場合:/dev/ttyUSB?を使用
・ GPIOピンを使用する場合:/dev/ttyAMA0を使用

最後に適当なプログラムを作成し、パソコンと通信させてみます。
作成したサンプルは以下のようなものになります。

import serial
import time

def main():
# USB-Serialを使用する場合、ttyUSB0
# GPIOピンを使用する場合、ttyAMA0
# con=serial.Serial('/dev/ttyUSB0', 19200, timeout=10)
con=serial.Serial('/dev/ttyAMA0', 19200, timeout=10)
print con.portstr
while 1:
str=con.readline()
print str
con.write(str)

if __name__ == '__main__':
main()


このプログラムを使って通信した結果は次のようになりました。
シリアル通信結果2


まとめ:


今回はRaspbery Piを使ったシリアル通信の方法について書きました。
次はArduinoかXBeeと連携させて遊ぼうかなと考えています。


参考サイト:

・シリアルインターフェースについて: Raspberry Pi serial interfacing
・GPIOピンについて: More on Raspberty Pi serial ports
・GPIOピンの配置について: RPi Low-level peripherals

Raspberry PI ssh 導入

概要:

Raspberry PIにSSHを導入しました。
ブログに書くほどのことではないですが…。


作業環境:

・ インターネット環境
・ USBキーボード
・ HDMI接続できるディスプレイ


導入:

コンソールに以下のように入力し、SSHをインストールします。

sudo apt-get update
sudo apt-get install ssh


次に鍵を作成します。

sudo bash
ssh-keygen
(エンター三回ぐらい)


RSAパスワードのファイルがあるかを確認します。

ls /root/.ssh


SSHのサービスを開始します

service ssh start


最後にSSHが自動に輝度するように設定します

sudo update-rc.d ssh defaults


これで導入は完了です。
PC側から sshクライアントを使って接続できます。

まとめ:

これでプログラムをする時にいちいちディスプレイを切り替える必要がなくなります。
次はマイコンと接続するためのGPIOかシリアルポートの導入と実験あたりをやってみます。

*SDカードのセットアップの記事はこちら
Raspberry Pi SDカードへのイメージ書き込み


参考サイト:

Raspberry Pi - Enabling SSH on Debian #6



NEW ENTRY «  | BLOG TOP |  » OLD ENTRY

カレンダー

05 | 2017/06 | 07
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -

FC2カウンター

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

未分類 (7)
日記 (7)
wiiremote (1)
google (1)
回路 (3)
psp (1)
programing (15)
linux (0)
OpenWRT (3)
kinect (1)
Raspberry Pi (8)

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

google adsense

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。