これは自分のためのメモです。
この備忘録を見られて真似されても結構ですが、動作の保証は出来かねます。
また、真似られたことで不測の不具合が発生しましても、私は一切の責任を負いません。
[I2Cを使用できるようにconfigを変更する]
sudo raspi-config nonint do_i2c 0
[OSにi2c関連toolをインストールする]
sudo apt-get install i2c-tools
[python3用のSSD1306ライブラリーをpip3でインストール]
sudo pip3 install Adafruit-SSD1306
sudo pip3 install adafruit-circuitpython-ssd1306
[必要に応じSSD1306のサンプルプログラムをダウンロード]
git clone https://github.com/adafruit/Adafruit_Python_SSD1306
pi@raspberrypi:~ $ cat ssd1306test.py
import board
import digitalio
from PIL import Image, ImageDraw, ImageFont
import adafruit_ssd1306
from time import sleep
import ipget
DEVICE_ADR = 0x3C
DISP_WIDTH = 128
DISP_HEIGHT = 64
tempfile='/sys/class/thermal/thermal_zone0/temp'
def getTemp():
with open(tempfile, 'r') as f:
rdata = f.readline()
t = float(rdata)/ 1000.0
return t
RESET_PIN = digitalio.DigitalInOut(board.D4)
i2c = board.I2C()
oled = adafruit_ssd1306.SSD1306_I2C(DISP_WIDTH, DISP_HEIGHT, i2c, addr=DEVICE_ADR, reset=RESET_PIN)
# Clear display.
oled.fill(0)
oled.show()
# Load a font in 2 different sizes.
font = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf", 28)
font2 = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf", 14)
font3 = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf", 12)
def main():
image = Image.new("1", (oled.width, oled.height))
draw = ImageDraw.Draw(image)
target_ip = ipget.ipget()
# print(target_ip.ipaddr("wlan0"))
wlan_ip = target_ip.ipaddr("wlan0")
t = getTemp()
cputemp = 'cputemp = %.2f c' % (t)
draw.text((0, 0), wlan_ip, font=font3, fill=255)
draw.text((0, 15), cputemp, font=font3, fill=255)
# Display image
oled.image(image)
oled.show()
sleep(30)
return
if __name__ == "__main__":
while True:
main()