ロボットを作る

子供のころ、映画「STARWARS」 を観てワクワクし、ガンプラにドキドキしていた。時間が経つのも忘れてしまう、そんな時間をもう一度、取り戻すために、Raspberry pi を使って、オヤジがロボット作りに挑戦する!

やり始めてみると、なかなか思い通りに行かない。時間の経つのも忘れて悪戦苦闘中。 「こんなちっちゃな Raspberry Pi で、こんなことができるんだ」を日々実感している今日この頃。

Raspberry Pi


Installing ROS Indigo on the Raspberry Pi

 OS:Raspbian GNU/Linux 8 (jessie)
 ROS:indigo
 python:2.7.9



Ros-comm を入れる。(Desktopを入れればよかった。と後で反省)

基本は ROS のページどおりだが、いくつか地雷を踏んだ。(後で反省)

◆empy で落ちる
 $sudo apt-get install python-empy

◆cpp-comm あたりで落ちる
 $sudo apt-get install libconsole-bridge0.2 libconsole-bridge-dev

◆rospack で落ちる。Could NOT find TinyXML
 $sudo apt-get install libtinyxml-dev

◆roslz4 で落ちる。lz4 includes not found
 $sudo apt-get install liblz4-1 liblz4-dev

◆rosbag_storage で落ちる
gtest not found, C++ tests can not be built.
$sudo apt-get install libgtest-dev

Could NOT find BZip2
$sudo apt-get install libbz2-dev

◆roscpp

warning: unused parameter /// serializedLength

超超時間がかかった上にエラーが出てとまる。

make[1]: *** [CMakeFiles/roscpp.dir/all] Error 2
Makefile: 138: recipe for target 'all' failed
make: *** [all] Error 2
<== Failed to process package 'roscpp':

どうも swap が足りないらしい。swap増やす。defaut 100M から 1Gへ。

sudo vi /etc/dphys-swapfile

CONF_SWAPSIZEを1024MB(1GB)
CONF_SWAPSIZE=1024

$ sudo systemctl stop dphys-swapfile
$ sudo systemctl start dphys-swapfile
$ free -h  増えたのを確かめる。

インストールはできた。

$ roscore で落ちる。

$ sudo apt-get install python-netifaces

これでやっとインストールできた。振り返ると 3.2 Resolve Dependencies を飛ばしてた自分のせいでこんな面倒になっていただけだった。


で、なにか動かしてみたい。チュートリアルに出てくる tutlesim を動かす。

余計な環境変数を消して(unset)から
$ source /opt/ros/indigo/setup.bash
をしてから rosコマンドを実行する。

ROSのノードを理解する
ROSトピックの理解

いきなり、rosdep install turtlesim で、「turtlesim なんてパッケージない!」と。

$ rosinstall_generator turtlesim --rosdistro indigo --deps --wet-only --exclude roslisp --tar > indigo-custom_ros.rosinstall
$ wstool merge -t src indigo-custom_ros.rosinstall
$ wstool update -t src
$ rosdep install --from-paths src --ignore-src --rosdistro indigo -y -r --os=debian:jessie

ーーーーーーー
rpt がない。どうも ROS-comm を入れたあとに Desktop 部分を入れるのは苦行のような。
いちから入れなおそうか。

http://flow-developers.hatenablog.com/entry/2016/06/05/172041

$ sudo apt-get install libblkid-dev e2fslibs-dev libaudit-dev

いくつか本が出てた。悩まずにこのとおりにやれば早いかも


Raspberry Pi2 で、サーボを使って、物体追跡をする。このサイトを見て、

Raspberry Pi サーボモーターとOpen CVで物体追跡カメラ(Meanshift)
ArduinoとAdafruit 16-channel Servo Driverでサーボモーター多数制御

ブツを揃える、


これらを Amazon で Getした。この Qiita のサイトとは異なるブツだが、とりあえず安かったので買ってみた。
カメラは手持ちのヤツを使う。

◆サーボモータを動かす
i2c を有効にする

$ sudo apt-get install i2c-tools
$ sudo raspi-conifig

 > 5. interfacing options
     > P5 I2C

