鯖江から車で40分、お隣石川県加賀市にあるものづくりスポット、KAGAものづくりラボを訪問。 3Dプリンターや、レーザーカッターなど、工作機械達、加賀市民であれば、素材代以外はなんと無料!いろいろ作ってみるにはもってこい!

市民病院を改装した施設内には、10才〜18才向けのコンピュータークラブハウスや、インキュベート施設、市役所の政策戦略部イノベーション推進課も同居。 ものづくり好きをまるっと応援する体制がすごい!


自動刺繍ミシンもありました!


場所は最寄りは大聖寺駅、加賀市役所から少し離れた、かが交流プラザさくら内にあります


kagamap - 石川県加賀市オープンデータオープンデータマップ
加賀市の全体像を把握するべく、加賀市のオープンデータを探すと、緯度経度がついていそうなデータを3つ発見。ひとまずマップにしてみました。 行政だけでなく、民間オープンデータもどんどん混ぜていきたいですね!総湯という文化、気になります。 オープンデータに「総湯の利用情報」も!


森の栖(もりのすみか)、客室夜の風景


朝の風景、自然がいいですね!


2020/10/3-4土日開催、NT鯖江2020、開催決意のきっかけも加賀! 北陸、おもしろくしていきましょう!
シンガポールx日本 STEM教育トーク、創造力を磨く3ステップ、Wowを体験、自分で作って、自分で展示! NT加賀2018にて

IchigoJamで使うキーボードは、PS/2に対応したものが必要です。対応していたはずが、動かない現象が発生。原因が判明したので、その対策を紹介します。

結論、10kΩ前後の抵抗1つ、5VとKBD1またはKBD2に接続することで動きます。


サンワサプライのPS/2対応キーボード「SKB-KG3BKN」と色違い「SKB-KG3WN」は、サイズ感がいい感じ。 販売価格もAmazonで、1,255円と手頃な価格もうれしい。


改めて入手し、確認したところ、キーボードのLEDが全く反応しない状態。 自宅のPCをよく見ると、PS/2端子ありました。


PS/2キーボードとしての動作は確認できたので、通信プロトコルの間違いや、初期化のタイミングなどを探ります。


プログラムをいろいろと変えてみましたがどうやっても動かず、KBD1またはKBD2を5Vと抵抗10kΩを使ってプルアップし、信号の5V化を試したところ動きました! ただ、ソフトウェアだけでは対処できないので、残念ながら現在の基板では対応とは言い難い状態。


抵抗の両端、少し切るとコンパクトに収まります。


5V端子は別で使いたい場合、裏面にはんだづけするといいです。CN5の一番上5VとKBD1かKBD2へ10kΩの抵抗でつなぎます。 (他のピンに当たってしまわないように注意!)


はんだづけ、完了!


IchigoSodaも、10kΩ抵抗1つでこの通り、動きました。
抵抗は、100本で100円、プルアップ抵抗としてもよく使うので、この際100本、いっちゃいましょう!

links
- PS/2キーボードが無くならない3つの訳、IchigoJamの対応キーボード拡大!

オンライン講演や、オンラインミーティングが多いので、自撮りライトを作ってみました。

余っていたリング状のWS2812BのLEDがぴったりでした!IchigoJamで制御、簡単!


WS2812BのIN側にL字ピンヘッダーをはんだづけし、PCの縁に引っかかるようペンチで曲げて、3本の線をはんだづけ。


GND、LED、5Vに接続します(VCCでも動きますが、輝度の上げすぎ注意です)


LET[0],100,100,100:WS.LED 1,12

これで12コぜんぶ白色で点灯します!(IchigoJam 1.4 WS.LEDコマンド使用)


夜間の室内、色温度が合わないときはRGBのバランスを調整しましょう。


ゲーミング仕様も色相環プログラムを使って、簡単実現、自由自在!

作ってみたい人 → "WS2812B リング" on Amazon

色設定可能自撮り照明プログラム (ボタンで輝度調整、キーボード1/2/3でRGBで色温度など調整)

10 S=30:N=S*5:R=100:G=100:B=100 20 GSB200 40 IF BTN()=0 K=INKEY():IF K GSB100:CONT ELSE CONT 50 N=N+S:IF N>255 N=0 60 IF BTN() CONT 70 GOTO 20 100 IF K=ASC("1") R=R-10:IF R<0 R=100 110 IF K=ASC("2") G=G-10:IF G<0 G=100 120 IF K=ASC("3") B=B-10:IF B<0 B=100 125 GSB200 130 RTN 200 LET[0],N*G/100,N*R/100,N*B/100 210 WS.LED1,12 220 RTN 300 CLV:WS.LED1,12

ゲーミングセルフィーライトプログラム (V:最大輝度、L:周期)

