コンパイル / 環境設定ファイル

個別設定

$Date: 2022/01/02 07:37:26 $
$Revision: 1.3 $

必要な情報は次のとおりです。

  • WiFiアクセスポイントのSSIDとパスワード
  • コールサイン SSIDは13
  • APRSパスコード
  • 座標(緯度、経度)
  • 接続するAPRS-IS(ホスト名とポート)
  • ハードウェアの接続状態(SDA, SCLの接続先)

雛形ファイル

個別設定ファイルを作成して、主スケッチから #include で読み込んでもいいし、直接スケッチ上部の定義部の部分を修正しても大丈夫です。

クリップボードにコピーしました
// -*- c -*-
// WiFi configuration  (2.4GHz)
//
#ifndef DEF_CONF_WIFI
#define DEF_CONF_WIFI
//const char *ssid = "AP-SSID";
//const char * password = "secret-key";
const char * ap_list[] = {
  "SSID1,Key1",
  "SSID2,Key2"
};
#endif
 
/*
  IP configuration
   DHCPでIPアドレスなどを取得する場合は#define USE_DHCP を、
   固定IPの場合は #define USE_DHCP をコメントアウトして、その下の情報を定義してください。
*/
//#define USE_DHCP
 
#if !defined( USE_DHCP ) && !defined( DEF_CONF_IP )
#define DEF_CONF_IP
IPAddress local_IP(192, 168, 1, 59);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
IPAddress primaryDNS(8, 8, 8, 8);
IPAddress secondaryDNS(8, 8, 4, 4);
#endif
 
WiFiMulti wifiMulti;
 
//
// for APRS-IS
//     for Ham Radio
// APRS-ISに気象情報を送信する場合は、#define USE_APRSを有効にしてください。
//
//#define USE_APRS
 
 
#if defined( USE_APRS ) && !defined( DEF_CONF_APRS )
#define DEF_CONF_APRS
const char * callsign_ssid = "NOCALL-13";         // コールサイン-SSIDを忘れずに
const int passcode = 00000;                       // APRS-ISにアクセスするためのpasscode
 
//
// センサを室内に設置する場合、その気温と湿度をAPRS-ISに送信しても、あまり意味がありませんので
// その場合は、下記の2変数を 0 にしてください。
//  ただし、現行のAPRSでは、温度、湿度を空データにすることは仕様上できないかもしれません。
const int send_humidity = 1;
const int send_temperature = 1;
 
// Your Location
const float lat = 33.0000;                        // 緯度
const float lng = 130.0000;                       // 経度
const float altitude = 75;  // altitude [m]       // 標高 [m] (気圧の補正用)
 
// Upstream APRS-IS
const char * host = "fukuoka.aprs2.net";  // Old-T2FUKUOKA or fukuoka.aprs2.net
const uint16_t port = 14580;
const int aprs_update_interval = 5;              // 更新間隔 [分]
#endif
 
 
//
//  WebServer機能を有効にする場合は #define USE_WEBSERVER を有効にしてください
//
//#define USE_WEBSERVER
 
//
//
//
//#define USE_DEEP_SLEEP
 
 
//
//
//
//  ESP32 and MBE280 Hardware configuration
//
#ifndef DEF_CONF_GPIO
#define DEF_CONF_GPIO
const uint8_t Address = 0x76;
//const uint8_t Address = 0x77;
//
//  BME280の SDA, SCLを接続したGPIOに合わせて変更してください
//     接続したGPIOに合わせて変更してください
 
//
// 利用不可能なGPIO (ESP32)
//    6,7,8,9,10,11,15 その他色々・・・
// M5Stackの場合、次のGPIOは内部で利用されているため利用できません
//    0,1,3,18,19,23,25
//    LCD関係 14,18,23,27,33
//     34-39 は INPUTのみ
//  M5Stackの場合、センサーとして、https://amzn.to/34NHbXi を使う場合は、下記がオススメ
//   BME280とM5Stackはできる限り離してください:M5Stackの熱の影響を受けて、通常より数度温度があがって計測されてしまいます
//     (ただし、Groveとは SDA, SCLが入れ替えた設定です。Groveを併用する場合は注意)
//    const uint8_t sda = 22;
//    const uint8_t scl = 21;
//  その他は、回路図を追っかけてください
// https://github.com/m5stack/M5-Schematic/blob/master/Core/Basic/M5-Core-Schematic(20171206).pdf
 
const uint8_t sda = 21;
const uint8_t scl = 22;
 
//const uint8_t sda = 32;
//const uint8_t scl = 33;
 
//
// LED configureation
//   LEDを接続しない場合は、0を指定する
//    M5Stackの場合は33は利用不可
const uint8_t busy_led = 0;
 
#endif
 
#if !defined( DEF_CONF_USE_ANALOG )
#define DEF_CONF_USE_ANALOG
//
//  アナログセンサを接続する場合は、#define USE_ANALOG を定義してください。
//
#define USE_ANALOG
const int analog_gpio[] = { 34, 35 };
#endif
 
#if !defined( DEF_CONF_MORSE_LED )
#define DEF_CONF_MORSE_LED
//
// 気温などをモールス信号(LED)で通知
#define USE_MORSE_LED
const uint8_t morse_led = busy_led;
const uint8_t morse_speed = 200;    // 数値を小さくすると速くなります
#endif
//
//  M5Stackを利用する場合は、USE_M5STACKを定義する、ESP32開発ボードの場合はコメントアウト
//#define USE_M5STACK
#define LCD_BRIGHTNESS  150
#define USE_M5STACK_POWER_CONTROL
 
 
#if !defined( DEF_CONF_USE_LCD_SSD1306 )
#define DEF_CONF_USE_LCD_SSD1306
//
//
// https://amzn.to/2ntemy9 を使う場合は、下記を有効にしてください。(テスト中)
//#define USE_LCD_SSD1306
//
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 32 // OLED display height, in pixels
 
