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年10月25日火曜日

ESP+Tilt & Panステージ+放射温度計


新しいESP基板が出来たので、以前作ったものを作り直してみました。上の写真は新しいモジュール、下が旧バージョンです。

旧バージョン
旧バージョンはTilt & Panステージの上にセンサーだけ載せていたのでESPとの間に配線が10本走っていたのですが、今度はESP基板もステージ上に置けるので外部からの配線は電池ボックスからの電源2本だけです。

なお、このPan&TiltはElecrowで$12で売ってます。同じお店の$11のものとどこが違うのかわかりません(笑)。

サーボの線をもっと短くすればよかった…

ステージとESP+センサーの固定、前作ではテグスでグラグラと縛っていただけでしたが、今度は3Mの「ツマミを引っ張ると簡単に剥がれる両面テープ」を使いました。コンクリートの壁などにも貼れる強力なテープですが、基板の下からハミ出ている白いベロを引っ張ると簡単に剥がれます。

iOSアプリは前回と同じ。iOSテザリングでESPと接続しています。データ転送はUDPです。


センサーはMXL90614、赤外線放射温度センサーです。今回使った基板はVin, Gnd, SCL, SDAの順で並んでいてESP基板の並びと合わないので、隣接するIO12とIO13から digitalWrite(12, Low); digitalWrite(13, HIGH); で電源供給しています。サーボはIO15, IO16です。



■CM■

ここで使用した新ESP-WROOM-02基板Board4、スイッチサイエンス社から発売中です。

