micro:bitを自分だけのパソコンに改造しよう!プログラミングもロボット操作もお手軽なmicroDake環境の作り方!

micro:bitを自分だけのパソコンに改造しよう!プログラミングもロボット操作もお手軽なmicroDake環境の作り方!

02.JPG

micro:bitがパソコンになる「micro:Dakeアダプタ」、ちょっと使ってみましょう。まずは何はともあれ micro:bit を準備。hexファイルを書き込むために一般的なパソコン、そして USB<->microUSB ケーブルも準備してください。

01.png

最新のmicroDakeOSをこちらよりダウンロードしてください。

03.JPG

パソコンとmicro:bitを接続します。

04.png

すると「MICROBIT」という外部ストレージが現れますので、「ichigonquest.ubit.dj.ja.aiueo.hex」をドラッグ&ドロップで書き込みます。写真はmacですがWindowsでも同じです。書き込みが終わるとmicro:bitが自動でリセットしますが、書き込んだhexファイルは見えません。

05.JPG

これでOK、ケーブルをはずします。

06.jpg

micro:Dakeアダプタに取り付けます。

07.JPG

ちょっと硬いですがザクッと。

08.jpg

あとはスクールセットなどのIchigoIgai に差し込めば、

09.JPG

小さなMyパソコンのできあがり、IchigoDakeのように使うことができます。

IMG_6200.jpeg

もちろん DakeJacket に刺せばカムロボだって動かせます。

標準のIchigoDakeと違って、

  • ボタンが2つ
  • LEDが5×5こ
  • 加速度センサー
  • 無線通信

など、楽しみがたくさん!

今回つかった IchigonQuestならキーボードタイピングも必要ありません。どんどんプログラミングを楽しもう!

.

micro:bit でお手軽プログラミング「micro:Dakeアダプタ」提供開始、無線通信はとっても便利!

micro:bit でお手軽プログラミング「micro:Dakeアダプタ」提供開始、無線通信はとっても便利!

IMG_2518

micro:bit用のロボットカー「Ring:bit Car」をゲットしました。

IMG_2520.jpg

キット状態で入っています。micro:bit本体も付いて $34.50

IMG_2521.jpg

なんと、走行用モーターは360度サーボ

IMG_2523.jpg

電源は単4電池3本です。

IMG_2522.jpg

完成。組み立ては本当に簡単、10分程度。

IMG_2528.jpg

ではmicro:bitにプログラムを入れましょう(こちらを参考に準備)。micro:bitをパソコン化する micro:Dakeアダプタ を使って IchigoIgai に接続して IchigonQuest (for uBit) を起動します。

IMG_2530.jpg

Ring:bit Car は360度サーボで動きますので、命令は ぱるす(PWM) を使います。

IMG_2532.jpg

150が停止、100や200で正転反転します。今回は1秒前に進んで止まる、とやってみました。

IMG_2533.jpg

micro:Dakeアダプタからmicro:bitをはずして、

IMG_2534.jpg

Ring:bit Car に取り付け、ネジ5本です。

IMG_2538.jpg

micro:bitのボタンを押しながらスイッチを入れれば 1秒前に 進みます!

IMG_2527.jpg

もう少し複雑な動きにしましょう。毎回ネジ5本をつけたりとったりするのは面倒なので、別のmicro:bitをもう1つ、こっちでプログラムを組むことにします。

IMG_2539.jpgIMG_2540.jpg

15行のこんなプログラムにしました。5×5 LEDに矢印を表示しながら左右にゆらゆら動く予定です。

IMG_2541.jpg

ちなみに IchigonQuest uBit (microDakeOS) では micro:bit 前面にある 5×5 LED に絵を表示するためのエディタを備えているので簡単です。

IMG_2542.jpg

できたプログラムは無線で送ります。ロボット側のmicro:bitの電源を入れ、そのあとにスイッチを押します。すると5×5 LEDが光り プログラム受信モード になります。

IMG_2543.jpg

そこでプログラム作った側から つうしん -> おくる とすれば送信完了。

ロボットのスイッチを入れれば動き出します。無線送信便利ですね。

せっかくなので2台で並走してみました、かわいい。

 

c4345cbcaa917216fb3c.jpeg

