電子工作

2012年3月17日 (土)

室外温度計作成 <100均温度計改造>

今住んでいるアパートの壁は薄く断熱効果がありません。
その結果エアコンの使用率がとても高いです。
エアコンを使うと外の温度が分かりません。そこで室外温度計を作成しました。

主な部品は、100円ショップで買った「デジタル温度計(Happy Station)」と温度センサ延長コードとして用いる「イヤホン延長ケーブル」です。

延長ケーブルは壁の色と同じ「白色」だからから購入したのですが、壁に這わすとクニャクニャで見栄えが悪いので、ホームセンターで見つけた白いガラスチューブ(電気部品)の中に通すようにしました。この延長コードの中の導線はえらく細いです。抵抗値は測っていません。ただ温度はそれなりの値が表示されるのでとりあえずOKとしました。
「室内に設置した温度計本体」と「室外のセンサー」を繋ぐコードはエアコン配管貫通穴の中を通しました。

室外センサーは外気音が正確に測れることを期待して、日が直接当たらない天井の影となる高い所に壁から離して設置しました。またセンサは光を反射するアルミホイルの中に入れました。湿気対策のシールドはテープで行いましたが、本当はエキシポ樹脂性接着剤の方が良いようです。(センサーは密封せず風通しを良くした方が多分良いです)

温度表示の「℃」がうっとおしいので非表示にしました。電源のマイナスを液晶配線の1本1本に接触させることにより、どの配線が「℃」を表示しているか特定し、その配線を切断しました。電気回路は変更があるようなので、配線を切断するときは自分で再確認した方が良いです。

3ヶ月使用していますが今のところ問題ありません

Photo_2

■Ref.
 ・
