Vol.749 6.Jul.2018

キャンピングカーフェスティバルin北陸 PHP(6)〜CookieとSession ラズパイ(13)〜I2C接続LCDディスプレィ

C キャンピングカーフェスティバルin北陸

by fjk

6/23・24に金沢市の石川県産業展示館で開催された「キャンピングカーフェスティバルin北陸2018」に行ってきました。軽キャンカーからバスコン・大型のトレーラ型まで多くのキャンピングカーが展示されていました。 キャブコンでは最後部に2段ベットがあるタイプ(4人就寝)のものが多かったです。バンコンも人気でした。トレーラーは家具が立派で車の中にいることを忘れそうです。来場目的のフロット・モビールさんのブースでシュピーレンのオーニングの使い方も教えてもらいました。ペット連れでは宿に宿泊しづらいので、キャンピングカーを利用される方が多く、会場にはペット連れの方も多かった。また、車に乗車するには順番を待たなければなかなか乗れませんでした。
会場入り口で 会場の案内板(ワンちゃんも) 会場の雰囲気
目的のシュピーレン キャブコン最後尾の2段ベット) トレーラーは走るハウス

折角、金沢に行ったので、東茶屋街と名物飴屋さんにも寄りました。東茶屋街はスイーツと黄金、そして小物の店が多く、特に綺麗な着物を着た多くの若い女性で賑わっていました。
東茶屋街(この風景が有名) 金箔で飾られた黄金の蔵 趣のある飴屋(俵屋)


P PHPプログラミング(6) 〜CookieとSession〜

by fjk

クッキー(Cookie)とは、訪問者のコンピューターに一時的にデータを書き込み保存し、例えば、ログイン情報などが2回目からは自動的に処理される仕組み。

1.cookieを書き込む
setcookie('変数名' ,データ , 有効期限)  ・・・期限は「time()+秒数」で指定
・画面に表示する前(宣言の前)に実行する必要がある。
・ただし、ユーザ側でクッキーの作成を拒否している場合がある。
2.cookieの読み込みは変数名を指定して入手
$_COOKIE['変数名']
3.cookieを削除する
unset($_COOKIE['変数名'])
または、setcookie関数で過去の時間を設定
(COOKIEは期限が終了すると消去される)
4.セッション(session)はクッキーと異なり、データはサーバー側に保存され、訪問者のIDのみがクッキーに保存される。
ssesion_start() を最初に実行すると、PHPが自動でデータを格納してくれる。
$_SESSION['変数名'] でアクセス


R ラズベリーパイ(13) 〜I2C接続LCDディスプレィ〜

by fjk

ラズパイにはGPIO2(SDA1)とGPIO3(SCL1)のI2Cインターフェースが準備されており、このI2Cを使って、秋月電子の「RaspberyPiキャラクタ液晶ディスプレィモジュールキット」(\820、AQM0802+PCA9515)でI2C接続をテストする。

@I2Cを使えるようにする
メニュー/設定/RaspberryPiの設定 I2CのEnableラジオボタンをONにする
AAQM0802がデバイスとして認識されているか確認する(行末の1はラズパイ標準i2c-busを指定の意味)
sudo i2cdetect -y 1  ・・・sudoは無くても
・画面に接続されているI2Cデバイスの一覧が表示
・'3E'に表示があればAQM0802が認識されている。
BAQM0802を初期化する(行末のiは連続書き込みモードを指定) ↑<I2Cデバイスマップ>
sudo i2cset -y 1 0x3e 0x00 0x38 0x39 0x14 0x70 0x56 0x6c i  # Fuction設定
sudo i2cset -y 1 0x3e 0x00 0x38 0x0d 0x01 i   # clear Display
C"HellowPi"を画面に表示する
sudo i2cset -y 1 0x3e 0x00 0x80   # 1stLine Left set
sudo i2cset -y 1 0x3e 0x40 0x48 0x65 0x6c 0x6c 0x6f 0x78 0x50 0x69 i  # "HellowPi"
Dバックライトを点灯する場合
gpio -g mode 4 out
gpio -g write 4 1   # 消灯する場合: gpio -g write 4 0

