SX赤道儀の改造③プログラミング編

VIXENのSX赤道儀(スフィンクス赤道儀)の改造について紹介します。

※改造については、あくまでご自身の責任にてお願いいたします。本内容は参考情報としてご覧ください。


1. 準備

1.1 Arduino IDEのインストールと設定

Arduino IDEというフリーの開発環境をインストールします。ここでは、version 2.3.4を使ったの説明になっています。
Aruduino IDEのダウンロードサイト

Arduino IDEをインストールしたら、まず初期設定を行い、ESP32を操作できる環境を構築します。

1.ファイル → 基本設定 を開きます。

2.「追加のボードマネージャのURL」に以下の2つのURLを入力します。https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
http://arduino.esp8266.com/stable/package_esp8266com_index.json

これにより、使用するマイコンのコンパイルおよび、書き込みができる環境がダウンロードできるようになります。前者がOnstep本体ESP32用で。後者がSmart web serverのESP8266(Wemos D1 mini Pro等)です。


1.2 ボードの設定

1. ツール → ボードマネージャ を開きます。

2. 「ESP」で検索すると、いくつかの候補が表示されます。

3. 「esp32 by Espressif Systems」 を選択します。最新版ではなく、「2.0.17」 を選択してください。

 別のバージョンではコンパイルエラーが発生する可能性があります。

 最選択すべきバージョンの最新情報はOnStepの公式サイト を確認ください。

ボードマネージャ

4. ツール → ポート ESP32で、 Dev Moduleを選択します

5. ツール → ポートで、USB接続したボードのCOMポートを選択
  windowsのデバイスマネージャで、接続したESPがどのCOMポートに接続されたかを確認します。

Arduino IDE – ツール

1.3 OnstepXのソースファイルのダウンロード

プログラムは、Onstepと、OnstepXがあり、バージョンもいくつか存在します。基板もいくつか種類があります。Congig.hファイルに設定を入力します。必要なConfig.hの設定を順番に説明していきます。今回使用するのは、OnstepX ver10.24cを使用します。

Onstepと、OnstepXの2つがありますが、ここでは、新しいonstepXを使用します。
ダウンロードサイト

ダウンロードしたソースファイルの中にあるConfig.hファイルなどを使用に合わせて修正して、コンパイルしマイコンに書き込みます。以下、設定ファイルの変更について述べていきます。


2. ソースコードの修正

2.1 基板の選択と通信方法の設定

①PINMAPにMaxESP3にします。

ここに基板の種類を入力することで、PIN配置が自動的に読み込まれます。基板は、ここではMaxESP3に準じたものを使用します。

②SERIAL_RADIOは、OFFにします。ESP32の内蔵WIFIを使用する場合は、WIFI_ACCESS_POINTにしますが、ここでは、別体のWIFIを使用するためOFFにします。

Config.h

// PINMAP ------------------------------------------------- see https://onstep.groups.io/g/main/wiki/Configuration_Controller#PINMAP
#define PINMAP MaxESP3 // OFF, Choose from: MiniPCB, MiniPCB2, MaxPCB4, MaxESP4, MaxSTM3, FYSETC_E4, <-Req'd
// BTT_SKR_PRO, etc. Other boards and more info. in ~/src/Constants.h

// SERIAL PORT COMMAND CHANNELS --------------------- see https://onstep.groups.io/g/main/wiki/Configuration_Controller#SERIAL_PORTS
#define SERIAL_A_BAUD_DEFAULT 9600 // 9600, n. Where n=9600,19200,57600,115200,230400,460800 (co

2.2 LEDの機能選択

LEDは、ステータスのインジケータか、レクチルに使用することができます。
SX赤道儀に標準で内蔵されている極軸望遠鏡用のLEDを制御するために、このチャンネルを使用します。そのためには、以下のように変更します。RECTILE_LED_DEFAULTは、LEDの明るさを0-255で入力します。0が最も明るく、255が最も暗くなります。SX赤道儀に内蔵されている極軸望遠鏡のLEDを使用するうえでは、252近辺が程よい明るさになります。
ハンドコントローラを接続していれば、ハンドコントローラを使って、明るさの調整が可能です。

