ラベル UART の投稿を表示しています。 すべての投稿を表示
ラベル UART の投稿を表示しています。 すべての投稿を表示

2014年1月13日月曜日

Raspberry Pi Python でシリアル(UART)を動かしてみる


次はシリアル(UART)を Python で動作させてみます。
参考:http://blog.oscarliang.net/raspberry-pi-and-arduino-connected-serial-gpio/
http://tomono.eleho.net/2012/09/15/3140/


sudo apt-get install python-serial
でインストールする。

pythonUART.py

#! /usr/bin/python
import serial

uart = serial.serial('/dev/ttyAMA0', 9600, timeout=1)
uart.open()
uart.write("U")

print("UART test")

というファイルを作る。

sudo python pythonUART.py
で実行する。

結果をロジックアナライザで見てみました。
文字 U は数値で表すと 0x55(1010101)です






参考:http://www.raspberry-projects.com/pi/pi-operating-systems/raspbian/io-pins-raspbian/uart-pins

まず設定ファイルのバックアップを保存しておきます。
sudo cp /boot/cmdline.txt /boot/cmdline_backup.txt

ファイルを
sudo nano /boot/cmdline.txt

中身を以下のように書き換えてください。
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p6 rootfstype=ext4 elevator=deadline rootwait



[ctr] + [x] でexit 保存で [y] ファイル名はそのままなので [enter]


sudo nano /etc/inittab

を以下の部分に#を付けてコメントアウトする

#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

2013年9月1日日曜日

MCU Gear のプログラム:その3 LPC1114FN28 編 UART ( シリアル通信 でPCに文字とdouble型データを送る)

MCU Gear ® を使ったプログラムの説明などを書いています

LPC1114FN28をUART(シリアル通信)で文字列とdouble型のデータをモニタリングしてみましょう。

動作確認用のサンプルプログラムは http://www.mcugear.com/ にあります。

LPC1114FN28のUART to USB(USB シリアル通信)を使ってPCからLPC1114FN28の状態をのぞいてみようと思います。状態が見えると何かと便利です。

MCUGearを通してモジュールのピンからもUARTは使えますが、プログラムを書き込む際に使用しているCOMポートがあるので、それをそのまま利用してみようと思います。

LPC1114FN28でモニタリングするのは、文字列、データ(double型、int型)の関数を用意しました。特にC言語の標準ライブラリはインクルードせずに使える、コンパクトに仕上がっていると思います。



準備するもの

・Tera Term 日本語版
   http://sourceforge.jp/projects/ttssh2/


・今回はMCU Gearは必須ではないですが、あるとそのままつながるので配線が楽です。


・LPC1114FN28が必要です。


・USB-UART のケーブル(LPC1114FN28にプログラムを書き込んでいるケーブルでOK)


Tera Termは定番のソフトで、工学部で少しでも電子電気をやった方ならまず知らない人はいないでしょう。


Tera Termをダウンロードしてインストールしてください。

起動するとTera Termをどこに接続するかを選択できます。LPC1114FN28につないでいるUSBがどのCOMポート番号に割り振られているかを調べてください。



ここではVer 4.78の物を使っています。

windows8で使っていますが、自動的に接続先の情報を集めてくれるようになっているようです。
それ以外のツールで使うときにCOMポートを調べるには以下の方法があります。

COMポート番号の調べ方

コンピュータアイコンの上で右クリック->プロパティ->デバイスマネージャー
を選ぶと、デバイス一覧が出てきます。
そこで、COMポートと出ているので、その番号を控えておきます。

※Tera TermとFlash Magic は同じ通信経路を通っているので、どちらか片方づつ使ってください。競合すると動かなくなります。


LPC1114FN28側のプログラムです。


#include "SimpleUart.h" をインクルードしてください。


void initUART(uint32_t baudrate); でボーレートをセットします。

void UART_Puts(char *str);  でテキストを出力します。


void UART_PutData(double dataD, uint32_t iKeta); 

double dataD はdouble型とint型を入れられます。(warningが出る場合はキャストすると出なくなると思います。)
uint32_t iKetaは表示する小数点の桁数を入れてください。
マイナスも表示されます。小数点は四捨五入されます。
あまり細かい小数点は出せないかもしれません、限度を試していないので目的の桁数でも動作するかを確認してから使ってください。


initUART(9600);
UART_Puts("TEST\r\n");

dData = -123.45678;

UART_PutData(dData, 3);
UART_Puts("\r\n");
  mwait01(1000); //100msec

上記のプログラムを実行すると、ボーレート9600で, 

TEST
-123.457
 と四捨五入で表示されます。


もし指定桁数内に小数点以下が 0 ではない場合、0も表示されます。

例)
1.000000 を 少数点以下3桁で表示しょうとすると 1
1.300000 を 少数点以下3桁で表示しょうとすると 1.300

速すぎると見にくいので適度にmwait01( );を使ってください。