Z80-MBCのI/Oで遊んでみた(MCP23017と82C55)

Z80-MBCのI/Oで遊んでみる前に、I/Oマップを確認して空きアドレスを確認する。
ソースファイル(S221116_R100218_Z80.ino)を眺めてATMEGA32A上にあるI/Oマップを書き起こしてみた。

IOadd WRITE READ
0x00 USER LED USER KEY
0x01 SERIAL TX SERIAL RX
0x02 READ BOOT PHASE 2 PAYLOAD
0x03 GPIOA write GPIOA read
0x04 GPIOB write GPIOB read
0x05 IODIRA write ERRDISK
0x06 IODIRB write READSECT
0x07 GPPUA write SYSFLAGS
0x08 GPPUB write DATETIME
0x09 SELDISK
0x0a SELTRACK
0x0b SELSECT
0x0c WRITESECT

0x0cまで使われているので、それ以降のI/Oは自由に使えそうだ。

まずはMCP23017で遊んでみる。

Aポートは入力で、Bポートは出力として、CP/MのMBASICでプログラムを組んでみる。
ついでに日時の表示も行ってみた。

 
10 PRINT "I/O test"
20 SECONDS = INP(7)
30 SECONDS = INP(8)
40 MINUTES = INP(8)
50 HOURS = INP(8)
60 DAY = INP(8)
70 MONTH = INP(8)
80 YEAR = INP(8)
90 PRINT "THE TIME IS: ";HOURS;":";MINUTES;":";SECONDS
100 PRINT "THE DATE IS: ";DAY;"/";MONTH;"/";YEAR
110 PRINT
120 PRINT "Port A is input"
130 PRINT "Port B is output"
140 PRINT "Poat A => B"
150 PRINT "Port A = 0xFF is end"
160 OUT 5,255
170 OUT 6,0
180 OUT 7,0
190 OUT 8,0
200 PA = INP(3)
210 OUT 4,PA
220 IF PA=255 THEN END
230 GOTO 200

次はポケコン用に作った82C55ボードをつないでみる。
まずは、Z80から直で出ている信号からI/Oに必要な信号を82C55ボードをつなぐための拡張ボードを作成。

リセット信号がZ80ではLでリセットされるのに対し、ポケコンではリセット時にはHが出力されるので、トランジスタを使って信号を反転させてある。

拡張ボードを実装してみたところ。

早速82C55ボードを接続してテストしてみる。
ポートA,Bは出力に、ポートCは入力に設定。
あとはポートA,Bにデータを出力しながら、ポートCの値を読み取って表示するプログラムを組んでみる。

 
10 out &h23,&h89
20 for y=0 to 255
30  out &h21,y
40  for x=0 to 255
50   out &h20,x
60   a=inp(&h22)
70   print a
80  next
90 next


出力については問題ないが、I/Oの読み取りはできないようだ。
ソースファイル(S221116_R100218_Z80.ino)を読んでみると、I/Oの読み取りに関しては、ATMEGA32Aで使用しているI/Oアドレス外を指定した場合ATMEGA32Aから0が出力されるようになっている。


ソースファイルからどう直せばいいかある程度の見当はついているけど、果たしてうまくいくだろうか。
ATMEGA32をArduinoの環境で使うには、若干準備が必要らしいのでまずはその準備をしなければ。

カテゴリー: Z80-MBC, 電子工作 | コメントする

Z80-MBCを作ってみた

先日書いたZ80-MBCの部品セットについて。
セットについているATMEGA32にはすでにファームが書き込み済みで、最大の難問である書き込みは行わずICソケットにZ80やらICを差し込んでしまえばすぐに動作してくれる。(CP/Mはまた別に書き込む必要がある)

ユニバーサルエリアには IOエキスパンダのMCP23017RTCのDS1307+を搭載

特にRTCについてSOPタイプのDS1307ZN+T&RTRにしなかったのは、全体のデザイン的にDIPタイプの物を使ったほうが統一感があったし配線が楽だから。


裏面の様子。

すでにCP/MやMBASICで少し遊んでみたけど、それはまた後日。
ポケコン用に作った82C55ボードが繋がらないか思案中。

カテゴリー: Z80-MBC, 電子工作 | コメントする

ORANGE picoを作ってみた

何気に面白そうだったので、ORANGE picoType Dを作ってみた。

