ラベル 電子工作 の投稿を表示しています。 すべての投稿を表示
ラベル 電子工作 の投稿を表示しています。 すべての投稿を表示

2016/11/21

ひねリモコン(Ver.1.2)

Arduinoと赤外線について調べていたら、赤外線リモコン用のライブラリを見つけてしまいました。
前回は、Arduino+ブレッドボードでプロトタイプを作っただけでしたので、今回はライブラリを利用したプログラムの修正と、ボード作成を行ってみました。

・プログラム
今回は IRremote.h を利用して、受信と送信部分を簡略化してみました。
それと合わせて、以下の機能を追加しました。

  • 記録モードで、リモコンのコードを4つ保存できるようにしました
  • 左右に回転させた時に加え、上下に回転させた時に保存されたコードを送信します
修正したプログラムは、Arduino+ブレッドボードにて動作を確認できました。
私は上下の動作を音量に登録しましたが、結構便利かもしれません。

・ハードウェア
機能追加に合わせて、以下の修正をしました。

  • 赤外線レシーバの追加
  • 赤外線LEDの距離を伸ばすため、増幅回路を追加
プロトタイプで動作しましたので、Eagle 7.7 を使い回路図入力からボード設計&発注までを行いました。
参考にしたサイトは、ツール・ラボさんのサイトです。丁寧に説明されているので、順番に進めていけばボードが完成します。
1点、作成したガーバーデータをgerbvで確認したところ、ドリルのレイヤーだけ大きくなっていたので、調べたところOutput Deviceを「EXCELLON」から「EXCELLON_24」に修正する事で、他のレイヤーと同じサイズになりました。

プリント基板製造は調べてみると、ELECROWがかなり安いというブログを幾つもみましたので、私も同じELECROWで依頼してみました。
配線はEagleのオートルータだし、デザインルールのチェックもELECROWからダウンロードしてチェックもできるので、大丈夫とは思うのですが無事プリント基板ができてくるのかドキドキです!

2014/03/17

プリンターでプリント基板

まずはリンクから。
「プリント基板をインクジェットプリンタで印刷できる東大発のベンチャーAgIC、Kickstarterで資金獲得に成功」
http://ascii.jp/elem/000/000/875/875897/

プリント基板を自宅で作ろうと思うと、エッチング液の後処理を考えてしまい、ついつい手を引いて
しまっていたのですが、プリンタで印刷できるとなると一気にハードルが下がるように思えます。
とりあえず、資金は調達できそうなので、是非事業として立ち上がって欲しいものです。

2013/03/01

Arduino & RaspberryPi

トランジスタ技術3月号は、「1万円で作るMy実験室」という特集でArduinoを使って
色々なテスターやロガーを作っているのですが、 モータードライブが気になったので
購入しました。基本、渋いテスターや試験機を作っているところが流石トラ技です。(^-^)
とはいえ、Arduinoをベースに作成というのが時代ってやつでしょうか。。。
時を同じくして(という訳ではないですが)日経Linux3月号ではRaspberryPiの
ハードウェア制御をしている記事があったので思わず購入。
前々からRaspberryPiは欲しい欲しいと思っていたのですが、 やっぱりこれは買って
おかないとマズいなと改めて思いました。
ArduinoもRaspberryPiも2000円台から3000円台なので、酔った勢いでなくともポチる
勇気は出てきます。\(^o^)/

そろそろRaspberryPi買わないとなぁと思いながら、ネットをふらふらしていたら、
海外でRaspberrryPiでFM送信しているという強者がいるということが分かり、
RaspberryPiの更なる魅力を見つけてしまいました。
現在、円安により若干値段が上がっていますが、これは購入せねば。。。

2012/12/26

気圧インフォメーションボード

