去年に続き、夏休みの福井県立高志中サイエンス部訪問。 新1年生にプログラミングの楽しさを!上級者にはもっと楽しい創造のヒントを!の2本立て。

高志中サイエンス部のみんな!

はんだづけからはじめるプログラミング入門。その間に、上級者向けレクチャー、世の中には無料で使える楽しいおもちゃがたくさん!オープンソース、オープンデータ、IoT、思う存分遊びましょう!


はんだづけできたら、LED1、やった光った!(LEDを最初反対に付けてしまったのを手術し修正後)


ビーズでかわいくオリジナルIchigoDake!(ビーズで飾る電子工作


早速、IchigoJamでゲームづくり!
IchigoJamプリントや、IchigoJam教材スライドもオープンデータとして公開しています。
教材づくりへのチャレンジもぜひ → 33ステップで解説、GitHubオープンソース貢献入門 IchigoJamプリントをつくってみよう


IchigoJamで、ペアプログラミング!楽しさ2倍!?


経験者チームは、持っていったいろんなおもちゃで思い思いに遊ぶ。


オシャレな画面と共に、ランダムに奏でるIchigoJamプログラム!


VIDEOのパラメータをRNDにするのが斬新!


PCN上田発、ハンドスピナー型IchigoJamをPC冷却ファンをMapleSyrupで制御して、回してた!


JavaScriptで改造したカオスなブロック崩しゲームを見せてくれました。
物理エンジン使うと、また楽しいものがつくれるよ!


缶サット、昨年度の取り組み「模擬人工衛星の挙動制御と構造的工夫」を紹介してくれました。 今年は地面のマーカーにめがけて着地制御にチャレンジしたいとのことで、使用するセンサーの相談。 今オススメは、RISC-V 64bit x 2coreのカメラ付きモジュール、M1n

USB-Cでパソコンと接続し、rshellをセットアップ(初回だけ)

sudo pip3 install rshell

rshellコマンドで接続(usbeserialのあとの番号は自身の環境に合わせる)

rshell -p /rshell -p /dev/tty.usbserial-xxxxxxxxx0 edit /pyboard/flash/boot.py

viが起動するので、microPythonでプログラムを貼り付ける

import sensor import math sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) sensor.run(1) green_threshold = (50, 80, -70, -10, -0, 30) #red_threshold = (40, 80, 30, 70, 0, 40) fm.register(20, fm.fpioa.UART2_TX) fm.register(15, fm.fpioa.UART2_RX) uart = machine.UART(machine.UART.UART2, 115200) print(0) while 1: img = sensor.snapshot() #blobs = img.find_blobs([red_threshold]) blobs = img.find_blobs([green_threshold]) if blobs: for b in blobs: print(b.cx(), b.cy()) #n = ((b.cx() // 2) << 8) + (b.cy() // 2) x = b.cx() / 320 * 100 y = (b.cy() + (320 - 240) / 2) / 320 * 100 n = math.floor(x) * 100 + math.floor(y) uart.write(str(n) + "\n") break time.sleep(.1)

「:wq」エンターと押して保存。これで書き込み完了!

M1nの20ピンをIchigoJamのRXDへ、M1nのGNDをIchigoJamのGNDへ、接続。

秋月電子の3Vで動くサーボと、AIカメラモジュールを組み合わせます。


IchigoJamでのプログラムはこれだけ!
シリアル信号で受信したXY座標をまとめた4桁の数が送られてくるので、100で割ったX座標のみを使って、サーボを動かす!


サーボに貼り付けたAmabieDakeが緑色を見せる場所に合わせて傾きます。
缶サット、空中での移動はどう実現するか?いろいろ試してみるのがおもしろそうですね。
マーカーの認識は、green_threshold のパラメータで微調整します。
IchigoJamのPC接続のように、M1nにシリアルで接続し、Ctrl-C で、動作を停止、プロンプトがでてくるので、下記コマンドで自動起動するプログラムを一旦消して、再度書き込みましょう。

os.remove('boot.py')

