ラベル LPC1114FN28 の投稿を表示しています。 すべての投稿を表示
ラベル LPC1114FN28 の投稿を表示しています。 すべての投稿を表示

2016年10月26日水曜日

Raspberry Pi + LPC1114FN28

Raspberry Pi 2 Model BとLPC1114FN28をつないでみました。

存在感を放つLPC1114FN28 :-)

■追記 11月13日■

デスクトップで使っている場合には問題なかったのですが、ssh経由でターミナルからログインしてつかっているとシリアルターミナルが /dev/ttyAM0 が有効になってしまうためlpc21ispが動いてくれません。そのための手順を加筆しました。

■追記ここまで■


ユニバーサル基板だと面倒なのでElecrowに基板発注したんですが、いやー、スルーホール部品多いとめんどくさいです。ほんの1-2年前まで「表面実装ばかりになってこれからどうすれば良いのかorz」なんて言ってたのにね。

…今、これを書いていて、「ブレッドボードでいいじゃん」と気が付きましたがorz

でも、このぐらいの基板なら一発で動いちゃいますから、今時のCADとかPCB業者って凄いですね。ああ塩化第二鉄のニオイが懐かしい。インスタントレタリングとかレトラテープでパターンを書いたもんさ(遠い目

さて。

RPi + LPC1114でググってみるとRPiにつないだUSBシリアルなどから書き込みをしたり、shellでRESET/ISPを操作している例が多いのですが、最新版のlpc21ispにはgpioでRESET/ISPを制御する機能があるので、これを使わない手はありません。

LPC1114FN28のDP23とRPiのDP24, DP24とGPIO23, DP16とRxD, DP15とTxDを接続します。あとは電源VccとGnd、何もないと寂しいのでDP14に赤色LEDと抵抗(とりあえず1kΩ)をつなぎます。

書き込みには前述の通りlpc21ispを使います。ただ、apt-getで入れるとgpiorst / gpioispのコントロール機能が有効にならないのでgithubから落としてビルドします。

と言っても、
cd
git clone https://github.com/capiman/lpc21isp.git
cd lpc21isp
make
sudo cp lpc21isp /usr/local/bin
sudo chown root:root /usr/local/bin/lpc21isp
だけです。

なお、sshからログインしてターミナルで使っている場合には、以下の手順でシリアルコンソールを無効にする必要があります。

  1. /boot/cmdline.txtを開いて console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 を削除
  2. rebootし、再度sshでログインした後、
    sudo systemctl stop serial-getty@ttyAMA0.service
    で、コンソールを停止にする

2.については再起動するたびに実行する必要があります。serviceをdisableすれば毎回実行しなくて良いのですが、sshもVNCも接続できなくなってしまいました(キーボード/マウス/ディスプレイを接続して再度enableして復活)。シリアルコンソールを停止する手順は以上です。

GPIO23とGPIO24を出力として有効にします。
sudo echo 23 > /sys/class/gpio/export
sudo echo 24 > /sys/class/gpio/export
sudo echo out > /sys/class/gpio/gpio23/direction
sudo echo out > /sys/class/gpio/gpio24/direction
書き込むプログラムはmbedのオンラインコンパイラで用意します。mbed_blinkyで、

DigitalOut myled(dp14);

のところをLEDをつないだIOに変更します。targetをLPC1114FN28にしてコンパイルするとmbed_blinky_LPC1114.binが~Downloadsディレクトリ下に落ちます。

お待たせしました。

pi@raspberrypi:~/Downloads $ sudo lpc21isp -gpiorst24 -gpioisp23 -controlinv -bin mbed_blinky_LPC1114.bin /dev/ttyAMA0 115200 48000
であとは勝手にRESETとISPが操作されて
lpc21isp version 1.97
File mbed_blinky_LPC1114.bin:
loaded...
image size : 10540
Image size : 10540
Synchronizing (ESC to abort). OK
Read bootcode version: 1
7
Read part ID: LPC1114.../102, 32 kiB FLASH / 4 kiB SRAM (0x1A40902B)
Will start programming at Sector 1 if possible, and conclude with Sector 0 to ensure that checksum is written last.
Erasing sector 0 first, to invalidate checksum. OK
Sector 1: ...........................|.........................|.........................|.........................
Sector 2: ...........................|.........................|.........
Sector 0: ..........................|.........................|.........................|.........................
Download Finished... taking 2 seconds
Now launching the brand new code
pi@raspberrypi:~/Downloads $ 

これでめでたくLPC1114FN28のDP14につないだLEDが点滅します。

やったね♡

lpc21ispの作者およびgpiorst/gpioispの機能を提供してくださった方々に感謝申し上げます。ああ、今晩はぐっすり眠れそうだw

■追記 2017年1月10日■

Raspberry Pi 3Bだとlpc21isp(シリアルポート)が動作しないことがあります。OSのバージョンなどによって異なるようですが、上記の手順で動作しない場合には/boot/config.txtの末尾に以下の行を追加してみてください
dtoverlay=pi3-miniuart-bt

2016年7月10日日曜日

はい撤収

1年ぐらい前から、LPC1114FN28と200円の8x8マトリクスLEDを1枚の基板に乗っけて、I2Cで並列接続して大きなLEDマトリクスを安く簡単に作るような「部品」を売り出す…というのを進めていたんですが、量産しないと値段が下がらない、量産しても果たして売れるのかそんなもの…というところでウダウダしてました。世間様にお披露目したのは去年のmbed祭りだっけか。


ウダウダしているうちに出ちゃいました。

しかも、私はただのディスプレイで考えていましたが、ゲームにするなんて考えてもいませんでした。
IchigoDotS(イチゴドットS) 小型ワンキーゲーム機

価格も私のルートで量産した場合の原価とほぼ同じ。

アイディアも価格も完敗(笑)。

Eagleの設計データはここに公開します。ガーバーファイルも入れておきますので、Elecrowにzipそのまま送ればちゃんと基板になって出来上がってきます。

上のデモを動かしているプログラムはこちら。

さあ次行こう、次。次は「他人の褌」で相撲を取る(w

2016年1月8日金曜日

赤外線リモコンとLチカがあれば聴覚障害でもOK

私みたいに耳が悪いと何が不便って後ろで何が起こっているかわからないんですよね。「声をかける」というのが他人の注意を喚起する上で如何に有効なものであることか(詠嘆)。10mぐらい離れた人同士が会話しているのって、ほんと魔法みたいに見えます。

で、以前、赤外線リモコンのボタンを押すとLEDが点滅して誰かが呼んでいることを知らせてくれるデバイスを作りました。結構便利でした。

でもね、所詮はLED、仕事に夢中になっていると気づかないことも。

ということで、作りました。少し大きなリモコン付きのLチカを。


ビデオでは最大1wぐらいにおさえていますが、フル点灯30wの状態を直接見ると目が痛いです。

■材料■

プラットフォームはmbed、LPC1114FN28とLEDドライバと電源、それに赤外線受光器です。

以前、「普通の基板に表面実装パワーLEDを並べて何ワットぐらい点灯できるか?」を調べようとElecrowで起こした基板を引っ張りだしてきました。うーん、まだホームリフロー試行錯誤中だったので表面実装のハンダが汚いorz せっかく基板を作るのだからとファン駆動回路やPIR接続ピンなどインタフェースがてんこ盛りになっており、その1つとして「赤外線受光器インタフェース」も付いてます(実は基板見るまですっかり忘れてた)。よくある5v電源3ピンの赤外線受光器を挿すだけで使えます。なお、私が買ったものは5v電源を与えてもVoutが3vまでしか上がらないものだったので直結していますが製品や電源電圧によって異なります。買ってきたら出力電圧を確かめてもし3.3vを越えるようならば電源を3.3vにするか出力を抵抗で分圧してください。



手前の黒い直方体はDC/DCです。24vから3.3vまで落とすとさすがに通常の三端子レギュレータはかなり熱くなります。

LEDドライバはCL6807を3セット、電流検出用のシャント抵抗は0.1ΩなのでLED 7個ずつの各ストリングには1Aまで流せます。電源24vではVfの7倍にはちょっと足りないのですが、そこはマージン見越して動かしてます。なお、CL6807は秋月の「1000mA 可変定電流パワーLEDドライバーキット」にも使われています。このキット、我が家の洗面台の自動点灯LEDにも使っていますが、安定していて使いやすいです。ただし、マイコンから制御するためには多少の改造が必要です。CL6807はバラでも売ってますし、プリント基板を起こさなくてもSOT89-5用基板とSBD、シャント抵抗(0.1 - 1.0Ω)、4.7μFの積層セラミックコンデンサ、ユニバーサル基板があれば自作も可能です。なおメーカーの応用回路例には書いてないのですが、LEDへの出力の両端にパスコン(1μF)をつけると点灯が安定します。

なお基板の裏には放熱器を高品質グリースで貼り付けてありますが、これぞ焼け石に水。フルパワーにすると室温20度でも基板温度は50度を越えていきます。我ながら何をしたかったのかわからない基板です(笑)。

■ソフト■

AQ0802、IR Receiverなどのライブラリを使って、組み立てました。ループは1秒間に10回まわっていて、Lチカの基本周期となっています。リモコンの信号を受けると、「あと何回点滅させるか」という変数に値を代入します。その変数が偶数なら点灯、奇数なら消灯、という決まりにすることで、0.1秒ごとにペカペカ点滅します。これだと複数のLEDを逆相や追いかけるように点滅させるのがラクです。

2015年9月28日月曜日

32bit CPU搭載インバータ改良

iPhone6s plus、カメラの性能すげええ

前回はとりあえず20khzで発振して、ボリュームに応じてデューティー比を変えるだけで32bit CPU Cotrtex-M0をまったく活かしておりませんでした。

今回は、少し仕事をしてもらっています…とはいえ、8bitどころか4bitで十分なレベルなのですが。

■仕様■

出力電圧をボリュームで設定できるように。

■実装■

メインループでは設定電圧と現在の電圧を測定し、その差でパルス幅を設定します。設定電圧以上なら出力をオフにし、設定電圧より低ければその差に応じてパルス幅を決めます。差が大きければ大きいほどパルス幅を広くしてインダクタンスに貯める電力を増やします。

その他、100m秒ごとに電圧設定のためのボリュームを読みに行きます。

■ハード■

前回はMOSFETとSBDの耐圧が限界となって電圧を上げられませんでした。今回は、耐圧500vのMOSFETと1000vのダイオード、それに400vの電解コンデンサを使います。

ただ、一つ問題があって、高耐圧のMOSFETはゲートがオンになる電圧も高く、今回使った2SK3234の場合は約5v以上必要です。そのため3.3vのLPC1114では直接ドライブできないので、小さなMOSFETを一段追加しそれでゲートを駆動します。電源電圧も5v以上必要です。何かすごーい遠回りをしているような気もしますが、気にしないで作ります。

あとどのぐらいの出力かを示すLEDと、出力電圧を測定するための分圧抵抗などを追加しました。

なおMOSFETが1個余計に入ったので、出力の論理が反転しています。つまり、mbedから「1」を出力するとパワーMOSFETがoffになります。そのためにPWMへの出力では 1.0 - width としてデューティー比を反転させています。


■mbedのPWM■

当初はボリュームでPWM周波数を変更できるようにしていました。インダクタンスを使っているので、どのぐらいの周波数でパルスを出力するのが一番効率が良いのかをさぐるためです。

で、100m秒ごとにボリュームからanalog inで読み取った値をもとにpwm.periodの値をセットしたのですが…これを行うとPwmOutの値を0にしていても100mSごとに出力がon / offする、つまり約5hzの太いパルスが出てしまいます。

設定電圧を0にしていても約40vの電圧が出てMOSFETがヤケに熱いので、何だろうと思ったのですが…ともかく回路が壊れなくて何よりです。

もう一つ、LEDをPWMで駆動しているのですが、当初まったく点灯しませんでした。これは、PWMの周波数がデフォルトのまま(約20m秒=50hz)なのにそれよりも早い周期でPWMへの書き込みを実行していたためです。ledに書き込みをしているループは1m秒で1回回りますので、それより十分早い10khzを出力するよう変更したところ、無事点灯しました。

いやはや…。

■動かしてみて■

設定電圧を急速に上げるとLEDが明るく点灯し、電圧が上昇して設定電圧に近づくとすーっと暗くなっていきます。逆に急に下げてやるとLEDはしばらく消灯した後、設定電圧に近づくとすっと点灯します。だいたい狙い通りです。強烈なノイズ発生源の近くにあるのでanalog inの値はそうとうバラついているはずで、安定しなければ移動平均処理を加えようかと思っていたのですが、なしでも安定してます。

時間積分効果とでも言いましょうかw

なお、こういう制御(PD)の場合、設定電圧よりも少し低いところで安定します。今回はボリュームを使っているので気にならないですが、電圧を数値で設定する場合にはそのための補正が必要です。

昔、Skycamという製品のためにモーターぶんまわし系の制御をしていた時にはずいぶん苦労したものです…(遠い目

なお、現在、出力値と電圧差の関係は単純な比例ですが、より安定かつスムーズな制御を行うためには二次関数式で比例させることもできます。つまり電圧差が少ないときには少しだけパルスを出して、差が大きい時はドカッと出すわけです(何その小学生なみの表現)。その先にはPID制御などが…ってキリがないw

電源電圧5vと9vで試しましたが、どちらも200vまできっちり上がりました。一応設定限度を200vにしているんですが、波形を見る限りもうちょっと上げられそうです。消費電流は多いですねぇ…9v電源から100vまで上げた時で70mA前後です。冬の太陽だと手持ちの0.5w太陽電池では無理で、2-5wぐらいのセルでないと安定して動かすのは難しいでしょうねぇ。大きいと風の影響なども考えないといけないし…ああどんどん違う方向へ(笑)。

■ソース■

特に珍しいことはしていません。このソースはフリーで公開します。つまり、何にどう使ってもいいですが、責任は問いませんよライセンスです。


2015年9月12日土曜日

32bit CPU搭載インバータw

「マイナスは黒」と書いてあるのはインダクタが赤に届かなかったので

■追記1■

当初この記事では「ジュールシーフ」と表記していましたが、「電子工作部」で「これはジュールシーフではなくてチョッパ型昇圧インバータ」というご指摘をいただきました。ありがとうございます、訂正致しました。

あと、適当に転がっていた0.5wの太陽電池をつないでみたところ、0.2vから動作を開始し0.6vでフル作動の状態になり、この時の電流は約50mAでした。

また、MacのBluetoothキーボードで使用できなくなったマンガン電池では0.2vまでしっかり電池を絞り尽くしました。そういう意味ではジュールシーフと言えなくもw

■追記2■

もうちょっとマシな制御をして指定した電圧でぴたっと止まるようにした続編はこちらです。

■32bit発信器w■

また無駄遣いをしてしまいました。しかも32bit CPUは単に

#include "mbed.h"
AnalogIn vol(dp4);
PwmOut pwm(dp18);
int main() {
    pwm.period(1.0/20000.0);
 
    while(1) {
        pwm = vol;
        wait(0.1);
    }
}

って書いているだけ。要するに単なるデューティー比可変方形波発振回路、CPUのムダにも程があるw

LPC810の方が向いている(こっちも32bitだけど)規模なのですが、LPC810にはADCがないのでLPC1114FN28を使いました。

■昇圧回路1■

回路は「芸が無いにも限度というものが!」と怒られそうですが、電池の1.2vをPFMで3.3vに昇圧してLPC1114と黄色LEDとインバータ回路の電源に。

HOLTEK社 HT77xxA仕様書より引用

■昇圧回路2■

LPC1114で約20khzのPWMを出力して、チョッパ型インバータ回路を構成するMOSFET 2SK2232をスイッチングしています。L1のところにつながっている電源はVccと書いてありますが、実際には電池のプラス極です。逆流防止ダイオードはショットキーバリヤー1S4、パワーインダクタは68μHの表面実装ものにピンヘッダをハンダ付けしたもの、あとは出力用の電解コンデンサ50v22μF、分圧抵抗1kΩと直列の青色LEDです。ボリュームはアナログ入力につながり、PWMのデューティー比を調整しています。

これ書くのに1時間近くかかった…IC1が立派すぎる

PWMをoff(0%)にしてもほんのわずか青色LEDが点灯して電流が流れますが、これは電池の1.2vが素通りになっているためです。Vfが3v近い青色LEDでも1.2vで点灯しちゃうんですね。

前記の通り手持ちの部品の耐圧が最大40v(1S4)しかないので30vまでしか試していませんが、部品(MOSFET, ダイオード, C1)をもっと高耐圧のものにしてLEDとR3を外せば200vぐらいは余裕で出せます。

■LPC1114fn28への書き込み■

いつも説明を省略していますが、LPC1114fn28への書き込み方法はここ(プログラムをフラッシュに書き込む)が詳しいです。

私はmbedのブラウザIDEからダウンロードしたbinをlpc21ispを使ってLPC1114FN28に送っています。

まずターミナルで ls /dev/tty.usb* を実行してUSBシリアルのドライバ名を表示します。私のところでは /dev/tty.usbmodem24131 でした。
USBシリアルのTXDをdp15, RXDをdp16に接続し、あと3.3vとVcc、GNDとGNDを接続します。なお、USBシリアルによってはTXDではなくTXと表記されている場合もあるのでご注意を。で、mbedでのコンパイルが終わるとバイナリがダウンロードされます。そうしたらLPC1114FN28のdp24をGNDに接続し、dp23をちょいとGNDに接触させて離し、dp24も離します。で、ターミナルで以下のコマンドを実行します。なお、このプログラムでは問題ないですが、dp23/24をGPIO特にDigitalOutやPwmOutとして使っている場合、そのままGNDに接続するとチップを破損します。なので、330-1kΩぐらいの抵抗を通じてGNDに接続すると安全です。
lpc21isp -bin <mbedから落ちた.binファイル> /dev/tty.usbmodem24131  115200 48000
メッセージとSector 1:のあとに「.」がととととと…と表示され、書き込みが行われます。もし表示が「Synchronizing (ESC to abort)..」の先に進まないようなら、もう一度dp23とdp24をGndに落としてみてください。
Now launching the brand new code
lpc21isp version 1.97
File Chopper_LPC1114.bin:
loaded...
image size : 11492
Image size : 11492
Synchronizing (ESC to abort)....... OK
Read bootcode version: 1
7
Read part ID: LPC1114.../102, 32 kiB FLASH / 4 kiB SRAM (0x1A40902B)
Will start programming at Sector 1 if possible, and conclude with Sector 0 to ensure that checksum is written last.
Erasing sector 0 first, to invalidate checksum. OK
Sector 1: ...........................|.........................|.........................|.........................
Sector 2: ...........................|.........................|.........................|.........
Sector 0: ..........................|.........................|.........................|.........................
Download Finished... taking 8 seconds

2015年6月6日土曜日

電子工作は目に悪い。

ぱぅわぁああ(TOP GEAR的に)

ただの両面基板でどのぐらいの発熱を受け止められるかと思って、0.8mmのガラスエポキシ基板をElecrowにオーダーして1wクラスの白色LEDを7直列×2並列に乗せ、CL6807でドライブしてみました。

実際はベタアース

これ10枚が約2000円…恐ろしい

ホットプレートリフローだと温度ムラが出てしまい、位置を調整しようとしたら手が滑って右バンクのLEDがズレちゃいました。それを手ハンダで直したのですが、ハンダごてをハイパワーモード(70W)にしてもなかなかハンダが溶けないレベル。良い感じで熱は逃げてますw

この後、設計ミスが発覚してジャンパ飛びまくりorz

で。

結果として自然空冷だと100mA(片側、以下同)ぐらいで中心温度35度/チップ表面60度でした。350mAだと裏側に放熱器、横にファンを設置しても基板中央で40度/チップ表面70度。

一番上の写真はフルパワー稼働で約14wで点灯してます。ファンもLEDも全開運転なのでPWMの意味がないw 

なるべく直視しないようにしていますが、ちらっと見ただけでもしばらく14個の暗点が消えません。

とても目に悪いです。

そして残った10枚が例によって余っているわけですが…東銀座のmbed祭りに出展しますので、もしお声をかけてくだされば差し上げます。ジャンパ要りますがorz

他にも「1本か2本ジャンパ飛ばせば使えるLPC1114でLEDを駆動する基板」が合計30枚ほどありますので、そっちもよろしければw

2015年5月7日木曜日

Elecrow発注第二弾:洗面所用LEDランプドライブ基板

長穴の要らないDC Jackが欲しい(右上/下にある3つのでかい穴)

「それってPIR一個でいいんじゃないの?」という声を意識の外に押しやって開発した、洗面室所に入るとライトがフワッと自動点灯し、誰も居ないとすーーーっと消えるLED照明を基板にしました(現状では巨大放熱器によりファンレスで運用しておりますが)。前回よりも「I/Oをいろいろ付けたい、という欲求は必ず出てくる」という反省を元に、当面使う予定のないI2cなども並べてます。右側に横一列にGPIOを並べて、お友達のO野さんから大量にいただいたLEDラインをそのまま差せるようにしています。白、青、緑、黄色、赤…などのLEDが並んでいて、ステータス表示に便利。

発注から到着までは:

4/27 発注、DHL便を指定
5/05 発送
5/07 受取

という感じ。約10日。出荷までの日数は前回より2日遅かったけど、発送からは圧倒的に早いですね(当たり前だけど)。費用は前回は2,202円、基板はほぼ同じ仕様ですが円安とDHLオプションで3,610円になりました。ファミレスでビールでも飲めばこのぐらいは軽く越えちゃうので、「成田届いてるのにまだかよ…」とイライラするよりはマシかもしれません(前回は日本に着いてから7日かかりましたw)。

あと、前回はエアキャップ(プチプチ)で1.5層ほどくるんで封筒に入って届きましたが、今回はDHLを使ったせいかどうかわからないけど、なんと箱入りでした。それも基板の周囲にはしっかりエアキャップが入っていて、空港などで多少ぶん投げられても大丈夫なレベルw 以下開梱図です。





2015年3月7日土曜日

仕事に役立つ電子工作w



私は耳が遠いのですが、一日中補聴器をつけていると汗疹ができたりして具合が悪いので基本的に仕事場では外しています。

しかし、それではミーティングの招集に気づかなかったりで何かと不便。いちいちチャットで教えてもらうのも何だかなぁだし。

というわけで、呼び出しデバイスを作りました。

LEDと電池とスイッチでいいじゃん、とも思ったのですが、無駄な努力こそ電子工作。

第一号機は以前、「無駄に豪華な自転車用ストップランプ」の流用で、「叩く→点灯」というシンプルな装置。加速度センサADXL345で装置を叩いた時の振動を検出し、MSP430G2553でFFTかけてノイズなどの影響を排除して「叩かれたかどうか」を判断してLEDを点灯するのですが…今ひとつ反応が鈍いしLEDまで電線ひっぱるのが面倒くさい。

だったらリモコンにすりゃあいいんじゃね?とできたのが2号機。上の写真です。赤外線リモコン受光器とLPC1114FN28を使って、そこらに転がっているリモコンからの信号が来たらLEDを激しく点滅させる方式としましたw

こんなん1時間もあれば終わるわ、と始めたのですが…IR Remoteが何故かFRDM-KL46で正常に動作せず2時間ほど捕まってしまいました。安直に動かそうとFRDMを使ったことが裏目にorz

あきらめてLPC1114FN28を使うことにしたら、dp27がオープンコレクタだと忘れていて「LEDが点灯しない…いや電圧が出ていないじゃん?」と頭を抱えたこと以外は特に問題ありませんでした。

ああ無駄な工作は楽しいw

2014年1月26日日曜日

LPC1114FN28のアナログ入力で躓く



タイトルの通り「可変抵抗で入力電圧を変えるとその通りにPWMでLEDが明暗する」というのを作ろうとして、見事にハマりました。

結論からいうと、LPC1114FN28のAD変換器(AnalogIn)は、基準電圧0vと3.3vをつながないと正常に動かないよ、ということです。AnalogInが0-3.3vに変化するならば、pin8をGND、pin7を3.3vにつなぐ必要があります。

まぁ、分かってしまえばバカバカしいことなのですが…AnalogInのリファレンスを見ても、基準電圧を設定するためのAPIが見当たらなかったので、0-3.3vになっている、と思い込んでいました。PwmOutも正常に動いているし、AnalogInへの電圧も0-3.3vで変化しているし…あとはAnalogInしかありません。でもググってもそれらしい記事は見当たらない。これはもう、何か根本的なミスだろうと、何度目かの配線チェックをしていて「AVIN」「AGND」に気づいた、という展開でした。

あと、副産物ですが、PwmOut led(dp18);と定義して led = 0.0f; を出力してもLEDは消えません。うっすらと点灯しています。でも、led = 0; と整数をセットすると消えます。

また余談ですが、基板の上で光っているLEDは秋月で10個250円で買って来た「超高輝度赤色LED」です。20mAぐらいでもかなり明るいのですが、連続最大定格の60mAを流すと直視できません。安くなったもんだなぁ…。

2014年1月22日水曜日

Macで初mbed

秋月で買ってきてそのまま引き出しで眠っていたLPC1114FN28、今日ようやく陽の目を見ました。

ジャンパが足りなかったりブレッドボードが小さかったりでムダに苦労しましたが、一昨日FT232の基板にフラックスを塗っておき(秋月の半完成基板は昔からハンダの乗りが悪いような気がします)、昨日FT232を組み立てて、今日会社から戻ってからブレッドボードに組み立て、mbedにサインアップ、lpc21ispのビルド、lpc21ispでのインストール…で、LEDチカチカまでたどり着きましたw

マイコン界のHello,World、Lチカw

なお、秋月のUSBシリアル変換キットFT232RLを買ったのですが、J1のジャンパの説明が今ひとつピンと来なかったので、回路図をにらめっこしJ1のジャンパはGND表記の側、J2ジャンパを差して、最終的にはUSBをつないだ状態でテスターで電圧を測り「3V3」と「VIO」が3.3V前後になっていることを確認しました。最近のLSIは昔より大分丈夫になりましたが、電源間違えると死ぬ確率は飛躍的に高くなります。しっかり確認しましょう。

回路図で電池ってどうやって書いたっけ?w

なお、今回の試作にあたっては、こちらのサイトが大変参考になりました。ありがとうございます。

  [lang:ja] mbed LPC1114での遊び方

なお、補足ですが、Macでの lpc21isp のビルドは

  • LPC21ISPをダウンロード&解凍
  • ターミナルを起動し、解凍してできたLPC21ISPのディレクトリに移動
  • make -f Makefile clean all
  • chmod +x lpc21sp
  • sudo mv lpc21isp /usr/sbin 

これで lpc21ispが使えるようになります。

次にいよいよLPC1114FN28への書き込みですが、その前にシリアルポートの名称を調べる必要がありますが、それにはターミナルで ls /dev/cu.* と入力するとusbserialとか何とかと出てきます。あるいは /dev/cu. まで入力してTabキーを押すと残りが出てくるはずです。では書き込みましょう。

  • USBを接続する
  • リセットボタンとISPボタンを同時に押す。
  • リセットを先に離し、ISPボタンも離す。
  • mbedサイトから落としたバイナリのあるディレクトリへ移動
  • ターミナルで
  • lpc21isp -bin HelloLED_LPC1114.bin /dev/cu.usbserial-AH01KSGF 115200 48000
  • 転送中の表示の後、自動的に実行開始。

28pin、秋月…というとワンチップデジタル時計のMN5311を思い出してしまうんですが、今はこんな高機能なチップが100円かそこらで買えるなんて凄いですね。