ウィリアムのいたずらの開発日記

ウィリアムのいたずらが、コンピューター関係について、思ったことを好き勝手に書いているブログです。

Raspbery Piとmbedをシリアルでつなぎ、WindowsのTera termで確認する

2016-10-13 14:29:13 | Weblog
こんな需要はまったくない・・・かもしれないので、自分へのメモと
いうことで・・・

Raspbery Piのシリアル通信をテストしたい場合、USBを使って、Windowsにつなぎ、
COMポート経由でTeraTermで確認するということをすると思います。

ここでやりたいのは、その間に、中継サーバをおいて、

1.中継サーバーとRaspberry Piがシリアル通信する
2.中継サーバーが受け取ったRaspberry PiのデータをWindowsのTeraTermに流す
3.中継サーバーへWindowsのTeraTermからデータを投げて、それをRaspberry Piに流す

ということがしたいのです。そうすると、あとで中継サーバーでいろいろなプログラム
を組みことで、自動的にテストし、その結果をTeraTermで見れたりするので・・

つまり、こういうことがしたいわけです。


で、何を中継サーバーにするかですが、
・Raspberry Piが3.3Vなので、3.3V系で
・ご家庭でどこでもあるようなもの・・・

・・・となると、mbedのLPC1768ということになるわけです、
(ここで「いや、家庭にねーだろ!」という意見は無視します)


ということで、以下、
・Raspberry PiとLPC1768(mbed)をシリアル通信で結び
・LPC1768とWindowsをUARTで結んで、
・Raspberry piからはcuコマンドで
・WindowsはTeraTermで
送受信する(RPiで打ったものがTeraTermに表示され、TeraTermで打ったものがRPiに表示される)
を説明します。




■Raspberry Pi側であらかじめ行うこと
・cuコマンドが入ってなかったら、インストールする
 sudo apt-get install cu

・cuを使うのには、一般に/boot/cmdline.txtを直すらしい
ここ

Raspberry PIのGPIO上シリアルとArduinoの通信
http://qiita.com/ryugyoku/items/bf5fd10512c84a55d030

に書いてあるStep1,Step2は一応やった
(Step2は起動のたびに必要なのかしら?やってないけど・・)




■Windowsで必要なこと
・TeraTermが入ってなかったらいれる
 自分は入ってた

・デバイスドライバが必要なら入れる
 今行っているのはWindows7なのだが、7でもSPのいくつか、
 またWindows8では、mbedをUSBにさしても、comポートと
 して見えない(デバイスマネージャーで確認できる)
 この場合、ドライバーを入れる
 ドライバーは、mbedWinSerial_16466.exeをいれたけど、

https://developer.mbed.org/handbook/Windows-serial-configuration#1-download-the-mbed-windows-serial-port

から、取ってくるべきかも・・・
 Windows10では、うまくいくかどうかわからない。

・mbedのcomポートを確認する
 インストールが終わったあとで、mbedを指すと、USBが開くのはもちろんなんだけど、
 デバイスマネージャーで確認すると

 のようにmbedのcomポートができているので、com何番か控えておく
 (あとでteraTerm立ち上げで使う)




■mbedでの作業
 mbedでの作業は、配線とプログラミングになる。

●mbedでのプログラミング
・mbedの開発サイトへGo
 https://developer.mbed.org
・登録していなかったら、登録し、とにかくログイン
・ログインしたら、Compilerで開発環境を出す
・新しいプロジェクトを作って、そこのmain.cppに、こんなかんじでプログラミング
#include "mbed.h"

Serial MySerial1(USBTX,USBRX);
Serial MySerial2(p9,p10);

int main() {
   while(1) {
        char    c;
        
        if (MySerial1.readable())
        {
            c = MySerial1.getc();
            while(!MySerial2.writeable())
            {
                //  受信可能になるまで、ループ
            }
            MySerial2.putc(c);
        }

        if (MySerial2.readable())
        {
            c = MySerial2.getc();
            while(!MySerial1.writeable())
            {
                //  受信可能になるまで、ループ
            }
            MySerial1.putc(c);
        }
    }
}

できたら、保存、コンパイルすると、エラーがないとおもうので、
実行ファイルをダウンロードできるようになる。




●mbedの配線

ざっくり、こんなかんじ

抵抗は共に1KΩ(プルアップ抵抗)

Raspberry Pi側のTXをプルアップしてmbed側のRXへ
mbed側のTXをプルアップしてRaspberri Pi側のRXへ
GNDはそのままつないでいる

WindowsとはUSBをつなぐことで、接続している。

具体的には、ブレッドボード上に作っているんだけど、
・ブレッドボードは縦に1~30、よこにa~jまでの番号が振られ、その外側に、+、-があるけど
・ブレッドボードの30番(一番はし)にmbedをおく
  30のbにVout,30のiにGNDが来ている
・30のjを-(はじの2本の青い線のほう)のどこかにつなぐ(GND)
・30のaを+(はじの2本の赤い線のほう)のどこかにつなぐ(VOUT)
・抵抗の一方の足を+のどこか、他方を5のaにおいている(プルアップ抵抗)
・抵抗の一方の足を+のどこか、他方を4のaにおいている(プルアップ抵抗)
・Raspberry PiのGNDを-のどこかにつないでいる
・Raspberry PiのTXを5のBにつないでいる
・Raspberry PiのRXを4のBにつないでいる
・5のCを21のjにつないでいる(P10)
・4のCを22のjにつないでいる(P9)
※どこかとは、どこでもよいということ
※(数字)の(あるふぁべっと)は、ブレッドボードの穴の位置を示している




■実行!

●Windowsですること
・mbedをWindowsPCにつなぐ

・mbedのフォルダが開いたら「mbedでのプログラミング」でダウンロードした
 プログラムをmbedのフォルダにコピー

・TeraTermを立ち上げる
 シリアルのComポートの番号は「Windowsで必要なこと」で確認したCOMポート番号

●Raspberry Piですること
・Raspberry Piのcuのたちあげ
 Raspberry Piでログインしたあと、ターミナルを立ち上げる

・権限を付与(しないと、cuが「パーミッションでないど」になる)
 sudo chmod 666 /dev/ttyAMA0

・cu実行
 sudo cu -s 9600 -l /dev/ttyAMA0

 このあと、connectedと表示される。


 ここで、PCのTeraTermから文字を打つとRaspberry Pi上に、
 Raspberry Pi上から文字を打つとTeraTermに
 文字が表示されるようになる。
   

【直接関係無いけど、自分へのメモ】

ICの足番号の数え方
http://www.iccraft.com/parts/ic/package.html

ジャンル:
ウェブログ
この記事についてブログを書く
この記事をはてなブックマークに追加
« 「倒産した会社の社長って、... | トップ | IPAのセキュリティ啓発映像を... »
最近の画像もっと見る

あわせて読む