micro:bit でお手軽プログラミング「micro:Dakeアダプタ」いよいよ提供開始。

 

 

 

 

 

.

 

8kB JavaScriptエンジン「MINIScript」を使ってみよう!Cで書かれたスレッドクラスの使い方やスタッククラスの派生方法を徹底詳説!

8kB JavaScriptエンジン「MINIScript」を使ってみよう!Cで書かれたスレッドクラスの使い方やスタッククラスの派生方法を徹底詳説!

「8kB ROM, 1kB RAM」の極小JavaScriptエンジン「MINIScript」を使ってみます。

Screen Shot 2018-08-29 at 10.25.48.png

まず “Clone or download” から “Download ZIP” でソースコードをダウンロードします。

Screen Shot 2018-08-29 at 10.27.53.png

内容はこんな具合です。”readme.c” が使い方となる説明になっていて、ひとまず

$ gcc -m32 miniscript.c mslib.c readme.c && ./a.out < sample.js

とすればビルドしてサンプルJSを動かすことができます。

 

今回は自分で一から使ってみましょう。

Screen Shot 2018-08-29 at 13.38.52.png

まずは空っぽのCファイル、ここでは “myproduct.c” を用意します。

int main(){
    MyStack stack;
    MyScope scope;
    Thread thread;

    Stack_(&stack.base, SIZE_STACK);
    Scope_(&scope.base, SIZE_SCOPE);
    Thread_(&thread, src, &stack.base, &scope.base);

    Thread_run(&thread);      //[*1]

    Thread__(&thread);
    Scope__(&scope.base);
    Stack__(&stack.base);
}

これが最低限、肝となるコードです。その中でも特に [*1] がスクリプトを実際に実行する箇所です。命名規則上、コンストラクタはクラス名の後ろにアンダーバー “_” が1つ、デストラクタはアンダーバーが2つです。Stackオブジェクト stack とScopeオブジェクト scope を作り、それらを用いて Threadオブジェクト thread をコンストラクト、最後に Threadクラスのメンバ関数 Thread_run を呼べば完了です。JavaScriptのソースコードは thread コンストラクト時に渡しておきます。thread,scope,stackの各オブジェクトは使い終わったらデストラクトしておきます。

#define SIZE_STACK 0x40

typedef struct{
    Stack base;
    Var vars[SIZE_STACK];
} MyStack;

stackオブジェクトはMyStackクラスですが、このようにStackクラスから派生させてください。派生元のStackクラスは実メモリを持たない状態で宣言されています。SIZE_STACKで好みの深さのStackとして派生させてください。

#define SIZE_SCOPE 0x40

typedef struct{
    Scope base;
    VarMap nvars[SIZE_SCOPE];
} MyScope;

scopeオブジェクトについてもstack同様です。scopeオブジェクトは実行中の変数や関数の名前を保持することに使われます。JavaScriptソースコード中で多くの名前が登場する場合にはSIZE_SCOPEを多めに設定してください。

#define MS_SIZE_POOLEDOBJ 0x04  // object member max
#define MS_SIZE_POOLEDARR 0x20  // array length max
#define MS_SIZE_VARNAME   0x8   // var name length max
#define MS_SIZE_PROPNAME  0x8   // property name length max
#include "miniscript.h"

あとは “miniscript.h” を #include すればいいのですが、このヘッダーファイルは設定すべき値が4つあり、#include より前に上記のように適当な値を設定してください。

const char src[] =
    "var calc = function(p1, p2){ return p1*p2; };"
    "var a = calc(3, 6);"
;

今回のJavaScriptソースは試しにこのようにしてみましょう。”a” が 18 になるはずです。

    printf("%d\n", Stack_tip(&stack.base, -1)->num);

スクリプト実行後、stackの最後尾を調べれば 変数a の値が入っているはずですのでこのようにしてprintfして見てみましょう。

 

#include <stdio.h>

#define MS_SIZE_POOLEDOBJ 0x04 // object member max
#define MS_SIZE_POOLEDARR 0x20 // array length max
#define MS_SIZE_VARNAME   0x8  // var name length max
#define MS_SIZE_PROPNAME  0x8  // property name length max
#include "miniscript.h"


