LoginSignup
0
1

More than 3 years have passed since last update.

RaspberryPiとPythonを使ってICS規格のシリアルサーボを動かす

Last updated at Posted at 2020-12-09

はじめに

近藤科学のKRSシリーズをRaspberry Piから動かそうとして四苦八苦したのでその備忘録です.

使ったもの

  • RaspberryPi3ModelB+
  • 近藤科学 KRS-6003R2HV
  • ICS変換基板
  • ブレッドボードや抵抗,電源,ジャンパ線などなど

シリアル通信を行うために

今回GPIOからシリアル通信を行うのですが,Raspberry Pi3では本体のUARTがすでにBluetoothで利用されているためこれを設定し直す必要があります.今回Bluetoothを使う予定はないのでOFFにします.

プログラム

近藤科学の通信手順に沿って通信します.
(初期:EN_INをLにします) 通信する時信号が流れてないのを確認し、EN_INをHにします。

マイコンのTXからコマンドを送信します。

TXからコマンドを送信終了後すぐにEN_INをLにします。 (ICS機器から信号が送られてくるのですぐ受信に切り替えます)

マイコンのRXよりデータを受信します。

以下のプログラムではシリアル接続後に入力を受け付けてその値にモータを回す物になってます.

import serial
import sys
import time
import pigpio
def main():
    args = sys.argv
    pi = pigpio.pi()
    pi.set_mode(4,pigpio.OUTPUT)
    con = serial.Serial('/dev/ttyAMA0', baudrate=115200,bytesize=serial.EIGHTBITS,parity=serial.PARITY_EVEN,stopbits=serial.STOPBITS_ONE,timeout=1,)
    time.sleep(2)

    while 1:
        num = int(input("3500 ~ 11500 :"))

        num2 = format(num,'014b')#プレフィクス無し14桁2進数に変換,この段階でstr
        POSH = "0b" + num2[:7]#2進数のstrを分割
        POSL = "0b" + num2[7:]
        POSH = int(POSH,0)
        POSL = int(POSL,0)

        print("POSH : " + str(POSH))
        print("POSL : " + str(POSL))



        print(con.portstr)
        pi.write(4,1)#HIGH
        tx1 = 0x80
        tx2 = POSH
        tx3 = POSL
        con.write(bytes([tx1]))
        con.write(bytes([tx2]))
        con.write(bytes([tx3]))
        con.flush()
        pi.write(4,0)#low
        print(con.read())

if __name__ == '__main__':
    main()

参考サイト

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1