JP6,7と8,9はスライドスイッチに置き換えて切り替えやすくした。
特に、JP6,7はシリアルポートとUSBをつかさどるサブCPUとの切り離しを楽に行えるようにした。
ORANGE picoのほかにIchigoJamも作ってみたけど、Ichigo Jamは正直使い勝手が微妙。グラフィックを扱うにもPanCakeが必要でディスプレイを切り替えながらか2台準備して両方表示させるかしないとならない。
変数も整数しか扱えないし、子供向けなのはわかるけど、逆に取っつきにくくてほとんど放置状態。
ORANGE picoはその辺整数だけでなく実数も使えるようだし、グラフィックも普通に使えるので、そこそこ楽しめそうだ。
ただ、遊んでみて気づいたことだが、PS/2接続のキーボードではカナ入力できるのに、USB接続のキーボードの場合カナ入力ができなかったり、ディスプレイ(テレビ)出力では正しく動く表示できるものが表示先をLCDにした場合に正しく表示できない場合があったり、スクリーンエディタが思った通りに編集できなかったりと難点がないわけでもない。

ついでにプリンタも買ってつないでみた。
プリンタをつなぐ場合、プリンタに付属しているケーブルの色に惑わされてはいけない。
付属の取説は見事にケーブルの色に惑わされていて間違った内容になっているので注意。
プリンタ本体に刻印されている信号が正解で、正しく接続すればプリンタ用電源とORANGE picoのGNDを接続する配線も必要なくなる。
写真だとわかりにくいので、文字を書き足しておいた。

下が印刷した結果。

ナダ電子製AS-289R2プリンタシールドではないので、lptコマンドでは汎用プリンター(101または102)を選択する必要があるが、取説ではlpt 1となっている。
まあどっちでも使えるっぽいけど、プリンタ側とグラフィックを扱う命令が異なるっぽいので注意が必要かも。
また、一度lpt 1を実行した後にlpt 101と打たないと汎用プリンタが使えないのでこちらも注意。
で、文字コードについてデフォルトの状態(写真左)だとカナ文字が印字できないのだが、ダメ元でESC/POSコマンドで文字コードを選択してみたらカナ文字が印刷できるようになった(写真右)。

他にもZ80-MBCの部品セットも買って作ったので、いろいろいじってみる予定。

カテゴリー: ORANGE pico, 電子工作 | コメントする

オーディオ環境をでっちあげてみた

ラズパイマガジン 2018年4月号の付録を作ってみて、以前作ったアンプや買うだけ買って作ってなかったイコライザなとを組み合わせてみた。
とりあえず全景。

今回は、100円ショップで売っていたアクリル製品を利用している。

普段はアクリルの残材などを使って作っているスタンドですが、ちょうどいい大きさの物があったので、今回はそれを買って利用。
他にもアクリル板をコの字に加工したものがあって、サイズがちょうどだったので2つ使って棚状に組み合わせて使っている。そのまま重ねてもずれたりするので、ここは残材のアクリル板を接着して固定している。

上段の様子。

上からラズパイマガジン 2018年4月号の付録。
次におとなの科学で売られていた真空管アンプ
そしてベビー・アンプ [ PS-3238 ]TELキット 5分割グラフィックイコライザ
その下に電源(12V)と音源の分配ユニット。
スピーカーは以前作った物を塗装した。

中段の様子。

以前作ったローノイズパワーアンプ [AKIT-326]と新たに作ったスピーカー
枠に吊るされるように取り付けてあるのがオーディオ スペクトラムインジケータ
作るだけ作って使ってないものも置いてあるけど。

スペアナ用に単独で電源を用意すれば特に問題ないけど、ACアダプタをこれ以上増やしたくないため分配ユニットから電源を取るとようにしたのだが、そうするとノイズが回ってくるので、間にOPアンプを使ってバッファを設けようと考えた。

そしたらちょうど秋月のNJM4580DD使用ヘッドホンアンプキットというのが目的にぴったりだったので、これを使うことにした。
電源は3端子レギュレータキット 5V DCジャック版(DCJ版)で5Vに降圧している。

背面の様子。

分配ユニットで配線を減らそうとしたけど、やっぱりごちゃごちゃしてしまう。

概要は下の図の通り。

電源は一括でON/OFFできるようにつくってある。
図にはないけど、ユニット前面のジャックに別の音源を差すとそちらが優先されるようになっている。

今回、このオーディオラックを作ってみて、久々にいろんな曲を聴いてみた。
やっぱスペアナついていると、曲を聴いていて面白いよね。
この手のキットって、ほかの面白そうなキットも含めて最近は輸入物ばかりなんだけど、日本のメーカーも数が限られているからなぁ・・・

