2019年3月22日金曜日

memo Raspberry Piのpython3でpigpioを使う

そもそも、pigpioのインストールでしたが、、、
いろいろ自分用のメモ

sudo apt install -y python3-dev python3-pip
sudo pip3 install --upgrade pip3
sudo pip3 install pigpio

現在の大きな問題は、GPSとRaspberry Piの接続問題
下の内容をまとめると、以下をrc.localに仕込むのが良い

#!/bin/bash
sudo systemctl stop serial-getty@ttyS0.service
sudo chmod 666 /dev/ttyAMA0
sudo chmod 666  /dev/ttyS0
sudo chmod 666  /dev/ttyUSB0
stty -F /dev/serial0 115200
stty -F /dev/ttyAMA0 115200
stty -F /dev/ttyUSB0 115200
sudo chmod 666 /dev/ttyAMA0  /dev/ttyS0 /dev/ttyUSB0

1. 手順

1.1 新しいSDカードをつくる
起動用のSDカード作ります

1.2 raspi-configでserial設定
5 Interfaceing Options >  P6 Serial >
 Would you like a login shell to be accessible over  serial?    Yes & No
基本は、Noだと思うけど、YESで説明しているブログもある
 Would you like the serial port hardware to be enabled?
間違いなくYes

The serial login shell is disabled
The serial interface is enabled
 <Ok>

1.3 /boot/cmdline.txt

結局、次の文字列を削除する。これにより tty1を使う設定をする
console=serial0,115200

1.4 /boot/config.txt

enable_uart1      // raspi-config 設定値 1: serial enable 0: disable
dtoverlay=pi3-disable-bt         // bluetooth 無効

reboot後
/dev/ttyserial0, /dev/ttyAMA0 が、GPIO接続時の対象
/dev/ttyUSB0    これはシリアル通信用のUSB接続した時
                          例: TTL-232R-3V3

sudo systemctl stop serial-getty@ttyS0.service

1.5 chmod  再起動後は大事

sudo chmod 666 /dev/ttyAMA0 /dev/ttyS0  /dev/ttyUSB0

この3つは、crw-rw---- なので、
/etc/rc.local に記述した方が良いです。

lrwxrwxrwx  1 root root           7 Mar 23 13:53 serial0 -> ttyAMA0
lrwxrwxrwx  1 root root           5 Mar 23 13:53 serial1 -> ttyS0
crw-rw----  1 root dialout 204,  64 Mar 23 13:53 ttyAMA0
crw-rw----  1 root dialout   4,  64 Mar 23 13:53 ttyS0
/dev/ttyUSB0は、使用する時のみ

一番簡単な確認方法は、、、cat/dev/ttyAMA0

1.6 python3

python3の開発環境を作り、pip3をインストール
sudo apt install -y python3-dev python3-pip
???      sudo pip3 install --upgrade pip3

pip3 install pyserial
python の serial モジュールは手動でinstall してはいけない
もしinstallしてしまったら、、、 pip3 uninstall serial
sudo pip3 uninstall serial

下のスクリプトでテスト、、、でもうまくいかない
9600のGPSなら上手くいっている

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import serial
s = serial.Serial('/dev/ttyAMA0', 115200, timeout=1)
for i in range(10):
    print(s.readline())


#include <stdio.h>
int main(int argc, char *argv[]) {
        unsigned char   szBuf[256];
        int     i = 0;
        FILE *infl;
        if ((infl = fopen("/dev/ttyAMA0", "rb")) == NULL) {
                printf("file open error\n");
                return -1;
        }
        printf("success file open\n");
        while(fread(szBuf, sizeof( unsigned char ), 256, infl) != 0) {
            printf("%5d: %s.\n", i++, szBuf);
        }
        return 0;
}

1.7 通信ソフトでの確認

通信ソフトでどうなんだろう?
sudo apt -y install cu minicom

cu -s 115200 -l /dev/ttyAMA0
終わる時は、~.
ダメだー、、、、

 sudo systemctl stop serial-getty@ttyS0.service

