爆弾犯のサービス

2020年11月17日

時限爆弾

映画やドラマ、アニメ等で度々出てくる時限爆弾、赤か青の配線を切る的展開も王道です

これは目覚まし時計です

自己顕示欲の有無

『時限爆弾』この言葉で画像検索をすると、大多数が👆アナログの目覚まし時計タイプも見ますね
他にも化学反応を利用したり線香を使ったり、とにかく設置から時間をおいて作動する爆弾の事

でですよ、アナログの目覚まし時計は、時計本体が時限装置なので付いていて当たり前ですが
👆の様なデジタル式の場合、電子工作的に言うと、カウントダウンの表示はサービスです

爆発時間をお知らせする機能だからね、赤を切るか青を切るかもサービス、どっちか切れば止まるとか爆発させたい人なら付けないでしょ

自己顕示欲が強い犯人、劇場型犯罪の爆弾犯だけが『解除できる物なら解除してみろ』
こういうメッセージを仕掛けるんですね、自分が安全なところまで逃げるための時間稼ぎとしての時限爆弾であれば、時間表示も赤青の線も必要ない

爆弾解体

アメリカ映画の『ジャガーノート』が発端と言われていますが、赤の線か青の線か、正解を切るとタイマー停止、間違った方を切るとブービートラップで即爆発
これを真似て映画やドラマ、アニメでは警察の危険物処理班が出動して防護服を着て爆弾解体をするみたいな描写が多いのですが
現実は、時限爆弾の場合は爆弾を液体窒素で凍結させて破壊処理するそうですよ

メインは爆発物

犯人仲間から「おまえの爆弾じゃないと威力が足りないんだ」なんて言われてる爆弾犯の部屋には電子工作の後が残ってて、失敗した基盤とかが散乱してて…
そんながドラマを見たんですけどね、爆発の威力は火薬の量、時限装置がどれだけしょぼくても、高機能でも同じ火薬なら同じ威力です

時限装置は単純

時間が経過したら起爆装置に通電するだけなので、50円程度のチップマイコン1個で実現できる装置です
これにサービスで残り時間表示機能を付けるとなると、99時間表示する場合、表示桁数は6桁、数字を表示させる電子部品を「7セグメントLED」と呼ぶのですが、大きさにもよるけど、1つ50円くらいなので、300円
7セグメント用LEDドライバーICが50円、抵抗が約50本で50円、パーツが多いので基盤も欲しい、ユニバーサル基板1枚100円、合計500円
さらにここまで作ったのなら、時間調整機能も欲しいし、テスト用にリセットボタンも欲しいし
ちなみに、7セグメントLEDとは上の画像でも使われているけど、デジタル表示で1桁にLEDが7個8の字に配置されている物を言います
1を表示するには右側の上下2本を点灯、2なら上段と右上と中段と左下と下段を点灯、分りますよね?
表示装置がなければボタン電池1個で電力は十分だけど、LEDを最大42個光らせるにはもう少し大きい容量の電池が必要
さらに、時間をカウントダウンさせるプログラムコードを書く必要もあるし、7セグに表示させるプログラムコードも必要
爆発して無くなる装置に最低限の機能の10倍のパーツを付けるとかサービス精神豊富過ぎでしょ?

チップマイコン

👆に書いたチップマイコンとは「マイクロコントローラ」色々入ったICの事
電子工作でよく使われるのは「Microchip社のPIC」と「ATMEL社のAVR
私が主に使うのは後者のAVRマイコン、表面実装用のいちばん安いマイコン「ATtiny10」の小売価格は1個35円です
表面実装っていうのは基本的には機械ではんだ付けをするICの事、頑張れば手動でも出来るけど、大量生産には向きません

スポンサーリンク
ATtiny10

足が6本あるICチップです、指の大きさと比べてメチャ小さいでしょ?(この指のモデルさんは米国の方なので、日本人より多少は手が大きい場合があります)
簡単に👆画像の説明をすると、中段の左に書かれた[GND]が電源のマイナス端子、右の[VCC]が電源のプラス端子、右上の一番右[RESET]がそのままリセット端子
緑色の[PB0~3]が信号端子番号、リセット機能を無くせば全部で4つの信号を制御できます
時限装置を作るのに必要なのは電源のプラスマイナスと信号端子1個の計3個で実現できます
ところが、これに時間表示をつけようとすると7セグメントLEDを制御する端子が必要

7セグメントLED

