はじめに
秋葉原ロボット部の有志で、milk-v duoを購入し、個々人が様々な実験を行って、勉強会内で報告しています。
Milk-v duoは9ドルのrisc-vコンピュータとして知られています。
ハードウェアは以下の通りです。
- CPUはCVITEKのCV1800B (C906@1Ghz + C906@700MHz)
- 最高1 GHzで動作するデュアルRV64コア
- 64 MBのラム
- オプションのアドオンボードを接続すると10/100Mbpsの速度でイーサーネットに接続可能
Milk-v duoのビルド環境では、WiringXがサポートされているので、様々なセンサ類をGPIOに接続可能です。
この記事では、DHT22をつないで、気温と湿度を測定します。
DHT22の接続
DHT22の3端子は、それぞれ、VCC、GND、SIGNALです。
VCCはDHT22を動作させるのに必要な電源を接続しますので、Milk-v duoの3V3端子に接続します。
GNDはMilk-v duoのGNDに接続します。
SIGNALはGPIOA15に接続します。
SIGNALの接続箇所は、「dht22.c」の「static int DHTPIN = 15;」で指定しています。
// Ref: https://github.com/technion/lol_dht22/blob/master/dht22.c
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <unistd.h>
#include <wiringx.h>
#define MAXTIMINGS 85
static int DHTPIN = 15;
static int dht22_dat[5] = {0, 0, 0, 0, 0};
static uint8_t sizecvt(const int read)
気温と湿度の測定プログラム
まず、Milk-v duoアドベントカレンダー
https://qiita.com/advent-calendar/2023
の3日の
「Milk-v duoのクロスコンパイル環境をWSL上に作成して、Gitで公開されているプログラムを動かしてみる」
に従って開発環境を構築してください。
使用するプログラムは
https://github.com/milkv-duo/duo-examples
にあります。
「duo-examples」ディレクトリに移動したら、以下のコマンドで「dht22」ディレクトリで、プログラムをビルドします。
$ cd dht22
$ make it
「dht22」と「dht22.o」が生成していることを確認します。
$ ls
dht22 dht22.c dht22.o Makefile
「dtt22」をmilk-v duoに転送します。
milk-v duoのコマンドプロンプト上で先ほど転送された「dht22」を実行します。
# ./dht22
Humidity = 42.00% Temperature = 18.5 *C
Humidity = 42.00% Temperature = 18.5 *C
Humidity = 42.00% Temperature = 18.5 *C
現在の湿度と気温が表示されます。
他のセンサを接続したい場合、以下のページが参考になります。
https://milkv.io/docs/duo/application-development/wiringx
参考 https://milkv.io/docs/duo/application-development/sensor-demo