フォト
2018年5月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
無料ブログはココログ

« 2018年2月 | トップページ | 2018年4月 »

2018年3月の5件の記事

2018年3月29日 (木)

BASIC言語が動くORANGE pico type S(キット)を組み立てました

aitendoにてBASIC言語が動く「ORANGE pico type S」を見つけ、入手しました。
お値段は1,380円と、非常にリーズナブルです。

ORANGE picoに関する情報:
  ・開発元      ピコソフト株式会社
  ・製品情報  手のひらサイズ 教育用に制御用に小さなパソコン ORANGE pico

幾つか種類があるようですが、小さくて必要最低限の機能がそろっている type Sを
購入しました。

到着した製品
Dscn7771

内容
簡単な組み立て手順書が同封されています。

Dscn7773

早速組み立ててみました。

完成したORANGE pico type S

ボード上にI/Oピンの用途が分かる説明・シルク印刷がないのがちょと残念です。

Dscn7779

※黒いストレートのメス端子とスペーサーとは付属していません。
   手持ちのパーツを付けました。

はんだづけは、さほど難しくありませんでしたが、見本と部品が若干違うので、
ちょっと混乱するかもしれません。

電解コンデンサーが積層セラミックコンデンサーに置き換わっています。
写真を見てパーツを乗せて組み立てるにはちょっと混乱を招きそうです。

Dscn7776

組み立て手順も3行だけなのも、子供向けにはちょっと不親切かも。
別途、資料や補助が必要ですね。
仕様等が記載されている説明書も付属して欲しいところです。

動作確認

キーボードはPS/2インタフェース、画面表示はNTSCビデオ出力による表示です。
公式サイトをみると、仕様等の詳細が何処に記載されているか見つかりません。

取りあえず、モニターをつなげてみると画面が縦スクロールしていまいました。
同期がとれていないようです。

Dscn7784

もしかしたら、ファームウェアのバージョンが古いため(V0.96)と思い、
最新版のV1.06に更新することにしました。
更新は、公式HPの「ORANGE pico ファーム更新方法」を参考にしました。

Dscn7786

とりあえず、中華製ぱちもんのPICkit3で更新できました。
ただし、更新方法の説明は初心者にはちょっと厳しいと思います。
「PICkit3とは何ぞや?」等の説明が一切ないです。知識のある人しか出来ない作業です。

純正品PICkit3秋月電子で5,800円。
最新ファームウェアが乗っているマイコンPIC32MX170F256Bが単体販売されているので
そちらを購入するのも良いかもしれません。
(aitendoではなく、公式の通販サイトで購入すれば最新ファームウェアが乗っているのかも)

結局、更新してもスクロールは、改善できませんでした。
別のモニターに変えてみました。今度はスクロールはしないものの、画面の下の方が変。

Dscn7796


次に量販店で購入したDVDプレイヤーで試してみました。

Dscn7797

今度はとりあえず表示出来ました。
他に東芝、パナソニック製液晶テレビでも試してみましたが、問題なく表示出来ました。

2台は激安中華製モニターなのでダメだったのかもしれませんね。
イチゴジャムやTiny BASICでは使えていましたが、たまたま相性が良くて使えたのでしょう。

性能測定

イチゴジャムでやった3万回ループの時間を測定してみました。
(バファロー製ビデオキャプチャーでは綺麗に取り込めました)

20180329182744

結果としては、1.979秒でした。
イチゴジャムの40倍のパフォーマンスと、かなり速いです。
イチゴジャムやTiny BASICとは異なり本格的なBASICインタプリタが搭載されている
割には大変高速ですね。

ちなにみサイズは、イチゴジャムよりちょっと小さめです。

Dscn7782




さて..

キットを組み立てて、このORANGE picoで何かしようと思い、
  「何が出来るのか」、「仕様は..」
と公式サイト上のドキュメントを探しているのですが、
何処に記載されいるのか分かりません。

  ・CPUのクロックは?
  ・画面の縦横の文字数は?
  ・グラフィック描画の解像度は?
  ・I/O入出力・制御機能はどんなのが利用出来るの?


探し方が悪いのかもしれません。  只今、捜索中です。
amazonの商品説明が一番まともかも)

_=> 公式サイト製品ページの概要説明で、ところどころに仕様がちりばめられているので
      だいたいは把握できます。

追記
  ORANGE picoに関しての情報は公式サイトよりも、
  ふうせん Fu-senさんがまとめられている  「オレンジピコにベーシック」が分かり易く
  大変参考になりました。

  イチゴジャムに関する情報も公式サイトよりも、
  ふうせん Fu-senさんの「イチゴジャム レシピ」の方が充実していますね。
 
  両社とも公式サイトは、もうちょっと内容をなんとかして欲しいなぁ..


