WiFiモジュール2016年01月03日

ESP8266

年末にe-Bayに注文してあったWiFiモジュールが届きました。3Dプリンターの部材がまだ届かないので2016年のスタートは電子工作から始まりました。AI Tinker (中国)製のESP8266というモジュールを使用したWiFiモジュールです。ただのWiFi接続モジュールではありません。
CPU、メモリー、GPIOインターフェースを備えるマイクロコントローラーです。ということはこのモジュールのみでWiFi経由で外部機器が操作可能だということです。最近流行りのIoT用のモジュールデバイスです。最大の特徴はこのスペックで$4.00程度と大変安いことです。スペックは、

  • 32-bit RISC CPU: Tensilica Xtensa LX106 running at 80 MHz
  • 64 KiB of instruction RAM, 96 KiB of data RAM
  • External QSPI flash - 512 KiB to 4 MiB
  • IEEE 802.11 b/g/n Wi-Fi
  • Integrated TR switch, balun, LNA, power amplifier and matching network
  • WEP or WPA/WPA2 authentication, or open networks
  • 16 GPIO pins
  • SPI, I²C,
  • I²S interfaces with DMA (sharing pins with GPIO)
  • UART on dedicated pins, plus a transmit-only UART can be enabled on GPIO2
  • 1 10-bit ADC
AI Tinkerからは15種類のモジュールが出ています。モジュールによってはすべてのインターフェース機能が利用できるわけではありませんがESP-01(8ピン)モジュールでも2個のGPIOは利用可能です。
さてプログラミングですが、これがまたすごいところでArduino IDE環境でプログラミン・書き込みが可能です。最初だけちょっと面倒がありますが、これさえ済ませると後はArduinoと同様にプログラミングすることができます。ここのサイトを参考にしてください。
DS18B20温度センサーのサンプルを参考にThingSpeakにデータを送信するプログラムを作成しました。写真の回路を組んでプログラムを作って半日といったところです。すごく簡単にできてしまいます。できたものは乾電池2本でも動かすことができます。データは1分間隔で更新しています。温度ですからもっとゆっくりでもよいかもしれません。いろいろと工夫次第でIoTデバイスが簡単にできるWiFiモジュールです。

温度センサーのデータをグラフにしてみた2015年06月13日

Raspberry Pi 2 B、B+で1-wire温度センサー

Raspberry Pi2 B、B+にdigitempという1-wire温度センサーのデータを読み取るアプリをインストールしました。Intelサーバーにもインストールしていました。1-wireは2線式のBUS接続インターフェースです。個々のセンサーが固有のIDを持っていてこれを使用してデータを読み出します。
使用しているセンサーはデジタル温度センサ(1wire)DS18B20+です。このセンサーを2個接続しているので室温と外気温度をそれぞれグラフ化しています。Raspberry PiはSDカードで、容量も8GBなのでうかつにデータ保存が出来ません。Thingspeak.comというフリーのopen data platformを利用します。このサイトにデータを送信するだけでグラフを作成してくれます。
Raspberry Piへのインストール手順です。

  • 0.Thingspeak.comにアカウントを作成
    Thingspeak.comでアカウントを作成する。
    Write API Keyを取得し、アップロードスクリプトの中に記述
  • 1.ソフトウエアのインストール
    sudo apt-get install digitemp
  • 2.初期設定、digitemp.confの作成
    sudo digitemp_DS9097U -i -s /dev/ttyUSB0 -c /home/pi/digitemp.conf
  • 3.テスト、動作確認
    sudo digitemp_DS9097U -a -s /dev/ttyUSB0 -c /home/pi/digitemp.conf
  • 4.データフォーマットを変更
    digitemp.conf内のデータフォーマットを変更
    LOG_FORMAT "%.2C"
  • 5.データアップロードの実行スクリプトの作成
    以下の内容を/home/pi/mytempscriptに保存する。
    #!/bin/bash
    temp1=$(digitemp_DS9097U -q -t 0 -c /home/pi/digitemp.conf)
    temp2=$(digitemp_DS9097U -q -t 1 -c /home/pi/digitemp.conf)
    url="http://api.thingspeak.com/update?key=[API Key]&field1=$temp1&field2=$temp2"
    wget $url -q -O /dev/null
  • 6.cronにスクリプトを登録
    この登録で温度データを5分間隔で登録しにいきます。
    */5 * * * * root /home/pi/mytempscript
digitempはDS9097U-S09(出力はRS-232C)という1-wireCOMポートアダプターを使用してデータを受け取るので秋月のFT232RL USB・RS232C変換モジュールを使用しました。/dev/ttyUSB0から読み込んでいます。秋月の変換モジュールはRaspberry PiのUSBに接続しただけで認識します。dmsgで確認して下さい。