カテゴリー: RaspberryPi, 電子工作 | コメントする

VPNサーバの自力での構築はあきらめた

何年も前からVPNサーバの構築に挑んでいたが、結局あきらめた。

もともとは仕事の関係でスマホでL2TP/IPsecを使ってVPNのサービスできないものかと検討を始めたことがきっかけで、そのとき自分の家とVPNをつなげたら外出先で自宅のPCいじれるんじゃねってことで、ネットでググりながら構築を始めたのが最初。

どうやらPPTPよりもL2TPの方が制限事項もなくIPsecと組み合わせてセキュアにつなぐことができるらしいとのことだが、そのころはPPTPが使えるブロードバンドルーターはあっても、L2TPに対応しているルーターは皆無だったので、自分で構築するしかなかった。

旧ひとりごとでも何度か書いたような気がするけど、最初はPCでLinuxを動かしてOpenswan等を使って構築。
しかし最初の数分は通信ができるけど、それを過ぎると途端に通信できなくなる。
いろいろ試してみたけどダメだった。

その後引っ越しして、さらに時間が経った頃にRaspberry Piが発売された。
今度はRaspberry Piで同じように構築してみようと思い実行してみたが、やはり通信できるのは初めのうちだけで、そのうちに疎通が途切れる状態。

PC+LinuxでやってもRaspberry Piでやっても全然だめで、どうしたものかと思いながら、amazonでL2TP/IPsecに対応したルーターがないものかと検索したところ、値段的に高いものの対応しているルーターがいくつか見つかった。
数年間やってもうまくいかず、今後も見通しが立たないのであれは2万円ぐらいまで出してもいいかなと思ってたところ、手ごろな値段のルーターを見つけることができた。
PLANEX 10/100Mbps 有線タイプ VPNルータ VPN-41FE IPSec・L2TP・PPTP対応
結局このルーターを購入してVPNを使えるようにした。

VPNサーバを構築・試験するために作ったラック。
100円ショップで買ったパーツを組み合わせて試験ラックを作った。
Raspberry Piが3台あり、元VPNサーバ用、VPN接続確認兼WardPress練習兼プラグイン検証用のWebサーバ、試験用LANと室内LANをつなぐための踏み台サーバ。
さらにLATEPANDAがWindows版の踏み台サーバとしてつながっている。
VPNは試験用LANにつながって、直接室内LANには入れないようにしてある。

結局VPNは製品を使ってしまったので、これらの機器については今後どうしようか悩みどころだ。

カテゴリー: ひとりごと | コメントする

ラズパイマガジン 2018年4月号の付録をいじってみた

ラズパイマガジン 2018年4月号の付録について、筆者のページにて4月4日版の最新ソフトが公開されていたので、導入してみた。
リモコンから、再起動、シャットダウンの機能が追加されていた。
しかし、自分としてはIPアドレスの表示の機能がほしかったので、自力で追加してみた。

システムメニューの空きスペースに無理やりIPアドレスの表示を突っ込んでみた。
eth0はつながっていないので赤で000.000.000.000の表示をしている。

ソフトウエアの変更点だけをdiffで取ってみた。
もう少しうまくできると思うんだけど、Pythonをはじめから勉強する必要ありそうだな。

 
root@superdac:/usr/local/bin# diff superdac.py superdac.py.orig
350,357d349
<                               os.system('ip a show dev eth0 | grep "inet " | sed -e \'s/^ *inet //\' | cut -f1 -d "/" > /usr/local/bin/ip-eth0.txt')
<                               fe=open('/usr/local/bin/ip-eth0.txt')
<                               ipeth=fe.read()
<                               fe.close
<                               os.system('ip a show dev wlan0 | grep "inet " | sed -e \'s/^ *inet //\' | cut -f1 -d "/" > /usr/local/bin/ip-wlan0.txt')
<                               fw=open('/usr/local/bin/ip-wlan0.txt')
<                               ipwlan=fw.read()
<                               fw.close
366,378d357
<                               draw.text((0,58) , 'IPアドレス'      , font=jpfont, fill='#FFCC00')
<                               draw.text((0,72) , 'eth0'            , font=jpfont, fill='#88FFFF')
<                               if ipeth == '':
<                                       draw.text((0,86) , '000.000.000.000' , font=jpfont, fill='#FF0000')
<                               else:
<                                       draw.text((0,86) , ipeth             , font=jpfont, fill='#44FF88')
<
<                               draw.text((0,104), 'wlan0'           , font=jpfont, fill='#88FFFF')
<                               if ipwlan == '':
<                                       draw.text((0,118) , '000.000.000.000' , font=jpfont, fill='#FF0000')
<                               else:
<                                       draw.text((0,118), ipwlan            , font=jpfont, fill='#44FF88')
<
root@superdac:/usr/local/bin#

 

