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("8x8 LED Matrix Test");
  
 
}

static const uint8_t PROGMEM
  smile_bmp[] =
  { B00111100,
    B01000010,
    B10100101,
    B10000001,
    B10100101,
    B10011001,
    B01000010,
    B00111100 },
  neutral_bmp[] =
  { B00111100,
    B01000010,
    B10100101,
    B10000001,
    B10111101,
    B10000001,
    B01000010,
    B00111100 },
  frown_bmp[] =
  { B00111100,
    B01000010,
    B10100101,
    B10000001,
    B10011001,
    B10100101,
    B01000010,
    B00111100 };

void loop() {
  matrix.clear();
  matrix.drawBitmap(0, 0, smile_bmp, 8, 8, LED_ON);
  matrix.writeDisplay();
  delay(500);

  matrix.clear();
  matrix.drawBitmap(0, 0, neutral_bmp, 8, 8, LED_ON);
  matrix.writeDisplay();
  delay(500);

  matrix.clear();
  matrix.drawBitmap(0, 0, frown_bmp, 8, 8, LED_ON);
  matrix.writeDisplay();
  delay(500);

  matrix.clear();      // clear display
  matrix.drawPixel(0, 0, LED_ON);  
  matrix.writeDisplay();  // write the changes we just made to the display
  delay(500);

  matrix.clear();
  matrix.drawLine(0,0, 7,7, LED_ON);
  matrix.writeDisplay();  // write the changes we just made to the display
  delay(500);

  matrix.clear();
  matrix.drawRect(0,0, 8,8, LED_ON);
  matrix.fillRect(2,2, 4,4, LED_ON);
  matrix.writeDisplay();  // write the changes we just made to the display
  delay(500);

  matrix.clear();
  matrix.drawCircle(3,3, 3, LED_ON);
  matrix.writeDisplay();  // write the changes we just made to the display
  delay(500);

  matrix.setTextSize(1);
  matrix.setTextWrap(false);  // we dont want text to wrap so it scrolls nicely
  matrix.setTextColor(LED_ON);
  for (int8_t x=0; x>=-36; x--) {
    matrix.clear();
    matrix.setCursor(x,0);
    matrix.print("Hello");
    matrix.writeDisplay();
    delay(100);
  }
  matrix.setRotation(3);
  for (int8_t x=7; x>=-36; x--) {
    matrix.clear();
    matrix.setCursor(x,0);
    matrix.print("World");
    matrix.writeDisplay();
    delay(100);
  }
  matrix.setRotation(0);
}

 

WeMos (b8) SHT30

目的

3連ベースで、ESP8266, LED Matrix, SHT30を装着。温度と湿度を計測。

モジュールの組み立て

 

スケッチ

WEMOS_SHT3x_Arduino_Libraryを使用。

https://github.com/wemos/WEMOS_SHT3x_Arduino_Library

ただの温度と湿度の表示サンプル。

#include <WEMOS_SHT3X.h>

SHT3X sht30(0x45);

void setup() {

  Serial.begin(115200);

}

void loop() {

  if(sht30.get()==0){
    Serial.print("Temperature in Celsius : ");
    Serial.println(sht30.cTemp);
    Serial.print("Temperature in Fahrenheit : ");
    Serial.println(sht30.fTemp);
    Serial.print("Relative Humidity : ");
    Serial.println(sht30.humidity);
    Serial.println();
  }
  else
  {
    Serial.println("Error!");
  }
  delay(1000);

}

参考

  1. http://stigern.net/blog/using-wemos-d1-mini-sht30-sensor-shield/

IoT Study Kit 2

ESP8266 IoT Study Kit 2は、ESP8266 IoT Study Kitと同じ、センサー、表示機能が備えている。

モジュール式って、結線は必要ない。携帯不便の問題を解消した。また結線がないことで、ハードウェア苦手の人でも、IoTはソフトウェアの課題に限定出来る。

ESP8266 IoT Study Kit 2には、次の部品から構成:

  1. ESP8266 モジュール(WeMos D1 Mini)
  2. SHT30 モジュール(温度、湿度センサー)
  3. MatrixLED モジュール
  4. 三連装ベース
  5. Mini OLED モジュール (Option)

三連装ベースの上に、各モジュールを装着する。

MatrixLED モジュール装着した様子。

Mini OLED モジュール (Option)装着した様子。

D1 Mini (1) Setup & Blink

About D1 Mini

WeMos D1 Mini はESP8266モジュールを利用した、Arduino IDE利用可能な開発ボード。

WeMosには「D1 Mini」と「D1 R2」の2種類がある。使い方が同じ。

このシリーズは、コマンドラインで開発するPlatformIO環境を利用する。(GUIの開発環境Arduino IDEで開発する場合、WeMos (1) Blink を参照する。)

Macbook Air で実験する。

PlatformIOのインストール

組み込み系のクロスコンパイル環境です。Arduino(Atmel AVR)や、mbed(ST STM32)など、350種類以上のマイコンに対応しています。デバッガも100種類以上のマイコンに対応しています(デバッグ機能は有料っぽい)。
Python2で動いているので、Mac、Linuxからでも動かせます。
詳しくはPlatformIOの公式サイトを見てください。

Macbook Air で実験するので、Homebrew でインストール。

$ brew install platformio

