2021年9月1日水曜日

Raspberry PI GPIOのボタンを押した回数をGUIで表示

 2時間かかってここまでできました。






# coding: utf-8

import RPi.GPIO as GPIO

import time

import tkinter as tk


BUTTON_PIN = 27

count = 0


root = tk.Tk()

root.geometry("300x80")

lbl = tk.Label(text="ボタンを押した回数を数える")

lbl.pack()


def main():

    GPIO.setwarnings(False)

    # Set the layout for the pin declaration

    GPIO.setmode(GPIO.BCM)

    # BCMの21番ピンを入力に設定

    GPIO.setup(BUTTON_PIN,GPIO.IN) 

    # callback登録(GIO.FALLING:立下りエッジ検出、bouncetime:300ms)

    GPIO.add_event_detect(BUTTON_PIN, GPIO.FALLING, callback=callback, bouncetime=300)



    tk.mainloop()



 


def callback(channel):

  print("button pushed %s"%channel)

  global count

  count = count + 1

  dispLabel()


def dispLabel():

    global count

    lbl["text"] = (str(count) + "回押しました")



if __name__ == "__main__":

    main()

2021年6月2日水曜日

ラズパイをリモートデスクトップで繋ぐ。思った良り簡単だった。

 やっぱり、ラズパイをイチイチモニター等に繋ぐのは面倒くさい。

リモートデスクトップができると、ノートPCからアクセスできるし超便利。

それで試してみました。

引用元は、https://raspi.taneyats.com/entry/install-xrdp


先ずはベーシックなアップデート

sudo apt-get update

sudo apt-get upgrade

そして、xrdpをインストール

sudo apt-get install xrdp

sudo systemctl start xrdp

sudo systemctl enable xrdp   # 自動起動が不要な場合は実行しない

ラズパイコンフィグでもおまじない。

sudo raspi-config

2 Display Option > D4 Screen Blankingと選択していきます。

Would you like to enable screen blanking?

と聞かれますのでYesを選択してエンターキーを押します。設定が完了すると再起動を求められますので再起動します。


これで、完了。

普通にリモートデスクトップでIPアドレスを指定して、ログインするとできた!









2021年5月29日土曜日

Python Flask 2回目 

 2回目はフォームから入力してその反応を表示する。

目的としては、ラズパイに繋いだLCDにブラウザから入力した文字を表示させよう。

そのためにもWEBブラウザーで入力した文字を返す物を作ってみました。

ほかのPCからアクセスできるようにおまじないが必要なのが、あとから解った。

app.run(port=8000, debug=True,host='0.0.0.0')


host='0.0.0.0'  こいつだった!

次はラズパイで動作確認かな。


from flask import *
app = Flask(__name__, static_folder='.', static_url_path='')
@app.route('/')
def index():
    return app.send_static_file('index_calc.htm')
 
@app.route("/lcd_disp1", methods=["post"])
def calc():
    a = str(request.form.get("a"))
   
    return "<h1>表示する文字は " + str(a) + "</h1>"  

app.run(port=8000, debug=True,host='0.0.0.0')


同じフォルダに置くHTMLはこんな感じ index_calc.htm で保存

<!DOCTYPE html>

<html lang="ja">

<head>

    <title>Flask LCD Sample</title>

</head>

 <html><body>

    <form action="/lcd_disp1" method="post">

      <input type="text" name="a">

      <input type="submit" value="表示">

    </form>


入力した文字が表示される事ができました。


2021年5月23日日曜日

Python Flask 入門1回目

 まずはこのページを参照。

https://aiacademy.jp/media/?p=57

from flask import Flask
app = Flask(__name__, static_folder='.', static_url_path='')
@app.route('/')
def index():
    return app.send_static_file('index.html')
 
app.run(port=8000, debug=True)

こいつを実行すると同じフォルダにある index.html    が実行される。

localhost:8000 にアクセスが必要

これだけだとまだ難しいので下記サイトを見ると、少し理解できた。

https://news.mynavi.jp/article/zeropython-64/

# 必要なモジュールの取り込み
from flask import Flask

# Flaskオブジェクトの生成 --- (*1)
app = Flask(__name__)

