Hatena::ブログ(Diary)

SHIROのモバイル日記 RSSフィード Twitter

2018-06-19

[]小ネタ:電池を付けて持ち歩き

IchigoJam工作物をいろいろ持ち歩いて見せている私ですが、その際はIchigoJamの裏に電池ボックスを付けています。電源を気にせずにどこでも動作できるので便利です。
そうした工作方法が案外どこにも書いていないので、ちょっと書いてみました。

材料:電池ボックス(単4×3本)リード線付き
秋月電子 http://akizukidenshi.com/catalog/g/gP-03195/
f:id:shiro0922:20180619093121j:image:w360

電池ボックスの赤・黒のリード線を短く切って、IchigoJamのCN5ソケットの裏側にハンダ付けします。
f:id:shiro0922:20180619093040j:image:w360

CN5ソケット周辺の詳細。黒(−)のリード線を電源スイッチに一番近い側の端子、赤(+)のリード線を反対側の端子に付けます。
f:id:shiro0922:20180619093055j:image:w360

電池ボックスを、厚みのある両面テープで貼り付けます。
私はホームセンターで買った3Mの両面テープ(2mm厚)を使っています。

IchigoJamのIC裏に両面テープを貼り付け。
f:id:shiro0922:20180619093236j:image:w360

リード線を折り返して電池ボックスを貼り付け。
f:id:shiro0922:20180619093440j:image:w360

単4電池を装填して完成。
f:id:shiro0922:20180619093515j:image:w360

横から見るとこんな感じ。
f:id:shiro0922:20180619093551j:image:w360

これで、IchigoJam工作物をどこでも持ち歩いて見せられます(^_^)
f:id:shiro0922:20180619093910j:image:w360
電源スイッチより前の部分で給電しているので、ちゃんとスイッチで電源ON/OFFできます。

2018-06-16

[]8LED Sendor Shield

8個のLEDと光センサー(フォトトランジスタ)を搭載した亀の子基板「8LED Sensor Shield」が完成しました。

f:id:shiro0922:20180615235409j:image:w360

f:id:shiro0922:20180615220134j:image:w360

f:id:shiro0922:20180617194905p:image:w640

f:id:shiro0922:20180618021629p:image:w360
右上にブザー、右下に通信用のTX/RX/GND端子を搭載。
左側にはオプションのセンサー用端子(IN4)があります。

Lチカで遊ぶもよし、POVに挑戦するもよし、2台をケーブルでつないで通信するもよし。
いろいろ使えるボードです。いかがでしょうか。

基板データ

※6/18 v0.5 部品配置を若干修正しました。

