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

IchigoJam

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月 8日 (金)

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

前回の続きです。

GithubにてPS/2インタフェース対応ファームウェアを公開しました。

・ CardKeyBoard PS/2 インタフェース版 ファームウェア
   https://github.com/Tamakichi/CardKeyBoard_PS2
  (2019/03/10 更新しました:  (内容) PS/2イニシャル時0X00送信削除、応答無しでも次に進む、LED点滅廃止

オリジナル版になかった [カナ] [Insert][F1] [F10] キー等を追加しました。
IchigoJamでのローマ字カタカナ入力にも対応しています。

プログラム入力には困らないと思います。

Dscn9772

Dscn9774

ケーブルには次の信号を割り当てています。

02

03

IchigoJamで利用する場合、
ジャンパーワイヤー(オス - オス)を使って、端子に接続でも利用出来ます。
   GND    - GND
   VCC    - 5V or 3.3V
   KBD1  - CLK
   KBD2  - DATA

Dscn9783

USBコネクタ(オス)を用意して、結線してUSB接続でも利用出来ます。

04

キーを押すのが固めですが、公開されているこのキーボード用ケースの
3Dプリンター用データを出力して装着すると、かなり改善されて入力しやすくなりました。

Dscn9780


ファームウェアの書き込みが少々面倒ですが、下記のサイトにて詳しい方法が
分かりやすく解説されています。大変参考になりました。
しかるのち - M5Stack:CardKB ファームウェア更新


2019/03/10 追記

IchigoJam(V1.3.1)での利用で、キーボードを認識しないとの報告があり、
手持ちの世代の違うIchigoJamを試したところ、認識出来ないボードが1つありました。

Dscn9799

下段のビデオ端子が白いボードが認識出来ませんでした。
ファームウェアは1.2.1と古いですが、安定したバージョンです。

調べると、キーボード起動時のLED(NeoPixel)点滅が原因のようです。

制御を行うAdafruit NeoPixelライブラリが内部で割込停止を行っており、
PS/2イニシャル処理(ピン変化を割込みで検知)の邪魔をするようです。

点滅を無くすと認識出来るようになりました。
他のボードは問題なかったので、起動時の微妙なタイミングで発生するようです。
(電源周りの差異で立ち上がりが微妙に違う等)


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年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では改善が出来たようなので、
また積極的に利用していきたいと思います。

2019年1月13日 (日)

Ichigojamを1.3 beta4にアップデートしました

IchigoJam のファームウェアの1.3系のベータ版が公開されています。
早速、手持ちのIchigoJamのファームウェアを1.3beta4にアップデートしました。

01

参考サイト
福野泰介の一日一創
  1)1/5はイチゴの日、使い勝手をちょっと向上、IchigoJam 1.3ベータ公開!
  2)定数行番号のRENUMに一部対応! たった24KBのOS、IchigoJam 1.3 beta 3
  3)ゲームで学ぶ、アルファベット! LOCATEの第三パラメーター、カーソルスイッチ実装、IchigoJam 1.3 beta 4

現時点の最新版は、上記サイト3)よりダウンロードできます。


1.3系ではざっと上記記事に目を通した感じでは、次の変更が行われているようです。

主な変更
  1)RENUMコマンドの機能改善
    GOTO文、GOSUB文の引数の行番号も振り直されるように改善されました

  2)I2Cの動作の改善
    ・実装の問題で動作しなかった 温湿度計 AM2320にも対応

  3)メモリマップ・メモリ領域変更
    ・I2C専用の32byte確保など
    ・物理アドレスの変更

  4)カーソルスイッチを実装
    ・LOCATEコマンドの第3引数にてカーソルの表示形式の指定が出来る


個人的には、RENUMコマンドの機能改善はありがたいですね。
改善前はRENUMコマンドを実行すると、
正常に動いていたプログラムが動かなくなり、手作業で修正を行う必要がありました。

実際に試してみると、GOTO文の引数の行番号がちゃんと振り直されました。

