このテキストは2024年の後半からツクレタというスペースで開催している電子工作ワークショップのリファレンス的な資料としてまとめているものです。純粋な電子工作の課題は後半にまとめてあります。IchigoJamという小さなコンピュータを使って、各種のセンサやモーターなど出力装置をコントロールできるようになることを目的としています。
BASICというシンプルな言語を使ってプログラミングの基礎も一緒に学べます。本書ではIchigoDake と IchigoDyhook を組み合わせた環境を想定していますが、その他、普通のIchigoJamなどでも応用できる内容になっているのではないかと思います。
まずは、基本から。
LEDを光らせてみましょう!以下のように「LED1
」と入力して、Enterキーを押します。
LED1
消す時は数字を0にして、Enterキー。
LED0
処理を待ってもらう時は WAIT
コマンドを使います。
LED1:WAIT60:LED0
LEDが1秒くらい光れば成功です! LEDを点滅させるプログラムを書いてみましょう。
10 LED1:WAIT60
20 LED0:WAIT60
30 GOTO10
書き終わったら RUN
と書いてEnterキー入力(またはF5キー)で実行します。止める時はESCキーを押してください。
プログラムを改造する時は LIST
、作ったプログラムを保存する時は SAVE
、読み込む時は
LOAD
コマンドを使います。
やってみよう
回路接続メモ:SG90、赤 - 5V、茶 - GND、黄 - OUT2
サーボモータが接続されたIchigoJamで以下のように打ってみましょう。
PWM2,100
「OK」と出て、サーボがギッと動いたら、大成功! 最初の数で接続先を指定(2-5)、次の数で角度を指定(50-200)できます。
キーボードの操作に合わせて動くプログラムを書いてみます。 数字(行番号)と命令をスペース(空白)で区切って入力します。
10 X = 125
20 CLS
30 K=INKEY()
40 IF K=28 THEN X=X-10
50 IF K=29 THEN X=X+10
60 PWM2, X
70 WAIT30
80 GOTO30
書き終わったら「 RUN
」(またはF5キー)で実行!
押されたキーによって、Xの値を加算、または減算して角度を変化させています。
やってみよう
電池ボックスの代わりに、IchigoJamの +(プラス) と -(マイナス) 端子にLED回路をつないでみましょう。点灯が確認できたら、プラス側をOUT1端子に接続します。
このままでは点灯しませんが、IchigoJam(写真はIchigoDake + IchigoDyhook)に以下のように打ち込んで、Enterキーを押してみてください。LEDが光れば成功です!
OUT1,1
LEDを消したい時は以下のように打ち込みます。
OUT1,0
フルカラーLEDでも試してみましょう。GND と IchigoJamの - (マイナス) ピンを接続したら、LEDの各端子の色をOUTの1,2,3につなぎます。写真では見づらいですが、GND(黒い線)の接続の間に1kΩ(茶黒赤金)の抵抗を挟んでいます。
TODO フルカラーLED接続回路図 https://lmlab.net/posts/2024/2024-08-24-electronics.html
以下のように入力してEnterキーを押すと赤く1秒間ほど点灯するはずです。
OUT1,1:WAIT60:OUT0
OUTのすぐ後ろの数字(1)を2,3と書き換えて、それぞれ緑、青に光れば成功です。
OUT2,1
OUT3,1
明るさによって抵抗値の変わるフォトレジスタの値を読み込んでみましょう。IN2とVCC,GND端子を使って以下のように回路を組みます。写真の抵抗は1KΩですが、10KΩの方が適しているようです(この辺りの計算が曖昧ですみません)。
ANAを使って値を読み取ることができます。以下は一秒ごとに表示する例です。
10 V=ANA(2)
20 ?V
30 WAIT60
40 GOTO10
RUN
センサ部分を指で押さえると値が小さくなり、スマホのライトなどをあてると大きくなることが確認できればOKです。実は、色んな種類のセンサーが売られていて、それぞれ特性は異なりますが同じように使うことができます。
照度センサー(フォトトランジスター) 560nm NJL7502L
照度センサー(フォトトランジスター) 550nm NJL7302L-F5
急にちょっと回路が複雑になりますが、モータードライバと呼ばれるチップを組み合わせることでDCモーターの制御も可能です。以下の写真はTB6612というドライバの接続例です。最大2つのモーターを制御することができますが、ここでは1つだけ接続しています。下段のBO1,B02にモータ、GND,VMに外部電源(単三電池x2)、上段のVCC,GNDをそれぞれIchogoJamの+と-に、BIN1,BIN2,PWMBをOUT1,2,3につなぎます。STBYをプルアップ(ここでは+に接続)することも忘れずに。
OUT1,0
OUT2,1
PWM3,2000
PWM3,300
OUT2,0
この他にDRV8815というボードも同じような配線で動作させることができました。TC78H653FTGという廉価なチップも試しましたが、こちらはうまく動作させることができませんでした。
目に見えない赤外線と、それを検知するセンサーを組み合わせた部品もあります。以下の写真はフォトリフレクター(反射型フォトセンサー) LBR-127HLDで回路を組んでみたものです。LED(透明な方)の抵抗は100Ω、リフレクタ(黒光りしてる方)は10KΩです。IchigoJam側のプログラムは上記の明るさセンサーのものをそのまま使ってください。白い紙など特定の(赤外線を反射しそうな)物体を置くとアナログ入力の値が大きくなって、黒い紙などの場合は値が小さいままになります。これを使って白いラインを検出しながら進むロボットカーなどを作ることができます。
プログラムは「明るさセンサー(フォトレジスタ)」と同じものが使えます。
回路図はこちらのサイトを参考にしました。 LEDとフォトトランジスタ共に極性(つなぐ向き)があるので注意してください。LEDは長い足が「+」、って覚えたのにトランジスタは逆で短い方を「+」にする必要があって、それに気づかずハマりました(^^;
似たような製品もあります。
前章までで一旦一通りのパーツを使ってみましたので、ここから実際に模型の自動車を走らせるための技を盛り込んでいきたいと思います。
IchigoDakeを車やロボットに載せる場合、RUN
コマンドを打つキーボードがない場合があります。そのような時でも、@ARUN
というコマンドを先頭行に書いておけば、電源投入時に自動実行されるようになります。
1 @ARUN
10 LED1:WAIT30:LED0
もうひとつ、昔ながらのやり方として、IchogoDake上のボタンを押しながら電源を入れるという方法もあります。
モーターとフォトリフレクタを組み合わせて、目の前が明るい時はモーターが回って、暗くなると止まる回路を組んでみましょう!
1 @ARUN
10 LED1:WAIT30:LED0
20 OUT1,0
30 OUT2,0
40 PWM3,500
50 V=ANA(2)
60 IF V<500 OUT1,0 ELSE OUT1,1
70 WAIT10
80 GOTO50
ここまでに紹介したIchigoJam電子工作のさらに入門編として実施しているワークショップの内容です。LEDやタクトスイッチ、可変抵抗といった基本的なパーツを使ってパズルのような問題にトライしてみましょう。本書には解答を記載していませんが、リンク先のサイトに実際に組んだ回路の写真を掲載していますので、難しい場合はそちらを参考にしながら進めてください。
まずはウォーミングアップ、LEDを光らせよう!
ボタンが押された時にLEDが光る回路を作ろう!
2つのボタンが「同時に」押されたらLEDが光る回路を作ろう!
2つのボタンの「どちらかが」押されたらLEDが光る回路を作ろう!
赤、青、黄3つのLEDが、それぞれに対応したボタンで光るようにしてみよう!
トグルスイッチでLEDをON/OFFできる回路を作ろう!
2個のトグルスイッチのどちらを動かしてもLEDをON/OFFできる回路を作ろう!
ボタンが押されたらモーターが回る回路を作ろう!
スイッチがONの時に充電、OFFになったらコンデンサからの放電でLEDが光る回路を組んでみましょう!
トランジスタと可変抵抗でLEDの明るさ調整をしてみよう!
フルカラーLEDを赤く光らせてみよう!
フルカラーLEDを緑色に光らせてみよう!
フルカラーLEDを青くに光らせてみよう!
押したボタンによってフルカラーLEDがそれぞれ違う色に光る回路を組んでみよう!
新しいIchigoDakeには、対応キーボードを切り替えるコマンドが入っています!
LRUN3
IchigoJamを持っていなくても、ウェブブラウザ上でプログラミングができます!
https://fukuno.jig.jp/app/IchigoJam/
まだ書きかけです!申し訳ありません。ここからワークショップや研修での利用を重ねて徐々にバージョンアップさせていきたいと考えています。
「CC BY 4.0」に則った再利用・再頒布が可能です。本書に関するお問い合わせ、誤字・脱字等のご指摘は同社問い合わせフォームにお寄せ頂ければ幸いです。著者のSNS等に直接メッセージ頂く形でも問題ありません。一部のコードはGitHubに公開してあります。公開できないものは一切なく、ただただ筆者の怠惰によるものですので、「ここの詳細が欲しい」といったご要望があれば是非お寄せください。
著者: ITO Yosei 伊藤陽生 伊藤製作所・株式会社ランバーミル代表。2003年頃からシステム開発に携わっています。Cから始まりJava、JavaScript、Objective-C、PHP、 Python、SQLなどを扱ってきました。現在は主にRubyを業務に用いています。Linuxサーバの構築だったり、ウェブサイトのデザインをしたり、これらの分野の研修講師も時々勤めています。技術の移り変わりの速いこの領域においては、それぞれの経験値そのものよりも、いかに新しい技術にうまくキャッチアップし、チームで共有し、身近な問題の解決に結びつけられるか、という、もう一段抽象的な技能こそが重要なのではないかと考えています。
ここまで目を通してくださりありがとうございます。趣味の延長のような形ではありますが、学校の体験授業などの提供の機会を頂きながら、このような形でこれまでの経験とノウハウを蓄積することができました。
とはいえ執筆には少なくない時間が必要です。当初はこのテキストをepubやPDFに変換し、オンライン書店(AmazonやApple Books)にて販売していましたが、たびたび大幅な改訂が必要になり、そのメンテナンスが追いついていない現状があります。今後、こうした不整合を避けるためウェブに一本化していく予定です(コピーガードなしのepubも配布しています)。もしこの本の情報が何らかの役に立った、という部分があれば、以下のリンクから応援購入を頂ければ幸いです。今後も継続してアップデートを続ける上で大変励みになります。
ご要望や誤字・誤りの指摘などは(こちらではなく)上記のお問い合わせフォームやSNS等から直接筆者にフィードバックを頂ければ幸いです。
https://buy.stripe.com/bIYbLF7jIdqzaNa146