1.8インチ液晶モジュール [M018C7735SPI]

Post date: 2014/08/30 7:11:01

aitendo 1.8インチ液晶モジュール [M018C7735SPI]を接続し, RASPBERRY LIFEを参考にプログラム作成

  1. M018C7735SPIにピンをハンダ付け
  2. SPI 利用のための設定
$ sudo vi /etc/modprobe.d/raspi-blacklist.conf 

#blacklist spi-bcm2708 

$ sudo vi /etc/modules spidev  $ sudo shutdown -h now 
    1. 電源を切った後,データシートを確認しながら RapsberryPi に接続
    2. 参考 : Raspberry Pi トライ日記, 回路図(aitendo), RaspberryPi 応用編(こじ研)
    1. owner 変更 (やらない!!)
            1. $ ls -la /dev/spidev0.0
              • crw------- 1 root root 153, 0 1月 1 1970 /dev/spidev0.0
            2. $ sudo chmod 666 /dev/spidev0.0
            3. $ sudo chmod 666 /dev/spidev0.1

LCD動作テスト

    • 準備
$ sudo apt-get instal python-pip 
$ sudo pip install spidev 

RASPBERRY LIFEのサンプルを修正して動作テスト ( テストパターン )

      • ※RASPBERRY LIFE のブログで使用している T18SPI-2P は左上座標が(2,1)となっているためデータ転送時にシフトさせているが, M018C7735SPI は(0,0)となっているので,修正が必要.
      • 修正点: アドレスを0,0開始に修正
self.write((0x2A, 0x00, 0x02, 0x00, 0x81)) self.write((0x2B, 0x00, 0x01, 0x00, 0xA0)) 
-> 
self.write((0x2A, 0x00, 0x00, 0x00, 0x7F)) self.write((0x2B, 0x00, 0x00, 0x00, 0x9F)) 

LCD利用テスト

    • 準備
$ sudo apt-get install ttf-kochi-gothic 
$ sudo apt-get install python-urllib3 
$ sudo pip install pillow 

self.write((0x2A, 0x00, 0x02, 0x00, w + 1)) 
self.write((0x2B, 0x00, 0x01, 0x00, h)) 
-> 
self.write((0x2A, 0x00, 0x00, 0x00, w - 1)) 
self.write((0x2B, 0x00, 0x00, 0x00, h - 1)) 
  1. 改変して,「明日のお天気」 + BMP085 + 最後に「IPアドレス表示」プログラム作成 (mainのみ掲載)
if __name__ == "__main__": 
    ##################################### 
    # read BMP085 
    bmp = BMP085.BMP085() 
    # Attempt to get sensor readings. 
    temp = bmp.read_temperature()        # (C) 
    pressure = bmp.read_pressure()/100.0 # (hPa) 
    altitude = bmp.read_altitude()       # (m) 
    ##################################### 
    # post local data to GrowthForecast 
    host = " http://localhost:5125/api/sensor/weather/" 
    targs = shlex.split("curl -F number=" + str(temp) + host + "temperature") 
    pargs = shlex.split("curl -F number=" + str(pressure) + host + "pressure") 
    p = subprocess.Popen(pargs) 
    p = subprocess.Popen(targs) 
    ##################################### 
    # initialize the object of livedoor weatherforecast (from LASPBERRY LIFE) 
    fst = Forecast() 
    ##################################### 
    # draw LCD 
    #  upper half : Forecast 
    fst.show('XXXXXX')  # Location ID 
    #  lower half (0,90)-(127,159) : Local data 
    font16 = ImageFont.truetype("/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf", 16) 
    dt = datetime.datetime.today() 
    fst.draw.text([0, 90], "[ LOCAL ]", font=font16, fill=(0xFF, 0xFF, 0xFF)) 
    fst.draw.text([0, 106], str(dt.month)+"-"+str(dt.day)+" "+str(dt.hour)+":"+str(dt.minute), font=font16, fill=(0xFF, 0xFF, 0xFF)) 
    fst.draw.text([0, 122], "T="+str(temp)+"(C)", font=font16, fill=(0xFF, 0xFF, 0xFF)) 
    fst.draw.text([0, 138], "p="+str(int(pressure))+"(hPa)", font=font16, fill=(0xFF, 0xFF, 0xFF)) 
    fst.lcd.blit(fst.im,0,90,127,159) 
    #     time.sleep(60.0) 
    ##################################### 
    #  show IP address 
    fst.draw.rectangle([0, 90, 127, 159], fill=(0x40, 0x00, 0x80)) 
    myip=ipget.ipget() 
    fst.draw.text([0, 90], "eth0 :", font=font16, fill=(0xFF, 0xFF, 0xFF)) 
    fst.draw.text([0, 106], myip.ipaddr("eth0"), font=font16, fill=(0xFF, 0xFF, 0xFF)) 
    fst.draw.text([0, 122], "wlan0:", font=font16, fill=(0xFF, 0xFF, 0xFF)) 
    fst.draw.text([0, 138], myip.ipaddr("wlan0"), font=font16, fill=(0xFF, 0xFF, 0xFF)) 
    fst.lcd.blit(fst.im,0,90,127,159) 
    #     time.sleep(5.0) 
    ##################################### 
    GPIO.cleanup() 

課題