2013年8月18日日曜日

ArduinoからI2C

wireってライブラリ使うだけ。

DRV8830を使ってモーター操作するライブラリはこちらで公開されています。
http://junkroom2cyberrobotics.blogspot.jp/2013/04/i2cdrv8830.html
https://cyberrobotics.codeplex.com/releases/view/105736

2013年8月17日土曜日

Pythonからシリアル

急きょRaspberry PiからArduinoをつかう必要があったのでメモ。
pyserialが必要なのでpipでインストール

cuでやる場合はインストールする必要あり
$ sudo apt-get install cu
USBにArduinoさすだけで、/dev/ttvACM0に認識されるので、
cu -l /dev/ttyACM0 -s 9600
でConnectされ、あとは入力したのがそのままArduinoにわたる

目的はPythonから操作したいので、Pythonのserialをインストール
$ sudo pip install pyserial

あとはここを参考にした
http://tomono.eleho.net/2012/09/15/3140/

2013年8月4日日曜日

Raspberry piからI2C



1./etc/modulesに追記
$ sudo vi /etc/modules

i2c-dev  # 追記

2.ブラックリストから削除
$ sudo vi /etc/modprobe.d/raspi-blacklist.conf
blacklist i2c-bcm2708
 |
 V
#blacklist i2c-bcm2708

3.上記を有効にするためReboot
$ sudo reboot

4.モジュールの組み込みを確認
$ dmesg |grep i2c
[    4.830278] bcm2708_i2c bcm2708_i2c.0: BSC0 Controller at 0x20205000 (irq 79) (baudrate 100k)
[    5.053221] bcm2708_i2c bcm2708_i2c.1: BSC1 Controller at 0x20804000 (irq 79) (baudrate 100k)

[   11.096122] i2c /dev entries driver

5.i2c-toolsをインストール
$ sudo apt-get install i2c-tools

6. pythonからi2cバスをたたくためのsmbusをインストール
$ sudo apt-get install python-smbus

7. I2Cデバイスを結線
SCLはSCLに、SDAはSDAに結線

8.接続チャンネルを確認
$ sudo i2cdetect -l
i2c-0   i2c             bcm2708_i2c.0                           I2C adapter

i2c-1   i2c             bcm2708_i2c.1                           I2C adapter
これでつながっている数がわかる
$ sudo i2cdetect -l

 $ sudo i2cdetect 0
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-0.
I will probe address range 0x03-0x77.
Continue? [Y/n] y
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

$ sudo i2cdetect 1
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-1.
I will probe address range 0x03-0x77.
Continue? [Y/n] y
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- 64 -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

DRV8830を半田ジャンパOpenのままで使うと、アドレス0x64になるのが確認できた

9.動かしてみる

import smbus
import time

i2c = smbus.SMBus(1)    # sudo i2cdetect 1で見つかったので
adr = 0x64

i2c.write_byte_data(adr,0,0x35)   #  内部アドレス0で上位6bit 0x0D=1.04V, 下位2bit 0x01正転
print 'set on'
time.sleep(2)
i2c.write_byte_data(adr,0,0x34)     #  内部アドレス0で上位6bit 0x0D=1.04V, 下位2bit 0x00スタンバイ
print 'set standby'

USBカメラもつないでる為か、無線LANの接続が不安定



2013年7月24日水曜日

Python pit editor

pitで使うエディターの定義、.bashrc内に追記
export EDITOR="vim"

先にPit.get()をしてから、Pit.set()しないとエディターが立ち上がらないみたい。

>>> from pit import Pit
>>> foo = Pit.get('title文字列', {'require':{'id':'id文字列','pass':'Pass文字列'}})

2013年7月23日火曜日

グローバルIPを取得する方法

wget -q -O - ipcheck.ieserver.net

auのatermでサーバー公開

A t e r m B L 9 0 0 H W 
A T E R M - 7 4 E 4 B 9

ここの通りやった
http://blog.ainam.me/2011/07/11/au%E3%81%B2%E3%81%8B%E3%82%8A-%E3%81%AB%E4%B9%97%E3%82%8A%E6%8F%9B%E3%81%88%E3%81%9F%E6%99%82%E3%81%AB%E8%87%AA%E5%AE%85%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%8C%E5%85%AC%E9%96%8B%E3%81%A7/

