夢色☆あんどろいど

中華パッド&スティック、Raspberry Pi、Arduinoなど、怪しいデジタルガジェット探偵団!!

Arduinoで超ミニBASICパソコンが作れる!(その5~生チップ版不具合解消)

前回のエントリでATMega328Pの生チップに書き込んだTinyBASICではテレビ出力が出来なかった件ですが、やはり睨んだ通り動作周波数によるもののようでした。ただし、TVout自体は3.3V、内蔵RC8MHzで動作している事例がありますので、HalfByte TinyBasicがそういう仕様なっっている...ということなのだと思います。
解決方法としてはソフト側とハード側の2つのアプローチが考えられますが、私は迷わず後者を選択。なんせ、クリスタル1個挿せば済む話ですからね~ 中身はUNO用にコンパイルしたバイナリをプートローダ込みで書き込んだものです。

A2018021401.jpg

170Hのミニブレッドボードでテストのために頻繁に抜き差ししたら、とうさうチップの足を折ってしまった(泣)ので、ダメージの少ない400Hのボードに変更しました。余裕があるのでキーボードやサウンドの回路も作れます。
↓無事、テレビ出力に成功! ノイズもないようです。
A2018021402.jpg

まあ、この生チップ版よりも、冷静に考えると手間もコスパも安定性でもNANOを選択する方が賢明だろうと思います。でも、生のパーツの状態から自分で組み立てた!という満足感はかなりのもの! ましてや、LEDの点滅でもけっこう感動するのに、テレビに何かを映すことが出来たら、何かすごいことをやった気分になれる…という効果は他の何者にも代えがたいように思います。

A2018021403.jpg

↑足を折ってしまったチップも元の170Hのミニブレッドボードで無事復活! 折れたのが0番ピン(リセットピン)だったのでもうシステムの変更や他の用途への転用は出来ませんが、BASICマイコンとしてはプログラムの書き換えも出来るし、フツ~に使えます。外部16MHz、タイプ4のシステムの書き込み直後の事故でしたので、テレビ出力も問題なく出来ます。


スポンサーサイト

Arduinoで超ミニBASICパソコンが作れる!(その4~テレビ出力)

私が勝手に「RingoAme」と名付けているArduino上で動くTinyBASICですが、今回はテレビ出力のテストをしてみました。
黎明期のパソコンを知る者にとっては、テレビ出力には格別の思いがあって、ビデオ端子すらないテレビのアンテナ端子にRFモジュレータなる機器を取り付けて、若干色ズレやにじみのある画面をワクワクしながら見つめていた時のことを、まるで昨日のことのように思い出して、それが今、生のパーツの状態から自分で作れるようになるとは・・・当時では全く想像出来ない展開でした!

なお、今回のテレビ出力は前回のエントリで紹介した生の328Pチップのものではなく、Arduino UNO互換機によるものです。生チップ版の方は何故か正常に表示されず、今回は見送りです。動作クロック(生チップ版は内蔵RC8MHzなので…)を疑って対策を目下検討中です。

A2018021101.jpg
ただ、さすがにRAMがたった2KBでは無い袖は振れず、表示文字数19字×8行、画面左側に偏るのはまだしも、4×6のフォントではいかにシンプルな形の英数字といえどもかなり厳しい感じで、ブログラミングや文章の表示は出来れば勘弁願いたい...という気分になってしまいます。実は、この仕様は以前のエントリでもふれたことがあったのですが、その時はコンパイルに失敗したため、実物を見たのは今回が初めてだったのですが、実際に見てみると改めてその思いを強く持ちました。
ここはパソコンと言うよりもマイコンの表示機としてスイッチやセンサーのフィードバック用に利用するのがお互いに幸せのためでしょうね~

A2018021102.jpg

起動~保存プログラムの自動実行、簡単なコマンド操作の様子を動画キャプチャしてみました。
0~9の数字を横に並べるプログラムはそのままだと速すぎて一瞬で終わるので少しDelayをかけて動作が見えるようにしてあります。動作速度はけっこう速いです。





Arduinoで超ミニBASICパソコンが作れる!(その3~生チップ版作成)

Arduinoで動くTinyBasuc、面白いです! すっかり嵌まってしまって、今度はArduinoでも何でもないATMega328Pの生チップに直接システムを書き込んで遊んでいます。
書き込みは何の工夫もなく、Arduino IDEでコンパイルして出来たHEXファイルをインターセプトしてプログラムライタ(USBasp)で書き込みましたが、最近のArduino IDEでは、 Arduinoをライタにして生チップに簡単に書き込めるようになっているとか! 今度一度試してみようと思います。それにしても2年間の休眠期間中にこの世界はちょっぴり易しくなったようですね。
一旦システムを書き込んでしまえぱリセット回路がなくても使えますので、IchigoJamと同様に170Hのミニブレッドボードに載せています。余った3列は両端2列を電源系(VCCとGND)最後の1列をビデオ出力用に使っています。キーボードその他の回路が必要な時は別のボードを連結させてそこに回路を構成します。まあ、プログラム入力はPCから行いますので直接キーボードを接続するのは実験時ぐらいでしょうけど...

