読者です 読者をやめる 読者になる 読者になる

気ままにIoTメモ

Iotに関わること関わらないこと備忘録

人口ピラミッドの推移(3)

データ可視化 就活 考え事

前回は人口ピラミッドの推移に各世代の名前を追加しました。
今回は時代の変化が少し分かるような情報を加えています。

www.youtube.com

ざっくりとバブル景気から崩壊して不景気になり第三次ベビーブームは起こらずに子供の人口が低迷して現在までが40年間です。 40年間というとだいたい学生(20才)〜定年(60歳)までの期間ですね。

また、コンピュータが発達と同時にサービス業が増えてあらゆる仕事の内容が大きく変わったことを考えると、企業を選ぶ時に考慮する”安定”という基準は数十年という期間で考えると当てにならないように思えてきます。

安定志向を象徴するものとして「終身雇用を望む」という事があるようですが、企業ですら数十年後どうなるか分からないのに終身雇用が叶うかは分かりませんね。
ちなみに50代がゆでガエル世代と言われてしまっている事を考えると終身雇用が必ずしも良いとは限らないようです。

全文表示 | 50代男性は「ゆでガエル世代」 現実遠ざけ、気づけば崖っぷち : J-CAST会社ウォッチ

若手の「安定志向」の正体 3ページ目 | 人材・組織開発の最新記事(コラム・調査など) | リクルートマネジメントソリューションズ

団塊ジュニア - Wikipedia

パーソナルコンピュータ史 - Wikipedia

にいがた暮らしIoTアイデアコンテストを終えて

にいがた暮らしIoTアイデアコンテスト Raspberry Pi

2/9にコンテストが開催され、なんとか完成させたデバイスを持って発表してきました。 結果は残念ながら参加賞で終わってしまいましたが他の学生のアイデアや物が見れて良かったです。 来年も何かやる ということを伺ったので都合が合えば挑戦してみようと思います。

Webアプリを作るにあたって都合よくAPIが公開されたためLINEによる通知も追加したのですが、 同じネタでLINE BOT AWARDSにもエントリーできそうなのでこちらにも挑戦してみます。

LINE BOT AWARDS

製作したデバイスのPVを作りましたので良かったら御覧ください。

www.youtube.com

圧力センサ(2)

にいがた暮らしIoTアイデアコンテスト Raspberry Pi プログラミング

引き続きFSRのメモ。

f:id:htn_hs:20170121215445j:plain
重り(75g)×2+台(68g)=218g 重りには釣りに使われるオモリを使っています。

重りを置いてからの抵抗値の変化を測定しました。

測定は250Hzで分圧値をArduinoのAD変換(10bit)により測定し、測定値から抵抗値を算出しました。
回路は圧力センサ(1)と同様の回路を使っています。

f:id:htn_hs:20170121220040p:plain
0.5秒もすれば十分収束するようです。

以下横軸対数
f:id:htn_hs:20170121215806p:plain
さらに長期的な変化を測定した所、0.5秒経過した後もじんわりと抵抗値が変化し続けてしまいました。
1秒の時点では1900Ωだった抵抗値が100秒の時点では1650Ωにまで変化してします。
感覚としては時定数が二段階ある感じ。

今回は0.5秒経過すれば収束、として重量を測定します。

f:id:htn_hs:20170121221025j:plain
重り(75g)×6+台(68g)=518g

今度はMCP3425で測定し、約4000Ωに収束することを確認しました。

抵抗値は力に反比例するので、
K/4000[Ω]=518[g]
K = 2072000

F[g] = 2072000/R[Ω]

75gの重りを一つずつ増やした結果
f:id:htn_hs:20170121224122p:plain
台の68g分を差し引いた値を出力しています。下の数字ははかりで測定した重さ。

±50gぐらいの精度で測定出来ました。
置く場所によっても値は上下するので、あくまで参考程度の測定しか出来ませんが、コンテストで使うモノがあるか・ないかを判断する程度には十分です。

iot_lab/10_fsr at master · hsgwa/iot_lab · GitHub

圧力センサ(1)

にいがた暮らしIoTアイデアコンテスト

秋月で購入した圧力センサ(FSR:force-sensitive resistor)を使ったのでメモ。

抵抗値[Ω]∝1/力[F]という性質のあるセンサです。
日本語ではあまり資料は無いですが、英語で調べれば詳しい資料が多く出てきます。

センサ回路の製作 - 気ままにIoTメモ
以前の時点では組み込める形ではなかったのですが、丁度よいADコンバータがあったので簡単な回路に落ち着きました。

