「未分類」カテゴリーアーカイブ

ServersMan@VPSでのHTTPS対応

やりたい事

このサイト、保護されていない通信と出てくるので、さすがに対応したい。つうかサーバー自身のメンテ大丈夫か、というのもあるがこれはまた別の話。

準備

特になし。

作業

Serversman @vpsの設定

Let’s Encrypt とかいうのを使うと無料で証明書が取得できるとのこと。90日ごとにスクリプトで更新するとかなんだとか。とりあえずserversman @vpsで設定を試みる。

しかし、CentOS7だと、https://kozenist.com/free-ssl-for-serversman-vps/とかを見ると、どうもserversmanで、yumがinitscriptの更新をexcludeしている設定があり、このスクリプトがインストールできないとか。

しかしながら、http://blog.livedoor.jp/blackwingcat/archives/1977599.htmlあたりを見ると、initscriptの問題がすでに解消されているとか。これが本当なら、標準の方法で出来そう。まずはバックアップを取ってyum.confのexcludeをコメントアウト、yum updateをしてみる。Completeしたので、MyDTIから停止->起動。無事アクセスできた。ついでにサーバーのメンテもできた風。

無事アクセスできたので、素直にLet’s Encrypt の設定をすすめる。

Let’s Encryptの設定

まず基本的なところから

https://letsencrypt.org/getting-started/を見てみると、

To enable HTTPS on your website, you need to get a certificate (a type of file) from a Certificate Authority (CA). Let’s Encrypt is a CA. In order to get a certificate for your website’s domain from Let’s Encrypt, you have to demonstrate control over the domain. With Let’s Encrypt, you do this using software that uses the ACME protocol which typically runs on your web host.

Certbotを使えとあるのでそれはなんだというと、そちらを見てみる。

Certbot is a free, open source software tool for automatically using Let’s Encrypt certificates on manually-administrated websites to enable HTTPS.

との事。専用なのな。

https://certbot.eff.org/にアクセスして、自分の環境をメニューから選択すると(Apache on CentOS7)、次のページに飛ばされる。

  1. SSH into the server
  2. Enable EPEL repo
  3. Enable the optional channel
  4. Install Certbot
  5. Choose how you’d like to run Certbot
  6. Set up automatic renewal
  7. Confirm that Certbot worked

と、やること自体は簡単そう。

5でcertbotを使ってみると、

Unable to find a virtual host listening on port 80 which is currently needed for Certbot to prove to the CA that you control your domain. Please add a virtual host for port 80.

と怒られる。よくあることらしい。バーチャルホストを作れ、とのことか。

/etc/httpd/conf.dの下に適当にvhost.confとか作っておく(READMEを参照)

<VirtualHost *:80>
 DocumentRoot /var/www/html
 ServerName www.keitark.com
</VirtualHost>

あとはここで気を取り直して、sudo certbot –apacheを実行すると、こんどはエラーなく Congratulations!まで実行。conf.dのところに、ssl用のvhosts-le-ssl.confとか作ってくれる、便利。

これでOKとおもってアクセスすると、まだ自己証明のまま。うーん。

Apache設定

単独IPでの複数VirtualHostの罠にはまるを見ると、なるほどいろんなところでVirtualhostの設定がされている。同じように、httpd -S で見ると、

VirtualHost configuration:
*:443                  is a NameVirtualHost
         default server www.keitark.com (/etc/httpd/conf.d/ssl.conf:56)
         port 443 namevhost www.keitark.com (/etc/httpd/conf.d/ssl.conf:56)
         port 443 namevhost www.keitark.com (/etc/httpd/conf.d/vhosts-le-ssl.conf:2)
*:80                   www.keitark.com (/etc/httpd/conf.d/vhosts.conf:1)

真っ先にssl.confのdefaultを見に行くようになっていた。それはそっちを参照するなぁ。ssl.confの ## SSL Virtual Host Context以下をばっさり消したら、ちゃんと参照するようになったが、本当にこれでよいのだろうか。あと自分のサイトの設定を事細かに記すのはどうなのか。

