そーたとメイの工作

技術情報・開発情報

ソースコードなどBitClockの技術情報や開発情報です。

BitClockシステム構成

BitCkockは下記のシステム構成になっています。(tcpアプリについてはesp8266資料を参照)
BitClockはPC接続状態でも電池を消費します。必要のないときはUSBケーブルを抜いて下さい。

esp8266単体構成

BitClockは最初はPICなし、esp8266 (とUSB-UART変換) だけで作ろうとしました。

esp8266はdeep sleep とsleep のときRTCによるカウントとwakeが可能なのですが、deep sleep・sleepどちらも26MHz XTAL発振を止めCR発振でRTCを動かしているらしく、RTC精度が数%ととんでもない値になります(1日 数分ずれる)。RTCをXTAL精度にするためesp8266 ONしっぱなし (70mA) にすると単4電池の場合10時間程度しか持ちません。esp8266単体で使う場合は消費電力とRTC精度のどちらかを諦める必要があります。

モード 消費電力  発振  備考 
WAKE時peak 400mA, 1.3W XTAL+PLL 約40ms幅 
ON(定常) 70mA, 230mW XTAL+PLL  
sleep時  1mA RC  
deep sleep時 数10uA RC wake時にpeak電力発生

esp8266+外部PICマイコン構成

そのためBitClockではesp8266+外部PICマイコンの構成にしました。BitClockのステートマシンを下記に載せます。

esp8266は標準で外部マイコン用のUARTコマンドに対応しており、標準UARTコマンドではWLAN接続とTCP通信に対応しています。BitClockではNTPとHTTP対応のためいくつかUARTコマンドを追加しています。

BitClock固有の機能は主にPICマイコンと設定アプリで行っており、BitClockカスタマイズはPICマイコンのfirmware変更又は設定アプリのソース変更がメインになります。またPICマイコンや設定アプリからesp8266へのコマンドは全てTeraTermから送ることが出来るため、まずTeraTermで何ができるか確認することをお勧めします。

UARTコマンド

Teraterm (Windows) など、パソコン用のUART通信アプリを使うことで

  • 設定アプリなしで直接BitClock設定
  • esp8266 標準UARTコマンドやTIMEZON設定など設定アプリ非対応の全機能

を利用することができます。

TeraTermダウンロード

[ファイル] - [新しい接続] - [シリアル] - [ポート - COM ?]を選択して下さい。
シリアル(UART)を使うときふつうはボーレートなどの設定をする必要があるのですが、BitClockの場合は不要です。

主なUARTコマンドはTeraTermをBitClockに接続し、ATHELP と入力することで表示されます。

ATHELP

ATWPS         - connect to AP with WPS
ATCON=SSID PASSWORD - connect to AP with password
ATCON         - display registered AP
AT+CWLAP      - scan AP
AT+GMR        - SW version
AT+RST        - reboot (reconnect to AP and NTP server)
ATINIT        - factory reset
ATHTTP=..     - setup info/log server
   (info)      00 URL
   (info_ssl)  01 URL
   (SohtaMei)  02
   (ThingSpeak)03 apikey
   (twitter)   04 token mes
   (IFTTT)     05 key event
   (other)     06 URL
(ATPOST=BAT VAL) - internal command
ATMODE=DISP [POST]
   DISP - (normal) 0:hour/min,  1:month/day,  2:toggle,  3:year, 4:week, 5:sec
          (Eorzea)10:hour/min, 11:month/day, 12:toggle, 13:year, 14:week
          (analog)16:battery, 17:AD
          (http)  32:A/B, 33:A, 34:B
   POST - 0:off, 1:battery(daily), 2:AD(hourly), 3:GPIO(minutely)
ATZONE=ZONE   - timezone(-11 to 13)

上記以外にもesp8266の標準コマンドを使うことが出来ます。詳しくはesp8266のATコマンド資料を参照して下さい。

ESP8266 AT Command Examples
ESP8266 AT Instruction Set

※英語版です、残念ながら日本語版はありません。

ソースコード

BitClockのソースコードです。商用利用禁止とさせて頂きます。
PICとesp8266のバイナリコードは設定アプリで [ソフト更新] を押すことで自動的にダウンロードされます。

ビルドのための環境設定など、ソースコードについてのサポートやお問い合わせに対するご回答はムリっぽいです、大変申し訳ありません。私が環境をセットアップしたのが半年以上前で、毎月のようにセットアップ手順が変わるため私自身セットアップするごとにgoogle検索してるためです。