A2018020701.jpg

A2018020702.jpg

リセット回路がないのでUSBシリアル変換モジュールはDTR端子が不要で、その上5V単一電源で良いので、事実上何でもOK!だと思います。うちではIchigoJam自作機で使っているPL2303HX搭載品と、ごく最近入手した邦貨にして送料込み75円!というCH340G搭載の超激安品で試してみましたが問題なく動作しました。ただ、Arduinoのようにオートリセットが効かないのでターミナルソフト接続時に初期クレジットが表示されず、ディスプレイに表示するプログラムのターミナルソフト上での自動実行はかなり怪しい感じです。まあ、これは手動で電源を入り切りしてやれば解決しますが。

↓送料込みの1個売り価格で65セント!のCH340G搭載のUSBシリアル変換モジュール。これまでこの手の安物シリアルコンバータはPL2303HX搭載品の独壇場でしたが、コピー品の大量流通や性能上の制約から最近はCH340Gに置き換わりつつあるようです。DTR端子がないのでArduinoには使えませんがとにかく安い! 電源回路代わりに使っても良い感じ・・・.

A2018020703.jpg

↓作者の方には無断なんですか゜...
うちの中だけでこっそりと「RingoAme」と呼ぶことにしました! 初期クレジットも少し改変しました。

A2018020704.jpg


Arduinoで超ミニBASICパソコンが作れる!(その2~設定と起動)

前回のエントリでコンパイルとボードへの書き込みを行いましたが、今回はターミナルソフトの設定を行います。
ターミナルソフトってフツ~のパソコンユーザにとってはあまり馴染みのないものだと思いますが、マイコンと会話したり操作したり出来る、マイコン遊びの必須アイテムだと思います。現在何種類か存在しますが、ここでは"TeraTerm"というソフトを使っています。

■TeraTermの入手
開発元サイトよりも「窓の杜」↓とかからの方がDLしやすいと思います。
https://forest.watch.impress.co.jp/library/software/utf8teraterm/

DLした"teraterm-4.97.exe"(4.97はバージョン記号なので他の数字の場合もある)を実行し、指示に従ってインストールしてください。

■シリアルポートの設定
TinyBasic書き込み済みのArduinoをPCに接続した上で"TeraTerm"を起動し、まず[設定]>[シリアルポート]を開いて、「ポート」を現在Arduinoが接続しているCOMポートに合わせます。何番か判らないと思いますが、シリアルポートをArduino以外の他の機器が使っていなければ、▼をクリックしてプルダウンリストを表示させて0、1以外を選択します。
もし複数の機器を使用している場合はOSのデバイスマネージャで調べるか、Arduinoを一旦外してプルダウンリストで使用されている番号を調べてから再接続し、増えたポートを選択します。
ポートの設定が出来たら「ボーレート」を9600に設定します。他は初期状態のままで良いのでOKを押します。

A2018020102.jpg

■フォントの設定
[設定]>[フォント]を開いて表示する文字の種類とサイズを設定します。私はTerminalの16で使っていますが、この辺はお使いのパソコンのディスプレイ解像度で変わってきますのでお好みで設定してください。

A2018020105.jpg

■端末の設定
[設定]>[端末]を開いて、「改行コード」の「受信」を[CR]、「ローカルエコーバック」をオフ(チェックを外す)にします。OKを押して設定を完了します。端末サイズはお好みで設定してください。

A2018020103.jpg

■動作確認と状態の保存
シリアルポートの設定が完了すると↓のような表示が出ると思います。場合によっては↓のように訳の判らない文字列をはき出していることもありますが、ここは気にせず[Esc]キーを一発叩いてから NEW を入力、 多分エラーが出ると思いますので、次に LIST と入力してみて Ready が表示されたら SAVE を実行します。この作業はシステム書き込み直後の一度だけ行ってください。ちなみに [Esc]は実行中のプログラムを中断させる機能を持っています。

A2018020104.jpg

問題がなければ[設定]>[設定の保存]で現在の設定を保存しておきます。
環境が整ったら本家サイトに戻ってプログラムの学習を進めて行きましょう! Arduino IDEを使用するよりはるかに取っつきやすいと思います。


ついついIchigoJamと比べて、容量の小ささを気にする向きもあるかも知れませんが、UNO、NANO、ProMini等、328Pを搭載した様々な形態のArduinoが利用でき、とりわけNANOはUSBシリアル変換モジュールを別途用意する必要がなく、ブレッドボードとの親和性も高く、しかも探せば互換機の完成品で3ドル弱、ヘッダピンをはんだ付けしないといけない半完成品で2ドルちょっと…と至ってリーズナブル! 1000円もあればちょっとした実験キットが揃いそうです。

