Relative Content

Yearly Archives: 2018

Arduino NANO (6) Heart rate sensor

Arduinoセンサーキットに、Heart rate sensorある。 血中ヘモグロビンの近赤外線吸収の性質を利用して脈拍パルス検出するらしい。 Arduinoとの接続は3線(GND、VCC、アナログ入力)のみ。 「参考1」をみて、まず簡単の試す。ただA0の値を表示。 // Pulse Monitor Test Script int sensorPin = 0; void setup() { Serial.begin(9600); } void loop () { while(1) { Serial.print(analogRead(sensorPin)); Serial.print(‘\n’); } } 指先センサー装着 シリアルプロッターに見える上昇カーブ 安定した状態これはなにもわからない 指はセンサーから離れる時の下降カーブ。 「参考1」を参考して、Smoothingしても、同じ判別不能。困った。 #define samp_siz 4 #define rise_threshold 5 // Pulse Monitor Test Script int sensorPin = 0; void setup() { Serial.begin(9600); } […]

Arduino NANO (5) MAX30102 Pulse Ox Sensor

試み MAX30102 というPulse Ox Sensorを利用して、脈拍と酸素濃度を測る試み。 MAX30100の実例が多いが、MAX30102の実例が少ない。 プログラム 「参考1」のSparkFunのライブラリを利用する。そのライブラリはMAX30105(R,G,IR LED)用だが、MAX30102(欠Green LED)でも利用できる。 OLED表示するため、「参考2」の表示部分を合体した。なんとなく、バグがある様な気がする。 // Sample implementation of the MAX30100 PulseOximeter // Using the following module // http://www.ebay.com/itm/-/391709438817?ssPageName=STRK:MESE:IT // can not gaurantee if the app will work with other implementations of the module. //#include “MAX30100_PulseOximeter.h” #include <U8g2lib.h> #include <Wire.h> #include “MAX30105.h” #include “heartRate.h” #define REPORTING_PERIOD_MS 500 U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C u8g2(U8G2_R0); […]

Arduino NANO (4) Piezoelectric sensor

なぜ Piezoelectric sensorを利用して、住宅内の音声、振動から年配者の介護の補助を考えている。 Piezoelectric sensorが取った情報をAD変換して、簡単にWemosで処理すると思ったが、いろいろ意外なところで躓いた。 何か類似する、簡単に検証できる例がないか探した。 取り込み 「参考1」から、普通のPiezoelectric sensorで、簡単に脈拍を取れると、魅力と思った。 必要な部品が揃うまで時間がかかったが、一応出来た。 いろいろと試したところ 拡大写真 取れた波形。「参考1」の波形には似ているは、DC成分あるから、取り除くが課題。 参考 http://www.ohnitsch.net/2015/03/18/measuring-heart-rate-with-a-piezoelectric-vibration-sensor/

Arduino UNO (9) 2.4 inch LCD Shield

Arduino UNO用のシールドモジュール、2.4インチパラレルTFTモジュールを試した。 センサーの情報を表示するため、1年前も購入したが、なかなか試す機会がなく。 「参考1」から、mcufriend.comの2.4インチシールドモジュールには多数のバリエーションが有る。「参考2」のCHIP IDで対応するLCDドライバーを探せと、「参考3」のライブラリで、LCD_ID_readregで分かるらしい。しかしいろいろと引っかかって、しばらく挫折。 「参考4Mcufriend 2.4インチLCD を使ってみました」を参考に、一応サンプルの動作は数個確認した。 動作に必要なライブラリは次3つ。 いずれもArduinoの標準ライブラリから導入できる。 グラフィックドライブ https://github.com/prenticedavid/MCUFRIEND_kbv https://github.com/adafruit/Adafruit-GFX-Library4線式タッチスクリーン https://github.com/adafruit/Touch-Screen-Library MCUFRIEND_kbv に付属するgraphictest_kbvを実行するところ。なぜか、左右逆になっている? (さらに購入してわかったが、プログラムの問題ではなく、ハードウェアの問題かも。というか以前購入した2個は全部表示逆になっている、その後購入した2個は正しく表示) demoビデオも撮ったけど、ボケっている。 取り敢えず動くと確認した。   参考: http://nopnop2002.webcrow.jp/TFT/ILI9325-Para-1.html http://domoticx.com/arduino-shield-2-4-tft-lcd-touch/ https://github.com/prenticedavid/MCUFRIEND_kbv https://blogs.yahoo.co.jp/hobbyele/64853416.html  

Arduino 101 (5) Inclinometer

