白旗製作所

Raspberry Piの初期設定

Raspberry Piの初期設定方法を記載します。
既に色々な方が記事にしているので今さらですが、自分の環境ではそのままだと使えなかったものが多数あったので自分用にまとめておきます。
ちなみに、使用しているRaspberry PiはModel A+ V1.1です。

①Raspberry PiのOSイメージの用意
 4GB以上のMicroSDカードを用意。
 https://www.raspberrypi.org/downloads/raspbian/
 からイメージを落として、
 Win32DiskImagerで焼く。


②起動
 MicroSDカードをRaspberry Piに入れて、キーボード、HDMIケーブルを指して起動。
 普通に起動すればOK。OSによってGUIかCUIかが異なる。
 初期ユーザIDとパスワードは
 ID: pi,
 pass: raspberry
 パスワードの変更は
 passwdコマンドで行う。
 
 
③日本語設定
 ターミナルから、sudo raspi-configで初期設定画面に入る。
 4. localisation optionsのChange Localeで、jp EUC-JPと、jp UTF-8をスペースで選択してOK。デフォルトはen.GB-UKにしておく。
 Change TimezoneでAsia Tokyoを選択。
 Change Keyboard Leyoutで105のJapaneseのデフォルトを選択して再起動しておく。

 (ネットに繋いだ後)
 sudo apt-get install ttf-koch-gothic xfonts-intl-japanese xfonts-intl-japanese-big xfont-kaname
 sudo apt-get install uim uim-anthy
 sudo apt-get install jfbterm
 を行い、フォントを導入してから、再起動。

④SSHの有効化
 5. Interfacing OptionsのSSHをEnableにする。
 (7. Advanced Optionsにはいっていることもあり。OSのバージョンに寄る)

⑤WiFi接続
 PLANEX 無線LAN子機 (USBアダプター型) 11n/g/b 150Mbps MacOS X10.10対応 GW-USNANO2A
 をUSBコネクタに指す。

 GUIでSSIDがステルスでなければ右上のアイコンからWiFi接続出来る。
 ステルスの場合、
 sudo sh -c "wpa_passphrase [SSID] [PASS] >> /etc/wpa_supplicant/wpa_supplicant.conf"
 でconfファイルを作った後、
 sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
 でwpakeyの下に
 scan_ssid=1を追加して保存して終了(Ctrl+xでYes(y), Enter)
 ifconfig wlan0で接続されたか確認。接続されなければ再起動する。

 コンソールの場合、
 sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
 の最終行に
 network={
  ssid="[SSID]"
  psk="[PASS]"
 }
 を追加して保存
 
⑥ IPアドレスの固定
 sudo nano /etc/dhcpcd.confで
 interface wlan0
 static ip_address=192.168.0.X/24
 static routers=192.168.0.1
 static domain_name_servers=192.168.0.1
 を末尾に追加して再起動
 注意:IPアドレスを確認する場合はifconfigを使う
 
⑦ セキュリティ設定
 raspberry piのアップデート
 $ sudo rpi-update
 $ sudo reboot
 rootへのパスワード設定
 $ sudo passwd root
 ユーザー名の変更
 $ sudo usermod -l [新ユーザー名] pi
 sshのポート番号変更して再起動
 $ sudo vi /etc/ssh/sshd_config
 $ sudo /etc/init.d/ssh restart

⑧DNSサーバの指定
 Err http://mirrordirector.raspbian.org/raspbian/ jessie/main cu armhf 1.07-20.1
  Could not resolve 'mirrordirector.raspbian.org'
 とかエラーがでたら、DNSの名前解決ができていない。プロバイダから提供されたDNSサーバか、LAN内のルータアドレスを調 べ、
 sudo nano /etc/resolv.confの1行目に
 nameserver 192.168.0.1
 と記入しておく。

