2017年11月4日土曜日

Binary translation!(部品の説明)

抵抗:LEDの電流制限用に使っています。
 電池のプラスとマイナスを直接コードで繋ぐとショートしてしまいます。
 これはコードが限りなく無抵抗の為、電流が沢山流れてしまうからです。
 LEDは消費電力が少ないことで有名です。
 電池にLEDを繋いでも少ししか抵抗がありません。
 なのでショートに近い状態となってしまいます。
 それを回避するために電池とLEDの間に抵抗を挟みます。

ダイオード:電気を一方向にだけ流す部品です。
 「右から左に電気が流れるのは良いけど、左から右には電気が流れないでほしい」そんな「電気の一方通行」を作りたい時に使う部品です。

クリスタル:一定周期でON-OFFしてくれる部品です。
 IC(CPU)速度を制御している、回路の時計みたいなものです。
 周期が早いほど回路が高速に動きます。
 もちろん周りの部品も早い動作に対応した物でなければ意味がありません。

ICソケット:ICを上に搭載する部品です。
 ICを付けたり外したりも可能です。
 部品によっては非常に熱に弱ものがあります、ハンダ付けをしている間に熱で壊れてしまうかもしれません。
 今回のキットで特に熱に弱い部品はIC(CPU)です。
 ICを直接ハンダ付けするのではなく、ソケットをハンダ付けしてからICを搭載するように添付しました。
 完成した後にプログラムの変更をしたい場合もICをソケットから外せるので便利です。

赤LED:ごく一般的な「砲弾型」の赤色LEDです。
 LEDは日本語だと「発光ダイオード」と言います。
 「発光=光る」と「ダイオード」が合体してますね。
 LEDにはアノードとカソード(プラスとマイナス)の極性があります。
 ダイオードの特性(電気の一方通行)も持っています。
 電源と直接つなぐと抵抗値が少なくショート状態になる為、通常は抵抗と一緒に使います。

コンデンサ1コンデンサ2:電気を貯める部品です。
 バッテリーと似てますが、1秒分すら電気を貯められません。
 コンデンサ1は容量の大きいコンデンサです。
 USB端子から5Vが供給されIC(CPU)に給電されます。
 ICには常にきちんとした電気の供給をしないといけません。
 そのため容量の大きいコンデンサを電源とICの間に挟んでいます。
 コンデンサ2はクリスタルの前後についています。
 クリスタルもシビアな部品(時計)です、きっと必要なのでしょう。
 こちらはクリスタルの説明書に「前後に付けましょう」って書いてあったので付けただけです、メーカーの推奨回路に従ったものです。

7セグメントLED:「8」と「.」が付いた表示器です。
 8を表示するのにナゼ「7セグ」と呼ばれているのか?
 よく見て下さい、8を表示するには7つの光る場所でできていますよね?
 3本の横棒(上段、中断、下段)
 4本の縦棒(右上、左上、右下、左下)
 合計7つのセグメントで構成されています。
 「.」があるから8つのセグメントでしょ!
 おっしゃる通り、今回は8セグメントの部品です。
 でも「7セグメントLED」と呼ばれています。
 開発当時は「8」だけ表示できるの部品で、「.」は後から付加され たのかもしれませんね。

USBコネクタ:USBのtypeBを差し込む部品です。
 今回はUSBコネクタから電源を供給します。
 パソコンに繋いでも給電できるし、モバイルバッテリーからも給電できるし、なにより今回の回路が5V動作の部品でできているのでUSBでの給電を選定しました。

スイッチ:単なるON-OFFスイッチです。
 ON-OFFだけできる「トグルスイッチ」と言う部品です。
 A点とB点の間に電気が流れるか否かだけをセレクトするものです。
 2本足の部品で十分だったのですが、カチカチ操作しているうちに基板から部品がもげてしまう危険性を減らす為に3本足の部品を選びました。

IC:ワンチップ型のマイコンです。
 CPUとRAMとROM(Flashメモリ)とGPIOと…色々合体しているICです。
 ATMEGA328という型番で、ArduinoUNOに使われているICです。

基板:すべての部品を搭載する板です。
 部品を搭載してハンダ付けするベースとなる板です。
 裏と表の2面に配線がされています。

2017年10月21日土曜日

Binary translation!(どうやって作ったか)

この商品のCPUはATMEGA328と言うICを使っています。
このCPUはArduinoUNOに使われているICです。

