create every day - 福野泰介の一日一創

IchigoJam trying to connect Wii Nunchuck via I2C

2017/01/22 23:55:00
#IchigoJam #lpc1114 #maker #english 

I2C is good protocol to connect devices just 2 wires (except power and GND).
IchigoJam has commands I2CR and I2CW to access via I2C.
I try to change for the future version.

This is one of application to connect Wii Nunchuck, but I couldn't get value yet...

10 POKE#700,#40,0,0,0,0,0,0,0 20 IF I2CW(#52,#700,2,#700,0) ERR 30 @LOOP 50 IF I2CW(#52,#701,1,#700,0) ERR 70 IF I2CR(#52,#700,0,#702,6) ERR 80 FOR I=0 TO 5:?PEEK(#702+I);" ";:NEXT:? 90 WAIT 30 100 GOTO @LOOP

I have a plan to be I2CR/I2CW command simply.
Try the beta version firmware on IchigoJam-FAN.

*I did it! It's works!

links
- “WiiChuck” Wii Nunchuck Adapter Available – todbot blog
- Wiiヌンチャクの動作確認しました: 猫にコ・ン・バ・ン・ワ

Mongol KOSEN will be a model of KOSEN to the world!

2017/01/21 23:55:00
#kosen #IchigoJam #lpc1114 #english 

Fukui KOSEN is my alma meter and there are 57 KOSEN in Japan.
Japan exported KOSEN to Mongolia already! I went there 2 years ago. (report)


Last year, 2 Japanese people in charged of Mongol KOSEN got the conferment from Mongolia president. Congratulations!
"西山明彦先生、 モンゴル国「ナイラムダル勲章」を受勲 !! | モンゴルに日本式高専を創る支援の会"


In that celebration party connected to Mongol KOSEN!


I update IchigoJam ap (IchigoJam as PC/Mac application) to support Mongolia.
You can download beta version at IchigoJam-FAN.
And I posted to IchigoJam club at Mongol KOSEN.


IchigoJam for Monglia 1.2b37 firmware supported the mini LCD monitor!
Let's challenge to make it! (for Mongol KOSEN students)
"schematic of LCD shield for IchigoJam"


Assemblage at Akihabara our first IchigoJam workshop on September 2014.
This is the beginning.


This day I enjoyed soldering with many kids!

Kids and KOSEN are our Hope!

links
- モンゴルに日本式高専を創る支援の会 - IchigoJam report at Mongolia

BIG SCREEN IchigoJam New Year Update!

2017/01/01 11:30:00
#IchigoJam #english #lpc1114 

Happy New Year!

I updated IchigoJam beta firmware. You can download on IchigoJam-FAN.
Updated command: VIDEO n, SWITCH(0:TV/1:LCD)
VIDEO 0: video off
VIDEO 1: video on (32x24)
VIDEO 2: video on (32x24) inverted
VIDEO 3: video on (16x12)
VIDEO 4: video on (16x12) inverted
VIDEO 5: video on (8x6)
VIDEO 6: video on (8x6) inverted
VIDEO 7: video on (4x3)
VIDEO 8: video on (4x3) inverted

※VIDEO4 on IchigoJam 1.2 beta 34


Web for all!

Programming for all kids!
"PCN Kids Programming Contest 2016 in Winter | PCN Programming club network"

links
- Kid's PC IchigoJam - first programmable computer ($15)

福井産極小OS「IchigoLatte」フリーエリアにEEPROM実装

2016/09/11 23:55:00
#KidsIT #IchigoLatte #lpc1114 

松田さん(PCN代表)開発、RAM4KBのコンピューター、LPC1114で動く極小JavaScriptエンジン搭載OS「IchigoLatte」が、いよいよ製品版に向けたベータ版完成とのこと。 IchigoJam Tと同様、小さなコンピューターFDH28に替わって空いたスペースに搭載された、ユニバーサル基板パターン「Latteキャンバス」が特徴!


