The Loud Objects Noise Toy (3)

実はやりたいことがあってDACに関していろいろ調べててたら
Chan氏のページでAVRの出力ピンで直接スピーカーをドライブしてる作例がありました。
ありゃー。

まだブレッドボードからバラしてないのでさっそくこっちでも試してみました。
これはSP2コだけど、ステレオで鳴らさなければ1コでもいいと思う。
(サンプルではステレオネタは1コしかなかったような)
loudobjects SP Direct Drive

実際の音はこんなかんじ。
これは直径21mmのちっさいスピーカー(16Ω 0.25W)
圧電スピーカーでもいけるけどすごいピーキーな音になりました(低音無し)

loudobject_sp_direct_drive from recotana on Vimeo.

Share on Facebook

The Loud Objects Noise Toy (2)

昨日の続き

AVRに限らずこの手のマイコン扱うにはどうしても避けて通れない開発環境の構築。
Winなら特に悩む必要なくデフォの環境を選ぶべきですが、
普段からMacを使ってる人にとってはやっぱりMac上で構築したいもんですよね。

ArduinoですとMac上で走るIDEを使えば何の問題もなくビルド&書き込みできますが
Loud Objects Noise Toyのように素のAVRを使うとなるとそうはいかず
MacですとEcripseかXcode(NetBeansはわからず)になっちゃいそ

Ecripseも恐ろしく高機能でいいんですが
普段iPhoneやってるせいもあってやっぱりXcode
これでXCodeでAVRのビルド->書き込み(加えてヒューズ書き込みも)がさくっとできるようなテンプレを作っています。
(でも今となってはもっといいテンプレがあるよーな気がする。。)

その前にAVR用のツールチェイン CrossPackをインストールしておいて
http://www.obdev.at/products/crosspack/index.html

AVR Xcode Templete

これをXcodeの指定フォルダへコピーするとAVRのプロジェクトが作られるようになります。

それでもmakefileへAVRの設定などちょっぴり書くことはあるのですが

Loud Objects Noise Toy用に
チッップ ATTINY85
ライター AVRISPmkII
を使用するという前提のXcodeプロジェクトを置いておきました
http://recotana.com/files/loudobjects_xcode.zip

main.c にコードを入力するのですが
Loud Objects Noise Toyにあるサンプルコード全コピペでOKなはず
(ワーニングは出たら、引数の無い関数にvoidを入れればOK)

買ったばかりのAVRはそのままでは内蔵クロック4MHzと半分になってしまいまので、
ビルド前に最初に”Flush Fuse”してmakefileのAVRヒューズ設定(内蔵8MHz)を反映させてください。

あとはBuild & Flush Programでいけるはずです。問題が無ければ。。

Share on Facebook

The Loud Objects Noise Toy(1)

えーと、更新っていつ以来だっけか、、
ARMのアレも絶賛ほったらかし。。

先日Twitterでこのタイトルのプロジェクト知りました。

The Loud Objects Noise Toy

AVRを使ったミニマルなおもちゃ。
モジュール自体は Maker Shed (電源スイッチでか!) で売ってるけど
サイトみてみるとソースも出てるし
ソースと実装図?みても至極単純ぽいので回路起こしてみました。
(でもなるべく本家から買って・・!)

チップはソースみるとかけ算割り算してるので念のためATTINY85。
クロックは内蔵8MHz
スピーカーアンプへ直で接続するのはちょっとはばかれるので一応半固定抵抗挟んで
あとはパスコンとステレオジャック(3.5mm)とスイッチ2コ、単三×2ホルダー
ブレッドボードと配線材少々。
書込用のISP配線はSTK500などの別ボードでの書き込みだと省略してくだせ・
でもパラメータどんどん変えて遊ぶときは是非このようなISPで繋げたまま書き込み仕様で

loudobjects schematic?

IMG_0166

ハードはこんだけ。

ソフトは次の記事で

それにしても、TimerやPWM使わず単にウェイトでのBEEPだったり
懐かしのBEEP音で遊んでた昔を思い出しちゃいます。
ソースもシーケンシャルなコードだし、もしかしたら教材的な目的もあるのかな?
ブレッドボードでさくっと作れるし
ボタンでのインタラクティブ(ランダム要素で)な動作もあるので
おもちゃとしてもけっこう素で楽しめるかんじでした・

以下はmetroid.cのお試し

loudobjects noise toy (metroid ver2) from recotana on Vimeo.

Share on Facebook

Mac OSXでARM開発環境 (1)

ちょっとAVRじゃきつい案件2コきてるので
以前からARMも気になっていたのでまずは開発環境の構築にとりかかってます。