IchigoJamでのソフトウェア、制御するハードウェア、M1nのmicroPython、いろいろ分担して取り組んでみよう!


IchigoJamでコントロールするドローン、TELLOを使った実験中とのこと!


今回、声をかけてくれた前田くん、高志中サイエンス部のWebサイトがいい感じ!

IchigoJam 1.4のWS.LED命令についてかいてくれてます!)
ぜひいろいろ作って、オンライン、オフライン問わず、バンバン発表して、見てもらう人増やしましょう!(NT鯖江もよろしく)

夜道の犬の散歩、黒いワンちゃんだと見えづらくて危ない・・・。
そこで、イヌテック、光る首輪「Lightning Choker」のご紹介です!

作り方は簡単、100均でも入手可能な首輪と、光るXのつくりかた同様、LPC810と3.3V昇圧モジュール、WS8211をいくつか準備して、組み立てるだけ。

単4電池1本、WS2811 x 4 で光らせることにしました。


LPC810はIchigoJamで書き込み&実験。WS2811はブレッドボードで手軽に実験できて便利です。WS2812と赤と緑の順番が逆な点だけ注意。


部品は布に刺して曲げて、裏面ではんだづけ。


まさに、デジタル手芸!


光るネクタイ同様、色相環沿いにじわっと色が変わり続けます。もちろん、プログラムを変更すれば光らせ方自在!

こどももおとなも、自由な発想でいろいろつくって、値段を付けて、売ってみる!
事業創造、はじめのいっぽです。
鯖江発のHana道場、本格横展開第一弾、会津に開設決定!

Hana道場がいよいよ本格横展開し会津に開設されます! 会津版を運営するNPOの方々が鯖江に来られて Hana道場を視察。IchigoJam プログラミングの様子や、Hana道場の取り組みなどを見て知っていただきました。 そして、鯖江のあちこちもご案内し、ものづくりも堪能いただきました。 会津版Hana道場の名前はオープンしたら公開します。

Hana道場さんの投稿 2020年7月25日土曜日

すべてのこどもたちにプログラミングを!

IchigoJamに高性能な目を付けてみましょう。
目とは、光の三原色の強さを二次元配列上に受け取り、左右の差で立体的に知覚する器官。
カメラはそれをデジタルで実現したデバイスです。

毎秒何十枚もの画像を処理するのはIchigoJamのCPUでは荷が重いので、画像処理付きのデバイスを使います。 秋月電子で見つけた「Sipeed M1n Module AI Development Kit based on K210(RISC-V)」を使って、赤が右にあるか左にあるかをデジタル入力で受け取れるセンサーを作ってみました。


センサー実験と、IchigoJamにつないで動かしている様子。


64bit RISC-V 400MHz x 2core + AIエンジン + カメラ で、1,450円、すごい時代です。


LEDを光らせてみましょう。
IchigoJamよりちょっとだけむずかしいです。
WindowsやMacが使いこなせるようになったら、ぜひチャレンジしてみましょう!
USB-Cで接続し、CoolTerm(for macOS)などで接続して、microPythonでプログラミングします。

fm.register(20, fm.fpioa.GPIO1) led = GPIO(GPIO.GPIO1, GPIO.OUT) led.value(1)

お行儀が悪いですが、20ピンとGNDにLEDを直結して実験してみましょう。 コンピューターK210は、ピン毎に自由に機能を割り当てできます。fm.registerで表にでているGNDの隣の20ピンにGPIO1を割り当て、GPIO1をOUTに設定。 valueで1に設定すると、光ります!

while 1: led.value(1) time.sleep(0.5) led.value(0) time.sleep(0.5)

設定後、こんなプログラムで0.5秒ごとにエルチカできます。(ちなみにIchigoJamではこんな感じ)

1 LED1:WAIT30:LED0:WAIT30:CONT

コンパイル不要で、IchigoJamっぽい感覚で使えます。

rshellを使うと、シェルから接続できて、IchigoLatte感覚でファイルの作成もできて便利です。 editコマンドでviが使える!