人間のアナログ信号ピエゾ、光電方式で取得、AD変換などでデジタル化して、いろいろ悩んでいるところ、なぜかESP8266は繋ぐと、高い確率でPC再起動(リブート)を起こされて、原因不明のまましばらく進展がなし、時間が無駄にし、焦る一方。 安定して動くUNO、NANOを触る時間が増えた。 なぜArduino 101 Arduino 101は傾斜度センサー装着、いつか二輪車を作ると考えているが、行動に移れないまま。 たまたまArduino 101で 傾斜計を作る記事を見て試したくなった。たまたまMulti Function Shieldも持っている。必要ものが全部そろう。試す気になった。 制作 Multi Function ShieldをArduino 101に刺し、参考のプログラムそのまま動く。うれしい。温度も測れる。 平面では0と表示。 傾斜計とした動作するビデオ   参考 https://www.hackster.io/lagsilva/simple-inclinometer-with-arduino-ef4fc2

WeMos (b10) ADS1115 Oscilloscope

前回WeMos (b9) ADS1115 for A/Dで数値の表示ができたが、Oscilloscopeのような表示すべく、改造を試み。 しかし、2月から、WeMos miniの開発中も頻繁にリブートしています。デバイストライバのバージョンを変えたり、OSを変えたりしても改善しない。 そのため、このプログラムは未完成のまま放置。 /* This is set up to use a 128×64 I2C screen, as available here: http://www.banggood.com/buy/0-96-oled.html For wiring details see http://youtu.be/XHDNXXhg3Hg */ #include <SPI.h> #include <Wire.h> #include <limits.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include <Adafruit_ADS1015.h> #include <math.h> #define WINDOW_SIZE 128 Adafruit_ADS1115 ads; /* Use this for the 16-bit version […]

Arduino NANO (3) SSH1106 & Walking bitmap

経緯 ちょっと大き目のOLEDが欲しくて、1.3 InchのOLEDを注文した。 ただもの挿し替えて使えると思って、届いてわかったが、コントローラーは別物。SH1106というものを使われ、U8g2libライブラリをインストールして利用する。 Display OLED via I2C (SH1106) 実際参考サイトを見ながら、試してみる。 うまく表示できた。 しかしコントローラーが特殊のため、使用例がほとんど無いので、用途が限定。 Script – Walking bitmap #include <Arduino.h> #include <U8g2lib.h> #ifdef U8X8_HAVE_HW_SPI #include <SPI.h> #endif #ifdef U8X8_HAVE_HW_I2C #include <Wire.h> #endif U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); // U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI const uint8_t bm[] PROGMEM = { 0b00011000, 0b00111100, 0b01111110, 0b11111111, 0b11111111, 0b01111110, 0b00111100, 0b00011000 […]

WeMos (b9) ADS1115 for A/D

ADS1115とは ADS1115 とは4チャンネル16bit  A/D 。I2C接続なので、OLEDと共に、WeMos に接続して利用してみる。 結線 SCL, SDA自由に変更可能。U8g2初期化コマンドでSetupする。 code #include <Wire.h> #include <Adafruit_ADS1015.h> #include <U8g2lib.h> #include <math.h> #define WINDOW_SIZE 128 Adafruit_ADS1115 ads; /* Use this for the 16-bit version */ //Adafruit_ADS1015 ads; /* Use thi for the 12-bit version */ // Sets up the display to be the 128px x 32px display U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C u8g2(U8G2_R0, […]

WeMos (14) Mini OLED

64×48 size display と小さなOLED Adafruit_SSD1306を利用するが、64×48 sizeの項目がないため、カスタマイズ版をダウンロードして、Adafruit_SSD1306に上書きする。 ただHello Worldを表示するスケッチ。 #include “SPI.h” #include “Wire.h” #include “Adafruit_GFX.h” #include “Adafruit_SSD1306.h” #define OLED_RESET 0 // GPIO0 Adafruit_SSD1306 display(OLED_RESET); void setup() { Serial.begin(9600); display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // init done display.display(); delay(2000); // Clear the buffer. display.clearDisplay(); // text display tests display.setTextSize(2); display.setTextColor(WHITE); display.setCursor(0,10); display.println(“Hello”); display.println(“World”); display.display(); delay(10000); display.clearDisplay(); } void loop() { } […]

WeMos (13) LED Matrix

3連ベースで、ESP8266, LED Matrix, SHT30を装着する。   Features 8×8 dot matrix LED 8 step adjustable intensity Pins D1 mini GPIO Shield D5 14 CLK D7 13 DIN   ライブラリから、WEMOS_Matrix_Adafruit_GFXを追加してください。 つぎは、ライブラリ付属のLED Matrix表示サンプルの修正版。 # コンパイルエラー発生した。 MLED matrix(7);  から MLED matrix(7, D7, D5); に変更した。   #include <Adafruit_GFX.h> #include <WEMOS_Matrix_GFX.h> MLED matrix(7, D7, D5); //set intensity=7 (maximum) void setup() { Serial.begin(9600); Serial.println(“8×8 LED […]