おもしろいもの、いろいろ
by f_s_x
カテゴリ
全体
写真
カメラ・レンズ
赤外写真
デジタル画像
コンピューター
電気・電子



天文
ダム
橋・水門

狛犬・稲荷・盃状穴
動植物
廃キング
その他
未分類
リンク
お気に入りブログ
風景のある生活
USS.SHONAN
flarist
日々是平凡(or あれも...
真四角の窓から見た世界
カルイオモイ ~phot...
coolys creek...
ひょうたん*カメラ。
バシャコン!アルバム
M k Cool Pic...
日々思うこと~幸せの部品
空っぽの時間
光と共に… Это мо...
ブリキの箱
In The Soup
まぁいいか、とものぐさの日々
Paper crip
答えの無い写真
ふろどうらく
All those......
まぁいいか、とものぐさの...
明暮日の茶ばしら
もやっと&ノラ
視神経的写真術
14番目の月
最新のコメント
今年もよろしくお願いしま..
by FSX at 20:29
大小にかかわらず、シルエ..
by afuroyan at 12:18
体や尻尾に縞模様を表す彫..
by f_s_x at 12:24
ナルホド・・・どう見ても..
by afuroyan at 19:08
パワー素子以外、表面実装..
by f_s_x at 09:42
三端子、サーマルパットを..
by afuroyan at 23:23
色が濃くはっきりと見えて..
by f_s_x at 11:05
きれいに分かれて見えますね。
by afuroyan at 07:26
この時は150反射の方は..
by f_s_x at 10:33
公共天文台は三鷹光器のカ..
by afuroyan at 20:50
最新のトラックバック
ミルフィーユ・カラコ
from coolys creek
belomo/belomo
from なるほどキーワード
belomo/belomo
from なるほどキーワード
21世紀星空早見ガイド―..
from 双眼鏡のニコンとケンコーとビ..
鎌倉で赤外撮影
from 赤外線の彩り~α100で赤外..
慶びの日
from 日々思うこと~幸せの部品
After the ty..
from カルイオモイ ~photog..
以前の記事
2018年 01月
2017年 12月
2017年 11月
2017年 10月
2017年 09月
2017年 08月
2017年 07月
2017年 06月
2017年 05月
2017年 04月
more...
ライフログ
検索
ファン
記事ランキング
ブログジャンル
画像一覧


USB温度計を作る

 以前Arduinoでデータロガーシールドを使った温度等の記録システムを作ったが、
より簡単にPCサーバーでデータを取得したいと考え、USB接続タイプの温度計を探した。
 しかし思ったよりも種類が少なく、唯一安価なメモリースティックタイプの「TEMPer」というのがあったが、今は売り切れたりしている。

 それならば、と自作することに。
 Arduinoでセンサーを読んでPCに送るだけだと、ちょっと大げさすぎるので、
これを使うことにした。
c0026142_12132816.jpg
 切手サイズのマイコンボード、「Digispark」である。(写真は互換機)
CPUに8ピンのAVRマイコン「ATTiny85」を使用し、凸型の基板の出っ張りをそのままUSBジャックにしている。基板上で大きな位置を占めてるのが電源レギュレータの78M05で、隣のCPUの方が小さい!レギュレータはUSB以外の外部電源を使用する場合しか使わないので、USBに差して使う前提ならば不要なのでもっと小型にできそうなのに…。
 また、マイクロUSBコネクタタイプの(左)も存在し、用途に応じて選択できる。互換機がaitendoで「ATtiny85モジュール [M8520SU-UAM]」「ATtiny85モジュール [M8520SU-MCUM]」として500円で手に入る。
互換機は基板上のLEDがやはり高輝度の赤だが、aitendo M8520SU-MCUMの一部にはオレンジ色のもあった。

 このDigispark互換機とDHT11センサーを組み合わせて、作ってみたのがこちら。




c0026142_12134374.jpg

 Digisparkについて調べると、通常のArduinoとは色々違いがある事がわかった。
 一番の違いは、USB通信をCPUがソフトウェアで実現していること。これによって部品点数を大幅に減らし、小型で安価を実現している。
 他にはArduino UNOのCPU ATMega328よりもメモリーやI/Oが少ない事。センサーや通信のライブラリーもメモリー容量に気を付ける必要がある。
 CPUパッケージのピン数が少ないので、利用できるI/Oは電源のVCC,GNDを除くと6本(PB0~PB5)のみ。そのうちPB3,PB4の2本はUSB通信に使われるため、残りは4本だけ。PB1にはLEDが繋がっている。

 センサーは湿度も計れるDHT11を選択。精度はそれほどでもないが、安価なので練習がてらに使ってみようかと。センサーのデータ端子はサンプル同様にPB2に接続。

 Windows7のPCでArduinoIDEにDigisparkの設定をし、スケッチを書いてATtiny85モジュールをUSBに差すのだが、PCがDigisparkを認識してくれない。「Unknown Device」となってしまう。
WEBで見つかった例のようにしてもダメ。既に多数のUSBドライバーがインストール済みなのが問題か?

 一旦Arduino Nano互換機でセンサーを試してみる。
こちらはすんなりと動いたので、とりあえずセンサーは問題なさそう。

 気を取り直して、あまり使ってない別のWindows7のPCで環境を作り、ドライバーを入れて試すと、今度はArduino IDEが認識し書き込む事ができた!
 書き込みにはDigispark特有の作法があり、DigisparkをPCから外してからIDEの書き込みボタンを押し、IDEウィンドウ下部に「Plug in device now...(will timeout in 60 seconds)」のメッセージが表示されたら60秒以内にUSBに差し込むと書き込みが開始され、完了すると「Micronucleus done. Thank you!」と表示される。
 開発中に何度もDigisparkをPCから抜き差しするのは面倒なので、USB延長ケーブルやUSBスイッチがあると便利。

 スケッチはUSB通信をしたいので、まずDigispark用のスケッチ例から「DigisparkUSB」→「Echo」を選んでコンパイルし書き込み。書き込みはできたようだ。
PCとUSBでやりとりするために、DigisparkExampleProgramsにあるDigisparkExamplePrograms-master\Python\DigiUSB\windows\monitor.exeを起動。
でもまたもやDigisparkを認識してくれない!!

さらに、
DigisparkExamplePrograms-master\C++\DigiUSB Windows Driverからドライバーをインストール。
やっとの事で、monitor.exeでDigisparkとUSB通信できた。

 本題に戻り、温度測定のスケッチにはメモリーの少ないATTiny85を考慮し、
TinyWireM.h TinyDHT.h DigiUSB.h の各ライブラリを使用。
 Arduino Nanoでやったようにシリアル出力をDigiUSBに置き換えたがうまく動作しなかった。
それで先ほどのスケッチ例のEchoをベースに改造し、改行を受信したらDHT11センサーを読み込んで値を返すように記述してみたら、なんとか測定値をmonitor.exeに送ることができた!!!

 PC側でDigiUSBと通信するには、Rubyのdigiusb GEMやPythonのpyusbが使えるらしい。

 試しにPythonでUSBを読み込むスクリプトを書き、Digisparkから温湿度を取得できた。
でもスケッチがまずいのか、何度か通信していると最初の文字が欠けたりする。
本当はまだスケッチのDigiUSBの扱い方が良くないのだろうけど、とりあえずスケッチをいじって頭にスペースを入れるように修正。
Python側でスペースを除いた値をファイルに出力するようにした。

 ここまで来れば、あとはファイルに出力された値をmuninに読み込んで、グラフ化すれば目標達成!


.
[PR]
by f_s_x | 2017-11-25 12:21 | コンピューター | Comments(2)
Commented by afuroyan at 2017-12-01 23:23
三端子、サーマルパットを背負うから四端子になっている辺りが、
現代的な実装なんだなぁと思う次第<(_~_)>
Commented by f_s_x at 2017-12-09 09:42
パワー素子以外、表面実装化は避けられませんね~。
工作は大変ですが…。
<< モミジ 紅葉 >>