↓Arduino NANO(互換機) ブレッドボードで使用することを前提としたArduinoでコンパクトながらUNOとほぼ同等の能力があります。これは3年ほど前にAliexpressで送料込み2.5ドルで買った互換機の完成品ですが問題なく動いています。

A2018020106.jpg

と、良いことずくめなのですが、最後に不満というか要望というか「ここはどうにかしてほしいな~」という点を上げておきます。
ひとつは、名前! これの適当な名前がないのでこうして説明するのもけっこう大変ですし、多分普及させるのにも支障がありそうです。まあ、Arduinoだし、HalfByte TinyBasicだといえばそうなんでしょうけど何だかピンと来ない! 「ABC」(Arduino Basic Computor)とか、開発地=弘前に因んでHalfByte TinyBasic Ringo Ame Versionで略して「Ringo Ame」とか...、Raspberry piやIchigoJamと同種のものだと判る適当な愛称が欲しいです。
そして、もうひとつはIchigoJamのコミュニティにあるような専用ターミナルソフト。PC上で書いたプログラムの転送(コピペはTeraTermでも出来ますけどね...)やテレビ出力のエミュレーションも出来るもの。こういうのがあればプログラムの保存本数が1本だけでも全く問題にならないし、プログラムの流通もしやすくなるでしょう。こちらは何と言ってもUSBシリアル変換モジュール標準装備!でパソコンと簡単に繋げる強みがあるのですから、それを最大限に活かすためにも是非欲しいユーティリティです!

・・・と好き放題言っていますが、プログラムやライブラリを開発された作者の皆さまに感謝申しあげます。もっと普及してほしいと思いますし、普及できる資質は十分あると思います。今後の展開に期待したいですね~!



Arduinoで超ミニBASICパソコンが作れる!(その1~準備、コンパイル、書き込み)

当面IchigoJamメインで行く、と言いつつ、内心では「ArduinoがIchigoJamみたいに使えたらな~」と思っているのですが、「これなら使える!」というものを見つけました!

弘前大学の小山先生という方が、「HalfByte TinyBASIC」をベースに独自に拡張されたBASICインタプリタを公開、配布されているもので、WEBサイトにはそれを利用したプログラム開発と電子工作がひと通り学べる教材が掲載されていて、学習用には非常にありがたい存在だと思います。

WEBサイトはこちら↓
http://siva.cc.hirosaki-u.ac.jp/usr/koyama/avr/tinybasic.html

PCを介さず完全なスタンドアロン機としてプログラムの作成、実行が可能な点はIchigoJamと同じです。ただ、搭載しているマイコンチップの容量が小さいため、プログラムエリアや保存出来るプログラム数、テレビでの表示文字数等が少ない点がIchigoJamとは異なる点ですが、こちらは電子工作の学習に主眼を置いたもので、ブレッドボード上で生パーツを扱うのには適しているように思います。マイコン自体が5V駆動なのも初心者には有り難いです。

早速、試してみました! 使用するにはArduino IDEを使ってソースコードをコンパイル~書き込みをする必要があり、いくつかのライブラリを入手、設定をしないといけませんが、上記WEBサイトの「(付録1) tinyBasicのArduinoへの書き込み」の説明の通り作業を進めればすべてのオプションで問題なく書き込むことが出来ました。

なお、上記WEBサイトの説明ではArduino IDEが1.8.2、ターゲットボードをArduino NANOとしていますが、現時点で最新の1.8.5で、Arduino UNO互換機でもフルオプションで問題なく書き込めました。(Leonaldoはメモリ不足との情報あり)
ただ、説明が入門者というより指導者向けに書かれているようで、私のような初心者は多分この辺で引っかかるな…というポイントがいくつかありましたのでここで補足しておきたいと思います。

■基本的な仕組み
ソースコード冒頭の #define TVMODE n(0~4) を選択(書き換え)することによって、5種類のシステムに作り分けることが出来ます。モード0が最も基本的なマイコンタイプ、モード4がスタンドアロンで動くパソコンタイプ、モード2が全部入り(フルオプション)といった感じです。2と4はPCを介さず単体でプログラム開発、実行が可能です。また、すべてのタイプでPCのターミナルソフトを介した操作ができます。作成可能なプログラムのサイズはタイプによって異なり、1本だけ保存出来ます。保存したプログラムは起動時に自動的に実行されます。

■まず最初にすべきこと
ここから具体的にボードへの書き込み作業について補足したいと思いますが、ここではArduino IDE(1.8.5を想定)が既にインストールされ、Arduinoボードが設定、認識されて、Lチカ位は軽く終わっていることを前提とします。
ここでまず行うことは作業フォルダの確認です。ソースコードやライブラリの作成に場所を知っておく必要があるからです。IDEの[ファイル]>[環境設定]の[設定]タブの最上段「スケッチの保存場所:」に記載されています。通常はマイドキュメントのArduinoフォルダが指定されていると思います。

