ページ移動

  • 前のページ
  • 次のページ

エントリー

2021年08月の記事は以下のとおりです。

NanoPi NEOのサーバ化(その2)

NanoPi NEOのサーバ化は,ひとまず運用可能レベルで完成したが,以下の改良(機能追加)を行うことにした

電源スイッチ

NanoPi NEOにはリセットスイッチが無いため,ハードリセットするためには電源をOFF/ONする必要がある

そのためUPSを組み込んだ場合,ハードリセットするにはUPS電源をOFFしないとならない

何らかの異常が発生した時に無いと蓋を開ける手間が掛かることになるだけだが電源スイッチを追加することにした

miniups_回路図_u.png

(注)無電圧時スイッチを切りにしたかったのでNチャネルFETを使ったせいでGndを共通にできなくなり嵌る

DCDCの入力に電源スイッチを設けDCDCの出力に緑LEDを消灯したことで判断できるようにする(主電源は赤LED)

IMG_20210822_172431.jpgIMG_20210822_172358.jpgIMG_20210822_172508.jpg

スイッチは3Dプリンタで作製した台座を付けてホットボンドで取付け

IMG_20210823_173809.jpg

小型スイッチなのでケースは簡単な加工で済ませた

主電源信号

長時間の停電対応ができるように停電を判断するための信号線を追加(PG11へ入力)

RTC(リアルタイムクロック)

NanoPi NEOにはRTCが無いのでソフトリセットでも日時が初期化される

日時はサーバ起動時にネット取得され更に一定期間で更新する機能もあるので常時接続運用では問題にはならないのだけどRTCモジュールを使ってみたいので追加した(専用ケースにはDS1307が付いている)

使用したのはDS1307が載っているTinyRTCモジュールで,そのまま使うには問題があるので手を加えた

TinyRTCモジュール仕様

  • リアルタイムクロックDS1307搭載,I2C接続
  • EEPROM:AT24C32(32Kb)搭載
  • 発振器動作中のバッテリバックアップモードの消費電流は500nA以下の低消費電力
  • モジュールにEEPROMを搭載しているので,日付時刻と共にセンサーなどの数値を保存することが可能
  • コンパクトなデザイン:27mm * 28mm * 8.4mm

TinyRTCモジュールは5VでNanoPi NEOは3.3V

I2Cのレベル変換もあるがTinyRTCモジュール上のプルアップ抵抗を取り除き外部で3.3Vをプルアップする

バッテリーバックアップが充電池

バックアップ電池が充電池使用(LIR2032)なので4.5V程印加されている

充電回路を無効化し同サイズのCR2032を使用する

回路図を見つけたのでTinyRTCモジュールを改造した

DS1307_circuit_u.png

  赤:プルアップ抵抗を取り除く

黄・緑:バッテリーの充電回路で取り除く(R6とD1だけでも可)

  緑:短絡(取り除いた後)

IMG_20210822_122509_u.jpg

(処理後)

IMG_20210822_162906_u.jpg

後で嵌らないように動作確認する

IMG_20210822_173755.jpg

Arduino IDEで,ファイル>スケッチ例>Wire>i2c_scannerを実行

WS_20210820_001.png

接続は問題なし(0x68がRTCで,0x50はメモリ)

確認のためのスケッチ

#include <Wire.h>
#define RTC_address 0x68
const char *week[] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };

uint8_t REG_table[7];

void setup() {
Wire.begin();
Serial.begin(9600);

//初期日時を書き込む(データ形式は二進化十進)
Wire.beginTransmission(RTC_address);
Wire.write(0x00); //Register 先頭アドレス
Wire.write(0x00); //second
Wire.write(0x34); //minute
Wire.write(0x19); //hour
Wire.write(0x04); //week
Wire.write(0x22); //day
Wire.write(0x08); //month
Wire.write(0x21); //year
Wire.endTransmission();
}

void loop() {
Wire.beginTransmission(RTC_address);
Wire.write(0x00);//Register 先頭アドレス
Wire.endTransmission();

  //RTCデータの読み込み
Wire.requestFrom(RTC_address,7);
for(int i = 0; i < 7; i++) {
REG_table[i] = Wire.read();
}

  //RTCデータ表示
Serial.print("20");
Serial.print(REG_table[6],HEX); //year
Serial.print("/");
Serial.print(REG_table[5],HEX); //month
Serial.print("/");
Serial.print(REG_table[4],HEX); //day
Serial.print("(");
Serial.print(week[REG_table[3]]);//week
Serial.print(") ");
Serial.print(REG_table[2],HEX); //hour
Serial.print(":");
Serial.print(REG_table[1],HEX); //minute
Serial.print(":");
Serial.print(REG_table[0],HEX); //second
Serial.println();
delay(1000);
}

結果

WS_20210820_002.png

正常に動作したので,バッテリーを付け正しい日時を登録しておく

