なんでも作っちゃう、かも。

Arduino/Make/フィジカルコンピューティング/電子工作あたりで活動しています。スタバの空きカップを使ったスタバカップアンプなど製作。最近はもっぱらArduinoと3Dプリンタの自作に興味があります。

センサーの値が一定量変化したら送信する - Wifi温度湿度計の製作(11)

Posted by arms22 on 2017年02月19日 0  0

温湿度センサー一定量変化があった時のグラフ
ESP8266 with HDC1000 Module Temperature/Humidity Monitor in Kyoto

ThingSpeakへのセンサーデータの送信間隔を一定間隔(5分)から一定量変化があったら送信するように変更しました。温度変化が激しい朝晩は5〜15分間隔、深夜から朝方にかけては温度がほぼ一定なので数時間間隔で送信しているのがわかります。1日のセンサーデータの送信回数が288回から30回〜40回に減って電池の消費量も大幅に減った、かも。これで半年ぐらい保つかな?


スケッチ


DeepSleepに入るとメインメモリのデータは保持されないので、RTCメモリにセンサーデータをバックアップして次回起動時にRTCメモリから前回データを読み出すようにしました。ThingSpeakへのセンサーデータの送信タイミングは温度±0.5度または湿度±2.0%または電源±0.02V変化があった場合としています。起床間隔は従来どおり5分。


床拭きロボットの製作(2)- DCモータの制御

Posted by arms22 on 2017年01月26日 0  0



DCモータを使うのは初めてなのでとりあえず回して感触を掴んでみることにします。タクトスイッチを押すと低速・中速・高速と速度を変えてDCモータが回転するスケッチを書きました。analogWrite関数を使ってモータドライバにPWM波形を入力し速度を調整しています。PWM周波数が732Hzと低く可聴域にあるのでモータからヴーという音が聞こえる。



クイックルワイパーを装備して実際にフローリングを走らせています。本体が軽いせいか思った以上に速度がでています。モータのトルクが足りるか心配だったのですが問題なさそう。2つのモータの回転数は合わせていないので、斜めに走っているのが分かる。


回路図


床拭きロボット_モータテスト回路図
今回使用するモータは静止電流が2.4A@6Vと少々電流多めなので、モータドライバ(以下、TB6612FNG)の出力を並列にして1つのモータに入力して電流を稼ぐようにしました。TB6612FNGの出力電流の定格は1つのモータにつき最大1Aですが、Peakは3.2A(たぶん2つの出力合わせて)なので回転始めの一瞬だけなら大丈夫と踏んでいます。DCモータは回転数が上がると電流が減るので、実際は並列とかいらんかもしれない。


TB6612FNGの制御ロジック

TB6612FNG H-SW制御ファンクション

IN1/IN2で回転方向を指定して、PWMで回転速度を制御します。IN1←H、IN2←LとしてPWMに矩形波を入力するとCW→ショートブレーキ→CW→ショートブレーキ…を繰り返すします。

このロジック表を見るとPWMをH固定にして、IN1またIN2にPWM波形を入力しても制御できるように見える。そうすると制御ピンを1本減らせるんだけど、PWMをH固定にする作例を探してみたけど見つからなかったので、無難に3本使って制御することする。


スケッチ





参考記事


DCモータードライバの使い方
https://trac.switch-science.com/wiki/DCMotorDriver


実験で学ぶDCモータのマイコン制御術 (メカトロ・シリーズ)
萩野 弘司 井桁 健一郎
CQ出版
売り上げランキング: 492,730


床拭きロボットの製作(1)

Posted by arms22 on 2016年12月30日 0  0

IMGP1354

DCモータのフィードバック制御をやりたくなったので、その実験用に床拭きロボットを作ることにしました。現状、木のフレームにブレッドボードとやっつけ感満載ですが、ある程度仕様が固まってきたらフレームは3Dプリンタで作って、専用の基板も起こしたいと思います。

IMGP1361

メインのマイコンモジュールはAdafruit Feather M0 Bluefruit LE、モータドライバはPololu TB6612FNGデュアルモータドライバを採用しました。TB6612FNGの出力は2つありますが、並列にして電流を稼ぐつもり。

IMGP1356

Pololuの直径25mmのエンコーダ付きギアードモータにタミヤのスポーツタイヤを付けています。バッテリーはニッケル水素直列6本の7.2Vを予定。ゆくゆくはラジコン用のリチウムイオンバッテリーに置き換えたい。

IMGP1365

