ブログパーツUL5

3Dプリンタ(idbox)のファームウェアが腐り、誤差修正して再書込み

 2ヶ月ぶりに3Dプリンタを動かそうとしたら、全く動きません。USB接続ではエラーなくちゃんと繋がるのですが、温度センサーなどのすべてのデータが何も無い状態でした。マイコンボードがこの暑さで腐った(?)ようです。ググってみたところ、メンテナスに出すと23,000円+部品代+送料もかかるようなので、37号のマイコンボードを交換することを覚悟しました。まだ在庫があるようなので、購入予定に入れておいた。3Dプリンタに搭載しているマイコンボードがArduinoであることから、ダメもとで腐ったファームウェアを再書込みしてみることにしました。

 参考にしたURLは下記の通り
中野島ロボットさんのブログで、週刊 idbox!のプチ改造 No.8 ファームウェアの入れ替え を参考にしました。

**忘却防止のため手順を書き留めておく**
 実施は自己責任で行ってください
デアゴスティーニから idbox.zip をダウンロードして展開します。
  展開したMarlin.INOというファイルをダブルクリックするとArudinoIDEが起動する。
②Arudio IDEを起動したら、
  ツール→ボード から、[Arduino Mega or Mega 2560] を選択する。
  ツール→プロセッサ が、[AT Mega 2560(Mega 2560) ]を選択する。
  ツール→ポートから、COM?(Arudino Mega or Mega 2560) を選択する。(?はPCで変わる)
③idboxのFWの設定ファイル Configuration.h のモーターの設定値を精度向上のため変更する。
  既存コメントアウトして書き換える
//#define DEFAULT_AXIS_STEPS_PER_UNIT {71.1111,71.1111,3200,173.6236} // default steps per unit for Ultimaker
#define DEFAULT_AXIS_STEPS_PER_UNIT { 71.7, 71.7, 3200, 173.6236} // default steps per unit for idbox! 
④再書込みをして完了です。

 再書込みしたら、見事に復活しました。チェックのためばらし始めた3Dプリンタを元に戻して、動かしてみる。ほんとうにマイコンボードが腐っていました。何かの電気ショックでプログラムを格納しているEEPROMの一部が書き換わったのでしょう。購入予定の37号はキャンセルして費用はかからず、直りました。

 おまけに、idboxでの出力寸法が少し誤差があり再出力することが多いと思っていましたが、やはり、提供されていたマイコンボードのファームウェアは問題があったようです。今回の再書込みの際にこの誤差も修正されて3DCADの寸法通り(ノギス実測:±0.0mm)出力されるようになり助かりました。自己責任でファームウエアの修正をするといいでしょう。

 禍を転じて福と為す
 災い転じて福となす
0

Bluetoothモジュール(HC-05とHC-06)のペアリング設定

 BluetoothモジュールHC-05とHC-06を持っているのでワイヤレスで操作するために、2つのモジュールをペアリング設定して利用しようと考えています。しかし、ペアリング設定はハードルが高く、諸先輩たちのブログを参考にさせてもらい、私が忘れないようにまとめて記録しました。

 Bluetooth module HC-05およびHC-06が相互に通信するための設定手順

(1)両方のデバイスで同じボーレートを設定する。
  (例)HC-05およびHC-06で、ボーレートを9600に設定する。
(2)両方のデバイスで、パスワードが同じであることを確認する。
  (例)HC-05とHC-06のパスワードを同じにする。

(3)次に、子機となるHC-06のアドレスを見つける必要がある。
  (但し、HC-06のATコマンドでは、アドレスを調べられない。)
 
(4)Androidを利用してHC-05を使って調べることができる。

  (a)Arduinoに以下のスケッチを書き込む
ーーーーーーーーーーーーーーーーーーーーーーーーーーーー
// HC-05のATモード設定の接続
// VCC - 5V
// GND - GND
// TXD - Pin 10(5V→3.3Vに抵抗分割で接続)
// RXD - Pin 11
// EN - 3,.3V

#include < SoftwareSerial.h >

SoftwareSerial btport(10, 11);

void setup() {
Serial.begin(9600);
btport.begin(38400);
Serial.println("Enter AT commands:");
}

void loop()