⑨リモートデスクトップ接続出来るようにする
 sudo apt update sudo apt upgrade→時間がかかる
 sudo apt install tightvncserver
 sudo apt install xrdp sudo reboot する。
 tightvncを入れないとだめっぽい

⑩コマンドラインからのLチカ
 $ sudo su
 $ echo 25 > /sys/class/gpio/export
 $ echo out > /sys/class/gpio/gpio25/direction
 $ echo 1 > /sys/class/gpio/gpio25/value
 $ echo 0 > /sys/class/gpio/gpio25/value
 $ echo 25 > /sys/class/gpio/unexport
 25をexportしてoutに設定し、Hにする、Lにする、その後unexportして開放する。
 →開放しないとその後使えなくなるので注意。
 ピン配置はこの辺を参照
 http://nejiketa.seesaa.net/article/414258096.html

⑪ python のインストール
 Raspberry Piにはpythonが標準でインストールされているが,
 python3系など使いたい場合,バージョン管理がややこしいのでminicondaやpyenv等を使う.
 ここではminicondaの導入方法を記載.
 Anaconda on the Raspberry Piを参考に minicondaを導入.
 まずminicondaのダウンロードとインストール(2系と3系好きな方を.)
 $ wget http://repo.continuum.io/miniconda/Miniconda-3.5.5-Linux-armv6l.sh
 $ wget http://repo.continuum.io/miniconda/Miniconda3-latest-Linux-armv7l.sh
 $ /bin/bash Miniconda-3.5.5-Linux-armv6l.sh
 $ /bin/bash Miniconda3-latest-Linux-armv7l.sh
 でインストールできる.あとはpathの設定.
 /home/piで
 $ sudo nano .bashrc
 最終行に
 export PATH="/home/pi/miniconda3/bin:$PATH"
 を追加して再起動
 $ sudo reboot

残りはおいおい記事を追加していきます.
  1. 2017/07/23(日) 14:24:52|
  2. Raspberry Pi
  3. | トラックバック:0
  4. | コメント:0

RaXino+RaspberryPiで家の電力見える化

タイトルの通り、家の電力使用状況を見えるようにするため、電力計を作ってみました。

全体の構想としてはこのスライドのものがほとんどそのままです。
RaXino+Raspi 

カレントトランスで分電盤の電流値を検出し、マイコンのA/Dコンバータで読み込んでRaspberryPiでWeb上に可視化します。この方法だと電圧は計測しないので、位相差がわからず計測した電力は有効電力ではなく皮相電力になりますが、まあ大きな差は出ないと思います。
今回は分電盤のうち各部屋に分配された電力も読み取ることにし、6ch用意します。6chもあるのでチャンネルごとの回路を簡素化するために、アナログの回路側はこのページを参考にして作成し、下側半波は読み取らない形をとりました。 この辺は以下の記事に詳しく書きました。 RaXino+RaspberryPi電力計の電力計測部分の製作 また、マイコンも相応のチャネル数と処理能力を持つもの、ということで、購入後に少しだけさわって放置していたRaXinoを使います。

RaXinoはRX62Nを積んだマイコンボードで、RXduinoというArduinoライクのライブラリを合わせて使えるものです。RaXinoであればEthernetに繋げるのでこれだけでも良かったのですが、
・わざわざ無線LANコンバータ買ってくるのが面倒だった
・RTCで時刻を刻ませないといけない
・Ethernetにつなげるとは言え高機能なことが出来るわけでもなくPCからのアクセスが面倒
なのでRaXinoで計測したデータを一度RaspberryPiに送って保存し無線で飛ばします。


RaXinoをさわるのが久しぶり過ぎて、まずは環境構築から行いました。
RXduinoライブラリは、現在はFreeRXduinoという名前で無料で提供されています。
使用方法として、GCCでコンパイルする方法と、ルネサスの統合開発環境であるHEWやCS+(旧CubeSuite+)で使えるサンプルプロジェクトが用意されています。最初はGCCでコンパイルをしようとしていたのですが、RaXino基板にmakefileを合わせるとinvectの問題でエラーが出てしまったので、結局CS+をインストールして使いました。

