フォト
2019年3月
          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            
無料ブログはココログ

日記・コラム・つぶやき

2019年3月13日 (水)

M5Stack用CardKBをPS/2インタフェース対応にしてみる(3)

前回の続きです。
専用ケーブルを作りました。
また、ファームウェアは若干問題があり、 2019/03/10に修正しています。

Dscn9806

USBコネクタは、秋月電子で販売されている
ケーブル取付用USBコネクタ(Aタイプ オス)を利用しました。

03

熱収縮チューブで固定し、その上から結束バンドで固定しました。

Dscn9808

これなら、抜き差しに耐えられると思います。

ケーブルは、スイッチサイエンスのM5Stack用GROVE互換ケーブル 50 cm(2個入り)
に変更しました。

04

とりあえず、これで完成とします。

今回の製作では、ボードにのっているNeoPixcelで若干ハマりました。

制御に使っているAdafruit NeoPixel ライブラリがNeoPixcel へのデータ送信で
割り込み禁止をかけていて、起動直後のPS/2イニシャル処理を邪魔します。
対策として、起動時のLEDの点滅処理を削除しました。

Arduino(AVR)で割り込みを併用するようなプログラムでは
Adafruit NeoPixel ライブラリは使わない方が良さそうです。

2019年3月12日 (火)

プロペラ2の評価ボード

個人的に注目している、8コア搭載プロペラの時期バージョン、プロペラ2がやっと完成し、評価ボードでたようです。

 ・Propeller 2 ES Evaluation Board
  ・Propeller 2

03

評価ボードなので、数量限定で高いし入手も出来ないです。
まあ、ライブラリやドキュメントも整備されていないのでまだまだ様子見です。

01

ボードは回るプロペラを意識した感じのレイアウトです。
コネクタ群が8個あり、おそらく1つのコネクタ群に1コアが割付くイメージなのでしょう。

02

各コネクタ群には、様々なモジュールを接続して利用出来るようです。

プロペラ1では、各コア毎にビデオ出力機能(ビットストリーム)を搭載していたのですが、
プロペラ2では、更に強化されており、各コア毎に独立したDA、ADコンバータが乗っています。

プロペラ1ではビットデータのストリーミングを抵抗分圧でアナログ値にして合成して
ビデオ出力を行っていたのですが、プロペラ2では、直接アナログ出力が出来ます。
デジタルのビデオ出力に対応しています。

マルチコアで各コアが独立して稼働、USBホスト機能搭載、
様々なメディアからの起動が可能で、なんでもありのボードです。

かなり面白いこと(映像やサウンドで遊ぶ)が出来そうです。
ゲームコンソールなんかにも使われるかもしれません。


2019年3月 7日 (木)

M5Stack用CardKBをPS/2インタフェース対応にしてみる(1)

先日入手したI2Cインタフェースの小型キーボードM5Stack用CardKB、
ファームウェアを修正してPS/2 インタフェース対応にしてみました。

I2C接続用端子をそのまま、PS/2 インタフェース用に利用しています。

IchigoJam
豊四季タイニーBASIC Arduino STM32版にて動作確認しましたが、
とりあえず、使えています。

IchogoJamでの利用

Dscn9738

豊四季タイニーBASIC Arduino STM32での利用

Dscn9746

動いている様子(動画)


修正したスケッチはこちらです。

追加としてF1 F10 キー対応、
HOMEInsertPageUpPageDownEndキーが使えるようにしました。

詳細については、週末に整備し、GitHubにてドキュメントを付けて公開したいと思います。

2019年3月 6日 (水)

I2Cインタフェースの小型キーボードを試してみる

AliexpressにてM5Stack用のI2Cインタフェースのキーボードを見つけ、入手しました。

  M5Stack Official CardKB Mini Keyboard Unit MEGA328P GROVE I2C

  02

CardKBに関する情報
  ・M5Stack - docs CardKB
  ・Github M5-ProductExampleCodes/Unit/CARDKB/
  ・frame and key-top for M5Stack CardKB