#define SIZE_STACK 0x40
typedef struct{
 Stack base;
 Var vars[SIZE_STACK];
} MyStack;

#define SIZE_SCOPE 0x40
typedef struct{
 Scope base;
 VarMap nvars[SIZE_SCOPE];
} MyScope;

const char src[] =
    "var calc = function(p1, p2){ return p1*p2; };"
    "var a = calc(3, 6);"
;

Var Stack_OVERFLOW;

int main(){
    MyStack stack;
    MyScope scope;
    Thread thread;

    Stack_(&stack.base, SIZE_STACK);
    Scope_(&scope.base, SIZE_SCOPE);
    Thread_(&thread, src, &stack.base, &scope.base);

    Thread_run(&thread);

    printf("%d\n", Stack_tip(&stack.base, -1)->num);

    Thread__(&thread);
    Scope__(&scope.base);
    Stack__(&stack.base);
}

こちらが今回の “myproduct.c” の全貌です。保存したら,

$ gcc -m32 miniscript.c myproduct.c && ./a.out

でビルド&実行してみましょう。

18

と表示されましたか?

今回はJavaScriptの配列やオブジェクトを利用しませんでしたが、それらを使うこともできます。詳しくは付属の readme.c をご覧ください。

 

MINIScript」は NXP LPC1114 用 組み込みOS「IchigoLatte」のために作られたJSエンジンです。容量的な制約が多い中、少しでもフットプリントの小さいエンジンを目指してヒープは使わずメモリはCスタックやグローバルに確保します。ちなみにIchigoLatteでは libc も自前実装してあります。

ECMAScriptのサブセットとして作っていて機能はまだまだ少ないですが、今後はJSON表記に対応したり、いろいろ加えたいなと思っています。みなさんの楽しいご意見、お待ちしています!

 

 

 

 

 

 

 

 

.

 

The gerber data of “IchigoJam S” and the BOM list has published in GitHub. / オープンハードウェア「IchigoJam S」のガーバーデータとBOMリストをGitHubに公開!

The gerber data of “IchigoJam S” and the BOM list has published in GitHub. / オープンハードウェア「IchigoJam S」のガーバーデータとBOMリストをGitHubに公開!

Screen Shot 2018-08-28 at 9.12.22.png

We have published the gerber data of  “IchigoJam S” designed by NaturalStyle. The BOM list also included. Please use for creation your original boards or extension boards.

 

NaturalStyleデザイン「IchigoJam S」の基板データ(ガーバーデータ)を公開しました。推奨パーツリスト(BOM.xls)も同梱しています。独自基板、拡張基板の製作などに活用ください。

 

 

 

 

 

 

.

 

極小JavaScriptエンジン「MINIScript」、GitHubに登場!フットプリントはROM 8kB、RAM 1kB

極小JavaScriptエンジン「MINIScript」、GitHubに登場!フットプリントはROM 8kB、RAM 1kB

Screen Shot 2018-08-27 at 10.04.37

極小JavaScriptエンジン「MINIScript」のソースコードをGitHubに公開しました。これは IchigoLatte に使われているエンジンです。

これは8kbのROM、1kBのRAMしか使用しません(arm thumb)。機能はまだサブセットですが、みなさんのForkを待っています。

 

[使い方はこちら]
8kB JavaScriptエンジン「MINIScript」を使ってみよう!Cで書かれたスレッドクラスの使い方やスタッククラスの派生方法を徹底詳説!

 

 

 

 

.

 

A tiny JavaScript engine “MINIScript” appears on GitHub! It’s need only 8kB for ROM and 1kB for RAM.

A tiny JavaScript engine “MINIScript” appears on GitHub! It’s need only 8kB for ROM and 1kB for RAM.

Screen Shot 2018-08-27 at 10.04.37

I have published source code of tiny javascript engine ‘MINIScript’ to the GitHub. It is the engine used in IchigoLatte.

This MINIScript use only 8kB of ROM space, RAM usage is about 1kB(in arm thumb). The functions are subset yet, I’m waiting for your fork.

 

[How to use]
8kB JavaScriptエンジン「MINIScript」を使ってみよう!Cで書かれたスレッドクラスの使い方やスタッククラスの派生方法を徹底詳説!

 

 

 

 

 

 

 

