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

IoTネコライフ、ネコゴハンマシン改修とIchigoJam組み込みテクニック

2018/05/20
#IchigoJam #maker 

我が家のネコエサイノベーション、初代はシンプルなカウンター、二代目はぴったり時刻に開くマシン
プリンの箱のまま、1年近く問題なく稼働してましたが、ついにケースに収まりました。

隙間に、DIP化されたLPC1114のマイコンモジュール(350円)を使って収めます。

ソレノイドを動かすための巨大な大きなコンデンサ(6800uF 10V)は、元のマシンから拝借。作動時に電圧が大きく下がってしまうため、制御部分との電源共有化は断念、電源ケーブルは2本出しとなりました。

ソレノイドを動かすためのリレー。リレーを駆動するMOSFET、MOSFETを制御するIchigoJamからのマイコン信号。小さな電気信号を少しずつ大きな力に変えています。

リアルタイムクロック(RCT)モジュールをI2Cで接続できるように配線も合わせてユニバーサル基板に実装が意外と配線が多い!このくらいの規模でも、Upverterで作って基板頼んだ方が効率は良さそう。でも、その場でガシガシはんだづけして作る楽しさは格別。


マイコンモジュールを使った注意点としては、左右の電源とGNDをジャンパ線でつないでおくこと。電圧差が発生し、うまく自動起動しない状態になりました。

SLEEPコマンドを使う場合、BTNピンを1MΩでプルアップするのを忘れずに!自動起動前提で使う場合は、BTNをGND接続でOKです。シリアル接続でESCキーコード送信でメンテナンス可!

あとはシリアルで接続して、IchigoJamを書き込み、プログラムを流し込んでできあがり。

