Rich Richer Richest

カメラ / レンズ / 写真 / 名古屋 / ライフハック / 思い付き / 猫 ライフログで暮らしをRichに!

【備忘録】Raspberry pi python3 で RPi モジュールがないエラー

f:id:mocchipa:20200321161500p:plain

Raspberry pi のデフォルト環境下ではpython3は色々万全ではないようです。

実行したらNo module エラーが発生しました。

raceback (most recent call last):
  File "test.py", line 6, in <module>
    import RPi.GPIO as GPIO
ModuleNotFoundError: No module named 'RPi'

Raspberry pi を動作させる上で一番肝心なモジュールですね。

下記コマンドを実行してインストールしてください。

sudo pip3 install RPi.GPIO  

 これで該当のモジュールがインストールされてプログラムが動作します!

 

【備忘録】Raspberry pi + Python3 タブ、スペースエラー

f:id:mocchipa:20200321161500p:plain

TabError: inconsistent use of tabs and spaces in indentation

これで困っちゃってます。

ソースはこれ

#メール送信関数

def send_mail():
        #送受信先
        to_email = "test@hoge.com"
        from_email = "test@hogehoge.com"
 
        #MIMETextを作成
        message = "Some probrem happend client ID:[hoge010]"
        msg = MIMEText(message,"html")
        msg["Subject"] = "Error"
        msg["To"] = to_email
        msg["From"] = from_email
 
        smtp_obj = MAIL.SMTP("mail.hoge.com",587)
        smtp_obj.login("test@hoge.com","PASSWD")
        smtp_obj.set_debuglevel(True)
       smtp_obj.send_message(msg)
 
# python 2.7 環境ではこちらを使う。
#       smtp_obj.sendmail(from_email,to_email,msg)
 
        #閉じる
        smtp_obj.quit()

 これを python3 で実行すると

    msg["To"] = to_email
                       ^
TabError: inconsistent use of tabs and spaces in indentation

要するに、タブとスペースを混同しているから統一しなさいよというエラー。

うーん、、、困ったというところでこのブログを終わろうとしたところでひらめいた。

インデントに Tab を使ってるけどこれがいかんのでは?

良く考えたら、文法的にインデントが結構重要な言語ですよね。

続報はまた後日。

追記 2020-03-28

解決しました!

python3 ではインデントにTabを使っているのがまずいっぽいです。

すべてをスペースでインデントに直したらエラーが消えました。

python2系ではTabでも動いたんですけどね。

という訳で同じ事象でお困りの方は是非!

【備忘録】Python global 変数の扱い方でずっこけた

f:id:mocchipa:20200321161500p:plain

Raspberry pi でプロトタイプ的なものを作ってます。

今日つまずいていたところをシェアします。

下記のようなソースを書いたところ。

FLG_EXE = False
FLG_ART = False
 
def display_show():
    if FLG_EXE :
        return
    if FLG_ART :
        wb.open("Arart.html",0)
        FLG_EXE = True
    else :
        wb.open("Normal.html" , 0)
        FLG_EXE = True
try:
    while True:
        display_show()
        
        if GPIO.input(SW_ART) == GPIO.HIGH
            FLG_ART = True
            FLG_EXE = False
 
        if GPIO.input(SW_RST) == GPIO.HIGHT
            FLG_ART = False
            FLG_EXE = True
    time.sleep(0.1)
excep Exception as e:
    print(e)
    GPIO.cleanup()

 

下記のエラーが表示されました。

local variable 'FLG_EXE'  eferenced before assignment

print('check point 01')や、print(FLG_EXE)などを埋めまくって調査したおところ、def display_show() 内の最初の FLG_EXE を参照しにいってこけているようでした。

 

ググった所次の記事が役立ちました。

teratail.com

どうやら def 関数内でグローバル変数を使うときはglobalと明示してやらないとlocal変数として扱われてしまう事があるようです。

つまりはこのようにしないとこのエラーは発生するみたいです。