{
if (btport.available())
Serial.write(btport.read());
if (Serial.available()){
btport.write(Serial.read());
}
}
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
 
  (b)HC-05とArduinoの接続
  ・EN - 3,.3V
  ・VCC - 5V
  ・GND - GND
  ・TXD - Pin 10(5V→3.3Vに抵抗分割で接続)
  ・RXD - Pin 11

  (c)EN端子をArduinoの3.3Vに接続して、HC-05の右下のボタンを押しながらUSBを接続してATコマンドモードにする。


  (d)Arduino IDEのシリアルモニタで、以下の操作をします。
シリアルモニタは、「CR及びLF」で「9600bps」に指定

   ①AT+RMAAD   :HC-05を以前のペアのデバイスをすべて消去する。
   ②AT+ROLE=1 :HC-05をマスタモードにする。
   ③AT+REST    :HC-05をリセットする。
   ④AT+CMODE=0  :HC-05を任意のデバイスに接続するように設定する。
   ⑤AT+INQM=0,5,9 :最大5台のデバイスを9秒間検索する設定にする。
   ⑥AT+INIT   :SPPプロファイルを開始する。アクティブならERROR表示するが無視。
   ⑦AT+INQ    :周辺のBluetoothデバイスを検索する。
    Bluetoothデバイスが複数ある場合、INQ設定により5台までのデバイスが表示される。
    AT+INQは3つの値を返します。
    ・最初の値はアドレスで、これがペアリングの為に必要な値です。
    ・2番目の値はデバイスのモード。
    ・3番目の値はRSSI信号の強さ。

(5)HC-05をHC-06とペアリングする。
上記の(d)の状態で設定する。

   、AT+PAIR=<アドレス>、<タイムアウト時間
   (例)AT + PAIR = 98D3,31,FBB154,9 と入力する。タイムアウトは秒単位。

   上記の例でHC-05がHC-06と 9秒以内にペアリングする。
   ペアリングが成功すると、「OK」が表示される。

(6)HC-06をHC-05にのアドレスとしてバインド設定する。
   AT + BIND = <アドレス>
   (例)AT + BIND = 98D3,31,FBB154 を使用してバインドする。

(7)ペアリングされた特定の1台のデバイスにのみ接続するようにを設定する。
   AT + CMODE = 1

(8)HC-06へのリンク(HC-05からリモートデバイスであるHC-06への接続)
   AT + LINK = <アドレス>
   (例)AT + LINK = 98D3,31,FBB154

  すべてがうまくいけば、OKの応答が得られる。

  HC-05のLEDは毎秒1回点滅し、HC-06のLEDは点灯状態になり、ペアリング状態になります。接続設定が完了したら、EN端子をオープンにする。電源を入れるたびに自動的に接続する。
0

デジタルオシロの日本語版マニュアルを自作

 デジタルオシロを早く使いたい一心で、超特急で作業をしてやっと日本語版マニュアルを自作しました。他人に見せるわけでなく、益してや販売するわけでもなく(著作権に触れますから)、自分用にしか使いませんから多少変な訳があっても構いません。わからない時にちょこっと調べる程度で、慣れれば見ることもなくなると思います。

 パネルのボタン、ノブ、メニュの名称はすべて英語表記なので、マニュアルでは操作しやすいようにそのまま英語表記のままにして訳しました。翻訳にはGoogleの翻訳機能を活用することで短時間で完成させることができました。面倒だったのが、表(テーブル)の変換で統一性を持たせて「機能メニュ}と「設定}は英語表記のままで、「説明」だけを日本語にしてわかりやすくしました。貼り付けた図は出来るか限り大きくしてわかりやすくしましたため、ページ数が少し増えてずれてしまいました。

 付属のDVDにある英語版マニュアル(93ページ)も印刷し、自作した日本語マニュアル(94ページ)を印刷しました。これで一応完成ですが、PDFにする時や別のPCに移動させた時に図が消えてしまうページがあり、MSらしい互換性の無さに悩まされます。リッチファイルにすることで一応解決してPDFファイルもできました。

 付属の英語版と自作した日本語版のマニュアル
マニュアル
なお、日本語版マニュアルの提供は著作権侵害になるので行いません。あくまで個人使用でご理解ください。
0

ついにデジタルオシロを購入

 ヤフオクで1つ前のモデルの新品を運よく落札できたので、安く購入できました。ヤフオクに旧モデルのSLを出品して購入資金に回せたので、1、5万円で一番安いデジタルオシロが入手でき、測定器キットなどのチャチィものよりずーと本格的な測定器です。
 製作した回路動作をテスターのDCと周波数カウンターで動作確認していましたが、これで、PWMなどの波形観測などができるようになり、動作の解析や理解も早くなります。

 購入したデジタルオシロ一式