ラズパイの設定 I2Cデバイスマップ

<i2cコマンド>

i2cget [-f][-y] i2cbus Chip-Address [Data-Address [mode]]
指定されたアドレスからデータを読み出す
-fオプション:強制アクセスモード(非推奨)
-yオプション:即実行モード
cモード:書き込んでから読み出す
i2cset [-f][-y] i2cbus Chip-Address Data-Address [Value] ・・ [mode]
bモード:バイト単位で書き込み
iモード:連続した書き込み
eモード:基本的にはiと同じだが、アドレス送出後に0x20が送られる
i2cdump [-y] i2cbus Chip-Address Data-Address
0x00から指定されたアドレスまで連続してデータを読み出す
i2cdetect [-y][-r] i2cbus Chip-Address [Data-start-Address[Data-end-address]]
2cアドレスをスキャンしackがあったアドレスを表示する
-rオプション:readモードでスキャンする

<smbusメソッド>
long write_quick(int addr) 読込(ビットのみ送信)
long read_byte(int addr) バイト読込
long write_byte(int addr, char val) バイト書込
long read_byte_data(int addr, char cmd) trans.読込
long write_byte(int add, char cmd, char val) trans.書込
long read_word_data(int addr, int cmd) word-trans.読込
long write_word(int add, char cmd, int val) word-trans書込
long process_call(int add, char cmd, int val) プロセスの呼出
long[] read_block_data(int add, char cmd) ブロックtrans.の読込
write_block_data(int add, char cmd, long vals[]) ブロックtrans.の書込
long[] block_process_call(int add, char cmd, long vals[]) ブロックtrans.プロセス
long[] read_i2c_block_data(int add, char cmd) trans.データをブロックで読込
write_i2c_block_data(int add, char cmd, long vals[]) trans.データをブロックで書込

PythonによるLCD表示
pythonでライブラリーとして、smbus(intel表記でI2Cライブラリのこと)を利用する
  sudo apt-get install python-smbus
<使い方>
  import smbus    ・・・ライブラリーを読み込む
  i2c = smbus.SMBus(1)    ・・・でインスタンスを得る

    aqm0802.py
    #!usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import smbus
    import time
    
    i2c_bus = smbus.SMBus(1) 	# 1 is bus number
    addr_LCD=0x3e   		# lcd address
    COMMAND=0x00
    DATA=0x40
    CLEAR=0x01
    HOME=0x02
    DSP_On=0x0f
    First_LINE=0x40
    Second_LINE=0x40+0x80
     
    ## LCD AQM0802
    
    def cmd_LCD( code ):
            i2c_bus.write_byte_data(addr_LCD, COMMAND, code)
            time.sleep(0.1)
      
    def write_LCD( message ):
            mojilist=[]
            for moji in message:
                    mojilist.append(ord(moji))             # append after trans acii-code
            i2c_bus.write_i2c_block_data(addr_LCD, DATA, mojilist)
            time.sleep(0.1)
     
    def init_LCD ():
            cmd_LCD(0x38)
            cmd_LCD(0x39)
            cmd_LCD(0x14)
            cmd_LCD(0x73)
            cmd_LCD(0x56)
            cmd_LCD(0x6c)
            cmd_LCD(0x38)
            cmd_LCD(CLEAR)
            cmd_LCD(DSP_On)
      
    ## main
    init_LCD ()
    cmd_LCD(CLEAR)
    write_LCD('Hellow!')
    cmd_LCD(Second_LINE)
    write_LCD(' Ras-Pi')
    

秋月電子のAQM0802 ラズパイのピン配置
(緑枠にaqm0802をセット)
aqm0802.py実行例


キャンピングカーフェスティバルin北陸 PHP(6)〜CookieとSession ラズパイ(13)〜I2C接続LCDディスプレィ