ダメだ―――
あとは、、、、

cu -s 115200 -l /dev/serial0
Connected.
ァァァァmォw褄pVY}ァァァァァァァ・_q[euァァeァァeァァeォ褄キeYqァY}ァァァァォ褄キeYqァY}ァァァァァ
ァァァァmォs褄・e?Y}ァァァァァァァァァ」ァァeァァeァァォ褄キ_q[euァァeァァeァァeォ褄キeYqァY}ァァァァ
ァァァァmォu褄クVY}ァァァァァァァァァ」ァァeァァeァァォ褄キ_q[euァァeァァeァァeォ褄キeYqァY}ァァァァ
ァァァァmォw褄p+e?Y}ァァァァァァァァァ」ァァeァァeァァォ褄キ_q[euァァeァァeァァeォ褄キeYqァY}ァァァァ
ァァァァmォw褄pVY}ァァァァァァァァァ」ァァeァァeァァォ褄キ_q[euァァeァァeァァeォ褄キeYqァY}ァァァァ
ァァァァmォu褄・e?Y}ァァァァァァァ」ァァeァァeァァォ褄キ_q[euァァeァァeァァeォ褄キeYqァY}ァァァァ
ァァァァmォw褄・e?Y}ァァァァァァァ」ァァeァァeァァォs褄キ_q[euァァeァァeァァeォ褄キeYqァY}ァァァァ
ァァァァmォu褄クVY}ァァァァァァァァァァァ」ァァeァァeァァォ褄キ_q[euァァeァァeァァeォ褄キeYqァY}ァァァァァ

TTL-232R-3V3で、USB接続時

cu -s 115200 -l /dev/ttyUSB0
Connected.
[VォョZォ[VォョZォe;睆mヨ・[ョナ・・煜v澵レレレv煜v・咩揵ヨレZヨレvmュルVo・m?;+;+;+ュ驎V・eYqァァァァァァァmァァァァ[VォョZォe;睆mヨ・カヨv-カv-煜v煜vュ・・レv・v-v-v-vュ・カv-カv-v-煜[VォョZォe;郞vュ・レ[V[Vォョ[ョナ・ヨ6煜v澵レレレv煜v・咩揵ヨレZヨレvmュYVo・m?;+;+;+ュ驎V・eYqァ[VォョZォe;郞vュ・[V[Vォ[VォョZォe;郞v[ョナ・カ6煜v澵レレレv煜v・咩揵ヨレZヨレvmュルVo・m?;+;+;+ュ驎V・eYqァY}ァォョZォe;郞vュ・レ[Vォ[VォョZォe;郞[VォョZォe;郞v[ョナ
~.
Disconnected.
minicom -b 115200 -D /dev/ttyUSB0 -8




1.8 その他

stty -F /dev/ttyUSB0 115200
echo "Hello" > /dev/ttyUSB0

stty -a -F /dev/ttyUSB0 | grep speed
speed 115200 baud; rows 0; columns 0; line = 0;

minicom -s -c on
minicom -s           起動後パラメータ設定できる

cat /dev/ttyUSB0

Peace !!

参考
Linuxにおけるシリアルポートのトラブルシューティング
Raspberry Pi3のPythonでGPSを扱う
Pythonでシリアル通信
minicomの使い方
Raspberry Piに「みちびき」対応GPSモジュールを接続
Raspberry Pi Zero WH で「みちびき」対応 GPS を使う

------------------------------------------------------------------------------------

sudo blkid
/dev/mmcblk0p1: LABEL="boot" UUID="9304-D9FD" TYPE="vfat" PARTUUID="0527a029-01"
/dev/mmcblk0p2: LABEL="rootfs" UUID="29075e46-f0d4-44e2-a9e7-55ac02d6e6cc" TYPE="ext4" PARTUUID="0527a029-02"

/dev/mmcblk0: PTUUID="0527a029" PTTYPE="dos"

0 件のコメント:

コメントを投稿