10 CLV 20 V=100 30 L=20 40 R=V/L:[1]=V 50 [H/L%3]=ABS(H/L%2*(L-1)-H%L)*R:H=(H+1)%(6*L) 60 WS.LED1,12 70 WAIT3 80 GOTO 50

色相環ぐるぐるライトプラグラム (V:最大輝度、L:周期、N:LED数)

10 CLV 20 V=100 30 L=20 35 N=12 40 R=V/L 50 [H/L%3]=ABS(H/L%2*(L-1)-H%L)*R:H=(H+1)%(6*L) 60 WS.LED12 65 COPY#800+N*2*3-1,#800+(N-1)*2*3-1,-(N-1)*3*2 70 WAIT3 80 GOTO 50

links
- BASICプログラム1行で色相環!20分で作るアキバエモメガネでアガるパーティー

作ってみたIoT学習リモコンを、コンパクトにユニバーサル基板に実装して、実践投入。 アナログ温度センサー、MCP9700Aを使ったTEAM IchigoJamほっかいどう作、温度センサー基板を使って自動制御して、寝てみました。

変数Sでステート管理
S=0の時、27.0℃より下がったら29℃設定にし、S=1に
S=1の時、27.5℃より上がったら28℃設定にし、S=0に
と、プログラムを組んだつもりが、夜中1時半にエアコン作動音が連続する音と共に起こされました。 暗闇の中、寝ぼけながらプログラムを修正、その後は、無事に朝まで温度制御してくれました。 IchigoJam BASICのプログラムのバグ、分かりますか?(ヒント、LRUN)

アナログ温度センサー、MCP9700A、そこそこの精度で判定できていい感じだったので、赤外線送受信基板に追加、実装!

コンパクトに仕上がった、温度計付き赤外線リモコン送受信基板!EEPROMも実装して、プログラムもセットにすると楽かも?

自動制御で、熱中症を避け、快適な夏、創りましょう!

jigインターン、今日のブログは、ぴんぽん!
jig.jpオンラインインターン2020 7日目! - jigintern2020’s diary

ランチ写真をバーチャル背景におしゃべりする、オンラインランチ会!
チーム開発は高速スクラム、第二スプリントが終了し、いよいよ最終スプリントへ!

links
- IchigoJamで作るIoT学習リモコン、古いエアコンもスマホ制御で快適に! インターン生も芸人さんも楽しいプログラミング入門とマシン語
- 熱中症対策アプリ用オープンデータと暑さ指数予測ランキング、トップ840!

家にリモコン、いくつありますか?
IoTセンサーとリモコン制御プログラミングで、手軽に自作のスマートホーム!

寝室のエアコンの自動運転がいまいちで、寒かったり暑かったりして起きてしまう問題。 IchigoJamと赤外線LED、sakura.ioを使って、家のエアコンをスマホ制御できるようにして一歩前進。 IchigoJamのプログラムはとってもシンプル!

10 N=IOT.IN() 20 IF N=0 GOTO 10 30 ?N:F=FILE():R=10:LRUN N,200

LRUNを使っているので、このプログラムを保存してから、実行。 sakura.ioからデータ受信する IOT.IN() で信号を受け取り、エアコン停止のファイル1、28℃設定ONのファイル2、29℃設定ONのファイル3を呼び出します。(リモコン制御部分のプログラムは後述)

次はスマホ側、sakura.ioの連携サービスとしてWebSocketを設定し、スマホからの操作用のプログラムはJavaScriptで操作用アプリを作ります。 HTML/CSS/JavaScriptの基本スキルと、サンプルプログラムがあればカスタマイズし放題です。

IchigoRemocon IoT src on GitHub

高精度温湿度計SHT-31を使った、家のIoT温湿度計と合わせ、あとは快適に眠っていられる、ちょうどいいしきい値を決めるのみ。

温度が下がりすぎて寒くなって設定を緩めたらどんどん暑くなっていった、夜の記録。

IchigoJamで、赤外線を見よう!
ご家庭のほとんどのリモコンは赤外線リモコン。赤色より少し低い周波数の光を使って信号をリモコンから本体へと届けています。 目には見えませんが、赤外線受光モジュール(センサーの一種)を使って観測しましょう。

赤外線リモコン受信モジュール GP1UXC41QS (秋月電子で50円)を、IchigoJamにつなぎます。 データシートを見ると、丸い部分を手前にして、左から、信号出力のVout、GND、VCCの順。それぞれIchigoJamのIN1、GND、VCCに接続し、早速実験プログラム! (電源電圧VCCは2.7V〜5.5Vとあるので、5Vを使ってもOKです)

1 ?IN(1);:CONT

ずらっと1が並びますが、赤外線受光モジュールに向けて、リモコンボタンを押すと、0001010 などと、反応します。これが信号で、ボタンごと、機種ごとに違うものが送られています。