ラジオペンチさんブログ > キャンドゥのデジタル温度計の改造(仕様変更
                  
100円ショップのデジタル温度計を電圧計に改造(高性能編)
 ・気の迷い > 100円ショップデジタル温度計のデジタル電圧計化、考察
 ・本ブログ > DIY:アクリル加工用工具一式
 ・秋月電子通商 > 小型温度計モジュール(±50℃)DTM0503(600円) 
              正確な温度を測定したいなら多分この商品の方が良いです。

キーボードの掃除方法

4連休なので、キーボードをクリーニングしました。

キーボードは毎日手で触るし、キー側面の汚れは綿棒でも取れないので、汚れたキーボードを仕方なく使っている人も多いと思います。
キーボード分解方法が分からない人もいるかもしれないので、清掃過程を写真に撮りました。ご参考にどうぞ見てみて下さい。
清掃のポイントはファイル中に星マークで示した部分です。

掃除した結果、綺麗さっぱり新品同様のキーボードになりました。

Photo

2012年2月28日 (火)

半導体 及び 半導体素子の動作原理

以下の文は正確な記述ではありません。検証や調査もしていません。

電子工作で使う基本素子は「抵抗」「コイル」「コンデンサ」そして「半導体素子」だと思います。
「半導体」というのは電気の流れやすさが、「良導体(金属)」と「絶縁体」の間にある物質です(英語では semiconductor = semi + conductor)。

「金属」中の電気の流れは電子の流れです。金属中のマイナス電荷を持った電子が電界によって移動します。
「半導体」には「p型」と「n型」の2種類ありそれが大きな特徴です。n型半導体は金属と同様に電気は電子の流れです。しかし、p型半導体では電子の抜けた跡がプラス電荷を帯びた粒子のように移動します。水の中の気泡のようなイメージです。根源的には電子の動きですが、プラス電荷を持った仮想粒子を考え、その流れが電気の流れと考えると理解しやすい面もあります。(でもまた混乱の元でもあります)

これらのことをとても分かり易く説明したwebサイトがあります。
甲南大学の「半導体/電子デバイスの物理」です。
ぜひ読んでみて下さい。特に電子工作に関係ありそうな項目を赤で囲みました。

Photo

 

■量子力学が生まれたのはほんの100年前
 半導体の理解に不可欠な量子力学は20世紀初頭に報告(発見)されました。たった100年前のことです。
 ニュートンという天才が「リンゴの落下」と「天体運動」を同一方程式(ニュートン力学)で表現出来ることを示したプリンキピアが公表されたのが300年前(人間の寿命を100年とするなら3世代分に相当)の1687年。
 それから約200年経過した20世紀初頭に突如「量子力学」と「相対性理論」という革命的理論が報告されました。
 小さいスケール(素粒子)の運動を表現するシュレディンガー方程式(量子力学)が報告されたのが1926年。
 不思議なことに大きなスケール(宇宙)の運動を表現する一般相対性理論はほぼ同時期の1915年発表。たった100年前人類史上特質すべき物理学のスーパースターが沢山いたのですね。人の寿命は長い人で約100年なので、ほんの1世代前のことです。アインシュタインが亡くなったのは1955年なので同じ空気を吸ったことはありません。しかし私はディラックの死亡記事を新聞で読んだのを覚えています。
時代が生んだ(発見した)理論なのか、それともたまたま天才が相次いで生まれた時代だったのか。
天才が次々生まれるという偶然は考え難いので、たぶん時代が理論を生んだのでしょう。
 
他の惑星の知的生物も同じ順序と同じ時間スケールで自然法則を発見してたりして・・・

2012年2月27日 (月)

使い捨てカメラの分解方法について

ちょっとレンズが欲しくなったので、使い捨てカメラ(レンズ付きフィルム)を分解しそこから得ようとしたのですが、分解は「危ない」「自己責任で」と書いてあるサイトが多く、詳しい分解手順が書いてあるサイトが見つかりませんでした。
そこで私が実践(人体実験)した結果を書きます。

 ■注意
 ・カメラ内部には、ストロボ発光のための高電圧発生(300V)回路があります。
 ・「感電した時に体内を電気が通る経路」や「体質」によっては
死亡する危険があります。
   (定量的なデータ:
国際電気標準会議 人体反応曲線
 ・私は素人です。
記載内容に誤りがある可能性があります
 ・カメラの進歩により電子回路が変わり本内容が適用できなくなる可能性があります。

 ■安全対策
 ・
最大の安全策はこの記事を読むだけで、実際にはカメラを分解しないことです。
 ・未成年の方は絶対にカメラを分解しないで下さい。
 ・安全防具・知識・経験が身を守ります。
 ・防具としては絶縁手袋が世の中にあります。これを使えば"多少"安全度が上がります。

 ■知識
 ・自分で最新の情報を調べて下さい。ここに記載した古い情報は使えなくなる場合があります。
 ・この記事の最後に記載してあるリンク先も読んでおいて下さい。

 ・高電圧部は見ても分かりません。(熱くもなく。匂いもしません)
 ・電気は一瞬で体内を流れます。電流が心臓を通過(右手から左手など)すると特に危険です。
 ・高電圧の物体に近づくと接触しなくとも放電で感電します。
 ・感電すると、自分の意思で高電圧物から離れられなく場合があります。(筋肉が痙攣)
 ・感電した場合に備え心臓マッサージや119に連絡してくれる人とペアで作業した方が安全です。
 
 (登山の遭難救助と同じで、危険なことをしておいて119番とは問題ありますが・・)
 ・電源OFFでも回路内に高電圧が溜まったままの場合があります。
 ・電源が1.5Vの乾電池1本の回路でも高電圧部分がある回路が存在します(ストロボ。スタンガンなど)


 ■私の経験
 この記事を書くことにしたのは、カメラを分解して感電してしまったからです orz
 経過は以下のようなものです(はずかしい)。
 カメラから電池を抜き1日放置。1日経てばコンデンサーの電荷は放電されるだろうと
 思ったのが大間違い。基板を触っていたら見事感電してしまいました。左手で高電圧部を
 触った結果左ひじまでしびれました。指先は鋭い痛みで腕は鈍い痛みでした。幸い20分くらいで
 痛みは引き、後遺症もありません。

Photo_2

 

■備考
 ・分解すると危険な身近な電気製品の例
   電子レンジ、ブラウン管、モーター、コンセント、蛍光灯、車の内部(特に電気自動車)など

 ■リンク
 ・
使い捨てカメラ「写ルンです」の分解  (ABCDEFGさんブログ
 ・
感電及び対策                (CRANE-CLUB
 ・
感電防止用保護具及び防具等     (電気工事技術講習センター
 ・
自分が思う今年の漢字は「危」     (shiro さんのブログ)
 ・
LFプラズマジェット             (shiro さんのブログ)
 ・
MOT摘出(電子レンジ分解)       (Prankさんのブログ)

電子部品収納

電子工作を始めて暫く経ったのですが、作品は一向に出来ず、電子部品だけが結構溜まってしまいました。

そこで100円ショップで「密封ケース」「厚紙」「シリカゲル」を購入し電子部品を整理しました。厚紙にキリで穴をあけそこに部品を挿しました。とりあえずどんな部品が何個あるかは一目瞭然になりました。

ケースの底にシリカゲルを敷きつめてあります。部品が錆びなければよいのですが・・・。これが正しい電子部品の保存かは不明です・・・。多分カメラ屋で売っているデシケータを購入しその中に電子部品を保存すれば完璧だと思うのですが、デシケータは高価なのでこんな感じで保存することにしました。

Photo

■関連リンク
 ・
抵抗入れ <100均アイストレー>

2012年1月15日 (日)

Arduino 回路図はfritzing で書くようです

色々な方が書いている Arduino 回路図はどれもきれいに描けています。

どうやって書いているかやっと解りました。

FRITZING というソフトを使って書いているのですね。

Fritzing

2012年1月 9日 (月)

Arduino に液晶接続

また電子工作でトラぶったのでメモしておきます。

どのようにトラぶったかと言うと、液晶を正しく接続したつもりだったのに液晶が全く反応しない。
原因はVo(コントラストpin)の未接続。Vo接続しなくてもうっすら見えると思っていたのですが間違いでした。散々スケッチなど別な部分を疑ってしまいました。

下図では Vo に固定抵抗を繋いでいますが、正しくは10kΩ程度のボリュームに接続すべきです。

■環境
 ・液晶LCD   :SC1602BSLB、(多分 SC1602BS-B などでも同じ)
 ・Auduino IDE : Ver. 1.0

液晶は良く使うと思うので、何時でも簡単に再接続できるよう自分用にスケッチをupしてきます。

Photo

#include <LiquidCrystal.h>

//         Syntax : LiquidCrystal(rs, rw, enable, d4, d5, d6, d7)
LiquidCrystal lcd = LiquidCrystal(12, 11, 10,     5,  4,  3,  2);  // 配線 

void setup(){
  lcd.begin(16, 2);                                   // 液晶の 行数、列数 を設定
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("HELLO 1234567890");
}

void loop(){
  lcd.setCursor(0, 1);
  lcd.print(millis()/1000);
}

■Ref.
 ・Arduino TOP >Examples > Libraries > LiquidCrystal > LiquidCrystal - "Hello World!"
 ・Arduino TOP > Reference > LiquidCrystal Library
 ・秋月電子 > ディスプレイ関連 > キャラクタ表示液晶表示器 >
LCDキャラクタディスプレイモジュール > スペック
 ・上野さんの「
PICで遊ぶ電子工作
  目次>5章 第2ステップ(色々な実験)>
(17)液晶ディスプレイを使う
  (このサイトを見て、4bitで操作できることを知りました)

 

■リンク
 ・このブログの記事 -->
Arduino 目次

AquesTalk pico (テキストを音声に変換するLSI) で 数字を読み上げ

AQUEST社 の AquesTalk pico LSI ATP3010F4 を I2C で制御することができました。
回路などについては
ここ記事を見てください。

pico は数字を桁数入りで発声することが出来るとのことなので早速やってみました。
以下のスケッチで発声を確認できました。

これで、センサーの測定結果を読み上げる準備ができました。
とりあえずこれで一区切りです。

//
// I2C 経由でPico に数字を発声させるスケッチ
//

#include <Wire.h>
#define PICO_I2C_ADDRESS 0x2E                         // PicoのデフォルトのI2Cアドレス

void setup(){
    Serial.begin(9600);                                           // デバッグ出力用
    Wire.begin();                                                   // Arduino側をI2C Masterとして初期化   
}

void loop(){
    char buff[32];   
    for(int i=0;i<15;i++){
        isReady();                                                  // Ready待ち 
        Wire.beginTransmission(PICO_I2C_ADDRESS);
       
        unsigned long x = pow(2,i);                           // 桁数が多い数字を作るためにpow()を使用

//     sprintf(buff, "<NUM VAL=%u>\r",x);              // 数字を発声
        sprintf(buff, "<NUMK VAL=%u>\r",x);             // 数字を桁数入りで発声

        Serial.println(x);                                          // デバッグ用出力
        Serial.println(buff);                                      // デバッグ用出力
        Wire.write(buff);               
       
        Wire.endTransmission();                               // Pico へ送信
        delay(1500);
    }
    delay(3000);                                                  // 発声が連発するとうるさいので delay 挿入
}

//
// PicoがRedyになるのを待つ
//
void isReady(){
    do{
        Wire.requestFrom(PICO_I2C_ADDRESS, 1);    // 1バイト要求
        while(Wire.available() > 0){
            if(Wire.read() ==
'>') return;                     // 正常ならここからループアウト
            delay(10);                                            // Busy応答は10msec以上待つ必要がある
        }
    }while(true);                                                 // 無限ループ
}

■関連リンク
 ・sprintf 書式 (
ANSI/ISO 9899-1990 準拠 で arudino とは違いますが・・・)
  wakaba Programming Schho  関数リファレンス >
fprintf()

AquesTalk pico (テキストを音声に変換するLSI) の I2C 制御

AQUEST社 の AquesTalk pico LSI ATP3010F4 をI2Cで制御することができました。

■この LSI を I2Cで制御する上での注意点
 1.SMOD0 をLOW(アースに接続)する
 2.SDA, SCL 信号線をプルアップする

■環境
 ・Auduino ハード:Aurduino UNO Rev.3
 ・Auduino IDE  : Ver. 1.0

写真及び回路図は以下の通りです。

Pico_i2c

Pico_i2c_3

なるべくシンプル(短い行数)で書いたスケッチ

//
// 本プログラムは Picoを I2C 経由で操作するプログラムです
//

 #include <Wire.h>
#define PICO_I2C_ADDRESS 0x2E                       // PicoのデフォルトのI2Cアドレス 

void setup(){
    Wire.begin();                                                 // Arduino側をI2C Masterとして初期化   
}

 void loop(){
    isReady();                                                    // Ready待ち
    Wire.beginTransmission(PICO_I2C_ADDRESS);
   
Wire.write("aiueo\r");                                    // 「あいうえお」発声。音声コマンドの最後に'¥r'必須
    Wire.endTransmission();                                 // Picoへ送信       
    delay(3000);                                                // 発声が連発するとうるさいので delay 挿入
}
 

//
// PicoがRedyになるのを待つ
//
void isReady(){
    do{
        Wire.requestFrom(PICO_I2C_ADDRESS, 1);   // 1バイト要求
        while(Wire.available() > 0){
            if(Wire.read() ==
'>') return;                   // 正常ならここからループアウト
            delay(10);                                          // Busy応答は10msec以上待つ必要がある
        }
    }while(true);                                               // 無限ループ
}

デバッグ用になるべくスケッチ実行経過と異常値を Serial でPC に通知するようにしたスケッチ
Serial.println関数の出力はArduino IDEのシリアルモニターで見れます。

//
// なるべく異常を Serial で通知するようにしたスケッチ
// 本プログラムは以下を元にして書きました
//
// aqtkpico_i2c - I2C通信で AquesTalk Pico LSIを操作するArdionoスケッチ   
// by N.Yamazaki AQUEST Corp.  <
http://www.a-quest.com> 

#include <Wire.h>
#define I2C_ADDR_PICO 0x2E                           // PicoのデフォルトのI2Cアドレス
int COUNT = 1;

void setup(){
    Serial.begin(9600);
    Wire.begin();                                                // Arduino側をI2C Masterとして初期化   
}

void loop(){
   
Serial.println(COUNT++);                               // 実行回数
    if(isReady_Pico()){                                        // Ready待ち
        Pico_Synthe();                                         // 発声コマンド送出   
    }
    delay(3000);                                                // 発声が連発するとうるさいので delay 挿入
   
Serial.println("");                                          // 改行
}

//
// Picoにローマ字音声記号列(コマンド)を送信
//
void Pico_Synthe(){
   
Serial.println("Pico_Synthe --->");
    Wire.beginTransmission(I2C_ADDR_PICO);
    const char TALK[]=
"aiueo\r";                               // コマンドの最後のCR('¥r')を忘れずに
    if(sizeof(TALK)<32){                                   // Wireの制約で、一度に送れるのは32byteまで(未確認)
        Wire.write(TALK);   
    }else{
       
Serial.println("ERROR : sizeof(TALK) over 32");    // TALK に設定する文字数を32未満にして下さい
    }
    Wire.endTransmission();                                          // Picoへ送信
   
Serial.println("<--- Pico_Synthe");
}

//
// PicoがRedyになるのを待つ
//
boolean isReady_Pico(){
   
Serial.println("isReady_Pico --->");
    char buff[20];   
    for(;;){
        Wire.requestFrom(I2C_ADDR_PICO, 1);
        if(Wire.available()>0){
            byte c = Wire.read();
            if(c==
'>'){
                break;                                                   
  // 正常ならここからループアウト
            }else if(
c=='*' || c==0xFF){                               // pico が処理中の時はここに来る
               
sprintf(buff, "WAIT : %.2X",c);
                Serial.println(buff);          

                delay(10);                                                 // Busy応答は10msec以上待つ必要がある
            }else{
               
sprintf(buff, "ERROR : read value = %.2X",c); // 返値が予想外
                Serial.println(buff);   
            
                delay(1000);
            }
        }else { // NOACK または応答がなかった時            
            
Serial.println("ERROR : Wire.available()<=0");    // Picoが動いていない可能性が高い
            return false;                                                 // ERROR
        }
    }
   
Serial.println("<--- isReady_Pico");
    return true;                                                        // OK
}

■リンク
 ・回路及びスケッチは N.Yamazaki さんの以下のブログを参考にしました
   
N.Yamazaki's blog > [Arduino] AquesTalk pico LSI を SPI で制御する

 ・この回路で音声が出ない場合、ここに書いた pico のデモモードを試してみてください

2012年1月 8日 (日)

AquesTalk pico(テキストを音声に変換するLSI) のテスト

Arduino の使って色々出力してみようと考えています。例えば、光り、画像、文字、音、モーターなど。

今回何らかの測定データを人の声で読み上げようと思い、AQUEST社 のAquesTalk pico LSI ATP3010F4 を購入しました。
このLSIはテキストデータを音声(男、女、ロボットetc.)に変換できるようです。

早速配線して読ませようと思うデータをLSIに送ったのですが音が出ません(原因は私の力量不足)。そこでこのチップの機能である「デモモード」で、「チップ」「クロック系」「スピーカー系」をそれぞれ調べてみました。
配線した写真と回路図を以下に添付します。電源として5V必要ですが、その電源は Arduino から取りました。今回 Arduino は電源を取ることのみの為に使用しました。

このLSIのデータシートによるとデモモードにするには、LSIの「PM0D0 」と「 PM0D1」ピンをアースにすれば良いようです。
結局この回路で音声を確認することが出来ました。よって詳細評価する必要はなくなったのですが、誰かの参考になるかもしれないので評価結果を書いておきます。

以下を順番に評価しました。
 1.電源電圧
  このLSIは3.8~5.5Vの動作電源が必要。電圧測定値は5Vで問題なし。
 2.クロック
  クロックは「セラロック16MHz」を使って発振。「XTAL1」「XTAL2」ピンをオシロで測定すると、
  共に16MHzの正弦波を確認。振幅幅はp-pで200mVでした。
 3.PLAYピン出力 (発声中はLOW)
   デモモードでは約3秒に1回瞬間光りました。LEDはPLAYピンがHIGHのとき発光。
   デモモードは発声し続けているので、瞬間しか光りません。
 4.AOUTピン出力 (音声)
   音声はPWMで出力されています。AOUT出力をオシロで測定すると、5Vの矩形波が観測できました。

この回路で音声が出るため、LSI、、発振系、スピーカー系に異常なしと判断。
後日、再度Arduino経由でこのLSIを制御して音声を出させる予定です。

Pico_demo_mode_
Pico_demo_mode_2


■Ref.
 ・Arduino 電子工作目次 (このブログの記事)
 ・AQUEST > 製品紹介 > 音声合成LSI ATP3010F4  > Data Sheet
 ・波形測定に使用した安価なデジタルオシロスコープ ---> ここ