送料がちょっと高めで、1個だけ購入すると割高のため2個購入しました。
M5Stack公式製品なので、そのうちスイッチサイエンスでも販売されるかもしれません。


到着した製品

Dscn9721

ボード

Dscn9722

ATmega328Pが乗っています。ボードの左下にISP用の端子用のランドがあります。

公開されているファームウェアのソースを見ると、Arduinoでベースのようです。
水晶振動子が無いので、内部RC発信8MHzっぽいです。

とりあえず、豊四季Tiny BASIC for STM32環境でI2C接続で使ってみました。

Dscn9729

コネクタがGROVE仕様のため、長足のシングルピンソケットを加工して、
ブレッドボードでつかえるようにしました。
2mmピッチなので、微妙にピンを曲げています。

Dscn9726 Dscn9727

とりあえず、動作しました。
ただし、豊四季Tiny BASICのI2CR()関数に不具合を見つけ、豊四季Tiny BASICを
少々、修正しました。

01

3.3Vで動作しました。
I2Cのバスクロックは100kHz、400kHzとも試してみましたが動作しました。

ボード上にNeoPixel(LED)が乗っているのですが、
シフトキーのロック、シンボルキーのロック等の状態を、色や点滅で状態を教えてくれます。
文字入力は意外とストレスを感じないですが、タクトスイッチのボタンが固いのが残念です。

ファームウェアがArduinoなので、改造してPS/2インタフェースに変更できるかもしれません。


追記

IchigoJamでもI2Cインタフェースで利用出来ました。

Dscn9733

2019年3月 4日 (月)

Aliexpressで久しぶりにひどい製品が到着

AliexpressにてフラッシュメモリAM29F040を注文したのですが、
久しぶりにひどい詐欺製品が到着しました。

Dscn9720


貼られていたラベルを剥がして再利用した感じです。傷だらけです。

商品説明には、
   Condition:New
の記載があるのですが、これはどうみても新品ではありません。

Aliexoress、まだ、こんな悪質な業者が残っているんですね。
売り手には、文句を言って交渉の上、紛争を起こす予定です。


2019/03/05 追記

紛争を起こしました。
売り手側のミスの可能性もあるため、事前に売り手に問題点を指摘し、
代わりの商品を送付するよう、要求したのですが無言のため紛争を起こしました。

紛争を起こした後、
念のためフラッシュメモリの中身を見てみると、何らかのデータが書き込まれていました。
明らかに中古品です。

Used_ic

これを追加の証拠として提出したところ、業者の回答を待たず、速攻で
AliExpress Case Management Team が調停し、判断を下してくれました。

   Result: (結果)
     Refund: USD 15.00  ,no need to return goods(払い戻し $15、返品する必要なし)


全額払い戻しとなりました。

めでたしめでたし。

2019年2月13日 (水)

プログラマ XGecu TL866II Plus USB を入手しました

ROMライターが欲しいと思い、ネットで調べて評価の高い、
XGecu TL866II Plus USB High Performance Programmer (リンク先は公式サイトです)
を入手しました。購入はいつものAliexpressです。

海賊版が出回っているようですが、
とりあえず、「海口鑫工电子有限公司」製の純正品のようです。



Dscn9625

中身

Dscn9602

本体

Dscn9626

付属のCDのアプリは古いバージョンのようなので、公式サイトから
現時点での最新版V8.3をダウンロードしてインストールしました。

アプリの「Xgpro TL866II Plus」を起動時にファームウェアを更新するように促されたので
ファームウェアもアップデートしました。

03

とりあえず、セットアップ終了

02


このTL866シリーズ、購入には少々注意が必要です。
下位のTL866A、TL866CSが安く販売されているのですが、
公式サイトには次の警告があります
(※注意 グーグル日本語翻訳しています)

01

