無料ブログはココログ

2015年12月 8日 (火)

RASPBERRYPI応用研究(4) wiringPi導入

ハードウェア部分の制作に先立ってソフトウェア側を一部検討したい。

今回のシステムではセンサー信号を入力していろいろな処理をするという事でI/Oからの入力をラズパイ側に取り込む必要がある。

合わせてリレーをOn/Offする為に出力ポートをコントロールする事も必要である。

入力としては

センサー1~4の4点とトグルスイッチ1点の計5点

出力はとりあえずリレーの2点だが、残りのポートは出力ポートとして事にする。

RaspberryPiではGPIOというらしい。

GPIOは兼用ピンも含めると結構あり21個あり今回のシステムでは十分間に合う。

コネクタ1とコネクタ5に跨ってあるが、今回はコネクタ1のGPIOを使う事にする。

ネットや参考本ではPythonを使ったサンプルが多いようだが、いまさらPythonを習得する気にもならないのでCで書くことにした。

C言語でGPIOにアクセスする方法はいくつかあるが、wiringPiという便利なライブラリーがあるようなので此れを活用することで色々面倒な部分を省くことができそうだ。

$ git clone git://git.drogon.net/wiringPi

Cloning into 'wiringPi'...
remote: Counting objects: 929, done.
remote: Compressing objects: 100% (759/759), done.
remote: Total 929 (delta 661), reused 218 (delta 142)
Receiving objects: 100% (929/929), 290.00 KiB, done.
Resolving deltas: 100% (661/661), done.

$ cd wiringPi

~/wiringPi $ ./build

wiringPi Build script
=====================
WiringPi Library
[UnInstall]
[Compile] wiringPi.c
[Compile] wiringSerial.c
[Compile] piHiPri.c
[Compile] wiringShift.c
[Compile] piThread.c
[Compile] wiringPiSPI.c
[Compile] wiringPiI2C.c
[Compile] softPwm.c
[Compile] softTone.c
[Compile] mcp23008.c
[Compile] mcp23016.c
[Compile] mcp23017.c
[Compile] mcp23s08.c
[Compile] mcp23s17.c
[Compile] sr595.c
[Compile] pcf8574.c
[Compile] pcf8591.c
[Compile] mcp3002.c
[Compile] mcp4802.c
[Compile] mcp3004.c
[Compile] mcp3422.c
[Compile] max31855.c
[Compile] max5322.c
[Compile] sn3218.c
[Compile] drcSerial.c
[Compile] wpiExtensions.c
[Link (Dynamic)]
[Install Headers]
[Install Dynamic Lib]
WiringPi Devices Library
[UnInstall]
[Compile] ds1302.c
[Compile] gertboard.c
[Compile] maxdetect.c
[Compile] piNes.c
[Compile] piFace.c
[Compile] lcd128x64.c
[Compile] lcd.c
[Compile] piGlow.c
[Link (Dynamic)]
[Install Headers]
[Install Dynamic Lib]
GPIO Utility
[Compile] readall.c
[Compile] pins.c
[Compile] gpio.c
[Link]
[Install]
All Done.
NOTE: To compile programs with wiringPi, you need to add:
-lwiringPi
to your compile line(s) To use the Gertboard, MaxDetect, etc.
code (the devLib), you need to also add:
-lwiringPiDev
to your compile line(s).

これでソフトウェア開発の準備は大体整いました。
wiringPiのおかげで面倒なコーディングは無しにGPIOの制御ができるようになりました。
wiringPiで使用する関数などは

  • WiringPiの初期化 wiringPiSetupGpio();
  • GPIOピンのモード設定 pinMode([GPIOピン番号], [モード]);
    [モード]にはOUTPUT or INPUT
  • GPIOピンの出力 digitalWrite([GPIOピン名番号], [値]);
    [値]に0か1を指定。
  • GPIOピンの入力 digitalRead([GPIOピン名番号]);
    戻り値 GPIOピンの現在の値。

これらの関数で事足りそうです。

本当はセンサーの取り込みは割り込みなどを使ったほうが良いと思うが今回は簡単に出来るポーリング方式にした。
チップのマニュアルなど参照する気にもならないし・・・

割り込み処理は次のステップでって事にしておきます。

それとメールはCだと面倒なのでperlで書いてsystem関数で起動する感じで逃げる。

とりあえずメール送信のperlスクリプトを作ってみました。
恥ずかしいですがソースは

use strict;
use 5.10.0;
use Encode;
#my %h;
$h{System_coding} = 'UTF-8';
$h{SMTP_SERVER} = "127.0.0.1";
$h{MAIL_FROM} = 'from@testtest.com';
$h{to} = $ARGV[0] || 'to@testtest.com';
$h{subject} = "Mail Test";
$h{txt} = <<TEXT;
人感センサーが侵入検知しました。
(センサー番号1)
TEXT
#
# test program
#&send_mail(\%h);