・Aterm 側 「詳細設定」→「その他の設定」
1.DMZホストを有効
2.DMZホストをサーバで固定したアドレス(192.168.0.x)にする。
 ・ポートマッピング
80番ポートのパケットを192.168.0.x 宛てにマッピングする。
 LAN側ホスト 192.168.0.x プロトコル TCP ポート番号 80-80 優先番号  1 (任意で)

2013年7月20日土曜日

Python pit

Pipを使ったPitのインストール

$ sudo pip install pit

Python pip

Python やるならPipとか必要

$ sudo apt-get install python-pip

2013年5月28日火曜日

Raspberry Piでやったこと履歴

---------------------------------------
Raspberry PIやったことリスト
---------------------------------------
・購入について
http://gadget.ichmy.0t0.jp/raspi/

---------------------------------------
・Setup時にやること
1.Raspi-config
   expand_rootfs を選択し、Enterのち、Finishでリブート

& sudo raspi-config
でいつでも実行できる

スーパーユーザーへの変更
$ sudo su -

2.デフォルトのログインID/PW

Default login Username: pi Password: raspberry


3.rootのパスワード設定
$ sudo passwd root

---------------------------------------
・無線LANの設定

http://d.hatena.ne.jp/pasela/20121224/raspi_wlan

起動時に無線LANアダプタで繋がるように設定する(WPA2-PSK)
/etc/network/interfacesをこんな感じに書き換えた。
wpa-*という項目はwpa_supplicant.confの項目と対応している(wpa-をつけて_を-にする)ので、詳しい値はそのへんのヘルプを参照。
たぶんwpa_supplicant.confに設定を書いて、こっちにはwpa-confで設定ファイルを指定してもいいんだと思う(後述)。

以下はWPA2-PSKの例。

auto lo

iface lo inet loopback

allow-hotplug eth0
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-driver wext
wpa-ap-scan 1
wpa-scan-ssid 1                  # APがステルスモードの場合は1、それ以外は0
wpa-key-mgmt WPA-PSK             # キーの種類
wpa-proto WPA2                   # WPAとかWPA2とか
wpa-pariwise CCMP                # CCMPとかTKIPとか
wpa-group CCMP                   # CCMPとかTKIPとか
wpa-ssid "接続先のSSID"
wpa-psk "接続先のキー"
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp


・/etc/wpa_supplicant/wpa_supplicant.confに記載する場合
http://ginzanomama.hatenablog.com/entry/2013/02/06/141947

network={
ssid="myid"
proto=WPA
key_mgmt=WPA-PSK
pairwise=CCMP
group=CCMP
psk=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
}
network={
 :    利用する他のAP
}


WPA-PSKやWPA2-PSKによって記載方法が変わる
下記参照
http://www.youchikurin.com/blog/2007/06/linuxlan_1.html


この場合、
/etc/network/interfaces
はデフォルトのまま


wpa-pskの部分は16進数で指定するんだけど、これはwpa_passphraseというコマンドで得られる。
こんな感じ。
# SSID=paselan, キー=himitsu123の場合
$ wpa_passphrase paselan himitsu123
network={
ssid="paselan"
#psk="himitsu123"
psk=190863550e8b4cf62f28747de7a6545c3ebb7c3e40af26a45811da549eae53a5
}

----------------------------------------
・無線LANその2

アクセスポイントごとに切り替え
http://ginzanomama.hatenablog.com/entry/2013/02/06/141947
----------------------------------------
・DHCPのアクセスポイントを変えた場合のIPを取得するため、IPアドレスを送信する

--myip.py--

# coding: utf-8
import smtplib
from email.MIMEText import MIMEText
from email.Utils import formatdate
import commands

from_addr = 'hogehoge@gmail.com'
to_addr = 'hogehoge@hogehoge.com'
login_user = 'hogehoge@gmail.com'
login_pass = 'hogehoge'
cmd = 'hostname -I'
msg = 'My IP Address is ' + commands.getoutput(cmd)
mail = MIMEText(msg)
mail['Subject'] = 'Raspberry Pi Notification'
mail['From'] = from_addr
mail['To'] = to_addr
mail['Date'] = formatdate()
send = smtplib.SMTP('smtp.gmail.com', 587)
send.ehlo()
send.starttls()
send.ehlo()
send.login(login_user, login_pass)
send.sendmail(from_addr, [to_addr], mail.as_string())
send.close()