デジタルオシロ

 OWONのSDS5032
デジタルオシロ

 基準信号でのテスト(1KHz/5V)
デジタルオシロ

 まだマニュアルを読んでいないのですが、まず試しに製作したパワーパックの出力波形を観測してみました。

 加速のPWM波形
 
 波形観測で、減速の最小にして停車状態ではわずかに波形が出ていることがわかり、加速して最大になるとDCににまでなることがわかりました。ほぼ設計どおりで安心しました。
 PWMの周波数は計算上14.59KHz(Duty52%)で、過去のテスターの周波数カウンターの実測は16.27KHzで、今回の波形観測で15.5KHzでした。

 出力波形の波高調整(VR)
 
 VRを回すことで出力波形が変化していることがわかり、この機能で室内との明るさを調整することができます。
0

Arduino UNO対応のタッチパネル(SmartGPU2)

 Arduino UNO対応したタッチパネルを探していたところ、VIZIC社のSmartGPU2というパネルが見つかりました。まだ、日本では入手できないようですが、LCDパネルの基板とArduino UNOのシールド基板から構成されており、Arduinoのライブラリーもあるようで期待が持てそうである。

 LCDは320×240で解像度はあまり高くはないですが、コントローラとして使用するには十分なように思います。詳細は、SmartGPU 2を参照ください。価格は、$89.00 USDとちょっと高いかもしれません。

SmartGPU 2
SmartGPU2

 オシロスコープにも(?)

 これができるのであれば、1つ購入してもいいかも。




0

Bluetooth部品(HC-06)で接続する方法

 Bluetooth部品のHC-05も届く。HC-05も基本的にHC-06と類似しているので接続方法は同じで問題は無い。HC-06は子機しかならないが、HC-05の方は親機と子機の設定ができるため高機能になる。そのため、ATコマンドで設定できるこことが多い。

 Bluetooth部品のHC-06とHC-05
HC-06とHC-05
 基板は共通のようで、ペアリングの押しボタンがあるかないか位の違いしかなく、HC-05の方がピン数が多い。それにしても1桁も安く入手できるようになったのには驚くばかりである。

 HC-06とHC-05の接続方法
接続
 HC-06とHC-05の電源は内部に3.3Vへの降圧回路があるので、3.6V~6Vの供給となっており5Vに接続するのが正解である。珠に、3,3Vに繋いでいるのがあるが不正解である。モジュール内部は3.3Vなので、TXやTXの信号線は3.3Vでの入出力である。そのため、レベルシフト回路で5V←→3.3Vの変換をする必要があります。簡易的な処置で、3.3Vの信号は5V系の入力にそのまま繋いでも動作しますが、3.3V信号入力に5V信号を接続すれば壊れることが想定されます。そこで、抵抗分割で5Vを3.3Vに降圧して接続します。

 基本的な動作テストは、Bluetooth部品(HC-06)で接続する方法と同じです。HC-05にあるATコマンドをテストできれば、問題なしです。
0

Android開発環境の構築

 スマホのアプリを開発するために、Android開発環境を構築する必要があります。そこで、入門書を参考に必要なツール(ソフトウェア)をインストールします。忘れないようにメモをしながら、作業を進めていきます。

 Androidのスマホのアプリ開発には、主に下記の3つのツールが必要です。
1.JDK(Java Debvelopment Kit、Java開発キット)
2.Android Staudio(統合開発環境)
3.Android SDK(Android Development Kit)

 インストールする。Windowsno32bit版OSにインストールする場合には、「Java SE 8」で検索して探さないと見つかりません。
1.JDKをインストール
http://www.oracle.com/technetwork/java/javase/downloads/index.htmlのORACLEにアクセス
・JavaのうちJava SEを選択して、Dwonloadボタンをクリックする
java SE
・JDKのDWONLOADボタンをクリックする。ここではWindows64bit版しか見つかりません。
JDK
・JDKのAccept License Agreementを同意して、ダウンロードファイルを選択する
JDK

 インストール後に、コントロールパネルで「システムとセキュリティ」→「システム」→「システムの詳細設定」→「環境変数」を開いて設定を追加します。
システム環境変数→新規で
・変数名:「JAVA_HOME」と入力
・変数値:jdkをインストールしたディレクトリのパスを記載
してOKをクリックします。