Homebrew を使わないばあいは pip を使ってインストールできるようです。

boards コマンドで利用できるボードを確認できます。

$ platform boards

沢山表示されるので、コマンドのうしろにフィルタをつけて内容を絞るる。

$ platformio boards esp8266

Platform: espressif8266
----------------------------------------------------------------------------------------------------------------------------
ID MCU Frequency Flash RAM Name
----------------------------------------------------------------------------------------------------------------------------
gen4iod ESP8266 80MHz 512KB 80KB 4D Systems gen4 IoD Range
huzzah ESP8266 80MHz 4MB 80KB Adafruit HUZZAH ESP8266
oak ESP8266 80MHz 4MB 80KB DigiStump Oak
esp_wroom_02 ESP8266 80MHz 2MB 80KB ESP-WROOM-02
espduino ESP8266 80MHz 4MB 80KB ESPDuino (ESP-13 Module)
espectro ESP8266 80MHz 4MB 80KB ESPectro Core
espino ESP8266 80MHz 4MB 80KB ESPino
espresso_lite_v1 ESP8266 80MHz 4MB 80KB ESPresso Lite 1.0
espresso_lite_v2 ESP8266 80MHz 4MB 80KB ESPresso Lite 2.0
esp12e ESP8266 80MHz 4MB 80KB Espressif ESP8266 ESP-12E
esp01_1m ESP8266 80MHz 1MB 80KB Espressif Generic ESP8266 ESP-01 1M
esp01 ESP8266 80MHz 512KB 80KB Espressif Generic ESP8266 ESP-01 512k
esp07 ESP8266 80MHz 4MB 80KB Espressif Generic ESP8266 ESP-07
esp8285 ESP8266 80MHz 423.98KB 80KB Generic ESP8285 Module
heltec_wifi_kit_8 ESP8266 80MHz 4MB 80KB Heltec Wifi kit 8
nodemcu ESP8266 80MHz 4MB 80KB NodeMCU 0.9 (ESP-12 Module)
nodemcuv2 ESP8266 80MHz 4MB 80KB NodeMCU 1.0 (ESP-12E Module)
modwifi ESP8266 80MHz 2MB 80KB Olimex MOD-WIFI-ESP8266(-DEV)
phoenix_v1 ESP8266 80MHz 4MB 80KB Phoenix 1.0
phoenix_v2 ESP8266 80MHz 4MB 80KB Phoenix 2.0
sparkfunBlynk ESP8266 80MHz 4MB 80KB SparkFun Blynk Board
thing ESP8266 80MHz 512KB 80KB SparkFun ESP8266 Thing
thingdev ESP8266 80MHz 512KB 80KB SparkFun ESP8266 Thing Dev
esp210 ESP8266 80MHz 4MB 80KB SweetPea ESP-210
espinotee ESP8266 80MHz 4MB 80KB ThaiEasyElec ESPino
d1 ESP8266 80MHz 4MB 80KB WEMOS D1 R1 (Retired)
d1_mini ESP8266 80MHz 4MB 80KB WeMos D1 R2 & mini
d1_mini_lite ESP8266 80MHz 1MB 80KB WeMos D1 mini Lite
d1_mini_pro ESP8266 80MHz 16MB 80KB WeMos D1 mini Pro
wifinfo ESP8266 80MHz 1MB 80KB WifInfo
wio_node ESP8266 80MHz 4MB 80KB Wio Node

作業フォルダを作成

ChenLab-Mac-Urania:~ chen$ mkdir PlatfomIO
ChenLab-Mac-Urania:~ chen$ cd PlatfomIO/

Blink

動作確認のため、まずLちか(Blink)をする。

ボード内蔵のLEDを点滅させる。

プロジェクトを準備する

ChenLab-Mac-Urania:PlatfomIO chen$ mkdir wemos-blink
ChenLab-Mac-Urania:PlatfomIO chen$ cd wemos-blink/

ChenLab-Mac-Urania:wemos-blink chen$ platformio init –board d1_mini

ChenLab-Mac-Urania:wemos-blink chen$ ll
total 8
drwxr-xr-x 3 chen staff 96 7 21 20:18 lib
-rw-r–r– 1 chen staff 439 7 21 20:19 platformio.ini
drwxr-xr-x 2 chen staff 64 7 21 20:18 src
ChenLab-Mac-Urania:wemos-blink chen$ ll src/
ChenLab-Mac-Urania:wemos-blink chen$ ll
total 8
drwxr-xr-x 3 chen staff 96 7 21 20:18 lib
-rw-r–r– 1 chen staff 439 7 21 20:19 platformio.ini
drwxr-xr-x 2 chen staff 64 7 21 20:18 src

スケッチのファイルを作成

$ vi src/main.ino

$ cat src/main.ino
#define ESP8266_LED BUILTIN_LED
void setup()
{
  pinMode(ESP8266_LED, OUTPUT);
}
void loop()
{
  digitalWrite(ESP8266_LED, HIGH);
  delay(500);
  digitalWrite(ESP8266_LED, LOW);
  delay(500);
}

ビルドする/アップロードする

ビルドする。

$ platformio run

インストールは、結構大量のファイルをダウンロードするので、ココは時間が掛かる。

$ platformio run -t upload

シリアルドライバーのインストール手間がなく、うまく動作した。いい感じ。

参考