Config.h

// STATUS --------------------------------------------- see https://onstep.groups.io/g/main/wiki/Configuration_Controller#STATUS_LED
#define STATUS_LED                    OFF //    OFF, Steady illumination if no error, blinks w/error code otherwise.          Option

// RETICLE CONTROL ------------------------------- see https://onstep.groups.io/g/main/wiki/Configuration_Controller#RETICLE_CONTROL
#define RETICLE_LED_DEFAULT           252 //    OFF, n. Where n=0..255 (0..100%) activates feature sets default brightness.   Option
#define RETICLE_LED_MEMORY            OFF //    OFF, ON Remember reticle brightness across power cycles.                      Option
#define RETICLE_LED_INVERT            OFF //    OFF, ON Inverts control for cases where 0V is max brightness.                 Option

2.3 モータードライバの選択と駆動スピードの設定

Onstepでは、いくつかの種類のモータードライバーが使用可能です。Config.hに使用するモータードライバに合わせて、Config.hのAXISx_DRIVER_MODELを修正します。
ここでは、TMC2130を使用します。

赤道儀のモータースペック、ギアレシオに合わせて、コードを書き換えます。
こちらのエクセルシートに仕様を入力すると、Config.hのコードに入力する値を計算してくれます。
また、パラメータは、モータ毎(AXIS毎)に設定していきます。

  • Gear Reduction / Other steps
    モーターとウォームギア間のギアレシオ:  ここで紹介する赤道儀のレシオは1になります。参考
  • Gear Reduction / Final stages
    ウォームギアのギアレシオ:   SX赤道儀のギアレシオは180です。
  • Step Motor / Stepper-steps :
    ステッピングモータのステップ幅:
    ここではギア付きのモータを使用しているため、0.1degになります。
  • Step Motor / Micro-steps :
    マイクロステップ
    ステッピングモータステップ幅を分割して、角度分解能をあげることができます。モータードライバによって、選べる数字は異なります。また、マイコンの計算スピードによっても、制約があります。今回は4を選択しています。(数字を大きくしすぎて、正常に動作しない場合は、値を小さくします。)
  • slew speedはmGOTO時のスピードです。ここでは2.0にしています、これは、480倍速です、SX赤道儀の5deg/s(1200倍速)よりゆっくりに設定しています。状況に合わせて、調整するのがよいでしょう。

Config.hに書かれている変数の値にしががって、Config.hのコードを修正していきます。

その他のパラメータについて

  • AXIS1_REVERSE
    ステッピングモータの回転方向を決めます。実際に動作をさせて、赤道儀の軸の動作が逆転する場合は場合は、ON/OFFで切り替えます。
  • AXIS1_DRIVER_MICROSTEPS_GOTO
    GOTOの際は、ステップ幅の解像度は必要ないため、1としておきます。

TMC2130の場合、ソフトウェアからモーター電流を設定できます。モータ及び、ドライバの上限を超えない範囲で、ざっくりと設定します。
(モーターPK243の定格は、0.95A、ドライバのBIGTREETECH TMC2130の定格電流は1.2Aです。)

  • AXIS1_DRIVER_IHOLD
  • AXIS1_DRIVER_IRUN
  • AXIS1_DRIVER_IGOTO

Config.h

// AXIS1 RA/AZM -------------------------------------------------------- see https://onstep.groups.io/g/main/wiki/Configuration_Axes
#define AXIS1_DRIVER_MODEL TMC2130 // OFF, Enter motor driver model (above) in both axes to activate the mount. <-Often

