Pythonはバイト列やunicode文字列が認識される


このエントリーをはてなブックマークに追加

参考
http://www.tohoho-web.com/python/types.html

pythonのバージョンは3.4.3を使用

printした時に、コンソールに b とか u とか出てくることがあるけど
これは文字の型を表しているっぽい

例えばシリアル通信の例だと

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# coding:utf-8
import serial
import types
ser = serial.Serial(
port = "/dev/tty.usbserial-AI03CNY6",
baudrate = 9600,
parity = serial.PARITY_NONE,
bytesize = serial.EIGHTBITS,
stopbits = serial.STOPBITS_ONE,
timeout = None,
xonxoff = 0,
rtscts = 0,
)
while True:
print(ser.readline())

だと、コンソール上に

b’$GPRMC,,,V,,,,,,,,N*48\r\n’

みたいに表示される
これを防ぐには、printする時にdecode(‘utf-8’)してやればよい

print(ser.readline().decode(‘utf-8’))


このエントリーをはてなブックマークに追加

Pythonでシリアル通信


このエントリーをはてなブックマークに追加

試しに、GPSモジュールを使ってデータを取得してみる
環境はMac OsX 10.9, Python 3.4.3(Anaconda 2.3.0)
使用したものは

Adafruit Ultimate 66チャンネル10Hz GPSモジュール Version 3
(いまだと秋月電子にもっと安いやつ(GPS受信機キット 1PPS出力付き 「みちびき」対応)があるのでそれでも可)

FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)

その他USBケーブル(A - microB)ジャンパーワイヤーやブレッドボードなどひつようなもの

pySerialをインストールする

1
$ pip install pyserial

GPSをMacと接続する

GPSモジュールとUSBシリアル変換アダプターの接続は

GPSモジュール : USBシリアル変換アダプター
Vin : VCC
GND : GND
TX : RX
RX : TX

となるように接続する

Pythonでシリアル通信
シリアル変換アダプターのジャンパーピンは、今回のGPSだと3.3Vでも5Vでもどちらでも動くのでひとまず3.3Vにしている

あとはUSBケーブルでMacと接続して、USBケーブルのポート名を取得しておく
ポート名の取得は、terminal上で下記コマンドを打つと出てくる

1
2
$ ls /dev/tty.usbserial*
/dev/tty.usbserial-AI03CNY6

上記例だと、AI03CNY6の部分を出てきたやつに変えてやると自分のポート名になる

簡単な例(gpsデータからGPRMCのみ取り出す)

gps.py
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
# coding:utf-8
import serial
import types
import re
ser = serial.Serial(
# Macの場合、 /dev/tty.usbserial-* の形で認識される。WindowsならCOM3とかCOM4とかになるはず
# ls /dev/tty.usbserial* で出てきたポート名を入れること
port = "/dev/tty.usbserial-AI03CNY6",
baudrate = 9600,
parity = serial.PARITY_NONE,
bytesize = serial.EIGHTBITS,
stopbits = serial.STOPBITS_ONE,
timeout = None,
xonxoff = 0,
rtscts = 0,
)
while True:
gpsData = ser.readline().decode('utf-8')
if re.search(r'RMC', gpsData):
print(gpsData.strip())

if文のところを取り除いてあげれば出力されるGPSデータ全てが出力される


このエントリーをはてなブックマークに追加

RaspberryPiバックアップバッテリーUPS PIcoの使い方

ラズパイを使用していて一番困るのが、いきなり電源が落ちた時などに
ファイルシステムが破損する恐れがあること

そこで、突然の電源停止時にも安全に電源を落とせるようなバックアップとしてのデバイスがUPS PIco
ラズベリーパイ / Raspberry Pi 専用 UPS 無停電電源ボードUPS PIco

基本的には下記リンク公式のsimple Setting Guideを参考にやっていけばいける
(PDF注意)
Simple Setting Guide for the UPS PIco

いろいろレジスタなどいじれるがひとまず使ってみる

2016年4月26日現在
使用している環境は

・RaspberryPi2 B
・OS: Raspbian Jessie(2016-02)
・UPS PIco (HAT v1.1)

Read More

pythonのグラフ描画について


このエントリーをはてなブックマークに追加

基本的にはmatplotlibが良い

技術評論社から出ている『データサイエンティスト養成読本 機械学習入門編』を読んでみても、グラフ化の第一選択肢はmatplotlibみたいです

“matplotlibは、Pythonでグラフや図などを描画するためのライブラリです。
データサイエンスの世界で、データを可視化したい時に威力を発揮します”
(特集2 Pythonによる機械学習入門 より引用)

ネットで検索してみても、どうやらmatplotlibが良く使われているような印象を受けます

MATLABユーザのためのPythonグラフ作成ツールmatplotlib入門
matplotlibでリアルタイム描画
matplotlibを使ってPythonでグラフを表示する
matplotlib入門

さらに、派生したものでSeabornという綺麗なグラフが描けるものもあるみたいです
簡単に美しいグラフ描画ができるPythonライブラリSeaborn入門

MacやLinuxなどパソコンをそのまま用いるなら上記のもので
グラフ化を行うのが良いみたい

     

センサーからの値をRaspberryPiなどを用いてグラフ化する場合さらに色々なもの(ライブラリ)が用いられている

センサをラズパイなどで取得する場合はさらに色々なのがあって      

matplotlibを用いたもの

Raspberry piで大気圧と温度を記録してグラフにして他のPCからグラフを見る(メモ)

USBマイクの音量をリアルタイムプロットする on raspberry pi 2 B      

muninを用いたもの