下位のTL866A、TL866CSは生産中止で、偽造品の恐れがあるようです。
ヒントをクリックすると、TL866A、TL866CSはかなり前から生産を中止していて
偽造品にはソフトウェアのアップグレードに制約があるみたいな記載があります。

私は当初、Aliexpressでの中華製品の購入にはブランド選択の意識は無く
安いTL866A、TL866CSを買おうと思ったのですが、
「待てよ、とりあえず、高機能!」とTL866II Plusを選択したのですが、正解でした。

2019年2月12日 (火)

MCUXpresso IDEのインストール

久々にLPC810を使いたいと思い、新しいパソコンに開発環境が入っていなかったため
LPCXpresso IDEをインストールしようと公式サイトを調べると、
以前あったダウンロードのリンクが見つかりません。

LPCの標準開発環境は、MCUXpresso IDEに変わったんですね。
知りませんでした。

ただし、探してみると現時点でもLPCXpresso IDEはダウンロード可能なようです。
ダウンロードのページ:LPCXPRESSO: LPCXpresso IDE v8.2.2

折角なので、MCUXpresso IDEをインストールしてみました。
インストールは、下記のサイトが大変参考になりました。

参考にしたサイト:
  MCU THINGS.com - 初めてのLPCマイコン、Lチカプログラミング〜第1回 環境構築編〜

LPCXpresso IDEで開発したプロジェクトをインポートしたところ、
コンパイルも出来ました。

LPC開発環境は久しぶりで、プロジェクトの設定方法などはすっかり忘れています。
雰囲気的には、LPCXpresso IDEと変わらないかも..

02

2019年1月30日 (水)

Arduino用フォントライブラリを更新しました

Arduino用フォントライブラリを更新しました。

  更新ライブラリ
    ・Arduino用 美咲フォントライブラリ 教育漢字・内部フラッシュメモリ乗せ版
      https://github.com/Tamakichi/Arduino-misakiUTF16

     変更点
       ・Utf8ToUtf16()の戻り値の型をbyteからint16_tに変更
       ・未使用変数の削除
       ・非AVR対応
       ・マクロ定数 FONT_TOFU (=0x25a1,豆腐"□"コード)の追加
       ・API関数の説明に少々追記

フォントライブラリはいくつか作成していますが、
今回更新したライブラリは1,710文字(教育漢字1,006字+α)に絞ってフラシュメモリに乗せたバージョンです。

文字列にUTF16/UTF8を使用しているので、Arduino IDE環境で
日本語を含む文字列をそのままプログラムソース上に記述出来ます。

収録フォント

   Photo

  フォントは8x8ドットの美咲フォントを利用しています。
  フォントデータは次のような感じでメモリ上に格納します。

    Fontformat

インストール方法

ライブラリ公開先のリンクをクリックし、ページ右上の「Clone or download」を
クリックして、さらに「Dounload ZIP」をクリックするとダウンロードできます。

20190130

ダウンロード後、ファイルを解凍し、フォルダ内のmisakiUTF16 フォルダを
各自のライブラリ配置場所(\libraries)に入れます。


簡単な記述例1(1文字分のフォント取得)

#include <misakiUTF16.h>

void setup() {
  Serial.begin(115200);

  char font[8];              // フォント格納バッファ
  getFontData(font, "あ");   // "あ"のフォントを取得
  
  // 取得フォントの確認
  for (uint8_t row=0; row<8; row++) {
    for (uint8_t col=0; col<8; col++) {
       Serial.write( (0x80>>col) & font[row] ? '#':' ');
    }
    Serial.write('\n');
  }
}

void loop() {

}

実行結果

Test1

フォントデータの取得処理は、getFontData(font,"あ") のみで完了です。
後半のネストしているfor文は取得したフォントの確認用です。


簡単な記述例2(文字列分のフォントを繰り返し取得)

#include <misakiUTF16.h>