以下のように結線する。サーバを動かすために、Servo Driver基板中央に別途電源をつなぐ(6Vまでらしい)

   RaspPi2   16ch Servo Driver (PCA9685)
  -------------------------------------------------------------
    3.3V○   ○ GND
   I2C SDA○   ○
   I2C SCL○   ○ SCL
           ○   ○ SDA
     GND○   ○ VCC
        ○   ○


結線して、servo_test.py を動かすとちゃんと動いた。
# いかん! サーボモータが、動作電圧:4.8V(~5V) なので、乾電池は3つにしておこう。

PCA9685 16-channel 12bit PWM Fm + I2C-bus LED controller


◆カメラを動かす
$ sudo apt-get install libopencv-dev python-opencv


USBカメラと OpenCV で画像を表示させるサンプルプログラムはググると沢山でてくる。
ただ、最近のサンプルでないと遠回りする。
結局、
import cv2.cv  や CaptureFromCAM ではなく、以下に落ち着いた。(ターミナル上で、ctrl + c で終了)
これを camera.py に保存して、実行
import cv2

cv2.namedWindow("monitor")
vc=cv2.VideoCapture(0)

if vc.isOpened():
   rval, frame = vc.read()
else:
   rval = False

while rval:
   cv2.imshow("monitor", frame)
   rval, frame = vc.read()
   key = cv2.waitKey(10)
   if key == 27:
      break
cv2.destroyWindow("monitor")     

【追記 4/22】
自分の環境で、TightVNCで Raspiを動かしていた。 2行目の namedWindow で以下が出てこけた。

GdkGLExt-WARNING **: Window system doesn't support OpenGL.

で、ググったら、対処方法があったので試してみた。

$ sudo apt-get install libgl1-mesa-dri 
$ sudo reboot

で、これでもダメで、workaround(1) として

$ sudo apt-get install guvcview

をした。workaround(2) は、VNC をTightvnc をやめて、X11vnc 変えるとできるらしい。がやってない。
workaround(3) は、元に戻して、VNCやめて Raspi にモニター直結したら、もちろんOK。

Raspberry Pi3 で、NHKラジオ英語を定期的に録音して、ノートPC(Windows10)から聞く方法の備忘録。


RaspberryPi3

sambaをインストールして、とりあえず設定を。
printerは使わないので、[global] に printing =  bsd を入れる(?)
共有するフォルダ [/home/pi/REC] は、Windwos で [homes] で見える
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install samba

$ cd /etc/samba
$ sudo cp smb.conf smb.conf_org

$ sudo vi smb.conf

[global]
  printing = bsd

[homes]
  browseable = yes
  path = /home/pi/REC
 read only = no
 create mask = 0664
 directory mask = 0775

$ sudo touch /etc/printcap
最後の touch は、/var/log/samba/log.smbd にエラー吐いたので。


piアカウントで、sambaにアクセスするために。
$ sudo smbpasswd -a pi
New SMB password:  ←RaspPi3の pi アカウントのパスワードを。
Retype new SMB password:
Added user pi.

cronに入れる シェルプログラムは以下からもらってきた。
らじるらじるをrtmpdumpで録音する(8放送局対応)おまけで
https://gist.github.com/riocampos/5656450

crontab 設定。いつも迷う。
項目は、左から「分」「時」「日」「月」「曜日」
$ crontab -e
   :
10 09 * * 1,2,3,4,5 ~/bin/rec_nhk.sh NHK2 5 ~/REC enjoy_english
30 16 * * 7 ~/bin/rec_nhk.sh NHK2 75 ~/REC conversation


ノートPC

エクスプローラ > PC で右クリック > ネットワークドライブの割り当て

 ドライブ():Z:
 フォルダー:\\RASPBERRYPI\homes

 □ 別の資格情報を使用して接続する  ←チェックする

これでノートPC側から Raspberrypi3側に保存してある mp3 ファイルが聞ける。


■RaspberryPi出直し編




訳あって再インストールを。デスクトップ環境が「PIXEL」になってる。

Raspbian Jessie with PIXEL


NOOBS
 Version: 2.1.0
 Release date: 2016-11-29

このOSを使う。
いつもの手順で。
 PCにosをdownload、解凍
 PC上でSDカードに解凍後全部を丸ごとcopy
 RaspberriPi3にSDカードさして、電源on
 Raspbian選んで、画面下の言語選択を「日本語」にして進む
 インストールに若干時間が掛かるが、何事もなく終了

