目次:
こんにちは!これは私の最初のInstructableです、そして私はフィードバックが欲しいです!
このプロジェクトは私が退屈したある日に始まりました。私は「Arduinoプロジェクト」とグーグルしました、そしてこれはArduino遊び場で思いつきました。
注意: これは私の元来の考えではなかった、私はArduinoの遊び場でそれを発見した、しかしここに元の記事がある:http://runtimeprojects.com/2016/02/a-lightning-detector-for-arduino/。私は自分のプロジェクトに修正を加えました。
あなたが必要です:
- ×1 Arduino
(私はUnoから始めましたがMicroを使ってしまいました)
- ×1ブレッドボード
(あなたは結局Perfboardを使うことになるかもしれません、私は推測します)
- x 4 - 7ジャンパー線
(コンポーネントを接続するために)
- ×1分圧回路
2つの選択肢があります。
- x1ポテンショメータ
- ×3抵抗
- ×2 10Kオーム
- x1 3.3Mオーム
用品:
ステップ1:背景電光知識
落雷が発生すると、さまざまな種類のエネルギーを放出します。ほとんどの人はそれが光と音を放出することを知っていますが、Lightningは特にVLF(超低周波)からLF(低周波)の範囲、または約3〜300 KHzの電波も放出します。 Arduinoでは、約7KHzの周波数を捉えることができ、これは十分に放射された周波数の範囲内です。
このプロジェクトで、私たちは約12.5マイル(20キロメートル)以内に雷を拾うことができるはずです。
ステップ2:回路
警告:落雷はワイヤに正負両方の電流を誘導する可能性があるので、注意して指示に従ってください。 100% あなたの分圧器があなたのArduinoの損傷を避けるために働いていることを確かめてください。
回路はとても簡単です。最も複雑な部分は分圧器と呼ばれます、これは私達のArduinoがLightningによってワイヤーに誘導された電流によって損害を受けるのを防ぐためです。
あなたの毒を選ぶ:分圧器
あなたの回路に分圧器を実装することができるいくつかの異なる方法があります。
オプション1:抵抗
あなたが抵抗を使うつもりなら、あなたは2番目の写真のようにそれらを取り付ける必要があるでしょう。
オプション2:ポテンショメータ
あなたがポテンショメータを使うつもりなら、あなたは回路図、最初の写真のようにそれを取り付けることができます。
ステップ3:コード
通常の操作のために実行されている2つの異なるプログラムがあります。
Githubから私のコードと回路図をダウンロードしてください。
- アルドゥイーノ
Arduinoのプログラムはとても簡単です。
void setup(){
Serial.begin(115200); //シリアル通信を115200ボーで設定します。
pinMode(A4、入力)。 //アナログピン4を入力として定義
}
void loop(){
Serial.println(analogRead(A4)); //ピンA4からシリアルポートに値を印刷する
}
- 処理
処理プログラムはもう少し複雑です。
import processing.serial。*;
シリアルmyPort //シリアルポート
int xPos = 1; //グラフの水平位置float inByte = 0;
void setup(){
//ウィンドウサイズを設定します(注:画面に合わせて拡大縮小できます)。
サイズ(1000、750)。
//利用可能なすべてのシリアルポートを一覧表示します
//処理2.1以降を使用している場合はSerial.printArray()を使用
println(Serial.list());
//使用しているポートがなんであれ、開いてください。
// 0をあなたが使っているリストの中の#に変更する(-1)
myPort = new Serial(this、Serial.list()0、115200);
//改行文字を取得しない限り、serialEvent()を生成しません。
myPort.bufferUntil( ' n');
//初期背景を設定します
背景(0)
}
void draw(){
// 線を引く:
ストローク(127、34、255)。
line(xPos、height、xPos、height - inByte);
//画面の端で、最初に戻る:
if(xPos> = width){
xPos = 0。
背景(0)
}
その他{
//水平位置を増加させる
xPos ++;
}
}
void serialEvent(Serial myPort){
// ASCII文字列を取得します
文字列inString = myPort.readStringUntil( ' n');
if(inString!= null){
//空白を削除します
inString = trim(inString);
// intに変換して画面の高さにマッピングします
inByte = float(inString);
println(inByte);
inByte = map(inByte、0、1023、0、height);
}
}