.

 

宇宙へ飛び立つ”カニ”の競技「越前がにロボコン」参加者募集開始!君のロボットは無事に帰還できるか!?

宇宙へ飛び立つ”カニ”の競技「越前がにロボコン」参加者募集開始!君のロボットは無事に帰還できるか!?

第2回 越前がにロボコンルールが公開され、参加募集がはじまりました!

banner.png

事前講習会も各教室にて開催!

Screen Shot 2018-08-27 at 6.56.43.png

 

「歩行タイプは1.5倍」という昨年のルールは「歩行タイプはゴール時に+2点」に改定されました。

激闘の蟹ロボコン、事前講習会で作ってもよし、オリジナルの蟹ロボットで挑戦してもよし、大会は 2018.11.25、福井市ショッピングシティ ベル にて!

 

 

 

 

 

.

 

ラズパイで学ぶコンピュータサイエンス。CrowPiは全部入り!

ラズパイで学ぶコンピュータサイエンス。CrowPiは全部入り!

IMG_1722

Elecrowから KICKSTARTER に上がっていた CrowPi が到着。

IMG_1723.jpg

紫色にしてみました。

IMG_1724.jpg

センサー類がたっぷり入って、ずっしり。

IMG_1725.jpg

入手したのはラズパイ付きのもの。SDの差し替えにはネジを4つ外す必要があり、IchigoJam RPi を試そうかと思いましたが一旦は付属のSDで。

IMG_1727.jpg

キーボードとマウスも付いているやつで、無線です。色かわいい。

IMG_1728.jpg

起動するとOSはRaspbianのよう。

IMG_1729.jpg

なんと画面はタッチパネル!

IMG_1730.jpg

付属のゲームコントローラー2つ、だいぶ似てますね。

IMG_1733.jpg

他にもガジェットたくさん!

IMG_1735.jpg

用意されている開発環境はPythonとのこと。入っていたサンプルを実行するとMatrixLEDにメッセージが!

IMG_1737.jpg

液晶にも表示できました。

IMG_1738.jpg

サーボもステッピングモーターも動きます。

IMG_1740.jpgIMG_1739.jpg

RFIDも装備されています、たっぷり。

IMG_1734.jpg

たっぷりでずっしりコンパクト。

IMG_1741.jpg

もちろんマイクラも入ってます。

 

CrowPi、内容的にはコンピュータサイエンスを学びたい高校生ぐらい向けでしょうか。次回はIchigoJam RPiで起動してみましょう。

 

 

 

 

 

 

 

.

 

自動運転プログラムを持ち帰り、夏の思い出と共に。全国から100人1泊2日プログラミング・フェス!

自動運転プログラムを持ち帰り、夏の思い出と共に。全国から100人1泊2日プログラミング・フェス!

IMG_1594

やってきました、福井県鯖江市「うるしの里 会館」。

IMG_1595.JPG

みんな大好き「うるし」の品々が展示・販売されている会館で、3回目となる「小中学生 プログラミング・フェス」です。

IMG_1597.JPG

今回はこちら、「Mottoy改」を1泊2日で自動運転します。

IMG_4060.JPG

ぞくぞくとやってくるこども達。

IMG_3978.JPGIMG_4095.JPGIMG_1621.jpg

県内外から100名!

IMG_4092.JPG

まずは自分だけのパソコン「IchigoJam」の小さい版が配られ、名前書きから。

IMG_1615.jpg

この IchigoDake を2日間持ってプログラミングを体験、そして持ち帰り。

IMG_1624.jpg

共催いただいた鯖江市より牧野市長が来て下さいました。

IMG_1632.jpg

かねてより準備していた「MeganeJam」をプレゼント!想像通り、似合う!

IMG_4163.JPGIMG_4071.JPG

プログラミング・フェス皆勤賞のロボホンも今回はうるし塗りの小物入れに乗ってます!

IMG_1640.jpg

1日目は入門コースと経験者コースに分かれて。入門は講師 福野くん

IMG_4212.JPG

まずは配線から。現代っ子には配線さえも貴重な経験。

