大チョンボ!

ロガーを丸1日、しかも台風が通過する絶好の日、放置してログを観る、という予定がパーになりました。なぜなら

「SDカードが正しく刺さってなかったから」

帰宅する前にちゃんと確認したはずなんだが。

早速SDカードに正しく読み書きできていることをLCD表示するようソースを改良して再度放置することにします。

あー情けない。

実証実験(その1)

実時刻、温度、湿度、気圧がmicroSDカードに記録できるようになったので、丸一日放置して見ることにします。

ちょうど台風が接近しているので気圧が大きく変化するのを観測できるかもしれません。

明後日結果を確認するのが楽しみです。

※明日は出張のためブログの更新はありません。

 

TIPS(3)~USBケーブル

新MacBookがUSB-Cポートを採用、しかもMacBookにはこのポートが一個だけ、というのが最近話題になりました。USB-Cコネクタには裏表がなく、従来の通信に加えて、電源、ディスプレイ、も1つのポートで扱えるのが特徴のようです。

今後出てくる周辺機器はUSB-Cに対応してくるでしょうが、従来仕様も残るでしょう。

従来仕様の周辺機器側にはType-B, mini-B,micro-Bの3つがあり、Arduinoシリーズのボードはこの3つのうちのどれかです。
IMG_2385

 

 

私のPCはType-Aなので、コネクタの裏表がわかるように、しかも周辺機器側3タイプのどれかがわかるように印をつけています。IMG_2384

 

この3本の束を持っていれば、ケーブルどこ行った?と毎回探す無駄な時間が減らせるわけです。

世間でUSB-Cがいくら普及しても、私がマイクロコントローラの標準基板をArduinoシリーズから置き換えない限りこのケーブルの束を常備する(持ち歩く)ことになると思います。

 

 

 

 

 

 

マーケットからの情報

私は生まれついての技術者だからなのか、どうしても商品は自分の技術を市場に広めたい、という視点で商品を考えがちですが、市場からは「こんなものが欲しい、こうでなくては受けない」という意見があるのも事実です。

今日は久々、純粋に「どんな商品が欲しいのか」をヒアリングしてみました。介護系サービスを展開しているお客様です。

1) 身体も頭も相当衰えていて、24H 、365日、完璧なサービスを求めるなら、人手のかかる手厚いサービスが必要だし、既にそういう業者はいる。ここにサービスをサポートできるような機械の入る余地はほぼなさそう。

2) 身体も頭も衰えてはいるものの、1)ほど重篤でない場合、既に大手企業がサービスを始めている。常日頃は機械で見守り、異変を検知したら業者がかけつける、ような。1)ほどではないにしろかなりの出費は覚悟しないといけない。

3) 身体も頭も健康に近いが、親類が遠方にしかいない一人暮らしだったり、病気がちだったりして、1日1回くらいは様子を見たい、見て欲しいケース。うんと簡単なサービス、機械でサポートできる可能性がありそうだし、年金で払えるレベルにすべきだろう。中小零細メーカが参入するならここ。異変があったとき誰が駆けつけるのか?が課題として残るので、ここもクリアにしておかないと機械だけ売れる、わけはない。

あとは、自治体が数時間に一回、一人暮らしの方を見守る仕組みを整えつつあるので、これが完成してしまえば機械に頼らなくてもよくなる可能性はある、とのこと。ということを念頭に置いた商品を企画する必要がある。

ごちゃごちゃしてて複雑なところに切り込んで行くのはなかなか骨の折れる仕事です。

商品企画のステップ

無線屋がなぜ通信機能のないロガーをやっているのかですが、簡単に言えば「ステップバイステップで課題を潰しながら、ニーズを掘り起こしながら、seedsとneedsの接点を探るため」、です。

ネットに繋ぐ方法にはLAN(有線/無線)や携帯網(3G/LTE)があり、どれかに絞って(もしくは全部可能にして)、お客さんに選んでもらう手法もあるでしょう。しかしながら、今までの経験上どれかに決め打ちするとその製品がマッチするマーケットにたどり着くのに時間がかかり、逆に何でもできるようにするとお客さんが反応しないのです。あんたは誰のために仕事をしているのか?という顔をされるのがオチ。

というわけで、まずはネットのついてない状態でヒアリングを重ねて製品を練り上げる手法を取ることにします。センサーネットワーク関連の商品で、売ることに専念できるような完成度の高いものを初めから作るのは至難の業です。

以下、ロガーをやり始めて気づいたこと、考えたことなど記します。

(1) 通信を当面棚上げする関係上、ロガーに実時刻を内蔵する必要があります。いずれインターネットに繋がればセンサーの子機か親機にリアルタイマーを載せなくても大体の時間はわかりますが、せっかく実時刻をわかるようにするので時刻の正確さは売りにできそうです。

(2) 通信機能をつけたとしても、特に無線は途切れることがあるのでログ機能は有効でしょう。今のうちにSDカードを使いこなしておいて損はないと思います。

(3) 大容量のmicroSDが安く手に入るようになってきたので、通信線路が細くても画像等を保存しておく用途に使えそうです。つまりセンサーで何かを検知したら写真を撮って保存しておく(ネットが繋がっていれば写真を撮ったことを通知する)、ような使い方もできるということです。

ここまで。

 

いろいろ課題が見えてきた(1)

家族サービスが終わったあと、事務所にこもってスケッチを書いていました。いろいろハマったのですが、いくつか見えてきたことがあります。

1) 温度、湿度、気圧、をLCD表示するところまではうまくいったのですが、照度センサーを追加しようとすると、Unoではメモリ不足でコンパイルできませんでした。試しにMegaを選択するとコンパイルはできるのですが手元に実機がないので動作するかどうかは後日のお楽しみです。

