ESP-WROOM32 UNO R3 ボード

wroom-001

Arduino UNO R3 サイズの基板に ESP-WROOM-32 ボードを実装した、マイコンボードの組み立てキットです。

特徴としては
ビルドインBASIC起動用のジャンパーピンの実装。
内蔵RTC用のクロック実装。
ESP-WROOM-32は取り外し可。

個別パッケージの内容は

標準キット
表面実装部品は実装済の基板と部品一式
(写真の青で囲いんでる部品が実装済です)

フルキット
表面実装部品を含むすべての部品が未実装

標準キット+組み立てワークショップ
標準キットを使ったワークショップ形式の組み立て指導を行います。
会場はFGNのGOODAY FAB DAIMYOで実施します。

フルキット+組み立てワークショップ
フルキットを使ったワークショップ形式の組み立て指導を行います。
表面実装部品は簡易リフロー炉を使っての実装となります。
会場はFGNのGOODAY FAB DAIMYOで実施します。

すべてのセットに ESP-WROOM-32ボードは付属しています。

ワークショップはこちらで日程を組みますので出来るだけその日に参加してください。
どうしても都合がつかない場合は個別に対応いたします。

※ドキュメント類は現在製作中です。

二酸化炭素センサー MH-Z19 のPWM入力プログラムを割り込み処理で実現

二酸化炭素センサー MH-Z19 のPWM入力でデータを取得したくて
Arduino用のサンプルプログラムを使ってみたのですが、
このプログラムPWMのパルス長の計測をメイン処理の中でやっていたので、
このままでは他のセンサーとの併用が難しいので、データ取得部分を割り込み処理に変更してみました。

割り込みには「MsTimer2」ライブラリを使用しています。
またデータのフィルタリングテストの処理も追加しています。

公開されていた元のプログラム

#define pwmPin A0
#define LedPin 13

int prevVal = LOW;
long th, tl, h, l, ppm;

void setup() {
  Serial.begin(9600);
  pinMode(pwmPin, INPUT);
  pinMode(LedPin, OUTPUT);
}

void loop() {
  long tt = millis();
  int myVal = digitalRead(pwmPin);

  if (myVal == HIGH) {
    digitalWrite(LedPin, HIGH);
    if (myVal != prevVal) {
      h = tt;
      tl = h - l;
      prevVal = myVal;
    }
  }  else {
    digitalWrite(LedPin, LOW);
    if (myVal != prevVal) {
      l = tt;
      th = l - h;
      prevVal = myVal;
      ppm = 5000 * (th - 2) / (th + tl - 4);
      Serial.println("PPM = " + String(ppm));
    }
  }
}

割り込みによる処理に変更したプログラム

/*
  MH-Z19
  Intelligent Infrared CO2 Module

  MsTimer2 is a small and very easy to use library to interface Timer2 with
  humans. It's called MsTimer2 because it "hardcodes" a resolution of 1
  millisecond on timer2
  For Details see: http://www.arduino.cc/playground/Main/MsTimer2

  2017/08/20
  NextStep/Kaz Ueno
*/

#include 

/* Switch on LED on and off each half second */

#define     LedPin 13                               /* LED to pin 13 */
#define     pwmPin A0                               /* CO2 data input to pin A0 */

boolean     prevVal = LOW;

uint32_t    CO2_data = 0L;
uint8_t     data_count = 0L;

uint32_t    th, tl, h, l, ppm, ppm_now;

uint32_t    ppm_befor = 0L;
uint32_t    tt = 0L;



void flash()
{
  uint8_t myVal = digitalRead(pwmPin);
  
  tt++ ;
  if (myVal == HIGH) {
    digitalWrite(LedPin, HIGH);
    if (myVal != prevVal) {
      tl = tt ; 
      prevVal = myVal;
      tt =0L;
    }
  }  else {
    digitalWrite(LedPin, LOW);
    if (myVal != prevVal) {
      th = tt; 
      prevVal = myVal;
      ppm = 5000 * (th - 2) / (th + tl - 4);
      ppm_now = ppm_befor * 0.8 + ppm * 0.2 ;
      ppm_befor = ppm_now;
      data_count++ ;
      CO2_data += ppm_now;
      tt = 0L;
    }
  }
}

void setup()
{
  Serial.begin(9600);
  pinMode(pwmPin, INPUT);
  pinMode(LedPin, OUTPUT);

  MsTimer2::set(1, flash);                            // 1ms毎に割り込みを発生させる
  MsTimer2::start();
  delay(5000);
}

void loop()
{
  uint32_t    CO2_data_ave;
  CO2_data_ave = CO2_data / data_count;
  Serial.println("PPM = " + String(CO2_data_ave) +"," + String(ppm_now) +"," + String(ppm));
  CO2_data = 0L;
  data_count = 0L;

  delay(5000);
}

ハンダ付けの練習とLEDの勉強用LEDボード

KISO-001

ネクストステップ/福岡電子工作民
電子工作基礎講座(ワークショップ)で使った 「LEDボード」の製作キットです。

部品点数も少なく、また小さい部品も無いので半田付け初心者も安心してご購入いただけます。

実際に開催したワークショップでは、はんだ付けは初めてとか中学の授業以来と言う人も多かったのですが
全員無事に作り上げて、ちゃんと動作しました。

ワークショップの時は電池ボックスとプラグもセットにしていましたが
今回は基板と基板上の部品のみとなります。

電池BOXまたはUSB宮殿ケーブルを別にお買い求めください。

クリックポストでの発送となりますので別途送料164円かかります。

※2枚目の写真は完成形です。