とりあえず証明書はちゃんとしたものを使うようになった。よかった。自動化は後でよいか(後でちゃんとやった)。

証明書の確認

https://www.ssllabs.com/ssltest/ で見てみたが、いちおうちゃんとできているっぽいDNS CAAだけNO、あとで調べる(たぶん調べない)。

WordPressの設定

画像入りのページなどにアクセスすると、まだchromeから保護されていない通信、と怒られる。これは、http時代の画像とかか。

Really Simple SSLとかいうプラグインいれて、ボタン一発で全部変更してくれた。すごい。

最後に

serversman @vpsのcentos7で唯一困っていた、initscriptsが更新できない問題がいつの間にか解決していたのが一番大きかった。

Arduinoでの2-key Keyboard作成

やりたい事

とりあえず家じゅうが閉じこもって各々ゲームをしていたりと、楽しく過ごしているのだが、あるゲームでキーボードの耐久性が気になってきた。あと軸の違いもためしてみたいのでゲームで使うボタンだけのキーボードを作りたい。

準備

Anycubic社製 Kossel Linear Plus

ずいぶん前に思い付きで購入し、リビングの片隅で何かの台になっていたもの。ほこりを吹いたり。

キーボードの筐体モデル

https://www.thingiverse.com/thing:3712151

を使った。Arduino Pro Microの穴とかステーとかついている。

Cherry Mx の軸

赤軸とあとで比較のため青軸を購入。千石電子から、次の日に来た、このご時世なのにはやい。

Arduino Pro Micro 互換ボード

これがあるとすぐにキーボードが作れるとのことなので、Shigezoneで購入、次の日来た。アマプラより早い時がある。

 作業

筐体プリント

とりあえず、1年ぶりくらいに動かすので、ほこりをとるところから。firmwareとか新しいのがあるけど面倒なので as is で。

Auto levelingとか調整、試しにプリントしたらBedの温度が途中で上がらなくなり、煙が出てくる。見ると電源の端子台が焦げている。なんだろうな、なんかゆるんでた?とか思いながらとりあえずケーブルを直ではんだ付け。

https://groups.google.com/forum/#!topic/flashforge/nVOJ0iL29Xg

を見るとTriGorillaでよくある話なのか?

とりあえず、久々だったので、https://www.thingiverse.com/thing:1969059

とか、

https://www.thingiverse.com/thing:2771843

を追加した。PSUカバーは12時間とか言われてあきらめた。

軸取り付け

なんか思っていたのと違う仕上がり。うえからはめるだけ、ぴったり固定される絶妙なサイズ。

 
Sの字のところ、サポートを除去するつもりが、間違って下まで突き破ってしまった。まぁ実用上問題はない。
裏から見るとこんな感じ。

Arduino取付

かちっとはまる。すばらしい。写真にうつってないけどMicroUSBコネクタの穴もきれいにはまる。

配線

とりあえず、各々のスイッチの端子、片方グランドで、他方は、Digital in 2, Digita in 3 にそれぞれ接続、空中配線。

ファーム書き込み

あまり中身は考えてなかったので、とりあえず調べてみる。https://qiita.com/kamaboko123/items/c32ad91434ffc7f4ff8d

が、作業の流れが分かりやすかったです。

Platform IOでKeyboard Libraryを追加して、とりあえず下のようなものを書いてみた(いろいろ考えるところはあるのだが、そんなにシビアじゃないだろうし)。

#include <Arduino.h>
#include "Keyboard.h"

#define KEYZ 2
#define KEYX 3

void setup() {
  // put your setup code here, to run once:
  pinMode(KEYZ, INPUT_PULLUP);
  pinMode(KEYX, INPUT_PULLUP);
}

void loop() {
  // put your main code here, to run repeatedly:
  if(digitalRead(KEYZ)==LOW){
    Keyboard.press('z');
  }else{
    Keyboard.release('z');
  }
  if(digitalRead(KEYX)==LOW){
    Keyboard.press('x');
  }else{
    Keyboard.release('x');
  }
  
}