02

RENUMコマンド実行後、問題なく正常実行できました。

03

改善前は GOTO文、GOSUB文を多用している長いプログラムで
RENUMコマンドで行番号を振り直し後に不毛な修正作業を強いられることに
非常に不満を抱いていたのですが、今回の修正でその作業から解放されました。

I2C周りも挙動が怪しかったのですが、改善されたようです。
後ほど、改めて調査したいと思います。

2018年9月25日 (火)

3Dプリンターでの試行錯誤 その2

3Dプリンタ利用の練習として、
以前製作した下の写真 「I2C接続 16x8ドット LEDマトリックス」のケースを製作してみました。

 

Dscn4264_2

 

Dscn4266_2

 

3D図形の作成はTinkercadにて行いました。
形状は単純なので、割と簡単に作成出来ました。

 

03

 

ここで、寸法は実際の寸法よりも、縦横0.4mmほど大きくしています。
試行錯誤の結果、ノズル幅分の約0.4mm小さくなることが分かり、その調整をしています。

データを、STL形式でエクスポートして3Dプリンタに読み込ませて出力開始、
1時間ほどで出力出来ました。

 

Dscn8857

 

寸法はドンピシャ、ジャストフィットで収まりました。
いい感じにできました。

 

Dscn8864

とりあえずIchigoJamで動作、問題無く動作しました。
基板剥き出しから一転して、ちょっとおしゃれな感じになりました。

 

Dscn8877

動作はこんな感じです。

 



3Dプリンタ、色々と活用出来そうです。

2018年8月 9日 (木)

以前製作したIchigoJam用EEPROMエミュレーションが動かない

以前Arduino(ATmega328)を使ったIchigoJam用のEEPROMエミュレーション
製作したのですが、IchigoJamのファームウェアを1.2.1から最新版の1.2b59に更新すると
動作しなくなってしまいました。

左写真左がI2C接続EEPROM、右がEEPROMエミュレーションでSDカードにデータを
保存します。右写真が利用のために装着した様子です。

Dscn8649  Dscn8642

公開サイト

  ・IchigoJam用EEPROMエミュレーション
   https://github.com/Tamakichi/Ichigoepprom3

その原因を調査してみました。

Dscn8641

まず、どのバージョンから動かなくなったかを調べてみると、
IchigoJamのファームウェア V1.2.2以降から動かなくなってしまいました。
念のため、IchigoJamの旧版ハードウェア、DIP版等でも調べましたが、
ファームウェアのバージョンが関係するようです。

次にI2Cのパケットをロジックアナライザで調べてみました。
I2C接続EEPROM(Atmel 24C256) モジュールIchigoJamに接続し、
同じハードウェアでIchigojam ファームウェア v1.2.1v1.2b59それぞれの
LOADコマンド実行時の様子を調べてみました。

  ・Ichigojam ファームウェア v1.2.1 の場合
  Ichigojam121

  ・Ichigojam ファームウェア v1.2b59 の場合   
   Ichigojam12b59

両方のファームウェアとも EEPROM(Atmel 24C256) モジュールでは問題なく動作します。
ただし、赤い四角で囲った箇所に差異が見られます。

v1.2.1では、EEPROMのデータシートに記載されているシーケンシャル読み込み通りの
プロトコルにてデータの読み込みが行われています。

一方、v1.2b59のでは、
スタートビット(緑の立下り)の直後にストップビット(赤の立下り)、さらにその直後に
スタートビット(緑の立下り)がIchigoJamから送信されています。
SCLの1クロック内でスタートビットストップビットがあるのも謎です。

私の知識レベルでは、不可解なプロトコルです。

現時点では、分かることは
  ・バージョン更新でEEPROMのアクセス方法に変更が見受けられる。
  ・プロトコル的に怪しい(かもしれない)。
  ・それでもEEPROMは問題なく動作している。

です。

本物が動いて、エミュレーションが動かない状況である以上、
エミュレーション側の実装に問題があるわけですが、
Arduno的にこの対応はちょっと無理そうです。

