夢色☆あんどろいど

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

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

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


世界の携帯、スマホ、タブレットがほぼ判るデータベース~「Deveice Specification」

今はマイコンと電子工作がテーマみたいになっていますが、本ブログの当初の目的はアンドロイド端末について知ったことを書き連ねることでした。それが一頃中華バッドにはまり、そこからスティックPCやSBC(Single Board Computer)といった超小型端末に行って、対象がどんどん小さくなってマイコンの世界に辿り着いた...ということで、本人的には大きくテーマが逸れた自覚はないのですが...

では、アンドロイド端末に対して興味を喪ったのか?と言えば、それは全くそうではなくて、今も依然として情報収集を続けていて、実のところ、ブログ中断中の2年間に手に入れた端末はスマホが6台! むしろ増えてる? という感じです。 
ただ、今のスマホは中華なヤツも含めて、み~んなフツ~に動くし、わざわざブログのネタにしようか…という気にならないのです。興味の方向も自ずと製品個体ではなく、メーカーの動向とか技術トレンドとかが中心になっています。
たしかに、世界TOP3(ファーウェイ、サケスン、アップル)以外のトップクラスのメーカーってどこなんだ?というのは大いに興味のあるところでしょう? しかし、その手の情報って、何だか故意に秘匿されているかのようにすごく少ない! 断片的な情報ではなく、もっと網羅的な情報源ってないのかな?と思って探し当てたのが↓「Deveice Specification」というWEBサイト。
https://www.devicespecifications.com/en


A2018012001.jpg

世界中のメーカーとその製品情報が網羅されていて、非常に詳細な諸元が記載されています。また、メーカーの動向や新製品情報、注目製品には恐ろしく細かいレビュー記事があったりして結構楽しめます。なお、たまに記載漏れの製品があったり、一部の国内メーカー(実は販売だけで製造してない?)が載っていないケースもあります。

リハビリはIchigoJamから...

前回の更新から2年以上経ってしまいました!
お正月に懐かしい人と会ってマイコン遊びの話をしたら、久しぶりに触ってみたくなりましたが、ウチのPCはOSの更新に伴って、マイコン関係の開発環境がすべて解消されていて、何もかもすっかり忘れ果てている自分に気付いて呆然としてしまいました~
そんな時、役に立ったのがなんと自分のブログ! 参照サイトの情報や注意点等が自分の身の丈に合わせて書かれているのでわかりやすいのです。多少面倒でもこういう記録を留めておくのは他でもない自分自身のために有用なのだと確信した次第です。

そういうわけで現在、開発環境を再構築中の段階で、とりあえずArduinoとIchigoJamだけは動かせる環境を整えました。後はAVRの生チップやMBED系が残りますが、当分の間はリハビリ?のためにIchigoJamメインで行こうかな…と考えています。特に開発課強めいたものが不要ですし、2年前とは違って今は情報も非常に豊富で、電子工作の実験用としては最適なように思います。

↓手持ちのIchigoJam。純正機はPS/2ソケットの付いた初期型。私の場合、電子工作の実験用でPCを介して操作しますので、ミニブレッドボードで作った自作機の方が使い勝手が良かったりします。IchigoJam BASICを最新の1.2.3にアップデートしました。

A2018011301.jpg

↓自作機と言ってもマイコンチップだけ! USBシリアル変換モジュールは非推奨とされているPL2303HX搭載品ですが、今のところは特に問題は出ていません。
A2018011302.jpg

PCからの操作には、従来、「IJKB」というソフトを使っていましたが、「IJUtilities」というソフトを見つけて使ってみました。さすがに2年という年月の力は大きく、非常に使いやすいソフトに仕上がっています。ファームの書き換えも出来るようですが、先に「Flash Madic」でやってしまったのでまだ試せてはいません。

A2018011201.jpg

↓リアルタイムでモニター出力をエミュレートしてくれます。画面が大きくて動作も速い感じ。
A2018011202.jpg

↓アクションゲームは操作が追いつかないが、安物のシリアルコンバータのせいかも知れない...
A2018011203.jpg