2.Android Staudioのインストール
・windows10 64bit版は下記のURLからダウンロードしてインストールできます。
 https://developer.android.com/studio/index.htmlにアクセスする。
Android Staudio
・私はWindows7 32bit版のため、32bit版を探し他のバージョンをダウンロードしました。直近のバージョンは上記のURLの下の方にありますが、それ以外は検索しないとみつかりません。
Android Staudio

 「Android入門」と同じバージョンの入手は下記のURLですが、インストールしても問題がありました(?)。原因わからず。
http://tools.android.com/download/studio/canary/1-2-2
Android Studio
 インストールと削除を5、6回してみましたが、「Android入門」のようにならずSDKはインストールできませんでした。結局、問題の起きないバージョンをインストールしておきました。

 Winodows10 64bit版は全く問題なく素直にインストールできますので、もうWindows7 32bit版はサポートしていないのかもしれません。悪戦苦闘の1日で、今日はここまでです。
0

Bluetooth部品(HC-06)とスマホの通信

 Bluetooth部品(HC-06)とスマホの通信できることは確認できたのですが、コマンドを打つのもスマートではないのでアプリを開発しなければならなくなりそうです。しかし、アプリ開発は全くやったことが無くハードルが高すぎます。一応、図書館から入門版の本を借りてきましたが、開発環境もまったくないのでどうしようかと思います。

 そこで、Arduino bluetooth controllerというのがあり、ゲーム風のインターフェイスがありテストでは使用できるかもしれません。

 テスト中
テスト中
いづれ自分で開発できればいいのですが、難しそう。

 こんなGUIができれば最高なのですが・・・
GUI
0

Bluetooth部品(HC-06)で接続する方法

 Arduino UNOでBluetooth部品(HC-06)およびスマとペアリングしてうまく接続する方法には、キーポイントがあります。忘れてもいいように自分の記録としてまとめてみました。
 なお、やっている間にわかったことですが、HC-06は子機(スレーブ)には使用できますが、親機(マスター)には使用できません。親機に使用する場合には、子機/親機兼用(マスター/スレーブ)のHC-05を使用することになる。

HC-06(表面と裏面)
HC-06

接続キーポイント
・Arduino UNOで接続する端子は、D0(RX)とD1(TX)は回避する
 →この端子はArduino UNOにスケッチを書き込む端子と共有している
  スケッチ書込み時に外せばよい。面倒なのでD2、D3を指定する
・HC-06の供給電源(Vcc)は3.6V~5Vで問題ない
 →従って、3.3Vでは電圧不足となり、5Vに接続する
・HC-06のRXD,TXDは3.3V系の入出力となる
 →3.3V/5Vのレベルシフト回路が必要ですが、簡易的な対象で十分
  出力(TXD)はそのまま接続で、入力系(RXD)は抵抗分割する
  Arduinoの出力電圧を1,8KΩ+3.3KΩで3.3Vレベルにして入力する

接続の確認方法
1.まず、最初にArduino UNOでBluetooth部品(HC-06)の接続確認する。
 ・Bluetooth部品(HC-06)はペアリングさせない状態(LED点滅)で確認する。
 ・下記のテストスケッチを書込んで確認する。

//----------------- Test Program 1 ----------------------------
// HC-06 の TXDは、Arduino の Pin2(D2)に接続する
// HC-06 の RXDは、Arduino の Pin3(D3)に抵抗分割で接続する
// HC-05 の TX は、Arduino の Pin10(D10)に接続する
// HC-05 の RX は、Arduino の Pin(D11)に抵抗分割で接続する
//-------------------------------------------------------------
#include
SoftwareSerial BTserial(2, 3); // HC-06 : RX | TX
//SoftwareSerial BTserial(10, 11); // HC-05 : RX | TX

void setup()
{
// PCとArduinoのシリアル速度は、9600bps
Serial.begin(9600);
Serial.println("AT コマンド入力 :");
// HC-06 のデフォルトでのシリアル速度は、9600bps
BTserial.begin(9600);
}
void loop()
{
// HC-06からATコマンドを読み、Arduino IDEのシリアルモニタに通信する
if (BTserial.available())
{
Serial.write(BTserial.read());
}

// Arduino IDEのシリアルモニタから送信データを読み、HC-06に通信する
if (Serial.available())
{
BTserial.write(Serial.read());
}
}
//--------------------------- End -----------------------------------