カメラモジュールを接続してみましょう。この向きです。ちょっと固いですが、ケーブルを壊さないように慎重に!

sensorがカメラです。設定してcaptureするだけで画像が取得できて、いろいろ使えます。 サンプルを少し改造して、赤を見つけた左右位置によって、20ピンと隣の15ピンで出力して実験です。

import sensor sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) sensor.run(1) red_threshold = (40, 80, 30, 70, 0, 40) fm.register(16, fm.fpioa.GPIO0) btn = GPIO(GPIO.GPIO0, GPIO.IN) fm.register(20, fm.fpioa.GPIO1) left = GPIO(GPIO.GPIO1, GPIO.OUT) fm.register(15, fm.fpioa.GPIO2) right = GPIO(GPIO.GPIO2, GPIO.OUT) while btn.value(): img = sensor.snapshot() blobs = img.find_blobs([red_threshold]) if blobs: for b in blobs: print(b.cx()) if b.cx() > 320 / 2: left.value(1) right.value(0) else: left.value(0) right.value(1) break else: left.value(0) right.value(0)

本体に付属のボタン2つ、1つはリセット、1つは書き込みモードになるボタンですが、起動中はフリーに使えます。 16ピンをGPIO0、GPIO.INに割り当て、センサープログラムを中断するボタンとしました。


うまくいきました!boot.py として、プログラムを保存すれば、起動時に勝手に動き出します。IchigoJamのFILE0保存+ボタン押しながら起動または@ARUN相当ですね。


あとはIchigoJamにつなぐだけ、GND同士をつなぎ、20ピンと15ピンをIchigoJamのIN1とIN2に接続して、IchigoJamでテストプログラムを書いて確認しましょう。

1 ?BIN$(IN(),2):WAIT3:CONT

USB-Cから電源をとるか、VCCに3.3V、300mA以上の電源を接続すれば、単体で動作します!
コンピューターの目を使った高度なロボット操作にも気軽にチャレンジできそうです。

越前がにロボコン」では、「こどもプログラミング実業団」企画に賛同いただける企業の方、大募集中です!
AI/IoT、こどもたちと一緒に楽しく習得する企業型地域ICTクラブ、はじめませんか?

TEAM IchigoJamほっかいどうより、お届けもの!プログラミングの楽しさをモノづくりをとおして伝える、新JAMCARのβ版が到着!

たくさんのわくわくする部品!


レーザーカッターで切り出したシャーシは、水に浸けておきましょう。5分もすれば、するっとむけます。


金属のモーターの外枠に接してしまわないよう絶縁用のテープを貼り、モーターにはノイズ対策コンデンサと合わせてはんだづけ。


モーターモジュールの組み立てます。


モータードライバの基板はモーター間の隙間、3Dプリンターで作った筐体内にくるっと格納!


タイヤを付けます。ビー玉を光造形3Dプリンターで作ったと思われる、3輪目モジュールがすごい。


単4電池x2の電池ケースを格納する場所。


シャーシを組み立てていきます。


プッシュリベットが便利!


IchigoDakeを乗っける場所ができました。


ロボットの目となる超音波センサーと、ロボットの口(?)として表情伝える8連LED。


目と口が付いてかわいい!(すみません、8連フルカラーLEDの取り付け向きが上下逆でした!)


バンパー基板は製作中とのことで、ユニバーサル基板とスイッチはんだ済みのバンパー用の部品。


バンパーモジュールの裏面。抵抗はしでのはんだづけも楽しい!


バンパーモジュールの表面。


ロボット筐体ができました!


続いて、IchigoDake(またはIchigoJam)に接続するベース基板の部品群。


楽しいはんだづけ、25分ほどで完成!よく使う電源ピン(VCC/GND)が増設されてます。
左のスイッチは電池を電源として使う用。ロボットとして動かしている時は停止に使えます。
右のスイッチはモーター用。テスト中はモーターの動きを4つのLEDで確認し、実際には走らせなくてもテストできて便利!

あとは、説明書どおりに配線したらできあがり!


