Python」カテゴリーアーカイブ

実験 I2C 接続 AE-AQM0802(LCD) Raspberry Pi Zero WH

実験 I2C 接続 AE-AQM0802(LCD) Raspberry Pi Zero WH
AQM0802(400Kbit/s) +3.3V駆動 参考 i2cset

★コマンドからI2Cへアクセス
$ sudo raspi-config #I2C を有効にする
$ i2cdetect -y 1 #I2C bus 1 に接続されているデバイスを調べる
$ i2cset -y 1 0x3e 0x00 0x38 0x39 0x14 0x78 0x5f 0x6a i #1=I2C bus 1 -y=no confirmation i=block data(not 1 byte)
$ i2cset -y 1 0x3e 0x00 0x0c 0x01 i
$ i2cset -y 1 0x3e 0x00 0x06 b #b=one byte data
$ i2cset -y 1 0x3e 0x00 0x80 b #1st line
$ i2cset -y 1 0x3e 0x40 0x48 0x65 0x6c 0x6c 0x6f i #’Hello’

★I2C通信速度変更 speed 要再起動
/boot/config.txt
dtparam=i2c_baudrate=50000 #50Kbit/s

★Python3からI2Cへアクセス (baudrate=400000) 動作OK

import smbus,time
i2c1=smbus.SMBus(1)
i2c1.write_i2c_block_data(0x3e,0x00,[0x38,0x39,0x14,0x78,0x5f,0x6a])
time.sleep(0.200) #1=1s 0.001=1ms
i2c1.write_i2c_block_data(0x3e,0x00,[0x0c,0x01])
time.sleep(0.002) #1=1s 0.001=1ms
i2c1.write_byte_data(0x3e,0x00,0x06)
i2c1.write_byte_data(0x3e,0x00,0x80)
i2c1.write_i2c_block_data(0x3e,0x40,[0x48,0x65,0x6c,0x6c,0x6f]) #'Hello'

★I2C エラー処理準備 (通信中に SDA,SCL,+3.3V (どの信号でも)の障害でエラー発生)
[Errno 121] Remote I/O error

import smbus,time

i2c1=smbus.SMBus(1) #0=(port I2C0), 1=(port I2C1)
i2c1.write_i2c_block_data(0x3e,0x00,[0x38,0x39,0x14,0x78,0x5f,0x6a]); time.sleep(0.200) #200ms
i2c1.write_i2c_block_data(0x3e,0x00,[0x0c,0x01]); time.sleep(0.002) #2ms
i2c1.write_byte_data(0x3e,0x00,0x06)
i2c1.write_byte_data(0x3e,0x00,0x80)
i2c1.write_i2c_block_data(0x3e,0x40,[0x48,0x65,0x6c,0x6c,0x6f]) #'Hello'

d=1
while 1:
    d=0x30+((1+d)%10) #9-0 countdown ascii
    time.sleep(1.000) #1s
    try:
        i2c1.write_byte_data(0x3e,0x00,0xc0) #2nd line
        i2c1.write_byte_data(0x3e,0x40,d)
    except Exception as e:
        pass ;print(e) #error if exist

外部コマンドを実行する Python3.6.7 ubuntu18.10

外部コマンドを実行する Python3.6.7 ubuntu18.10 動作OK
$ python3
>>> import subprocess
返値、0=OK, 1=エラー

外部コマンドを実行する Python3.5.3 raspberry pi zero w 動作OK

import subprocess
c= 'ffmpeg -f image2 -framerate 8 -i /home/pi/x/181128_%03d.jpg -vcodec libx264 -pix_fmt yuv420p -r 8 /home/pi/x/out.mp4'
x= subprocess.run(c, shell=True) #returncode=1(error),=0(OK)
print(x)

インストール OpenCV 4.0.0 Python Raspberry Pi Zero w

インストール opencv 4.0.0 python3.5.3 raspberry pi zero w
★各種情報取得
$ vcgencmd version #Nov 4 2018 #ファームウエアのバージョン確認
$ uname -a #Linux 4.14.79+ #オペレーティング・システムの情報確認(カーネルなど)
$ python3 -V #3.5.3

★OpenCV ソースコード取得(Opencv > GitHub > releases)(google検索可)
opencv-4.0.0.zip
opencv_contrib-4.0.0.zip

ローカルPCで上記2ファイルをダウンロードし解凍(下記の2つのフォルダが作成される)
opencv-4.0.0
opencv_contrib-4.0.0
/home/pi/x #Raspberry Pi にワーキング用フォルダ作成(名は何でも可)
2ファイルを Raspberry Pi へ転送 (ssh, midnight commander)

★OpenCV のインストール手順を確認、pdf(4.0.0)

$ sudo apt-get install update #インストール下準備
$ sudo apt-get install upgrade #インストール下準備
インストールに必要なパッケージを導入(改変はしていない)(? python→python3)
$ sudo apt-get install build-essential
$ sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
$ sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

★OpenCVソースコードをビルドする
$ cd /home/pi/x/opencv-4.0.0
$ mkdir build # /home/pi/x/opencv-4.0.0/build のフォルダが作成される、このファルダでコンパイルなどの作業を行う
$ cd build #作成したフォルダへ移動