気圧センサBMP085をRaspberryPiに接続しグラフ表示
muninで温度湿度のグラフを表示させたい      

Google Chartsを用いたもの

Rapsberry Piで気温のログ+Google Chartsでグラフ化      

smbusを用いたもの

センサの記録をグラフ化     

pubnubを用いたもの

Raspberry pi + pubnub で温度と湿度のリアルタイムグラフ表示      

dygraphsを用いたもの

RaspberryPiとDS18B20で温度を計ってdygraphsでグラフ化

などが引っかかってきました

外部ライブラリを用いたもの

Node.js + ccchart.js

Raspberry Piとセンサーでヘルス情報の取得(心拍数編)

外部サービスを用いたもの

Home Assistant

メモ:Home Assistant + Raspberry Pi + センサー でホームオートメーションしたい #1

IoT.kyoto VIS + AWS DynamoDB

RaspberryPiでセンサーデータをfluentdを使ってDynamoDBに送って可視化してみよう<上級編>

このあたりどれを使うか見極めたら、さらに調べてみるのがいいと思われる


このエントリーをはてなブックマークに追加

Rubyでwiringpiを使う


このエントリーをはてなブックマークに追加

wiringPiでPWM制御する

まずはLEDでやってみるといい(LEDの明暗コントロール)
下記サイト参考
http://lchikaamazon.hatenablog.com/entry/2013/11/18/191031

用いたもの

RaspberryPi2
LED
抵抗(470Ω)
ジャンパー線2本
その他キーボードなど

以下は、Raspbian Jessieの場合は最初からWiringPiが入っているので
やらなくて大丈夫です(むしろやるとバージョン違いの読み込みエラーとか起きるかも?)

WiringPiが入ってるかどうかはコンソール上で

1
2
3
4
5
6
$ gpio -v
gpio version: 2.32
Copyright (c) 2012-2015 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty
...

みたいなのが出てきたら大丈夫です
入ってなかったらたぶん「そんなコマンドないよ」みたいなのが出てくるはず

————————–ここから


wiringpiを使用するためにはちょっと手順があるので記載
下記も参考に
https://projects.drogon.net/raspberry-pi/wiringpi/download-and-install/

1
2
$ sudo apt-get update
$ sudo apt-get upgrade

なければgit-coreもインストール

1
$ sudo apt-get install git-core

gitからwiringpiをクローン
ディレクトリは適宜自分で作成してても可

1
2
3
4
$ git clone git://git.drogon.net/wiringPi
$ cd wiringPi
$ git pull origin
$ ./build

でビルドする

——————–ここまではRaspbian Jessieの場合はやらなくて大丈夫


次に、RubyでWiringPiを使うためのgemを入れる
下記を参照にした
GPIO control on Raspberry Pi with Ruby

ruby-devを入れておかないとどうもgem installがうまくいかなかったので入れます

1
2
$ sudo apt-get install -y ruby-dev
$ sudo gem install wiringpi

でwiringpiのgemがインストールされます

###スクリプトを書く

wiringpiでのピン番号は、GPIOの番号や順番のピン番号とは異なっているので注意
下記参照
WiringPi Pins

例えば後述のスクリプト例ではWiringPiの1ピンを用いています
これは、GPIO表記だとGPIO18, 普通のピン番号(3.3V出力を1番ピンとして順番に数字をふっているもの)だと12番ピンのことです

下のように配線してあげました
GNDは6番ピンを使ってます

RaspberryPi

実際にLチカをやってみる

下記スクリプトを適当な名前で保存して、sudoをつけて実行すれば明暗点滅Lチカが出来ます
ファイル名は test.rb にしてます
(test.rb)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
require 'wiringpi'
LED = 1
io = WiringPi::GPIO.new
io.soft_pwm_create(LED,0,100)
10.times do
(0..100).each do |x|
io.soft_pwm_write(LED,x)
sleep(0.005)
end
(0..100).each do |x|
io.soft_pwm_write(LED, (100-x))
sleep(0.005)
end
end

WiringPiを扱う時は基本的にはルートユーザーである必要があるらしいので
sudo をつけてrubyを実行してあげます

1
$ sudo ruby test.rb

以上、明暗点滅が出来ました


このエントリーをはてなブックマークに追加

HexoでFATAL-Cannot-set-property-lastIndex-of-undefinedと表示された


このエントリーをはてなブックマークに追加

Hexoを使ってて、突然エラーが発生してHexoコマンドが使えなくなった

エラーを見てみると

1
FATAL Cannot set property 'lastIndex' of undefined

みたいなのが表示されていた

下記リンク先を参考にしてみると
https://github.com/hexojs/hexo/issues/1786
https://github.com/hexojs/hexo/issues/1627

どうやら、_config.yaml内のauto_detectをfalseにしてやればいいみたい

highlightのところでインデントされていると思うので、一部抜粋すると下記のようになるはず

_config.yaml
1
2
3
4
5
highlight:
enable: true
line_number: true
auto_detect: false
tab_replace:

これで解決するが、詳しくはなんなのかわかってないのでもう少し調べないと・・・


このエントリーをはてなブックマークに追加

Hexoで画像を表示させる方法

画像を挿入する

下記ページを参考にした
http://pagent.github.io/2014/12/03/hexo-image/
http://saucer-jp.github.io/2015/04/29/how-to-put-images-in-a-post/

タイトルで日本語を使えるように設定しているので、下記ページを参考に設定しておいてください

hexoで日本語のパーマリンクを見れるようにしよう!

が、大きさなども変更したかったのでさらなる方法も載せてます

Read More