IchigoDakeにIchigoIgaiを挿してプログラミング!
先頭行に @ARUN をいれておくと、自動起動します!(ver 1.4)

1 @ARUN 10 OUT10 20 GSB@GETDIS 30 IF A>1 GOTO 10 40 OUT0:WAIT30 50 OUT12+6*RND(2) 60 GOTO10 300 @GETDIS 310 A=0:OUT6,1:OUT6,0 320 IF IN(1) A=A+1:CONT 330 ?A 340 FORI=0TO7:LET[I*3],(I<A)*10,10,0:NEXT:WS.LED8 350 RTN

OUT10で前進。センサーが反応したら、OUT12かOUT18、ランダムに右左行って、繰り返し。
300行からの@GETDISで、超音波センサーから距離を取得しつつ、LEDの色で反応した距離を表示するBASICプログラムです。 マシン語化したり、VIDEO0で高速化すると、もっと細かく取得できます。
こんな感じに動きます!


口のように見える?光でプログラミング表情、おもしろい!


右前と左後ろのモーター作動を知らせるLED。


拡張モジュール、2方向、光センサー基板!


いろんな制御で遊べそうです!


IchigoIgaiの代わりに、IchigoDyhookの下にIchigoDyhookの箱などで少し高くして、新JAMCARを直接接続もいい感じ!

正式版、公開、楽しみですね!
TEAM IchigoJamほっかいどう 2019 – nextday programming kids

links
- IchigoJam – nextday programming kids

はんだづけするリアルイベントがしづらい状況が続くコロナ禍、私立大学、京都芸術大学情報デザイン学科クロステックデザインコースにて、オンラインはんだづけ演習! 結論、楽しく、みんな完成!なんとかなりました!(ほとんどの学生が中学校ではんだづけ経験あり!)


やったこと
- IchigoDake はんだづけ(ピンソケット付き)
- わくわく電子工作セットと、IchigoDyhook を使ったフィジカルプログラミング
- 自由製作&発表

トラブル
- 抵抗の未はんだの穴がはんだで埋まってしまった → 短く切って上からはんだづけを → 解決
- LEDがつかない → 裏見せてもらうと切れ端がショートしてる → ニッパーで短く切って → 解決
- 画面がつかない → 表見せてもらうと1MΩと100Ωが逆 → 自分ではんだ吸い取り線を持っていた → 解決
- ピンソケット用のはんだの穴が埋まってしまい、ピンソケットにもはんだが少し乗っている → ニッパーではんだのってる部分を切って、裏からはんだ → 解決
- 髪が少しこげた(気をつけよう)

自分で作ったパソコンが、コマンドに応えてくれて「うれしい」「かわいい」の声!


1時間の自由製作、ネットで各自いろいろと調べて、まずは入力して、動かしたり、改造したり、プログラミングのおもしろさ、伝わったかな!?