def display_show():
 #グローバル変数ですよと明示
    global FLG_EXE
    global FLG_ART
 
    if FLG_EXE :
        return
    if FLG_ART :
        wb.open("Arart.html",0)
        FLG_EXE = True
    else :
        wb.open("Normal.html" , 0)
        FLG_EXE = True

 

 ただし、こういうのはバグを生みやすい書き方らしいので、アドバイスに従い下記に変更しました。

 

FLG_EXE = False
FLG_ART = False
 
def display_show(flg_art):
    if flg_art :
        wb.open("Arart.html",0)
    else :
        wb.open("Normal.html" , 0)
    return True
 
try:
    while True:
        if FLG_EXE == False
            FLG_EXE = display_show(FLG_ART)
 
            #この処理を入れておかないとブラウザが開きまくる。
            #表示まちで1秒待つ
            time.sleep(1)
 
        if GPIO.input(SW_ART) == GPIO.HIGH :
            FLG_ART = True
            FLG_EXE = False
 
        if GPIO.input(SW_RST) == GPIO.HIGHT :
            FLG_ART = False
            FLG_EXE = True
    time.sleep(0.1)
except Exception as e:
    print(e)
    GPIO.cleanup()

 グローバル変数を弄るのではなく、関数の引数と返り値で処理するやり方です。

これで問題なく動くようになりました!

メルペイが50%還元やってます!3月31日まで

f:id:mocchipa:20200324192227p:plain

メルペイがキャンペーン中!

メルペイがフィーバーキャンペーンやってますね。

対象のお店でメルペイで支払うと、利用金額の50%のメルペイポイントが翌日に付与されます。

これはおいしいですね。

今日は松屋で牛丼食べました。

実質 190円なんて地味にうれしいです。うまうま。

f:id:mocchipa:20200324192753p:plain

飲食店の他にも街のお店、コンビニもキャンペーン中です。

f:id:mocchipa:20200324193228p:plain

f:id:mocchipa:20200324193314p:plain

 

注意点

  • キャンペーン通じての総額の還元ポイントは3,000P
  • 一回の買い物で還元される上限は、飲食、街のお店は 500P が上限。つまり、1000円以上の買い物は50%OFFではなく500円OFF。
  • コンビニは20%OFF そして300Pが上限。
  • コンビニはキャンペーンの適用時間が 7:00 ~ 13:00
  • ポイント寄与は買い物の翌日。

制約はあるものの嬉しいキャンペーンですね!

3,000P枠使い切りたいですね。

 

リーフ乗りからみた東名高速道路

SONY a7RIII + Tamron 35mm F2.8 model F053

名古屋 東京日帰りドライブ

ちょっと用事で名古屋、東京間を日帰りで往復しました。

と言っても今回はリーフを使いませんでしたw

ブログネタで本当は使いたかったですが、集合時間が設定されていたので今回はアテンザディーゼルで行きました。

 

リーフは長距離ドライブに向いているか?

EV乗りではない方が抱く疑問。

「EVで長距離ドライブいったら電池切れ怖くないの?」

この答えはYesともNoとも言えますね。

僕はリーフ自体は長距離不向きではないと思っています!

東名高速道路みたいな大きな高速道路は殆ど各SAに急速充電器が付いてます。

f:id:mocchipa:20200322003326p:plain

引用:EV充電マップ - GoGoEV

 

例えば名古屋から東京の340kmぐらいの距離なら、恐らく2回か3回充電できたら到着できるでしょうね。

 

充電時間=休憩時間 とすれば普通のドライブとなんら変りないです。

 

土日祝日の充電事情

充電器の設置個所としては十分整っていると思います。

ところが問題だと思うのは1か所に設置されている充電器の数です。

大体どこも1か所1基が基本です。

これが、休日のドライブでは問題になってしまいます。

休憩で寄ったSAの充電器はどうだろう?と観察してましたが、どこのSAも大体誰かが充電しているような状況でした。

 