バッテリー

改良によって18650ではケースのスペースが不足したのでコンパクトなリポバッテリーに変更

IMG_20210821_205919.jpg

1100mAhのリポで連続1.5A可能,過充電,過放電の安全回路も付いているので安全性も上がる

付属のコネクタはPHを小型にしたもので「Micro JST 1.25」と呼ぶらしい

基板用のコネクタが見つからなかったのでケーブル付きコネクタを購入

全体構成

IMG_20210822_202429.jpg

IMG_20210822_202845.jpg

消費電力

改良が終わりハードウェアは完成したのでバッテリーを空にして充電を含む消費電量を計測したところ0.89Aだったので約5V1Aで5W

IMG_20210823_181318.jpg

充電が終わりアイドル状態では0.17Aであった

IMG_20210825_174853.jpg

尚,充電中はMAX.0.89Aで徐々に減っていく

もう1つ改良(2021.8.26追加)

ソフトウェアの調整をしながらテスト運用していたところCPUのヒートシンクが結構熱くなっていることに気付いた

CPU温度が42℃(外気30℃)位なので大したことはないが,ケースに熱を逃がして冷却することにした

そこでケースに接触できるサイズのサーマルパッド(30x30x3)を準備して装着

IMG_20210826_190927.jpgIMG_20210826_193345.jpg

CPU温度46℃時,サーマルパッドは37.2℃に上昇

IMG_20210826_193908.jpg

ケースに放熱し経過をみると

IMG_20210826_194040.jpg

34.6℃(外気27.6℃)

32.6℃(外気26.7℃)

35.9℃(外気28.9℃)

と,十分効果あり

IMG_20210828_140422.jpg

固定設置してソフトウェアの調整,正式運用準備を進める

・・・

後に赤LEDは眩しいことに気付く・・・修理等のタイミングがあればオレンジ色にでも交換するかな

NanoPi NEOのサーバ化

Cubieboardのサーバ機能の一部(NTP/DPCH/DNS/Mail)を移行させるため(ようやくとなるが)NanoPiサーバを作製する

(特にDHCPは別にしておかないとサーバメンテとかで何かと不便なことがあるのでさっさと分けておけばよかったと思う)

ケース

少しは見栄えを良くしたかったのでタカチの金属ケース(100x30x70)を使用する

IMG_20210814_191413.jpg

消費電力

OctoPrint用の回路と似た5VのUPSを組み込んだ回路となり,先にNeoPiの消費電力を確認しておく

実働,通常で0.14~0.26A,CPUストレスを与えたところ0.35~0.42A

IMG_20210820_205638.jpg

最大でも0.42程度で,ネットでの情報も0.5A以下なのを確認

回路図

 

miniups_回路図_v1.png

DCDCが効率90%なのでDCDC入力1Aでも出力に余裕はある

電源は5Vでリポ充電分があるため1.5Aは必要か(完成後に確認予定)

基板

ユニバーサル基板を使い,NanoPi本体,リポ充電モジュール,DCDCモジュールとUPS回路を載せる

サイズはCタイプ(秋月呼称)で十分だろう

基板はNanoPi本体を載せるために,ルーターにダイヤモンドカッターで加工(簡単)

IMG_20210814_151447.jpgIMG_20210814_152749.jpgIMG_20210814_153228.jpg

これにNanoPiはピンソケット,モジュールはケースに合わせエポキシ樹脂で固定

IMG_20210814_210205.jpg

リポの選定

バッテリーはサイズ的にもOctoPrintの時に使った200mAのリポにしようと考えていて出力電圧を調整して確認を行った

IMG_20210815_101154.jpg

ところが0.5Aを出力できないようなので,サイズ的にぎりぎりとなるが18650に変更

IMG_20210815_113030.jpg

その他の部品を基板に載せて基板はひとまず完成

IMG_20210815_144327.jpgIMG_20210815_144347.jpg

ケース加工と組込

バックパネルを外部インタフェースに合わせてケースを加工

IMG_20210815_153404.jpg

ドリル+鑢掛け加工なんで,あまり綺麗には加工できない・・・が,十分

IMG_20210815_162638.jpg

フロントパネルにLEDを付けるが,LEDが飛び出さないようにするためLEDマウント用の台座を3Dプリンタで作った

IMG_20210815_173146.jpgIMG_20210815_173706.jpg

LEDを付けた台座を穴を空けたフロントにホットボンドで取り付ける

IMG_20210815_173942.jpgIMG_20210815_174025.jpg

ケースに基板を付けて完成

IMG_20210815_192909.jpg

IMG_20210815_193559.jpg

IMG_20210815_193618.jpg

 

IMG_20210815_193827.jpg

問題点

ソフトウェアの設定を行おうとしたところ,運用可能な最低レベルで完成はしたが少々問題があることが判明したため改良する