*この基板ガーバーデータは、CC BYライセンスとします。どうぞご利用ください。
f:id:shiro0922:20180316072743p:image
(C) 2018 Shiro Saito (http://d.hatena.ne.jp/shiro0922/)

このファイルをそのままFusion PCBで登録すれば、基板を発注できます。
基板寸法は47.3×41.8mmです。

部品表

f:id:shiro0922:20180618024056p:image:w480

プログラムいろいろ

セレクタ

スロット0に入れて自動起動します。1秒ごとにLED1〜3が光るので、ボタンを押すとスロット1〜3のプログラム選択起動できます。

10 '*Selecter
20 CLV
30 FOR P=1 TO 8:OUT P,0:NEXT
40 '@LOOP
50 OUT 1<<N
60 CLT
70 '@INBTN
80 IF BTN() LRUN N+1
90 IF TICK()<60 GOTO 70
100 N=N+1:IF N>2 N=0
110 GOTO 40
ルーレット

LED1〜8がランダムにピカピカと光ります。ボタンを押すとゆっくりになって止まります。再度ボタンを押すとリプレイします。

10 '*Roulette
20 CLV
30 OUT 0
40 '@START
50 IF !BTN() CONT
60 IF BTN() CONT
70 '@LOOP
80 OUT 0
90 BEEP 10,2
100 L=RND(8)+1
110 OUT L,1
120 WAIT 6
130 IF !BTN() GOTO 70
140 FOR I=1 TO 5
150 OUT 0
160 BEEP 10,2
170 L=RND(8)+1
180 OUT L,1
190 WAIT 20
200 NEXT
210 GOTO 40
●照度計

フォトトランジスタで受ける光量をメーター式に表示します。中学校技術科の単元「計測と制御」を意識したプログラムです。
D

10 '*Luminometer
20 A=ANA(2)
30 PRINT A
40 OUT 0
50 FOR L=1 TO 8
60 IF A>L*128-64 THEN OUT L,1
70 NEXT
80 GOTO 20
●バーサライタ(POV

起動するとLEDが細かく点滅します。IchigoJamを手に持って左右に振ると、眼の残像効果でハート型が見えます。配列変数にセットするデータを変えれば、様々な文字が表示できます。

10 '*POV Heart
20 CLV:OUT 8,0
30 [0]=`00001110
40 [1]=`00011111
50 [2]=`00111111
60 [3]=`01111110
70 [4]=`11111100
80 [5]=`01111110
90 [6]=`00111111
100 [7]=`00011111
110 [8]=`00001110
120 L=9
130 FOR I=0 TO L
140 OUT [I]
150 NEXT
160 GOTO 130
通信対戦スカッシュ

2台をケーブルでつなげば遊べます。新学習指導要領での中学校技術科「ネットワークを利用した双方向プログラミング」に対応。詳しくはこちら。
D

ペーパー

2018-06-15

[]通信対戦スカッシュ

IchigoJamに載せるシールド基板「8LED Sensor Shield」を現在試作中です。
通信用のTX/RX/GND端子を搭載した基板ができたので、2台のIchigoJam通信対戦するスカッシュゲームを作ってみました。
プレイ動画はこちら。
D

f:id:shiro0922:20180614235326j:image:w360
2台のIchigoJam通信ケーブルで接続。

f:id:shiro0922:20180614235355j:image:w360

f:id:shiro0922:20180614105129j:image:w360
通信ケーブルは0.65mm径の単芯線を使います。
黒・白・緑の3本をより合わせました。

f:id:shiro0922:20180614235232j:image:w360
黒のケーブルで2台のGND同士を接続。
TX/RXは白と緑のケーブルでクロス接続します。

f:id:shiro0922:20180615001429j:image:w360
携帯できるように、裏側に単4×3本の電池ボックスを装着。
CN5端子(5V/GND)の裏側に配線します。

プログラムリスト

※ボールの加速を大きくして、早く勝負が着くように変更しました。

10 '*Squash
20 IF BTN()=1 THEN CONT
30 '@RESTART
40 CLV
50 UART 1,1
60 CLK
70 OUT 8,0
80 W=30
90 '@START
100 IF BTN()=1 THEN GOTO 140
110 K=INKEY()
120 IF K>0 AND K<255 THEN GOTO 180
130 GOTO 90
140 '@GAMELOOP
150 GOSUB 290
160 CLK
170 K=0
180 '@GAMERE
190 IF K=0 THEN K=INKEY():CONT
200 W=K-32
210 K=0
220 GOSUB 370
230 IF M=0 THEN GOTO 140
240 OUT 8,1
250 BEEP 30,60
260 WAIT 60
270 IF BTN()=0 THEN CONT
280 GOTO 30
290 '@SERVE
300 FOR X=6 TO 1 STEP -1
310 OUT X,1
320 WAIT W
330 OUT X,0
340 NEXT
350 PRINT CHR$(W+32)
360 RETURN
370 '@RECEIVE
380 B=0
390 FOR X=1 TO 6
400 OUT X,1
410 WAIT W
420 OUT X,0
430 NEXT
440 IF BTN()=1 THEN GOTO 500
450 OUT 7,1
460 CLT
470 '@WAITLOOP
480 IF BTN()=1 THEN GOTO 540
490 IF TICK()<W THEN GOTO 470
500 '@MISS
510 OUT 7,0
520 M=1
530 RETURN
540 '@STRIKE
550 BEEP
560 OUT 7,0
570 W=W-2
580 RETURN

やっていることは単純で、ボールの速度(WAITの数)を1文字(1バイトの文字コード)で互いに送受信しているだけです。
そのままの値(0〜30)だとコントロールコード領域になってしまい、IchigoJamがおかしな動作をするので、送信側は32を加えた値を出力して、受信側は32を引いて受け取っています。

新しい学習指導要領で、「2020年から小学校でプログラミング必修」が大きな話題になっていますが、実は2021年から施行される中学校でも、技術科の単元「計測と制御」でのプログラミングが拡充され、「ネットワークを利用したプログラミング」をやらなければならないことになっています。
先日視察した「教育ITソリューションExpo」でも、ロボット2台をケーブルでつないでネットワークプログラミングをする教材が展示されていました。
それを見て「IchigoJamでも簡単にネットワークプログラミングできないか?」と考えて、これを作ってみました。
本当はMixJuiceやIchigoSodaとサーバープログラムを使って、インターネットを介した通信をすると今時っぽいのですが、それはまた別の機会に。

2018-06-05

[]バーコードJamカムロボ

以前からタミヤのカムロボを工作してきましたが、さらに改造して液晶で顔を付けてみました。
f:id:shiro0922:20180605125344j:image:w360

顔を付けるための専用基板を、Fusion PCBへ発注して作りました。
f:id:shiro0922:20180605155725p:image:w360

f:id:shiro0922:20180529214557j:image:w360

基板にaitendoのSPI液晶とピンヘッダをハンダ付け。
IchigoJam+Maplesyrupのソケットに差します。
f:id:shiro0922:20180605113657j:image:w360

さらにこのロボットに、以前作ったバーコードJam USB版システムを改造して搭載。
バーコードカードでカムロボの動きをプログラミングできるようにしました。
f:id:shiro0922:20180605125917j:image:w360

カードはこんな感じ。OUT命令を追加、WAIT命令の仕様を変更しています。
f:id:shiro0922:20180605125841j:image:w360

アンプラグド教材のカードと、実際にロボットを動かすプログラミングが融合。
これで小学校低学年の子どもでも楽しいプログラミングができそうです。

顔表示プログラム

20〜70行のカムロボ動作部分はサンプルです。動きによって顔の表情を変えると面白いかも。

10 GSB 80
20 '@LOOP
30 OUT 33
40 WAIT 120
50 OUT 17
60 WAIT 40
70 GOTO 20
80 '@FACE
90 CLS
100 ?
110 ?"    **    **"
120 ?"    **    **"
130 ?
140 ?"  *          *"
150 ?"   *        *"
160 ?"    ********"
170 RTN

バーコードJamカムロボ版

カムロボ用のOUT命令に対応。細かく制御したいのでWAIT命令の仕様を変更。

プログラム0(本体)
1 SWITCH1:CLS:?"*Barcode Jam*"
2 CLV:F=FILE():WAIT60:CLK
3 OUT0:Z=0:L=0
4 ?"OK"
5 ?CHR$(1);:R=1
6 B=INKEY():IF!BCONT
7 GSB29
8 ?CHR$(8);:IF!CGOTO15
9 IFTGSB14 ELSEGSB12
10 GOTO23
11 GOTO5
12 Z=Z+1:[Z]=C*16+O:IFC=8L=L+1:[70+L]=Z
13 ?">";Z*10;" ";:RTN
14 [Z]=[Z]|((C*16+O)<<8):T=0:RTN
15 BEEP30,30:IFO=1?"RUN":R=0:GOTO20
16 IFO=2?"LIST":R=2:GOTO20
17 IFO=3?"NEW":GOTO3
18 IFO=4CLS:GOTO4
19 GOTO5
20 A=0
21 A=A+1:IFA>ZGOTO4
22 C=[A]&#F0/16:O=[A]&15:?A*10;" ";
23 IFC=15&&O=15LRUNF+1,150
24 IFC&12=4O=C&3*16+O:C=4
25 LRUNF+1,C*10
26 IFT&&(R!=1):C=([A]&#F000)>>12:O=([A]&#F00)>>8:T=0:GOTO23
27 B=INKEY()&#FF:IFBGSB29:IFC=15&&O=15BEEP30,30:?"ESC":GOTO4
28 GOTO21
29 I=89
30 I=I+1:[I]=B-48
31 B=INKEY():IF!BCONT
32 IFB!=10GOTO30
33 D=0:FORJ=90TOI:D=D*10+[J]:NEXT
34 C=D/16:O=D%16:BEEP:WAIT30:CLK:RTN
プログラム1(命令解析部)
1 '*Barcode Jam-1
10 @LED
11 ?"LED ";O:IFR=1LRUNF,11
12 IFR=2LRUNF,26
13 LEDO:LRUNF,26
20 @WAIT
21 IFO<8O=O*60ELSEO=(O&7)*10
22 ?"WAIT ";O:IFR=1LRUNF,11
23 IFR=2LRUNF,26
24 WAITO:LRUNF,26
30 @BEEP
31 ?"BEEP":IFR=1LRUNF,11
32 IFR=2LRUNF,26
33 BEEP:LRUNF,26
40 @OUT
41 ?"OUT ";O:IFR=1LRUNF,11
42 IFR=2LRUNF,26
43 OUTO:LRUNF,26
80 @LABEL
81 ?"@";O:IFR=1LRUNF,11
82 LRUNF,26
90 @GOTOL
91 ?"GOTO @";O:IFR=1LRUNF,11
92 IFR=2LRUNF,26
93 A=[70+O]-1:LRUNF,26
100 @IFBTN
101 ?"IF BTN()=";O;" THEN ";:T=1:IFR=1LRUNF,11
102 IFR=2LRUNF,26
103 T=(BTN()=O):IF!T?
104 LRUNF,26
120 @FOR
121 ?"FOR I=1 TO ";O:IFR=1LRUNF,11
122 IFR=2LRUNF,26
123 I=1:J=O:S=A:LRUNF,26
130 @NEXT
131 ?"NEXT":IFR=1LRUNF,11
132 IFR=2LRUNF,26
133 I=I+1:IFI<=JA=S
134 LRUNF,26
150 @END
151 ?"END":IFR=1LRUNF,11
152 IFR=2LRUNF,26
153 A=Z:LRUNF,26

関連ファイル

カトラリーカード(バーコード付き)PDFファイル
命令表

f:id:shiro0922:20180605113944p:image:w360
以前の命令表から、OUT命令を追加、WAITの仕様を変更。

Camrobo Face基板データ

Fusion PCB用ガーバーデータ(ZIP)
*この基板ガーバーデータは、CC BYライセンスとします。どうぞご利用ください。
f:id:shiro0922:20180316072743p:image
(C) 2018 Shiro Saito (http://d.hatena.ne.jp/shiro0922/)
このファイルをそのままFusion PCBで登録すれば、基板を発注できます。

2018-05-24

[]Ichigoプリントス

チェキのフィルムでスマホの画面を撮影できる「プリントス」(タカラトミー)。大人気で現在品薄のようです。
プリントスのレビュー記事を見て、「スマホの画面が撮れるんならIchigoJamの画面も撮れるんじゃ?」と思って、改造してみました。
f:id:shiro0922:20180524225928j:image:w360

プリントスの撮影フレームに、3.5インチ液晶ユニットを装着。
本体にIchigoIgai、単3×4本の電池ボックスを付けて完成。
f:id:shiro0922:20180524231439j:image:w360

撮影してみた写真がこちら。
f:id:shiro0922:20180524230111j:image:w360
チェキなのであまりいい画質ではありませんが、デジカメには無い味わいがあります。
短時間のプログラミング体験教室で、何もおみやげが無いけれど、せめて入力したプログラム画面だけでも持って帰ってもらいたい…なんて時に使えるかもしれません。

リンク集