名古屋、東京程度のドライブでは充電器さえ捕まれば、30kWh 40kWh 60kWh どのリーフでも恐らく苦ではないです。

 

そういう意味では車両の問題というよりは、充電環境の問題と言えます。

テスラの大容量バッテリーモデルなら無給電

テスラ Model X 乗りの友達に聞きました。

90kWh バッテリーを積んだ Model X だと、名古屋、東京は無給電でいけるとの事でした。

名古屋出発して 東京で 120kW ある急速充電器スーパーチャージャーで充電してしまえばすぐに走り出せてしまいます。

 

現在の休日時の充電環境事情では大容量バッテリーは強いなー!というのは素直な感想です。

 

写真はテスラModel S 85kWh

Tesla Model S

 

ただ、繰り返しますがリーフは長距離は苦手ではないです。

苦手になってしまうシチュエーションが存在するだけです。

充電環境が充実してくれば、テスラのような大容量バッテリーは日本では必要ないと思っています。 

改善案

とりあえず最低ラインですが、充電器の数を最低2基にして欲しいです。

海老名、御殿場、浜松 のような人気のSAは4基ぐらい欲しいですね。

SONY a7RIII + Tamron 35mm F2.8 model F053

SONY a7RIII + Tamron 35mm F2.8 model F053

そしてもう一つは充電器の能力です。

高速道路に設置されている急速充電器は大抵 30kW クラスです。

これは30分充電しても、よくいって 15kWh しか充電されず、距離にしたら100km程度。

これが、最新の90kW クラスがついてくれたら30分いかない時間で満充電が可能です。

先約を15分待つのと30分まつのでは大きな差です。

EV/PHEV車用 大出力急速充電器『SDQC2F90シリーズ』 製品画像

画像引用:

EV/PHEV車用 大出力急速充電器『SDQC2F90シリーズ』 新電元工業 | イプロスものづくり

 

これが導入されれば、充電回数も充電時間も短縮できるので効果大きいと思います。

高速SAこそ90kW充電器があると良い。

下道ならば空いている充電器がなければ他を探すだけですけど高速は途中で降りられない為そうはいきません。

高速道路だけでも充電環境を改善して欲しいです。

※ETC2.0がついていれば途中、高速道路降りるのも可能ですが、リーフはETC2.0は搭載されておりません。2017年販売開始の車なのに、、、

改善はされるのか?

改善は期待できないと思ってます。

改善するインセンティブが管理者にとってなさそうだからです。

 

あくまで僕の想像するストーリーですがChadeMO充電網は関係者の間では失敗プロジェクトの扱いになっているんじゃないかなと思ってます。

 

想像ですが、このChadeMO規格の充電網は日産三菱連合が提灯もってやってたんだと思います。それに東京電力がのっかって。

日産三菱連合がリーフをはじめとするEVを売りたい。

売れるには充実した充電網が必要。

東京電力はリーフを皮切りにEVが普及してくれたら夜間電力の需要が増える。

そんな野心をもって関係者は動いていたんじゃないでしょうか。

そのおかげで、充電器設置個所は現状文句ないレベルで広がっていると思います。

恐らく関係各社が先行投資の意味合いで頑張ったのが大きいです。

でも、残念ですがリーフはセールス的には成功した車とは言い難いです。

 日産ディーラーも、ChadeMO協議会も先行投資をしたもののお金にならなかった失敗プロジェクトと認識していそうです。

 

現状の利用者が各関係者にしっかり儲けが出るような料金を支払うとユーザーの方が約束しない限りは充電器の数を増やしたり、充電器の能力を更新してくれなさそうです。

 

期待の星は次世代規格ChaoJi(超級)

日本と中国で次世代EV充電規格を開発しているそうです。

monoist.atmarkit.co.jp

ChaDeMo協議会もChaoJiはChadeMOの後継規格として正式採用を表明してます。

ChaoJiの最大出力はなんと900kW

リーフクラスのバッテリーが2、3分で満充電にできてしまう能力です。

凄い!

