記事一覧

Arduinoでグラフィック液晶

2013.04.14

aitendoでグラフィック液晶2種類を買いました
FSTN液晶モジュール(128x64/SPI)[C128X64SPI-12P-S2]
1.8インチ液晶withキャリーボード[2P-T18003T01-PCB]
どちらもSPIインターフェイスで5本のピンでArduinoからコントロールできるものですが・・・
C128X64SPIの方は半田付けの後で断線してしまい、使い物にならなくなりました
ファイル 43-1.jpg
半田付けの後、フィルムのワイヤが基板から浮いて切れた模様。テープで押さえておけば良かったです・・・

ファイル 43-2.jpg
1.8インチ液晶の方が、やや半田付けがやりやすかったです
グラフィックコントローラはST7735Bを使っています。
早速、Arduino用のライブラリをダウンロードして動かそうと思い、「TFT液晶モジュール(1.8/128x160/SPI)[T18003T01]」のピンアサインを参考にしようとしたところ、どうもSPIインターフェイスと違うラベルが表示されています。
同じST7735を使っている別の商品にピンの回路図があったので、何とか分かりました。

ST7735用にはAdafruit用のライブラリが使えます
ST7735ハード用ライブラリ
グラフィック用ライブラリ
の2つをlibraries以下にコピーし、Adafruit-ST7735-Library-masterのexample内のデモを動かします
ファイル 43-3.jpg

意外にあっさり動きました

上記デモプログラム用にピンを読み替えたものです
ファイル 43-4.jpg

Arduinoのピン出力を3Vに落とすために、100Ωと330Ωの抵抗で分圧しました
ファイル 43-5.png

にほんブログ村 その他趣味ブログ 電子工作へ

タグ:Arduino グラフィック LCD

環境ロガーの製作(その1)

2013.04.11

先日ArduinoとFoneraを接続して、データを無線LAN経由で飛ばすことができる環境を作りました。
その後、ブレッドボードにセンサをあれこれ刺して、定期的にデータを取得できるようにしました。
ファイル 42-1.jpg
写真下の長いブレッドボードが実験用回路+USB変換で、右上のFoneraと通信をしています。一方、SoftwareSerialライブラリを使用して、デバッグ用メッセージを左上のArduinoに出力できるようにもしています。
今の所センサーとして

をつなぎ、それぞれのデータを5分おきにサーバに送信します。
また、Fonera自体がNTPにより正確な時刻合わせをすることができるので、1時間おきにArduinoからFoneraに時刻の問合せを行い、自分自身の時計を修正する仕様にもしました。
ファイル 42-3.png
(エクセルでピンの接続を検討するシートを作ってみました。回路図を書く手前の工程で結構重宝しています。)
とりあず、レンタルサーバにcgiを仕込んでデータを蓄積し、jQuesryとグラフ表示プラグイン「jQPlot」を使って簡易的に大気圧の変化を表示できるようにしてみました。
ファイル 42-2.png
インターネット上のサーバに一式置いているので、外出先からもスマホ等でリアルタイムにデータを確認することができます。
回路図、スケッチ等はいずれ整理して公開したいと思います。

にほんブログ村 その他趣味ブログ 電子工作へ

タグ:Arduino センサー 無線LAN jQuery

Arduinoで無線LAN

2013.03.31

着々と環境ロガー的なモノを作ろうと画策している今日この頃ですが。。。
データの保存先としてよく紹介されているのはSDカードやEEPROMですが、ピンの制約やデータの取り出しの不便さ等考えると、外部のWebサーバ等にデータを投げておいて、後はサーバ側で処理させるという手があるかな、と考えています。
で、Aurduino+Wifiで情報を漁っていたらArduino / The Cheapest WiFi Projectというのを見つけました。
一時期少し流行った「Fon」という無線ルータをハックしてDD-WRTというファームウエアに書き換えると比較的自由に使えるようになるので、Arduinoとシリアル接続してサーバにデータを飛ばそうというものです。
Arduinoにはイーサーネットシールドというのもありますが、結構な値段がします。Foneraなら使わなくなったのが家にも一台転がってるので、こいつを使うことにしました。
ファイル 41-1.jpg
改造やファーム導入の手順は、FON まとめ wiki に詳しく書かれているので、ほぼその通りに実行。ただし、Foneraとパソコンの接続にはArduinoを仲介してTeratermで操作します。arduino @ ウィキ参照。
DD-WRTが動くようになったら「イーサネットコンバータ化」というのをやります。これはFoneraを家の無線ルータのクライアントとして動作させて外部のインターネットに出ていけるようにするためです。
ファイル 41-2.jpg
これで、Arduino-(シリアル)-Fonera-(無線)-ルータ-(有線)-インターネット、へと接続できる環境が出来ました。
ついでにNTPの設定をしておくと、Foneraを結構正確な時計の代わりに使えると思います(サーバはntp.nict.jp)。