10 LET[10],700,1200,1700,2000,2300:C=5 20 GSB@GETHM:A=0 30 IF N>[10+A] ?N,[10+A]:A=A+1:IF A=C A=0:GSB@WAITM:ELSE CONT 50 @LOOP 60 GSB@GETHM:CLS:?" NOW:";N:?"NEXT:";[10+A] 70 IF N>=[10+A] ?"GOHAN!":GSB@MOVE:WAIT60:A=(A+1)%C:IF !A GSB@WAITM 80 WAIT 60*10:GOTO@LOOP 90 @WAITM:GSB@GETHM:CLS:?" NOW:";N:?"WAIT TOMORROW":IF !N RTN ELSE WAIT60*30:CONT 100 @MOVE:WAIT1:OUT1:WAIT1:OUT0:RTN 200 @GETTIME 210 IF I2CR(#68,0,#700,7) ERR 220 FOR I=0 TO 6:[I]=PEEK(#706-I):[I]=[I]>>4*10+[I]&15:NEXT:RTN 240 @GETHM:GSB@GETTIME:N=[4]*100+[5]:RTN

ACアダプター動作させるので、省電力化しないメンテナンス性と応答性重視のコード。
10行で、7時、12時、17時、20時、23時の1日5回動作するよう設定してます。


時刻設定をいつでも変えられるように、シリアル通信ポートも外に引き出すことにしました。これで、箱を開ける手間なく、設定変更できます。


こちらが元の、IchigoJam完成版をそのまま使ったネコゴハンマシン。1台、回収できました。

他、ネコ関係、外出先からの確認に便利なネコIoTとして、ネコトイレIoTと、IO-DATAの「Qwatch」が活躍中!

ICTで良いネコライフを!

削るほどに滑らかに、木工開発環境づくり(物理)と道具の沼

2018/05/13
#maker 

あいにくの雨。つつじマラソンは諦め、木工再開。
たまたまちょうどいい高さだった収納が机からはみ出るので、その分をなめらかな曲線の木でつなく計画実行。

オシロスコープ他、ほしいツールがすぐ使える環境づくりに、大きく一歩前進。


ハイライトは、この曲線づくり。よく見るとまだちょっと、削った際の筋がある。


削るほどに滑らかになっていくのがうれしい。良くなればなるほど、より高みを目指したくなり、実際できちゃうのが木工の魅力。 ・・・ただ、時間はかかる。


ほしい曲線を線で書き、電気マルチツールAMT-280でカットしたが、この線をたどるようにな切り方がそもそも失敗。 削ることはできても、削ったら最後の木工。中学生来忘れていた、削ることを想定して切るという基本。

また、こういう、曲線に切るケースなら、きっと糸鋸が圧倒的に便利。定番の道具たち、代替できても圧倒的にかかる時間が違う理由を、身をもって体験。

物理的な開発環境作り、意外と楽しく、勉強になるが、どんどん新しい道具が欲しくなって危ない。 小学生の頃、大人はきっともっといい道具を使っているに違いないと、無限に好きな道具を材料なしに作ることができるコンピューターにものづくり環境を移したのは正解だった。

道具は時間を創るもの。
でも、ある道具でなんとかする時間を楽しむのもまた一興。

links
- 木工で快適な創造プラットフォームづくり、こどもの日

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

2018/05/06
#IchigoJam #maker #asm 

家電を自在にコントロール!赤外線リモコンで操作する家電は、IchigoJamでも制御可能。
まずは予備実験として、見えない光、赤外線を使った、IchigoJam遠隔コントロール実験から。

1コ20円の赤外線受光モジュールとブレッドボード、ワイヤー3本で、回路を作りましょう。
IchigoJam CN5の5VとGND、CN4のIN1からワイヤーで赤外線受光モジュールの3本足側へ接続します。

順番は、3本足を上にして左から5V、IN1、GNDの順。
※受光モジュールの電源は、4.7-5.3Vなので、VCC(3.3V)では動きません

つないだら、早速受光しているか実験するプログラム

1 LED !IN(1):CONT RUN

赤外線受光モジュールは普段は1、38kHzで振動する赤外線を捉えたら、0が出力されます。
IN(1)でその信号をとらえ、そのまま!演算子で反転させて、LEDに連動させています。

家のテレビや電気など適当なリモコンを向けてボタンを押すと、チカチカ点滅します。

赤外線リモコンからの信号を待って、LEDをつけるプログラムはこちら。ロボットの発進制御にも使えますね!

10 IF IN(1) CONT 20 LED1

※何もしなくてもチカチカする場合、電源のノイズを拾ってしまっているので、別の電源を使うか、新品の乾電池x3(1.6*3=4.8V)を使いましょう。ノイズ対策方法も何かあるかもしれません。

ボタンをいろいろ押し分けたり、違う家電のリモコンの信号を向けてみたりすると、長さやパターンが違うことがわかります。 この信号を解読にも挑戦してみましょう。

赤外線リモコンの38kHzで点滅する赤外線LEDを光らせるパターンの違いで信号を伝えます。その信号を見るプログラムを書いてみると

1 ?IN(1);:CONT RUN

ただ、信号が一瞬すぎてうまく区別できそうにありません。BASICでは速度が足りない時は、マシン語の出番。 マシン語で光っている時間、消えている時間を計測してみます。

10 POKE#800,112,181,114,182,7,34,18,2,138,24,0,40,51,208,80,35,27,3,1,51,27,3,1,36,164,4,254,38,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,33,66,17,209 20 POKE#83E,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,112,71,80,35 30 POKE#878,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,1,57,245,209 40 POKE#8BA,1,48,226,231,154,37,1,61,253,209,112,71 120 N=USR(#800,1) 130 ?"LEN:";N 140 FOR I=0 TO N-1:?PEEK(#700+I);" ";:NEXT

RUNしてリモコン信号を当ててみましょう。

71 30 10 7 11 6 11 22 10 24 10 7 10 23 10 7 10 7 10 7 9 24 9 8 9 8 9 24 9 8 9 24 10 7 9 25 9 7 10 7 9 25 9 8 9 8 8 8 9 8 9 8 9 24 9 8 9 8 9 8 8 8 9 8 9 8 9 8 8 8 9 8 9 25 8 8 9 8 9 8 9 8 9 7 9 25 9 8 9 7 9 8 9 8 9 8 9 25 8 85 68 34 9 7 10 7 9 25 9 24 9 8 9 25 8 8 9 8 9 8 9 24 9 8 9 8 8 26 8 8 9 25 8 9 8 25 8 9 8 9 8 25 8 9 8 9 8 8 8 9 8 9 8 25 8 9 8 9 8 9 8 8 8 9 8 9 8 9 8 8 8 9 8 26 7 9 8 9 8 9 8 9 8 8 8 26 8 9 8 8 8 9 8 9 8 9 8 25 8 0

いくつか見ているとパターンが見えてきます。

最初の長い部分のあと、短い点灯とそのあとの消灯時間の違いで0と1を表しているようです。 数えてみるとちょうど48コ、6byte分の信号を2回送っています。 解析できた構造はこんな感じ

ヘッダ(ON:70 OFF:30) [0(ON:8 OFF:8), 1(ON:8 OFF:24)] x 48bit(6byte) フッタ(ON:8)

※数の単位は2cycle(38kHz) - 上記を2度送信している

信号の違いを確認してみましょう。

A 001101000100101010010000010000000001000001000001 B 001101000100101010010000010000000101000001000101

家の電気のリモコンAとBで切り替えで、2bit異なることががわかります。
ボタンに合わせた動作をプログラムすれば、リモコンで遠隔操作するロボットや便利道具もできそうですね。

上記、マシン語プログラム、実はリモコン送信用プログラムも含んでいます。赤外線LEDがあればリモコン発信も実験できます。

100 INPUT"1:SEND 2:RECV ?",N 110 IF N=1 N=USR(#800,0):GOTO 100 120 N=USR(#800,1) 130 ?"LEN:";N 140 FOR I=0 TO N-1:?PEEK(#700+I);" ";:NEXT 150 GOTO 100

赤外線リモコン信号読み取り&送信用マシン語プログラム(for asm15

' IN1 - 赤外線受光モジュール / OUT1 - 赤外線LED PUSH {LR,R4,R5,R6} CPSID '割り込み禁止 R2=7 'PCGの先頭 #700 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=254 'オーバーフロー判定 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

links
- はじめてのマシン語 - IchigoJamではじめるARMマシン語その1
- レゴテクニックシリーズをIchigoJamと赤外線LEDで制御する(マシン語) / Control Lego Technic by IchigoJam and IR LED
- 赤外線リモコン受信モジュール SPS-440-1(38kHz): センサ一般 秋月電子通商 電子部品 ネット通販 (70コまとめ買いで@10円!)

木工で快適な創造プラットフォームづくり、こどもの日

2018/05/05
#maker #IchigoJam 

こどもの日、西山公園ではつつじまつり、Hana道場ではこどもパソコンづくり、自宅ではリアル木工で作業机づくり。


まずは第一弾、作業机の完成!もっと多くの子供たちへ、届く何かを創るプラットフォーム。


近所のホームセンターコメリにて、木材と共に購入したツール、電気マルチツールAMT-280、6千円!


家で木材を簡単にカットできるようになった(木くずはすごい)


力はベクトル、どの方向からのどのくらいの力に耐えるように補強するか?
レゴ、テクニックシリーズでの経験が活きる!
電動ドリル&ドライバーに、補強器具、ぴったりのねじなど、道具とパーツが揃えばレゴ感覚。


やりなおし(Undo)の効かない木工、多少のミスは気にしない。うまくできるかどうかは差は経験あるのみ。
無制限にUndoできて、ツールもパーツも無限に手に入り、ごみも出ないプログラミングというものづくりの経験は木工にも活きる!


Hana道場では、電子工作&プログラミング体験。
小1の子も、自分ではんだづけして完成させたこどもパソコンIchigoJam!
子供同士の教え合いが微笑ましい。
小学1年生もパソコンをつくったよ!*こどもの日企画* - Hana道場


遠路、大阪からご来鯖、鯖江コラボお菓子をつくっているフルタ製菓さん!
(大阪以来、KidsVenture&教員職員向けIchigoJamワークショップ at 大阪/さくらインターネット本社、IchigoJamのつなぎかた


西山公園前の信号から8号線にかけて大渋滞。西山公園自体には駐車場が少なく、サンドーム福井からのシャトルバスに乗るか、福井鉄道から西山公園駅か、西鯖江駅下車が正解。 どう伝えると伝わるか?

車、電車、徒歩、シャトルバスでの西山公園までの予測所要時間をリアルタイムにオープンデータ化できるといいのかも。 シャトルバスにもリアルタイムオープンデータ化用の機器搭載と、福井鉄道に時刻表オープンデータがほしいところ。普段不要な分、いかにランニングを安くあげるかが鍵!
鯖江つつじバスモニター / 公共交通IoTリアルタイムオープンデータ

壊れた液晶ディスプレイで透過型温湿度計づくり SHT31x4.3インチモニターxIchigoJam

2018/05/04
#IchigoJam #maker 

昔、憧れだった透けるディスプレイ。

高精度温湿度計、透けるディスプレイバージョン!


画面上部の表示が壊れてしまった4.3インチモニター。捨てる前に、分解!


自らは発光しない液晶には必須なバックライト


これがその正体。
プラスチック風な透明な板と、裏面の白い紙で、明るい白色LEDで画面全体を裏から照らす仕組み。


つまり、液晶単体でも、裏に光があれば使える。


テスターを使い、5Vを作っている箇所を発見。ここに5Vを供給するだけで動く。
バックライトの回路を切ると、消費電流がぐっと下がって省エネ駆動(5Vで340mA→50mA)


使うのは3点のみ、ビデオ入力(黄)、5V(赤)、GND(黒)
4.3インチ液晶モニターの基板は少なくとも2種類ある。5Vが無い場合は普通に12Vを使うか解析しよう。


温湿度センサー、SHT31用のプログラムを作って、できあがり!

10 U=96:LET[U],#4401,#8808,#884A,#4350,#0C00,#4770:U=#800+U*2 15 CLS:VIDEO5 20 POKE#700,#2C,#06:R=I2CR(#45,#700,2,#700,6) 30 [0]=17500:[1]=PEEK(#700)<<8|PEEK(#701):T=USR(U,#800)-4500 40 [0]=10000:[1]=PEEK(#703)<<8|PEEK(#704):H=USR(U,#800) 50 LC1,3:?T/100;".";DEC$(T%100+100,2);CHR$(#DF);"C" 60 LC1,4:?H/100;".";DEC$(H%100+100,2);"%" 80 WAIT10:GOTO20

℃を表すために使ったカタカナの半濁点(#DF)とCの不揃いが気になるので、PCGでキャラクターづくり。

1 POKE255*8+0,`11000000 2 POKE255*8+1,`11011000 3 POKE255*8+2,`00100100 4 POKE255*8+3,`00100000 5 POKE255*8+4,`00100000 6 POKE255*8+5,`00100100 7 POKE255*8+6,`00011000 8 POKE255*8+7,`00000000

プログラムが短くしたい時は、2進数を10進数にしておくとコンパクト

?"1 POKE#7F8";:FORI=0TO7:?",";PEEK(255*8+I);:NEXT:? 1 POKE#7F8,192,216,36,32,32,36,24,0

50行の#DFとCを#FFに変更して、できあがり

50 LC1,3:?T/100;".";DEC$(T%100+100,2);CHR$(#FF)

このままでは温度がマイナスの時におかしくなるので、対策しておく

45 LC0,3:IF T<0 ?"-":T=-T

プログラム全文

1 POKE#7F8,192,216,36,32,32,36,24,0 10 U=96:LET[U],#4401,#8808,#884A,#4350,#0C00,#4770:U=#800+U*2 15 CLS:VIDEO5 20 POKE#700,#2C,#06:R=I2CR(#45,#700,2,#700,6) 30 [0]=17500:[1]=PEEK(#700)<<8|PEEK(#701):T=USR(U,#800)-4500 40 [0]=10000:[1]=PEEK(#703)<<8|PEEK(#704):H=USR(U,#800) 45 LC0,3:IF T<0 ?"-":T=-T 50 LC1,3:?T/100;".";DEC$(T%100+100,2);CHR$(#FF) 60 LC1,4:?H/100;".";DEC$(H%100+100,2);"%" 80 WAIT10:GOTO20


全体図、電池駆動やACアダプター化してもっとコンパクトに仕上げるのも良さそう。


ケースなど、他の部品も何かに使えそう。ケーブルは4芯あるのでI2Cセンサーを外に引き出すのに便利、ボタンはアナログ入力にいれて3ボタン操作可能。 それぞれ部品として買うと高かったり、そもそも入手が困難なものは重宝する。

創造は分解から。

links
- 分解してグルーガンで再構築するジャンクアートは大人もOK - バラバラにして作って遊ぼう!ジャンクREメイクショップ - Hana道場 x ハードオフ
- 自分で創ったモノを売ってみよう!はじめてのしょうばい - 高性能温湿度計のつくりかた(SHT31編)

モバイルバッテリーでも切れないIchigoJamのつくりかた

2018/05/01
#IchigoJam #maker 

モバイルバッテリーを使ってIchigoJamを動かしていたら、しばらくすると切れてしまう。
これは、IchigoJamの消費電力が少なすぎて、モバイルバッテリーの自動停止機能が働いてしまうことが原因です。

センサーや、サーボなど周辺機器をつなぐと切れなくなったりしますが、動いていない時に切れてしまうなどでは困ります。

そこで登場、1本の100Ωの抵抗(100本で100円@秋月電子通商
3.3V(VCC)とGNDにさし込んでみました。

無事、一定時間で切れてしまうことを繰り返していたDAISOモバイルバッテリーでも動き続けるようになりました!


VCC-GND間であれば、どこにさしても大丈夫。5V-GND間でもOKですが、消費電力がちょっと上がります。

この抵抗は無駄なのでしょうか?
実は、発熱するという機能があります。
3.3V / 100Ω = 0.033A、3.3V * 0.033A = 0.1W
0.1W = 0.1J/s で、空気の比熱がだいたい 1J/g℃ なので、周りの空気1gを10秒かかって1℃上げるくらいの発熱。
とっても地味な暖房という感じです。
(参考、■ 各種物質の性質: 気体の性質

その1万倍の1000Wの暖房を計算してみましょう。
4畳半の容積は、18m3(4.5/2*3.3*2.4)。
空気の重さは意外と重くて 1.3kg/m3 程度。(参考、空気に重さはあるの? | ダイキン工業株式会社
つまり、4畳半には23kg(18m3*1.3kg/m3)の空気。
この暖房は、部屋全体を23秒で1℃あげる能力ということです(実際は熱が逃げちゃうのでもっと時間がかかりそう)

今回100Ωを使いましたが、1kΩだと、1/10の0.01Wとなって、小さすぎるせいで自動停止しちゃいます。
逆に小さい抵抗を使うとどうなるか?
10Ωだと、10倍の1W、この抵抗の定格(仕様上の限界)1/2W(=0.5W)を越えてしまうので危険です、きっと。

回路を間違うと異常に熱くなったりする理由がわかりますね。

鯖江凱旋!サバエレキシライブ記念、ほのかに光る稲穂づくり

2018/04/29
#IchigoJam #maker #music 

鯖江出身ミュージシャン、レキシの凱旋ライブが西山公園で開催!
やはりここは光る稲穂で応援にいきたい。


ヒカルイナホ2号とヒカルイナホ1号


ヒカルイナホ1号。IchigoJam制御でほんわり光、ほんわり消える。光の強さをつまみ式の可変抵抗でコントロール可能。 設定スイッチをいれると色選択モードになり、色相と彩度(ボタン押しながら)を可変抵抗で変更可能。


両面から見られるようにテープ状のフルカラーLEDをオモテウラ貼り付けることを想定。IchigoJamとブレッドボードで回路とプログラムを作成し、ユニバーサル基板でコンパクト化開始。


光った!


IcihgoJamの分離合体バージョン、IchigoDakeとモバイルバッテリー、ヒカルイナホボード、可変抵抗を組み立てて使用。マスキングテープはそこそこ強度があって、後できれいにはがせて便利。


ついでにもうひとつ簡易版、ヒカルイナホ2号。3つのタクトスイッチで光の3原色をダイレクトに体感。
曲に合わせて7色から選べる。


単3電池x2を電源に、フルカラーLEDの赤、緑、青に抵抗10Ωを通して並列に接続した、ヒカルイナホ2号。 ライブでの振られるイナホ、振ると線が抜ける、切れることが判明しホットボンドで強化。


多くのレキシファンで賑わった西山公園。


GW中の立ち入り制限は前代未聞!?


フードエリア、コトブキ食堂。サバエドッグには長蛇の列!(写真のサバエドックは誤植?)


こちら連隊カレエ。鯖江には大日本帝国陸軍「歩兵第36連隊」が駐屯してました。その三六町(さんろくちょう)にある、サラダ焼きも手軽でおすすめ鯖江ご当地グルメ!
三六サラダ焼 | 三六商店(さんろくしょうてん)公式サイト


物販に並ぶ列と癒やしのつつじ、5万株(西山公園内)


レキシ10周年!凱旋ライブ!!レキシのライブに遊びに来ねの〜〜 2018.4.29 福井県鯖江市西山公園
ちょっと暑いくらいの最高の天気に恵まれた! (来ねの、は福井弁、来てね、来たらいいんじゃない?的意味)

「歴史ブランニューデイ」メンバー、レキシネーム「足軽先生」のいとうせいこうさん、レキシネーム「三つ子の魂百男」鯖江市の牧野百男市長も登場。

市長がPV冒頭35秒間出演している「歴史ブランニューデイ」のPV、再生回数100万回オーバー!
「君がいない幕府」でも市長は福井弁ラップ(?)で出演。縁が深い、レキシとサバエ。

ヒカルイナホ1号 プログラム解説
ハードウェアを準備する。IN3(=OUT10)-DIN(WS2812B), IN2-可変抵抗, IN1-設定スイッチ

10 A=#700:OUT10,0 20 POKEA,240,181,114,182,64,24,80,33,9,6,128,49,4,136,1,48,128,37,1,48,3,120,~0,34,10,96,3,39,10,38,43,66,1,208,10,39,3,38,1,63,~2,209,0,34,10,96,1,62,~2,209,109,8,239,209,1,60,234,209,98,182,240,189 RUN POKE#800,6,0,0,255,0,0,255,0:?USR(#700,#800)

光る大五郎、WS2812Bをプルアップ抵抗を付けて5Vを出力できるオープンドレインなIN3(OUT10)用に変更、2つ赤く光る

500 @HSV2RGB 505 R=V:G=V:B=V:IF S=0 RTN 510 D=H/60%6:C=V-(59-H%60)*V/60*S/100:E=V-H%60*V/60*S/100:F=V*(100-S)/100 520 IF D=0 G=C:B=F 530 IF D=1 R=E:B=F 540 IF D=2 R=F:B=C 550 IF D=3 R=F:G=E 560 IF D=4 R=C:G=F 570 IF D=5 G=F:B=E 580 RTN 400 GSB@HSV2RGB:POKE#800,6,0,G,R,B,G,R,B:U=USR(#700,#800):RTN H=30:S=100:V=30:GSB400

HSVをRGBに変換するプログラムを混ぜて、色彩豊かに光る準備完了

100 S=100:H=0 110 V=0:GSB400 120 W=ANA(2)/4 130 IF BTN() FORI=0TO4:V=V+(W-V)/2:GSB400:NEXT:FORI=0TO1:I=!BTN():W=ANA(2)/4:V=W:GSB400:NEXT:FORI=0TO4:V=V-V/2:GSB400:NEXT 140 GOTO110

可変抵抗でマックスを設定し、ほんわり光らせ、ほんわり消す

140 IF IN(1) GOTO 110 150 V=W:A=ANA(2) 160 B=ANA(2):H=(H+(A-B)/2+360)%360:A=B:GSB400 170 IF BTN() FORI=0TO1:S=100-ANA(2)/10:S=S*(S>0):GSB400:I=!BTN():NEXT:A=ANA(2) 180 IF IN(1) GOTO 110 ELSE GOTO 160

色相と彩度と設定するスイッチに対応して、できあがり!


ヒカルイナホ1号の肝、フルカラーLED(WS2812B)用ボードの裏。

プログラム全文

10 A=#700:OUT10,0 20 POKEA,240,181,114,182,64,24,80,33,9,6,128,49,4,136,1,48,128,37,1,48,3,120,~0,34,10,96,3,39,10,38,43,66,1,208,10,39,3,38,1,63,~2,209,0,34,10,96,1,62,~2,209,109,8,239,209,1,60,234,209,98,182,240,189 100 S=100:H=0 110 V=0:GSB400 120 W=ANA(2)/4 130 IF BTN() FORI=0TO4:V=V+(W-V)/2:GSB400:NEXT:FORI=0TO1:I=!BTN():W=ANA(2)/4:V=W:GSB400:NEXT:FORI=0TO4:V=V-V/2:GSB400:NEXT 140 IF IN(1) GOTO 110 150 V=W:A=ANA(2) 160 B=ANA(2):H=(H+(A-B)/2+360)%360:A=B:GSB400 170 IF BTN() FORI=0TO1:S=100-ANA(2)/10:S=S*(S>0):GSB400:I=!BTN():NEXT:A=ANA(2) 180 IF IN(1) GOTO 110 ELSE GOTO 160 400 GSB@HSV2RGB:POKE#800,6,0,G,R,B,G,R,B:U=USR(#700,#800):RTN 500 @HSV2RGB 505 R=V:G=V:B=V:IF S=0 RTN 510 D=H/60%6:C=V-(59-H%60)*V/60*S/100:E=V-H%60*V/60*S/100:F=V*(100-S)/100 520 IF D=0 G=C:B=F 530 IF D=1 R=E:B=F 540 IF D=2 R=F:B=C 550 IF D=3 R=F:G=E 560 IF D=4 R=C:G=F 570 IF D=5 G=F:B=E 580 RTN

links
- レキシオフィシャルHP うぇぶ城
- レキシさん、鯖江市で凱旋ライブ 西山公園、全国から6千人 | 催し・文化 | 福井のニュース | 福井新聞ONLINE

Sony MESH x IchigoJam、スマホからIchigoJamラジオをコントロールする

2018/04/28
#IchigoJam #mesh #maker 

SonyのMESHで、スマホからIchigoJamをコントロール!
電源供給機能があるのでIchigoJamの電池代わりにもなって、コンパクトに仕上がります。

ラジオをスマホからコントロールできました。

10 LET[0],7910,7610,8349,9460

プログラムは前回のままですが、1局追加!
AMラジオが入りづらい地域のために新しくFM波の90MHz〜95MHz帯を使った、ワイドFM(FM補完放送)が福井でも去年から始まっていて、福井で聞けるラジオは、4局でした。
FBC-i 【福井放送】FBCラジオ×ワイドFM


MESHのアプリ上でGPIOタグを認識させ、スマホのマイクで音を感知したら、電源をONすると同時に、BTN端子につないだデジタル出力1をLOWにし、ボタンを押しながら電源入れるを再現。 1秒後にデジタル出力をHIGHにします。タイマーで指定時間に自動的にONにしたり、他のMESHとつないでいろいろ組み合わせて使えます。


電源供給、デジタル出力x3、デジタル入力x3、PWMx1、デジタル入力x1を備える「MESH GPIO
BLE(Bluetooth 4.0)を使って、スマホと気軽につなげて、電池の持ちが良いのがうれしいところ!(参考寿命1ヶ月)

欲を言うと、Nintendo Laboのように、「タッチしたら」や「画面ひかる」などスマホだけで使えるブロックがほしいところですが、ラズパイ上での運用との組み合わせで難しいのかも?
Nintendo Laboでサーボを動かす方法 / IchigoJamの楽器として使うNintendo Laboと電子工作


もっとコンパクトかつ、簡単に接続できるように変換コネクターを作ってみました。


L字ピンヘッダーでIchigoJamのCN4に挿し込むイメージ


MESHにはピンヘッダー5ピンx2で接続(隣同士繋がったパターンのユニバーサル基板が楽かも、新ユニバ!?)


GPIOタグのピン配置を見ながら、左上電源をVCCへ、右上GNDをGNDへ、デジタル出力1をBTNに、他、いろいろ自由につなぎましょう。


はんだごてを使う電子工作で、更に広がる創れる世界、MESHでも!
電子工作好き、ものづくり好きが、どんどん増えますように!

links
- タグ GPIO | MESHレシピ
- GPIOタグの機能と仕様を教えてください – MESHサポート | 遊び心を形にできる、アプリとつなげるブロック形状の電子タグ

「世界一?簡単デジタルラジオキット」つくる、鯖江専用ラジオ

2018/04/26
#IchigoJam #maker #radio 

福井高専学生時代、アマチュア無線同好会にも所属。モールス信号を覚えて、アマハム3級を取得。でも、一度も無線機を触ることなく卒業。

長い休眠期間を経て、近年復活した「福井高専アマチュア無線研究会 - JA9YDB」との縁もあって、無線の勉強。

周波数別にいろいろ使われる電波、アマチュア無線ならではの短波(HF)を使うと電離層に電波を反射させ、インターネットも電話線も衛星も使わず、なんと世界とも通信できてしまうらしい。

世界中の子供たちが、IchigoJamのプログラムを送受信することを夢見て、まずは手軽に扱える電波、FMを使って実験開始。(FMは、超短波(VHF)を使った周波数変調の放送)


こちら、aitendoで500円「世界一?簡単デジタルラジオキット」を使った、福井で聞ける3局のみ受信できるFMラジオ。 DSPラジオ、RDA5807HSを使ったモジュールをIchigoJamのI2Cコマンドでコントロール!


たったこれだけの部品で、FMラジオができてしまう。
小さいタクトスイッチはおまけ。ラジオを鳴らすだけなら不要。アンテナ代わりにイヤホンを接続。


DSPラジオモジュールは、テープやペンチで押さえてはんだづけ。フラックスを塗ると楽です。


ラジオとIchigoJamの接続、ミニユニバーサル基板で、IchigoJamのCN5のI2Cの並びに変換。もちろんジャンパーワイヤーで接続でもOK!VCC-3.3V/GND/SCL/SDAの4本。

I2Cコマンドで、5byte送ってコントロール。周波数freq(MHz)は下記で求めた16bitの数を、先頭2byteにビッグエンディアンで設定。

4 * (freq * 1000000 + 225000) / 32768

この計算はIchigoJam BASICで普通にやるとオーバーフローしてしまうので、32bitまで扱えるArmマシン語の力をちょっと借ります。
freqを79.1MHzを7910と10kHz単位で表すことにして、上記の式を変形

((7910 * 10 + 225) * 1000) >> 13

これをasm15マシン語で分解するとこのようになります(R0*=R1 は R0=R0*R1 の意味)

R1=10 R0*=R1 R1=225 R0+=R1 R1=10 R0*=R1 R0*=R1 R0*=R1 R0=R0>>13 RET

アセンブルしたものを使うと、下記のように設定する数値が求まります(検算してみましょう)

POKE#700,10,33,72,67,225,33,8,68,10,33,72,67,72,67,72,67,64,11,112,71 OK ?USR(#700,7910) 9683 OK

あとは下記コマンドで鳴るはずです(受信可能な周波数を調べて設定ください)

F=USR(#700,7910):POKE#800,F>>8,F,#18,#16,0:?I2CW(96,#800,5)

鯖江で受信可能な3局、たんなんFM(79.1MHz)FM福井(76.1MHz)NHK福井放送局(83.4MHz)をボタンで切り替えるプログラムはこちら

10 LET[0],7910,7610,8349 20 ?[N] 30 POKE#700,10,33,72,67,225,33,8,68,100,33,10,34,81,67,72,67,64,11,112,71 40 F=USR(#700,[N]):POKE#700,F>>8,F,#18,#16,0:?I2CW(96,#700,5) 50 WAIT30 60 IF BTN()=0 CONT 70 N=N+1:IF [N]=0 N=0 80 GOTO 20

受信中はLEDが光るようにちょっと改造

45 LED1 65 LED0

128x64のOLEDディスプレイを使って、受信中の周波数を表示用の追加コード

5 GSB@INIT:GSB@CLS 25 F=[N]:CLS:?F/100;".";F/10%10 26 FORI=0TO3:X=2+I:Y=8:GSB@LC:C=PEEK(#900+I):GSB@PUTC:NEXT 100 @INIT:POKE#700,0,141,20,32,0,175:?I2CW(60,#700,6):RTN 110 @LC:POKE#700,0,33,Y*8,127,34,7-X,7:?I2CW(60,#700,7):RTN 120 @PUTC:COPY#700,C*8,8:?I2CW(60,#40,#700,8):RTN 130 @CLS:X=7:Y=0:GSB@LC:C=0:FORI=0TO127:GSB@PUTC:NEXT:RTN

人が聞くのではなく、機械が聞くラジオにするべく、次はFMトランスミッタと信号のデコードに挑戦してみたいところです。

身の回りにたくさんある見えない線、無線。スマホ、WiFi、飲食店での呼び出しボタン、ラジオ・テレビなど身近な電波の正体に迫ってみましょう。

Nintendo Laboでサーボを動かす方法 / IchigoJamの楽器として使うNintendo Laboと電子工作

2018/04/22
#KidsIT #IchigoJam #maker 

Nintendo Laboを使ったプログラミング。Joy-Con(R)についているIRカメラで電子工作!
IchigoJamからLaboへは赤外線LEDで、LaboからIchigoJamへは光センサーが活躍します。

IchigoJamからNintendo Laboをコントロール

Nintendo LaboをIchigoJamの楽器にしてみよう。

赤外線LEDを用意して、IRカメラに向かって光らせると「IRカメラ(赤外線OFF設定)」に白く認識。
これを「スポイト」で「音をならす」や「振動」につなぐだけ。

(かわくだりゲームに効果音と、終了時の振動を追加した動画)

準備するもの
- IchigoJam 1500円〜2000円くらい
- 赤外線LED 5コ100円(10コ150円100コ950円


目に見えない赤外線LED、IRカメラには見えてます!


OUT3 OK OUT1 OK OUT2 OK OUT0 OK

OUT3 で、赤外線LEDを2つとも光らせて、IRカメラで反応する場所を確認して、その場所にスポイトをセット!


スポイトの設定はデジタル、範囲をいい感じに調整しよう。

5 OUT1:WAIT30:OUT0 10 CLS:X=16 20 LC X,5:?"O" 30 LC RND(32),23:?"*" 35 WAIT3 36 X=X-BTN(LEFT)+BTN(RIGHT) 37 IF SCR(X,5) OUT2:WAIT30:OUT0:WAIT30:GOTO5 40 GOTO20

かわくだりゲームに、OUT1で効果音(5行)、OUT2でゲームオーバー時の振動(37行)を加える改造を施したもの。


赤外線LEDの場所とIRカメラ(Toy-Con(R))の位置を固定する治具を作って置くと良い感じ。
IRカメラを広くとって、暗い箱の中にいれ、ピアノのように、赤外線LEDをたくさん並べるとコントロールの幅が広がります。

Nintendo Laboでサーボを動かす

今度は逆に、光センサーを使って、Nintendo LaboからIchigoJamをコントロール!

(Toy-Con(L)のスティックでサーボを操っている動画)


IRカメラの赤外線発射機能「IRひかる」を使って、Nintendo LaboからIchigoJamへ信号を送ろう。 光センサーで受け取った信号に応じて、サーボを動かすプログラムをIchigoJamで作っておけばできあがり!

準備するもの
- IchigoJam 1500円〜2000円くらい
- 光センサー(フォトトランジスタ) 2コ100円
- 10kΩの抵抗 100コ100円
- サーボ SG-90 400円
- ジャンパーワイヤー 60本220円
- ブレッドボード 130円


IchigoJamに、ジャンパーワイヤーVCC(赤)、IN2(オレンジ)、GND(青)を3本さす。
ブレッドボードに赤、オレンジ、3つ飛ばして、青とさす。
赤をさした列にフォトトランジスタの長い方、オレンジに短い法をさす。
オレンジの列と、青の列に抵抗(10kΩ)をさす。*抵抗に向きはない

テストプログラム

10 ?ANA(2):WAIT10:CONT RUN

Nintendo Laboで「タッチ」と「IRひかる」をつなぎ、光らせて値がどう変わるか観察しよう。

10 IF ANA(2)<300 CONT 20 CLT 30 IF ANA(2)>250 CONT 40 T=TICK():?T 50 GOTO 10

IchigoJamで光っている長さを測るプログラム。「IRひかる」の光る長さを変えて実験!

「IRひかる」光る長さを0.00のものと、0.14前後のもの、2つ用意して、タッチやスティックで光るようにセット。
サーボとIchigoJam、茶色をGNDへ、赤を5Vへ、オレンジをOUT2へつなぐ。
IchigoJamのプログラムに光っている長さに応じて、サーボを動かすプログラムを追加。

41 IF T<15 PWM 2,200 42 IF T>=15 PWM 2,60

Joy-Conのスティックでサーボが動きます!

IchigoJam単体でコントロールできるサーボの数は4(OUT2、OUT3、OUT4、OUT5)
Nintendo Laboからの信号を受け取って、どの動かすかは自由自在!

光センサーで「画面ひかる」を検出したり、加速度センサーでJoy-Conの振動を検出したり、サーボでマーカーを振ってみたり、つなぎ方いろいろ、遊び方いろいろ。

赤外線LEDと赤外線受光モジュールを使って、家電の制御とつなぐことも!?
DMM 4K対応、プログラマブル学習リモコン by IchigoJam / Programmable IR receiver and sender

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