■ソースコードを入手する
上記WEBサイトの「(付録1) tinyBasicのArduinoへの書き込み」の6にソースコード"tinybasic20170428.zip"のDLリンクがありますのでクリックしてDLし、解凍して出来た"tinyBasic"フォルダをフォルダごと、上で調べた作業フォルダほ移動しておきます。

■必須のライブラリデータを用意する
ここからはライブラリの設定作業に入ります。「ST7032」「NeoPixel」が必須となっていますのでGitHubのWEBサイトからDLします。ページを開くと「ZIPファイルなんてないやんか…」と戸惑うと思いますが、ペーシ右上方の[Clone or Download]をクリックすると下に[Download ZIP]というボタンが出てきますのでそれをクリックすればDL出来ます。
DLしたデータを解凍すると、それぞれ"arduino_ST7032-master"と"Adafruit_NeoPixel-master"いうフォルダが出来ますので、フォルダごと作業フォルダにあるlibrariesフォルダに移動します。
テレビ出力やキーボード接続を行わないモード0でインストールする場合は設定はここまで。Arduino IDEを起動させてボード設定を済ませたら、ソースコードを開いてコンパイル>書き込みをします。ソースコードの書き換えは不要です。

A2018013004.jpg

■TVoutの設定
モード1~4で必須です。ライブラリデータの入手はArduino IDEの[スケッチ]>[ライブラリのインクルード]>[ライブラリの管理]で行います。一覧表が表示されますが膨大な上に動作が緩慢で探しにくいと思いますが、一覧表右上の検索ウィンドに"TVout"と指定してやれば簡単に見つけられます。
見つけたらクリックで選択状態にして[インストール]を押します。ただ、このままではまだ使えないので、小細工をするために作業フォルダ>librariesフォルダ>TVoutフォルダと開いて、その中にTVoutfontsというフォルダがありますのでそれをコピーして、librariesフォルダ直下に置きます。続いて、上記WEBサイトの7にある"video_gen.zip"をDLして解凍し、出来た"video_gen.cpp"を作業フォルダ>librariesフォルダ>TVoutフォルダにある"video_gen.cpp"と入れ替え(上書き)ます。
モード1、3の場合は設定作業はここまで。ソースコードの冒頭行を #define TVMODE 1 または #define TVMODE 3 に書き換えてコンパイル~書き込みを行います。

A2018013003.jpg

■PS2Keyboardの設定
モード2、4の場合はPS2Keyboardライブラリも必要となりますので、上記TVoutと同様の方法で取得します。こちらもこのままでは日本語キーボードが使えないので、まごころせいじつ堂さんが作成された日本語キーボード対応データをGitHubからDL(Download ZIPボタンがページ右側にあり)、解凍して得た"PS2Keyboard.cpp"と"PS2Keyboard.h"を作業フォルダ>librariesフォルダ>PS2Keyboardフォルダにある同名ファイルと置き換え(上書き)ます。
これで設定作業は完了。ソースコードの冒頭行を #define TVMODE 2 または #define TVMODE 4 に書き換えてコンパイル~書き込みを行います。

書くとややこしそうですが、実際にやってみると作業自体は単純です。本当は、ソースと修正済みライブラリ一式をワンパケにして作業フォルダにポン!と行けたら簡単なんでしょうけど... ワークショップとかをやるならそうすべきでしょうね! それにしても、UNOやNANOでは最大規模のプログラムをコンパイルしたり書き込むのは、なんかいかにも難しいことをやってる感があって、ましてや一発でコンパイルが通った時は気持ち良いです!

↓ターミナルソフトを介して無事に起動するとこういう初期画面が出る。モード2のフルオプションのものなので使えるメモリが少ない!
A2018013001.jpg

↓お約束のLチカをやってみた...
A2018013002.jpg

さて、今回は長くなったのでここまで。ターミナルソフトの設定は次回といたします。


 | ホーム |  古い記に行く »

文字サイズの変更

プロフィール

よっしい

Author:よっしい
FC2ブログへようこそ!

最新記事

カテゴリ

未分類 (0)
ニュース (10)
スマートフォン (34)
中華パッド/タブレットPC (104)
ミニPC (25)
マイコン (70)
CNC機器 (16)
アクセサリ (14)
アプリ (9)
実験 (7)
工作 (13)
その他 (12)

月別アーカイブ

最新コメント

リンク

このブログをリンクに追加する

検索フォーム

RSSリンクの表示

ブロとも申請フォーム

この人とブロともになる

QRコード

QR

FC2Ad

Template by たけやん