各地で振る雨。雨プログラムをサンプルとしてライブコーディング(RUN on IchigoJam web

10 CLS 20 LC RND(32),0:?"|" 30 SCROLL DOWN 40 GOTO 20


雨が気に入ったと、改造してくれた!


できあがったら、IchigoDyhookで動作確認。LEDが付けばひとまずOK!
ボタンが効くかどうかは、次のプログラムを実行して、カチカチやってみよう。

1 ?BTN();:CONT RUN

IchigoDake Basic プリント基板ハーフキットのはんだづけ解説


IchigoDake、組み立てキットです。CPUははんだづけ済みのハーフキット。


IchigoDake組み立てキットに入っている部品。


まずは注意と取説を読みましょう。


IchigoDakeは、基板とピンソケットを含めて部品点数12点。手軽にはんだづけ体験ができます。


低い部品から順にはんだづけするのが基本。まずはこのカラフルなコンデンサから! 紙の部分をニッパーで切ります。


指でコの字に曲げます。


コンデンサを差し込むのはC1、この場所!


裏返します。位置は間違ってませんか?


いよいよ、はんだづけ!たまにはんだが弾くことがあるので、あまり顔を近づけないように。メガネをすると安心です。


動画で感覚を掴むと楽です。
コテであたため、はんだとかして、はんだはなして、コテ離す。


横からみて、富士山型になっていたら完璧!凹んでいたらもう少し足そう。膨らんでいたら、ひとまずそのままでも動作に支障はないのでOK、次はもう少し少なめにしよう。


超大事なこと、ニッパーで切る時は切れ端が飛んでいかないように上から指で押さえましょう! 切れ端が飛んで目に入ると、きっと痛い。(撮影のため右手の指ですが、左手の指で押さえるのがオススメです)


仕上がりはこんな感じ!(写真、ちょっとはんだが多めでした)


次は、抵抗。こちらも指でコの字型に曲げ、指定の場所に挿し込みます。


4つの抵抗、R1〜R4、全部色が違います。間違うと画面が表示されなかったり、LEDが暗かったり、ちょっと残念なことになります。


はんだづけしやすい向きに変えながら、はんだづけしていきましょう。やりにくければ抜いて、1つずつやってももちろんOK!


次は、12MHzのクリスタル。1秒間に1200万回振られるタクトです。設定でその4倍速で動かしているので、秒間4800万回。 定格は10MHzx5などで5000万回まで対応です。(超えてクロックアップしても動いたりします)


次に低い部品、ピンソケットは2つ同時に挿し込み、裏返してはんだづけ。


14x2、隣同士くっつかないように注意。


唯一向きが大事な部品、LED。長い方の足を右側にします。


スイッチはこの向き、押し込んではんだづけ。


最後にピンソケットシールを作ります。


ピンソケット用にはさみで切って使います。


貼れました!


完成!紐を通してペンダントにしても良し!

プログラミングを楽しもう!

links
- IchigoJam プリント
- IchigoJam BASIC 1.4 コマンド一覧

コンピューターへのコミュニケーションに欠かせないキーボード。 打ち心地や、キー配列など、毎日使うものだから、こだわりたい。 社内のキーボード自作ブームに乗って、まずは有名な赤軸青軸、それぞれ1キーずつ買って、レンダ性能を確認してみます。


さて、最速はどの軸か!? (軸仕入れ元「遊舎工房」、「軸の本」なるものも!)


裏面には端子がふたつ。そう、回路的にはただのスイッチです。なので、キーとキーキャップの1組から、IchigoJamなどに気軽につなげて遊べます。


モデルづくりはBlender。14mm x 14mm の穴を空けておけば、いい感じです。3つ入るキーも設計中。配線用の穴も空けておきましょう。


テスト用1キーバージョン。薄くつくりすぎて、若干びよびよと出ていますが、隠れるので問題なし。(配線穴ないので自分で開けてね版、3Dプリンター用 stlファイル


ちょうどいい小さな基板があったので、1枚使用。


10kΩでプルアップ(信号線を大きめの抵抗を経由して電源にもつないでおくこと)
IN2は、アナログにも使用するためプルアップなし。
IN3は、I2C用端子との共有な関係で外部プルアップが必要です。
IN1、IN4は、コンピューター内部でプルアップ設定してあるので、直接接続でOKです。


裏面、抵抗の切れ端を使って配線。


ひとまず1つ挿してみた。かわいい。


IN2とIN3をプルアップする入力デバイスのできあがり!


赤軸を装着。


裏面。


1行プログラムで動作確認。軽快です!

1 ?IN(1);:CONT

こちら、100レンダする時間を表示する IchigoJam BASIC のプログラム。フレームで待っているわけではないので、PCで計測するより正確です。

100 VIDEO5 110 FOR I=3 TO 1 STEP -1 120 CLS:?I:WAIT30 130 NEXT 140 CLS:?"GO!":CLT 150 FOR I=100 TO 1 STEP -1 160 ?I 170 IF IN(1) CONT 180 IF !IN(1) CONT 190 NEXT 200 T=TICK() 210 ?T/60;".";T%60/6;"ビョウ"


ギリギリ10秒を切れた。レンダ、意外と大変です。仮に16連射すると、タイムは6.2秒。名人、すごい!

オリジナルのゲームコントローラーなど、制御パネルづくりにも良いですね!
コンピューターと人との接点、ぴったりな軸、探してみましょう。

links
- 遊舎工房 | 自作キーボード&レーザーカット&UVプリント(はんだづけコーナー、あり)
- 軸の本 Mechanical Switch Data Book EARLY ACCESS - Romly Shop - BOOTH
- 軸の本2 Mechanical Switch Data Book 2 - Romly Shop - BOOTH
- メカニカルキーボードの「軸」ってどれがいいの?【違いを解説】 | けしろぐ

IchigoJamは24KBのOS、ソフトウェアとしての提供。いろんな方がいろんなIchigoJamを作っています。(IchigoJam公式サイトでオープンデータ提供開始!

PCN三重から限定発売されたIchigoJam互換機、KeyIchigoを入手したので、さっそくはんだづけして、起動、LED1!

下記、組み立てレポートです。

KeyIchigo パーツセット!


はんだづけ開始!どうするとミスなくできるか?楽か?速いか?手探りでのスタートが楽しい。
指で押さえつつ、右上1ピンを軽くはんだづけ、そのあと右下をはんだづけして、右上を再度はんだづけ、1列終わったら反対側をまとめてはんだづけして、1列完成!


後半は慣れてサクサク進みます。ひとりタイムアタックするとより楽しい。焦ってミスするとタイムロス! 65コも!?と思うかもしれませんが、65面あるゲームと同じです。しかも、ルールは自分で自由に決められます。


ボタンを指の腹で押す時に痛い、尖ってしまったはんをハンダ吸い取り線で吸い取って、仕上げ。 何を持って完成とするかは自分次第。とことん完成度にこだわるもよし、ひとまず動けばよしとするもよし。


残りのパーツもはんだづけ!


低い部品からぎ基本、ひとまず抵抗のはんだづけ


小型液晶は低いピンソケットとピンヘッダーで接続!


起動しました!
SWITCHコマンドの切り替えなしに、小型液晶に表示される!
謎の答えはキーボード制御用に使っているコンピューターのプログラムにありました。
まあくの工作の部屋: Key-Ichigo


電源に縦一列単4電池ボックスを使用。1.9V〜5VのDCDCコンバーターが入っているとのことなので、単5電池x2本を表に置くとか、CR2032でちょっと動くようにするとか、ソーラーパネルをつけて青空(時のみ)プログラミングとかの改造も良さそうです。

長ピンソケットをつけて下にIchigoJamを合体させようかとも思うので、ピンソケットやビデオ端子は未実装。 自分の使いたいようにいじれるのが、キットのいいところですね!

ハードもソフトも、自分で作ってみるのがおすすめです!

ハード初心者にオススメ、IchigoJam!
IchigoJam はんだづけ、はじめのいっぽ - まちをよくするプログランミング in 品川区 Day2!

先日収録した「ラジオ日本「bravesoft presents 目指せ!ハッカーRADIO」放映日時:2020年5月19日(火)25:00〜」の前半が公開!

COVID-19 JAPAN 新型コロナウイルス対策ダッシュボード」の話。患者数0県が増加中。緊急事態宣言終了後の活動後の動向に注目です。

links
- まあくの工作の部屋: Key-Ichigo
- まあくの工作の部屋: Key Ichigo 2

以前紹介した、5コ950円で買える、安価でIchigoJam BASICだけでも使える超音波センサー「HC-SR04」。 他デバイスとの関係で、どうしてもBTNを使いたいとご要望あり。


できました!IchigoSodaにつないでIoT化していますが、IchigoJam、IchigoDakeでもOKです!

BTNはIchigoJam付属のボタンとSLEEPからの復帰のため外部でプルアップ抵抗をつなげていて、ANA(0)としてアナログ入力としても使えます。 つまり、CPU内部の設定としてはアナログになっているので前回紹介したマシン語で読み出そうとしてもうまくいきません。


BTNを割り当てているPIO1_4、LPC1114のデータシートの IOCON_PIO1_4 (アドレス#40044094) を見ると設定方法が書いてあります。 一度、マシン語を使ってどういう設定になっているか読み出してみましょう。

R0=[@IOCON_PIO1_4]L R0=[R0]L RET @IOCON_PIO1_4 DATA L #40044094

asm15でアセンブルして、読みだした値を8桁の2進法で表示

POKE#700,1,72,0,104,112,71,0,0,148,64,4,64 OK ?BIN$(USR(#700,0),8) 01000001

2:0 つまり最下位の0bit目から2bit目の3bitを使ったFUNCは1、次の2bitのMODEは0(プルアップなどなし)、次の1bitのHYSは0(無効)、6bit目はReservedとして予約されていて1を設定することになっていて、7bit目ADMODEが0でアナログ入力モードとなっています。

これをADMODE:デジタル入力+FUNC:PIO1_4と、`11000000 に一時的に変更する作戦でいきます。前回のカウントプログラムの前後にこの設定を足します。

PIO1のベースアドレスは #50010000、BTNは、PIO1_4の場所なので
?"#5001";HEX$(1<<(4+2),4) → #50010040 を@INに設定します。

'BTN(PIO1_4) <- digital R1=`11000000 R3=[@IOCON_PIO1_4]L [R3]L=R1 'count check R0=0 R1=[@IN]L @LOOP R2=[R1]L R0=R0+1 R2-0 IF !0 GOTO @LOOP R0=R0>>9 'BTN(PIO1_4) <- analog R1=`01000001 [R3]L=R1 RET @IOCON_PIO1_4 DATA L #40044094 @IN DATA L #50010040 'BTN=PIO1_4

アセンブルして、BASICのプログラムと組み合わせて、できあがり!

10 POKE#700,192,33,6,75,25,96,0,32,5,73,10,104,64,28,0,42,251,209,64,10,65,33,25,96,112,71,0,0,148,64,4,64,64,0,1,80 20 OUT1,1:OUT1,0:?USR(#700,0) 30 WAIT 5:GOTO 20

マシン語でカウントした値、R0をBASICに返す前に9ビット右シフト、つまり512分の1にしています。マシン語のカウントだと速すぎて大きな値になってしまうからですが、ここをいじると精度アップが見込めます。 ただ、IchigoJamでは1秒間に1.5万回くらい画面表示用の割り込みが発生するので、高い精度で計測するには割り込みを一時的に止める必要があります。

CPSID R0=0 R1=[@IN]L @LOOP R2=[R1]L R0=R0+1 R2-0 IF !0 GOTO @LOOP R0=R0>>5 CPSIE RET @IN DATA L #50001000 'IN1=PIO0_10

割り込みの一時停止は CPSID、最下位は CPSIE です。戻し忘れると何も操作できなくなってしまいます。下記、CPSIDした後リターンする危険なプログラム、SAVEした後、お試しください。

LET[0],#B672,#4770:?USR(#800,0)

完成した、超音波センサー、TrigをIN1に接続し、精度16倍バージョンがこちら!

10 POKE#700,114,182,0,32,3,73,10,104,64,28,0,42,251,209,64,9,98,182,112,71,0,16,0,80 20 OUT1,1:OUT1,0:A=USR(#700,0):?A 25 LED A<300 30 WAIT 5:GOTO 20

一定距離から近づくとLEDがついてお知らせ、リレー経由でスゴイ照明と組み合わせると防犯ライトにもなりますね!

5 B=0 26 IF B=0 AND A<300 B=1:N=N+1:IOT.OUT N:?"IOT!";N:WAIT30 27 IF B=1 AND A>=300 B=0

IchigoSodaを使って通ったらIOT.OUTでカウントを送るように改造も簡単です!
福井県で始まった「混雑状況オープンデータ」との連携も便利そう。


Let's IoT with IchigoJam x various sensors!

links
- 200円 超音波距離センサー HC-SR04 を IchigoJam で使う方法 - Armマシン語で時間を測ろう
- 今週末は越前がにロボコン! IchigoJamで超音波センサーをIN1とは違うポートで使う方法 BASIC編 マシン語編

はんだごても握りたい。ちょっと電子工作、ILI9341編。

IchigoJam基板に収まる2.2インチILI9341コントローラー付き液晶を載せてみました。


IchigoJamにつなぐピンヘッダーと液晶用ピンソケットをはんだづけ。
ピンヘッダーは使うピンを中心にまばらにしておくと、抜き差ししやすく、ピンヘッダーも節約できる。


回路図書いて発注すればきれいですが、この程度ならその場でジャンパー線で!
簡単に試行錯誤できるのが利点です。CSとGNDは隣なので、はんだづけでOK!7本配線して完成。 (対応ファームとつなぎかた


選べる4サイズ、3.2/2.8/2.4/2.2inch(この3.2インチは設定とピン配置変更必要です。


厚みをとるか?拡張性をとるか?
今回は拡張性を重視しピンソケットで実装。ちょくせつはんだづけしてしまえば、もっと薄くもできますね。


タッチパネル用のピンがあっても使わないので大丈夫。


2.2インチを載せ、キーボードをつないだ図。プログラム終われば、キーボードは抜いて動かせばOK!


目指せ!ハッカーRADIO|bravesoft ブレイブソフト
ブレイブソフト菅澤さんの番組、電子工作へと導いてくれた、ユカイ工学青木さんからの紹介での出演となりました。
konashiで、こどもパソコンIchigoJamをネットにつなぐ」(この時の技、活きてます)

エンジニアのためのラジオ番組にオンライン出演。初心者エンジニアへのアドバイスとは!?
配信、放送をお楽しみに!(→ 2020-05-26 前半公開

Web標準、W3C BROWSERS AND ROBOTICS コミュニティグループで議論され、仕様策定中のWebGPIOを使って、PCに接続したIchigoJamをコントロールしてみました。 まずは、JavaScriptで、エルチカ!(USBシリアル付き、IchigoKamuy with IchigoJam BASIC)

実装は、こちら (src on GitHub)

import navigator from './WebGPIO.mjs' const sleep = async msec => new Promise(resolve => setTimeout(resolve, msec)) const main = async () => { const gpio = await navigator.requestGPIOAccess() const port = gpio.ports.get('LED') await port.export('out') // export (activate) the port. for (;;) { port.write(1) await sleep(500) port.write(0) await sleep(500) } } main()

GitHubからソースをcloneするか、ダウンロードして

npm i

で、シリアル通信に必要なパッケージをセットアップ。USBシリアルポートを設定する '.env' ファイルを作成。

SERIAL_DRIVER=/dev/tty.SLAB_USBtoUART

あとは動かすだけ!

node led4.mjs

エルチカ部分、sleepメソッドやasync/awaitを使わず、このようにも記述可能です。

let v = 1 setInterval(function () { port.write(v) v = 1 - v }, 500)

まだ出力のみです。入力と、onchangeを使った入力監視を実装すれば、現時点でのWebGPIOとしては完了。

WebGPIOとして拡張したい3点
- アナログ出力(PWM) - サーボの制御、LEDの明るさ制御、簡易的なサウンド出力に使える
- アナログ入力(ANA) - アナログセンサーで距離や明るさ、温度などを計測できる
- プルアップ・プルダウンの設定 - 3値出力として使うなど

ちなみに、JavaScriptが使えるIchigoJam用OS、IchigoLatteでのエルチカはこちら

while (1) { led(1); sleep(500); led(0); sleep(500); }

何の宣言も必要なく、シリアルで転送したり、直接キーボードをつないで打ち込めばOK!
100円CPUには、Promiseの実装はちょっとヘビーだし過剰なので、WebGPIO light というのもあり?

links
- CHIRIMEN Open Hardware
- JavaScript Robotics Advent Calendar 2016 13日目 WebGPIOのPolyfillを実装してみて
- ハート基板 x IchigoKamuy で感染病床残数IoT by シリアルで制御するIchigoJam、IchigoSerial for Node.js

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / RSS