« 2026年3月 | トップページ | 2026年5月 »

2026年4月10日 (金)

自販機で購入したマイコンUIAPduino Pro Micro CH32V003 V1.4

Img_1333s
どこも在庫なし、となると入手したくなる。
調べてみたら秋葉原にある自販機で買えるらしい!
ってことで買ってきました。

思ったよりメモリーが少ない、
I2Cのデバイスをつなくと70%越え。

色々考えて?、地中の水分計を作ってみた
Img4227s
最初はキャラクターディスプレイ、使用量92%

Img_4239s
グラフィックディスプレイで使用量86%となりました。

290円という価格は素晴らしいことなんだけど、
メモリーが、、、

 

 

| | コメント (0)

2026年4月 2日 (木)

苗育成用ヒーターの温度制御

Img_4205s
ヒーターの上で苗を育てているところ。
ヒーター自身の温度はコントロールできるけど、
苗の土の温度はコントロールできないので気温などの変化で大きく変わってしまいます。
ってことで、土の温度でヒーターの温度管理をすることに。
01
使用したのは
マイコンはarduino UNO R3
温度センサーは防水温度センサーDS18B20(アマゾン)
表示用液晶AQM1602_I2C (秋月、販売コード108896)
ドライバー内蔵リレーモジュール(秋月、113573)
その他、AC100のON /OFFリレー、ボタンスイッチなど汎用部品が必要です。
Img_4215s
動作確認後、、、完成写真を取ろうとした時に、
落として液晶パネルが壊れてしまいました。
もう暖かくなってヒーターも必要ない時期、
修理するか、気に食わない部分があるので作り直すか???
それ以前に設定温度はプログラムの書き換えで対応すれば液晶パネルもボタンをいらないじゃん。
次の苗を育てる時までに決めましょ!

以下使用したプログラム
基本的には温度センサーのライブラリーにあるサンプルプログラムと液晶パネルは秋月が公開しているサンプルプログラムの寄せ集めです。
一部サブルーチンは省略しています、その部分はサンプルプロフラムを参照してください。

# include <OneWire.h>
# include <DallasTemperature.h>
// Data wire is plugged into port 2 on the Arduino
# define ONE_WIRE_BUS 2
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire);
#include <Wire.h>
#define LCD_ADRS 0x3E 
#define Relay_out   4   // Relay drive
#define Black_in    7   // Black Button switch
#define Red_in      8   // Red Button switch
char Umoji[] ="RealTemp      C ";
char Dmoji[] ="Set Temp      C ";
float Rtmp;
float Stmp = 30.0;

void setup(void)
{
 // Start up the Temperature IC Control library
  sensors.begin();
 // display init
  Wire.begin();
  init_LCD();   
 //IO init
  pinMode(Relay_out, OUTPUT);
  pinMode(Black_in, INPUT);
  pinMode(Red_in, INPUT);
  digitalWrite(Relay_out,LOW); //relay OFF  
}

void loop(void)
{
  // ボタン情報を取り込んで設定温度を更新する
  if (!digitalRead(Red_in))    Stmp += 1.0; 
  if (!digitalRead(Black_in))  Stmp -= 1.0; 
  // call sensors.requestTemperatures() to issue a global temperature 
  // request to all devices on the bus
  sensors.requestTemperatures(); // Send the command to get temperatures
  Rtmp = sensors.getTempCByIndex(0);
  //液晶パネル上段に表示
  dtostrf(Rtmp,-1,1,&Umoji[9]);  // 浮動小数点データを文字列に変換
  writeCommand(0x02);            // Retern Home  
  for(int i = 0; i < 16; i++) {
   writeData(Umoji[i]);
  } 
  //液晶パネル下段に表示
  dtostrf(Stmp,-1,1,&Dmoji[9]);
  writeCommand(0x40+0x80);      // SET下段ADRESS  
  for(int i = 0; i < 16; i++) {
   writeData(Dmoji[i]);
  } 

  // 設定温度と実測温度を比較して実測温度が低ければリーレーをONする
  if (Stmp > Rtmp)  
    digitalWrite(Relay_out,HIGH);
  else
    digitalWrite(Relay_out,LOW);

  delay(500);
}

 

 

 

 

 

 

 

 

 

| | コメント (0)

« 2026年3月 | トップページ | 2026年5月 »