ただし、今後の実装に向けていくつか注意点があるのでメモしておきます。

  • Foneraのシリアル接続は基本的に115200bpsである
    stty -F /dev/tts/0 9600
    でスピードを変えられるが、リブートすると元に戻ってしまう
  • 共用レンタルサーバの場合、接続はtelnetではなくwgetで行う
    wget -q -O - "http://www.hoge.com/xxx.cgi?xx=yy
    でファイルは残らない

シリアルの速度問題はちょっとやっかいです。
こちらのアンサーによれば、SoftSerialのスピードは38400bpsが限界とのこと。
Foneraとの接続はTXとRX(ピン0と1)を使う必要がありますが、このピンはIDEからの書き込みにも使われているため、スケッチをアップロードする時にはFoneraから外す必要があります。
また、Serial.print()でデバッグ出力をPCで確認するのにも妨げになります。解決法として考えているのは、

  • ArduinoとFoneraはTX/RXで接続し、デバッグ用には別のピンで別のArduinoにSoftSerial出力する
  • デバッグ出力そのものをFoneraのtelnetを使ってPCに吐き出す
    こちらの情報が参考になりそう

といったところです。まだまだ先は長そうです。
にほんブログ村 その他趣味ブログ 電子工作へ

タグ:Arduino センサー

Arduinoで焦電型赤外線センサー(その2)

2013.03.30

前回焦電センサと格闘してあえなく敗退したのですが、その後追加の部品を導入して何とかモノになりそうな気配になってきました。
ファイル 40-1.jpg
追加で購入したのは「超高感度焦電センサー用レンズ」といもので、焦電センサにかぶせて感度をアップします。
このレンズが無いとセンサの前数センチくらいで手をかざした時には反応しますが、それ以上離れると反応を捕えられなくなります。
レンズ装着後はこのような簡易な回路でも、2~3メートル離れた所を人が横切ったのも捕えられるようになりました。
ファイル 40-2.png
センサの前で人が動くと電圧が大きく振れているのが分かります。
あと、どこかでセンサ出力端子からGNDに落とす抵抗を大きくすれば出力の振れが大きくなるという情報があったので抵抗値を1Mに変更しました。
ファイル 40-3.png
サンプルのスケッチを公開しますので、ご自由にお使いください。
以下、一部解説します。

void loop()
{
static int save[100];
static int ix = 0;
save[ix] = analogRead(0);
メインのループでは1ミリ秒ごとにアナログ値を読み取り、テーブルにデータを溜めていきます。


// データが100個溜まったら実行
if (ix > 99){
int v1 = 0, v2 = 0;
for (int i = 0; i < 50; i++){
v1 += save[i];
}
for (int i = 50; i < 100; i++){
v2 += save[i];
}
// 前の50個と後ろ50個の合計を比較し、基準値以上でライトをオン
int v3 = abs(v2 - v1);
int flg = v3 > SENSE ? 1: 0;
light(flg);
ix = 0;


}
ix++;
delay(1);
}
データが100個溜まったところで前半50個と後半50個の合計値を比較し、差分が基準値を越えたら反応ありとみなします。

void light(int f){
static unsigned long light_on;
static byte light_stat = 0;
if (f){
if (!light_stat) {
light_on = millis();
}
light_stat = 1;
} else {
// センス0でもON_TIME経過するまでオン状態を維持
if (millis() - light_on > ON_TIME) {
light_stat = 0;
}
}
digitalWrite(13, light_stat);
}
ライトを一定時間点けるルーチンでは、ライトの状態を保持し、オンになった場合はその時間(millis)を保持しておき、オフの指令が来ても一定時間が過ぎるまではオン状態を維持するようにしています。

このような簡単な回路+スケッチですが、セキュリティ用途などシビアな反応が求められるものでなければ(多少の誤作動が許されるなら)、結構使えるのではないかと思います。
今後いろんなセンサと組み合わせたロガーを作ろうと思っていて、LCDディスプレイのオン・オフにこの仕組みを持ち込もうと考えています。

にほんブログ村 その他趣味ブログ 電子工作へ

タグ:Arduino センサー AKE-1

Arduinoで焦電型赤外線センサーと格闘

2013.03.24

ファイル 39-1.jpg
随分昔に買ったまま眠っていた「焦電型赤外線センサー」を何とかArduinodeで使えないものかと、この土日あれやこれやと弄くってみました
以下のページを参考にさせていただきました

二日間の格闘の結果、人体には反応しているらしいが傾向がつかめず、やっぱりそれなりの回路が必要と改めて感じました
今日の反省

  • オペアンプはそれなりのものが必要。LM358N(5個100円)と電解ではないコンデンサと部品をケチってはちゃんとした結果が出ない
  • やっぱりフレネルレンズは必要?

ファイル 39-2.png
簡易オシロで計測したところ、センサに手をかざした箇所ではグラフが下に振れています。が、無反応時の電圧も結構振れています。これをソフト的にどう扱うか?が課題です
いっそキットを買ってしますという手も無くはないのですが。。。

ファイル 39-3.png
この程度の簡易回路では無理があったのでしょうか

にほんブログ村 その他趣味ブログ 電子工作へ

タグ:Arduino センサー

ページ移動