#endif
 
 
#if !defined( DEF_CONF_USE_MQTT )
#define DEF_CONF_USE_MQTT
// MQTTに気象データを送信する場合は USE_MQTTを定義してください。
// ライブラリーは https://github.com/knolleary/pubsubclient
//
#define USE_MQTT
const char * mqtt_host = "ketaitracker.info";
const int mqtt_port = 1883;
const char * mqtt_topic_prifix = "aprs/wx";
 
char mqtt_topic[256]; //  = "aprs/wx/dummy"; // test now
#endif
 
#ifndef DEF_CONF_USE_OTA
#define DEF_CONF_USE_OTA
//
// OTAを利用する場合は#define USE_OTAを有効にしてください。
// Bluetooth経由でプログラムの更新ができるようになります。
#define USE_OTA
#endif

WiFi関係

Wi-Fiの接続情報を下記の通り指定してください。(Ver 0.7.6よりWifiMultiに変更)

const char * ap_list[] = { "SSID1,Key1", "SSID2,Key2" };

設置する環境に応じて数を増減してください。

IP関係

#define USE_DHCP

DHCPを利用する場合は #define USE_DHCP で定義してください。 DHCPを利用しない場合は、下記の設定を行ってください。

local_IP, gateway, subnet, promaryDNS, secondayDNS

ドットノーテーション形式で記述したくなりますが、","区切りです。

IPAddress local_IP(192, 168, 1, 59);

IPAddress gateway(192, 168, 1, 1);

IPAddress subnet(255, 255, 255, 0);

IPAddress primaryDNS(8, 8, 8, 8);

IPAddress secondaryDNS(8, 8, 4, 4);

APRS関係

#define USE_APRS

APRS-ISにデータを送信する場合は USE_APRSを定義してください。

#define USE_APRS

callsig_ssid

const char * callsign_ssid = "NOCALL-13";

passcode

const int passcode = 00000;

lat

const float lat = 33.0000;

lng

const float lng = 130.0000;

altitude

海抜を指定してください(単位メートル)。 BME280で測定した気圧を高度で補正してAPRS-ISに送信します。

const float altitude = 75;

M5STACK

M5StackではLCDに気圧がリアルタイムで表示されますが、これは高度による補正を行っていない値です。

host

const char * host = "wave.ftokai-u.ac.jp";

wave.ftokai-u.ac.jpは旧T2FUKUOKAです。

port

const uint16_t port = 14580;

14580ポートに接続し、フィルターを定義していませんので、結果としてAPRS-IS側からの下りパケットはありません。

aprs_update_interval

const int aprs_update_interval = 5;

APRS-ISへのアップロード間隔を分単位で指定してください。 アップロードされる情報は、その瞬間値であり、aprs_update_intervalで指定した期間の平均値ではありません。 (本来は、平均値がいいのかもしれません)

send_temperature

APRS-ISに気温情報を送信するかの指定です。

const int send_temperature = 1;

※現行のAPRS仕様では、気温を「情報なし」の状態で送信すると、気象データとして認識されないようです。

send_humidity

APRS-ISに湿度情報を送信するかの指定です。

const int send_humidity = 1;

※現行のAPRS仕様では、湿度を「情報なし」の状態で送信すると、気象データとして認識されないようです。

WebServer関係

#define USE_WEBSERVER

Web Server機能を有効にする場合、USE_WEBSERVERを定義してください。 DeepSleepを有効にした場合、WebServer機能は無効になります。

#define USE_WEBSERVER

WebServerを有効にした場合、アクセスすると下記のようにJSON形式でデータを返します。

  {"temperature":30.23,"humidity":46.96,"pressure":1009.38}

動作モード

#define USE_DEEP_SLEEP

DeepSleepを有効にする場合は、USE_DEEP_SLEEPを定義してください。

#define USE_DEEP_SLEEP

ハードウェア関係

Address

BME280のアドレスを指定してください。

const uint8_t Address = 0x76;

sda

BME280のSDAを接続したGPIOの番号を指定してください。

const uint8_t sda = 21;

ここで指定されたGPIOピンはESP32内部でプルアップされます。

scl

BME280のSCLを接続したGPIOの番号を指定してください。

const uint8_t scl = 22;

ここで指定されたGPIOピンはESP32内部でプルアップされます。

busy_led

Busy状態を示すLEDを接続したGPIOの番号を指定してください。 LEDを接続しない場合は0を指定してください。 LEDを接続しない場合は、影響のないGPIOを指定してください。

const uint8_t busy_led = 25;

morse_led

モールス信号用のLEDを接続したGPIOの番号を指定してください。 LEDを接続しない場合は0を指定してください。

busy_ledで指定したLEDと共用することもできます。この場合、busy_ledと同じ番号を指定してください。ただし、busy_ledの点灯と排他制御を行っていませんので、busy_ledとmorse_ledの状態がQRMすることがあります。

LEDを使ったモールス信号で気温などを通知します。(100%お遊び機能です) 短縮形(数値)への変更も可能です(ソースのconst char * morse_code[] =...の部分を修正してください。

#define USE_M5STACK

M5STACK

M5Stackの場合はUSE_M5STACKを定義してください。 これを定義することによりLCD関係のコード(スケッチ)が有効になります。

印刷日: 2024-12-28 03:19:00
User:
URL: https://ketaitracker.info/esp32-wx/index.php?page=config