# ルート( / )へアクセスがあった時の処理を記述 --- (*2)
@app.route("/")
def root():
    return "Hello"

# サーバーを起動 --- (*3)
if __name__ == "__main__":
    app.run(debug=True, port=8888)

「http://localhost:8888」にこいつは開かないとならない。

こんな使い方もあるのですね。

ここからはマイナビのサイトを参考に理解を進める。

from flask import *

# Flaskオブジェクトの生成
app = Flask(__name__)

# ルート( / )へアクセスがあった時 --- (*1)
@app.route("/")
def root():
    # HTMLでWebフォームを記述 --- (*2)
    return """
    <html><body>
    <form action="/calc" method="post">
      <input type="text" name="a"> ×
      <input type="text" name="b">
      <input type="submit" value="計算">
    </form>
    """

# フォームの値を受け取って結果を表示 --- (*3)
@app.route("/calc", methods=["post"])
def calc():
    a = int(request.form.get("a"))
    b = int(request.form.get("b"))
    r = a * b
    return "<h1>答えは..." + str(r) + "</h1>"    

# サーバーを起動
if __name__ == "__main__":
    app.run(debug=True, port=8888)

掛け算プログラムです。

こんな感じでpostを利用してpythonで計算して返す。

同じWebページで返すにはどうすりゃいいんだ?




2020年11月12日木曜日

Raspberry Pi に I2C接続のLCD AQM1602Aを繋げる。Pythonで何となく形ができた。

前回上手く表示できるようになったので、少しソースを変えて使い易くした。

はい、これで液晶表示できるようになりました。

今回できた事 I2Cの書き込み。


import pigpio

import time

addr = 0x3e

_command=0x00

_data=0x40

_clear=0x01

_home=0x02

display_On=0x0f

LCD_2ndline=0x40+0x80


pi = pigpio.pi()

h = pi.i2c_open(1,addr)


pi.i2c_write_byte_data(h, _command, 0x38)

time.sleep(0.2)

pi.i2c_write_byte_data(h, _command, 0x39)

time.sleep(0.2)

pi.i2c_write_byte_data(h, _command, 0x14)

time.sleep(0.2)

pi.i2c_write_byte_data(h, _command, 0x73)

time.sleep(0.2)

pi.i2c_write_byte_data(h, _command, 0x56)

time.sleep(0.2)

pi.i2c_write_byte_data(h, _command, 0x6c)

time.sleep(0.2)

pi.i2c_write_byte_data(h, _command, _home)

time.sleep(0.2)

pi.i2c_write_byte_data(h, _command, _clear)

time.sleep(0.2)

# pi.i2c_write_byte_data(h, _command, display_On)

# time.sleep(0.2)


for c in 'PS 5!':


    pi.i2c_write_byte_data(h, _data, ord(c))

    time.sleep(0.2)


pi.i2c_write_byte_data(h, _command, LCD_2ndline)


for aa in 'Hoshiina!':

    pi.i2c_write_byte_data(h, _data, ord(aa))

    time.sleep(0.2)


pi.i2c_write_byte_data(h, _command, 0x0c)


2020年11月10日火曜日

Raspberry pi zero w クロックアップ

 久しぶりに動かしたら遅すぎて使い物にならない。

オーバークロックしてみた。

/boot/config.txtに下記を追記

arm_freq=1000

arm_freq_min=300

over_voltage=5

temp_limit=80

リブートしたが、気持ち早くなったか?

でも、

Noble Audio FALCON エージング中 2日位。

 Noble Audio FALCON エージングをしているが、有線と同じようにはいかない。

連続で動かしていてもバッテリーが切れてしまい、連続再生が難しい。

有線だったら、リピートにして時間が稼げるのに・・・

結構手ごわいな~

実質24時間位エージングしたが、まだまだ

初期よりは良くなって低音が聞きやすくなったが、高音がシャリシャリしている。

MDR-AM2が実質150時間位エージングにかかったので、こりゃ大変だ・・・

3連休中気が付いたら充電、7時間音楽再生と行きたいが3~4時間位で切れてしまっているように感じる。

先は長いな~

明日は在宅勤務なので、頑張って時間を稼ごう!