やりたいことは1kHz以上で6chのA/Dコンバータを1サンプルずつして電流の瞬時の大きさを記録し、1秒ごとくらいで実行値(RMS)を計算してRaspberryPiに渡すことです。
モジュールとしては1kHzタイマ、A/Dコンバータ、シリアル通信を使います。タイマ割り込み関数でA/D変換して、データがたまったら1秒ごとにメインループ実行値計算させます。
とりあえず以下のコードがあれば最低限OKです。

コード例

シリアル通信はRX.TXの結線をしないといけないかと思っていたのですが、USB端子のシリアルをRaspberryPiに指すとそのまま認識したので、これで行きます。認識後にポート名をdmesgコマンドで取得します。

Raspberry Piでは、Pythonを使ってシリアル通信でデータ取得し、時刻とともにCSVで保存しておきます。
Pythonでシリアル通信するにはpySerialというライブラリがあれば簡単に使える様なので、早速インストールします。と思ったらpipすらインストールしてなかったので、ついでにpipも入手しておきます。
$ sudo apt-get install python-pip
$ pip install pyserial

シリアルのポート名は/dev/ttyACM0だったので、それを使ってシリアル通信するスクリプトを記述します。

コード例

これで時刻付きCSVが保存できるようになったので、SCPでとってくればいつでも見られるようになりました。

あとは、別個でWebから見えるインターフェースを用意して、当日の電力推移とデータをとってこれるようにしたいなと思っています。とはいえWebの知識があまりないので、まずはpythonでmatplotlibをつかってグラフ描画する感じになりますかね。
また、せっかく電力を計っているので、どの機器がどのくらい電力を消費するか分析し、節電の方策を立てようと思っています。

参考ページ:
FreeRXduino
自作電子小物/簡易電力計/7チャネル版
自作電子小物/簡易電力計/7チャネルGUI版
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
Raspberry Pi 3でエアコン一体型パソコン「airpi」を作る!
python/pandas/matplotlibを使ってcsvファイルを読み込んで素敵なグラフを描く方法(Mac/Raspberry Pi)

  1. 2017/07/23(日) 01:01:00|
  2. マイコン
  3. | トラックバック:0
  4. | コメント:0

ScanSnap ix500Aを使った書籍読み取り設定

今更ですが、ドキュメントスキャナと裁断機を購入して自炊をはじめました。

使用しているのはこちらの機器です。
ScanSnap iX500 FI-IX500A
ディスクカッター・スリム DC-F5100

自炊をされている方の記事を見ながら試してみていまして、
なかなかうまく読み取れて良さ気です。
ただ、読み取り設定に不満が出てきてカスタムした点が有りますので、
ココにメモしておきます。

【通常】
普通は、以下の読み取りモード設定にしておくと思います。
 画質:ファイン
 カラーモード:自動判別
 読み取り面:両面読み取り
 向き:自動判別
 白紙ページを自動的に削除:□
 継続読み取りを有効:☑
 オプション:全て□

【文庫本等】
 画質:ファイン
 カラーモード:白黒
 読み取り面:両面読み取り
 向き:自動判別
 白紙ページを自動的に削除:☑
 継続読み取りを有効:☑
 オプション:文字列の傾き自動補正のみ☑

古くて色あせた文庫本を上の通常設定で読み込むと、
カラー・グレー・白黒がページごとにまちまちで読み取られることが有ります。

ページによって色あせ具合は違うので仕方ない部分もありますが、
読み込んだ結果はページごとに全然違う色に見えてしまいます。

個人的に小説を読んでいると紙色の違いはすごく気になりますし、
文庫本であまりカラーとかにしても仕方ないので、
カラーモードを白黒に変えて読み取っています。