2) SDカードに結果を書こうとしたらconsoleの表示が乱れ、SDカードのエラーも出て現時点では正常に書けていません。コンパイル時にメモリ不足の警告が出ているので関係があるのかどうか。継続検討です。

===

現時点で動作確認できている仕様

1) 電源投入と同時にLCDに年/月/日、時:分:秒を表示するIMG_2382

2) Keypadのselectボタンを1秒以上長押しすると、温度、湿度、気圧が表示される。
IMG_2383

3) またselectボタンを押すと1)の表示に戻る

今日はここまで

 

ハードウェアを一旦固定する

新しく手に入れたセンサーやシールドの動作を試しているうちにいろいろ問題点が明らかになって、解決する時間が取られてしまいました。

ハードウェアに手を入れるとソフトウェアも影響を受けて、目標に収束していきませんので、この辺で一旦ハードウェアは凍結することにします。

概仕様は、基板を下から

#1 Arduino Uno

#2 grove base shield + bme280(温度、湿度、気圧) + tsl2561(照度)

#3 wireless sd shield (microSDを使う。無線モジュールを載せるのは後日)

#4 data logging shield (RTCを使う。I2Cにしなかったのは3.3V仕様のものがなかったから)

#5 lcd keypad shield (SDだけでは結果がすぐ見えず作業効率が悪いのと、モチベーションが上がらないから少し贅沢することにした)
IMG_2358

 

ハードウェアをfixするのに手こずった点の備忘録

1) I2Cで統一しようとしたbme280, tsl2561,RTCのうち、前者2つが3.3V、最後が5VのためRTCはdata logging shieldのものを使うことにした

2) digital#4ピンがshield#3とshield#5でぶつかっていることがわかり、shield#5の#4ピンを#3ピンに動かした(lcdは最上位層なのでピンを動かすならこっちがベター)

※4/25の時点で気づくべきでした。注意不足。

3) shield#3はICSPという6ピンコネクタをUnoと繋がないといけないので、ICSPコネクタがないシールドと順番を入れ替えた

等々。シールドのメーカがばらばらで、仕様にも統一感がないので回路図を眺めながら、スケッチに手を入れて動作を確認しながら、で時間がかかってしまいました。

来週からはこれをベースにスケッチを作りこんで、実用品になるのか、実地で試していくことにします。

TIPS(2)~I2Cインターフェースの使い方

 

小ネタをひとつ。

使うセンサー類は極力I2Cにする、と書きましたが、複数個を同時に使うときに気をつけないといけない点が、(1) 電源電圧、(2) プルアップ、(3) アドレス、の3つです。

(1) 電源電圧

センサーの動作電圧はいろんなバリエーションがありますが、複数のセンサーを使うことを考えると、電源には5Vと3.3Vを準備するのが普通です。因みにGroveベースシールドは5Vと3.3Vの切替スイッチを持っており1つの基板上の電圧はどちらかに統一することになります。量産を意識して専用基板を起こす際には1.8Vも視野に入れますが、1.8Vでしか動かないセンサーを使うのでない限り、プロトタイプではそこまで考えなくていいでしょう。

(2) プルアップ

I2CはGND以外にclock線とdata線の2本のバスで芋づる式に複数のデバイスをつなぐことができますが、どこかでこの2本をプルアップしておかないといけません。Groveベースシールド上にプルアップ抵抗を載せるパッドはあるのですが、購入時には実装されていません。

また、センサー類には、基板上でプルアップしてあるもの、基板にプルアップ抵抗用のパッドが用意されているもの、などがあり要チェックです。

センサー類をとっかえひっかえしているうちはGroveベースシールドに抵抗は実装しないで、センサー基板上に載っている抵抗をそのまま利用するか、センサー全てに抵抗がない場合は空いているGroveコネクタにプルアップ抵抗を刺すようにした方がベターでしょう。

複数センサーに抵抗が載っている場合は要注意で、一つに絞ったほうがいいと思います(ハンダごてを使って外す、ということ)。

(3) アドレス

センサー毎にアドレスが異なっていないといけません。デバイスのデータシートやサンプルスケッチに記載があるのでチェックしておきましょう。

===

以上を前提に、センサーを間違って刺さない工夫をします。基板に親切に、電圧、プルアップありなし、アドレス、が書かれているものもありますが、そうでないものも多いので、私はセンサー類に書くようにしています。(下写真参照)
IMG_2354_I2C

 

左からBME280(温度・湿度・大気圧センサー)、照度センサー、RTCです。前者2つは3.3V、RTCは5Vなので1つのGroveベースシールド内に混在できません。

お礼&お詫び

〇〇中学の良い子のお友達へ

当社に体験入社したいと問合せ頂いてすっごく嬉しかったです。

でも今の状態で来社してもらってもやってもらえることが思いつかず、がっかりさせる危険を感じたので丁重にお断りしてしまいました。

近い将来、若い人たちに憧れられてご両親に入社を喜んでもらえるような会社にするのでもうちょっと待っててね。

代表 はっとり

ソフトウェア開発の実際(14)

タイトルをそろそろ変えないといけないなあ

さて、温度、湿度、気圧、と来て、照度センサーを入手したので動かしてみました。例によってI2C I/FでGrove base shieldに接続しました。

温度・湿度・気圧センサーはスイッチサイエンスのBME280にGrove標準のケーブル・コネクタを繋いで使っています。IMG_2344

lux

センサー部分を手で翳したり、LEDライトで照らしたりして照度を上げ下げした様子がluxの数字の変化に現れています。これで照度も絶対値で得られるようになりました。

次のステップは、温度、湿度、大気圧、照度のセンサー値全てをSDカードにログすることです。通信するのはその後。