・動作確認

$ python myip.py

/ect/rc.localに追記し、自動実行されるようにする

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

python /home/pi/src/myip/myip.py

exit 0

-------------------------------------------------
・自動メール送信スクリプト内のメールパスワードの暗号化

Pythonのパスワード管理はPit
・easy_installの準備
$ sudo apt-get install python-setuptools
・Pitのインストール
$ sudo easy_install pit


http://hidelafoglia.wordpress.com/2009/12/14/python-pit-%E3%81%A7%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E7%AE%A1%E7%90%86/
エディタを指定しつつ起動
$ EDITOR=vim python
>>>from pit import Pit
>>>Pit.set('hoge')

vimが起動して、使いたい変換を登録
ex)

mailaddress: 'hoge@gmail.com'

保存

実際のコード中では
from pit import Pit
hoge=Pit.get('hoge')
hoge[使いたい用語]
from_addr = 'hogehoge@gmail.com'
                 |
                 V
from_addr = hoge['mailaddress']


-------------------------------------------------
・日本語表示対応

http://www.designspark.com/knowledge-item/JPN-raspberry-pi-Japanese-version
Raspberry Piを購入するとみなさんはDebianを入れることでしょう。しかし!日本語がでない。。。

そこで、簡単に日本語環境を設定する方法を紹介します。

(1)まずはログイン

piユーザでログインします。

以下の方法はコンソールのままセッティングすることをおすすめします。

なぜかというと、Xを起動して設定すると、メモリが足りなくなり、ロケール設定がエラーになります。

(2)ロケールを設定します

以下のコマンドを実行します。

$ sudo dpkg-reconfigure locales

ここで、Linuxおなじみのコンフィギュレーション画面が出てきますので、

en_GB.UTF-8 UTF-8
ja_JP.EUC-JP EUC-JP
ja_JP.UTF-8 UTF-8

の3つにチェックをつけます。(スペースで*をつける)

デフォルトでは、
ja_JP.UTF-8 UTF-8
を選んでおきます

(3)フォントのインストール

Debianのフリーのフォントをapt-getでインストールしてください。

$ sudo apt-get install ttf-kochi-gothic xfonts-intl-japanese xfonts-intl-japanese-big xfonts-kaname

(4) 再起動

一度、再起動します。

$ sudo reboot

(5)起動したらXを起動

Xを起動してみてください。メニューまで日本語化されていますね。

$ startx

-------------------------------
・Xの日本語変換

http://namakemono345.com/kichijitsu/RaspberryPi/use/mozc.html

sudo apt-get install ibus-anthy; ibus-daemon -drx; ibus-setup


-------------------------------
・コンソールの日本語対応

http://debikuro.ddo.jp/blog2/archives/3503
1.4.コンソールでも日本語表示できるようにjfbtermとuimを追加インストール

$sudo apt-get install jfbterm uim uim-anthy

1.5.入力切替のキーをXのCtrl+Spaceに変更

# vi /usr/share/uim/generic-key-custom.scm

変更前