また、読み込み時に微妙に傾くことがあるので、
傾き自動補正もチェックを入れています。

ちなみに、文庫本の場合カバーは捨ててしまっています。
カバー絵が欲しければAmazonから画像引っ張ってくれば良いですし。

【教科書類】

 画質:スーパーファイン
 カラーモード:グレー
 読み取り面:両面読み取り
 向き:自動判別
 白紙ページを自動的に削除:□
 継続読み取りを有効:☑
 オプション:文字列の傾き自動補正のみ☑
 検索可能なPDF:☑

教科書類も文庫本とほぼ同様ですが、教科書には図や細かい文字が出ることがあるため、
カラーモードは白黒ではなくグレー、画質はスーパーファインにしています。

また、ページ番号は揃えておきたいので白紙ページは残し、
テキスト認識で検索可能なPDFにしておきます。

【漫画】
 画質:スーパーファイン(orエクセレント)
 カラーモード:グレー(orカラー)
 読み取り面:両面読み取り
 向き:自動判別
 白紙ページを自動的に削除:□
 継続読み取りを有効:☑
 オプション:全て□
 検索可能なPDF:□

結構きれいに読み取りたい漫画の場合、画質を上げ、
カラーorグレーで読み取ります。

また、傾き補正を入れてしまうとコマ割りによっては不必要なところまで
傾けてしまうことがあるので、漫画の場合入れません。



こうしておくと大体満足する読み取り結果が得られることがわかりました。
ここまで細かく分けるか、いっそ全て自動で読み取って労力を削減するかは
用途に依存すると思いますが、冊数が多い場合このくらいは分けておいても
良いような気がします。


  1. 2017/05/02(火) 03:10:00|
  2. 自炊
  3. | トラックバック:0
  4. | コメント:0

suumo賃貸物件情報取得スクリプト

そのうち引っ越すつもりで家探しを始めたのですが、
物件の数が多すぎて、比較したり条件に合う物件を抽出するのがかなりめんどくさいです。
比較評価をexcelでちまちまやっていると、条件を自動で取得してきたくなります。

物件DBにアクセスさせてくれれば良いんですけど、どうもそういうDBは公開されていないようで、
suumo等の不動産会社のWebページから、Webスクレイピングで情報を取得することが行われているようです。

以下では、GoogleスプレッドシートのIMPORTXML()関数を用いて、HTMLからXPathを用いて
情報を取得する方法が紹介されています。
家探しのための Suumo スクレイピング用スプレッドシート
Google Spreadsheetで効率的に物件を探す

たとえば、
=REGEXREPLACE(IMPORTXML(A3,"//*[@id='contents']/div[1]/div[2]/div[1]/table/tbody/tr/td[1]/div/div[1]/span"), "万円", "")
をセルに入力すると、A3に記載したURLの物件ページから、家賃の情報を取得し、数字部分のみを表示することができます。


しかしながら、私の環境では、物件数を増やすとIMPORTXML()関数の数が多すぎるようで、
GoogleスプレッドシートがLoading...で止まってしまいました。

どうにかならないかトライしてみたのですが、あまり改善が見られなかったので、
Pythonでスクリプトを作成しました。


基本的にやっていることはGoogleスプレッドシートと一緒で、
lxml.htmlとrequestsモジュールをインポートし、指定したURLからXPathでテキストを取得しています。
また、pandas.DataFrameにデータを追加し、まとめてcsvで外部に保存します。

車を持っているので駐車場の情報も取得したかったのですが、
取得しに失敗したのでここは列だけ用意しています。



これで以下のように情報をまとめた表が作れるので、
Excelの機能を使って自由に処理ができます。
suumoのWebスクレイピング結果例


ちなみに、上のコードにない情報でもXPathさえわかれば同様に取得できます。
XPathの調べ方は、たとえばFireBug等ブラウザアドオンのデバッグツールを使う方法があります。
意外と知られていない、FirebugのX-pathコピー機能