// If runtime axis settings are enabled changes in the section below will be ignored (disable in SWS or by wiping NV/EEPROM):
// \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/
#define AXIS1_STEPS_PER_DEGREE 7200 // 12800, n. Number of steps per degree: <-Req'd
// n = (stepper_steps * micro_steps * overall_gear_reduction)/360.0
#define AXIS1_REVERSE ON // OFF, ON Reverses movement direction, or reverse wiring instead to correct. <-Often
#define AXIS1_LIMIT_MIN -180 // -180, n. Where n= -90..-360 (degrees.) Minimum "Hour Angle" or Azimuth. Adjust
#define AXIS1_LIMIT_MAX 180 // 180, n. Where n= 90..
// AXIS2 DEC/ALT ------------------------------------------------------- see https://onstep.groups.io/g/main/wiki/Configuration_Axes
#define AXIS2_DRIVER_MODEL TMC2130 // OFF, Enter motor driver model (above) in both axes to activate the mount. <-Often

// If runtime axis settings are enabled changes in the section below will be ignored (disable in SWS or by wiping NV/EEPROM):
// \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/
#define AXIS2_STEPS_PER_DEGREE 7200 // 12800, n. Number of steps per degree: <-Req'd
// n = (stepper_steps * micro_steps * overall_gear_reduction)/360.0
#define AXIS2_REVERSE OFF // OFF, ON Reverses movement direction, or reverse wiring instead to correct. <-Often
#define AXIS2_LIMIT_MIN -90 // -90, n. Where n=-90..0 (degrees.) Minimum allowed Declination or Altitude. Infreq
#define AXIS2_LIMIT_MAX 90 // 90, n. Where n=0..90 (degrees.) Maximum allowed Declination or Altitude. Infreq

#define AXIS2_DRIVER_MICROSTEPS 4 // OFF, n. Microstep mode when tracking. <-Req'd
#define AXIS2_DRIVER_MICROSTEPS_GOTO 1 // OFF, n. Microstep mode used during slews. OFF uses _DRIVER_MICROSTEPS. Option

// for TMC2130, TMC5160, TMC2209, TMC2226 STEP/DIR driver models:
#define AXIS2_DRIVER_IHOLD 300 // OFF, n, (mA.) Current during standstill. OFF uses IRUN/2.0 Option
#define AXIS2_DRIVER_IRUN 600 // OFF, n, (mA.) Current during tracking, appropriate for stepper/driver/etc. Option
#define AXIS2_DRIVER_IGOTO 800 // OFF, n, (mA.) Current during slews. OFF uses IRUN. Option
// /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /

// SLEWING BEHAVIOUR ------------------------------------------ see https://onstep.groups.io/g/main/wiki/Configuration_Mount#SLEWING
#define SLEW_RATE_BASE_DESIRED        1.75 //    1.0, n. Desired slew rate in deg/sec. Adjustable at run-time from            <-Req'd
                                          //         1/2 to 2x this rate, and as performace considerations require.
#define SLEW_RATE_MEMORY              OFF //    OFF, ON Remembers rates set across power cycles.                              Option
#define SLEW_ACCELERATION_DIST        5.0 //    5.0, n, (degrees.) Approx. distance for acceleration (and deceleration.)      Adjust
#define SLEW_RAPID_STOP_DIST          2.0 //    2.0, n, (degrees.) Approx. distance required to stop when a slew              Adjust
                                          //         is aborted or a limit is exceeded.
#define GOTO_FEATURE                   ON //     ON, Use OFF to disable mount Goto features.                                  Infreq
#define GOTO_OFFSET                  0.25 //   0.25, Offset in deg's for goto target unidirectional approach, 0.0 disables    Adjust
#define GOTO_OFFSET_ALIGN             OFF //    OFF, ON skips final phase of goto for align stars so user tends to approach   Option
                                          //         from the correct direction when centering.

2.4 RTCリアルタイムクロック(オプション)

Onstepが時間を認識するためには、RTCリアルタイムクロックを使用するのが便利です。
これを使用することで、Onstepは電源を落とした状態でも、時間を保持することができるようになるため、毎回時間設定をする手間を省くことができます。

RTCモジュール VKLSVAN DS3231 AT24C32

Config.h