ESP8266(ESP-01)を買ってみた

このところマイコン遊びはすっかり停滞してしまっていますが、ブツだけはせっせと仕入れ続けていて、「積ん読」ならぬ「積ん板?」状態で、動作テストもしていないパーツが増える一方です。

そんな中で、「遂に…」と言うか、「とうとう…」と言うか
、今年のこの世界の話題性ナンバーワン!と言っていい「あのモジュール」を買ってしまいました~!
a15110401.jpg

買ったのはESP-01です。ピンのピッチがDIPであることを評価したからです。GPIOは実質3本しかありませんが、ジャンプコードが直結出来るのは何にもまして大きいです。
個人輸入モノなので技適はありませんが、同じチップを使った技適を済み製品があるWi-Fiモジュールなので、テスト使用程度ならご近所に迷惑をかけることもないでしょう。

調べてみると、ESP8266自体がそこそこの性能を持つマイコンチップであり、表面的なスペックだけで言えばCortex M3/4クラスに近いもののようです。Arduino IDEのスキームを間借りする形の開発環境も存在していて、使いこなせれば大化けする可能性大でしょう。まあ、初期状態ではシリアルコンバータ経由のWiFiモジュールとして機能するようになっていることから推して、メーカとしては「プログラマブルな無線LANモジュール」と位置づけているんだろうと思いますが。

a15110402.jpg


超簡単レーザーポインタを作ってみた!

先日、AliExpressで他の買物のついでに、10個で1.5ドル!と言う激安のレーザーモジュールを買いました。
5mWの赤色(650nm)で集光レンズも組み込み済みの金属製ケースに収められたモジュールです。動作電圧は5Vとのことですが他の情報は不明です。
まあ、一応モジュール化されているので、後は電圧を加えてやりさえすれば点くはずです。

a15110804.jpg

ということで、早速、こいつを使ってレーザーポインタを作ってみました。実は以前、ネットでフリスクの空ケースを使ったレーザーポインタを見たことがあって、それならミンティアの空ケースを使って、それもハンダ付けなしで紙やアルミホイル、セロテープ等の身近な材料だけで作れないかな...と考えておりました。
今回は、モジュールの動作テスト用として、名刺サイズの厚紙を使ったカードタイプのものを作ってみました。なお電源は乾電池3本の外付けです。

↓本体
回路は配線材を一切使わず部品のリード線同士をホッチキスで止めることで接続。電路が短いので電気抵抗は気にしないことにしています。固定と保護のために上からセロテープを貼ってあります。
a15110801.jpg

念のため保護抵抗(100Ω)を挟んでありますが、最初330Ωにしたら暗くて50cm位しか届きませんでした。よ~く考えるとモジュールに予め抵抗が入っているようにも思いますが、照度的にこれで良い感じなので試していません。

↓スイッチ部
リード線を止めたホッチキスの針を端子にして、アルミホイルを貼った部分を折って押しつけることでオンオフざています。
a15110803.jpg

電圧も4Vちょい位しか出てないし、抵抗も入っているので、多分フル出力にはなっていないと思いますが、7~8m位はt軽く飛びますので、レーザーポインタとしては問題なく使えます。
当たった場所の状態によって拡散反射するためか光点の大きさは対象物で大きく変ります。
a15110802.jpg

おさらく安全基準はせいぜいクラス2までと思います。(あくまで推測ですけど…) 手に当てても暖かさすら感じませんが、光源を直接覗き込むのはかなり危ない感じです。
この手のレーザー遊びをする時は、モジュールの向きと電源の入り切りに常に注意することもも含めて、十分気を付けてましょうね! (保護メガネをかけるのが理想ですとげね...)


« 新しい記に行く  | ホーム |  古い記に行く »

文字サイズの変更

プロフィール

よっしい

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

最新記事

カテゴリ

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

月別アーカイブ

最新コメント

リンク

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

検索フォーム

RSSリンクの表示

ブロとも申請フォーム

この人とブロともになる

QRコード

QR

FC2Ad

Template by たけやん