Sipeed Maixduino で 温度センサ DS18B20 を堪能 ーエッジAI活用への道 6ー
金魚水槽管理システムを目指しております このエッジAI活用への道。
水槽の温度やpHを測定し、画像認識によって金魚の位置も監視したいと考えております。
夢は大きく#エッジAI活用への道 #Maixduino pic.twitter.com/rX7ABKuoEU
— HomeMadeGarbage (@H0meMadeGarbage) September 29, 2019
ここでは温度センサ DS18B20 で温度を測定して測定値をMaixduinoのディスプレイに表示するところまで試してみました。
目次
構成
Maixduinoで直接DS18B20 を制御したかったのですが、現行ファームにはライブラリがないため断念しました。Arduinoマイコンを介してUARTで温度を取得するようしました。
部品
- Sipeed Maixduino
-
Adafruit Metro Mini 328 – 5V 16MHz
- 防水温度センサ DS18B20
この温度センサについては以下もご参照ください。
Adafruit Metro Miniコード
Arduino IDEでコーディングできるマイコンのAdafruit Metro Mini 328を使用して温度センサのデータを取得してMaixduinoへUART送信します。
Adafruit Metro Mini 328はArduino IDEにおいてAruino UNOとして振る舞いボードライブラリのインストールなどは必要ありません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
#include <OneWire.h> #include <DallasTemperature.h> #define ONE_WIRE_BUS 11 // 温度センサデータ線(黄) #define SENSER_BIT 13 // 精度の設定bit OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); float x = 0.0; char temp[10]; void setup(void){ Serial.begin(9600); Serial.println("Dallas Temperature IC Control Library Demo"); sensors.begin(); sensors.setResolution(SENSER_BIT); } void loop(void){ sensors.requestTemperatures(); // 温度取得要求 x = sensors.getTempCByIndex(0); dtostrf(x, 6, 2, temp); //UART送信 Serial.write(temp); delay(1000); } |
温度を測って1秒おきにUART送信しています。
Maixduino UART受信
Adafruit Metro Mini 328からの温度データをUARTで受信します。
MicroPythonでコーディングし、MaixPy IDEで書き込みました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
from fpioa_manager import fm from machine import UART from board import board_info from fpioa_manager import fm import lcd lcd.init() fm.register(board_info.D[2], fm.fpioa.UART1_RX, force=True) uart_1 = UART(UART.UART1, 9600,8,0,0, timeout=1000, read_buf_len=4096) while(1): read_data = uart_1.read() if read_data: print(read_data) lcd.draw_string(100, 100, read_data + " deg", lcd.WHITE, lcd.BLACK) |
D2ピンでUART受信して値をディスプレイに表示します。
UART受信コードはトラ技2019年11月号のRISC-V特集の第4章が非常に参考になりました。
参考
動作
温度センサの値をMaixduinoのディスプレイに表示させています。
おわりに
マイコンを介してですが温度センサの値がMaixduinoで取得できるようになりました。金魚水槽の水温を監視しロギングできるようにしたいと考えております。
さてそろそろMaixduinoに搭載されているESP32を使用してwebとの連携も試していかないといけませんねぇ。
それでは次の道でお会いしましょう!