// TIME AND LOCATION ---------------------------------------------- see https://onstep.groups.io/g/main/wiki/Configuration_Mount#TLS
#define TIME_LOCATION_SOURCE          DS3231 //    OFF, DS3231 (I2C,) SD3031 (I2C,) TEENSY (T3.2 etc,) GPS, or NTP source.       Option
                                          //         Provides Date/Time, and if available, PPS & Lat/Long also.
#define TIME_LOCATION_PPS_SENSE       OFF //    OFF, HIGH senses PPS (pulse per second,) signal rising edge, or use LOW for   Option
                                          //         falling edge, or use BOTH for rising and falling edges.

3.3.4 GPS受信機(オプション)

GPS受信機を使用することも可能です。これを使用することで、時間と場所の両方を自動的に認識することが可能となります。ただし、RTCとGPSの併用はできません。
GPSは、NEMAフォーマット形式のシリアル通信できるものがが使用可能です。ここでは、秋月電子で購入可能なGT-502MGG-Nを使用しています。

GPS受信機 GT-502MGG-N 

Config.h

// TIME AND LOCATION ---------------------------------------------- see https://onstep.groups.io/g/main/wiki/Configuration_Mount#TLS
#define TIME_LOCATION_SOURCE          GPS //    OFF, DS3231 (I2C,) SD3031 (I2C,) TEENSY (T3.2 etc,) GPS, or NTP source.       Option
                                          //         Provides Date/Time, and if available, PPS & Lat/Long also.

#define SERIAL_GPS Serial
#define TIME_LOCATION_PPS_SENSE       OFF //    OFF, HIGH senses PPS (pulse per second,) signal rising edge, or use LOW for   Option
                                          //         falling edge, or use BOTH for rising and falling edges.

2.5 ハンドコントローラの設定(オプション)

赤道儀は、SWS経由でスマホのタッチパネルで操作できます。しかし、暗闇の中で操作するうえでは、スマホのタッチパネル操作に比べて、ハンドコントローラのようなメカニカルスイッチが非常に扱いやすいです。

ハンドコントローラを使用するために、各フラグをONにします。

ハンドコントローラ

Config.h

// ST4 INTERFACE -------------------------------------------------- see https://onstep.groups.io/g/main/wiki/Configuration_Mount#ST4
// *** It is up to you to verify the interface meets the electrical specifications of any connected device, use at your own risk ***
#define ST4_INTERFACE                 ON //    OFF, ON enables interface. <= 1X guides unless hand control mode.             Option
                                          //         During goto btn press: aborts slew or continue meridian flip pause home
#define ST4_HAND_CONTROL               ON //     ON, ON for hand controller special features and SHC support.                 Option
                                          //         Hold [E]+[W] btns >2s: Guide rate   [E]-  [W]+  [N] trk on/off [S] sync
                                          //         Hold [N]+[S] btns >2s: Usr cat item [E]-  [W]+  [N] goto [S] snd on/off
#define ST4_HAND_CONTROL_FOCUSER       ON //     ON, ON alternate to above: Focuser move [E]f1 [W]f2 [N]-     [S]+            Option

2.6 温度湿度・気圧センサの設定(オプション)

BME280を取り付けることで、温度、湿度、気圧を取得することができるようになります。
BME280は、I2C通信です。BME280は、SDOpinによって、I2Cアドレスを2つから選択可能です。

SDO2Cアドレス#define WEATHER
VDD0x77 BME280
GND:0x76BME280_0x76

Config.h

// WEATHER SENSOR --------------------------------- see https://onstep.groups.io/g/main/wiki/Configuration_Controller#WEATHER_SENSOR
#define WEATHER                       BME280 //    OFF, BME280 (I2C 0x77,) BME280_0x76, BME280_SPI (see pinmap for CS.)          Option
                                          //         BMP280 (I2C 0x77,) BMP280_0x76, BMP280_SPI (see pinmap for CS.)
                                          //         BME280 or BMP280 for temperature, pressure.  BME280 for humidity also.

4. Smart Web Serverのプログラミング

Smart Web Serverのハードウェアには、Wemos D1 Proを使用します。プログラムはこのWemos D1 ProにArduino IDEを使用して直接書き込みを行います。
SWSを介することで、Wi-FiでPCやスマホでOnstepと通信ができるようになります。また、SWSと本体とシリアル通信で接続されます。