おわりに

いろいろ、まとめている人がいるとありがたい。

ブロック崩しのコントローラとか作りたい。

Anycubic Kossel Linear Plus モータードライバ変更

やりたい事

Anycubic Kossel の静音化として、定番となっているTMC2208をチョイス。ただ、これもよくある情報で、標準のモータドライバと極性が弱になっているので、対策が必要。

普通はプリンターのFirmwareで反転すればよいので、みなそうしている。ただ、問題は今気に入ってるAnycubicのAuto leveling firmwareのsource codeが公開されていない事。多分これを機にMerlinベースのFirmwareに移行するのがいいのだろうけど、現状上手くプリントできているので手を入れたくない。

ただ、TMC2208はOTPメモリの設定値を、UART経由でアクセスしてできるそうだ。これで極性を変えれば解決するはず。

というわけで、TMC2208の書き換え方法を調査した。

準備

FYSETC TMC2208 V1.2

ずいぶん前に購入。V1.0との違いは?よく調べずに、せっかくなので新しいのを買ったはず。

FYSETC 2208 Tester

UART経由でアクセスするため、上と同時購入

FYSETC TMC2208について

https://wiki.fysetc.com/TMC2208/

を見る。なんとなく雰囲気はわかった、とりあえずUARTのピンがモジュール上でつながってないため、半田でジャンパーをショートする必要があるらしい(当然調べる前に適当に繋いでみたけど通信できなかった)。

一応もう少し調べてみる。なにやら、バージョンによって違いがあるようだ。

Versions difference
V1.0 The default is standalone mode,If you need UART mode,you must config by yourself.
V1.2 UART mode, it’s used for F6.

ぱっと見、V1.0はStandalone、V1.2 はUART modeに見えるが、正直よくわからない。このページの下のほうのコメントでも、回路図くれ、何が違うの?、俺はうまくいっている、違ったバージョンを買ってしまった!とかかなり混乱している様子。FYSETCの人っぽい人も、今はみんなV1.2にアップグレードされてるよ、とか言ってて混沌とした感じ。

とりあえずちゃんと勉強しようと、本家のデータシートを見ることに。

TMC2208の勉強

https://www.trinamic.com/fileadmin/assets/Products/ICs_Documents/TMC220x_TMC2224_datasheet_Rev1.09.pdf

ざっくり見て、General Congiguration RegistersのGCONF(0x00)の3bit目がshaftで Inverse motor direction、これこれ。と思ったら他のビットの説明でReset Default が OTP、となっているのがちらほら。嫌な予感がして、5.1.1を見ると、

The OTP memory holds power up defaults for certain registers.

え、certainかよ、という感じで、どうやら思っていたこと(一度書き換えればリセット後は反転動作)が簡単にできそうにないのでやる気がなくなる。マイコンいれるか、Merlin移行かな。

一応モードの整理を続ける。

  • OPTION 1: Standalone STEP/DIR Driver (Legacy Mode)
  • OPTION 2: Standalone STEP/DIR Driver with OTP pre-configuration
  • OPTION 3: STEP/DIR Driver with Full Diagnostics and Control

3 mode of operation の説明なのに option というのは如何なものか。UART使うのはOPTION 2と3という事。多分OPTION 2がやりたかったこと。

一応書き込みだけだから、TXを束ねてUARTで1bitだけ書き換えればよいのだけど、このモードの行き来ってどうするんだろうな。

The TMC22xx supports both, discrete control lines for basic mode selection and a UART based single wire interface with CRC checking. The UART interface automatically becomes enabled when correct UART data is sent. When using UART, the pin selection may be disabled by control bits.

とあるから、そんなに意識しなくてよいかも。OTPって一回だけ書けるとはいえ、やっぱり戻したいとかなりそう(という事が起こらないこともまた正しい)なので、やっぱりUARTで流しこもう、と気を取り直してきたところで今日は終わり。

ShigezoneでいろんなAruduinoを買っているので、どれかにやらせるか、マイコンとか面倒なのでFPGAでやらせるか(もったいない)。