PIXELがなんかいい。デフォルトでの背景がかっこいい。そういわれると軽い(気もする)


sudo apt-get update
sudo apt-get upgrade


■キーボードを日本語設定に。 私のは、ELECOM TK-FCM062

Preferences > Raspberry Pi Configration > Localization タブ
> Keyboad: 
  Country: Japan
  Variant: Japanese(PC98-xx Series)

を選択して終わり。

■日本語入力を

■ python3 を jupyter で
やりたいのは、jupyter notebook で、numpy、matplotlib で Deep Learning のお勉強
「ゼロから作る Deep Learning」のため。 python3 と numpy はもとから入ってた。



$ sudo pip3 install jupyter

※sudo でないと、permittion error で終わる。

$ sudo pip3 install matplotlib

で、確認
$ jupyter notebook

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
x=np.arange(0,5,0.1)
y=np.cos(x)
plt.plot(x,y)

動いた。


RaspberryPi3 に、やっと到着した USB マイクを動かしてみる。




 このUSBマイクは、型号:MI-305 made in China で。

ネット情報をもとに、以下すすめる。

差し込んで、立ち上げただけ。
$ lsusb
Bus 001 Device 006: ID:xxxx:xxxx C-Media Electronics, Inc. CM108 Audio Controller
 :

$ arecord -l
カード 1: Device [USB PnP Sound Device], デバイス 0: USB Audio [USB Audio]
 # USBマイクの カード番号:1/デバイス番号:0

$ amixer sget Mic -c 1
 # マイク音量の確認。 カード番号: 1

$ amixer sset Mic 16 -c 1
 # マイク音量の設定をMAXの 16

$ arecord -M -d5 -twav -fdat voice.wav -D plughw:1
  # マイク入力音声をWAVファイルへ保存
 1.サンプリングフォーマット: 48kHzステレオ(-fdatで DAT品質)
 2.5秒間(-d5で 5秒)
 3.保存ファイル名: voice.wav
 4.使用する PCM 


このあと、aplay で、voice.wav を再生すると、録音できてた。
とりあえず簡単に動いた。

続きを読む

Raspberry Pi3 に Ubuntu を入れる。



RaspPi3をネットで買うときに、ついでに UDB wifi ドングルを買ってしまったが、Pi2と違い Pi3 は Wifi 付いてた(on board)。しまった。

Ubuntu の中でも、RaspPi3対応な、Ubuntu MATE を以下からとってくる。
https://ubuntu-mate.org/download/

7-zip で、xz ファイルを解凍して、sdカードに書き込む。


■ disk容量

Ubuntu MATEインストール後は、本来のSDカード容量に関係なく、8G程度になるらしい。俺のは16Gなのに有効に使えてない。
先達さんのWebに書いてあった手当を行う。

$ sudo fdisk /dev/mmcblk0
  Command (m for help): d
  Partition number (1,2, default 2): 2
  Command (m for help): n
  Select (default p): p
  Partition number (2-4, default 2): 2
  First sector (133120-120946687, default 133120): (Enter)
  Last sector, +sector of +size{K,M,G,T,P} (133120-120946687, default 120946687): (Enter)
  Command (m for help): w
$ sudo reboot
<再起動>
$ sudo resize2fs /dev/mmcblk0p2
$ df -kh で確認


■ 日本語入力
OSインストール後にGUI画面から日本語を選ぶと「表示」は日本語にあるが、「入力」ができない。

システム > 設定 > ユーザ向け > 言語サポート

を開くと ”言語サポートが完全にはインストールされていません” と出てくるのでインストールを。
インストール完了後に キーボード入力に使うIMシステム を fcitx にする。
ログインしなおす。





届いた!

image

























箱を開ける。
ケーブルとか and タッチスクリーンが。

image













































マニュアル的なのがなかった。箱の裏にURLが。

Raspberry Pi 7” Touchscreen Display
https://www.element14.com/community/docs/DOC-78156 

ここを見ながら組み立てる。ただ、4までの接続&スタンドオフ止め済みだった。

image


