スポーツタイヤ付属のホイールハブがPololuのモータシャフトに合わなかったので3Dプリンタでホイールハブを作りました。タイヤとホイールも3Dプリンタで作れるといいな。


部品リスト




ThingSpeakにセンサーデータを送ってグラフに表示する - Wifi温度湿度計の製作(10)

Posted by arms22 on 2016年11月04日 0  0

ThingSpeak-温度湿度グラフ
ESP8266 with HDC1000 Module Temperature/Humidity Monitor in Kyoto - ThingSpeak

さていよいよ大詰め、ThingSpeakにセンサーデータを送ってグラフに表示させるよ!


ThingSpeakって何ぞ?


ThingSpeakはIoT向けのクラウドデータサービスです。デバイスから送られた来たデータを貯めて、データを解析したりグラフに表示したり、データをトリガーに何らかのアクション(ツイートするとか)を起こしたりできます。Arduino用のライブラリがあるので簡単にデータを送ることができます。


アカウントの登録

まずはThingSpeakのページを開いて新しいアカウントを作成しましょう。Sign UpをクリックしてユーザID、メールアドレス、タイムゾーン、パスワードを入力しCreate Accountボタンをクリック。


チャンネルの作成


チャンネル作成

次にチャンネルを作成します。チャンネルには8種類のデータ・場所・状態を登録することができます。場所やデバイス毎にチャンネルを分けて作成するとよいでしょう。ここでは4つ(温度・湿度・露点温度・Vcc電圧)のセンサーデータを書き込むためのチャンネルを作成します。

  1. メニューバーの Channels > MyChannels をクリック。
  2. New Channel ボタンをクリック。
  3. 以下の情報を入力。
    Name(チャンネルの名前)
    Field1 Temperature(フィード1の名前)
    Field2 Humidity(フィード2の名前)
    Field3 Dew Point(フィード3の名前)
    Field4 Vcc(フィード4の名前)
    Make Public(公開しても良いならチェック)
  4. Save Channel ボタンをクリック


チャンネルIDと書き込み用のAPIキーの取得


チャンネルIDとAPIキー

センサーデータの書き込みにはチャンネルIDと書き込み用のAPIキーが必要です。メニューバーの Channels > MyChannels をクリックして、作成したチャンネルを開きます。Channel ID と書かれた6桁の数字がチャンネルID、API Keys をクリックして Write API Key と書かれた英数字の文字列が書き込み用のAPIキーです。


Arduino用ライブラリのインストール


ThingSpeakライブラリ

ThingSpeakにセンサーデータを書き込む為のArduino用ライブラリをインストールします。ライブラリはArduino IDEのライブラリマネージャからインストールします。Arduino IDEを起動しライブラリマネージャを開きます(スケッチ > ライブラリをインクルード > ライブラリを管理)。検索フィルターに“thingspeak”を入力し、"ThingSpeak by MathWorks"を選んでインストールボタンを押します。


スケッチ

5分毎にセンサーデータをThingSpeakに送るスケッチです。Wifi設定、ネットワーク設定、ThingSpeak設定は環境に合わせて変更してください。


処理の流れは次のとおりです。
  1. Vcc電圧を取得
  2. Vcc電圧が3.05V未満ならバッテリーの過放電を防ぐために無限スリープに入る
  3. 温度・湿度データを取得
  4. 露点温度を計算
  5. Wifi接続(リトライ3回まで)
  6. ThingSpeakに接続
  7. センサーデータを送信
  8. 5分間ディープスリープに入る
  9. 1に戻る

また消費電流を減らすため下記の対策を入れています。基本方針は「余計な電波を出さない・動作時間は短く」です。
  • ステーションモードに設定
    初期モードはステーション+APモード。APモードではSSIDを通知するためにビーコンを送信しています。このビーコンを送信しないようステーションモードに変更しています。
  • LightSleepモードに設定
    データシートによるとModemSleepよりLightSleepのほうが消費電流が少ないのでこのモードに設定しています。
  • 固定IPアドレス設定
    DHCPのやり取りが不要になるので余計な通信が減って接続時間が短縮されます。

ThingSpeak接続時にIP直指定にするとThingSpeakへの接続時間が短くなるはずですが今回は試していません。


グラフを表示する

メニューバーの Channels > MyChannels から先ほど作成したチャンネルを開くと、ThingSpeakに送ったデータが自動的にグラフとして表示されます。グラフ右上の鉛筆マークを押すとグラフをカスタマイズすることができます。


動作時間