IMG_4254.JPGIMG_4246.JPGIMG_4252.JPGIMG_4282.JPGIMG_4285.JPG

2日目にそなえてプログラミングの基本をマスター。おなじみ「かわくだりゲーム」でスマイルたくさんいただきました!

IMG_4280.JPG

こちらは経験者コース、講師は僕が担当。

IMG_4219.JPGIMG_4270.JPGIMG_4265.JPGIMG_1647.jpgIMG_1659.jpg

2日目の Mottoy改 に備えてカムロボでたっぷり練習してもらいました。カムロボとMottoy改は全く同じコントロールインタフェースです。

IMG_1675.jpg

2時間たっぷりプログラミングしたあとはなんとBBQ!100人バーペキューの迫力、半端ない!!

 

IMG_4306.JPG

夜はハシャギ過ぎ、朝早くからのハイキングを経て再びプログラミング。いよいよ自動運転車 Mottoy改 に挑戦です。

IMG_1703.jpg

まずはカムロボの動かし方をレクチャー。初日の入門を経てキーボード操作もバッチリ。

IMG_4333.JPG

カムロボでOKが出たら自分も乗り込んで自動運転にチャレンジ!

IMG_4375.JPG

壁に向かって進みます。

IMG_4389.JPG

急ブレーキ!

IMG_4418.JPG

ストップ!

IMG_4373.JPGIMG_1698.jpgIMG_1700.jpgIMG_1701.jpgIMG_4381.JPG

ちゃんと止まる子、壁に衝突する子、曲がって何処かへ行っちゃう子。

IMG_4413.JPGIMG_4454.JPGIMG_4460.JPG

2日目もスマイルたくさんGETできました!


(video by taisukef)

IMG_4313.JPG

会場で見られた学び合い。わからなくて困っている子に教えている姿が各所で見られました。

IMG_4487.JPG

ロボットについている両目をうまく使って前にあるものを追いかけるプログラムに到達した子、最後にステージで発表してもらいました。

IMG_1663.jpg

今回使ったのは、一人一台のパソコン「IchigoDake」。夏の思い出に持ち帰り、自作のゲーム&自動運転プログラムと共に!

IMG_3965.JPG

キーボードとTVがセットになった「スクールセット」。モバイルバッテリーを使うことで会場のコンセントいらず、来年は野外でもやれちゃう!?

IMG_1707.jpg

バッテリーがもつか心配された Mottoy改、5台とも最後までしっかりこども達を乗せて走ってくれました。おつかれさま!

Screen Shot 2018-08-08 at 11.11.53.pngScreen Shot 2018-08-08 at 13.00.25.png

10 OUT33
20 IF ANA(2)<600 GOTO20 
30 OUT0

ロボットの動かし方と自動運転車プログラムはこちら。

item_body.png

ぜひ皆さんもロボットに挑戦してみてね、赤外線距離センサーはこちらを2個です!

IMG_4492.JPG

「自動運転車をプログラミングして乗った」夏の思い出、いつまでも!主催の福井新聞社さま、協賛いただいた福井コンピュータさま、お手伝いいただいたPCN三重 岡村さん、PCN金沢 久保田さん、皆さんありがとうございました!


 

mainvisual.png

ロボットをコントロールできるようになったら今年も開催「越前がにロボコン」に!また、「福井県こどもプログラミング協議会」ではロボコンクラブの創設を応援中、ぜひ連絡を!

mainvisual-1.png

楽しい作品ができた子は「PCNこどもプロコン」に!

 

待ってます!

 

 

 

 

 

.

PCN公式チャンネル「イマギッシュ」、ゲームをチート改造する!?

PCN公式チャンネル「イマギッシュ」、ゲームをチート改造する!?

Screen Shot 2018-08-02 at 13.27.08

日々楽しいプログラムが増えていく Kidspod;、実はIchigoJamではみんなが作ったゲームをダウンロードして楽しむことができます。

PCN公式チャンネル「イマギッシュ」も今回はダウンロードしてゲームを遊びます。

IchigoJamのいいところは、ゲームを改造できちゃうところ。存分に遊んだら自分だけのチートゲームに改造しちゃおう!

たくさんのプログラムを楽しんでみてね。

 

 

 

 

 

.