はじめまして、ますみです!
はじめに
簡単に、「シリアル通信について知り、実装する入門記事」です。
シリアル通信とは
シリアル通信:デジタルデータを1bitずつ順次伝送する通信方法
パラレル通信:複数bitのデジタルデータを同時伝送する通信方法
通信方法 | 長所 | 短所 |
---|---|---|
シリアル通信 | 低コスト | 遅い |
パラレル通信 | 高コスト | 速い |
より詳しく知りたい方は、この記事がおすすめです。
電子工作初心者のために シリアル通信方式を分かりやすくまとめてみた
Pythonで実装(pyserial)
pyserialのインストール
まず以下のコマンドを叩き、パッケージをインストールします。($
は入力しなくて、大丈夫です。)
$ pip install pyserial
通信できるデバイスの探索
まずは、通信できるデバイスを探索します。
以下のコマンドを叩いてみましょう。(2行目はterminalからのレスポンスになります。)
$ ls -l /dev/tty.*
crw-rw-rw- 1 root wheel 18, 0 11 28 17:48 /dev/tty.Bluetooth-Incoming-Port
/dev/tty.Bluetooth-Incoming-Port
というデバイスが見つかりました。
読み込み(read)
続いて、読み込みを行なってみましょう。
import serial
readSer = serial.Serial('/dev/tty.Bluetooth-Incoming-Port',9600, timeout=3)
c = readSer.read() # 1 byte
string = readSer.read(10) # 10 byte
line = readSer.readline() # 1 line (upto '\n')
print("Read Serial:")
print(c)
print(string)
print(line)
readSer.close()
コードの説明
- packageをインストールする。
- デバイス名とボーレート(通信速度)、タイムアウトの設定し、ポートを開ける。
(serial.Serial(デバイス名, ボーレート, タイムアウト)
) - 読み込みを行い、printする。
- ポートを閉じる。
書き込み(write)
import serial
serialCommand = "test"
writeSer = serial.Serial('/dev/tty.Bluetooth-Incoming-Port',9600, timeout=3)
writeSer.write(serialCommand.encode())
writeSer.close()
コードの説明
- packageをインストールする。
- デバイス名とボーレート(通信速度)、タイムアウトの設定し、ポートを開ける。
(serial.Serial(デバイス名, ボーレート, タイムアウト)
) - 送りたいコマンドをエンコードし、書き込みする。
- ポートを閉じる。
全体のサンプルコード
import serial
print("===== Start Program =====\n")
# Set Parameter
deviceName = '/dev/tty.Bluetooth-Incoming-Port' # search by `ls -l /dev/tty.*`
baudrateNum = 9600
timeoutNum = 3
print("===== Set Parameter Complete =====\n")
# # Read Serial
readSer = serial.Serial(deviceName, baudrateNum, timeout=timeoutNum)
c = readSer.read()
string = readSer.read(10)
line = readSer.readline()
print("Read Serial:")
print(c)
print(string)
print(line)
readSer.close()
print("===== Read Serial Complete =====\n")
# Write Serial
serialCommand = "test"
writeSer = serial.Serial(deviceName, baudrateNum, timeout=timeoutNum)
writeSer.write(serialCommand.encode())
writeSer.close()
print("===== Write Serial Complete =====\n")
print("===== End Program =====\n")
最後に
最後まで読んでくださり、ありがとうございました!
いかがだったでしょうか?
この記事を通して、少しでもあなたの学びに役立てば幸いです!
【仕事の相談はこちら】
お仕事の相談のある方は、下記のフォームよりお気軽にご相談ください。
もしもメールでの問い合わせの方がよろしければ、下記のメールアドレスへご連絡ください。
info*galirage.com(*を@に変えてご送付ください)
🎁 「生成AI活用の無料相談券」もしくは「生成AIの社内ガイドライン(無料PDF)」を『公式LINE』で配布中 🎁
『生成AIを業務に活用したいけど、どうしたらいいかわからない』といった声を多くいただきます。
Galirageでは公式LINEにて、チャットやオンライン会議で「完全個別の生成AI活用無料相談会」を実施しております!
(期間限定で実施しているため、ご興味ある方はお早めに以下のLINE公式アカウントをご登録ください^^)
https://lin.ee/rvz6lMN
※ 予告なく、キャンペーンを終了する可能性がございますが、ご了承ください。
【業務内容】
具体的には、以下のお仕事を中心に受け付けております!(詳しくはこちら)
- 受託開発(例:生成AIを使った社内システムの開発)
- コンサルティング(例:技術戦略のアドバイス)
- 講演(例:社内研修、イベント登壇)
※ 特に「生成AIを使ったシステム開発のご依頼」が多く、ご好評いただいております。
【これまでの相談事例】
以下のようなご相談が多くあります。
🔑 機密情報を漏洩させないための、生成AIのシステム構築をお願いしたい。
🤖 自社データを用いたFAQチャットボットの作り方を知りたい。
💡 ChatGPTを、自分たちの事業にどのように活かせるか、アドバイスやアイデアが欲しい。
おまけ
エンジニアの仲間(データサイエンティストも含む)を増やしたいため、公式LINEを始めました🎉
「一緒に仕事をしてくれる方」「友だちとして仲良くしてくれる方」は、友だち追加をしていただけますと嬉しいです!(仲良くなった人たちを集めて、「ボードゲーム会」や「ハッカソン」や「もくもく会」もやりたいなと考えています😆)
とはいえ、みなさんにもメリットがないと申し訳ないので、特典を用意しました!
友だち追加後に、アンケートに回答してくれた方へ「エンジニア図鑑(職種20選)」のPDFをお送りします◎
参考文献