ARM Cortex-M3(STM32F103) + Olimex ARM-USB-OCD

まったく初めてなので、まずは確実に動くように(半)完成品で揃えてみました。

まずはARMボードの STBee
これめっちゃ安い!恐ろしく丁寧なドキュメント(win)もあるのでまずはこれを使ってみました。

JTAGには Olimex ARM-USB-OCD
FT232で自作もできるとのことですが、まずは完成品で確実に稼働できてからですね。
またFT232系だとMacでもドライバまわりが安心かなーということで。
またUSB経由で書込をおこなうDFUなどは使わず、最初からJTAGで書込しようと思ってます。

まずは
GCCのツールチェイン devkitARM
こちらの「SnowLeopardにSTM32(Cortex-M3)の開発環境を構築」を参考にして
devkitARMをおなじく /usr/local/ 以下へインストール(コピー)

こちらの SnowLeopardにSTM32(Cortex-M3)の開発環境を構築 を参考にさせていただきました。

解凍してできた devkitARM フォルダは
/usr/local/フォルダ内へ入れておきます。
パスは /usr/local/devkitARM へ通しておきます。

IDEは
Eclipse CDT
とりあえず32bit版をダウンロード

プラグイン関係は
日本語プラグイン
http://sourceforge.jp/projects/blancofw/wiki/nlpack.eclipse
こちらからNLpackja-eclipse-SDK-3.6M4-blancofw20091223.zipをダウンロード
eclipse/dropins/ 以下にnlpackフォルダを作り、その中に解凍されたeclipseフォルダを入れときました。

Zylin Embedded CDT

http://opensource.zylin.com/zylincdt

DSDPの
Target Managemant Terminal
作業対象からHeliosを選び
Mobile and Device Developmentにある Target Management Terminalをインストール

rxtx
作業対象に http://rxtx.qbang.org/eclipse/ を追加
最新版入れてもコネクションエラーとなってしまう。(現在も使えず 原因不明)

Hex Editor Plugin for Eclipse 2.3.x and 3.3.x

http://ehep.sourceforge.net/update

このへんは
ARM development on Macintosh (Japanese)

マイコン徹底入門 導入編
を参考にさせていただきました。

次はJTAG関係

Olimex ARM-USB-OCD
FTDIのサイトから VCPドライバ(現時点でver2.2.14)をダウンロード&インストール
これほぼデファクトなFTDIチップのドライバなので、Macでシリアルポート使ってたり、
Arduino使ってる場合はそもそもインストール済みのことがおおいです。
とりあえず最新版をインストールで。
ただ、こちらの openocd FTDI注意点
ARM development on Macintosh (Japanese)
にもあるように
JTAGのFT232はFTDI標準のドライバではなくlibftdiを使うので、FTDIドライバに先取りされない処置を施さないといけないようです。
こちらも参考にして
STM32 and the Olimex ARM-USB-OCD on a Mac

Olimex OpenOCD JTAG A 〜 を削除しください。
デスクトップなどへコピーして該当を削除、もとへ上書きすると、アクセス権のオーナーが自分になってしまうため

sudo vim /System/Library/Extensions/FTDIUSBSerialDriver.kext/Contents/Info.plist

などとして、直接書き換えたほうがいいです。
失敗するとロードできない旨のダイアログがでるので、ドライバを再インストールするといいと思います。
ターミナルで ls /dev すると

cu.usbserial-00004006B

みたいなに尻にBのだけがでてると思います。 (A側のは無効になってる)

次に
libftdi
http://www.intra2net.com/en/developer/libftdi/download.php
こちらより libftdi-0.18.tar.gz をダウンロード

cd /ibftdi-0.18/
./configure
make
sudo make install

デフォルトのインストール先は /usr/local/libです

つぎに
libusb

http://sourceforge.net/projects/libusb/files/libusb-1.0/

こちらより libusb-1.0.8.tar.bz2 (現時点の最新)をダウンロードし

cd libusb-1.0.8
./configure
make
sudo make install

libusb-compat

http://sourceforge.net/projects/libusb/files/libusb-compat-0.1/

libusb-compat-0.1.3.tar.bz2

cd libusb-compat-0.1.3
./configure LIBUSB_1_0_CFLAGS=-I/usr/local/include/libusb-1.0 LIBUSB_1_0_LIBS=”-L/usr/local/lib -lusb-1.0″ –prefix=/usr/local
make
sudo make install

ですが
/usr/local/include/libusb-1.0/libusb.hがコピーされずエラーになってしまいました。。
よくわからんので

cd /usr/local/include
sudo cp libusb-1.0/libusb.h libusb.h