ただし、Webページの状態によってXPathのタグ番号等が異なるので、注意が必要です。
たとえば、suumoの場合、ユーザーログイン中とそうでない状態でURLとXPathが微妙に異なるので、
URLから状態を判定して使用するXPathを分ける等しないといけません。

今回のコードでは、最初のdivタグまでを"//*[@id='contents']"で置き換えて
どちらの場合にも対応する方法を用いていますが、このタグ内に無い情報には使えません。


  1. 2017/04/03(月) 00:38:59|
  2. Python
  3. | トラックバック:0
  4. | コメント:0

トコジラミへの対処法

トコジラミ
我が家に住み着いていたトコジラミの死骸

トコジラミ(南京虫、ベッドバグ)という虫をご存知でしょうか。
トコジラミは、主に寝具等の陰や隙間に住み着き、
夜間に人の皮膚から吸血するタイプの虫です。

過去にかなり広まり、殺虫剤によってほぼ根絶やしにされたようですが、
近年海外で一部の殺虫剤に対し抵抗性を持つトコジラミが再度流行しているようで、
国内でも被害が多く出ています。

トコジラミに吸血されると、トコジラミの唾液によるアレルギー反応で強い痒みを生じます。
また、トコジラミは主に人間が寝静まった夜間に吸血するため、
睡眠が阻害され、不眠などの症状に繋がることがあります。

トコジラミは、ホテル等に宿泊した際に衣服やカバン、靴の溝等に付着し侵入します。
トコジラミは様々な隙間に隠れるため発見が難しく、かつ繁殖能力が高いため、
発見されたときには大繁殖してしまっていた、ということがよくあり、
完全な駆除は困難と言われています。

ここでは、私が半年にわたりトコジラミと格闘し駆除した経験から、
自分でできるトコジラミへの対処法をピックアップしてまとめます。

なお、トコジラミをなるべく効果的に駆除するには、記事に記載した方法を
なるべく並行して長期的に継続実施することが肝要です。
トコジラミへの対処は、中途半端にすると効果がなかったり被害を拡大する恐れがあります。
自分の手に終えない場合は業者や専門家へ相談するようにしてください。


1. 発見したトコジラミを処理する
1.1 生きているトコジラミの処理
トコジラミを発見したら、紙パック式の掃除機で吸いとります。
紙パックはジップロック等で密封して廃棄します。

トコジラミは、スプレー式の殺虫剤を使用しても物によっては直ぐには死にません。
一部の殺虫剤には抵抗性を持ち、今後の世代交代でさらに抵抗性が増すことも考えられます。
また、スプレーの風でトコジラミを吹き飛ばして逃がす可能性があります。
掃除機であれば確実に吸い取り圧力で潰すことができるため、掃除機で処理することをおすすめします。

トコジラミを確実に殺すという意味ではスチームクリーナー等で高温の水蒸気を当てるのも手です。
このタイプの機器は家庭にはあまりありませんが、スチームアイロン等で代用できます。


1.2 巣の処理
トコジラミが目に見えるところにいた場合、近くに巣(コロニー)を作っている可能性が高いです。
発見した場所やその近くを探してみましょう。洋室ならマットレスの裏、隙間、木製ベッドの隙間等、
和室なら布団の裏、畳の裏等が代表的な住処です。

巣を見つけたら、巣に群がるトコジラミを全て掃除機で除去します。
巣には恐らく卵もありますが、卵は粘着して取りにくく、殺虫剤も効かないため、
スチームアイロン等で高温にして殺虫します。
糞(黒い斑点のようなもの)は、水で濡らした後に雑巾等で拭き取ります。

卵や幼生のトコジラミは小さく隙間の奥に潜り込んでいるため、駆除しきれない場合が多いです。
可能であれば、巣となっていたマットレス、ベッド、布団等は廃棄してください。
廃棄できない場合、スチームクリーナーで高温洗浄し、ビニールにくるんでください。