カテゴリー: RaspberryPi | コメントする

スマホ用Bluetoothリモートシャッター

ネットをウオッチしていたところ、ダイソーでBluetoothを使ってスマホのカメラのシャッターが操作できる商品があるとあった。
早速自分でも手に入れて確認してみる。

使い勝手は、まあ悪くない。
三脚を使って写真を撮ろうとすると、ズーム操作やシャッターが押しにくいと感じることがある。
ダイソーでスマホ用Bluetoothリモートシャッターを発見→分解→ちょい改造:ウェブ情報実験室で改造記事を読むと、ボリューム調整ができるように改造しています。
しかし記事のままの改造では、手持ちのスマホの場合、ボリュームの調整はそのままズームの調整だけでシャッターを切ることはできません。
そこで、ボリューム調整(ズーム調整)とシャッターが使えるようにタクトスイッチ3つ使ったものにしてみた。

新規で買ったのはタカチ電機のコイン電池が入れられるCS75Nと専用の基板ぐらい。
後は手持ちのタクトスイッチとスライドスイッチを使用。

実際組んでみたところ。
ポリイミドテープで絶縁して両面テープで固定。
面倒なのはICから直接配線するところぐらいで、あとか既存のスイッチのパターンやチェック用のパターンを利用して配線。

ケースに組んだところ。

ボリューム(V-,V+)でズーム調整で、シャッターボタンでシャッターを切ることができる。
使いやすいようにタクトスイッチは三角に配置してみた。
これで三脚を利用した撮影がやりやすくなった。

ただ、この改造はグレーゾーンでもある。
もとの商品は技適を取ってあるが、改造したことで技適的にどうなのだろうか。
スイッチを追加して外見を変化しているだけで、無線上の特性は変わってないはずだが。
室内だけで使って、あまり多様はしないほうがいいかもしれない。

そういえば以前、携帯電話端末関係の仕事で技適がどうこうってことで苦労したことがあったな。
かなり面倒で落としどころを見つけるまで結構時間がかかったような気がする。

しかし、某店では技適取ってないだろ的な商品や怪しい名称の機器や明らかにコピー品を売ってたりしてるし実際のところどうなんでしょう。

カテゴリー: 電子工作 | コメントする

電車で見かけたヴァカ者ども その2

電車で見かけたヴァカ者どものその第2弾。

1ヶ月か2ヶ月ぐらい前だったと思ったけど、ネタにしようしようと思ってたらこんなに時間が経ってしまった。

それはともかく駅を利用していると、意味不明な行動を行っている奴に出くわすことがある。
一つ目は、まっすぐす進めばすぐに改札機があるのに、なぜか進路を変えて自分の前に割り込んできたバカ女。
磁気カードの定期や切符で対応してないからやむなくというわけでもなく、普通にICカード式の定期を出していた。
なんでわざわざ進路を変える必要があるか理解できない。


そういえば、ICカードをこれでもかってぐらいに改札機にたたきつける奴もいるけど、一体何考えているのか理解できない。

もう一つは、並ぼうとしたところを横から割り込まれた。

横から見てたら並ぼうとしているのがわかるだろうに、自分が合間を詰めようとしている隙に割り込まれてしまった。
ほんとふざけんなって感じだ。

そういえば、先日、電車に乗ってたら出入り口付近の通路のど真ん中に座り込んでベルマークかなんかをハサミで切り出した奴がいた。
邪魔この上なかったので写真でも撮ろうかと思ったが、シャッター音をさせるのもアレなのでやめた。

他にもひゃっくりのように奇声を上げ続ける奴とか、最近見かけないけど電車の中でいきなりでかい声で歌いだす奴も見かけたのだが、そういった連中をどうにか排除できないものか。

カテゴリー: ひとりごと | コメントする

ラズパイマガジン 2018年4月号の音楽プレーヤーを作ってみた

ラズパイマガジン 2018年4月号の音楽プレーヤーがちょっと面白そうだったので、買って作ってみた。