・起動すると、シリアルモニタに「AT コマンド入力 :」が表示される
・「AT」を送信すると、「OK」と表示されれば接続はOKです
・Bluetooth部品(HC-06)に対するATコマンドによる設定や確認はこの状態で行なう
・HC-06のATコマンドは子機専用なので、HC-05よりもかなり少ない
 
原文ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
HC-06 AT commands are limited, all I could find are given here.
AT : check the connection
AT+NAME: Change name. No space between name and command.
AT+BAUD: change baud rate, x is baud rate code, no space between command and code.
AT+PIN: change pin, xxxx is the pin, again, no space.
AT+VERSION

change baud rate, type AT+BAUDX, where X=1 to 9.
1 set to 1200bps
2 set to 2400bps
3 set to 4800bps
4 set to 9600bps (Default)
5 set to 19200bps
6 set to 38400bps
7 set to 57600bps
8 set to 115200bps
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

2.Bluetooth部品(HC-06)とスマホとの接続確認
・まずスマホのBluetooth Terminalをインストールする
 →私は、Serial Bluetooth terminalというアプリが使い勝手がよかった。
・ペアリングすべきBluetooth機器を検索する。ここでは「HC-06」と表示される
・同じ機器がある場合は、1.の状態で「AT+NAME」コマンドを使って変更する
 (ex. AT+NAMEHC-06_1
・ペアリング機器を指定して、デフォルトのPINである「1234」を入力する
・PINを変更したい場合は、1.の状態で「AT+PIN」コマンドを使って変更する
 (ex. AT+PIN4321
・シリアル通信を変更する場合、1.の状態で「AT+BAND」コマンドを使って変更する
 (ex. AT+BAND6
・ペアリングが完了すると、Bluetooth部品(HC-06)のLEDが点滅から点灯に変わる
・この状態で、下記のテストスケッチをArduinoに書込む。

//----------------- Test Program 2 ----------------------------
// HC-06を繋いだArduinoとスマホリアルモニタを使った通信用スケッチ
// ボーレートは 9600
// NL+CR をコマンドに追加しない
//-------------------------------------------------------------
#include
SoftwareSerial BTserial(2, 3); // RX | TX

void setup()
{
BTserial(9600);
}
char a;
void loop()
{
if (BTserial.available()) {
a = (BTserial.read());
if (a == '1') {
BTserial.println("HELLO <Bluetooth> WORLD!");
}
if (a == '2') {
BTserial.println("2 is comming.");
}
}
}
//--------------------------------- Eed -------------------------------

 スマホのBluetooth Terminalアプリを起動して、ペアリング接続したの後に「1」を送信すると、「HELLO<Bluetooth>WORLD」と返信され、「2」と送信すると「2 is comming.」と返信されます。これでBluetoothの接続確認が出来たことになります。
0

Arduinoで温度、湿度、気圧の製作

 Arduinoで温度、湿度、気圧の測定ができたので、正式に製作することにしました。問題はケースですが、あまりコストを掛けたくいないので、透明なアクリル板の余り板がありこれを利用することにしました。アクリル板を曲げるのが初めてなのであまりうまく出来ず温度コントロールを失敗してしまいました。折り曲げ部分を隠すことで利用できそうであり良しとしました。

 簡易ケース(?)の出来上がり
ケース前
ケース後
 これに、Arduinoのブートローダーを書き込んで専用基板を製作して取り付ける予定でした。しかし、LCDへの接続配線が多く見栄えが悪いので、LCDの裏に専用基板を取り付けるように変更しました。電源はバッテリーを辞めて、USB端子の電源から取るようにUSB端子を取り付けました。PCのUSB端子から電源供給できる方が使い勝手がいいと考えます(データ通信はできません)。

 配線が終わってセンサーの端子表示が見えなくて配線を間違えていることに気づかず電源投入してしまい壊れてしまい、安いとはいえセンサーを再購入という痛い出費となりました。

 別のセンサー(BME280で湿度のないもの)を取り付けて動作テスト

 センサーとして湿度の計測値がないためエラー表示していますが、一応これで正常動作していることが確認できたので完成です。センサーを入手できしだい交換して完了です。ちょっと格好いいでしょ。

 センサーを正規版にして完成!
正規版
0


カレンダ

    123
45678910
11121314151617
18192021222324
25262728293031
<< August 2019 >>