1000mAの電池で約20日動作しました。1000mAで30日を目標にしていたのですがなかなか厳しいです。データを溜めてまとめて送るなど対策が必要です。ただThingSpeakは15秒に1回しかAPIを呼び出せないのでまとめて送るとその分動作時間が延びてより多く電力を消費してしまいます。これについてはまた次回。




ワイヤレスマウスの修理

Posted by arms22 on 2016年11月04日 0  0

無線マウスを修理

壊れて動かなくなっていたワイヤレスマウス(型番:BSMOW07BW)を修理しました。写真中央のダイオードがグラグラしていて接触不良を起こしていました。子供が「新幹線、新幹線」といって遊んでいる時に何度も落としていたので半田が割れてしまったのでしょう。ハンダ面のランドが剥がれていたので部品面からはんだづけし直したところ正常に動くようになりました。

黒いワイヤは電池ボックスのマイナス端子につながっています。このダイオードは電池の逆挿入防止用だと思いますがなぜか立てて実装されていました。後から無理やり実装した感じがします。

無線(2.4GHz)光学式マウス 5ボタン/横スクロールタイプ | バッファロー 
http://buffalo.jp/products/catalog/supply/input/mouse/wireless-optical/bsmow07/

HDC1000温湿度センサーモジュールから温度と湿度を読み取る - Wifi温度湿度計の製作(9)

Posted by arms22 on 2016年10月15日 0  0

IMGP1291
さて今回は秋月電子の「HDC1000温湿度センサーモジュール」から温度と湿度を周期的に読み取って、シリアルポートに出力する方法を紹介しまします。ついでにESP-WROOM-02のVCC電圧も監視しちゃうよ。


HDC1000温湿度センサーモジュールの接続


秋月電子:HDC1000温湿度センサーモジュールピン配置図
HDC1000温湿度センサーモジュールのピン配置図

ESP-WROOM-02 vs HDC1000温湿度センサーモジュール
3.3V -> +V(1)
IO4 -> SDA(2)
IO5 -> SCL(3)
GND -> GND(5)

SDA/SCLのプルアップ抵抗はHDC1000温湿度センサーモジュール実装されているので追加不要です。RDYは今回使わないので未接続でOKです。ESP-WROOM-02を連続して動かしていると結構熱を持つので、センサーモジュールはできるだけESP-WROOM-02から離れた位置に実装するのが良いでしょう。


ライブラリのインストール

Adafruitが配布しているHDC1000用のライブラリをインストールします。

  1. Arduino IDEのライブラリマネージャー(ツール > ライブラリをインクルード > ライブラリを管理)を開く
  2. 検索フィルターに“hdc1000”を入力
  3. Adafruit_HDC1000_Libraryを選んでインストール


スケッチ

温度と湿度を読み出して露点温度を計算し温度・湿度・露点温度ついでにVcc電圧をシリアルポートに出力し、15秒間ディープスリープに入ります。以降、これを繰り返します。ESP.getVcc()でVcc電圧を読み取っています。単位はmV(3.3Vの場合、3300)なので1000で割ってシリアルに出力しています。Vcc電圧の読み取りには少しお作法が必要でsetup関数の前に以下の文を追加する必要があります。

ADC_MODE(ADC_VCC);



シリアルモニターを開いて、ボーレートを115200に設定すると以下のように表示されます。
※実際には下記表示とともにESP-WROOM-02が起動時に出力するメッセージが文字化けして表示されます。

Temperature: 23.33 Humidity: 49.27 Dew Point: 12.07 Vcc: 3.20


参考URL

HDC1000使用 温湿度センサーモジュール: 組立キット 秋月電子通商 電子部品 ネット通販
http://akizukidenshi.com/catalog/g/gM-08775/


ESPr Developer(ESP-WROOM-02開発ボード)
スイッチサイエンス
売り上げランキング: 85,465

Wifi温度湿度計の製作(8) - ソフトウェア開発環境を準備する。

Posted by arms22 on 2016年10月03日 2  0

Wifi温度湿度計のソフトウェア開発環境の構築手順について解説します。

Arduino IDEのインストール


ArduinoのウェブサイトでArduino IDEの最新バージョンをダウンロードします(記事執筆時点で1.6.12が最新)。

Arduino - Software
https://www.arduino.cc/en/Main/Software


ボードマネージャから Arduino core for ESP8266 WiFi chip をインストール

  • Arduino IDEを起動し初期設定を開きます(Arduino > Preferences…)
  • 「追加のボードマネージャのURL」に次のURLを入力します
    http://arduino.esp8266.com/stable/package_esp8266com_index.json
  • メニューからボードマネージャを開いて(ツール > ボード > ボードマネージャ…)、”esp8266"を検索します
  • 見つかったesp8266を選択してインストールボタンを押します


