ESP8266を積んだLED電球やらスイッチやら

cnx-softwareの「$12 AI Light ESP8266 based WiFi RGB Light Bulb Supports MQTT via ESPurna Open Source Firmware」の関連リンクを見ていったらいろいろ興味深いものを発見。

元記事は、ESP8266を搭載したLEDランプのfirmwareをオープンソースのものに入れ替えることができる、という話。

ESPurna Firmware
ESP8266搭載のLEDランプや、電源ラインスイッチなどで使えるfirmware。
httpdサーバ搭載の他、MQTTやAlexaを使った連携を実現できる。
Home AssistDomoticzというWebサービスと連携することも出来る。

Noduino OpenLight
ESP8266搭載のLEDランプに入れるfirmware。
コントロールするためのAndroidアプリも提供されている。
https://github.com/icamgo/noduino-sdkでソース公開している。

AiLight – A hackable RGBW light bulb」にfirmwareを書き換えてみた、という事例がある。

Mongoose OS
ESP8266の他、ESP32など、似たような低いスペックのボード用OS。
AWS IoTが使えるらしい。
ESP8266電球の話をしていたら、「this is great write up.」って言われたんだけど、言及した中ではMongoose OSが使われている様子はなくて、ちょっと困惑気味。

ブラウザプログラミングができるESP8266モジュールのWebduinoを入手して動かしてみた!

WiFi接続が簡単にできるESP8266を使った製品で、Webブラウザを使ってプログラミングができる「Webduino」というものがある。

2016/11/06に「WebからプログラミングができるESP8266モジュールWebduinoが送料込み$5.88で発売開始」という記事を書いたが、発注から8日で製品が到着。

webdiuno-1
白い箱に袋に入った基板が入っているだけ、という簡易梱包。

基板の裏面はこんな感じで「3色LED」と「明度センサー」が付いています
webdiuno-2

設定手順は「Webduino Smart Wi-Fi Setup」にあるので開きながら実施していきます。

まずはmicroUSBケーブルをさして電源を入れます。
webdiuno-3
青LEDが点灯し、また裏面の3色LEDは赤点灯します。

この状態でスマホなどからWiFi APを検索すると「Smart」というAPがいますので、そこに接続します。
webdiuno-4
接続パスワードは「12345678」です。

接続したらブラウザから「http://192.168.4.1」にアクセスします。
webdiuno-5

WiFi SSID/WiFI PWDは、自宅などのWiFI APを指定します。
また、Device IDは識別できるようなものを指定します。
「SUBMIT」ボタンをクリックし、変更を反映したら、電源を抜きます。

電源を入れ直すと、裏面の3色LEDは、赤点灯したあと、一瞬緑点灯し、消灯します。
この状態で、自宅WiFI APに接続された状態となります。

Webdiunoに割り当てられたIPアドレスを確認するには、スマホなどでWiFi AP検索をします。
webdiuno-8
上記の様に「Smart_<IPアドレス>」という形でIPアドレスが表示されるので確認します。

まずは動作確認として、パソコンから「http://<IPアドレス>」にアクセスできることを確認します。

次にWebブラウザを使ったプログラミングを行います。

サンプルコード」を使いましょう。
webdiuno-10

IPアドレスを指定し、また、「Set color」の横をクリックすると点灯させたいLEDの色を指定できます。

指定が終わったら右上の再生ボタン▶をクリックすると、プログラムが転送され、WebdiunoのLEDが点灯するはずです。
うまく行かない場合は、一度Webdiunoの電源を入れ直してみましょう。

以上のような感じで結構お手軽にプログラミングができます。

なお、手順にはStep5としてfirmwareアップデートがあるのですが、ちゃんと動作しているのかどうかが判断できなかったので、記事には含めていません。
Ver3.0.07より新しいバージョンがあるんだろうか??

WebからプログラミングができるESP8266モジュールWebduinoが送料込み$5.88で発売開始

先日、Webからプログラミングができる、というWebduinoという商品が台湾のイベントで公開され、下記の様な記事が書かれていました。

Kapperのブログ 新館「簡単Wifi電子工作 Webduino 購入&テスト その1

公式ページ「Webduino
開発元が公開しているプレゼン資料「Webduino 工作坊對不起,哥實作一個 APP 真的只要 30 分鐘
中国語ですが、なんとなく雰囲気はつかめると思います。
英語のチュートリアル」も参考になるでしょう。

2016/11/15追記:「ブラウザプログラミングができるESP8266モジュールのWebduinoを入手して動かしてみた!」にて実際に動かしてみた記事を公開しています。

2016/11/06現在、公式サイトでは購入できる場所として台湾のサイトだけを紹介しています。
が・・・、BananaPiの公式Aliexpressにて「New Arrivals BPI-Webduino smart IOT module development board」という形で販売が開始されました。

$3.50+送料$2.38、計$5.88での販売です。
ただ、使用しているESP8266モジュールがAI Thinker社のものなので、技適を取ってないのが難点です。

ITEADのesp8285搭載超小型ボードPSF-A85 & PSF-B85

先日の「USBコネクタサイズに収まるESP8285搭載ボード」に引き続き、esp8255搭載の超小型ボードに関する情報

ITEADという会社で、アンテナが外付けで2.25ドルの「PSF-A85」と、セラミック素子アンテナ搭載で2.25ドルの「PSF-B85」が販売開始になっている模様。

アンテナ外付けのPSF-A85はこんな感じ
psf-a85-8-1

セラミック素子アンテナのPSF-B85はこう。
psf-b85-1

どちらも基板サイズは13.5mm*13.7mm。
単純にアンテナ端子か、セラミック素子アンテナか、という違いですね

psf-b85_hardware

技適どころかFCCやCEも通ってないような怪しげデバイスですけど!!!

ESP8266搭載ボードのWifi Witty / Gizwits ESP-12F

Aliexpressの「FYD Open Source Hardware」というセラーから買う際にいろいろみていいたら「ESP8266 serial WIFI Witty cloud Development Board ESP-12F module」(送料込み$4.48)というものを発見。

いろいろ調べていくと「Shenzhen CAIZHIXING Electronic Co., Ltd」の「ESP8266 serial WIFI Witty cloud Development Board ESP-12F module MINI nodemcu」だと$3.20で販売している。

Gizwits」という会社のプロダクトらしい。

(おまけ:esp8266コミュニティに「esp8266-module-family(ESP8266採用モジュール一覧)」発見)

で、作例を探してみると「Wifi Witty ESP-12F Board」を発見。

Arduino IDEでの設定も書かれている

ボードタイプ: NodeMCU v1.0 (ESP-12E Module)
CPU Frequency: 80 MHz
Flash Size: 4M (3M SPIFFS)
Upload Speed: 11520

下記のサンプルコードを書き込んでみる

const int LDR = A0;
const int BUTTON = 4;
const int RED = 15;
const int GREEN = 12;
const int BLUE = 13;
 
void setup() 
{
    Serial.begin(11520);
 
    pinMode(LDR, INPUT);
    pinMode(BUTTON, INPUT);
    pinMode(RED, OUTPUT);
    pinMode(GREEN, OUTPUT);
    pinMode(BLUE, OUTPUT);
}
 
void loop()
{
    Serial.print("LDR: ");
    Serial.println(analogRead(LDR));
    Serial.print("BUTTON: ");
    Serial.println(digitalRead(BUTTON));
 
    analogWrite(RED, random(0,1023));
    analogWrite(GREEN, random(0,1023));
    analogWrite(BLUE, random(0,1023));
 
    delay(500);
}

問題無く動作した。