Relative Content

Yearly Archives: 2017

NodeMcu (2) LED Light Strips

クリスマスと新年の気分を出すため、LED Light Stripsを買った。しかし固定のパターンの点滅しかできないから厭きるね。 Raspberry Pi またはArduinoでコントルートできれば、何かいい物作れるではないからと考えた。 Arduinoできるなら安上がりなので、まず試す。LED Light Stripsは12V駆動なので、USB給電のWemosではなく、手元にあるNodeMcu V3 (電源拡張ボード付き)を活用することにした。 LED Light Stripsの電流が大きいので、GPIOの負荷能力を超え、直結できない。 Googleして、OmegaのLED lightstripsに繋ぐ回路があったので、それを真似してArduinoのつくる。 手元に2N3904がないんで、ネットで購入。届くまで時間がかかるので、届いた頃も他の件で時間が取られ、半年以上棚上げ。 クリスマスも目の前だから、ハードウェアの回路を完成した。 プログラムの方は、簡単。 #define LEDR D7 #define LEDG D6 #define LEDB D8 void setup() { pinMode(LEDR, OUTPUT); pinMode(LEDG, OUTPUT); pinMode(LEDB, OUTPUT); } void loop() { digitalWrite(LEDR, HIGH); delay(1000); digitalWrite(LEDG, HIGH); delay(1000); digitalWrite(LEDB, HIGH); delay(1000); digitalWrite(LEDR, LOW); delay(1000); digitalWrite(LEDG, LOW); […]

NodeMcu (1) install & blink

NodeMCUとは NodeMCUは、WeMosと同じコンセプトの開発ボードだ が、メインチップは ESP-12Eが使われている。 NodeMCUの種類 主に「LoLin NodeMCU」 「Amica NodeMCU」などがある。 WeMos、Lolin、Amica比較 WeMosD1 mini, AmicaのNodeMCUは小さいので、ブレッドボード1枚で使うことができ、Lolinは2枚ブレッドボードまたは専用のアダプターが必要。 WeMos D1 mini NodeMCU Lolin Amica MCU ESP-12 ESP-12E ESP-12E ディジタルIO 11ピン 11ピン 12ピン アナログIO 1ピン 1ピン 1ピン 3.3V出力 1ピン 3ピン 3ピン 5V入力(*3) 1ピン 1ピン 1ピン USB出力(*5) 1ピン 1ピン なし GNDピン 1ピン 4ピン 3ピン SPI専用ピン なし あり あり オンボードLED なし なし あり   […]

WeMos (c7) Web Clock

TM1637 7段4桁LED表示はできたけど、もっと何かWeb関係のものができないかと考えていて、時刻の表示くらいできると思って、やってみた。 WeMos (5) TM1637 7段4桁LED表示 WiFiManagerを利用してWiFiに接続。 結線ができるだけ省けると考えて、GPIOのPinから給電を試してみた。 プログラムはこれ、D4の隣はGNDだから、D4をVCCとして利用する様にプログラミングする。 #include <TM1637Display.h> #include <time.h> #include “WiFiManager.h” const int CLK = D2; //Set the CLK pin connection to the display const int DIO = D3; //Set the DIO pin connection to the display const int VCC = D4; //Set the VCC pin connection to the display int […]

WeMos (d3) Web LED Matrix

最初はプレゼントタイマーを作るつもり。 しかし、TinyebDBの文字列を表示する方がはるかも簡単、汎用性もいい。 できたものはこれ: 電源が繋いたら、WiFiを自動で接続、それからTinyWebDBから文字列を取得と表示する。 これならプレゼントタイマーだけじゃなく、お知らせ、顔認証して名前で挨拶とかにも活用できそう。 #include <SPI.h> #include <Adafruit_GFX.h> #include <Max72xxPanel.h> #include <time.h> #include <ArduinoJson.h> #include <ESP8266WiFi.h> #include <ESP8266HTTPClient.h> WiFiClient client; const char* resource = “http://tinydb.ml/api/”; // http resource const unsigned long BAUD_RATE = 9600; // serial connection speed const unsigned long HTTP_TIMEOUT = 10000; // max respone time from server const size_t MAX_CONTENT_SIZE = […]

WeMos (d2) Home Automation

TinyWebDB-APIを利用した、Home Automationの例。 ハードウェア “IoT-Cloud-Mobile Study Kit”を利用 データ送信 下記のは操作中、数分起き温度、気圧センサーのデータをTinyWebDB-APIテストサーバ(http://tinydb.ml/api/)へ送信する。 送信したデータは、http://tinydb.ml/status/で確認できる。 データ受信 スマートフォンからLED On/Off の指令は受信すると、ESP8266内蔵LEDは点/滅可能になった。 ソースコード // Sample Arduino Json Web Client // Downloads and parse http://jsonplaceholder.typicode.com/users/1 // // Copyright Benoit Blanchon 2014-2017 // MIT License // // Arduino JSON library // https://bblanchon.github.io/ArduinoJson/ // If you like this project, please add a star! #include &lt;ArduinoJson.h&gt; #include &lt;Arduino.h&gt; […]

WeMos (d1) RESTful API

JSONデータの扱いできて、今度RESTful APIに取り込む。まずRESTful APIのGETとPOSTを実現する。自作のTinyWebDB-APIプラグインでテストすることにした。 GETは簡単にできたが、POSTがなかなかうまくいかない。受信したデータは空になっている。いろいろGoogleして、ソースを書き換えてもうまくいかない、今度サーバ側様子をみると思い、Cloud9でデバッグしようとしても、なんとCloud9で弾けられ。普通のVPSでデバッグを続けてるうちに、自信喪失、TinyWebDB-APIに問題があると懐疑的に、cURLで検証しても、受信したデータは空。困った。 Postmanで試したら、なんとうまくいく。何か違うかな?簡単のHTMLフォームもうまくいく。やはり送信側ESP8266プログラムの問題。さらにGoogleして、ソースを書き換えていく。 一週間苦労して、ついに成功。 簡単に利用するために、TinyWebDB-APIライブラリを自作すると考える。

WeMos Smart Car Motor Shield

学園祭のため、IoTぼいのスマート車を作る。 しかし、注文したMotor Shield とは、違うもの(base only)が来たので、急遽自作する。 そのためのコントロールするAppも作りたいが、時間がなくって、ネットからWebページでコントロールするものを探して、沢山手直して、動くようになった。 車数台用意して、各車のIPは固定にしたいので、WiFiManager使わない方法をとった。 Webページでコントロールするから、遅延は目たつ。 時間があったら、ちゃんとアクセルペダルなど追加して、アプリの形にしたい。 // include libraries #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #define motor_lf D3 #define motor_lb D4 #define motor_rf D6 #define motor_rb D5 // configure server ESP8266WebServer server(80); const char *form = “<!DOCTYPE HTML>” “<meta name=’viewport’ content=’width=device-width’>” “<html>” “<center><form action=’/’>” “<button name=’dir’ type=’submit’ value=’4′>Forward</button><p>” “<button name=’dir’ type=’submit’ value=’1′>Left</button> ” “<button […]