ボードの設定

インストールが完了したらボードメニュー(ツール > ボード)から”Generic ESP8266 Module”を選択。ツールメニューに幾つかの項目が追加されるので下記のように設定します。

  • ボード: Generic ESP8266 Module
  • Flash Mode: QIO
  • Flash Frequency: 40MHz
  • CPU Frequency: 80MHz
  • Flash Size: 4M (3M SPIFFS)
  • Debug port: なし
  • Rest Method: ck
  • Upload Speed: 115200
  • シリアルポート:Wifi温度湿度計基板と接続されているポートを指定してください


USBシリアル変換モジュールの接続

IMGP1289
ESP-WROOM-02 vs USBシリアル変換モジュール
TXD --> RXD
RXD <-- TXD
GND <-> GND


スケッチの書き込み

void setup() {
 Serial.begin(115200);
 Serial.println("Hello esp8266 world!");
 ESP.deepSleep(30 * 1000 * 1000);
}

void loop() {
}

  1. 新しいスケッチ(ファイル > 新規ファイル)に上記コードを貼り付けます。
  2. MODEキーを押したままRSTキーを解除してESP-WROOM-02をUARTダウンロードモードで起動させます。
  3. スケッチの書き込みボタンを押します。

error: espcomm_upload_mem failed

と表示された場合、うまくUARTダウンロードモードで起動していないと考えられるので上記書き込み手順を再度実施してください。Arduino Unoと比べてコンパイル・書き込みに時間がかかります。

シリアルモニタを開いてボーレートを115200に設定します。30秒毎に下記メッセージがモニタ画面に表示されれば書き込み成功です。
Hello esp8266 world!



参考リンク

ESP-WROOM-02開発ボードをArduino IDEで開発する方法 - スイッチサイエンス
http://trac.switch-science.com/wiki/esp_dev_arduino_ide

Installation - ESP8266 Arduino Core
http://esp8266.github.io/Arduino/versions/2.3.0/doc/installing.html


ESPr Developer(ESP-WROOM-02開発ボード)
スイッチサイエンス
売り上げランキング: 85,465

Wifi温度湿度計の基板と部品のセットを頒布します。

Posted by arms22 on 2016年09月19日 0  0

2016/9/28
完売しました。


Wifi温湿度センサー基板実装済み

Wifi温度湿度計の基板と部品のセット、専用ケースを付けて送料込みで¥2,500で頒布します。全部で8セット、先着順で頒布します。完売しました。QFNパッケージまたチップ部品のはんだづけの練習をしたい方、リフローオーブンを作ったんだけど練習台が欲しい方、電池駆動のIoTデバイスを作りたい方におすすめです。


主な特徴

  • ESP-WROOM-02搭載
  • LM3671搭載(2MHz、600mA 降圧型 DC/DCコンバータ)
  • BQ24070搭載(リチウムイオンバッテリー充電およびシステムパワーパス管理)
  • リチウムイオン電池用PHコネクタ搭載
  • システム電源ON/OFFスイッチ搭載
  • リセットスイッチ・動作モード切替スイッチ搭載

※※※ご注意※※※
  • QFNパッケージ(リードなし)の部品を使用しています。
  • ピンヘッダは付属しません。
  • 温湿度センサーモジュールは付属しません。
  • リチウムイオン電池は付属しません。
  • MicroUSBは充電専用です。プログラムの書き込みにはUSBシリアル変換モジュールが必要です。


申し込み方法

メール(arms22 at gmail.com)またはtwitterのDMで「Wifi温度湿度計基板頒布希望」と書いて住所・氏名をお知らせください。お支払い方法は折り返し連絡します。頒布品はスマートレター(日本郵政)で送ります。QFNパッケージのはんだづけ済み基板をご希望の場合はその旨お知らせください。


頒布内容


IMGP1284
基板、部品、専用ケースが付きます。

IMGP1287
チップ抵抗・チップコンデンサは部品表に貼付けているので実装時に迷いません!


USBシリアル変換モジュール

プログラムの書き込みにはUSBシリアル変換モジュールが必要です。3.3V動作のモジュールを使用してください。

超小型USBシリアル変換モジュール: 半導体 秋月電子通商 電子部品 ネット通販
http://akizukidenshi.com/catalog/g/gM-08461/

FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き) - スイッチサイエンス
https://www.switch-science.com/catalog/1032/

ESP-WROOM-02とUSBシリアル変換モジュールの接続は下記写真を参考にしてください。プログラム書き込み時の電源はMicroUSBまたはリチウムイオンバッテリーから供給してください。

IMGP1289
ESP-WROOM-02 vs USBシリアル変換モジュール
TXD --> RXD
RXD <-- TXD
GND <-> GND


リチウムイオン電池

リチウムイオン電池は付属していません。900mAh以上の1セルのリチウムイオンまたはリチウムポリマー電池を別途お買い求めください。基板は電池がなくても動作します。

リチウムイオン電池900mAh - スイッチサイエンス
https://www.switch-science.com/catalog/2073/

適合ハウジング:PHR-2
http://www.jst-mfg.com/product/pdf/jpn/PH.pdf


実装時の注意点


image
USB接続による電源投入時、ESP-WROOM-02がうまく起動しない場合があります。RSTの立ち上がりを遅らせるため、0.01uFのチップコンデンサをRSTスイッチの端子と端子の間にはんだづけしてください。

image
バッテリー未接続時、充電完了・再充電を繰り返すのでR10/R11のチップ抵抗は実装しないでください。

image
D1/D2のシルクがある方がLEDのカソードです。

image
U4U2のICの向きに注意してください。はんだづけはこちらの動画を参考にしてください。


寸法図


Wifi温度湿度計_寸法図


回路図と部品表

Wifi温度湿度計_回路図_rev1.pdf
Wifi温度湿度計_部品表_rev1.pdf

QFNパッケージをリフローオーブンを使わず簡単にはんだづけする方法

Posted by arms22 on 2016年09月14日 0  0

3.5mm x 4.5mmの小型QFNパッケージをホットエアーやリフローオーブンを使わず簡単にはんだづけする方法をご紹介します。IC下面にサーマルパッドがあるIC限定ですが、位置決めの精度をほとんど必要としない方法なのでお勧めです。


下ごしらえ



Wifi温度湿度計基板表 Wifi温度湿度計基板裏

写真のようにICの直下に大きめのスルーホールを設けて基板の表と裏を接続します。この写真は極端な例だけど、少し大きめのスルーホール(0.5mm〜)を数個配置するだけでも良いです。


はんだづけ




まずはIC下面のサーマルパッドをはんだづけします。

  1. フラックスをフットプリント全体に塗布します。
  2. 基板表のサーマルランド(基板側のパターン)にはんだを薄く塗り広げます。
  3. 再度フラックスを塗布します。
  4. 向きを間違えないようにICを載せます。位置決めはそこそこでOK。
  5. 基板の裏側から大スルーホールを通してサーマルランドを20〜30秒加熱します。
  6. はんだの表面張力でICが自動的に最適な位置に移動します。
  7. ICが最適な位置に来たらコテを離します。




サーマルパッドのはんだづけでICの位置は決まっているので、残りの端子をはんだづけします。

  1. 4辺にフラックスを塗布します。
  2. コテ先にはんだを少し盛って辺に対して垂直にコテをあてて、端子一つずつはんだづけします。
  3. 上記を4辺繰り返します。


ブリッジした場合の対処法
フラックスを塗布、コテ先のはんだを拭ってブリッジにコテをあてる。コテ先にはんだが移動してブリッジが解消されます。


白光 ダイヤル式温度制御はんだこて FX600
白光 (2012-01-18)
売り上げランキング: 115


白光(HAKKO) こて台 633-01
白光
売り上げランキング: 222


Wifi温度湿度計の製作(7) - 基板に部品を実装したよ。

Posted by arms22 on 2016年09月05日 0  0

Wifi温湿度センサー基板実装済み

うまくはんだづけできるか心配していたQFN(真ん中の黒いIC)もわりと簡単に終わって、すべての部品を実装しました。特に大きな問題もなく動いているようです。ただ電池電圧の監視用にバッテリー端子に追加しておいた分圧回路が原因で、電池未接続時に充電完了→再充電を高速で繰り返すような動作をしてたので、分圧回路の抵抗は取り外しています(R10)。

左端の凸型の基板は秋月電子の温湿度センサーモジュールです。さてそろそろソフト作らないとなぁ。。センサーデータのサーバどうすっかなぁ。

HDC1000使用 温湿度センサーモジュール: 組立キット 秋月電子通商 電子部品 ネット通販
http://akizukidenshi.com/catalog/g/gM-08775/

このカテゴリーに該当する記事はありません。