残りのリボンケーブル接続、ジャンパーの赤黒をつなげて、とりあえずタッチスクリーンにつながずに、手持ちモニターで立ち上げる。


sudo apt-get update
sudo apt-get upgrade
タッチパネルの仮想キーボードも入れておく
sudo apt-get install matchbox-keyboard


このタッチスクリーンが 800×480 で、自動的に認識させるために、

sudo raspi-config
 8 Advanced Options
   A1 Overscan 
     Disable 
を選んで、保存して再起動!




「実例で学ぶ Raspberry Pi 電子工作」 


第4章 P.90「インターネット上の天気予報データを利用しよう」
をやってみる。

温度センサーで認識した温度と、Livedoor天気予報 東京 からデータを持ってきた今日・明日の天気予報と最高・最低気温を液晶LCDに表示する。


部材は前作の本で使ったものと同じ。

 温度センサー: ADT7410
 LCDモジュール: AQM0802

 以前、ハンダ付けを済ませていたのでブレッドボードに繋げるだけ。サクサクすすめる。


P.108「4.3 LCDへの文字の表示」

サンプルプログラムの bb2-04-03-lcd-practice.py を動かしてLCD表示を確認。
本のとおり、カタカナも表示させてみる。


続いて、本番 bb2-04-04-lcd-4modes.py の4モード切替バージョンを動かす。
タクトスイッチを押して、モードを切り替えてみる。動いた。


ラジオ放送を予約録音して、通勤時に iphone で聴くために

 ①radiko からラジオ放送をデータ取得する
 ②データを Dropbox へアップロードする

の2段階で行う。これは google先生が先達さん教えてくれるので、そのままやればいい。


$ sudo apt-get install rtmpdump ffmpeg swftools libxml2-utils

①の radiko からデータ取得するシェルは、 github から頂く。
https://gist.github.com/search?l=bash&q=radiko&utf8=%E2%9C%93

rec_radiko.sh というのを頂いた。

$ chmod +x rec_radiko.sh


rec_radiko.sh の引数として利用する放送局のIDを表す一覧がある、

radiko 参加放送局一覧
http://www.dcc-jpl.com/foltia/wiki/radikomemo


今回録音したかった ニッポン放送は、LFR

テストとして、1分ほど録音してみる。
$ sudo rec_radiko.sh LFR 1 /home/pi/radiko/

そして再生
$ mpg321 LFR_2016-02-17-13_00.mp3

おーーーーーっ! 聴けた。


つぎに Dropbox へ保存することをやってみる。ここでも先達さんのシェルを頂く。


$ git clone https://github.com/andreafabrizi/Dropbox-Uploader.git
$ cd Dropbox-Uploader
$ chmod +x dropbox_uploader.sh
$ cp dropbox_uploader.sh /home/pi/bin/


あとは cron で①②を行うようにする。
1を毎日 13:00 から 120分(15:00まで)の間、ニッポン放送(LFR)を録音する
のと、2を Dropbox の radiko フォルダの下にアップロードする。
※ dow をとりあえず、毎日である * で始める。

$ sudo crontab -e
  :