いろいろなリモコンで試してみましょう。

どんなリモコン信号を受けたら動かすだけなら、これでOKですが、信号の内容によって動きを変えたい場合は、もうひと工夫必要です。

リモコンの原理とマシン語活用
リモコンは赤外線を1秒間に3.8万回、38kHzの点滅を基本として、太陽光などに含まれる赤外線と区別しています。 その点滅があるときがON、無い時がOFFとし、ON時間とOFF時間を交互に計測し、一定時間OFFが続いたら一連の信号が終了、その一連の信号を見て判断すればOKと原理はシンプルですが、IchigoJam BASICでは速度が間に合いません。

そこでマシン語!以前作った、リモコン送受信コードを流用して、プログラム領域にデータを格納し、LRUNを使ったファイル連携で簡単に使えるようにしました。

1 'IR-REMOCON 100 INPUT"0:SEND 1:RECV ",N 110 IF N=0 N=USR(#D00,0):GOTO 100 120 L=USR(#D00,1) 130 ?"LEN:";L 140 FOR I=0 TO L-1 150 IF I%64=0 ?:?"POKE#";HEX$(#E00+I); 170 ?",";PEEK(#E00+I); 180 NEXT:? 190 GOTO 100 200 L=USR(#D00):LRUN F,R POKE#D00,112,181,114,182,14,34,18,2,138,24,0,40,53,208,80,35,27,3,1,51,27,3,1,36,164,4,2,38,54,2,2,62,0,33,0,240,37,248,1,49,33,66,28,209,29,104,0,45,247,209,228,8,0,32,0,33,0,240,26,248,1,49 POKE#D3E,33,66,17,209,29,104,0,45,247,208,17,84,1,48,0,33,0,240,15,248,73,28,33,66,6,209,29,104,0,45,247,209,17,84,1,48,176,66,231,209,0,33,17,84,1,48,98,182,112,189,156,37,173,0,1,61,253,209 POKE#D78,112,71,80,35,27,2,1,51,27,4,4,51,1,36,0,38,17,92,73,0,0,41,234,208,28,96,0,240,22,248,30,96,0,240,19,248,1,57,247,209,1,48,17,92,73,0,0,41,221,208,0,0,0,0,0,240,8,248,0,0,0,0,0,240,4,248 POKE#DBA,1,57,245,209,1,48,226,231,154,37,1,61,253,209,112,71

プログラムを入力し、実行すると 0:SEND 1:RECV と、送信するか受信するか聞いてきます。 まずは1、エンターで受信。リモコン信号を受光モジュールに当てると、#D00に記録した内容が表示されます。

0または単にエンターで、赤外線を発信します。OUT1とGNDに赤外線LEDを付け、本体に向けてやってみましょう!無事制御できましたか!?

1行目に何の信号か分かるように名前をつけて、保存しておきましょう(EEPROMを使えば追加で最大128種類保存可能)。 あとは、好きなようにプログラムを作るだけです。

USBシリアルでPCと接続している場合、受診時に表示されるPOKE文を保存しておき、上記プログラムと合わせて書き込むことでもリモコン信号を復元できます。

ちょっと詳しい解説編
1KBのプログラム領域、こんな風に使っています。
#C00-#CFF 256byte BASIC(溢れてないよう ?FREE() が768以下にならないよう注意!)
#D00-#DFF 256byte マシン語(赤外線送受信)
#E00-#FFF 512byte 赤外線データ

マシン語のasm15ソースコードはこちら。以前作成したものを、#E00から最大512byte使って保存するように変更し、#D00から書き込んで使います。(エアコンの信号で440byte、収まります!)