(define-custom ‘generic-on-key ‘(“zenkaku-hankaku” “”)
(define-custom ‘generic-off-key ‘(“zenkaku-hankaku” “”)

変更後

(define-custom ‘generic-on-key ‘(“zenkaku-hankaku” “”)
(define-custom ‘generic-off-key ‘(“zenkaku-hankaku” “”)

1.6.コンソールをjfbtermに変更し、uim-fepを起動

$ jfbterm
$ uim-fep

・jfbtermとuim-fepを自動起動させる
http://blog.michinari-nukazawa.com/2013_03_01_archive.html

piでログイン後、~/.bashrcの末尾に追記

case $TERM in
linux)
 if [ -c /dev/fb0 ]; then
  jfbterm -q -e uim-fep -u anthy
  exit
 fi
 ;;
esac

----------------------------------------
・OpenCVのインストール

$ sudo apt-get install libopencv-dev

-------------------------------
・ブラウザ追加
sudo apt-get update;sudo apt-get install chromium


-------------------------------
・cronの編集
エディタの変更
sudo update-alternatives --config editor
編集
sudo crontab -e

下記を最後に追記(Nexus7解像度)
@reboot su -c "vncserver :1 -geometry 1280x800 -depth 16 -pixelformat rgb565" - pi

-------------------------------
・Raspberry piで文書読み上げ
http://homebrew.jp/show?page=1462
http://arkouji.cocolog-nifty.com/blog/eeepc_ubuntu/

$ sudo apt-get install open-jtalk
$ sudo apt-get install hts-voice-nitech-jp-atr503-m001
$ sudo apt-get install open-jtalk-mecab-naist-jdic


http://shokai.org/blog/archives/6893
MMDの音声に差し替える
wget http://downloads.sourceforge.net/project/mmdagent/MMDAgent_Example/MMDAgent_Example-1.3/MMDAgent_Example-1.3.zip
unzip MMDAgent_Example-1.3.zip
sudo cp -R MMDAgent_Example-1.3/Voice/* /usr/share/hts-voice/

読み上げようスクリプト ojt.sh

#!/bin/bash
#VOICE=/usr/share/hts-voice/nitech-jp-atr503-m001
VOICE=/usr/share/hts-voice/mei_happy
DIC=/var/lib/mecab/dic/open-jtalk/naist-jdic
open_jtalk \
-td $VOICE/tree-dur.inf \
-tf $VOICE/tree-lf0.inf \
-tm $VOICE/tree-mgc.inf \
-md $VOICE/dur.pdf \
-mf $VOICE/lf0.pdf \
-mm $VOICE/mgc.pdf \
-df $VOICE/lf0.win1 \
-df $VOICE/lf0.win2 \
-df $VOICE/lf0.win3 \
-dm $VOICE/mgc.win1 \
-dm $VOICE/mgc.win2 \
-dm $VOICE/mgc.win3 \
-ef $VOICE/tree-gv-lf0.inf \
-em $VOICE/tree-gv-mgc.inf \
-cf $VOICE/gv-lf0.pdf \
-cm $VOICE/gv-mgc.pdf \
-k $VOICE/gv-switch.inf \
-s 48000 \
-a 0.56 \
-p 220 \
-x $DIC \
-ow /tmp/ojtalktmpvoice.wav \
$1
aplay /tmp/ojtalktmpvoice.wav
rm /tmp/ojtalktmpvoice.wav

スクリプトを実行可能にする
$ sudo chmod +x ojt


test.txtの読み上げ
./ojt test.txt


音量
http://www.limemo.net/blog/2013/02/raspberry-pi-adjust-volume.html
sudo amixer cset numid=1 80%

----------------------------------------
GPIO
http://www.pwv.co.jp/~take/TakeWiki/index.php?raspberrypi%2FRaspberry%20Pi%E3%81%A7IO%E5%88%B6%E5%BE%A1
WiringPiのインストール

$ sudo apt-get install git-core


$ mkdir -p local/src
$ cd local/src/
$ git clone git://git.drogon.net/wiringPi
$ cd wiringPi
$ ./build

-------------------------------
・Android側アプリ

ssh
connectbot

VNC Viewer
AndroidVnc


AndroidVNCから日本語利用ができない!!

vx connectBotで日本語入力ができない

-------------------------------
・USBカメラ BUFFALO BSW32KM01H

http://blog.studiok-i.net/article/64885069.html

USBカメラの接続を確認
$ sudo lsusb

カメラビューワーをインストール
$ sudo apt-get install luvcview

起動
$ luvcview

サイズ指定して起動
# luvcview -s 320x240

AndroidからのVNCではエラーになって表示されませんでしたが、
PCからのVNCでは正常動作しました。

無線LANとUSBカメラだけなら電源付きUSBハブを使わなくても
直差しで動作しました。
-------------------------------
[未]youtube

そこでgnashの出番です。
こちらはオープンソースで開発されているフラッシュプレイヤーで、自前でコンパイル(実際にはパッケージに任せるのだけれど)するので大丈夫なのだそう。

(以下、raspbianを前提とします)
sudo apt-get install gnash
sudo apt-get install browser-plugin-gnash

これでraspbian標準搭載ブラウザ、Midoriでyoutubeが再生可能となります。
ただしgroovsharkやthefuture.fmなど、adobe flash playerだけを想定しているサービスには使えないのであしからず。

-------------------------------
・XBMCのインストール

http://assimane.blog.so-net.ne.jp/2013-04-03
$ su -
# echo "deb http://archive.mene.za.net/raspbian wheezy contrib" > /etc/apt/sources.list.d/mene.list
# ls -l /etc/apt/sources.list.d/mene.list
# cat /etc/apt/sources.list.d/mene.list

# apt-key adv --keyserver keyserver.ubuntu.com --recv-key 5243CDED
# apt-get update
# apt-get install xbmc

# exit
$ clear;/usr/lib/xbmc/xbmc.bin

日本語化
http://assimane.blog.so-net.ne.jp/archive/c2303875207-1
必ず先にAppearanceのSkin->Fonts->Arial based
をしてから言語をJapaneseに変える事
そうしないと文字化けで見えなくなる

YouTubeはアドオンを追加することで見えるようになる

-------------------------------
・ラジオ
http://skalldan.wordpress.com/2013/02/26/raspberry-pi-%E3%81%A7%E9%81%8A%E3%81%B6-5-wifi-%E6%8E%A5%E7%B6%9A%E3%81%A8%E3%81%8A%E3%82%82%E3%81%A1%E3%82%83%E3%81%AE%E3%82%B9%E3%83%94%E3%83%BC%E3%82%AB%E3%83%BC/

http://www.asahi-net.or.jp/~ea7k-smmr/raspberry-pi.htm

http://mmbrothers.exblog.jp/16987726/
音量調整
$ alsamixer

ラジオのアドレス集
http://www.shoutcast.com/radio/Japanese

$ mplayer -playlist *
*はラジオのURL

-------------------------------
・Bluetooth

http://astra.under.jp/blog/?p=297
$ sudo apt-get install bluetooth bluez-utils bluez-compat
$ sudo hcitool scan

$ sudo bluez-simple-agent hci0 <アドレス>

PINは0000 or 1234

http://homebrew.jp/show?page=1464

下記表示が出るとOK
$ sudo bluez-simple-agent hci0 7C:ED:8D:00:00:00
RequestPinCode (/org/bluez/6717/hci0/dev_7C_ED_8D_00_00_00)
Enter PIN Code: 0000
Release
New device (/org/bluez/6717/hci0/dev_7C_ED_8D_00_00_00)


信頼するデバイスとして登録
$ sudo bluez-test-device trusted 7C:ED:8D:00:00:00 yes
$ sudo bluez-test-input connect 7C:ED:8D:00:00:00

リブートして確認

$ hcitool con
Connections:
> ACL 7C:ED:8D:00:00:00 handle 39 state 1 lm MASTER

$ hcitool rssi 7C:ED:8D:00:00:00
RSSI return value: -4

-------------------------------
・samba
http://assimane.blog.so-net.ne.jp/2013-03-30
$ sudo apt-get install samba
$ sudo apt-get install samba-common-bin
$sudo cp -p /etc/samba/smb.conf /etc/samba/smb.conf.org
$sudo vi /etc/samba/smb.conf

下記を最後に追加
# Add Start 20130525
 [share]
comment = share drive
read only = no
locking = no
path = /mnt/share
guest ok = no
force user = pi
# Add End 20130525

パスワードの登録
$ sudo smbpasswd -a pi

sambaの再起動 smb.confを書き換えたら必要
$ sudo service samba restart
-------------------------------
・電源
eneloop KBC-L2Bで無線LAN動作OK
ただし、USBメモリを追加で刺すと動作しなかった
-------------------------------
・WebIOPi
https://code.google.com/p/webiopi/wiki/INSTALL

$ wget http://webiopi.googlecode.com/files/WebIOPi-0.6.0.tar.gz
$ tar xvzf WebIOPi-0.6.0.tar.gz
$ cd WebIOPi-0.6.0
$ sudo ./setup.sh

使い方
$ sudo webiopi [-h] [-c config] [-l log] [-s script] [-d] [port]

    Options:
      -h, --help           Display this help
      -c, --config  file   Load config from file
      -l, --log     file   Log to file
      -s, --script  file   Load script from file
      -d, --debug          Enable DEBUG

    Arguments:
      port                 Port to bind the HTTP Server

起動と終了
$ sudo /etc/init.d/webiopi start
and
$ sudo /etc/init.d/webiopi stop

自動起動設定
$ sudo update-rc.d webiopi defaults
-------------------------------
deamonの整理とNTP

http://www.pc-links.com/blog/raspberrypi/daemon/

$ sudo aptitude install ntpdate

-------------------------------
Bottle.py

http://bottlepy.org/docs/dev/tutorial.html
-------------------------------

2013年4月26日金曜日