これが、高速道路を中心に普及すれば充電待ちというのも過去のものになりそうです。

 

さいごに

あらためて、リーフは混雑で充電難民にさえならなければ長距離ドライブでも非常に快適な車だと思いました。

アテンザディーゼルはリーフでは感じない振動が結構あります。

これは、ディーゼルだから余計ですけどガソリン車も同じだと思います。

4時間、5時間の距離になるとこの振動は結構疲れに繋がってると思ってます。

あとプロパイロットは偉大でこれのおかげでいくらでも疲れ知らずで運転できます。

EVは長距離ドライブ向いていなんじゃない?と思われていますが、僕は逆だと思っていて、EVこそ長距離ドライブに向いているでしょ!と言いたいです。

 

充電環境の改善は、なんだかんだ日本ではトヨタという巨大なクジラが動かないと難しそうですね。

早く水素に見切りつけて面舵いっぱいでEV力入れて欲しいですね。

 

こちらも読んでね

↓これまでリーフでお出かけした記事などリーフ関連まとめ↓

www.richardh.work

↓リーフとテスラの違いなどをつづった記事

www.richardh.work

 

【備忘録】GPIOを制御するときはGPIOを解放を忘れずに

f:id:mocchipa:20200321161500p:plain

LED制御のプログラムをpythonでプログラミングしたんですが、LEDが付きっぱなしになっちゃう問題が起こり解決したのでシェアします。

 

ctl + C でプログラムを強制終了した際、2度目に動かすとエラーがでて2度目はプログラムを実行できないばかりかLEDがつながったポートがHIGHになりっぱなしで困ってしまいました。

解決策は トライキャッチの処理をいれる事でした。

try:

  while True:

   #異常信号検知でLED点灯

   if GPIO.input(PIN_ART) == GPIO.HIGH :

       GPIO.output(PIN_LED , GPIO.HIGH)

  #リセットボタンが押されたら消灯

   if GPIO.input(PIN_RES) == GPIO.HIGH:

      GPIO.output(PIN_LED , GPIO.LOW)

   time.sleep(0.1)

except:
print('some exception happend.')
# GPIOを解放
GPIO.cleanup() 

 これでどんな例外でプログラムが終了されても GPIOが解放されます。

参考まで!

【備忘録】tkinter importがうまくいかない

f:id:mocchipa:20200321161500p:plain

tkinterで画面にGUI表示

Raspberry pi の画面にメッセージを表示させる機能を Python で実装したいのです。

ところがtkinterが上手く動かず時間を使いまくりました。

取りあえず解決したので備忘録としてここにシェアします。

 

tkinterモジュールが見つからない問題

実行させると下記のエラーがでて動きませんでした。

raceback (most recent call last):
  File "tkinter-demo.py", line 3, in <module>
    import tkinter as tk
ImportError: No module named tkinter

tkinterなんてモジュールはないぜ!と怒られています。

これは色々調べた結果、pythonのバージョンによって発生するそうです。

僕のラズパイの環境だと

コマンド

python -V

を打つと

Python 2.7.16

で返ってきました。

 

この問題の解決方法

このバージョンのPythonではtkinter を importするときに

import Tkinter as tk

と、頭大文字でTkinterと打たないとダメみたいです。

 

ディスプレーが解らないよエラー

続いて一難さったら下記のエラー

Traceback (most recent call last):
  File "tkinter-demo.py", line 5, in <module>
    root = tk.Tk()
  File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1828, in __init__
    self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
_tkinter.TclError: no display name and no $DISPLAY environment variable

ディスプレーネームが見つからないと。

どうもディスプレー環境のエラーみたいです。

これはググりまくってもヒントが見つからず途方に暮れてました、、、

 

この問題の解決方法

これは、冷静になったらわかりました。

僕がアホなだけでした!

Tera Term で SSH 越しに実行していたから発生していました(笑)

なんとなくそれでも動くような気がしちゃってたんですね。

良く考えたらそんなわけないですよね。