最初はArduinoUNOのシールドで作ろうと考えていました。
しかし「何か作るたびにArduinoを買う」という事が「もったいない」と思いました。
そこで今回は「Arduinoで開発」して「必要な部分だけ移植」する設計にしました。
試作はArduinoとブレッドボードで、製品はオリジナル基板で。
そんな思いから作られた商品となっております。

1.作りたいものに必要な部品を買ってきました。
 #スイッチ8個、LED8個、7セグメントLED5個

2.ブレッドボードに回路を組んでArduinoと接続してプログラムを書きました。
 #スイッチには逆流防止用にダイオードを付加しました
 #LED用には電流制限用に抵抗を付加しました
 #どちらの部品もラボにあった物を使いました

3.Arduinoで作ったプログラムが入ったCPUをブレッドボードに移植し、動作に必要な部品類を付加して動作確認をしました。
 #5V電源供給と16MHzクリスタルを付加しました

4.製品用に部品の配置(レイアウト)を考えました。
 #なんとなく部品を並べてみただけ

5.レイアウトを元にCADソフトで基板図を書きました。
  #アクリルで基板形状を作り部品搭載確認しました

6.基板屋さんに基板を作ってもらいました。
  近所の町工場で試作として5枚を、3日くらいで作ってくれました。

7.できあがった基板に部品をハンダ付けして動作確認、バッチリ動きました!

おおまかな流れとしてはこんな感じです。

もちろん失敗や苦悩なんかも沢山ありましたよ。

「なぜこの商品を作ったか」や「試作機がどんなだったか」は、下記ブログを御確認下さい。
n進数の話

2017年10月20日金曜日

Binary translation!(作り方)


こちら側から部品を搭載します。
反対側からハンダ付けします。






















背の低い部品からハンダ付けしていきます。

1.抵抗8本を基板のR1~R8にハンダ付けします。
  抵抗には取り付け向きがありません。
  しかし8つの抵抗の色の向きを揃えた方がカッコイイでしょう。

2.ダイオード8本を基板のD1~D8にハンダ付けします。
  ダイオードには取り付け向きがあります!
  部品の片側に黒線が引かれています、基板上のシルク印刷の部品絵にも線が書いてあります。
  線の向きを合わせてハンダ付けしてください。

3.クリスタルをQ1にハンダ付けします。
  クリスタルには取り付け向きがありません。
  しかし部品の上に文字が書いてあるので基板の文字と同じ向きに揃えた方がカッコイイでしょう。

4.ICソケットをIC1にハンダ付けします。
  基板上のシルク印刷の部品絵に切り欠きがあります、部品にも切り欠きがあります。
  切り欠きの向きを合わせてハンダ付けしてください。

5.赤色砲弾型LEDをLED1~LED8にハンダ付けします。
  LEDには取り付け向きがあります、足の長さで判別します。
  足の長い方が上(スイッチ側)にしてハンダ付けしてください。

6.コンデンサ1はC1に、コンデンサ2はC2とC3にハンダ付けします。
  コンデンサに取り付け向きはありません。
  コンデンサ1は部品の足の幅が広く、コンデンサ2は部品の足の幅が狭いです。
7.7セグメントLEDを7SEG1~7SEG5にハンダ付けします。
  基板上のシルク印刷の部品絵にピリオド(小数点)が描かれています、ピリオドの位置が同じになるように向きを合わせてハンダ付けしてください。

8.USBコネクタをCON1にハンダ付けします。
  USBコネクタには向きがありますが、1通りしか刺さる方向が無いので間違える事はないでしょう。

9.スイッチをS1~S8にハンダ付けします。
  機能的には向きはありませんが、外形的に向きがあります。
  向きを揃えてハンダ付けした方がカッコイイでしょう。

10.ICをICソケットに差し込む。
  ICには向きがあります、ICソケットの切り欠きとICの切り欠きを揃えて差し込んでください。
  ICにはプログラム書き込み済みです。
  「ICピンそろった」という工具で、ICの足を揃えてあるので比較的簡単に刺さると思います。
  くれぐれも、無理に力を入れて足を曲げないように注意してください。

お疲れ様でした、これで完成です。

Binary translation!(キット品に入っているもの)


基板       1枚

抵抗       8本 (8本とも同じものです)

ダイオード    8本 (8本とも同じものです)

クリスタル    1個

ICソケット    1個

赤色砲弾型LED   8個 (8個とも同じものです)

コンデンサ1   1個 (足の幅が広いコンデンサです)

コンデンサ2   2個 (足の幅が狭いコンデンサです)

7セグメントLED  5個 (5個とも同じものです)

USBコネクタ    1個

スイッチ     8個 (8個とも同じものです)

