ESP8266 Arduino の Example を試す
書きかけ
スケッチ例
ESP8266
-
Blink
LED_BUILTINは1番ピンにアサインされています。(pins_arduino.hで定義されています。ボード設定を変更すると定義も応じて変わる)1番ピンにLEDをつなぐと点灯2秒、消灯1秒でブリンクします。 -
BlinkWithoutDelay
LED Blink ですが、Delayではなく、millis()なる関数を使って時間を計っています。 millis()はボードがプログラムの実行を開始した時から現在までの時間をミリ秒単位で返します。 -
CallSDKFunctions
シリアルポートを使います。baudレート115,200でwifi_station_get_hostname:を出力します。シリアルは、これをつかいました。
wifi_station_get_hostname()
で、ホスト名が取れます。
-
CheckFlashConfig
IDEのEEPROM設定とハードウェアの一致
ESPのリファレンスはここがわかりやすいか?
ESP.getFlashChipId(); //Flash real id: 001640A1H
ESP.getFlashChipRealSize(); //Flash real size: 4194304
ESP.getFlashChipSize(); //Flash ide size: 524288
ESP.getFlashChipSpeed(); //Flash ide speed: 40000000
ESP.getFlashChipMode(); //Flash ide mode: DIO
Flash Chip configuration wrong! //ideSize != realSize
-
ConfigFile
ArduinoJson.h: No such file or directory
と表示が出てコンパイルできませんでした。
ArduinoJsonはここからダウンロードできます。私はArduinoJson-v5.10.0.zipをダウンロードしました。このファイルをC:\Program Files\Arduinoにおきました。その上で、
Arduino IDE にインストールします。
スケッチ>ライブラリをインクルード>.ZIP形式のライブラリをインストール
ここまでくればコンパイルすることができます。
このサンプルはESP-WROOM-02のSPIFFSとういう領域のファイルを作って、読み書きをしています。
ESP-WROOM-02 の取り説によると、SPI Flash が4MB 搭載されているとのこと。
This module is mounted with an 4 MB external SPI flash to store user programs.
-
RTCUserMemory
[RTCMemoryのついて調べてみた]
(http://qiita.com/YumeYakata/items/c8db045c48dc3ebd0b24)
このプログラムを動作させるときは、GPI16 とRESETをショートさせておく。
このプログラムはsetup で
- RTC Memory を読み込んでプリント
- RTC Memory へ乱数を書き込んで、
- メモリーの先頭のCRC32 (巡回冗長検査)でメモリーの中身が正しいかどうかを判断
- 5 秒のDeep Sleep に入る。
- 5秒後、Deep Sleep から起き、リセットが発生しる。
setupが再起動する。先に書き込んだ乱数がプリントされる。
// uint32_t --- 4byteアラインのポインタ
// sizeof(rtcData)は 512 になるので、RTCMemory の全領域のメモリにアクセスするための構造体
struct {
uint32_t crc32; // ---Cyclic Redundancy Check
byte data[508];
} rtcData;
//RTC Memory から読み込む
ESP.rtcUserMemoryRead(0, (uint32_t*) &rtcData, sizeof(rtcData))
//RTC Memory へ書き込む
ESP.rtcUserMemoryWrite(0, (uint32_t*) &rtcData, sizeof(rtcData))
// 5秒のDeepSleep Mode へ
ESP.deepSleep(5e6);
ESP8266 Non-OS APIの情報表示 [programming_guide]
(http://www.espressif.com/sites/default/files/20a-esp8266_rtos_sdk_programming_guide_en_v1.4.0.pdf)に記載がある。
このサンプルプログラムだけSerial.begin(74880);となっているので注意が必要。
ESP starting.
'--------------------
system_get_time(): 275065
system_get_rst_info() reset reason: REASON_EXT_SYS_RST
system_get_free_heap_size(): 47888
system_get_os_print(): 0
system_get_os_print(): 1
system_get_chip_id(): 0x84D533
system_get_sdk_version(): 1.5.3(aec24ac9)
system_get_boot_version(): 5
system_get_userbin_addr(): 0x0
system_get_boot_mode(): SYS_BOOT_ENHANCE_MODE
system_get_cpu_freq(): 160
system_get_flash_size_map(): FLASH_SIZE_4M_MAP_256_256
wifi_get_opmode(): 1 - STATION_MODE
wifi_get_opmode_default(): 1 - STATION_MODE
wifi_get_broadcast_if(): 1
SoftAP Configuration
'--------------------
ssid: TestAP
password: testtesttest
ssid_len: 6
channel: 1
authmode: AUTH_WPA2_PSK
ssid_hidden: 0
max_connection: 4
beacon_interval: 34476ms
'--------------------
wifi_get_channel(): 1
wifi_get_phy_mode(): PHY_MODE_11N
system_get_time(): 342587