人気ブログランキング | 話題のタグを見る

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



天文
ダム
橋・水門

狛犬・稲荷・盃状穴
動植物
廃キング
レトロ探訪
その他
未分類
リンク
お気に入りブログ
風景のある生活
USS.SHONAN
flarist
日々是平凡(or あれも...
真四角の窓から見た世界
カルイオモイ ~phot...
coolys creek...
バシャコン!アルバム
M k Cool Pic...
日々思うこと~幸せの部品
空っぽの時間
光と共に… Это мо...
ブリキの箱
In The Soup
まぁいいか、とものぐさの日々
Paper crip
答えの無い写真
ふろどうらく
All those......
まぁいいか、とものぐさの...
明暮日の茶ばしら
もやっと&ノラ
視神経的写真術
14番目の月
最新のコメント
ブドウの様な味でした!
by f_s_x at 09:34
ほぼ、マタタビかキウイの..
by afuroyan at 19:50
遅くなりすみません。 ..
by f_s_x at 08:38
お返事ありがとうございま..
by レッド at 05:53
ミニマムライトはLR41..
by f_s_x at 14:29
初めまして、失礼します。..
by レッド at 00:34
氷柱
by 氷柱 at 07:08
足代弘訓 若井研治
by 足代弘訓 竹下明希 at 07:08
星野良悦
by 関越自動車道 at 16:41
関越自動車道
by 石黒敬七 at 16:41
最新のトラックバック
以前の記事
2024年 03月
2024年 02月
2023年 12月
2023年 11月
2023年 09月
2023年 08月
2023年 07月
2023年 06月
2023年 05月
2023年 03月
more...
ライフログ
検索
ファン
記事ランキング
ブログジャンル
画像一覧


USB温度計を作る

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

 それならば、と自作することに。
 Arduinoでセンサーを読んでPCに送るだけだと、ちょっと大げさすぎるので、
これを使うことにした。
USB温度計を作る_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センサーを組み合わせて、作ってみたのがこちら。




USB温度計を作る_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に読み込んで、グラフ化すれば目標達成!


.
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
パワー素子以外、表面実装化は避けられませんね~。
工作は大変ですが…。
<< モミジ 紅葉 >>