リモコンはaitendoで売っていたものを使用。
リモコンは本に書かれている方法では、登録しても認識できなかったので、補足の方にあったirrecordのRAWモードで登録。
SDカードは相性があるようで、使えたり使えなかったりしたが、それ以上に横に飛び出ているのが見た目的にバランスが悪い。

USBメモリを使うように少し設定を変える。
また、RaspberryPi 2Bを使っているので、WiFiドングルを取り付ける。

見た目的に少しすっきりしてきた。
これでつながっているケーブルは電源とオーディオの出力だけ。
L型のコネクタならばもう少しすっきりするかな。

リモコンの方は、MENU,STOP,PAUSEに当たるものがないのでそれぞれ適当に割り当てて代用。
銀色のテプラで機能を表示、未使用な部分はテプラを貼った際の切れ端でマスク。

実際使ってみた感じでは、MP3のタグの文字コードによっては文字化けして日本語が正しく表示できないことがある。
アルバム選択画面で文字化けばかりだが、文字化けを起こしているのは古い時代にフリーソフトを使って取り込んだものばかりで、Windows Media Playerで取り込んだ最近の物だと正しく表示してくれた。
音質は悪くないと思うけど、自分の耳ではPCで再生した時やスマホで再生した時との違いがあまりわからなかった。
まあエンコードする際のビットレートや、アンプ、スピーカやヘッドホンなども影響するのだろうけど。

作ってみて面白かったけど、半田付けを楽しんだぐらいかな。
もう少しスキルがあればいろいろカスタマイズしたいところだけど、自分ではそこまでするほどのスキルもないし・・・

カテゴリー: RaspberryPi, 電子工作 | 1件のコメント

NanoPi NEO2とLattePanda

NanoPi NEO2だがpinピンアサインをよく見ると、USBが2ポート分出ている。
また、このままだと放熱板を下向きで扱うことになるのでなんか気になる。
そこで、USBポートと音声系のジャックを付けたベース基板を作ってみた。

コンソールからI2Cのメッセージが出っ放しだったのは、プルアップ抵抗をつけてみたところ全く出なくなった。

装着したところ。
 
GPIOコネクタはNanoPi NEOの場合24ピンだが、RaspberryPiに合わせて26ピンにしてある。
25番ピンはGNDにして26番ピンはNCにしてある。
秋月電子のRaspberry Pi キャラクタ液晶ディスプレイモジュールキット バックライト付をつないで表示させてみたところ。

ピンアサインは同じなのでそのまま使うことができた。

それとは別にLattePandaも買った。
追加で液晶モニタやタッチパネルを買って繋いでみたが、タッチパネルの右側に行くほどずれて認識して右端は全然反応しない。
キャリブレーションしても右端の方は認識できずハズレを引いたかと思ったが、秋月電子のよくある質問(Q&A)のところにドライバの更新で改善されるとあったので試したところ、今度は正しく認識するようになった。
LattePanda用のケースはいくつか見かけたが、ディスプレイ込みのケースは見つけられなかったので、アクリル板を加工してケースをつくる。
ちなみにLattePandaの上に載せてる透明のアクリル板は別途買ったケースのもの
最初はディスプレイまでつけようとは思ってなかったので、買ったケースの物をそのまま使っている。
余った底板はどうしたものか。

ちなみに冷却ファンはケースの説明書にあったようにLattePandaの表側に付けてある。

秋月電子マルツの商品ページを見ると基板の裏面の方に付けているのだけど、表側でも大丈夫なのかしら。

背面の様子。

フラットケーブル長すぎ。
どういう使われ方をするかわからないから長めに作ったんだろうけど、余長の部分は無理矢理ケースの部分に押し込んである。

あとはスタンド。
いつものごとく切り取った残材を利用。
というか、今回は残材がわりと多かった。


今回は、冷却ファンやコネクタをふさがないようにちょっと凝ってみたけど、電源用のUSBケーブルやHDMIケーブルとぎりぎりの場所になってしまった。

ちなみに今回買ったのは4GB/64GBのほう。
ストレージが32GB版の方が安いのだけど、そんな容量だどすぐ残り容量が枯渇してくるのは目に見えていたので、奮発して64GB版の方にした。
それに32GBの方はWindows10 Homeに対して、64GB版の方はWindows10 Enterprise LTSBで、2万円台後半の値段でハードとEnterprise版がセットっていうのは結構いいほうなのかな。
秋月電子のページ
マルツのページ

カテゴリー: Linux, PC, 電子工作 | コメントする