Raspberry pi から直接実行したら問題なく動きました。

 

うまくいったソースコード

#!/usr/bin/python
import Tkinter as tk

root = tk.Tk()
root.title("Tkinter test")
#root.geometry("360x240")
root.mainloop()

 

 ※root.geometry("360x240")がASCIIエラーがでてましたけど、多分 x が駄目ポイきがします。それはおいおい解決で。

 GUIを呼び出せました!

f:id:mocchipa:20200321192204p:plain

おまけ

問題可決に、python 3.7とかをインストールしました。

最新版にしたら解決するのかと思って。

python 3.7 をインストールの後、実行してみましたけど問題治らず。

あれ?本当にインストールできた?バージョン確認したらPython2.7.16のまま。

調べたら初期設定では

python xxx.py だと 2系 で実行されて

python3 xxx.py だと 3系で実行されるんですね。

下記コマンドで確認するとちゃんと 3.7.2がインストールされていました。

python3 -V

Python 3.7.2

参考まで!

【備忘録】Python は小文字、大文字の区別大事

f:id:mocchipa:20200321161500p:plain

人からの頼まれごとで Raspberry pi を勉強中。

取りあえずLED制御で練習。

 

ところが、コンパイルエラー出まくり!

 

If GPIO.input(PIN_ART) == GPIO.HIGH :
^
SyntaxError: invalid syntax

 ここでなんでだなんでだとずーっと悩んでいた。

そしたらシンプル過ぎるミスでした。

If × 誤

if 〇 正

単純に、大文字小文字の間違いでした!

シンプル過ぎるミスでした、、、

 

【神アプリRemini】 遺影作成 不鮮明な写真もこれで加工すれば解決

f:id:mocchipa:20200318225722p:plain

遺影で問題になる引き伸ばし時の解像度

遺影に使える写真を作ってくれと依頼があった。

普段からポートレート撮影して沢山写真がある人ならいいけど、あるのは集合写真ばっかりなんてケースも少なくないと思う。

 

大抵はこんな写真の表情がいいわねという話しになる。

f:id:mocchipa:20200318230240p:plain

それで、これをこんな感じに切り出すけれど、多くは解像度の関係で

こんな感じの甘い画像になる。

Before

f:id:mocchipa:20200318230701p:plain

それが、このアプリを使うと AIがぼやけた画像の情報を手掛かりに予測して加筆修正してくれる。

つまりは、ぼやけているけどこの人の目はこんな感じだろうとか足りない部分を想像で埋めてゆく技術です。

仕上がるとこんな感じになります。

After

f:id:mocchipa:20200318230529p:plain

Riminiの凄さがわかる記事はこちら

www.danshihack.com

Reminiの使い方はこちら

mag.app-liv.jp

ゲームチェンジャーはPixel3

以前こんな記事を書きました。

www.richardh.work

Reminiを体験したのち、この技術はカメラ業界を一変させると確信しました。

 

やれフルサイズだの、やれオーバーフルサイズだの、御ツァイス様の解像力がどうのこうのだのは一部のマニアオジサンしか言わなくなる未来です。

  • ピンぼけしててもAIが補完します。
  • レンズ解像度が足りてなくてもAIが補完します。

  • 高感度ノイズまみれでもAIがクリーンにします。
  • 暗所の光量が足りてなくて不鮮明な画像もAIが補完します。
  • ダイナミックレンジが足りなくて、白飛び黒潰れした箇所もAIが補完します。

ハードウェアの物理特性の悪さを全部ソフトウェアで乗り越えてゆく世界観です。

 

いま、報道カメラマンがCanon Nikonを振り回してオリンピックを撮影したりしている風景はかつてのスピグラのようになるのかも知れません。

 

Nikon F が登場するまで主流だった報道カメラ スピグラ

f:id:mocchipa:20200318233521p:plain

ソース

https://www.yomiuri-pm.co.jp/files/camera_history2.pdf

 

報道現場のゲームチェンジャーになったNikon F

