Difference between revisions of "BakeBit - OLED 128x64"

From FriendlyELEC WiKi
Jump to: navigation, search
(Source Code)
 
(8 intermediate revisions by one other user not shown)
Line 3: Line 3:
 
==Introduction==
 
==Introduction==
 
[[File:BakeBit - OLED.jpg|thumb|OLED]]
 
[[File:BakeBit - OLED.jpg|thumb|OLED]]
*BakeBit - OLED是一个0.96寸模块,使用了一片128x64分辨率的单色OLED屏幕,OLED具有亮度高、对比度高、自发光、视角宽、功耗低等特点。模块使用了I2C接口,使用方便快捷。
+
* The BakeBit - OLED is a monochromatic OLED module. The OLED is 0.96" and its resoltuion is 128 x 64. Its interface is I2C.
*通过配置模块上的地址设置电阻,可设置模块I2C从地址为0X3C或0X3D,这样同一个I2C总线上可同时连接两个OLED模块。
+
* Users can set the I2C's address to either 0X3C or 0X3D and place two OLED modules on one I2C bus.
  
==特性==
+
==Hardware Spec==
* 使用标准的2.0mm 4 Pin BakeBit I2C接口
+
* Standard 2.0mm pitch 4-Pin BakeBit I2C Interface
* 128x64分辨率
+
* Resolution: 128 x 64
* 颜色:蓝色
+
* Color: blue
* 模块I2C地址可配置。
+
* I2C's address configurable
* PCB尺寸(mm):24x42
+
* PCB dimension(mm): 24 x 42
 
[[File:BakeBit - OLED_Top_PCB.png | frameless|400px|BakeBit - OLED_Top]]
 
[[File:BakeBit - OLED_Top_PCB.png | frameless|400px|BakeBit - OLED_Top]]
 
[[File:BakeBit - OLED_Bottom_PCB.png | frameless|359px|BakeBit - OLED_Bottom]]
 
[[File:BakeBit - OLED_Bottom_PCB.png | frameless|359px|BakeBit - OLED_Bottom]]
  
* 引脚说明:
+
* Pin Description:
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
|名称 || 描述
+
|Pin || Description
 
|-
 
|-
|GND  ||
+
|GND  || Ground
 
|-
 
|-
|5V    || 电源5V
+
|5V    || 5V Supply Voltage
 
|-
 
|-
 
|SDA    || I2C-SDA
 
|SDA    || I2C-SDA
Line 29: Line 29:
 
|}
 
|}
  
== 示例程序(1):Display System Info  ==
+
== Code Sample(1): Display System Info  ==
  
这个例子我们使用显示屏来显示系统信息,例如IP地址,存储空间和内存信息,CPU当前频率等。
+
When you run this code sample the system’s information will be listed on the OLED.
  
=== 硬件连接 ===
+
=== Hardware Setup ===
简单的将 OLED 模块插入随便一个 I2C 接口,如下面这样:
+
Connect the OLED module to the NanoHat Hub's I2C interface:
  
 
::{| class="wikitable"
 
::{| class="wikitable"
Line 42: Line 42:
 
|}
 
|}
  
=== 示例源代码 ===
+
=== Source Code ===
  
 
<syntaxhighlight lang="python">
 
<syntaxhighlight lang="python">
import time
 
import bakebit
 
import os
 
import psutil
 
from math import log
 
import multiprocessing
 
import platform
 
import socket
 
import bakebit_128_64_oled as oled
 
 
oled.init()                  #initialze SEEED OLED display
 
oled.clearDisplay()          #clear the screen and set start position to top left corner
 
oled.setNormalDisplay()      #Set display to normal mode (i.e non-inverse mode)
 
oled.setPageMode()          #Set addressing mode to Page Mode
 
 
byteunits = ('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB')
 
def filesizeformat(value):
 
    exponent = int(log(value, 1024))
 
    return "%.1f %s" % (float(value) / pow(1024, exponent), byteunits[exponent])
 
 
memUsage = psutil.phymem_usage()
 
diskUsage = psutil.disk_usage('/')
 
 
oled.setTextXY(0,0)
 
