2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ATTiny13で温度計

Last updated at Posted at 2018-05-16

ATTiny13で温度計を作ってみました。センサーにはLM61を使い一秒おきにアナログ値(0-1023)を シリアルで出力するように作りました。Arduino 1.0.6でBasicSerial3というライブラリを利用して600バイトくらいになりました。

LM61は秋月で4個200円で買った物ですが、今見てみたら1個60円と値上げされてました。

/* tx and rx pin is hard code in BasicSerial3.S */

#define BAUD_RATE 38400

#include <BasicSerial3.h>

#define LM61_APIN  2

void setup() {
  // 10 sec wait at boot
  delay(10000);
}

void serOut(const char* str) {
   while (*str) TxByte (*str++);
}

void serNumOut(int val)
{
int div = 1000;
  while(div != 0)
  {
    TxByte('0' + ((val / div) % 10));
    div /= 10;
  }
}

void loop(){
  int temp;
  // val is 0 to 1024
  temp = analogRead(LM61_APIN);
  serNumOut(temp);
  serOut("\n\r");
  // wait 1 sec
  delay(1000);
}

出力はこんな感じです。

0529
0529
0529
0529
0529
0529
0529
0529
0529
0528

写真(2018-05-16 22.14).jpg

『昼夜逆転』工作室さんを参考にさせてもらい、LM61の出力を何かからはがしたNJM2904で2倍(Rf=5KΩ/Rg=5KΩ)にしてATTiny13に入れています。

このシリアル出力を蟹さんのmrubyで受けてThingSpeakに投げてテストしてました。実際の温度の計算はMATLABでおこないました。

ボーレートが38400なのは蟹さんのbootがこのボーレートでそのままmrubyで使っているからです。

Adruinoでfloatを使うとバイナリサイズが大きくなるので、生の値を蟹さんに渡しているのですが、そもそも蟹さんのmrubyはfloatが使えないので、そうするしかなかったです。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?