#
# m h  dom mon dow   command
00 13 * * * /home/pi/bin/rec_radiko.sh LFR 120 /home/pi/radiko/
30 16 * * * /home/pi/bin/dropbox_uploader.sh upload /home/pi/radiko/*.mp3 /radiko/



アップロード終わってそうな時間になったら iphone 側の Dropbox アプリで確認。

できた!

Raspbian のアップデート方法をまとめておく。

◆カーネルアップデート
pi@rasp$ date
2016年  1月 11日 月曜日 10:01:39 JST
pi@rasp$ uname -a
Linux raspberrypi 4.1.14-v7+ #828 SMP PREEMPT Thu Dec 10 13:22:08 GMT 2015 armv7l GNU/Linux
pi@rasp$
pi@rasp$ sudo rpi-update
 *** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
 *** Performing self-update
 *** Relaunching after update
 *** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
#############################################################
This update bumps to rpi-4.1.y linux tree
Be aware there could be compatibility issues with some drivers
Discussion here:
https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=113753
##############################################################
 *** Downloading specific firmware revision (this will take a few minutes)
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   168    0   168    0     0    224      0 --:--:-- --:--:-- --:--:--   306
100 47.9M  100 47.9M    0     0  1107k      0  0:00:44  0:00:44 --:--:-- 1158k
 *** Updating firmware
 *** Updating kernel modules
 *** depmod 4.1.15-v7+
 *** depmod 4.1.15+
 *** Updating VideoCore libraries
 *** Using HardFP libraries
 *** Updating SDK
 *** Running ldconfig
 *** Storing current firmware revision
 *** Deleting downloaded files
 *** Syncing changes to disk
 *** If no errors appeared, your firmware was successfully updated to 12f0636cd11ebd7ec189534147ea23ce4f702e90
 *** A reboot is needed to activate the new firmware
pi@rasp$
pi@rasp$ sudo reboot

<再起動後>

pi@rasp$ uname -a
Linux raspberrypi 4.1.15-v7+ #830 SMP Tue Dec 15 17:02:45 GMT 2015 armv7l GNU/Linux
pi@rasp$ 
 


◆ OSパッケージアップデート
pi@rasp$ sudo apt-get update
           :

pi@rasp$ sudo apt-get upgrade
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下のパッケージは保留されます:
  iceweasel iceweasel-l10n-ja lxpanel lxpanel-data minecraft-pi nuscratch
  raspberrypi-ui-mods
以下のパッケージはアップグレードされます:
  libraspberrypi-bin libraspberrypi-dev libraspberrypi-doc libraspberrypi0
  libsmbclient libwbclient0 libxml2 libxml2-utils python-libxml2
  python-rpi.gpio python3-rpi.gpio raspberrypi-bootloader samba-common
  smbclient
アップグレード: 14 個、新規インストール: 0 個、削除: 0 個、保留: 7 個。
71.6 MB のアーカイブを取得する必要があります。
この操作後に追加で 795 kB のディスク容量が消費されます。
続行しますか [Y/n]? y
取得:1 http://archive.raspberrypi.org/debian/ wheezy/main python-rpi.gpio armhf 0.6.1~wheezy-1 [47.9 kB]
取得:2 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libxml2 armhf 2.8.0+dfsg1-7+wheezy5 [825 kB]
             :
             :
libraspberrypi-bin (1.20151118-1) を設定しています ...
pi@rasp$ 
 
 
<再起動> 

pi@rasp$ uname -a
Linux raspberrypi 4.1.13-v7+ #826 SMP PREEMPT Fri Nov 13 20:19:03 GMT 2015 armv7l GNU/Linux
pi@rasp$ 
 
あれ? 古くなった。
 

このブログを始めるきっかけになった

「Raspberryで学ぶ電子工作」



に続く、新しい本がついに出た!!!

「実例で学ぶ Raspberry Pi 電子工作」
 



んで、前作と同様にサポートページもある。

実例で学ぶRaspberry Pi電子工作 作りながら応用力を身につける サポートページ
http://bluebacks.kodansha.co.jp/bsupport/rspi2.html

前作のサポートページでは、出版後にリリースされた Rasp Pi2の情報や、新しい情報がUPDATEされていく。いきなり ググらなくてもいいので助かる。
今回も新書の購入とともに、このサポートページを追いかけていく。

ずいぶん間があいてしまった。
サンプルプログラムの OpenGL を Raspi 自身で動かそうとしたが、私のプログラミング能力ではできなかった。



よって、もとのサンプルどおりに

 A. センサー& Webサーバ:Raspi
 B. 3D表示(OpenGL)側:別のPC(Ubuntu)

にわけて 3D表示させてやった。
サンプルの注意どおりに webサーバの ip変えるだけで、うまくいった。すげぇ、かっこいい!

もともと MPU-6050 センサーから出力される数値が、机の上で制止している状態(のはず)でも、 server.py で出力される毎に、微妙に変化しているのが、3D 画面上での 微妙に振るえてる感じで表現されている。





RaspberryPi と MPU-6050 の組み合わせでマネしたページ。

Interfacing Raspberry Pi and MPU-6050

Reading data from the MPU-6050 on the Raspberry Pi



まず、準備として I2C を使えるようにする。

$ sudo vi /etc/modules
 i2c-dev を追記
$ sudo apt-get install i2c-tools
$ sudo raspi-config
  8 Advance Options
   ->  A7 I2C

MPU-6050 を

 Pin 
  1 - VCC

  3 - SDA
  5 - SCL
  6 - GND

に接続する。



raspi を再起動して、MPU-6050 を認識できてるかを確認。

  $ sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --                         
 $ 


先のWebに載っていた pythonプログラムを完コピし、SMBus(1) に変えただけ。

bus = smbus.SMBus(1) # or bus = smbus.SMBus(1) for Revision 2 boards

おもむろに動かしてみる。

$ sudo python test.py 
gyro data
---------
gyro_xout:  -278  scaled:  -3
gyro_yout:  175  scaled:  1
gyro_zout:  -209  scaled:  -2

accelerometer data
------------------
accel_xout:  560  scaled:  0.0341796875
accel_yout:  276  scaled:  0.016845703125
accel_zout:  -16792  scaled:  -1.02490234375
x rotation:  0.941128353108
y rotation:  -1.90980354956

 でけた。中身をすこし研究しよう。



Raspi戦車を拡張する。



  1.  LCDに DHCP取得した IPアドレスを表示させる。
  2.  mjpg-steamer で USBカメラを動かす。

まず、使えるようになったLCD をもとに、/etc/rc.local に

 sudo python /home/pi/Desktop/raspi-sample/07-02-LCD.py $_IP &

を追記。 再起動すると LCD に IPを表示してくれる。



続いて、USBカメラを繋げてみる。


$ sudo apt-get update
$ sudo apt-get install libjpeg62-dev cmake
$ git clone https://github.com/jacksonliam/mjpg-streamer.git mjpg-streamer
$ cd mjpg-streamer/mjpg-streamer-experimental
$ make
$ cd ..
$ sudo mv mjpg-streamer/mjpg-streamer-experimental /opt/mjpg-streamer

$ sudo sh 10-02-stream.sh

で、9000 ポートが動いてるかを確認すると。。。? あれ? ない。

/var/log の messages では、
May 23 05:03:39 raspberrypi MJPG-streamer [3782]: starting application
May 23 05:03:39 raspberrypi MJPG-streamer [3782]: MJPG Streamer Version: svn rev: 
May 23 05:03:39 raspberrypi MJPG-streamer [3782]: fps.............: 15
May 23 05:03:39 raspberrypi MJPG-streamer [3782]: resolution........: 640 x 480
May 23 05:03:39 raspberrypi MJPG-streamer [3782]: camera parameters..............:#012
May 23 05:03:39 raspberrypi MJPG-streamer [3782]: www-folder-path...: /opt/mjpg-streamer/www/
May 23 05:03:39 raspberrypi MJPG-streamer [3782]: HTTP TCP port.....: 9000
May 23 05:03:39 raspberrypi MJPG-streamer [3782]: username:password.: disabled
May 23 05:03:39 raspberrypi MJPG-streamer [3782]: commands..........: enabled
May 23 05:03:39 raspberrypi MJPG-streamer [3782]: starting input plugin input_raspicam.so
May 23 05:03:39 raspberrypi MJPG-streamer [3782]: starting output plugin: output_http.so (ID: 00)
May 23 05:03:39 raspberrypi MJPG-streamer [3782]: Starting Camera
と、いかにも動いてるな感じなのに、動いてない。



切り分けのため、10-02-stream.sh の中身をコマンドラインから叩くとエラーが。
$ sudo /opt/mjpg-streamer/mjpg_streamer -i "input_raspicam.so -fps 15 -q 50 -x 640 -y 480" -o "output_http.so -p 9000 -w /opt/mjpg-streamer/www"
MJPG Streamer Version: svn rev: 
ERROR: could not find input plugin
       Perhaps you want to adjust the search path with:
       # export LD_LIBRARY_PATH=/path/to/plugin/folder
       dlopen: input_raspicam.so: cannot open shared object file: No such file or directory

input_raspicam.so をフルパスで書くと、また違うエラーが出た。 あれ???


続きを読む

以前、失敗した LCD AQM0802(秋月電子) の利用。リベンジした。

失敗したときの記事

といっても結果的にはハンダ付けをやり直しただけだ。

著者 Webにもあるとおり LCDの9本の足の間はピッチが狭いだけに、初心者の私には難しかった。

"はんだ吸取線"を買って、隣同士が引っ付いたのを吸い取りながら、四苦八苦、何とかハンダ付けを終えた。

おもむろに、

$ sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- 3e -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --                         

おおっ、認識した。3e がその印。

07-02-LCD.py を実行し、Hello World を液晶に表示させた。。。はずが、
黒くなるばかり。。。あれ???


説明書のコントラスト設定を データシートの初期設定例をみながら

0x70,0x56 を 0x77,0x54 に変えてみて、短い文字を流すと見れた。

$ python 07-02-LCD.py 'test'

ただ、液晶画面の2行にわたる文字になると、今度は文字が薄くなる。なんで???

よくわからんので、もう一度ハンダを付け直した。団子の部分を解消したり、半分付いてなさそうなところをしっかり付けたり。”ハンダ吸取線”を駆使しながら、再構築した。

すると。。。 うまくいった。ハンダ付けに苦労したが、ちゃんと付いていれば液晶にくっきり文字が出る(当然なんだろうが)。ちょっと嬉しかった。

コントラスト設定を元に戻しても、くっきり文字が出た。



 

USBカメラを買った。

ELECOM
UVC WEBカメラ
UCAM-C0220FEシリーズ 



$ sudo apt-get install motion
$ lsusb
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. 
Bus 001 Device 004: ID 04b4:aef9 Cypress Semiconductor Corp. 
Bus 001 Device 005: ID 1a81:2004 Holtek Semiconductor, Inc. 
Bus 001 Device 006: ID 056e:7016 Elecom Co., Ltd 

$ sudo motion

カメラを機動したあと、ブラウザで

http://localhost:8081

とするとカメラに写る自分が。

ただ、default で、/tmp/motion/ の下に沢山の jpg ファイルを生み出す。
これを止めるのに、

/etc/motion/motion.conf の

# output_normal on
output_normal off

と off に変更した。
これで jpg ファイルは無くなった。

Flash(swf)ファイルが生成される。再生するツールとして、gnash を入れる。

$ sudo apt-get install gnash

とりあえず動いた。





 




キャタピラ模型に、RaspberryPi2 と ブレッドボードなどを載せる。


webiopi を自動起動するように、以下を設定。

 $ sudo update-rc.d webiopi defaults

本ではLCDで ip address を表示するようにしてあるのだが、LCDがうまく使えてないので、
一旦、モニターとかを付けて起動して、ip を確認してから切り離して、動かした。

 
DSC04906

家にあったモバイルバッテリーを乗せる。ブレットボードはセロハンテープで止めた。
RaspPi2 は、ネジサイズがあわず、ネジ止めがうまくできなかった。ネジりん棒で止めた。

DSC04907



で、動いたぁ~!!!!!

DSC04909

うまく繋がったはずの wifiドングルが、つながらなくなった。


つながっているときは、

$ iwconfig 
wlan0     IEEE 802.11bgn  ESSID:"xxxx"  Nickname:"<WIFI@REALTEK>"
          Mode:Managed  Frequency:2.432 GHz  Access Point: xx:xx:xx:xx:xx:xx 
          Bit Rate:150 Mb/s   Sensitivity:0/0  
          Retry:off   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality=67/100  Signal level=28/100  Noise level=0/100
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

 $ cat /proc/net/wireless 
Inter-| sta-|   Quality        |   Discarded packets               | Missed | WE
 face | tus | link level noise |  nwid  crypt   frag  retry   misc | beacon | 22
 wlan0: 0000   67.   31.    0.       0      0      0      0      0        0

で、Link Quality もこれくらいあった。で、何かの拍子にネットが切れてしまう。


debugのコマンドをとりあえず残しておく。

 $ sudo wpa_supplicant -d -Dwext -iwlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf

ただ出力結果を見てもいまいち分からなかった。で、つながっているときに iwconfig をなんどか叩いてると Link Quality が、50以下になるときもあった。
で、おそらく wifi 電波の強さが関係しているんだと思う。

家のリビングに置いてある wifi ルータから RaspPi2 までは、廊下を挟んだ距離にあり、ドアを締め切っていた。念のためドアを開けっ放しにしたら、取りあえずつながるようになった。

増幅器でも買ってくるか。
 

↑このページのトップヘ