oled.putString("%s" % socket.gethostbyname(socket.gethostname()))
 
 
oled.setTextXY(0,1)
 
oled.putString("Mem:%s" % filesizeformat(memUsage.total))
 
 
import time
 
import time
 
import bakebit
 
import bakebit
Line 151: Line 123:
 
[https://github.com/friendlyarm/BakeBit/blob/master/Software/Python/bakebit_prj_SystemInfo.py Github]
 
[https://github.com/friendlyarm/BakeBit/blob/master/Software/Python/bakebit_prj_SystemInfo.py Github]
  
=== 运行示例 ===
+
=== Run Code Sample ===
 
   
 
   
假设你已经参考[http://wiki.friendlyarm.com/bakebit bakebit教程]安装了BakeBit源代码,<br />
+
Before you run the code sample you need to follow the steps in [http://wiki.friendlyarm.com/bakebit bakebit tutorial] to install the BakeBit package.<br />
要运行示例程序,可以在开发板上进入 BakeBit/Software/Python目录,运行bakebit_prj_SystemInfo.py:
+
Enter the "BakeBit/Software/Python" directory and run the "bakebit_prj_SystemInfo.py" program:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
cd ~/BakeBit/Software/Python
 
cd ~/BakeBit/Software/Python
Line 160: Line 132:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
=== 运行结果 ===
+
=== Observation ===
  
效果如下图所示:<br />
+
This is what users expect to observe:<br />
 
[[File:OLED-SystemInfo.jpg |frameless|500px]]
 
[[File:OLED-SystemInfo.jpg |frameless|500px]]
  
== 示例程序(2):UI Control via Joystick ==
+
== Code Sample(2): UI Control via Joystick ==
该示例是配合[[BakeBit - JoyStick]]来实现的,可参考[[BakeBit - JoyStick]]页面。
+
A [[BakeBit - JoyStick]] module is needed in this test case. For more details about the joystick refer to the [[BakeBit - JoyStick]] page.
  
==相关资料==
+
==Resources==
 
*[Schematic]([http://wiki.friendlyarm.com/wiki/images/f/f6/11-SCHEMATIC_OLED128x64.pdf BakeBit - OLED 128x64.pdf])
 
*[Schematic]([http://wiki.friendlyarm.com/wiki/images/f/f6/11-SCHEMATIC_OLED128x64.pdf BakeBit - OLED 128x64.pdf])
 
*[Datasheet]([http://wiki.friendlyarm.com/wiki/images/a/af/096-30-SPEC_QG-2864KLBEG01_VER_C.pdf BakeBit - OLED 128x64 Datasheet.pdf])
 
*[Datasheet]([http://wiki.friendlyarm.com/wiki/images/a/af/096-30-SPEC_QG-2864KLBEG01_VER_C.pdf BakeBit - OLED 128x64 Datasheet.pdf])
*[BakeBit Github项目](https://github.com/friendlyarm/BakeBit)
+
*[BakeBit Github Project Page](https://github.com/friendlyarm/BakeBit)
*[BakeBit Starter Kit手册](http://wiki.friendlyarm.com/bakebit/bakebit_starter_kit_manual_cn.pdf)
+
*[BakeBit Starter Kit User's Manual](http://wiki.friendlyarm.com/bakebit/bakebit_starter_kit_manual_en.pdf)
 +
 
 +
==Update Log==
 +
===December-14-2016===
 +
* Released English version
 +
 
 +
===Jan-19-2017===
 +
* Renamed "NEO-Hub" to "NanoHat-Hub"
 +
 
 +
===Jan-20-2017===
 +
* Renamed "NanoHat-Hub" to "NanoHat Hub"

Latest revision as of 00:10, 2 May 2017

查看中文

1 Introduction

OLED
  • The BakeBit - OLED is a monochromatic OLED module. The OLED is 0.96" and its resoltuion is 128 x 64. Its interface is I2C.
  • Users can set the I2C's address to either 0X3C or 0X3D and place two OLED modules on one I2C bus.

2 Hardware Spec

  • Standard 2.0mm pitch 4-Pin BakeBit I2C Interface
  • Resolution: 128 x 64
  • Color: blue
  • I2C's address configurable
  • PCB dimension(mm): 24 x 42

BakeBit - OLED_Top BakeBit - OLED_Bottom

  • Pin Description:
Pin Description
GND Ground
5V 5V Supply Voltage
SDA I2C-SDA
SCL I2C-SCL

3 Code Sample(1): Display System Info

When you run this code sample the system’s information will be listed on the OLED.

3.1 Hardware Setup

Connect the OLED module to the NanoHat Hub's I2C interface:

OLED-1.jpg OLED-2.jpg

3.2 Source Code

import time
import bakebit
import os
import psutil
from math import log
import multiprocessing
import platform
import socket
import bakebit_128_64_oled as oled
 
oled.init()                  #initialze SEEED OLED display
oled.clearDisplay()          #clear the screen and set start position to top left corner
oled.setNormalDisplay()      #Set display to normal mode (i.e non-inverse mode)
oled.setPageMode()           #Set addressing mode to Page Mode
 
byteunits = ('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB')
def filesizeformat(value):
    exponent = int(log(value, 1024))
    return "%.1f %s" % (float(value) / pow(1024, exponent), byteunits[exponent])
 
memUsage = psutil.phymem_usage()
diskUsage = psutil.disk_usage('/')
 
oled.setTextXY(0,0)
oled.putString("%s" % socket.gethostbyname(socket.gethostname()))
 
oled.setTextXY(0,1)
oled.putString("Mem:%s" % filesizeformat(memUsage.total))
 
oled.setTextXY(0,2)
oled.putString("Usage:%d%%" % memUsage.percent)
 
oled.setTextXY(0,3)
oled.putString("Disk:%s" % filesizeformat(diskUsage.total))
 
oled.setTextXY(0,4)
oled.putString("Usage:%d%%" % diskUsage.percent)
 
oled.setTextXY(0,5)
oled.putString("CPU:%s" % platform.processor())
 
oled.setTextXY(0,6)
oled.putString("Cores:%d" % multiprocessing.cpu_count())
 
with open("/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq") as f:
	freq = int(f.readlines()[0])/1000
	freqStr = "%d MHz" % freq
	if freq > 1000:
		freqStr = "%.1f GHz" % (float(freq)/1000.0)
	oled.setTextXY(0,7)
	oled.putString("Freq:%s" % freqStr)
oled.setTextXY(0,2)
oled.putString("Usage:%d%%" % memUsage.percent)
 
oled.setTextXY(0,3)
oled.putString("Disk:%s" % filesizeformat(diskUsage.total))
 
oled.setTextXY(0,4)
oled.putString("Usage:%d%%" % diskUsage.percent)
 
oled.setTextXY(0,5)
oled.putString("CPU:%s" % platform.processor())
 
oled.setTextXY(0,6)
oled.putString("Cores:%d" % multiprocessing.cpu_count())
 
with open("/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq") as f:
	freq = int(f.readlines()[0])/1000
	freqStr = "%d MHz" % freq
	if freq > 1000:
		freqStr = "%.1f GHz" % (float(freq)/1000.0)
	oled.setTextXY(0,7)
	oled.putString("Freq:%s" % freqStr)

Github

3.3 Run Code Sample

Before you run the code sample you need to follow the steps in bakebit tutorial to install the BakeBit package.
Enter the "BakeBit/Software/Python" directory and run the "bakebit_prj_SystemInfo.py" program:

cd ~/BakeBit/Software/Python
sudo python bakebit_prj_SystemInfo.py

3.4 Observation

This is what users expect to observe:
OLED-SystemInfo.jpg

4 Code Sample(2): UI Control via Joystick

A BakeBit - JoyStick module is needed in this test case. For more details about the joystick refer to the BakeBit - JoyStick page.

5 Resources

6 Update Log

6.1 December-14-2016

  • Released English version

6.2 Jan-19-2017

  • Renamed "NEO-Hub" to "NanoHat-Hub"

6.3 Jan-20-2017

  • Renamed "NanoHat-Hub" to "NanoHat Hub"