7セグメントLED(以下7セグ)を1つ光らせるのに必要な信号端子の数は7個(a~gまでの7個です、dpは小数点のピリオドなので時間では使いません)
チップマイコンで単純に1桁の7セグを制御するのには信号端子が7個必要という事
ATtiny10は時限装置用の1個を除くと、残り3個なので7セグ制御は出来ません
しかも、99時間分が必要なら6桁必要なので全然足らない
Arduinoに搭載されている[ATMEGA328P-PU]を使っても使える信号端子数は23
単純に7セグ6桁制御するには42個、マイコン2個必要になります
実際は、シフトレジスタと言うICや7セグ用LEDドライバというICを使って6桁なら、信号端子2、3個で制御できるようにする物を使うので、ATtiny10でおそらく製作可能です
なぜおそらくなのかと言うと、チップマイコンに搭載されているプログラムを収納するメモリ容量が1024Bしかないので、7セグ表示のプログラムコードが入りきるかどうか
7セグ無ならプログラムコードはめっちゃ短いので余裕で収納可能です
1024Bがどのくらいのサイズなのかと言うと、半角英数字1024文字分です、漢字・ひらがな・カタカナ・ハングルを2バイト文字、半角英数の事を1バイト文字と言います

Twitterで140文字書けるのは半角英数の話だと思ってたら2バイト文字でも140文字書けることが分かって、2バイト文字圏に親和性の高いsnsとして重宝されています
プログラム的に言うと、140バイト制限なので2バイト文字圏では70文字しか書けないのが普通なのに、Twitter社は太っ腹だね!ってお話
日本語で140文字あったら相当な情報が1回のツイートで伝わるよね!っていう事、アルファベット140文字の英語と比べたら相当な差です

閑話休題

Arduino

Arduinoの説明は面倒なのでWikipedia読んでください
まあ単純に言うと、電子工作でプログラムを簡単に使える様にした物です
電子部品の組み合わせで実現可能だけど、それをするには電子工学を学ばないといけない
それ面倒だけど、プログラムは組める、何とかならない?って要望に応えた機械です

Arduinoで開発をするときにに使うArduino言語でAVRマイコンはプログラミングが出来るし、Arduinoを中継器にしてAVRマイコンに書き込みができるので
AVRマイコンを使う人はArduinoを持っていると色々幸せになります

ATtinyで単純な時限装置を作るためのプログラムはこんな感じ(電池をつなぐとタイマースタート、1時間後にPB0を信号端子にして通電する場合の例)

void setup() {
  pinMode(0, OUTPUT);
}

void loop() {
  delay(3600000);
  digitalWrite(0, HIGH);
}

超簡単、プログラムは基本的には上から順番に命令を処理していきます
簡単に説明すると、1行目~3行目までが初期設定[pinMode(0, OUTPUT)]PB0は信号を出すだけの端子ですって宣言してます
ちなみに端子の先に繋がっているスイッチの状態を見て判断する様な時はOUTPUTの所がINPUTになります、PB1に繋がっているスイッチの状態を見てONなら時間リセットとかね
4行目は見やすいように空欄です
5行目~8行目までがプログラム本体[deley(3600000)]これはIC内の時間の単位がミリ秒なので1,000で1秒、60,000で1分、3,600,000で1時間ここで待機という命令
[digitalWrite(0, HIGH)]1時間後に信号端子0に電気を流すという命令
着火装置に故障がなければ、ここで爆発しちゃうので書きませんが、爆発しなかった場合は、もう1時間待機して通電を繰り返します
[void loop]って書いてあるでしょ?voidは意味はありますが、記述ルールと覚えちゃうのが吉、loopはループ、繰り返せって命令です

プログラムは言語が違っても大抵同じルールがあって、開いたものは閉じなければいけない
[(]が1個あれば、命令が終わったら[)]で閉じなければいけない[{]が1個あれば[}]で閉じる
これで命令の区切りをつけます、[()]という何も中身がない事がありますが、[()]内に何かを書く場合もあるという時は書かない時も[()]を付けるという決まりがあります
Arduino言語はC言語から派生した言語なので、ほとんどC言語と一緒です
C言語はもっとも有名なプログラム言語と言っても過言じゃありません、WindowsやiOSやandroidもC言語で書かれています

上でプログラム収容容量が1024Bと書きましたが、このコードを数えると81バイトですが、ICに書き込む際は人が理解できるコードから機械が理解できる機械語に変換して書き込むのでコードを見ても推測は出来ません
機械語に変換する事をコンパイルと呼び、それをするツールをコンパイラと呼びます

