2021/10/24 09:15
Arduino ESP32ボードは、CQ出版の「トランジスタ技術」「Interface」でよく紹介されているボードです。
ESP32は、Wi-FiとBluetoothが搭載されているので、IoTなどが簡単に安くできるのが良いですね。
パソコンがあればArduino IDEをインストールすれば、サンプルプログラムもあるので簡単に遊べます。
また、ネットにはいろいろな工作例があるので探すのも面白いです。
私は、Wi-Fiを利用した正確なNTP時計を作りました。表示にLCD1602や7セグのTM1637やOLEDのSSD1306などいろいろあるので楽しめます。
Arduino IDEをhttps://www.arduino.cc/en/software からOSにあったソフトをDownloadしてください。
インストールが完了すればArduino IDEを起動してください。
[ESP32ボードを使用する場合]
「ファイル」「環境設定」を開き、追加のボードマネージャのURLに
https://dl.espressif.com/dl/package_esp32_index.jsonを追記してください。
次に「ツール」「ボード」「ボードマネジャ」を開きesp32と打ち込んでください。
Esp32 by Espressif Systemsをインストールしてください。
(右下のインストールをクリックする。)
【WEMOS(ESP32)ボードを使用する場合】
「ツール」「ボード」「esp32 arduino」からWEMOS D1 MINIESP32を選んでください。
UPLOAD Speedを115200にしてください。
これでArduino IDEの環境が出来ました。
参考資料としてNTP時計でLCD1602を使用するときは、
LCD1602配線を上図のように行い、参考プログラムで
ので添付のlcd_1602_ntp_wemos.inoの
// set WiFi ssid & password
const char* ssid = "aterm-cc3092-g"; 変更してください
const char* password = "03b2ffc23e30d"; 変更してください
LCD1602配線を上図のように行い、下記参考プログラムで
// set WiFi ssid & password
const char* ssid = "????"; 変更してください
const char* password = "????"; 変更してください
変更後書き込めば動作するはずです。
画面が・・・・表示されてNTP時刻を取り込んで日本時刻になります。
・・・しか表示しなければWi-Fiの受信環境が悪いかSSID PASSWORDが間違っています。
または、ネットからLCD ESP32 NTPと検索すればいろいろ出てきます。
LCD1602 NTP 時計のスケッチ
#include <WiFi.h>
#include <time.h>
#include <LiquidCrystal_I2C.h>
// set the LCD
int lcdColumns = 16;
int lcdRows = 2;//1614=4 1602=2
LiquidCrystal_I2C lcd(0x27, lcdColumns, lcdRows);
#define JST 3600* 9
// set WiFi ssid & password
const char* ssid = "????";
const char* password = "????";
void setup() {
// initialize LCD
lcd.init();
// turn on LCD backlight
lcd.backlight();
//WiFi set up
WiFi.begin(ssid, password);
while(WiFi.status() != WL_CONNECTED) {
lcd.print(".");
delay(500);
}
lcd.clear();
lcd.print("Connected");
lcd.setCursor(0, 1);
lcd.print("IP:");
lcd.print(WiFi.localIP());
delay(1000);
lcd.clear();
configTime( JST, 0, "ntp.nict.jp", "ntp.jst.mfeed.ad.jp");
}
void loop() {
time_t t;
struct tm *tm;
static const char *wd[7] = {"Sun","Mon","Tue","Wed","Thr","Friday","Sat"};
t = time(NULL);
tm = localtime(&t);
lcd.home();
//lcd.clear();
lcd.printf("%04d/%02d/%02d (%s)",tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday,wd[tm->tm_wday]);
// lcd.print(" ");
// lcd.print(WiFi.localIP());
lcd.setCursor(0,1);
lcd.print(" Time: ");
lcd.printf("%02d:%02d:%02d",tm->tm_hour, tm->tm_min, tm->tm_sec);
// lcd.setCursor(0,3);
// lcd.print("NTP CLOCK");
//lcd.leftToRight();
// lcd.print(WiFi.localIP());
//lcd.printf("%02d:%02d:%02d",tm->tm_hour, tm->tm_min, tm->tm_sec);
delay(1000);
}
【注意点】
USBケーブルで接続するのでシリアルポートが間違っていると書き込めません。
Arduino IDEおよびパソコン(windows)でシリアルポートの設定が正しいか確認してください。
【設定が正しいか簡単な確認方法】
ボードやシリアルポートなど正しく設定されているかの簡単な確認方法として上記のArduino IDEのスケッチ例Blinkを書き込んでください。
エラーが無く書き込めるとLEDが点滅します。
作ったプログラムなどでエラーが出た場合、#include <****.h>でエラーが出る場合、機器のヘッダーファイルがインストールされていないためです。
例としてLCD1602を入れたプログラムの場合
#include <LiquidCrystal_I2C.h>がインストールされていないとエラーが発生します。
その場合「ステッチ」「ライブラリをインクルード」「ライブラリを管理」をクリックします。