はじめに
Milk-v DuoはCPUとしてRisc-vを搭載したLinuxボードで、秋葉原ロボット部で積極的に活用しているボードです。秋葉原ロボット部の勉強会の成果は、各種展示会での成果物の展示や書籍の販売として公表されています。
2024年に開催されたNT京都とつくろがや!の秋葉原ロボットのブースで行った展示内容を紹介します。
Milk-v duo上のpython
Milk-v duo上のpythonでは、pingpongライブラリを使うことで、GPIOに接続されたセンサを制御可能です。
シリアルコンソールを使って、Milk-v duo上でpythonプログラムを作成してもいいのですが、Mind+でpythonプログラムを作成します。
「pinpong」ボタンをクリックすると、使用できるデバイスが表示されます。
dfrobot用の基板に接続されたデバイスが表示されますが、ピン配置がわかれば、汎用のデバイスでも利用可能です。
「DHT11/22 Temperature a…」と「OLED Display」を選んで、「戻る」ボタンをクリックします。
「DHT」と「OLED」のブロックが利用可能となります。
プログラムが完成したら、Milk-v duoにpythonプログラムを転送して、動作確認を行います。
動作中の写真を以下に示します。
今回のプログラム例
今回使用したプログラムを以下に示します。
DHT22の取得した数値を、OLED一定時間ごとに表示します。
# -*- coding: utf-8 -*-
import time
from pinpong.board import Board, Pin
from pinpong.libs.dfrobot_ssd1306 import SSD1306_I2C
from pinpong.libs.dfrobot_dht20 import DHT20
Board("MILKV-DUO").begin()
dht20 = DHT20()
oled=SSD1306_I2C(width=128, height=64, bus_num=0)
led = Pin(Pin.A15, Pin.OUT)
# oled.set_font(font="default", width = 15, height = 15)
for index in range(3):
oled.show()
led.value(1)
print("Temperature: {} 'C".format(dht20.temp_c()))
print("Humidity: {} %".format(dht20.humidity()))
oled.text("Temperature: ",0,0,8)
oled.text("{} 'C ".format(dht20.temp_c()),64,16,8)
oled.text("Humidity: ",0,32,8)
oled.text("{} %".format(dht20.humidity()),64,48,8)
led.value(0)
time.sleep(10)
oled.show()
おわりに
Milk-v duoのGPIOに接続したデバイスの制御をpythonで行いました。さらに、pythonのプログラミングは、Mind+のブロックプログラミングで作成しました。他のLinuxボードのGPIOでも、pinpongライブラリを介してpythonプログラムを用いた制御ができるかと思います。