IchigoJamEEPROMエミューレションの公開サイト(GitHub)の方に、
「IchigoJam 1.2.2以降のバージョンには対応していません。」を追記しました。
一旦、本件はこれでCLOSEとします。

そいういえば、温湿度センサモジュール AM2320がIchigojamv1.2.2 あたりから
動かなくなったようなので、関連性があるのかもしれません。

2018年5月16日 (水)

ゲームボーイ(旧タイプ)のパーツ その2

前回からの続きです。
その後、ケースの他に液晶モジュールとそのカバーを追加注文し、部品が到着しました。
とりあえず、IchigoJamで稼働させてみる予定です。

到着したパーツ

Dscn7908

Dscn7910

追加注文したパーツ

・LCDモジュール
3.5インチ 4:3の画面だと選択枝がこれしかありませんでした。
Podofo 3.5" TFT LCD Display RGB LCD Display Module Kit

01

・LCD用のカバー
  プラスチックではなくガラス製です。
Glass For GameBoy Zero DMG-01 For Raspberry Pi Modify Glass Lens Protector

02


まずは、LCDディスプレイの動作チェック

LCD部とドライバーボードのセットです。NTSCビデオ入力で表示出来ます。
IchigoJamに接続して表示確認をしたところ、仕様では12V駆動ですが5Vで動作しました。
意外と視野角の広く、斜めからも良く見える液晶です。

Dscn7907

液晶パネルはLQ035NC111という、比較的入手しやすいパーツです。

さっそく、今回の試みで一番重要なLCDの組み込みをやってみました。
傷防止のマスキングテープを付けて、段差のある部分をカットします。
パネルカバーが載せられるように、若干フチを残します。

Dscn7912

マスキングテープで仮止めして、一旦組み立ててみます。

Dscn7914

基板も装着

Dscn7917

ふたを閉めて、表示の確認をします。
LCDモジュールからケーブルを引き出して電源供給とビデオ信号入力を行っています。

Dscn7921

とりあえず、見栄えも良くいい感じに仕上がりました。
LCDカバーは購入して正解でした。

次に裏の電池ボックスからの電源供給をどうするか考えてみます。
Ichigojamを中にどう入れるかも検討します。

Dscn7922

他にもコネクタ類(キーボード、シリアル通信、外部電源)も何とかしたいですね。


2017年12月 4日 (月)

ラズパイ版IchigoJamが公式サイトに掲載されています

IchigoJamのラズパイ版がラスパイ公式サイト ダウンロードに掲載されています。

https://www.raspberrypi.org/downloads/

01

早速、手持ちのラズパイ2で試してみました。
オリジナル版とは異なり、USBキーボードがサポートされています。
画面表示もHDMIに対応していますが、AV端子を使ってNTSCビデオ出力を試してみました。

02

config.txtファイルに sdtv_mode=1 を追加るつことでNTSCビデオ出力出来ます。

今回、ちょとハマったのがSDカードの相性問題です。
下記サイトにラズパイでのSDカードの相性についての記載があります。
https://elinux.org/RPi_SD_cards

手持ちのSanDisk製microSDカードではブートできませんでした。
手持ちのエレコム製microSDカードでは問題無く起動出来ました(写真)。

現時点では、オリジナル版の全ての機能はサポートされていません。
処理速度は、オリジナル版の50倍から100倍(利用するラズパイによる)くらい出ているようです。

移植は完成度は高く、素晴らしいのですが、
オリジナル版のインタープリタ実装方式が今一だった部分がそのまま移植されたため、
ラズパイ本来のパフォーマンス出せていないようで、ちょっと残念です。
(STM32F103C8T6の豊四季Tiny BASICよりも処理は遅いです^^)

このあたりは、改善を望みます。

2017/12/15 追記

現在ラズパイ版IchigoJamは、随時改良・更新が行われています。
描画処理がかなり改善されているようです。

より以前の記事一覧