なお、Board2とBoard3はお星様になりました(違

2016年10月23日日曜日

地味に便利な電池ボックス(改)


スイッチ付き電池ボックスにメスのジャンパワイヤを取り付けました。

地味に便利っす。

オスの方がブレッドボードに直接させて更に手軽なんですが、安全性を考えてメスにしました。まぁ電池ボックスにスイッチついてますけども…予防安全的なアレで。

ついでに、もう一つ。


こっちも電池ボックスのミニ改造、中間点からもう一本線を引っ張り出しました。アンプなどで正負電源が必要なときに便利に使えます。

2016年10月22日土曜日

経筋+関節技(?)

膝と肘がとても痛いです。

まぁ原因は肥満と自転車なんすけど。診断名は変形性膝関節症。肘は診てもらってないので不明ですが、いわゆるテニス肘です。テニスしてないけど。

膝は通院して10回以上ヒアルロン酸を注射してもらい、左側に関してはかなり効果があったと思うんですが、右がダメです。

ということで、昔、巨デブだったころ、when I was fat, so much fatter than todayなあの頃に痛めた膝から回復した「経筋療法」を再開することにしました。トレーニング雑誌(そんなのを読んでいた時代もあった)に出ていて、これは効きそうだ!と思い専門書を買って試してみたら見事に効いたとです。

ちなみに経筋というのは東洋医学でおなじみの経絡のオリジナル・バージョンらしいです。経絡が全身的な体調をコントロールするのに対して、経筋は骨や筋肉に作用する、とされています。理系というか科学信者のワタクシがそんなことを言ってて良いのか?という気もしますが、有効なプラセボは無効な痛み止めより科学的なのだ(笑)。

…なんで、今回もすぐにそれをやらなかったのか?といえば、夏だったからです。素人にできる経筋療法はキネシオテープを使うのですが…これが見事に汗疹になるからです。

数年ぶりに引っ張り出したら糊が変色してたw

テキストを引っ張り出して、念のためツボなどの位置を確認。というか、足の指から甲までをキネシオ貼るだけなんですけどね。キネシオの貼り方については、Webなどで検索してください。

切れ目を入れてペタペタ貼るだけ。

肘に関しては、やはり自転車乗り始めた頃に痛めてしまい、いろいろ病院にも通ったのですがどうにもならず。整体とか何万円使ったかわからないです。でも、ある日行きつけのトレーニンググッズの店(そんなところに通っていた時代もあった)で、レジのボクサーのおにいさんから「それ、手首をサポーターで締めると効きますよ。自分らも拳が緩んじゃうと肘が痛くなったりするので、拳立て(拳で腕立て伏せ)やサポーターで拳を絞めるんです」と。で、おすすめされたサポーターをしてみたら、一発で直ってしまったという。たしか1000円ぐらいでした、サポータ。


効いてくれると良いなぁ。

■追記12月18日■

肘は、サポータがよく効いて、痛くてものを落とす、ということはなくなりました。

膝への経筋はあまり効きませんでした。右膝にはヒアルロン酸も効かなかったですし、前回とは原因が違うのかもしれません。以前左膝には本当に劇的に効いたのですが…。

ただその後「ためしてガッテン」で紹介されていた膝の皿のマッサージを試したところ、ロキソニンと同じぐらいの効果はありました。まだ30分以上歩くと翌日痛みが出るのですが、それが翌々日に持ち越されることはなくなりました。

皿が動きやすくなる程度に軽く膝をのばして(伸ばしすぎても曲げすぎても皿は動かなくなります)、ガッテンでは皿を各方向に5秒間ずつ押してズラす、という方法なのですが、いろいろ試してみて、左右方向には1秒周期で軽く動かす、下方向へは5秒間周期で痛くならない程度に押し下げる、(私の場合)上へは動かないので皿の下の凹んだところを念入りにマッサージする…これを寝る前に片膝3分程度やっています。


2016年10月10日月曜日

EAGLEで表面実装部品に太い線

今、モータドライバの基板を設計しています。最近のチップは表面実装でピン間隔20milしかないのに1A流せたりして凄いです。

が。プリント基板設計には「1A=1mm幅」という原則があります。EAGLE上で正直に「5VラインとGNDは40mil」なんてクラスを定義すると、自動配線は見事に無視してくれます。テーパーでつないでくれる機能とかあると良いんだけどねぇ。

試行錯誤の末、安易な方法を見つけたので、メモしておきます。

  1. ピンから10-12mil程度のラインを手動で引っ張り出す。隣と干渉しないように、適当に扇形に引っ張り出す。wire bend style 2などそのまま斜線を引けるようにするのがコツ。
  2. auto

こんだけです。

なお、「電源じゃなくてただのVcc直結プルアップなのに、クラスが同じなので極太配線が通ってしまって生きているのが辛い」という場合もこの手が使えますが、ゼロΩ抵抗を通して抵抗の前後を別クラスにしてしまうという方法も思い付きました。

さすがにそれはダメだろうと思って却下しましたが(笑)。

2016年10月8日土曜日

単純強力なヘッドホンアンプを作る


アンプ作るのも久しぶりです。DACの出力をD級アンプにつないでヘッドホンで聞く、なんてのはよくやっていますが、「アナログ入力▶増幅▶アナログ出力」という純アナログな装置としてのアンプを作るのはおそらく中学生以来。技術家庭の授業でプリント基板をエッチングしICなどをはんだ付けしてアンプを作ったですよ。ああ、その時だけスターだった私w

私は耳が遠いので居間でアニメなどを嗜む際にはヘッドホンを使っています。ソニーの赤外線ヘッドホンアダプタを使っていたのですが、落としたら片チャンネルから音がでないよパッキュラマー。でも、今は単体の赤外線アダプタって売ってないし、FMは安くて音質のいい受信機が見当たらず、Bluetoothは送信側も必要なのでコスト高い…ということで、もうワイヤ接続することに。が、ヘッドホンをつないでしまうとスピーカーから音が出なくなり、ヨメ(実在)と一緒に見られなくなってしまう。

…というわけで、ヘッドホンアンプを作るのです。

■構成、回路など■

ポタアンなどに使われている高音質オペアンプも試してみたいのですが、私の聴力だと音量不足になる懸念があったので、今回は実用性を優先して手持ちのLM4880を使います。2ch 250mW 8pin DIP。

当初は仕様書の推奨回路そのままで作ろうと思っていたのですが、「そういえばこのチップの評価ってどうなんだろう?」と思い、「LM4880 いい音」でググってみたら、下記のページを発見しました。

正負電源にして出入口のコンデンサを無くした回路で、とてもシンプルです。取扱を簡単にするためにはいろいろ細工が必要ですが、それは後にしてとにかく作ってみます。

マンガンを使い捨てにするのももったいないので、エネループ単4☓2☓2本で行きます。当初、2本入り電池ボックスを2つ使おうと思ったのですが、手持ちがなかったので4本のボックスを使い、中間からGNDを引っ張り出しました。

■調整■

最初入力/帰還抵抗ともに20kΩで試したのですが、私の聴力ではボリューム最大+114dB/mWのヘッドホンでもやや不足気味でした。入力抵抗を10kΩに変えてみたところ、だいたいボリューム中央付近でちょうどよく聞こえるようになりました。

音質は、今日は耳鳴りがひどくて音質評価以前なのですが…とりあえず赤外線ワイヤレスと比べて特に良くも悪くもないので、テレビを見るには十分かなと思います。低音はちょっとボンつきますが、ベースの音も伸びていて良い感じです。会話を聞くにはちょっと邪魔な特性ですけども。

さすがにジャンパワイヤのまま使うわけにはいかないのでユニバーサル基板に組み込まなければ。

そのうちNutubeをプリアンプとして使いたいです。12vぐらいで動かして、正負電源を用意して…結構面倒だなぁ。

たぶん、今頃世の中で100人ぐらいのヒトがこれを使った回路を設計していると思うので、手頃なキットや基板が出てくるのを待っているんですけどもww

nutube


2016年10月6日木曜日

ESP-WROOM-02でI2S DACを動か…せない

I2S WebStreamingのために買ったES9023ボードですが、今のところまだ成功しておりません。

せっかく(というほどの値段ではなかったですが)ES9023のDACを買ったのに使わないのはもったいないなぁと思いつつオクラにしてました。

が、こんなのを見つけました。ヒャッハー!

ともかく、esp-open-rtosごと落とします。なお、open-rtosのビルドについてはこの手順でどぞ。macの場合、case sensitive volumeなどが必要なのでちょっと一手間必要です。

ESPのFlashに入るような手頃なサイズの音源がなかったので、GarageBandとiTunesを使ってWAV作りました。もしかしてできるかな?と思ってググったら出てくるからインターネッツはすばらしい。ありがとうございます。

なお、iTunesの仕様が変わってしまって、記事の通り「曲」を右クリックをしてもWAVファイル作成のメニューは出てきません。ファイルメニューから、変換>WAVバージョンを作成 で作れます。

かくして、ピアノの鍵盤を3回押しただけのsample.wavが出来上がりましたw examples/i2s-audio/の下に files ディレクトリを作り、その中に入れます。

で、ビルド…しようと思ったら、久しぶりすぎてrtos sdkの想定しているesptool.pyとパラメータが異なりエラー。

ということでesptoolをアップデート
$pip install -I esptool
で、今度こそビルド&インストール!
make flash -j4 -C examples/i2s_audio ESPPORT=/dev/tty.usbserial-DN01J0KN 
通った! で、ES9023をつなぐまえにwktkしながらオシロをつないでみました。出力はGPIO2 = LRCK, GPIO03 = DATA, GPIO15 = BCLKとのこと。

結果。

GPIO2にクロックみたいなものは出ているのですが、不規則。DATAとBCLKは出てませんでした。

…はい、また失敗です。うーん。