まとめと感想
・安価で高速なBASICインタプリター搭載で非常に良さげ
・教育目的なら、もうちょっとドキュメント類は充実してほしいと思う
   (良い製品なのにもったいない.. )


製品としては良好です。もうちょっと遊んでみます。

2018年3月20日 (火)

Arduino用スケッチのサブルーチンをサブディレクトリに配置する

Arduinoで大きなスケッチを作成する場合、幾つかのファイルに分割したい場合があります。

現在手掛けている、豊四季タイニーBASICの拡張版はスケッチサイズが30350バイトあり、
ライブラリやサブルーチンで15個のファイルに分割しています。
そのうち、修正頻度の高い3つのファイルだけを、タブに表示するようにしています。

Arduino IDE

方法としては、スケッチのファイルの配置を次のような感じにすることで、
タブに表示するファイルと、表示されないファイルに分別しています。

\ttbasic
│  basic.cpp
│  ttbasic.ino
│  ttconfig.h
│
└─src
    └─lib
            FontGT20L16J1Y.cpp
            FontGT20L16J1Y.h
            IR.cpp
            mcurses-config.h
            mcurses.c
            mcurses.h
            MW25616L.cpp
            MW25616L.h
            SO1602AWWB.cpp
            SO1602AWWB.h
            TI2CEPPROM.cpp
            TI2CEPPROM.h

スケッチファイル(ttbasic.ino)と同じフォルダにあるファイルはIDEのタブに表示されます。
サブディレクトリに配置したファイルはタブに表示されません。
利用頻度が多い自作ライブラリ・サブルーチンなんかはこの配置がお手軽です。
(本格的なライブラリにすると配布等も結構面倒ですし)

サブディレクトリは
  src\lib
  src\lib2
  src\lib3
のように複数に分けて配置してもOKです。

公式サイトにはこの方法は記載されてないので、動作の保証は出来ないのですが、
とりあえず、この形態でスケッチを公開しており、いまのところ問題ないようです。