3Dプリンタの調整(TPU印刷可能になる)

TRONXY XY-2 ProのエクストルーダーをTitanに更新しての調整不足をこつこつと解決させた

フィラメントガイド

エクストルーダー変更後のフィラメントガイドが完全でなかったので完成させる

回転部分にベアリング(外形22mm,内径8mm,厚み7mm)を使用するほどでもないので各部品をPLAで作製した

IMG_20210725_114051.jpg

軸はナットで止めたほうが融通が効くのだけど・・・ホットボンド使用

IMG_20210725_120518.jpg

特に問題なく回転しており十分使用に耐えられる

IMG_20210725_141650.jpg

印刷速度アップ

拙者のXY-2 Proは速度仕様が100mm/sまでとなっているが少々はアップできるとのことなので(1.5倍の)150mm/sを目標にしてみた

単純にスライサーで速度を上げるだけではダメでプリンタのファーム設定とCureの設定を変更する必要がある

(プリンタ設定)

ファーム設定値を以下のように変更

M8012 I200 XY最大移動量 (100)
M8013 I30 Z 最大移動量(20)
M8014 I120 押出機(120)
M8006 I100 (80)
M8008 I400 加速度 (400)
M8500 保存コード

設定値はOctoPrintのターミナルから入力

PRT_CMD.png

オートレベリングも早く移動するようになった

(Cure設定)

Cureのプリンタ別のデフォルトファイルを変更するが,変更後に再度プリンタの追加が必要(先のプリンタを削除して追加しないと適用されない)

修正ファイル

C:\Program Files\Ultimaker Cura 4.10.0\resources\definitions\tronxy_xy2pro.def.json

変更前

 "machine_max_feedrate_x": { "value": 100 },
"machine_max_feedrate_y": { "value": 100 },
"machine_max_feedrate_z": { "value": 20 },
"machine_max_feedrate_e": { "value": 120 },

変更後

 "machine_max_feedrate_x": { "value": 200 },
"machine_max_feedrate_y": { "value": 200 },
"machine_max_feedrate_z": { "value": 40 },
"machine_max_feedrate_e": { "value": 240 },

入力制限値を大きくするだけなので大きい値にしておいても良し

Cure印刷設定

(PLA)印刷速度をアップさせて調整

PLA.png

若干の微調整はあるだろうが,今のところ印刷速度・品質ともに満足いく設定となっている(OctoPrint経由の場合は除く)

(TPU)最適の設定値を模索した

TPU.png

印刷速度が肝だったようだ

  • 外郭: アイロン無効
  • インフィル: インフィル密度10~15%で十分(多くても問題ない)
  • マテリアル: 印刷温度210℃(少しだけ糸引き)
  • マテリアル: ビルドプレート50℃ (不要とも)
  • マテリアル: フロー100%
  • マテリアル: 引き戻し無効
  • スピード: 印刷速度 30mm/s 15(外)10(スカート)

ビルドプレートがガラスだと(かなり)良く定着するので剥がすのが大変な場合もある

ビルドプレート温度はもっと下げても良いようだ(フィラメントの指定はなし)

印刷物の形状によっては(左)糸引きもある

IMG_20210809_203646.jpgIMG_20210810_080753.jpg

フィラメントドライボックス

DAISOの12L密封容器で3個入るドライボックスを作製

IMG_20210812_164705.jpg

IMG_20210812_164643.jpg

部品は全て自前の印刷で,データは貰ってきたり更新・作製した

フィラメント単体の交換をスムーズにするためスプーラーにした

IMG_20210808_190657.jpg

フィラメントの出力部は凝った作りにしている方がいたのでいろいろ試してみた

IMG_20210813_155814.jpgIMG_20210813_155844.jpg

スプーラー:https://www.thingiverse.com/thing:3234744

スプーラー用レール(※):https://www.thingiverse.com/thing:4563022

棒支え(にするなら):https://www.thingiverse.com/thing:569333

フィラメント出力部(汎用):https://www.thingiverse.com/thing:2957506

ももジイさん版:https://www.youtube.com/watch?v=OpU1Z5Qlf4E&t=511s

その他,麦茶さん版を使用:https://www.youtube.com/watch?v=lOM6s8NUf5Q

※)レールのみ使用,Curaでサイズを調整(長さのみ変更)している

最終的にネジ部が13㎜の継手が適合したももジイさん作を採用

IMG_20210813_161359.jpg

まずは完成(油性マジックのマーキングが残っているがアルコールで簡単に消せる)

IMG_20210813_172900.jpg

中央が500g用,左右が1Kg用で使用する

IMG_20210813_172956.jpgIMG_20210813_172943.jpg

ページ移動

  • 前のページ
  • 次のページ
  • ページ
  • 1

ユーティリティ

検索

エントリー検索フォーム
キーワード

過去ログ

Feed