USBシリアル変換モジュールを使って送受信が可能になったのでボードの空きの部分(後になんらかの機能追加できるように空けていた)に丁度USBシリアル変換チップが余っていることもありUSBシリアル変換モジュールを追加することにした
![IMG_20151107_155812.jpg チップ](http://www.inoshita.jp/freo/files/medias/2015_11/20151108/IMG_20151107_155812.jpg)
安くUSBシリアル変換モジュールが作れないかなと思って購入していたパーツでようやく挑戦することになる(今なら超小型USBシリアル変換モジュールを使えば手間かからないかも)
![FT231x回路.png 回路図](http://www.inoshita.jp/freo/files/medias/2015_11/20151108/FT231x回路.png)
VSOP用のボードが28ピン用のためスペースがあるのでUSBコネクタを付ける(FT231は20ピン)
![IMG_20151107_173355.jpg USB](http://www.inoshita.jp/freo/files/medias/2015_11/20151108/IMG_20151107_173355.jpg)
![IMG_20151107_173415.jpg USB裏](http://www.inoshita.jp/freo/files/medias/2015_11/20151108/IMG_20151107_173415.jpg)
チップを載せるために半田メッキする
![IMG_20151107_173847.jpg 半田メッキ](http://www.inoshita.jp/freo/files/medias/2015_11/20151108/IMG_20151107_173847.jpg)
チップを置いて半田で温めて付けようとしたら・・・げげぇ幅が足りない・・・ボードをミスったか・・・ギリギリの線まで足を置いて後は半田を延ばして無理やり付けた(ピン1つがなかなか接触しなくて時間かかり壊れてなければよいが・・・)
![IMG_20151107_174410.jpg 半田付け](http://www.inoshita.jp/freo/files/medias/2015_11/20151108/IMG_20151107_174410.jpg)
必要な部分のみピンを付けてボードは完成
![IMG_20151107_180001.jpg ピン](http://www.inoshita.jp/freo/files/medias/2015_11/20151108/IMG_20151107_180001.jpg)
実態結線図を作成して
![FT231x結線.png 実態結線図](http://www.inoshita.jp/freo/files/medias/2015_11/20151108/FT231x結線.png)
※)都合良いパーツは無かったので、27Ω ⇒ 20Ω、47pF ⇒ 22pFを使用
ブレッドボードで確認
![IMG_20151107_214530.jpg ブレッドボード版](http://www.inoshita.jp/freo/files/medias/2015_11/20151108/IMG_20151107_214530.jpg)
ところがFT232RLでは正常だったのにFT231XSでは文字化けが発生してしまう
参考記事でOSCCALの調整で改善されるかもと調整を試みる
#include <BasicSerial3.h>
void setup( ) {
pinMode(3, OUTPUT);
}
void serOut(const char* str) {
while(*str) TxByte (*str++);
}
void loop() {
char buf[4];
for(uint8_t i = 0; i <= 128; i++) {
digitalWrite(3, HIGH);
itoa(i, buf, 10);
OSCCAL = i;
serOut("***** OSCCAL=");
serOut(buf);
serOut(" *****\r\n");
delay(1000);
digitalWrite(3, LOW);
delay(1000);
}
}
以下のように出たので91を設定してみたが改善せず
![開発ボードクロック調整.png クロック調整](http://www.inoshita.jp/freo/files/medias/2015_11/20151108/開発ボードクロック調整.png)
いろいろとプログラムを調整していたら長い文字列だと文字化けするようなので連続して送信する文字数の上限を設けてみたら解決
void serOut(const char* str) {
while (*str) TxByte(*str++);
}
以下のように上限を8文字にした
void serOut(const char* str) {
while(*str) for(int n = 0; *str && n < 8; n++) TxByte(*str++);
}
ブレッドボード上で送受信とも確認できたのでシールド基板上に取り付け完成
![IMG_20151108_124047.jpg 完成ボード](http://www.inoshita.jp/freo/files/medias/2015_11/20151108/IMG_20151108_124047.jpg)
追加として以下を設置
- 電源切り替えスイッチ(シールド上のUSBかArduinoの5Vピンかの切り替え)
- 電源LED(緑)
使い方は以下を参照
ArduinoISP 使い方・書き込みテスト(Arduino IDE で ATtiny 他の開発)
消えると困るので転用し編集させてもらった
①開発ボードをArduinoUNOにセット
②ArduinoUNOにArduinoISPスケッチを書き込む
IDEの[ファイル]→[スケッチ例]→[11.ArduinoIAP]→[ArduinoISP]をマイコンボードに書き込む
③書込み装置選択
IDEの[ツール]→[書込み装置]の[Arduino as ISP]を選択
④ボード選択
IDEの[ツール]→[ボード:]で[ATtiny13(bitDuino13)]を選択
IDEの[ツール]→[Clock:]と進み[1.2MHz(Internal)]を選択
⑤テストスケッチを入力
#define PIN 3
#define DTIME 500
void setup() {
pinMode(PIN, OUTPUT);
}
void loop() {
digitalWrite(PIN, HIGH);
delay(DTIME);
digitalWrite(PIN, LOW);
delay(DTIME);
}
⑥「マイコンボードに書き込む」ボタンをクリック
コンパイルと書き込みが行われLEDが約0.5秒間隔で点消灯する
⑦クロックを変更(工場出荷時は1.2MHz)
IDEの[ツール]→[Clock:]で[9.6MHz(Internal)]を選択
再度「マイコンボードに書き込む」ボタンをクリック
LEDが約4秒間隔で点消灯する(内蔵クロック1.2MHzで動作しているのにクロック9.6MHzとしてスケッチをコンパイルして書き込んだために起こる現象)
⑧ヒューズビット書き換え
IDEの[ツール]→[ブートローダの書き込み]を実行
ダミーのブートローダ書き込みによりヒューズビットの書き換えとプログラムの消去が行われる
もういちど,「マイコンボードに書き込む」ボタンをクリックしてスケッチをコンパイルして書き込むとLEDは約0.5秒間隔で点消灯する