1.8インチ液晶モジュール [M018C7735SPI]
Post date: 2014/08/30 7:11:01
aitendo 1.8インチ液晶モジュール [M018C7735SPI]を接続し, RASPBERRY LIFEを参考にプログラム作成
- M018C7735SPIにピンをハンダ付け
- SPI 利用のための設定
$ sudo vi /etc/modprobe.d/raspi-blacklist.conf
#blacklist spi-bcm2708
$ sudo vi /etc/modules spidev $ sudo shutdown -h now
- 電源を切った後,データシートを確認しながら RapsberryPi に接続
- 参考 : Raspberry Pi トライ日記, 回路図(aitendo), RaspberryPi 応用編(こじ研)
- owner 変更 (やらない!!)
$ ls -la /dev/spidev0.0
crw------- 1 root root 153, 0 1月 1 1970 /dev/spidev0.0
$ sudo chmod 666 /dev/spidev0.0$ sudo chmod 666 /dev/spidev0.1
LCD動作テスト
LCD動作テスト
- 準備
$ sudo apt-get instal python-pip
$ sudo pip install spidev
- ※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利用テスト
LCD利用テスト
- 準備
$ sudo apt-get install ttf-kochi-gothic
$ sudo apt-get install python-urllib3
$ sudo pip install pillow
- RASPBERRY LIFEのサンプルで動作テスト ( 画像ファイルの表示, 画像ファイルの表示高速版, 画像の部分書き換え )
- 全てアドレスを(00-7f, 00-9f)に変更
- 修正点:
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))
- 改変して,「明日のお天気」 + 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()
課題
- 最後に GPIO.cleanup() すると表示が消える
- やらないと気持ち悪い(RPi.GPIO basics 3 – How to Exit GPIO programs cleanly, avoid warnings and protect your Pi)
- Frame buffer へ書き込み,そこからの転送が必要か?