f:id:mocchipa:20200318233637p:plain

 

カメラファンとしてはワクワクするような寂しいような時代の到来ですが、僕はどちらかというとワクワクしてます。

 

小型の望遠カメラで撮影することが主流になる頃、AIが描いた写真など真実をうつしているのか?

という苦言を古参カメラマンが言い出し一つのイデオロギーとなりそうです。

 

まとめ

凄い時代が来た!カメラ業界のトレ転を目の当たりにしているのかも知れない。

このアプリはスゴイです。

僕と同じように、遺影を作成しなきゃならないという人は即戦力で役に立つことでしょう。

参考になれば幸いです!

ジェネリック グリナ?睡眠サプリメントとして 純 グリシン 1Kg を買ってみた。

f:id:mocchipa:20200310200756j:plain

 

眠りが浅い

前にも枕の記事で書きましたがここ何年か眠りが浅いのが悩みです。

www.richardh.work

朝までに2回ぐらい目が覚めちゃうんですよね。

 

睡眠改善サプリメント 味の素のグリナ

味の素 グリナ 6本入り

味の素 グリナ 6本入り

  • メディア: ヘルスケア&ケア用品
 

グリナ気になってますが、効果があっても毎日のように常用するのにコストが 、、、

そこで朗報!TwitterでUberEats仲間にグリナの主成分グリシンはネット通販で1kgとかで買うと激安!と聞きました。

早速教えて頂いたリンク先で購入しました。ポチっとな。

純 グリシン 1Kg (アミノ酸) 無添加 各サイズあります
 

1kgで1,200円弱!激安。

1回分量3gなので1年分近くありますね。

これなら気楽に試せるし常用できますね。

届きました

うすうすなビニール袋に結構ワイルドにパッケージされて届きます。

梱包材もなにもない状態で封筒に入った状態です。

衝撃でジップが開いたら輸送事故間違いなしですね。

f:id:mocchipa:20200310203014j:plain

荷姿は完全に違法薬物です!(笑)

職質されたら尿検査必須でしょうね。

 

飲んでみた

1回分量3g。スプーン1杯分程度ですね。

f:id:mocchipa:20200310203524j:plain

これを水と一緒に睡眠前に飲みます。

甘い味がして飲みやすいです。

気になる効果は?

実感としては無い(笑)

これは飲み方も良くないのかも知れません。

寝る前に水飲んでるので尿意で目が覚めちゃってます。

値段安いんで気休めでもいいかなと思ったんですが一応データーを見てみました。

Huawei watch GT の睡眠ログ

Before

f:id:mocchipa:20200310204354p:plain

After

f:id:mocchipa:20200310204455p:plain

深い睡眠がそれまで20%台だったんですが、飲んだ日は30%台です!

ざっくり10%ぐらい深い睡眠が増えてます。

 

他の人のレビューとか見ると、効き目がある量は個人差があるという書き込みを見ました。

今度は量を変えて試してみようと思います。

 

まとめ

  • グリナの常用は経済的にはキツイ!グリシンなら気にならないコストで常用できる。
  • 1kgあれば約1年分!
  • 業者によっては雑な梱包で怪しげ。
  • 薬事法外のものなので実際ちゃんとしたものなのかはわからない。口に入れるものなので自己責任で。
  • 味は飲みやすい甘い味。
  • 効果は実感なしだけど、データー見ると効果があると言える。もう少し継続してみます。
  • 適量は個人差があるのかも知れない。

この業者さんは人によってはかなり抵抗あるかも知れません。

グリシンのワードで検索すると他にも似たような出品が沢山あるので色々見て決めて下さい。

 

 

 本家

味の素 グリナ 6本入り

味の素 グリナ 6本入り

  • メディア: ヘルスケア&ケア用品
 

グリシン

純 グリシン 1Kg (アミノ酸) 無添加 各サイズあります
 

Huawei watch GT は睡眠ログがとれますよ!

結構買いやすい価格です。

こちらが最新型です。

 

www.richardh.work