2. トコジラミに噛まれないようにする

トコジラミに餌を与え続けている限り、彼らは繁殖を続けます。
できるだけ吸血されないようにしましょう。

2.1体に付着させない
着る服は毎日洗濯しましょう。その後、高温設定で乾燥機にかけておきましょう。
可能であれば、すべての服をスチームアイロンにかけ、
保管時にはジッパーのついたビニール保管袋に入れておきます。

2.2寝床に侵入させない
トコジラミはつるつるした面は登れません。マットレス・布団をビニールやポリエステル製の
つるつるしたものにしておき、他の家具や壁から離しておくことで、侵入を防ぐことができます。
私は登山用のマットレスと寝袋を持っていたので、それでしばらく寝ていました。
また、寝床外の虫の侵入を防ぐために、ベッドの足にビニールを巻いておいたり、蚊帳を使うのも効果的です。


3. トコジラミの住み着く場所を無くす
まず、家のカーペットなど隅々まで掃除機がけを徹底しておきます。
次に、家にある隙間という隙間に、「バルサンまちぶせスプレー」を噴霧します。
今のところこのスプレーの薬剤ならトコジラミに効くようです。
トコジラミは布や木材の隙間を好みますので、
タンスやクローゼットの中など、隙間の有りそうな箇所を集中して噴霧します。
畳やタイルカーペット等の下には、「虫コロリアース粉剤」を散布します。

薬剤の有効期間は約1ヶ月です。できればこれより短い頻度で再度撒いておくのがおすすめです。


4. トコジラミを部屋に出入りさせない
トコジラミの外部からの侵入を防ぎ、かつ被害を広めないため、
部屋からの出入りをさせない様にする必要があります。
部屋出入口ドアの隙間に両面テープを貼っておくと、逃げ出すトコジラミを捕まえる事ができます。
また、部屋に入る前に自身でカバンや衣服に虫が付着していないか確認します。
バスルームなどで行えば、万が一ついていた場合でも逃げられることがなく対処できます。

現状、トコジラミの多くは海外から持ち込まれたもののようです。
海外に滞在する際、また念のため国内でも安めのホテルに宿泊する際は、
寝床にトコジラミの痕跡が無いか確認しておくと良いでしょう。


Appendix. トコジラミの性質あれこれ
・黒い材質のものを好み、白い材質のものを避ける。
・木や布などの材質を好み、ビニールなどの材質を避ける。
・つるつるした場所は登れない。隙間を好む。
・CO2、熱、体臭がトコジラミを誘引する(ターゲットを認識して吸血しに来る)
・トコジラミは繁殖能力が高く1頭の妊娠メス成虫から2ヶ月で110頭まで繁殖する。
・トコジラミが最も活発に行動するのは深夜2~3時(暗ければ昼間でも活動する)
・卵は殺虫剤では死なない。卵は孵化まで2週間かかる。
 →つまり、掃除機と殺虫剤で駆除しても、卵が処理できていなければ2週間後にまた被害が出る可能性がある。
・孵化した後、5段階の幼虫期間を経て成虫になる。
 幼虫の各段階で脱皮を行ない成長する。吸血できていないと脱皮ができない。
・トコジラミは合成ピレスロイド系殺虫剤に抵抗性を持つ。他の殺虫剤にも抵抗性を持つものが確認されている。


参考文献

[1]奥村防虫科学株式会社 トップページ > トコジラミ(南京虫)駆除事例
http://www.okumura64.co.jp/Bed_Bugs.html

[2]Wikipedia - トコジラミ
https://ja.wikipedia.org/wiki/%E3%83%88%E3%82%B3%E3%82%B8%E3%83%A9%E3%83%9F


  1. 2017/01/02(月) 22:09:44|
  2. 害虫駆除
  3. | トラックバック:0
  4. | コメント:0
前のページ 次のページ