とlibusb.hを一階層上にコピーしておきます。

次に
OpenOCD
これはリポジトリから最新版を落とします。
オモテでは0.4ですがgitから落とすと0.5でした。

http://sourceforge.net/projects/openocd/develop

にある
git clone git://openocd.git.sourceforge.net/gitroot/openocd/openocd
でおとしてください。

cd openocd
./bootstrap
./configure –enable-maintainer-mode –prefix=/usr/local –enable-ft2232_libftdi
make
sudo make install

これでエラー無しだとOK
は〜〜〜。。

openocdはMacPortsからインストールしたもの(0.4)はどうやっても動きませんでした、
なのでリポジトリから落とした最新版でかつlibftdiを使う形でやっとこ動作。
openocdをビルドする際もlibusb,libftdiのライブラリや、ヘッダなどが必要なので
どうせならこれも最新のをビルドし直してやってみました。

つづく

Share on Facebook

MacとiPhone/iPadをWiFiルーター無しで接続

先日東京へ行ったとき、ミュージシャンの友人から
WiFiルーターの無いハコでライブするとき、
MacとiPadなどをWiFiで通信するにゃどーやって?
(iOSCやTouchOSCなど特に問題)
という素朴な疑問を投げかけられたんですが、

フツーにWiFiルーター持ち歩くのが一番手っ取り早い方法ではあるけど
実は、OSXは標準で自身がルーターになる機能もってるのです。
ほとんど使うこともないし地味すぎてあまり知られてないだけなんですが
ネット環境のない場所でMacとiPhoneを通信させるもう一つの方法であります。
アドホックというのはちょっと語弊あるかな〜?

無線LAN無し
有線LAN無し
もちろんインターネットも無し
Macを無線LANルーターとして機能させる。
こんな想定で設定してみます。

これはたとえばのネットワーク設定
Ethernet未接続
AirMacも「入」だけどどこにも繋がっていない状態
あとは、ネットワークの設定はなにもしない。(!)

つぎに、

システム環境設定の「共有」を開きます。

「インターネット共有」を選択し(まだチェックはいれないで!)
共有する接続経路を「Ethernet」
つぎにAirMacオプションを押します。

『ネットワーク名」に適当な名前を入力
これはWiFiにおけるSSIDです。WiFiサーチするときに出てくる名前
ライブ中に他の人がアクセスしてきても困りますのでWEPの設定もしておきましょう。

ここまでできたら、先ほどすっとばした、「インターネット共有」にチェックを入れます。
インターネット共有開始確認のダイアログがでるので開始してください。
これでMacはWiFiルーターとして機能します。
もちろんEthernetにはなにもつないでいないのでインターネットなどには繋がりません。
WiFiのLANのみのネットワーク構成されます。

このとき、AirMac状態をメニューバーへ表示するようになっていたらこのような扇+↑になっているはずです。

つぎにiPhone/iPad側の設定。
こちらは通常どおりのWiFi設定だけでOKなのです。
設定/ネットワークを開くと、さきほどMac側で設定したSSIDが見えるはず。
これをタップすると・

WEPのパスワードをきいてくるので入力してください。

無事接続されたら、IPを確認してみましょう。
右端の◎>をタップすると

取得したIPアドレス。
ルーターのIPアドレス。これはホスト側(Mac)のIPということです。
じつは、先に設定したインターネット共有では独自にDHCPが効くようで
クライアント側のIP設定が不要になるナイスな機能でした。

iOSCだとhost設定で↑のルーターIPを入力したり

TouchOSCもHostへルーターIPを入力してください

もちろん制御するアプリに併せてポートなども。

ほいでこれ忘れがちですが
ライブなどが終わったらインターネット共有のチェックは外してくださいませー。

————

あ、ちょっと捕捉

これEthernet無し、他のWifiルーター未接続前提でしたが
他のWiFiルーターへの接続は同居できません。
もし他のWiFiルーターへ接続済みの場合
「共有する接続経路」がAirMacとなり
「相手のコンピューターが使用するポート」にAirMacがでてこなくなります。
要はiPhone/iPadからはこのMacが見えなくなります。
まーiPhone/iPadが他のWiFiルーターへ接続すればいいんですけどね・

あと、共有するデバイスがiPhone/iPadだけではなく、有線のデバイスがある場合(Arduino+Ethershieldとか)
上の「相手のコンピューターが使用するポート」のEthernetをチェックすればおそらく大丈夫かと思います。
DHCPから取得できないデバイスなら 10.0.2.2〜255 で
他の機器とIPがバッティングしないユニークIPを手動で設定しておいてください。

Share on Facebook