' IN1 - 赤外線受光モジュール / OUT1 - 赤外線LED PUSH {LR,R4,R5,R6} CPSID '割り込み禁止 R2=#E 'PROGの後半 #E00 R2=R2<<8 R2=R1+R2 R0-0 IF 0 GOTO @SEND R3=#50 ' IN1 の address PIO0_10 R3=R3<<(24-(10+2)) R3+=1 R3=R3<<(10+2) ' PIO0_10 R4=1 R4=R4<<18 '初回信号オーバーフロー判定 R6=2 'R6=512-2 R6=R6<<8 R6-=2 R1=0 @BACK0 GOSUB @WAIT2526 R1+=1 R1&R4 IF !0 GOTO @END R5=[R3]L R5-0 IF !0 GOTO @BACK0 R4=R4>>(18-15) 'オーバーフロー判定変更 R0=0 '配列書き込み位置 @LOOP R1=0 @BACK1 GOSUB @WAIT2526 R1+=1 R1&R4 IF !0 GOTO @END R5=[R3]L R5-0 IF 0 GOTO @BACK1 [R2+R0]=R1 R0+=1 ' 1byteずつ R1=0 @BACK2 GOSUB @WAIT2526 R1=R1+1 R1&R4 IF !0 GOTO @END R5=[R3+0]L R5-0 IF !0 GOTO @BACK2 [R2+R0]=R1 R0+=1 ' 1byteずつ R0-R6 IF !0 GOTO @LOOP @END R1=0 [R2+R0]=R1 R0+=1 CPSIE ' 割り込み許可 POP {PC,R4,R5,R6} @WAIT2526 R5=156 ' 1cycle '(48000/38*2=2526 - overhead 14cycle - 6) / 4 = 626 (=156*4) R5=R5<<2 R5-=1 ' 1 cycle IF !0 GOTO -1 ' 分岐するとき3cycle しないとき1 - 4*loop-2 RET ' 3cycle @SEND R3=#50 ' OUT1 の address PIO1_0 R3=R3<<8 R3+=1 R3=R3<<16 R3+=`00000100 'PIO1_0 R4=1 'PIOオン用 R6=0 'PIOオフ用 'R2 データが格納されたアドレス 'R0 == 0 @ON R1=[R2+R0] R1=R1<<1 ' 2倍する R1-0 IF 0 GOTO @END @ON_LOOP [R3]L=R4 GOSUB @WAIT631 [R3]L=R6 GOSUB @WAIT631 R1-=1 IF !0 GOTO @ON_LOOP R0+=1 @OFF R1=[R2+R0] R1=R1<<1 ' 2倍する R1-0 IF 0 GOTO @END @OFF_LOOP NOP NOP GOSUB @WAIT631 NOP NOP GOSUB @WAIT631 R1-=1 IF !0 GOTO @OFF_LOOP R0+=1 GOTO @ON @WAIT631 'use R5 R5=154 ' 1cycle '(48000/38/2=631 - overhead 5cycle (+10/2) - 5) / 4 = 154 R5-=1 ' 1 cycle IF !0 GOTO -1 ' 分岐するとき3cycle しないとき1 - 4*loop-2 = 618 RET ' 3cycle

受信:ONになっている時間、OFFになっている時間を交互に数えて、メモリに書き出す
送信:メモリを読み、38kHzで点滅するONとただ待つだけのOFFを長さ分だけ繰り返す
(参考、はじめてのマシン語 - IchigoJamではじめるArmマシン語その1

まとめ
プログラミング、言語はいろいろ違っても基本はシンプルです。
大人も子供も学生も、まずは楽しく改造して、ひとつひとつやれること増やしていきましょう!


PCで動く、IchigoJam ap を使って、楽しんでくれたドランクドラゴンのみなさん!


jigインターン、プログラミングできる学生向け、超高速IchigoJam入門&プログラミング大喜利まで1時間!はーどによる「jig.jpオンラインインターン2020 6日目!」に作品あり! アニメーション、音楽、ゲーム、サクッとその場で作れて好評でした!はんだづけもぜひチャレンジしてね!

教え方、または、ゆっくり復習したい方は、こちらの動画をどうぞ!

総合2コマから始める鯖江の小学校プログラミング! 総合的な学習の時間、IT遊具、クラブ活動、地域ICTクラブ、高度IT人材へのベストプラクティススライドPDF

かわくだりゲーム、Hana道場での改造例。

links
- IchigoJamを赤外線リモコンで簡単遠隔操作!スマートホーム実現に向けて、信号の解読にも挑戦しよう!

夜道のおさんぽを安全に!
好評だった、Lightning Choker、新しく手に入れた部品で作ったライト版。
名付けて「ゲーミングチョーカー」

犬の首輪想定のイヌテックですが、腕に巻いたり、かばんに付けてもいいですね。


乾電池1本駆動用3.3V昇圧モジュール、電源スイッチも手軽につけられて便利です。
IchigoJam S でも使っている、かっちりとした30円のスライドスイッチを使ってもいい感じ!
(参考、光るXの作り方


動画で確認できる、高速点滅(FF)と、ゆっくり点滅(SF)、2種類のイルミネーション、7色点滅LED(20コ100円)。 今回はキラキラ警戒してほしい感を表現するFFを使用。自在に制御したい人は、LPC810などのマイコン版にチャレンジしよう!


ベースの首輪はDAISO、100円!
デニム生地、LEDなどの針金を刺すだけで配置できて楽!
少し重くてもいいなら、電池2本のケースを使って昇圧モジュールを省略できます。
いろいろゲーミングに解決しちゃいましょう!

1週間の振り返り、うるし&ほっぴーによるjigインターンブログ!
jig.jpオンラインインターン2020 一週間の振り返り byうるし - jigintern2020’s diary
jig.jp オンラインインターン@2020前半戦振り返り byほっぴー - jigintern2020’s diary

去年に続き、夏休みの福井県立高志中サイエンス部訪問。 新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

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