void setup() {
  Serial.begin(115200);

  char font[8];                       // フォント格納バッファ
  char *str="Abcあいうえお、埼玉";    // 文字列

  char *ptr = str;
  while(*ptr) {  // 文字列分ループ
     ptr = getFontData(font, ptr);   // 1文字分のフォント取得
     if (!ptr)
        break;                       // エラーの場合は終了
       
    // 取得フォントの確認
    for (uint8_t row=0; row<8; row++) {
      for (uint8_t col=0; col<8; col++) {
         Serial.write( (0x80>>col) & font[row] ? '#':' ');
      }
      Serial.write('\n');
    }
  }
}

void loop() {

}

実行結果

Test2

文字列に対しても、getFontData()関数で処理できます。
UTF8文字コードは可変バイト長なのですが、getFontData()関数は
次の文字へのポインタを返すので簡単に逐次取得処理を実装出来ます。

ちなみに、getFontData()関数の省略している第3引数にtrueを指定すると
半角文字は全角文字に変換してフォントデータを取得します。

こんな感じで、取得したフォントデータを使って、
LEDマトリックスグラフィック液晶への表示が出来ると思います。

2019年1月29日 (火)

MSX用ゲームカートリッジの中身

改造して利用しようと安価なMSX用ゲームカートリッジを探していると、
ヤフオクで格安品を見つけ、2本 21円で落札出来ました。

到着したカートリッジ

Dscn9573

一応、動作もしてゲームもプレイ出来ました。
CASIOブランドのゲームは人気が無いようで、比較的安く入手出来ます。


中身を見てみます。

写真上のカートリッジ(CASIOのゴルフゲーム)

Dscn9566

TMM27128D-20が2つ入っていました。
容量16kバイトの紫外線(UV)で消去可能なEPROMです。

再書き込みするか、安価なW27C512(EEPROM)なんかと交換して利用出来そうです。

写真下のカートリッジ(パナソフトのサッカーゲーム)

Dscn9571

M38128A-F7との刻印、容量16kバイトのマスクROMと思われます。
こちらもW27C512(EEPROM)なんかと交換して利用出来そうです。

参考文献 1)の仕様を見ると、カートリッジの端子のピン番号5~16が無く
利用出来ない状態です。

Lチカでもやろうと思ったのですが、端子11番のIORQ(I/Oリクエスト信号)が無いので
Z80のOUT命令でのポート出力は出来なそうです。

参考文献
・1) テクハンwiki化計画  1部 ハードウェア 4.1 カートリッジ仕様
・2) TMM27128AD-20 のデータシート(TMM27128Dは見つかりませんでした)

2019年1月27日 (日)

IchigoJam ver 1.3がリリースされました

Ichigojamのバージョン 1.3がリリースされました。
久々に大き目な更新です。

01_2

関連情報
ichigojam お知らせ 2019/1/25 IchigoJam version 1.3 リリース
B Inc. こどもIoTを実現する、こどもパソコン『IchigoJam』ver 1.3 をB Inc.がリリース
    ~さくらインターネットの『sakura.io』を利用した通信用コマンドを標準搭載~
福野泰介の一日一創 - 大人も手軽にIoT! IchigoJam ver 1.3 は何が違うのか?
IchigoJam BASIC リファレンス ver 1.3


---

感想としては、「ver 1.3でやっとまともになった」  です。
個人的にはRENUMの不具合対応が嬉しいです。

些細なことですが、RENUMを実行すると、動いていたプログラムが動かなくなるのは
納得がいきませんでした。

ラベルを使えば回避出来るのだから気にする必要がないとの意見もありますが、
行番号でプログラム実行単位を管理するBASIC言語を採用している以上、
行番号の管理は完璧であるべきです。
特に、教育現場での利用を想定しているのであれば、なおさらです。
言語の性質上、ラベルよりも行番号が使われるのは明らかです。

とりあえずver 1.3では改善が出来たようなので、
また積極的に利用していきたいと思います。

より以前の記事一覧