手作り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

Raspberry Pi3B(2Bも)ではpull up抵抗の関係でLCDのAQM0802Aがうまく動作しないらしい。
参考: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

可変三端子レギュレータLM338Tを使った電源回路。
12V4Aの電源装置を繋いで、5V(写真では5.02V)に電圧を落としている。
入力が12Vだとヒートシンクの熱容量が足りない感じ。もっと大きなものを購入すればよかった。

Raspberry Pi3 model B2016/05/21 15:01:06

Raspberry Pi3 model Bを購入した。
電源は5Vで2.5A以上推奨らしいので、可変三端子レギュレータLM338Tを使って用意した。
写真のような構成(ディスクプレイ、Unifyingレシーバー接続)なら1.5Aのスマホ用充電器でも起動(負荷無し)できた。

手作りEFIコンピュータ ―2016/02/14 20:33:57

途中経過を記録。

手作りEFIコンピュータ ―2016/02/14 20:31:05

途中経過を記録。

手作りEFIコンピュータ ―2016/02/13 16:27:20

久しぶりに配線を進めたので途中経過を記録。