Relative Content

Arduino

Arduino NANO (10) Basic PC With VGA Output

経緯 参考1から、昔の BASIC は、2台のArduino NANOで実現可能とわかって、BASIC動くだけじゃなく、GPIOの制御もできるので、IoTの可能性の一つとして、試したくなった。 制作 専用のVGAとキーボードのコンセント部品の調達は時間がかかった。 それから結線にも時間がかかった、さらにプログラムの書き込みも手惑いが重ね、しかし電源入れると、あっさり成功。 正面の部品一覧 背面の配線 参考 https://www.instructables.com/id/Arduino-Basic-PC-With-VGA-Output/

Arduino NANO (9) Traffic Light

Traffic Lightを作った。 難しいところがないが、12個LEDを制御するので、Arduino NANO のGPIO全部使った。 動作の様子

Arduino NANO (8) ADS1115 & OLED

Arduino NANO (7) ADS1115 for A/D できたので、行きよいでOLEDの表示も追加した。 ( WeMos (b9) ADS1115 for A/D )とほぼ同じプログラムだが、なぜかうまく表示する、どうして? 表示されるのは2本古い電池の電圧を測る値。 今度ピエゾの電圧も測ってみる。

Arduino NANO (7) ADS1115 for A/D

経緯 ADS1115を購入して、生体信号のAD変換に利用するつもりだが、うまくいかない( WeMos (b9) ADS1115 for A/D 参考)、正しい電圧が表示されない。 そこで、Arduino NANOのチュートリアルを探して、検証することに。 ハードウェア ADS1115とArduino NANOはI2Cで接続。 ソフトウェア 「参考1」コードそのまま。 #include <Wire.h> #include <Adafruit_ADS1015.h> Adafruit_ADS1115 ads; // Declare an instance of the ADS1115 int16_t rawADCvalue; // The is where we store the value we receive from the ADS1115 float scalefactor = 0.1875F; // This is the scale factor for the default +/- […]

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 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 […]