f:id:htn_hs:20170121161115j:plain
非反転増幅回路などを使っても良かったのですが、分圧であれば抵抗値が0~∞であっても出力電圧は0~2Vに収まるため、MCP3425で測定するには楽。
FSRを電源側に配置することにより、加えられている力が小さい(抵抗値が大きい)時に0V付近が出力され、MCP3425のPGAを8倍にできます。

センサ単体では面積が少ないため工夫します。

f:id:htn_hs:20170121161522j:plain
四つ角にセンサを配置し、並列接続します。 並列接続すれば一つのセンサとして取り扱えるのがミソ。

f:id:htn_hs:20170121161548j:plain
100均で買ってきた半球形のゴムクッションを使い、

f:id:htn_hs:20170121161619j:plain
厚めのアクリル(5mm)に取り付けることで、アクリル上であればセンサのみに力が加わるようになります。

f:id:htn_hs:20170121161711j:plain
乗せた様子はこのような感じ。

これで広い面積の荷重を測定することができるようになるはず。

I2C制御16bit ADC MCP3425(3)

前回に引き続き、ゲイン設定を自由にしてくれるプログラムを書いたのでメモ。

var Adc = require('./adc');

adc = new Adc({gain:1, accuracy:16});


adc.start();

var Vmax = [
    2.048,
    1.024,
    0.512,
    0.256
]

var gain = 8;

adc.on('complete', function(v){
    var idx = Math.log2(gain);

    if(gain > 1 && Vmax[idx] * 0.95 < Math.abs(v)) {
        gain /= 2;
    } else if(gain < 8 && Vmax[idx+1] * 0.95 > Math.abs(v)) {
        gain *= 2;
    } else {
        // 適切なゲインの測定結果
        console.log('gain:' + gain + '    ' + v);
    }

    adc.updateConfig({gain:gain});
    adc.start();
});

console.logの行ではゲインが適切に変えられた値を得ることが出来ます。

iot_lab/app.js at master · hsgwa/iot_lab · GitHub

I2C制御16bit ADC MCP3425(2)

にいがた暮らしIoTアイデアコンテスト Raspberry Pi Node.js プログラミング

I2C制御16bit ADCであるMCP3425用のライブラリを作ったので、使い方のメモ。

まずはモジュールのインストール

npm install i2c
npm install q
var Adc = require('./adc');

// adc = new Adc({gain:1, accuracy:16});

adc.updateConfig({gain:8});

adc.start();
adc.on('complete', function(v){
    console.log(v + '[V]');
    adc.start();
});

I2Cのアドレスは0x68、ゲイン1倍、16bit精度がデフォルトになっています。 アドレスを変更したい時には直接ライブラリ内のアドレスを変える必要あり。 ワンショットの測定ですが、adc.on内で再度スタートさせて無限ループになっています。

gainは1/2/4/8、accuracyは12/14/16のいずれかに設定してください。

f:id:htn_hs:20170115153524p:plain

ゲインを8倍にすることで細かい電圧の測定ができます。

iot_lab/08_mcp3425 at master · hsgwa/iot_lab · GitHub

I2C制御16bit ADC MCP3425(1)

Raspberry Pi にいがた暮らしIoTアイデアコンテスト プログラミング

秋月に1個250円で売っているI2C制御16bit ADCのMCP3425に関するメモ。

特徴

  • 2.7V〜5.5V動作
  • 精度により測定周波数が変わる(16bit精度では15 SPS)
  • 内部に2.048V±0.05%(Vref)の基準電圧
  • ×1・×4・×8のPGA
  • Vin = (Vin+) - (Vin-)の 差動入力が測定可能
  • 測定範囲は-Vref <= Vin * PGA <= Vref

回路は端子の名前通りに繋ぐだけです。

f:id:htn_hs:20170115133548j:plain

今回はV-端子をGNDに接地させて、シングルエンド入力で使いました。
動作を見るだけなので今回だけパスコンは省略。

npm install q
npm install i2c
var Q = require('q');
var i2c = require('i2c');
var address = 0x68;
var wire = new i2c(address, {device: '/dev/i2c-1'});

Q.delay(10)
    .then(function(){
        wire.writeByte(0x88, function(err){
        })
    })
     .delay(70)
     .then(function(){
         wire.read(3, function(err, res){
             var int16value = res[0] << 8 | res[1];
             var voltage = 0.0000625 * int16value;
             console.log(int16value.toString(16) + ' -> ' + voltage + '[V]');
             console.log(res[2].toString(16));
         });
     });

16bit精度で測定するために、ワンショットの測定になっています。PGAは1倍にしたため、+2.048Vまでが測定範囲です。70msのディレイは1/15SPS=66mから計算しています。

f:id:htn_hs:20170115132555p:plain

テスタでの測定値は1.230Vだったので正しく動作しているようです。