まごころせいじつ堂

浜町庄金 研究開発  マイコンで遊んでばっかりで

Serial

シリアルで適当音出力

 Arduinoで音を出すにはポートに圧電ブザーなんかを接続してtoneライブラリを使うのだが、ただ音が出るだけでよければシリアルポートの出力が使用できる。

 こんだけ。実際Arduinoかどうかは関係ない。
 void setup() {
  Serial1.begin(9600);
  while(!Serial1); // for Leonardo
}
void loop() {
  Serial1.write("3333333333");
  delay(1000);
  for (int i=1;i<10 ;i++) Serial1.write(0x55);
  delay(1000);
}
  0x55を出力すると、01010101 というビット列が出力される(より正確には前後に1bitずつ0が追加される)。文字列"33333333"は、"3"が0x00110011なので0x55の時とくらべて÷2の高さの音がでる。



 例えばRx側でGPSやら赤外線やらを受け取ってTx側が余っているときに警告音を出したい場合はライブラリも不要で簡単に実現できるということです。

秋月の超小型USBシリアル変換モジュールとMacOSXでのはまり所

 秋月電子の超小型USBシリアル変換モジュールAE-FT234Xとstrawberry-linuxの7セグメント汎用ディスプレイを接続してみた。

超小型USBシリアル変換モジュール(秋月電子)
汎用ディスプレイモジュール(strawberry-linux)

 5V/GND/Tx/Rxだけと割りきった仕様で超小型。
2014AEFT234X1

こんなかんじ

 CB0パッドは設定変更が可能。
2014AEFT234X02

 パイロットランプの青色はやめよう。まぶしい。
2014AEFT234X04


 7セグ8桁の汎用モジュールとつなぐのは簡単。電流も100mA以内で問題ない。
2014AEFT234X


 FTDIのドライバは以下からダウンロードできる。
Virtual COM Port Drivers

・Windows7(64bit) OK
・MacOSX 10.9 (2.2.18-x86 64bit) OK

 MacOSX 10.10(Yosemite)でデバイスは認識するがシリアルポートが見えないという問題があった。

 以下を参考にした。
Yosemite(Mavericks)でFTDIが動かない件

 私の環境ではすでにAppleのFTDIドライバは殺してある。それでも動作しなかったのはYosemiteからドライバの認証が変わっているかららしい。念のためシステム環境設定の「セキュリティとプライバシー」を確認してみると、”ダウンロードしたアプリケーションの実行許可”のチェックボックスが以前設定した”すべてのアプリケーションを許可”が戻っている。30日以上経ったので戻したよとのメッセージが出た。
 ということであらためて設定しなおしてから再度ドライバをインストールし、以下を実行した。

cd /System/Library/Extensions
sudo chmod -R 755 FTDIUSBSerialDriver.kext
sudo kextload FTDIUSBSerialDriver.kext

 これでYosemiteでも動作した。

 ついでだが私はMacOSX上ではSerialToolsを使っているがAppStoreに対応したらしいので更新した。
SerialTools(Mac App Store)

Galileo用シリアル変換の工作

 前回、Galileo用のシリアルポート用ケーブルを作ったけど特殊なのでもっと汎用性のあるものを、と考えArduinoの通信などに使うUSBシリアル変換アダプタをRS232Cのレベルに変換する工作をした。使い勝手を考えてFRISKケースに入れた。

 USBシリアル変換アダプタはこういうものです→FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)
 レベル変換に使ったのは手持ちのADM3202。こちらのセットは必要なコンデンサやICソケットも一緒になっている→RS232CインターフェースIC(DIP)ADM3202AN(2個入)

 Galileoのシリアルポートは3.5mmのピンジャックで、先端がRxD、真ん中がTxD、根元がGND。なのでアダプタ側は先端がTxD、真ん中がRxD、根元がGNDになるようにしなければならない。

2014GalileoSerialschm

Intel Galileo回路図(PDF)

 こんな感じで作った。
GalileoSerial_2014-02-07 11_28_38
 ピンジャックには3.5mmステレオミニジャックDIP化キットを使っているがFRISKケースにぎりぎり収まらないのでハンダ付けした足をカットする必要がある。というか基板にハンダ付けするんじゃなかった。ユニバーサル基板は適当にカット。基板裏にハンダを盛るとやはりケースに収まらなくなるので、ICは浮かせてハンダ付けしてある。C5は電解コンデンサを使ってるが実際は0.1μFでもよい。
 RTSはオープン。CTSは一応GNDに落としている。

 USBシリアル変換アダプタは3.3Vでも5Vでも動作する。

 これでGalileoのブートメッセージを採取した。https://gist.github.com/houmei/8856634


 さてここからは失敗談。簡単な回路だと思いデータシートを見ながら適当に工作して接続したら、受信はできるが送信はできないという状態になった。Windows/TeraTerm接続とMacOSX/SerialTools接続で送信文字が見えたり化けたりする。エコーバックはおかしいがブートメッセージの表示はできるので送信のレベル変換がおかしいのでは?とおもいV+とV-を観測したらVccと同じレベルだった。見なおしてみるとチャージポンプ用のコンデンサ付けるのを忘れてた。ということで簡単な回路でもちゃんと自分で回路図描きましょう。
 
記事検索
プロフィール

hardyboy

カテゴリ別アーカイブ
月別アーカイブ
QRコード
QRコード
  • ライブドアブログ