IC        1個


すいません、後日写真を掲載します。

2017年8月20日日曜日

n進数の話(試作機完成!)

そんなわけで試作機をアクリル板にラッピングワイヤーで作りました。

表面
アクリル基板の上に部品配置してアクリルの蓋をかぶせてみた!

裏面
線は足に巻いてあるだけ。
配線間違えしてても巻いた線を外すだけで修正可能!

横から
こんな感じ。

いよいよ電源繋いで動作確認するよ!

2017年7月13日木曜日

n進数の話(試作機作る!)

前回は、段ボールに基板図のプリントアウトを張って部品を搭載してみました。

今回は実際に配線して電気を流し動作確認までしようと思います!

今回は「実際の大きさ」で「実際の配置」をして動作確認してみたかったので
蛇の目基板は使わないことにします。
とは言え、段ボール基板だと燃えると嫌なのでアクリルで作ろうかと思います。

まず基板図から「基板形状」と「穴」の部分だけ抽出してレーザー加工機を使い
アクリルで基板を作ってみました。





















ピンボケですいません…、透明アクリルの撮影は難しい。

これに部品を差し込んで、配線します。
どうやって配線するかって?
「ラッピングワイヤー」で配線します!

まず下記のような「長足丸ピンソケット」を使います。















アクリル基板に長足丸ピンソケットを差し込みます。



















こんな感じ、またピンボケ。

このようにアクリルに長足ピンソケットを差し込んでいき、ソケット部分に部品を差し込んでいきます。

細い足の部品にラッピングワイヤーは難しいです。
足の短い部品もラッピングワイヤーは難しいです。
そんな事から全ての部品を長足ピンにしてラッピングワイヤーします。

次は全穴に長足ピンソケット刺して、長足ピンソケットに全部品搭載して、ラッピングワイヤーで配線するまで一気に進める予定です!

2017年6月30日金曜日

n進数の話(変換機作る?)

2進数、私は指折り数える事が出来ますが友人は「無理」と。
まぁそうでしょう、いきなりは難しいでしょうね。
しかも16進数だったりすると足の指まで使わないと数えられません!
これは私でも無理です。

そこで「2進10進16進変換器を作っみようかなー」なんて考え始めました。

お得意の「Arduinoのシールド」で作ればいいかな?
と思ったのですが、Arduinoは高いのでプレゼントしたくありません。
でもArduinoの開発環境の手軽さで作りたい……。

そんな事からArduinoで作ってCPU(ATMEGA328P)を引っこ抜いて
実装する方法でプレゼントを作る事にしました。

1.仕様を考えよう!
 たしか2進数を10進数にしたいって言ってたような…
 脳内で考えましたw
 スイッチを8個(8bitまで計算できるように)。
 確認用のLEDを8個(明示的にどのbitが立ってるか見せる為)。
 7セグメントLEDを3個(255まで表示する為)。
 更に7セグメントLEDを2個(16進数の0xFFまで表示する為)。
CPUはATMEGA328Pで。
 あとは適当にLED用の抵抗とかCPU用のコンデンサかな。
 電源は…USB給電で良いかなー。
2.回路を考えよう!
 みんなのラボにはEagleの安いライセンスがあります。
 私はEagleでイキナリ部品を並べます。
 そして配線をします。
 最初はCPUとスイッチとLEDと7セグ。
 次に必要に応じたて抗やコンデンサ。
 できました!
3.基板図を引こう!
 いい具合に部品を配置します。
 この時点で基板の外寸が決まります。
 次に配線です。
 私は配線が大好きです、だってパズルみたいじゃないですか!
 配線が出来たら仲間(みんなのラボのメンバー)に見てもらいます。
 #仲間がいるって良い事ですよ!
4.試作します
 実寸大の基板図をプリンタで刷ります(表と裏を別々に)。
 段ボール紙に印刷したものを貼ります(表裏ずれないように)。
 段ボールにリード部品用の足穴開けます(キリとかで)。
 段ボールに部品を乗せてみます(部品どうしがぶつからないか)。
できました!

抵抗とコンデンサは未実装だけど、なんとなく部品同士の干渉はナシ!


















でも…違う角度から見るとスイッチの裏にLEDが隠れちゃってるな。

こういう部分は実際に組み上げてみないと気が付かない部分ですね。

今日は疲れた、続きはまた今度にします。

2017年6月9日金曜日

n進数の話(続き)

今度は違う人から質問が来ました。
その人は「16進数」が知りたいらしいです。

