手作りEFIコンピュータ ― ― 2016/09/10 18:21:21
とりあえずメモリと外付けROM回路追加完了。
これから認識できるか確認となるが、どうなることやら。
手作りEFIコンピュータ ― ― 2016/09/09 16:05:49
手作りEFIコンピュータ ― ― 2016/09/08 15:46:45
Raspberry Pi3でAQM0802Aを動かす ― 2016/07/18 13:20:22
参考:http://raspibb2.blogspot.jp/2015/12/blog-post_31.html
実際接続してもうまく動作しなかった。
せっかく買ったのに残念だったので、ソフトウェア(Python)でI2Cの実装をしてI2C専用GPIO(pin3,pin5)を使わないで動作を試みた。
結果としてとりあえず動作したので、そのソフトウェアを公開します。
写真の配線はすごく適当ですみません。
3.3V電源(pin1)とVDD,RESETを接続、GPIO27(pin13)とSDAを接続、GPIO22(pin15)とSCLを接続、GND(pin20)とGNDを接続しています。
AQM0802Aのpull up抵抗は有効にしています。
改版は自由に行っていただいて構いません。AQM0802Aを有効に使ってください。
LCD_test.py
--------------------
#!/usr/bin/env python
#
#http://firewall.asablo.jp/blog/
#
import RPi.GPIO as GPIO
import time
#GPIO27 = Pin13
#GPIO22 = Pin15
GPIO_SDA = 27
GPIO_SCL = 22
clock = 400000 #100000 or 400000
wait = float(1) / clock
GPIO.setmode(GPIO.BCM)
GPIO.setup(GPIO_SDA,GPIO.OUT, pull_up_down=GPIO.PUD_OFF, initial=True)
GPIO.setup(GPIO_SCL,GPIO.OUT, pull_up_down=GPIO.PUD_OFF, initial=True)
def I2C_Start():
time.sleep(0.5)
GPIO.output(GPIO_SDA, False)
time.sleep(wait)
GPIO.output(GPIO_SCL, False)
time.sleep(wait)
return
def I2C_Stop():
time.sleep(wait)
GPIO.output(GPIO_SCL, True)
time.sleep(wait)
GPIO.output(GPIO_SDA, True)
time.sleep(wait)
return
def I2C_WriteAddress(data):
data = data << 1
data = data & 0xFE
for i in range(8):
bit = data & 0x80
if(bit % 127 == 1):
GPIO.output(GPIO_SDA, True)
else:
GPIO.output(GPIO_SDA, False)
time.sleep(wait)
GPIO.output(GPIO_SCL, True)
time.sleep(wait)
GPIO.output(GPIO_SCL, False)
time.sleep(wait)
data = data << 1
GPIO.setup(GPIO_SDA,GPIO.IN,pull_up_down=GPIO.PUD_OFF)
GPIO.output(GPIO_SCL, True)
time.sleep(wait)
result = GPIO.input(GPIO_SDA)
time.sleep(wait)
GPIO.output(GPIO_SCL, False)
GPIO.setup(GPIO_SDA,GPIO.OUT, pull_up_down=GPIO.PUD_OFF)
GPIO.output(GPIO_SDA, False)
return result
#動作未確認
def I2C_ReadAddress(data):
data = data << 1
data = data | 0x01
for i in range(8):
bit = data & 0x80
if(bit % 127 == 1):
GPIO.output(GPIO_SDA, True)
else:
GPIO.output(GPIO_SDA, False)
time.sleep(wait)
GPIO.output(GPIO_SCL, True)
time.sleep(wait)
GPIO.output(GPIO_SCL, False)
time.sleep(wait)
data = data << 1
GPIO.setup(GPIO_SDA,GPIO.IN,pull_up_down=GPIO.PUD_OFF)
GPIO.output(GPIO_SCL, True)
time.sleep(wait)
result = GPIO.input(GPIO_SDA)
time.sleep(wait)
GPIO.output(GPIO_SCL, False)
GPIO.setup(GPIO_SDA,GPIO.OUT, pull_up_down=GPIO.PUD_OFF)
GPIO.output(GPIO_SDA, False)
return result
def I2C_Write(data):
for i in range(8):
bit = data & 0x80
if(bit % 127 == 1):
GPIO.output(GPIO_SDA, True)
else:
GPIO.output(GPIO_SDA, False)
time.sleep(wait)
GPIO.output(GPIO_SCL, True)
time.sleep(wait)
GPIO.output(GPIO_SCL, False)
time.sleep(wait)
data = data << 1
GPIO.setup(GPIO_SDA,GPIO.IN,pull_up_down=GPIO.PUD_OFF)
GPIO.output(GPIO_SCL, True)
time.sleep(wait)
result = GPIO.input(GPIO_SDA)
time.sleep(wait)
GPIO.output(GPIO_SCL, False)
GPIO.setup(GPIO_SDA,GPIO.OUT, pull_up_down=GPIO.PUD_OFF)
GPIO.output(GPIO_SDA, False)
return result
#動作未確認
def I2C_Read():
data = 0
GPIO.setup(GPIO_SDA,GPIO.IN,pull_up_down=GPIO.PUD_UP)
GPIO.output(GPIO_SDA, False)
time.sleep(wait)
GPIO.output(GPIO_SCL, False)
for i in range(8):
time.sleep(wait)
GPIO.output(GPIO_SCL, True)
time.sleep(wait)
bit = GPIO.input(GPIO_SDA)
GPIO.output(GPIO_SCL, False)
time.sleep(wait)
data = data << 1
data = data + (bit & 0x01)
GPIO.setup(GPIO_SDA,GPIO.OUT,pull_up=GPIO.PDU_UP)
GPIO.output(GPIO_SDA,False)
GPIO.output(GPIO_SCL, True)
time.sleep(wait)
GPIO.output(GPIO_SCL, False)
time.sleep(wait)
GPIO.output(GPIO_SCL, True)
return data
#main
#Initialize
I2C_Start()
I2C_WriteAddress(0x3e)
I2C_Write(0x38)
I2C_Write(0x39)
I2C_Write(0x14)
I2C_Write(0x70)
I2C_Write(0x56)
I2C_Write(0x6C)
time.sleep(0.2)
I2C_Write(0x38)
I2C_Write(0x0C)
I2C_Write(0x01)
I2C_Stop()
#1行目
I2C_Start()
I2C_WriteAddress(0x3e)
I2C_Write(0x00)
I2C_Write(0x80)
I2C_Stop()
#AQM0802A
I2C_Start()
I2C_WriteAddress(0x3e)
I2C_Write(0x40)
I2C_Write(0x41)
I2C_Write(0x51)
I2C_Write(0x4D)
I2C_Write(0x30)
I2C_Write(0x38)
I2C_Write(0x30)
I2C_Write(0x32)
I2C_Write(0x41)
I2C_Stop()
#2行目
I2C_Start()
I2C_WriteAddress(0x3e)
I2C_Write(0x00)
I2C_Write(0xC0)
I2C_Stop()
#firewall
I2C_Start()
I2C_WriteAddress(0x3e)
I2C_Write(0x40)
I2C_Write(0x66)
I2C_Write(0x69)
I2C_Write(0x72)
I2C_Write(0x65)
I2C_Write(0x77)
I2C_Write(0x61)
I2C_Write(0x6C)
I2C_Write(0x6C)
I2C_Stop()
time.sleep(1)
GPIO.cleanup()
--------------------
Raspberry Pi3 model B 電源回路 の熱対策 ― 2016/05/28 15:06:59
通電時のヒートシンク温度が前よりも上がらないので、だいぶ放熱している感じ。
Raspberry Pi3 model B 電源回路 ― 2016/05/21 15:08:37
12V4Aの電源装置を繋いで、5V(写真では5.02V)に電圧を落としている。
入力が12Vだとヒートシンクの熱容量が足りない感じ。もっと大きなものを購入すればよかった。
Raspberry Pi3 model B ― 2016/05/21 15:01:06
電源は5Vで2.5A以上推奨らしいので、可変三端子レギュレータLM338Tを使って用意した。
写真のような構成(ディスクプレイ、Unifyingレシーバー接続)なら1.5Aのスマホ用充電器でも起動(負荷無し)できた。
最近のコメント