爆弾への着火方法は専門外なので知りません、ストーブの着火装置とか、電熱線とか?通電したら熱を発生させる装置なんていくらでもあります

考えてみた

私が電子工作をするときは、機能を頭の中で思い浮かべながら、部品通販サイトを巡って必要なパーツを選定&外形図をプリントアウト、CADを使って基盤にパーツを配置して配線パターンを設計して、ちなみにはんだ付けが苦手なので、プリント基板を自作します

スポンサーリンク

99時間分表示できる8個の7セグLEDと、時分秒を設定できるようにするボタンと、設定を確定するボタンと、操作をロックするボタンと爆弾作るわけにはいかないので、爆発音を出すためのスピーカーと、電池かACアダプターで稼働できるようにして、AC電気機器の電源ON/OFF出来る様な機構を追加して

プログラミングをする前に動作フローを考えます、黒ボタンはそれぞれの桁をカウントアップさせていく、長押しで連続カウントアップ、白ボタンは短押しで設定確定、長押しで時間調整開始、赤ボタンは短押しでスタート/ストップのトグルスイッチ、長押しですべてのボタンの操作ロック(時限装置っぽくしないとね)白赤両方長押しでリセットとか、黒ボタンの押す順番でリセットとかってギミックを仕掛けたり

部品を買ってきた

プリント基板をDIYする必要があるので、部品を買ってきたからといってすぐ作れるというものではないし、そもそも時限装置は必要ないのでwすぐには作りませんが、電子部品自体は安いし小さい物なので、思いついた時に買っておくことにしています
7セグLEDは1個40円x8=320円、スイッチは1個7円x8=56円、スピーカー100円、DCジャック30円、電池ボックス50円、7セグ用IC[TM1630]は1個70円x2=140円、ICソケット(18)40円x2=80円、マイコン[ATMEGA8-16PU]180円、ICソケット(28)70円、200x150x1.6生基盤407円、残りの部品は在庫品
生基盤というのはプラスチックの板に銅箔がされている物、銅は電気を通す事を利用する物です

プリント基板のDIY

電子工作をするには、各部品を繋いでいかなきゃいけないのですが、中空でICの各足にスイッチを付けたり7セグを付けたりなんて現実的ではないので、板に脚が刺さる穴をあけて部品を配置して、各足を結線していく方法を取るのですが、その結線を基盤の裏に印刷の様にあらかじめ作っておけば、部品をさしてはんだ付けするだけで完成するので、製品に便利ということで、プリント基板というものを使います
DIYでは基盤に通電性のある塗料で印刷とかできないので、ユニバーサル基板と言われる簡易的な基盤を使うのですが、はんだ付けの技術がある程度ないと、なかなかうまく作れないという欠点があります
趣味で毎日のように電子工作する人はそうそう居ないので、はんだ付けの技術ってあまり上達しないんですよ、私は特に下手なので、ユニバーサル基板でってなると作りたい欲が消えちゃうw複雑な回路をはんだ付けする気力が湧かないので
そこで、プリント基板をDIYする方法は無いのか調べると、いくつか方法が見つかります
昔からある方法は感光基板という写真現像の技術を使う方法があるのですが、専用設備が必要で敷居が高い、他には無いかな?と調べると、パターン転写方式という物を発見、こちらの必要設備は家庭にある物を流用できるという事で、私はパターン転写方式でプリント基板をDIYしています

ユニバーサル基板

プリント基板

秋月電子通商というショップのオリジナルのSSRキットの基盤です

DIY例

失敗作なので保存状態が悪く銅面が酸化して変色しています

パターン転写シート

パターン転写方式というのは、上の青いシート『Press-n-Peel Blue』というのですが、このシートにレーザープリンターでパターンを印字します、黒いのがレーザープリンターで印字されたトナーです
仕事で使うため、A3のレーザープリンターを持っているので、私にはもってこいの方法です
レーザープリンターを持っていなくても、コンビニプリントを使えば誰でも出来るので、敷居はそう高くない方法ですよ
印字された面を生基盤の銅面に合わせて、アイロンやラミネーターを使って銅面にトナーを熱転写します、銅面に転写されたトナーがマスクになって、エッジング液という銅を溶かす薬に浸けるとマスクされていない部分が溶けてプリント基板が出来上がります

Pick Up!