「いやいや2進数と同じでしょ!」と思うのですが、わからない気持ちも理解でします。

前回のBLOGにも書いたように
10進数は「じゅう」って言ったら負け。
2進数は「に」って言ったら負け。
同じように考えれば16進数は「じゅうろく」って言ったら負けなだけなのです。

その人曰く
 人間界には0~9の10個の数字しか存在しない。
 2進数の場合0と1を使えば良い。
 8進数の場合0~7を使えば良い。
 ところが16進数の場合0~9では表現できない!
 0~15だと、既に2桁になってるし!
 ってかAとかBとか英文字でてきて意味わかんないし!
との事。

Aは一文字、つまり一桁ですよね。
B、C、D、E、Fも一桁ですよね。
16進数の場合0~F迄で16個の数字を表現します。
0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F
16個あるでしょ?

Fの次は?
Gではありません。
16個目の次は桁上がりです。
つまり10です。

下記、左が10進数で右が16進数の数字です。
0=0  1=1  2=2  3=3  4=4  5=5
6=6  7=7  8=8  9=9 10=A 11=B
12=C 13=D 14=E 15=F 16=10
16の所で桁上がりして10になりました。
念の為、もう少し途中経過を書きますね。
43=2B
94=5E
ですね。

こんなのどうやって計算するの!?

落ち着いて下さい、簡単です。

まず16進数を10進数に直す方法を書きます。
例として16進数の5Eを10進数にしてみましょう。
まず上の桁が5ですね、つまり16が5個集まっているのですよ。
まず16進数の50を10進数に直すと「16×5」で80です。
あとは下の桁のEですが…これは数えるしかないですね。
9、A、B、C、D、E = 9、10、11、12、13、14
16進数のEは10進数の14ですね。
さっきの80(50の10進数)と、今の14(Eの10進数)を足すと94です。
なので16進数の5Eを10進数に直すと94という事です。

A~Fを英文字として認識するのではなく、9以上の一桁の「数字」として認識すれば良いのですよ。
応用すると「20進数の場合は0~J迄を使えば良い」感じですね。

わかりましたか?
これで10進数以上も対応できますね!

2017年4月21日金曜日

n進数の話

友人から「2進数」について質問されました。
そこで私が「2進数」を説明するために考えた事をココに書いておきます。
学術的に正しい説明かどうかは知りません。
ただ友人に理解してもらえるように書いたつもりです。

まず「2進数」とは何か?
 10進数って1桁が0~9までの10個の数字があるよね。
 10個の数字があるから10進数って言うのだと思うん。
 同じ考え方をすると2進数は1桁が0と1しかありません。
 2個の数字しかないから2進数って言うのだと思うん。

ゲームをしよう!
 10進数ゲーム!
  ルール:「じゅう」って言ったら負けね
   0(ぜろ)
   1(いち)
   2(に)
   3(さん)
   4(よん)
   5(ご)
   6(ろく)
   7(なな)
   8(はち)
   9(きゅう)
  その次は?「じゅう」って言ったら負けだよ?
   なので10の事は「いち、ぜろ」って言えばいい。
   「いち」と「ぜろ」の2つを言ったよね?
   つまり、それが2桁なんだ。
 では同じように2進数ゲームをやってみよう!
  ルール:「に」って言ったら負けね
   0(ぜろ)
   1(いち)
  その次は「2」を何て言えば良いの?
  そもそも違うよね?2は使わないんだから。
  10進数の場合、10は2桁ですよね。
  2進数の場合、2は2桁なんですよ。
  なので0、1の次は10なんです。
  10進数で「じゅう」って呼ばれる一桁は存在しません。
  2進数でも「に」って呼ばれる一桁は存在しないんですよ。
  では話を戻して
   0(ぜろ)、1(いち)の次は10「いち、ぜろ」ですね。
  せっかくなので、もっと先まで数えてみましょう。
  0(ぜろ)、1(いち)、
  10(いち、ぜろ)、11(いち、いち)、
  100(いち、ぜろ、ぜろ)、
  え?もぉ100なの?
  そうですよ、10の次は11、これはわかるでしょ?
  11の次は12、、、いや2は使っちゃダメだって。
  んじゃ繰り上がりして21、、、いや2入ってるし(笑)
  そしたら桁上がりするしかなでしょ、と言う事で100。
  すぐ桁上がりしちゃうので、もう少し数えてみよう!
   0、1、
   10、11、
   100、101、
   110、111、
   1000、1001、
   1010、1011、
   1100、1101、
   1110、1111、
   10000、、、、、
  わかった?これが2進数ね。