IchigoJam同様、1MbitのEEPROMを外部保存として使えるので、くっつけてみます。


接続回路を元に、どうつなげて、はんだづけするかあれこれ考えるパズルっぽさが楽しい。


I2C用のプルアップは2.4kΩ、SCL、SDAのピン配置からこのようなつくりにしてみました。ちょっと面倒な被覆ジャンパーは1本に抑えられました。


無事、起動!コンソールの ls コマンドで一覧が取得できます。


サンプルで動かしたのは古籏一浩さんの「IchigoLatteを楽しもう」より「ラスタースクロールもどき」改(sin32→sin8)


emerge+さんの「アクリルケース for IchigoJam T」にも似合います(ボタン用パーツはつけていません)


アクリルケースの保護シートは、しばらく水につけておくとするするとはがれます!


コンピューターを操るための言葉、プログラミング言語は、時々刻々と進化します。 IchigoJamで入門言語BASICを学んだあとは、ちょっと大人なOS「IchigoLatte」でJavaScript入門もオススメです!
(回路とコンピューターは共通なので、OSを入れ替えればIchigoJam←→IchigoLatte、両方使えます)

BASICにJavaScriptに使いこなせるようなところを見せつけて、本格的なパソコンをゲットしよう!

Lenovo Japan留目社長Hana道場で未来談義。9/12はいよいよ「鯖江市地域活性化プランコンテスト」公開プレゼンテーション。 留目さんとは審査員でもご一緒します!ITのまち鯖江、次の一歩につながるプランは登場なるか!?(photo by Miki Takebe

会場は鯖江市誠照寺USTアリ、13時からスタート

参考リンク
- JavaScriptで電子工作!フリーな工作エリア「Latteキャンバス」を設けた製品版IchigoL... - about yrm
- IchigoLatte

LPC1114でロースピードモード限定のUSBホスト、USBキーボード解析編

2016/07/31 23:55:00
#maker #lpc1114 

省メモリ実装のためPS/2キーボードにのみ対応としていた、IchigoJam。
USBホスト機能がついたコンピューターを使うと高くなってしまうので、ソフトウェアでなんとかする実験。
参考図書「改訂新版 USBハード&ソフト開発のすべて

USB1.1の規格では速度は2種類、12Mbpsのフルスピードモードと、1.5Mbpsのロースピードモード。 USBキーボードは遅い方なので、48MHzで動かしているCPU、LPC1114では1.5Mbpsの1信号時間に32命令(=48/1.5)実行できる計算。

常に信号を待たないといけないUSBデバイス側と違って、USBホスト(パソコン側)は、ホスト側の都合で信号が送れるのでなんとかなりそうです。


IchigoJamに接続したPS/2、USB両対応のキーボードをUSBキーボードとして接続して、キー入力した際の信号をオシロスコープでみた様子!

あとは、この信号をデコードすれば晴れてUSBキーボード対応ともできるはず!
(ただし、実装にメモリを結構使ってしまうので保存領域は最悪4つから1つに減らさなくてはいけないかも・・・)


こちらは送信信号と受信信号が混ざってしまった失敗中の様子。
オシロスコープ、便利!

IchigoJam新基板に表面実装CPUをはんだづけする方法

2016/07/08 23:00:00
#IchigoJam #maker #lpc1114 

大きくてかわいいNXP社製LPC1114FN28に加えて、新しいIchigoJam基板でサポート予定のLPC1114FDH28
違いは電子部品用語でパッケージと呼ばれる端子の形状です。

LPC1114FN28は、DIP(Dual Inline Package)といって、ユニバーサル基板と同じ、2.54mm(1/10インチ)間隔で並ぶ端子がICの両面について、下に刺さる形状になったパッケージ。工作しやすく見た目もかわいいのですが、大きさは速度と、コストの大敵です。

LPC1114FDH28のパッケージは、TSSOP(Thin Shrink Small Outeline Package)という、穴の空いていないランド(はんだづけする部分)用のパッケージSOP(Small Outline Package)の端子幅を0.65mmまで狭くしたというもの。細かいですが、なんとか手ではんだづけ可能です。

最近の端子が多くて小さいICは、BGA(Ball Grid Array)というグリッド状に並んだピンが完全に基板から見えないところに配線してあるパッケージも多いです。こうなると手ではんだづけすることは不可能、クリームはんだ、ステンシル、ホットプレートなどを使った別の方法ではんだづけする必要があります。

それでは、新しいIchigoJamで対応する、TSSOPのLPC1114FDH28をはんだづけ方法を紹介します。フラックス、マスキングテープ(またはセロテープなど)、はんだ吸い取り線を用意しましょう。

1. CPUの上を表す印を確認して、テープで真ん中、端子がランドにぴったり乗るように固定

2. フラックスを端子とランドに塗る
3. はんだを少量はんだごてにつけて、すばやく端子をなぞるようにはんだづけ(フラックスのおかげで端子とランドに吸い付きます)
4. くっついてしまった端子同士を、はんだ吸い取り線できれいに吸い取ります

5. 片側ができたらテープをはがして、基板をひっくり返し、反対側も同様に

6. テスターを使ってチェックその1、隣り合う端子がつながっちゃっていないか確認(音がなったらNG、はんだを吸い取りましょう)

7. テスターを使ってチェックその2、配線部本とCPUの端子がつながっているか確認(今度は音がならなかったらNG、もう一度はんだづけしましょう)

8. 確認できたらCPUのはんだづけは完了!あとは普通に組み立てます。ICソケットは、はんだづけしなくてもOK

9. ICソケットにIchigoJamシールを貼っておきましょう!

こちらのブログ「LPC1114を600mil→300milにする動画を投稿しました。 ( 工学 ) - チカラの技術 - Yahoo!ブログ」のLPC1114FN28の内部写真にあるように、中身はスカスカ、現代のコンピューターの小ささを体感できます。

はじめてのはんだづけに今回の表面実装はちょっと難易度が高すぎるので、LPC1114FDH28の実装済み版も用意される見込みです。発売まで、もうしばらくお待ち下さい。
IchigoJam プリント基板ハーフキットT(表面実装CPUはんだづけ済み)
IchigoJam プリント基板完全組立キット T(上級者向け、表面実装に挑戦!)

自分で作って学べるコンピューター「IchigoJam」の新プリント基板、小型CPU「LPC1114FDH28」にも対応予定

2016/04/21 23:55:00
#IchigoJam #lpc1114 

IchigoJamで使っているお気に入りのCPU、NXP社の「LPC1114FN28」、最近のCPUでは珍しいDIP(Dual inline package)といって、ピン間が広く、はんだづけがしやすいのが特徴のステキなコンピューターです。

実は、このCPU、より小さな組み込み用途に使える、同じ機能の小型版「LPC1114FDH28」というものがあります。 この両方のCPUに対応した、IchigoJamの新基板を準備中です。


真ん中がおなじみ LPC1114FN28、右が小型版 LPC1114FDH28、ピン数も機能も速さも同じ
左に見えるのが両方のCPUに対応した、新プリント基板β


トレードマークのピン配置が分かりやすいシールも、小型版にICソケットを重ねて、シールを貼れば大丈夫という発見!


この変更と合わせてより組み立てやすくなるよう調整中です。
(表面実装(SMD)の小型CPUは手ではんだづけするのが難しいので、プリント基板に実装した状態での出荷を想定しています)


全部自分で組み立てできる、従来のCPU版はこのような部品セットになります
(ビデオ端子は黄色になります)


新基板の登場、お楽しみに!

参考リンク
- こどもパソコンIchigoJam

9コマンド追加、IchigoJam ver 1.1 リリース! ITの入り口広げる、東京高専&W3C

2015/12/21 23:55:00
#lpc1114 #IchigoJam #kosen #web 

IchigoJam ver 1.0 リリースから半年、Facebookグループ「IchigoJam-FAN」にてβ版を重ね、ついにver1.1のリリースです。 β版をお使いいただいた方々、ご意見いただいた方々、ありがとうございました!

ver1.1ファームウェアのダウンロードは、こちら「ichigojam-1.1.1.zip

LPC1114の32KBのFlashROM中、8KBはプログラム保存に使うため、残りの24KB。自ずと限界もありますが、あまり複雑にはしたくないこどもパソコンIchigoJamなので、今回の追加コマンドは9つだけです。 下記、ざっと紹介します。

ver1.1 新コマンド 9つ! (PWM/UART/SRND/LANG/DEC$/STOP/CONT/LINE/RESET)一覧

PWM n,m,l (サーボモーターの制御や、SOUNDに加えて和音に使える目玉機能!)
パルス出力 n:ポート2〜5 m:周期20msec中0.01msec単位でHIGH時間指定0-2000
サーボ用100-200前後 l:0.01msec単位の周期指定(省略可能)
PWMとは、Pulse Width Modulation、電圧が一定時間だけ高い状態を繰り返す機能です。
周期指定lは、ポート2〜4とポート5の2系統使えます。つまり、音声として使う場合は2音程。

UART n,m (Universal Asynchronous Receiver Transmitter、いわゆるシリアル通信)
シリアル出力を制御します n:出力制御、m:入力制御 (n=0:出力なし、1:PRINTのみ、2:PRINT/LC/CLS/SCROLL(初期値)、3:改行\r\n変換モード) (m=0:入力受付ない、1:入力を受け付ける(初期値)、2:ESC無効モード)
起動直後、UART1,1となっていて、PRINT(または、?)で出力した文字はそのままTXDから送信され、RXDからコードを入力することでキーボード代わりになります。
(デフォルト通信速度は115200bps、8bit、パリティなし、ストップビット1bit)

SRND n (乱数初期化、ランダマイズ)
RND(n)による乱数列を初期化します。指定した数によって、乱数列が固定されます。
ランダムに面を生成するゲームに使うと、毎回決まったステージを生成できて便利です。

LANG() (言語種を返す)
今回の目玉、モンゴル語対応!
モンゴルで使われるキリル文字は、カタカナの代わりに入っています。
その状態をプログラムで取得するためのコマンドです。
(1:カタカナ&ローマ字入力、2:キリル文字&モンゴル語配列)

DEC$(n,m) 10進数の桁数指定付き表示
PRINT文でいままで使えた、16進数を表示する HEX$((n,m) や、2進数を表示する BIN$(n,m) に加えて準備。
スコア表示なので桁数を揃えたい時に使ってください。

STOP プログラムを中断
ver1.1からESCキーで停止した際、停止した行数を Break in 10 などと表示されるようにしました。
STOPコマンドはこの状態をプログラムで作ることができます。デバッグ(プログラムの間違い探し)にどうぞ!

CONT 実行中または中断した行を再度実行する
SOTPやESCで停止した行から再開します。行の先頭から実行されるので注意!
裏ワザ的ですが、プログラム中で使うことで、現在実行中の行を頭から実行するために使えます。
下記のように書くとキー入力待ちになります。

10 IF INKEY()=0 CONT

LINE() 実行中の行番号を返す(非実行中は0)
IchigoJamのGOTOやGOSUBは、変数が使えます。現在行からの差分で飛ばすために、下記のように書くと便利です。

10 GOTO LINE()+n*10

RESET リセット(電源入れ直し相当)
電源を入れ直しをソフトウェア的に実行します。保存していないプログラムは消えてしまうので注意!

高専教育にもじわじわと広がっている、IchigoJam。
今回は高専プロコンでNICT賞獲得したチームのいる、東京高専へ。

「時代が高専に追いついた!? ものづくり起業と次世代Web」


ものつくる高専生、自分の友だちのちょっとした不満をステキ道具をつくって解決しちゃおう!


起業家甲子園に向けて打ち合わせ終了!クリスマスツリーと先生を囲んで!
小学校でのタブレットを使った教育環境を防犯防災教育から変える!!
「ホップ!ステップ!マップ!」のオリジナルシャツもゲット!


W3C日本ミーティングでは、ウェブアクセシビリティが熱いという新情報!
障害のある人でも、こどもでも、おじいちゃんおばあちゃんでも、誰にでも優しいWebを目指します。
オープンデータによる情報提供と、利用者にぴったりなアプリという分離も進むことでしょう。

ハンドアセンブルで超速計算! - IchigoJamではじめるARMマシン語その2

2015/10/23 23:55:00
#IchigoJam #KidsIT #lpc1114 #ARM 

マシン語の体験が終わったので、高速に足し算するプログラムをつくってみましょう!

プログラムをひとつひとつマシン語対応表を見て、2進数列にして打ち込んでいくことをハンドアセンブルといいます。手(ハンド)で組み立てる(アセンブル)ので、ハンドアセンブル、てづくりですねっ!

IchigoJamのマシン語では、レジスタというBASICで使う変数のようなものが使えます(ひとまず安全に使えるのは、R0-R3の4つ)。レジスタに値をいれたり、レジスタ同士で計算して、その結果によって分岐(BASICでいうGOTO)することで、プログラムを組み立てます。

まずは、指定した数字までを足し算するマシン語プログラムをつくってみます。
BASICから渡される数は、レジスタR0に入っていて、RETした時に同じくレジスタR0に入っている数がUSRコマンドの値となります。

まずは実験 R0=R0+1 をハンドアセンブルしてみましょう。
下記の表から、演算の一番上 00110 が該当します。Rd = R0 なので、0を2進数3桁で表す 000、足す値は 1 を2進数8桁で表す 00000001
これを全部くっつけると
0011000000000001
という16bitのマシン語ができあがります。
マシン語プログラムからBASICへ戻る、分岐内にある RET 0100011101110000 を付け加えて、前回やったように上位8bitと下位8bitを入れ替えて書き込みます。

POKE #700,`00000001,`00110000,`01110000,`01000111 ?USR(#700,10) 11

では、繰り返し計算させてみます。

R1=0
R1=R1+R0
R0=R0-1
IF !0 GOTO -2 (計算結果が0でなければ2つ前の命令にジャンプ!)
R0=R1
RET

これをハンドアセンブルすると...

00100 001 00000000 (R1=0)
0001100 001 000 001 (R1=R1+R0)
00111 000 00000001 (R0=R0-1, ※0001111 001 000 000 でもok)
11010001 11111100 (指定の-2から更に-2した-4の2進数表現256-4=252を使う)
0100011000 001 000 (R0=R1) 0100011101110000 (RET)

IchigoJamに書き込み、実行してみます。

POKE #700,`00000000,`00100001,`01000001,`00011000 POKE #704,`00000001,`00111000,`11111100,`11010001 POKE #708,`00001000,`01000110,`01110000,`01000111 ?USR(#700,100) 55

動きました!

ミッション1. BASICで同じようなプログラムをつくって速度を比べてみましょう
ミッション2. 階乗(指定した値まで掛け算する 3の階乗=1*2*3)するマシン語プログラムをつくってみましょう

IchigoJamで使えるマシン語表(基本編)

※GOTOに指定する値は、飛ばしたい差分から更に-2した数を指定する
負の数は補数表現(-1 = 255、-2 = 254・・・)を使用する
命令2コ前に飛ばしたいとき252、3コ前の時251・・・

IchigoJamのCPU、NXP社のLPC1114FN28は、ARM社のCortex-M0をベースに作られています。Cortex-M0で動くマシン語が、16bitが基本のシンプルで美しいARM Thumb命令セットです。

多くのスマホやタブレットでもARMアーキテクチャーが使われていて、この命令セットと互換性があります。つまり、ARMマシン語をマスターすれば、超高速動作するiPhoneアプリを創ることができちゃうかも!?

- 連載、IchigoJamではじめる、ARMマシン語入門
1. はじめてのマシン語
2. ハンドアセンブルで超速計算!
3. マシン語メモリアクセスで画面超速表示!
4. マシン語でLEDを光らせよう!
5. 楽しさ広がるマルチバイトメモリアクセスとスタック
6. マシン語使いこなしTIPS
7. カジュアルに使うインラインマシン語

マイコンLPC1114の外部クリスタルの自動判別方法

2015/07/26 23:55:00
#lpc1114 #IchigoJam #maker 

外部クリスタルが標準搭載となったIchigoJam UIchigoJamは、I2Cサーボにも対応し、日常をオートメーション化する組み込みガジェット開発用にも便利に使いやすくなるようバージョンアップ中です。

CPU(NXP社LPC1114FN28)がICソケットで抜き差し可能になりました。 大きめのマイナスドライバーを隙間に差し込むと比較的簡単に取り外すことができます。 ファイル番号0に、プログラムを保存しておくと、BTNピンをGND接続で起動時に自動的に読み込まれ実行します。

その際、IchigoJam U用に書き込まれた外部クリスタル12MHz対応版の場合、クリスタルも別途付けておく必要がありましたが、 現在開発中の1.0.2β8では、外部クリスタルが付いてない時に、自動的に内蔵発振器を使って動作するように改良しました。 (開発中のファームウェアは、IchigoJam-FANのファイルからダウンロードできます)

IchigoJam-FANへ投稿いただいたWDT(ウォッチドッグタイマー)を使った方法を実装しました。
WDTとは、マイコンが自分自身がちゃんと動いていることを定期的に確認したり、自動的に再起動したりしてくれる便利な機能です。怪しいことが起きたら吠えて知らせてくれる、まさに番犬(=ウォッチドッグ)!

1. WDTによって再起動されたのであれば内蔵発振器で動かす

if (LPC_SYSCON->SYSRSTSTAT & (1 << 2)) {
	// IRC
} else {
	// try XTAL
}

2. 通常起動なら、WDTをまず動かす
int freqsel = 1 // 1:0.6MHz - 15:4.6Mhz
int divsel = 64; // 2(fast) - 64(slow)
LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 15); // WDT on
LPC_SYSCON->PDRUNCFG &= ~(1 << 6) // WDT on
LPC_SYSCON->WDTOSCCTRL = (divsel / 2 - 1) | (freqsel << 5); // 1, 64 = 9.3kHz
LPC_SYSCON->WDTCLKDIV = 1;
LPC_SYSCON->WDTCLKSEL = 2; // WDT
LPC_SYSCON->WDTCLKUEN = 0;
LPC_SYSCON->WDTCLKUEN = 1;
LPC_WDT->MOD |= (1 << 0) | (1 << 1); // enable、auto reset
LPC_WDT->MOD &= ~(1 << 2) // clear timeout flg
LPC_WDT->TC = 0xff; // min 0xff
LPC_WDT->FEED = 0xaa;
LPC_WDT->FEED = 0x55;

3. 外部クリスタルに切り替える(外部クリスタルがついてないとWDTが自動的に再起動して1へ)
LPC_SYSCON->SYSPLLCLKSEL = 1; // use XTAL
LPC_SYSCON->SYSPLLCLKUEN = 0;
LPC_SYSCON->SYSPLLCLKUEN = 1;

4. 外部クリスタルでちゃんと動いたら、WDTを止める
LPC_SYSCON->PDRUNCFG |= 1 << 6; // WDT off
LPC_SYSCON->SYSAHBCLKCTRL &= ~(1 << 15) // WDT off

日常とコンピューターがどんどん近づけていきましょう!


(こちら、IchigoJam Uより小型なIchigoJam、クリスタルを挿しても挿さなくても動いて便利!)

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY 福野泰介 - Taisuke Fukuno / @taisukef / high-res profile image