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時間位で切れてしまっているように感じる。

先は長いな~

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

Raspberry Pi に I2C接続のLCD AQM1602Aを繋げる。Python

 早速買ってあったAQM1602Aを繋げようとググり始めたら早速不具合がある事が分かり、モチベーションダウン↓

2.2Kのプルダウンが必要との事。

気を取り直してPythonのスクリプトを書いてみる。

私はpigpio libraryを使うので、こちらのページでのサンプルを置き換えてみました。

https://www.denshi.club/pc/raspi/i2c.html

しかし、実行してもエラーI2Cのおまじないが必要でした。

sudo raspi-config で 5.Interfacing Option を選択して P5 I2C を Enableにして下記プログラムで全て1を液晶に表示できました。

lcdtest.py

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)


while 1:

pi.i2c_write_byte_data(h, _data, 0x31)

time.sleep(0.2)



2020年11月8日日曜日

Raspberry PI ZERO でLED ピコピコ

 モニターに繋いで作業をするには非力すぎるラズパイゼロ

CLKアップも試したが使いものにならず。

Volumioを動かした時は遅さを感じなかったが、PCモニターを繋いだら遅すぎて、困った。

という訳で、組み込みコンピュータに格下げ。

という訳でLEDピコピコの練習台として新しいスタートを切る事になりました。

pigpiodをインストールしようとしたが、既に入っていた。

なぜだ?デフォルトで入っているようだ。

続いてパイゼロのコネクタの配線をググる。








こうらしいので、回路図も調べる。








皆さんの作例を見ると、GPIOポートに電流制限のRを付けてLED直結だけど、そんなにGPIOポートが電流流せるのかな~?なんて思うけど自分のは壊れるともったいない、(貧乏性)なのでデジトラで受けて駆動しようと思います。