#メールの送信

sub send_mail {
my $h = shift;
my $txt = $h->{txt};
Encode::from_to($txt, $h->{System_coding}, 'iso-2022-jp');

# ヘッダ生成
my $subject = $h->{subject};
Encode::from_to($subject, $h->{System_coding}, 'iso-2022-jp');
Encode::encode('MIME-Header-ISO_2022_JP', $subject);
if (!ref($h->{to})) { $h->{to} = [ $h->{to} ] }
my $to = join(',', @{$h->{to}});
my $header =<<TEXT;
From: $h->{MAIL_FROM}
To: $to
Subject: $subject
Mime-Version: 1.0
Content-Type: text/plain; charset = "ISO-2022-JP"
Content-Trensfer-Encoding: 7bit
TEXT

# SMTP
require Net::SMTP;
my $smtp = Net::SMTP->new($h->{SMTP_SERVER});
$smtp->mail( $h->{MAIL_FROM} );
$smtp->to( @{ $h->{to} } );
$smtp->data();
$smtp->datasend($header);
$smtp->datasend($txt);
$smtp->dataend();
$smtp->quit;
}

こんな感じ。
今回はここまで。

本編からそれますがRaspberryPiの電源について

ラズパイを楽しんでいる皆さんは電源どうしてますか?
適当なUSBアダプタなど使っている方が多いのでしょうか。

私も一時期はスマフォの充電器やらいろいろ使用していましたが、最近ではモバイルバッテリーで済ましています。
10400mAhのものですが結構持つもので1日つけっぱなしでも充電が切れない。
コンセント要らずで快適です。

モバイルバッテリーを余らしている人にはお勧めです。

2015年12月 6日 (日)

Lumix-G7で動画撮影テスト

仕事で地元から車で30分くらいのところにある長瀞を通る予定だったので少し早めに家を出てLumixG7での動作撮影テストを行った。
一応比較のためにNikon1V1でもパンケーキレンズ10mm/f2.8を取り付けて撮影。
時間が無く適当に撮ったので設定など細かくしていないが参考に。

http://k2-y.com:8001/clipbucket/watch_video.php?v=2GRN2OG5GD9G

https://www.youtube.com/watch?v=vzTmXZ3Iw7g

2015年12月 3日 (木)

ポラロイド PolaSma買ってみた

コストコでPolaroidのスマフォが安価で売っていたので買ってみた。ただ安いだけでは買うことはなかったと思うがDualSIMというやつが気になって10000円だったこともあり買ってしまった。

polasma

結論から言うと私的にはイマイチです。

イマイチポイント①

質感がチープ。
iPhoneに慣れてしまっているのと軽すぎるのとでだいぶチープに感じます。
画面はそこそこ綺麗だが電源ボタンや音量ボタンは安っぽい。
まぁ安いんですが。

イマイチポイント②

タッチの反応が鈍い。
これもiPhoneに慣れてしまっているのが災いしてかサクサク感ゼロ。
軽いタッチでは無反応、なんか強く押さないと反応しない感じ。
感圧式なのか?と思うくらい。
スペックは調べてないですが、実は感圧式なのかも。

イマイチポイント③

バッテリー意外にもたない。
これもiPhone6plusがバッテリー長持ちだけに触っているとすぐなくなるような印象です。

イマイチポイント④

初めから液晶の保護シートが貼ってあるのですがゴミがちょいちょい入っている。
貼らずに付属品にしてくれたほうが良いかも。
自分はあまり気にしませんが、気になる人は気になるでしょう。

グーなポイント①

大体こんな感じですがandroidスマフォとしては普通に使えますので子供に持たせるとか動けば良いくらいの感覚の人は十分役目を果たすかも。

グーなポイント②

SIMフリー、DualSIM。
MVNOなど使えば安価にスマホが持てます。

こんな感じ。

肝心のDualSIMは想像していたのと違って同時2枚のSIMが使えるものかと思っていたら切り替えが必要。
リサーチ不足でしたが自分的には、音声はSIM1、データはSIM2みたいに切り替え無しで使えるのかと思っていたので、切り替えが面倒で一気に使う気が無くなってしまいました。
切り替えに10秒くらいかかるのがちょっと使いづらい。
画面が馬鹿でかいとかなら電子書籍リーダーなどに転用できますが使い道がなさそう。
子供にあげてiPadを返してもらおうかな。

«Clipbucket2.8をインストールするも挫折

2016年1月
          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
31