ボードの名称を色々考えたのですが、天気予報というにはちょっとおこがましい気も
したので、気圧の変化をお知らせする装置としました。。。
さて、どんな物を作ったのかの説明です。
・15分ごとに現在の気圧と2時間前の気圧を比較します。
・時間あたりの気圧の変化量を計算したら、五段階に分けて3つのLEDを光らせます。
(●が点灯です)
 ●○○:急速に気圧上昇
 ●●○:緩やかに気圧上昇
 ○●○:気圧変化無し
 ○●●:緩やかに気圧下降
 ○○●:急速に気圧下降
・シリアルからデータも出力されます。
以上の機能になります。
それを二週間動作させてみました。
センサーの誤差や風の影響などもあるため、ある瞬間LEDを見ても、そこまで信頼できる情報になるかと言うと少々疑問です。(^^;;
これを作った目的は、夏の爆弾低気圧が事前に分からないか、というところからスタート
したので、テストとしてはあと半年くらい続けないといけないかな、、、と思ってます。
仮に売り物にするなら、もっとユーザーインターフェイスやパッケージを考えないと
いけませんね…

2012/12/13

ArduinoのプログラムをATmega328Pへ

前回、ATmega328PとAVR ISP MkIIの接続ができない、と書いて終わりましたが、
その後確認したところ、ピンとコネクタの間に配線が挟まっていたことが分かりました。orz
配線をコネクタの邪魔にならないようにシッカリよけたら、ISPがATmegaを認識して
くれました。
ISPもつながったので、Arduinoで作ったプログラムをATmega328Pに書き込むの
ですが、以下の手順で成功しました。
念のため、AVRのマイコンはプログラムを格納する領域と、ピンやブートの番地設定を
するヒューズビットと呼ばれる領域があります。
今回はプログラムの書込みとヒューズビットの設定を行いました。
(1) プログラムの書込み
  pressuer.cpp.hexというのがArduinoのコンパイルで生成されたHEXファイルです。

 $ avrdude -c avrispmkII -P usb -p m328p -U flash:w:pressuer.cpp.hex:i

(2) ヒューズビットの設定
  リンクのページで書き込むヒューズビットの計算をしてくれます。
  http://www.engbedded.com/fusecalc
  また、日本語でヒューズビットの説明をしてくれるサイトです。
  http://ja9ttt.blogspot.jp/2011/05/avr-atmaga8x-fuse-bit-memo.html
  以上で設定値が分かりましたら、avrdudeで書込みを行います。
  (私のボードでは16MHz X'TALを入れています)

 $ avrdude -c avrispmkII -P usb -p m328p -U lfuse:w:0xcf:m -U hfuse:w:0xd9:m -U efuse:w:0x07:m

以上の設定で、オリジナルのボードでプログラムが動作しているようです。

2012/12/11

Weather forecast board

天気予報ボードプロトタイプ。零号機です。
ハンダ付けが完了しました。
予想できましたが、とてもシンプル。(^^;)

下のピンにAVR ISP MkIIを接続してプログラムを焼き込むのですが、
その下準備が必要でした。
Macではavrdudeというコマンドを使うのですが、インストールする前に以下のパッケージ
をインストールする必要があります。
・Command Line Tools for Xcode: makeコマンドなどが入っています
  参考サイト http://d.hatena.ne.jp/deepfolte/20120225/1330129212
・Macports: BSDのようなportコマンドが使えるようになります
  参考サイト http://shokai.org/blog/archives/5557
・portコマンドを使いlibusb, avrdudeをインストールします。
  $ sudo port install libusb avrdude
以上でavrdudeも動作できるので、接続!、、、、
あら?ATMega328Pと接続しない。。。


2012/11/29

回路図入力

今まで、WindowsPCで回路図入力する時は、Bschというフリーソフトを使っていたのですが、Macでは標準サポートがされていませんでした。
(ただし、Qtを利用したBschがあり、それをリコンパイルすれば動作するそうです。)
そのため、回路図入力ツールを探した所、中々これは!というツールが見つからず、
色々考えたあげく少し先の事も考えてEagleを使ってみる事にしました。
ただ、Eagleは基本商用ソフトでフリーで使うとなると、入力する回路規模に制限が発生します。
もちろん、そんな大規模回路を入力する事も無いので、Eagleをダウンロード、手順に沿ってインストールが無事終了。
試しにArduino無しの大気圧測定お天気お知らせシステム(大袈裟だな。。。)の回路図を入力してみました。
デスクトップ画像の上のウィンドウは回路図、下のウィンドウは、、、はい、基板レイアウトのウィンドウです!
できるのか?(^^)

2012/11/13

トランジスタ技術12月号

本屋でなにげなく特集を見ると、無線通信モジュールであるXBeeとセンサーを組み合わせる特集。
今月より節制しようと決意していたのだけど、今後の必要となる技術の勉強だと理由をつけて購入。(^^;)
数種類のセンサーが紹介されていたのだけど、意外とI2CやSPIでつながってくれるセンサーがある。
センサーが安ければ手が出しやすいのだけど。。。幾ら位するのだろう。
とりあえず、今センサーを買う事は無いけれど、どう組み合わせてどんなことができるかを、あーだこーだ考える(妄想する)ネタができた。(^^)

2012/11/10

arduino: 大気圧センサ

個人的事情で、ほぼ停滞していましたが、ようやく時間を作る事ができました。
単に大気圧を測っただけでは面白くないので、Freescale社のMPL115を使った気圧からの
天気予測の機能を追加しました。
ついでに単体動作しても予測を知らせる事ができるように、LEDを3つ付けました。
もちろん、シリアルで気圧値と気圧の変位度合いが出力されます。
結果としては、まずまずで1時間くらいは値がばらつきますが、その後は落ち着いているようにみえます。
画面のダンプと下のソースは、デバッグ用に配列を表示したり無駄な部分が多いです。(^^;)
配列もいらないと思うので、修正しようかと思ってます。
次はarduinoは別の遊びに使いたいので、ATMega328P単体で実現しようかと思います。

#include <Wire.h>
#include <MPL115A2.h>
int loopflag = 0; //周回フラグ
float prss[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0}; //気圧データ保存用配列
int tcount = 0; //3時間計
void setup()
{
  MPL115A2.begin();
  MPL115A2.shutdown();
  Serial.begin(9600);
  pinMode(2,OUTPUT); //high pressure
  pinMode(3,OUTPUT); //low pressure
  pinMode(4,OUTPUT); //stable
}
void loop()
{
  MPL115A2.ReadSensor();
  MPL115A2.shutdown();
  float sec_total = 0, min_total = 0;

  for (int j=0; j < 15; j++){
   for (int i=0; i < 15; i++){
    sec_total = sec_total + MPL115A2.GetPressure();
    delay(1000);
   }
   float avepress_1min = (sec_total / 15) * 10; // average + kPa->hPa trans.
   min_total = min_total + avepress_1min;
   sec_total = 0;
   delay(45000);
  }
  prss[tcount] = min_total / 15;
  Serial.print("tcnt = ");
  Serial.print(tcount);
  Serial.print(", pr[0]=");
  Serial.print(prss[0]);
  Serial.print(", pr[1]=");
  Serial.print(prss[1]);
  Serial.print(", pr[2]=");
  Serial.print(prss[2]);
  Serial.print(", pr[3]=");
  Serial.print(prss[3]);
  Serial.print(", pr[4]=");
  Serial.print(prss[4]);
  Serial.print(", pr[5]=");
  Serial.print(prss[5]);
  Serial.print(", pr[6]=");
  Serial.print(prss[6]);
   Serial.print(", pr[7]=");
  Serial.print(prss[7]);
  Serial.print(", pr[8]=");
  Serial.print(prss[8]);
  Serial.print(", pr[9]=");
  Serial.print(prss[9]);
  Serial.print(", pr[10]=");
  Serial.print(prss[10]);
  Serial.print(", pr[11]=");
  Serial.print(prss[11]);
  Serial.print(", pr[12]=");
  Serial.println(prss[12]);

  if ( tcount > 0 ){
    float dpdt = (prss[tcount] - prss[0]) / (tcount * (loopflag + 0.25) * 0.635);
    Serial.print("pressure, ");
    Serial.print(prss[tcount]);
    Serial.print(", dP/dt, ");
    Serial.println(dpdt);
// LED on/off
    if(2.5 <= dpdt){
      digitalWrite(2,HIGH);
      digitalWrite(3,LOW);
      digitalWrite(4,LOW);
    }
    if(0.5 < dpdt && dpdt < 2.5){
      digitalWrite(2,HIGH);
      digitalWrite(3,LOW);
      digitalWrite(4,HIGH);
    }
    if(-0.5 <= dpdt && dpdt <= 0.5){
      digitalWrite(2,LOW);
      digitalWrite(3,LOW);
      digitalWrite(4,HIGH);
    }
    if(-2.5 < dpdt && dpdt < -0.5){
      digitalWrite(2,LOW);
      digitalWrite(3,HIGH);
      digitalWrite(4,HIGH);
    }
    if(dpdt <= -2.5){
      digitalWrite(2,LOW);
      digitalWrite(3,HIGH);
      digitalWrite(4,LOW);
    }
   
//
    if(tcount == 8 ){
      prss[0] = prss[4];
    }
 
    if(tcount >= 12 ){ //tcount initialise
      loopflag = 1;
      tcount = 1;
    }else{
      tcount++;
    }
  }else{
    tcount++;
  }
}

2012/09/25

Arduino:気圧センサの読み取り

2週間も経ってしまいました。。。
センサのレジスタを読めた!と喜んでいたのですが、24時間のログ取りテストを
している中で、どうにも値が変化しなかったため、ソフトが悪いのかセンサ周りの
回路が悪いのかと、週に数時間カット&トライを繰り返していました。
試していく中で、そもそもセンサの値がI2Cのバッファに値が入ってこないことがわかり、
今日新しいセンサを入手して試したところ、あっさりと動作。。。
センサが壊れていた、ということですね。(^^;)
この2週間は、一体何だったんだ...orz
ということで、ライブラリのサンプルソフトそのままに、今日から明日までのログ取り開始です。
おおよそ、気象台の変化と同じならば、本格的にプログラム作成開始です。
うまくいっていますように。(-人-)

2012/09/10

Arduino: LCD表示テスト&気圧センサ読み取り

 数年前に買ったLCDが壊れた!、ということで、先週秋葉原で新しいLCDを購入してきました。
で、週末にリンク先のページを元に配線したのですが、VRが見当たらないため固定抵抗を
接続して、まぁ動くだろうと試したところ全く動かず。。。(というか表示されず)
http://www.musashinodenpa.com/arduino/ref/index.php?f=1&pos=941
接続は間違いないのに、、、と自問自答しながら暫し、、、この前作ったラジオにVRを
使っていたことを思い出し、接続したところサンプルのHello worldがあっさりと動作。
数年前買ったLCDでも試したところ、動作しました。。。
楽して動作させようとした、私に問題がありました。。。orz
ArduinoにはHitachi HD44780と互換チップに対応したライブラリが整備されていて、準拠
していれば、下のようなソースであっさりLCDが動かせます。
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);

void setup() {
  lcd.print("hello, world!");
}

void loop() {}

 次に気圧センサ(MPL115A2)の動作試験を行ったのですが、こちらもまた部品を一つ買い忘れ(そんなのばっかですね(^^;))、
家にあるパーツでなんとかならないかと、色々やっていたのですが、こちらもうんともすんとも。。。(ソフトはよく参考にされているものを利用させていただきました)
ちなみに、I2Cのプルアップ抵抗値は下のリンクを参考に算出しました。
http://www.picfun.com/midi2c02.html
参考にさせてもらったソフトが実用性に富むものだったので、もっと基本的なソフトは
無いだろうかと探してみたところ、githubで公開されているライブラリがありました。
https://github.com/misenso/MPL115A2-Arduino-Library
githubよりライブラリをダウンロードして、/Applications/Arduino.app/Contents/Resources/Java/libraries
にMPL115A2のディレクトリを作り、ダウンロードした中身をmoveします。
それでArduino IDEを起動すると、スケッチ→ライブラリを使用 にMPL115A2が追加されました。
サンプルも追加されますので、そちらをコンパイルしArduinoに書き込んだところ、
無事気圧データと温度データをシリアル経由でMacのターミナルに表示できました。
表示されている値が、見たところ謎なので調整していこうかと思います。
どうも、初めにつまづく癖がありますね。。。

#include <Wire.h>
#include <MPL115A2.h>
void setup()
{
  MPL115A2.begin();
  MPL115A2.shutdown();
  Serial.begin(9600);
}
void loop()
{
  MPL115A2.ReadSensor();
  MPL115A2.shutdown();
 
  Serial.print("Pressure(kPa): ");
  Serial.print(MPL115A2.GetPressure());
  Serial.print("     Temperature(C): ");
  Serial.println(MPL115A2.GetTemperature());
 
  delay(1000);
}

2012/09/03

Arduino: シリアル通信

本当は5年以上前に買ったLCDを接続して、表示しようと思ったのですが、、、
何故か動作せず。。。orz

LCDがNGだったので、外部パーツがなくても試せる、シリアル通信を試しました。
シリアル通信は、USBからとPin0,1から同じデータを送受信できるので、プログラム開発
中ならばUSB接続してIDEのシリアルターミナルを開けば、即確認できるようになっています。
なので、Arduinoに送ったデータを、そのまま返すプログラムを作って試しました。
(拾ってきた、が正しいです(^^;))
println()はformatをBYTEにすることで、文字として送れたらしいですが、現在のIDE
ではエラーとなり、Serial.write()で書いてくれと文句を言われました。
int incomingByte = 0;    // 受信データ用

void setup() {
    Serial.begin(9600);    // 9600bpsでシリアルポートを開く
}

void loop() {
    if (Serial.available() > 0) { // 受信したデータが存在する
        incomingByte = Serial.read(); // 受信データを読み込む
        Serial.write(incomingByte);
        Serial.println("");
    }
}
 結果のターミナルは図のような感じ。(大して面白くない画像ですが。。。)
先週金曜日にセンサーは入手済みだったので、LCDやシリアルとか寄り道しなければ、
センサーからのモニターくらいできたのでは、と ちょっと後悔してます。。。orz

2012/08/30

ArduinoでLチカ

Macを買った時に一緒に買っていたのですが、Macのセットアップに時間がかかった為、
ようやく触ることができました。
とりあえず、始めの一歩ということでLチカ(LEDチカチカ)させてみました。
させてみたと書きましたが、実際はサンプルを動かしただけです。
動かす前に、100均でUSB A-Bケーブルを買い、Mac向けIDEをダウンロード&
インストールを行いました。
で、いよいよArduino  Uno開封!
Arduinoはイタリアの方が始めた、オープンソースハードウェアのプロジェクトです。
ということもあり(なのかは分かりませんが)、パッケージの配色がカワイイ。
調べてみればすぐ分かりますが、CPUはAtmelのATMEGA328を搭載しています。

USBでMacと接続を行い、IDEを起動。
サンプルのBlinkを開き、Arduinoに書き込み。
あっさりと動作しました。(^^)
よーし、大気圧センサーを買ってこよう!

2012/08/20

太陽電池ラジオ ファイナル

ファイナルなんですが、、、まぁ、反省点が多い形で終わってしまいました。
前回から、スピーカーを大口径(と言っても2.5cmくらい)な物に変更、
外部アンテナをラジオ本体に接続、という変更を行い、ようやく並なラジオな
感じになりました。
となると、3x3cmのアクリルケースの意味もなく。。。(TT)
小さな物好きとしては、少々歯がゆいですが完成しました。
とはいえ、もう少しいじるかもしれませんが。。。

と言うわけで、気を取り直して、Arduinoだ!!

2012/07/26

太陽電池ラジオリターンズ その1

前回、問題の仮定を行い、その改善を行いました。(ただし、1つだけ)
今まで、ラジオに手を触れていないと、音が大きくならない問題を解消するために、外部アンテナを作成しました。
ということで、材料を買ってきました。上2つは秋葉原、箱は100均で。
・ポリウレタン被覆銅線20m
・ポリバリコン
・銅線を巻きつける、そこそこ大きめな箱。今回は22cm x 15cm

そこで、銅線を箱にグルグルと巻きつけて、銅線の両端をポリバリコンに半田付けして完成!!
写真のようにラジオをアンテナの中に置いて、ラジオ局(というか送信所)の方向を探すと、ぼそぼそと無事(?)音がなりました!
手を離しても音は小さくなりません。というか、音が小さいので、離れすぎると分かりません。(TT)
結果、問題1は解決したのですが、私好みの小さいラジオではなくなってしまいました。。。
次なるは、問題2スピーカーをならす力が弱そうなので、AMP ICで駆動しようと思います。
次回、完全解決で終わりたい!

2012/07/14

太陽電池ラジオ

完成!!
というわけで、ケースに組みこんでみました。
(といっても、なにも固定していない、仮組みですが)
で、実際動作させてみると、幾つか不満点が。。。

・感度が悪い!!
>バリコンのネジ部分を触ると、しっかりと音が鳴るのですが。うーん、感度不足か。
>抵抗値を変更するか、外部アンテナをつけるか考え中です。

・音が小さい!
>スピーカーが1.5cmくらいなので、空気を震わせるには小さすぎるのか。。。
>とりあえず、家にあるスピーカーをつないでみて、どうなるか確認しよう。

中々うまくいきませんねぇ~(TT)


2012/05/15

太陽電池RADIO

iTunesサーバは少々寝かせておいて。。。(^^;)
かねてより作ってみたいものに着手しようと思います。
というわけで、太陽電池で動くラジオです。
動機は、まぁやはり地震です。
他にもケータイのストラップになっている太陽電池付きバッテリとかを見ていたら、電池を気にせず動くラジオを作れないかと考えたわけです。
ただ、ケースがハンズに売っていた、3cm角のアクリルキューブに入れたいなぁ、、、というところでハードルをあげてしまいました。
とりあえず、秋葉原にある店で見つかる部品から、部品点数が少ないパーツを選んで回路図を書いてみました。
書いてみた、といってもサンプル回路を寄せ集めただけですが。。。(^^;)
最終的にはケースは違うものになるのかな。。。

2011/12/07

オープンソース懐中電灯

一体どこをオープンソースに?と思うけれど、それが発想力の違いか。。。
http://gigazine.net/news/20111206-hexbright/
点滅タイミングとか色とか、プログラミングできるのだろうか。
とっても謎なデバイスです。
でも、この発想力は無かった。
本文中にあるけれど、「投資募集サイトKickstarterにおいて3万1000ドル(約240万円)という目標額に対して、約26万ドル(約2000万円)ものお金が集まっています。」
!!!

これぞ、発想→具現化(+英語)の威力か。考えているばかりでは駄目ということだなぁ、と痛感。
痛感することばかりです。この世の中。(TT)

2011/11/16

FPGA 1chipラジオ

元々の目的は3,4cmのアクリル立方体ケースの中に、ラジオとケータイ向けソーラーパネル付きバッテリーを入れたいなぁ、
と1ICラジオの回路やパーツを調べていたんですが。。。
思わぬところが見つかりました。(それが題名なのですが)
FPGA1つでAMラジオ!!
ん~興味深い!
まだちゃんと読んでいませんが、素晴らしいことを試している方がいるんですね。
勉強になるなぁ~
http://ojisankoubou.web.fc2.com/apb-2/fpga_radio.html