ただし、制約がいくつかあります。特にインクルード(#include文)において、
下位のディレクトリのファイルから上位のディレクトリのファイルのインクルードすると
エラーになります(ただし、パスが通っているシステム用のインクルードファイルはOK)。
上位から下位のファイルのインクルードは可能です。

例:basic.cppからsrc\lib\mcurses.hをインクルードする場合は、
    #include "src\lib\mcurses.h"で行うことが出来ます。
    src\lib\mcurses.hから上位のttconfig.hのインクルードはエラーになります。
    #include "../../ttconfig.h"

本来ライブラリとしてlibrariesに配置するライブラリも、スケッチのサブディレクトリに
配置したいのですが、ライブラリに付随するサンプルまでコンパイルされていまいます。
(サンプルを削除すれば、配置できます)

また、タブに表示されていないファイルを修正する場合は、別途テキストエディタで
開いて編集を行う必要があります(これは、さほど苦にはなりませんが..)

2018年3月18日 (日)

豊四季タイニーBASIC for Arduino機能拡張版 作成しました

取り組んでした「豊四季タイニーBASIC for MW25616L実験用表示モジュール」の作成を
もう少し汎用化して、Arduino Uno用にしました。

MW25616L実験用表示モジュールの対応はオプション機能としました。
(ttconfig.hの機能選択を修正すること対応)

01

  公開サイト
    豊四季タイニーBASIC for Arduino機能拡張版(+ VFD MW25616L対応)
    https://github.com/Tamakichi/ttbasic_MW25616L

  このプログラムはTetsuya Suzuki氏の   豊四季タイニーBASICをベースにしています。

   オリジナル版
     配布サイト https://github.com/vintagechips/ttbasic_arduino

  オリジナル版からの主な機能強化
    ・プログラム領域を256バイトから1024に拡張
    ・プログラムのセーブ・ロードに対応(内部EEPROM、I2C EEPROM)
    ・スクリーン制御(LOCATE、COLOR、ATTR、CLS)
    ・全角文字対応(シフトJISコード)
    ・ラインエディタ機能強化(カーソル移動、指定行の内容表示等)
    ・2進数、16進数表記サポート(`10101111、$ABCD)
    ・演算子の追加(ビットシフト演算や論理積・和など)
    ・IF文でELSEが利用出来る
    ・GOTO、GOSUBでラベルが使える(GOTO "LOOP")
    ・GPIO対応(デジタル入出力、アナログ入力、PWM、I2C、SHIFTIN、SHIFTOUT、PULSEIN)
    ・プログラム編集コマンドの追加(RENUM、DELETE)
    ・リセット時プログラム自動起動対応
    ・I2C RTC DS3231対応(DATE、DETDATE、GETDATE、SETDATE)

  BASIC言語のプログラム開発はターミナル上で行います。
  雰囲気的には、次の動画のような感じです。

   8チャンネルアナログ入力サンプルプログラム 
   

ターミナル上でもちょっとした、動きのある表示も可能ですね。

性能評価
さて、8ビットマイコン AVRでのTiny BASIC、性能的にはどうなんでしょう?
下記の3万回ループ処理を32ビット ARMマイコン搭載のイチゴジャムと比較してみました。

10 ?TICK()
20 FOR A=1 TO 30000
30 V=V+1
40 NEXT A
50 ?V
60 ?TICK()
測定結果 
  ・豊四季 Tiny BASIC Arduino(8ビット AVR)機能拡張版
    2.262秒
  ・イチゴジャム 1.2b56 最新版 (32ビット ARM)
   81.333秒 (ビデオ出力停止時 44.31秒)
  ・イチゴジャム ラズベリーパイ版 (BASIC RPi1.2.5 ラズパイ 2 900MHz)
   2.517秒
なんと、予測外の結果!  イチゴジャムの約36倍の処理能力でした。

イチゴジャム36台分の処理を1台でこなせる性能です。
ラズパイ2版 よりも早い!

追記 2018/03/23
  イチゴジャムをビデオ停止(VIDEO 0)した場合も測定してみました。
  それでも約20倍の処理能力でした。
「え、測定ミス? プログラムミス?」と思い何回も見直してしまいました。
AVRマイコンは確かに高性能ですが、同クロック 16MHz LPC1114(ARM cortex-M0)
よりは劣ると思います。


訂正(上記消し線の部分) 2018/03/20
  てっきりイチゴジャムは16MHzで稼働していると思っていたのですが、
  48MHzで動作しているようです。
  となると、16MHz Atmega328の3倍以上の処理能力があるはずでは..

豊四季タイニーBASIC for Arduinoは、ソース公開、分かり易さ重視です。
結構、無駄な処理をしています。
コマンドの処理を行う処理関数の検索を単純検索で行っており、コマンドの実行の都度、
最悪100回以上比較処理を行う等、特にパフォーマンス重視の作りではないです。
それでもイチゴジャムの約36倍..
非常に謎です..

追記

PLAY文による演奏デモ

演奏データは、下記のサイトに公開されているのもを流用させて頂きました。

・主体性の無いページ http://astr.me.land.to
   ねこふんじゃった! http://astr.me.land.to/tool/mabi/mml/nekof.htm
10 '猫ふんじゃった
20 PLAY "L16D+C+R8F+RF+RD+C+R8F+RF+RD+C+L8RF+RF+R"
30 PLAY "L16FRFRD+C+R8FRFRD+C+R8FRFRD+C+"
40 PLAY "L8RFRFRL16F+RF+RD+C+R8F+RF+RD+C+R8F+RF+RD+C+"
50 PLAY "L8RF+RF+RL16FRFRD+C+R8FRFRD+C+R8FR"
60 PLAY "L16FRD+C+L8RFRFRL16F+RF+RD+C+L8RF+RF+RF+RF+RF+RF+R"
70 PLAY "L16FRFRD+C+L8RFRFRFRFRFRFR"
80 PLAY "L16F+RF+RD+C+R8F+RF+RD+C+R8F+RF+RD+C+"
90 PLAY "L8RF+RF+RL16FRFRD+C+R8FRFRD+C+R8FRFRD+C+"
100 PLAY "L8RFRFRL16F+RF+R8.F+RC+C+D8C+8.FRF+"

2018年3月16日 (金)

中華製Arduino NanoのArduino Uno化を行う

中華製 Arduino Nano(実際はPro Mini+USBシリアル)をArduino Uno化するお話です。

次の写真は、USB-シリアル変換にCH340を採用している、中華製 Arduino Uno(左)のNano(右)です。

Dscn7718

Nanoの方は裏にCH340が搭載されています。

Dscn7719

さてこの2つ、実装形状は異なるものの、スペック的に同じです。
(3.3VレギュレータはCH340が内蔵しています)
しかし、サンプルのLチカスケッチ Blinkを書き込むと、利用出来るフラッシュメモリサイズが異なります。

中華版Arduino Unoの場合

Blink_uno

中華版Arduino Nano(実質 Pro mini + USBシリアルモジュール)の場合

Blink_nano

スケッチサイズは同じなのですが、Unoの方が1526バイト多く利用出来ます。

公式サイトの基本スペックでこの違いを確認すると、

Arduino Unoは、フラッシュメモリのうち512バイトがブートローダに利用されています。
03_2

Arduino NanoやMiniは2048バイトがブートローダに利用されています。
04

この違いが腑に落ちないので、ちょっと調べてみると、次のスレッドにヒントがありました。
Arduino Forum>Using Arduino>Microcontrollers>Optiboot on arduino Nan
Topic: Optiboot on arduino Nano

Arduino NanoやPro miniは製品的にはArduino Unoよりも古く、
Arduino Unoの前のバージョンのArduino Duemilanoveのベースになっています。
ブートローダもArduino Duemilanoveのものを利用しいます。

一方後発のUnoは、ブートローダがOptibootに変更されました。
NanoやPro miniもOptibootの利用が可能なのですが、Arduino Duemilanoveの
ブートローダが採用されたままになっています。
(このあたりは、Arduino ccの怠慢では..)

試しに、Namo(中身はPro mini)のブートローダーをArduino UnoのOptibootに
変更してみました。

ブートローダの書込みはArduino Unoを使ったArduinoISPを使用して行いました。
参考サイト:Arduino as ISP and Arduino Bootloaders

Dscn7715

結線はaitendoのATTiny ISPシールドきっと [K-TINY-SLD]を利用しました。
Arduino Unoにブートローダ書き込み用のスケッチ ArduinoISPを書き込み、
書込み装置に"Arduino as ISP"を選択して、
ボードをArduino/Genuino Unoを選択し、「ブートローダを書き込む」で書き込みます。

02

問題無く書き込めました。

ブートローダ書き込み後、ボード選択をArduino UnoとしてLチカのblinkスケッチを
書き込みます。

Dscn7716

これも問題無く、Lチカ出来ました。
これで、スケッチのサイズの上限を1536バイト増やすことが出来ました。

Arduino Uno用のスケッチの中には、スケッチが31,000バイトを超えて
NanoやPro Miniに書き込めないものがあります。
というか、私が今取り組んでいるArduino用のTiny BASICなのですが..OTz
このブートローダ変更でNanoに31,300のスケッチを書き込むことが出来ました。

05

折角なので、手持ちのNano strongという変則タイプのボードをArduino Uno化してみました。

Dscn7721_2

これで、ちっちゃいArduino Unoとして利用出来ます。

Dscn7722




2018年3月 5日 (月)

ノートPCの潰れた(なめた)ねじを外すのに苦戦

手持ちのノートPCのメモリー増設を行う為に、裏ぶたのねじを外していたのですが、
真ん中のねじ穴が潰れてしまい、外すことが出来ない状態になってしまいました。

ねじは、直径2.6ミリの皿ねじです。

Dscn7681

Dscn7672

まずはお手軽な、太めの輪ゴムを被せて摩擦を利用して回す方法を試しましたが、
だめでした。相当固く閉まっているため、ゴムが耐えられず穴空いて回せません。

次に「ネジはずし剤」を試してみました。

Dscn7673

以前も使ったことがあり、試してみたのですが今回はダメでした。
むしろ、悪化してしまいました。滑り止めが研磨剤となり、固いねじを強引に回すと
ネジ穴が研磨されてしまい、+形状がほぼ円系になってしまいました。

もはや、ねじ穴を使うのが不可能な状態に...

仕方がなく、ネットで評判の「ネジザウルスM2」を近所のホームセンターで購入しました。
直径2.5ミリのねじら対応とのことです。

Dscn7674

試してみると、5秒で「これは、ぜんぜん使えない」と判断出来ました。
つかんで回すには、下記の画像の幅とねじの頭の高さが必要です。

Dscn7676

ネジザウルスにはシリーズがあるので、もしかしたら選択を間違ったのかも..

仕方がなく、最後の望みとして「ANEX なめたネジはずしビット」を購入して試してみました。

Dscn7675

2本ビットが入っていますが、M2.5~M3対応の赤い方を使います。
ドリル(右側)で穴をあけ、スクリュー(左)で外す方向に回して潜り込ませて外せます。

Dscn7682

本来は電動ドリルを使うようですが、電動だと力を入れる加減が分からないので、
ハンドドリルを利用しました。

Dscn7679

こんな感じで取り付けられます。

Dscn7680


最終的に、この「ANEX なめたネジはずしビット」で穴をあけて、回すことが出来ました。
ネジ1本はすずのにえらい、出費となりましたが、勉強代ということで良しとします。

« 2018年2月 | トップページ | 2018年4月 »