指折り数える事も可能だよ!
手の指、両手で10本あるよね?(ない人ごめんなさい)
 まず10進数。数が増えるごとに指を折ってみよう。
 両手を開き、手のひらを自分に向けてください。
  0は両手を開いてます。
  1は右手の親指を折りましょう。
  2は右手の親指と人差し指を折りましょう。
  3は右手の親指と人差し指と中指を折りましょう。
  4は右の親、人指し、中、薬
  5は右の親、人指し、中、薬、小
  6は右の親、人指し、中、薬、小、左手の小
  7は右の親、人指し、中、薬、小、左の小、薬
  8は右の親、人指し、中、薬、小、左の小、薬、中
  9は右の親、人指し、中、薬、小、左の小、薬、中、人
  10は両手の指、全部折るよね。
 次は2進数、とりあえず片手だけで十分かも。
 右利きだと思うので、右手を例に書きます。
 まず右手を開き、手のひらを自分に向けてください。
 指を伸ばしている状態を0、指を曲げている状態を1とします。
  右手の指5本伸ばしている状態は「00000」ですよね?
  つまり0は「00000」です。
  1は「00001」です、つまり親指だけ折り曲げですね。
  2は「00010」です、つまり人差し指だけ折り曲げです。
  3は「00011」です、親と人を折り曲げです。
  4は「00100」です、中だけ折り曲げです。
  5は「00101」です、親と中です。
  6は「00110」です、人と中です。
  7は「00111」です、親と人と中です。
  8は「01000」です、薬です。
  9は「01001」です、親と薬です。
  10は「01010」です、人と薬です。
  11は「01011」です、親と人と薬です。
   :
   :
  31は「11111」です、親人中薬小の全指を折ります。
 つまり2進数の場合、片手で0~31まで数えられるんですよ!

とりあえず、こんな感じ。
難しいですか?
後日もう少しわかりやすいように絵か写真を入れるかも。

P.S.上記の事を応用すれば何進数でも対応可能だよね!

2017年2月23日木曜日

VECTREXのおはなし

「みんなのラボ」には関係ない、WAKAの個人的な話です。
#自分用のメモ&今後同じ事に遭遇する人の為の記録です

WAKAは「VECTREX」ってゲーム機を持っています。
1982年くらいに出たらしいベクトルスキャンモニタ付きのゲーム機ですね。
#いわゆる「高速船」ってやつです
VECTREXには1つのゲームが入っています。
しかし1つだけなので飽きてしまって最近は全く遊んでいませんでした。





















そう言えばVECTREXにはカートリッジらしきものを差し込む穴がありますね。
「何かカートリッジが出てて別のゲームができるのかな?」と思い、ちょっと調べてみました。









なんと、沢山のゲームが売られていたではありませんか!
ん?ゲーム以外にも変なものが出てるぞ??
BASICインタプリタのカートリッジ?

はい、買いました。











どんな物か?詳細は下記ページを見てください。

最初はカートリッジを差しても何の変化も無く元々入っているゲームが立ち上がるばかり。
「もしかして壊れてる?」とも思いました。
しかし何度も何度も抜き差しして、電源の入れ直しをしていたら、、、動きました!
長年カートリッジを差していなかったのでコネクタ部分が汚れていたのかもですね。

英語読みたくない病なので、全く使い方が解りません!
日本語で検索したらツイッターにちょっと載ってました。
うーん、この人とは違う挙動だなー、、、。

現時点での挙動を以下に書きます。
1.Vectrex32カートリッジをロゴ面を上に差し込む。
2.Vectrexの電源を入れる。
3.Vectrex本体のロゴが出る。
4A.ほとんどの場合、内臓ゲームが立ち上がる。
4B.たまに「Vectrex32 1.14 @GCE 2016」が表示される。
5B.そのまま固まるか、「WAITING」って出て固まる。
運良くカートリッジ起動できても即固まって何もできない!

Vectrex本体を持っている友人がいるので、カートリッジの起動確認をしてもらおう、、、。
もし起動したら本体(たぶんコネクタ部分)がヘタってるんだろうなー、、、。

P.S.
Vectrex32にUSBケーブルを差してもWindowsからは何も認識されない。
Vectrex32にUSBケーブルを差し、Vectrex32をVectrexに差し
Vectrex本体の電源を入れるとWindowsから見える!
「CDC + MSD Demo」ってのが見える、現状ドライバとか何入れるか不明。

今日はココまで!

Vectrexや高速船、Vectrex32をお持ちの方、お友達になってくださーい!