SWSの内部 Wemos D1 Pro 

4.1 ボードの設定

Smart web Serverは以下でダウンロードします。
ダウンロードサイト

(2のステップと同様に、ボードマネージャインストールします。)

1. ツール → ボードマネージャ を開きます。

2. 「ESP8266」で検索すると、いくつかの候補が表示されます。

3. 「esp8266 by ESP8266 Community」 を選択します。最新版ではなく、「2.7.4」 を選択してください。

 別のバージョンではコンパイルエラーが発生する可能性があります。

 最選択すべきバージョンの最新情報はOnStepの公式サイト を確認ください。されています。

4. ツール → ポート ESP8266で、 LOLIN(WEMOS)D1 mini Proを選択します

5. ツール → ポートで、USB接続したボードのCOMポートを選択
  windowsのデバイスマネージャで、接続したESPがどのCOMポートに接続されたかを確認します。


4.2 Smart Web Serverのソースファイルの修正

Smart Web Serverは、 「Access-Point mode(AP)」と「Station mode(STA)」のどちらかを選択可能で、デフォルトでは「Access-Point mode」になっています。

Access-Point mode:

デフォルトではこのモードが有効になっており、OnStepがアクセスポイントとして動作します。 ここで、アクセスポイントの名前やパスワードを任意に変更できます。Smart Web Serverのハードウェアには、Wemos D1 Proを使用します。プログラムはこのWemos D1 ProにArduino IDEを使用して直接書き込みを行います。
SWSを介することで、Wi-FiでPCやスマホでOnstepと通信ができるようになります。また、SWSは、USRTで通信が行われます。

Station mode (connect toAccess-Point):

ホームサーバーなどのアクセスポイントに、OnStepやPCを接続する構成です。 アクセスポイントのSSIDとパスワードを入力し、OnStepのIPアドレスを設定します。 OnStepは起動時に自動でアクセスポイントへ接続します。 PCのブラウザでOnStepのIPアドレスを入力すると、SWSの画面が表示されます。

Extended.config.h

// These settings are stored in NV (EEPROM) and the SWS will not recognize the settings below except on the first upload unless
// NV is wiped, these settings (where applicable) can be changed at runtime however.
#define AP_ENABLED                  true //        true, Wifi Access Point Enabled.                                          Adjust
#define AP_SSID                  "ONSTEP" //    "ONSTEP", Wifi Access Point SSID.                                             Adjust
#define AP_PASSWORD            "password" //  "password", Wifi Access Point password.                                         Adjust
#define AP_CHANNEL                      7 //           7, Wifi Access Point channel.                                          Adjust
#define AP_IP_ADDR          {192,168,0,1} // ..,168,0,1}, Wifi Access Point IP Address.                                       Adjust
#define AP_GW_ADDR          {192,168,0,1} // ..,168,0,1}, Wifi Access Point GATEWAY Address.                                  Adjust
#define AP_SN_MASK        {255,255,255,0} // ..55,255,0}, Wifi Access Point SUBNET Mask.                                      Adjust

#define STA_ENABLED                 false //       false, Wifi Station Enabled.                                               Adjust
#define STA_SSID                 "Home" //      "Home", Wifi Station SSID to connnect to.                                   Adjust
#define STA_PASSWORD           "password" //  "password", Wifi Station mode password.                                         Adjust
#define STA_DHCP_ENABLED            false //       false, Wifi Station/Ethernet DHCP Enabled.                                 Adjust
#define STA_IP_ADDR        {192,168,1,55} // ..168,1,55}, Wifi Station/Ethernet IP Address.                                   Adjust
#define STA_GW_ADDR         {192,168,1,1} // ..,168,1,1}, Wifi Station/Ethernet GATEWAY Address.                              Adjust
#define STA_SN_MASK       {255,255,255,0} // ..55,255,0}, Wifi Station/Ethernet SUBNET Mask.                                  Adjust

トップに戻る