著者:すずき ひろのぶ
今回は、開発ボード「ESP32-DevKitC v2」の省電力モードに挑戦してみた奮戦記の前半部分です。プログラミング設定から、まずWi-Fiが動くまでの流れを追ってみます。次回は、省電力のためにDeep SleepやLight Sleepに移行した際にWi-Fiはどんな動作となるのかを試行錯誤した結果を紹します。
シェルスクリプトマガジン Vol.56は以下のリンク先でご購入できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
// Hironobu SUZUKI // <suzuki.hironobu@gmail.com> // SUZULABO for Shell Script Magazine #include <WiFi.h> #include <WiFiUdp.h> #define SENDBUFSIZE 32 #define SLEEPTIME 3 char ssid[] = "XXXXXXXXXXX"; char pass[] = "XXXXXXXXXXX"; const char remoteIpAddr[] = "192.168.100.6"; const int port = 21231; uint8_t sendBuffer[SENDBUFSIZE]; int counter = 1; int status = WL_IDLE_STATUS; WiFiUDP udp; void setup() { Serial.begin(115200); ConnectionManage(); udp.begin(port); } void loop() { for (int j = 0; j < SENDBUFSIZE; j++) { sendBuffer[j] = 0; } sendBuffer[0] = counter; sendBuffer[1] = '\0'; udp.beginPacket(remoteIpAddr, port); udp.write(sendBuffer, sizeof(sendBuffer)); udp.endPacket(); Serial.println(counter++); delay(SLEEPTIME * 1000); } void ConnectionManage() { if ( status == WL_IDLE_STATUS) { Serial.print("Try to connect WiFi..."); Serial.println(ssid); while ( true ) { status = WiFi.begin(ssid, pass); if ( status == WL_CONNECTED ) { break; } Serial.println("Retry"); } Serial.println("==Connected=="); printWifiStatus(); return; } return; } void printWifiStatus() { String myssid; while (true) { myssid = WiFi.SSID(); if (myssid != "" ) { break; } delay(3000); } Serial.print("SSID: "); Serial.println(myssid); IPAddress ip = WiFi.localIP(); Serial.print("IP Address: "); Serial.println(ip); } |
1 2 3 4 5 6 7 8 9 |
typedef enum { WL_IDLE_STATUS = 0, WL_NO_SSID_AVAIL = 1, WL_SCAN_COMPLETED = 2, WL_CONNECTED = 3, WL_CONNECT_FAILED = 4, WL_CONNECTION_LOST = 5, WL_DISCONNECTED = 6 } wl_status_t; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#!/usr/bin/python3 from socket import * import sys import datetime HOST = '' PORT = 21231 s = socket(AF_INET,SOCK_DGRAM) s.bind((HOST, PORT)) while True: msg, address = s.recvfrom(32) now = datetime.datetime.now() count = int(msg[0]); print(now.strftime("%Y/%m/%d %H:%M:%S"), count) s.close() sys.exit() |