PIC

 picFW.0914_20161117.src.zip

 MPLAB IDE X
 MPLAB IDE X for windows

ビルドにはmicrochip社xc8コンパイラのproライセンスが必要です。freeによるビルドを目指したのですが収まりませんでした。。

ビルド後 withBIOS.X\dist\boot\production\withBIOS.X.production.unified.hex を設定アプリ - [PICソフト更新]で選択して下さい。このPIC firmware自身がfimware更新機能を持っているのですが、firmware修正に失敗すると[PICソフト更新]出来なくなります。その場合はジャンパピンFWUPを 1 のところに挿して電池抜き差し、[PICソフト更新]して下さい。

ESP8266

 wlanFW.0914_20161114.src.zip

twitter投稿のために "twitter.c" にtwitter社から発行されるapi keyとapi key secretを書き込む必要があります。
この情報は開発者自身が取得する必要があり、他の人と共有できない情報です。またBitClock設定アプリで取得できるアクセストークンはBitClockのapi key専用で、お客様が取得したapi keyでは使用することが出来ません。

#define url_host            "api.twitter.com"
#define url_path            "/1.1/statuses/update.json"
#define url                 "https://api.twitter.com/1.1/statuses/update.json"
#define url_enc             "https%3A%2F%2Fapi.twitter.com%2F1.1%2Fstatuses%2Fupdate.json"
#define api_key_enc         please enter your own api key
#define api_secret_enc      please enter your own api secret

それぞれsyncer様サイトを参考に取得して頂けますでしょうか。

sha1.cはRFC3174のものを使わせて頂いております。そーたメイポータルサイト上のget-access-token.phpsyncer様サイトのものを使わせて頂いております。

 virtual box
 Linux image ESP8266_lubuntu_20141021.ova(baidu)
 Linux image ESP8266_lubuntu_20141021.ova(google drive)
 Password: v81b

 ESP8266_NONOS_SDK_V2.0.0_16_08_10
 ESP8266_NONOS_SDK_V2.0.0_16_08_10.zip
 ESP8266_NONOS_SDK_V2.0.0_patch_20160809
 ESP8266_NONOS_SDK_V2.0.0_patch_16_08_09.zip

make COMPILE=gcc BOOT=new APP=1 SPI_SPEED=40 SPI_MODE=QIO SPI_SIZE_MAP=6

設定アプリ

 app.A0914_20161117.src.zip

 Visual Studio Express
 Visual Studio Express for Desktop 2013

Visual Studio Communityをインストールしないよう注意して下さい。

Linuxサーバー スクリプト

web情報表示の [スクリプト] を参照して下さい。

BitClockカスタマイズで何ができるか

BitClockは電池で長期間駆動を目的としており、普段はesp8266をOFF必要な時だけONが原則で、常時無線待機状態にしておく使い方には向きません。PCやスマフォアプリとの無線通信アダプタとして使うのであればBLEやBluetooth、XBeeのほうが(たぶん)電力面で優れてます。

BLEやBluetooth、XBeeでは無線モジュール単体でFW開発と周辺デバイス制御ができる商品が販売されてないため、esp8266単体構成であれば価格や開発面でメリットがあります。一方BitClockはPIC+esp8266の構成なのであまりメリットがありません。esp8266の端子が隠れているため周辺デバイスを接続するのも困難です。

そのためBitClockが役に立つのは原則として下記になると思います。

定期的にサーバーに情報を取りに行きその情報を表示

( NTP、簡易webクライアント)

esp8266はRAM容量が全部で16kB程度しかないためパソコン用のwebサイトの情報を取得することができません。パソコン用のサイトの情報の一部を表示する場合は一度中継サーバーでデータを変換する必要があります。

そーたメイwebサイトで天気予報と円ドル為替のサンプルを用意してますが、ご自宅のLinuxサーバー等で同様の中継サーバーを用意することが可能です。

BitClockに入った電気信号をトリガとしてwebサーバー等に情報を通知

(無線データロガー、無線モニタ)

電力面ではwebサーバーからの情報受信よりもwebサーバーへの情報送信の方がメリットがあります。BitClock側はhttpに対応しているためURLに送信データを埋め込んだり送信データをPOSTすることが可能なのですが(POSTはまだ未実装)、webサーバー側がCGI対応する必要があり現在対応中です。

ページのトップへ戻る
inserted by FC2 system