ROBOT・IOT・相談室

こちらのコーナーは、ROBOT・IOT全般のQ&A
最下部のコメント欄をご使用下さい。

32 thoughts on “ROBOT・IOT・相談室”

  1. 32

    虎白 says:

    >31
    ありがとうございます.
    海外から購入されてたんですね.
    自分が探すと,除雪機用などの大きいのしか見つけれなかったです.国内にも小さいの売ってるんですね.
    とても参考になりました。

  2. 31

    inohana says:

    >30 虎白さん
    2号機のクローラは、これ、ですが今は、販売していないようです。
    3号機は、クローラ付きシャーシですが、これは今でも、販売しています。しかし、モーターが貧弱なのと、動力伝達機構に問題があり、あまりお勧めしませんが、ネチコチ手を入れれば、一応動くようにはなります。
    また、国内の取り扱いとしては、https://store.shopping.yahoo.co.jp/k-yu/は、いかがでしょう?

  3. 30

    虎白 says:

    こんにちは.
    クローラを使ったロボットを制作しようとしているのですが,2号機や3号機に装着してあるようなゴムのクローラやキャタピラを販売してる業者がインターネットを使ってもみつけられません.
    いのはな電子工房さんはどのように入手したのでしょうか?
    業者の名前かどう探したか教えてはいただけないでしょうか.

  4. 29

    inohana says:

    ムンジェウンさん

    ロボット1号機に、ご興味を持って頂き、ありがとう御座います。しかしながら、現在のところ、まだ販売はしていません(販売出来るレベルでは、、、)。
    修行を積んで、販売出来るように、頑張りたいと思います。

  5. 28

    ムンジェウン says:

    ロボット1号機は売ってないですか。
    農業で働いてる父親が買いたいとおっしゃったので質問します。

  6. 27

    ムンジェウン says:

    ロボット1号機は買えないものですか。
    Youtubeから見て質問します。

  7. 26

    inohana says:

    東京まで、来られるんですね。
    了解しました。
    ここまでは、作って動かす実感を持って出来たのではないでしょうか?

  8. 25

    s says:

    括弧足りませんでしたね、、。修正しました。
    ロボットに組み込んで動かしてみます!
    明日から1週間ほど東京出張なので、しばらく作業できません。帰ってきてからまたお願いします!

  9. 24

    inohana says:

    素早いですね。
    これで、loopの中からROBOTの制御の基本部分が1行のプログラム・コードでできるようになったと思います。
    (プログラムの括弧の数がNGでしたが、修正しましたか?)

    実際のROBOTに組み込んで、やってみるのが良いのでは、ないでしょうか?

    次は、WiFiで動かすステップです。

  10. 23

    s says:

    ピンの信号0でオフなんですね。
    ターンは左右逆転するようにしました。

    void RobotRightTurn(){
    //右タイヤ
    ledcWrite(0, (uint32_t)(1023 * (1-Speed));
    ledcWrite(1, (uint32_t)(1023 * 1);
    //左タイヤ
    ledcWrite(2, (uint32_t)(1023 * 1);
    ledcWrite(3, (uint32_t)(1023 * (1-Speed));
    }

    void RobotLeftTurn(){
    //右タイヤ
    ledcWrite(0, (uint32_t)(1023 * 1);
    ledcWrite(1, (uint32_t)(1023 * (1-Speed));
    //左タイヤ
    ledcWrite(2, (uint32_t)(1023 * (1-Speed));
    ledcWrite(3, (uint32_t)(1023 * 1);
    }

  11. 22

    inohana says:

    これで、Robotの動作をloopの中から、1行で制御出来るようになりました。同様に、RobotRightTurn、RobotLeftTurnもつくりましょう。


    void RobotOff(){
    //右タイヤ
    ledcWrite(0, (uint32_t)(1023 * 0));
    ledcWrite(1, (uint32_t)(1023 * 0));
    //左タイヤ
    ledcWrite(2, (uint32_t)(1023 * 0));
    ledcWrite(3, (uint32_t)(1023 * 0));
    }

  12. 21

    s says:

    RobotOffってどうすればよいでしょうか?
    それ以外は書きました。

    double Speed=0.5; //Speed Control変数

    void setup() {
    pinMode(4, OUTPUT);
    pinMode(5, OUTPUT);
    pinMode(16, OUTPUT);
    pinMode(17, OUTPUT);
    ledcSetup(0, 100, 10); //(Ch 0-15,Freq,Timer Bits)
    ledcSetup(1, 100, 10); //(Ch 0-15,Freq,Timer Bits)
    ledcSetup(2, 100, 10); //(Ch 0-15,Freq,Timer Bits)
    ledcSetup(3, 100, 10); //(Ch 0-15,Freq,Timer Bits)
    ledcAttachPin(4, 0); //(Pin,Ch)
    ledcAttachPin(5, 1); //(Pin,Ch)
    ledcAttachPin(16, 2); //(Pin,Ch)
    ledcAttachPin(17, 3); //(Pin,Ch)
    }

    void loop() {
    RobotForward();
    delay(1000);
    RobotStop();
    delay(1000);
    RobotReverse();
    delay(1000);
    }

    void RobotForward(){
    //右タイヤ
    ledcWrite(0, (uint32_t)(1023 * 1);
    ledcWrite(1, (uint32_t)(1023 * (1-Speed)); //Speed=0停止、Speed=1最高スピード
    //左タイヤ
    //ledcWrite(2, (uint32_t)(1023 * 1);
    //ledcWrite(3, (uint32_t)(1023 * (1-Speed));
    }

    void RobotReverse(){
    //右タイヤ
    ledcWrite(0, (uint32_t)(1023 * (1-Speed));
    ledcWrite(1, (uint32_t)(1023 * 1);
    //左タイヤ
    ledcWrite(2, (uint32_t)(1023 * (1-Speed));
    ledcWrite(3, (uint32_t)(1023 * 1);
    }

    void RobotStop(){
    //右タイヤ
    ledcWrite(0, (uint32_t)(1023 * 1);
    ledcWrite(1, (uint32_t)(1023 * 1);
    //左タイヤ
    ledcWrite(2, (uint32_t)(1023 * 1);
    ledcWrite(3, (uint32_t)(1023 * 1);
    }

  13. 20

    inohana says:

    括弧が足りませんでした。

    void RobotForward(){
    //右タイヤ
    ledcWrite(0, (uint32_t)(1023 * 1));
    ledcWrite(1, (uint32_t)(1023 * (1-Speed))); //Speed=0停止、Speed=1最高スピード
    //左タイヤ
    //ledcWrite(2, (uint32_t)(1023 * 1);
    //ledcWrite(3, (uint32_t)(1023 * (1-Speed)));
    }

  14. 19

    inohana says:

    >>18
    まずは、プログラムのパーツを揃えましょう。
    例にならって、RobotForward,RobotReverse,RobotStop,RobotOffを作りましょう。

    ■RobotForward例

    double Speed=0.5; //Speed Control変数
    void setup() {
    pinMode(4, OUTPUT);
    pinMode(5, OUTPUT);
    ledcSetup(0, 100, 10); //(Ch 0-15,Freq,Timer Bits)
    ledcSetup(1, 100, 10); //(Ch 0-15,Freq,Timer Bits)
    ledcAttachPin(4, 0); //(Pin,Ch)
    ledcAttachPin(5, 1); //(Pin,Ch)
    }

    void loop() {
    RobotForward();
    delay(1000);
    //RobotReverse();
    //delay(1000);
    }

    void RobotForward(){
    //右タイヤ
    ledcWrite(0, (uint32_t)(1023 * 1);
    ledcWrite(1, (uint32_t)(1023 * (1-Speed)); //Speed=0停止、Speed=1最高スピード
    //左タイヤ
    //ledcWrite(2, (uint32_t)(1023 * 1);
    //ledcWrite(3, (uint32_t)(1023 * (1-Speed));
    }

  15. 18

    s says:

    次は無線アクセスでのコントロールでしょうか? 

  16. 17

    s says:

    大丈夫です。了解しています。

    修正したら動きました!
    ありがとうございます。

    void setup() {
    pinMode(4, OUTPUT);
    pinMode(5, OUTPUT);

    ledcSetup(0, 100, 10); //(Ch 0-15,Freq,Timer Bits)
    ledcSetup(1, 100, 10); //(Ch 0-15,Freq,Timer Bits)
    ledcAttachPin(4, 0); //(Pin,Ch)
    ledcAttachPin(5, 1); //(Pin,Ch)
    }

    void loop() {
    ledcWrite(0, (uint32_t)(1023 * 1));
    ledcWrite(1, (uint32_t)(1023 * 1));
    delay(1000);

    ledcWrite(0, (uint32_t)(1023 * 0));
    ledcWrite(1, (uint32_t)(1023 * 1));
    delay(1000);

    ledcWrite(0, (uint32_t)(1023 * 1));
    ledcWrite(1, (uint32_t)(1023 * 1));
    delay(1000);

    ledcWrite(0, (uint32_t)(1023 * 0.5));
    ledcWrite(1, (uint32_t)(1023 * 0));
    delay(2000);
    }

  17. 16

    inohana says:

    >>15
    sさん
    同じ、ハードウェアを持っていないので、実験確認してからの回答ではないので、度々こういうことが、あるかも知れませんが、ご容赦を。
    以下の絵を見て下さい。ESP32単体で出力波形を確認したところ、PWMに指定したDIOは、digtalWriteが効かないようで、PWMでHIGHにしなければならないようです。

  18. 15

    s says:

    最初一瞬だけ動いてあと動きません、、。PWM 0.1の部分を0.5にしても1にしても変わりません。どこがおかしいのでしょう?

  19. 14

    inohana says:

    原理です。

  20. 13

    inohana says:

    >>10
    申し訳ない、若干のミスがありました。
    以下が、正しい(たぶん)。

    void setup() {
    pinMode(4, OUTPUT);
    pinMode(5, OUTPUT);
    ledcSetup(0, 100, 10); //(Ch 0-15,Freq,Timer Bits)
    ledcSetup(1, 100, 10); //(Ch 0-15,Freq,Timer Bits)
    ledcAttachPin(4, 0); //(Pin,Ch)
    ledcAttachPin(5, 1); //(Pin,Ch)
    }

    void loop() {
    digitalWrite(4, HIGH);
    digitalWrite(5, HIGH);
    delay(1000);

    digitalWrite(4, HIGH);
    ledcWrite(1, (uint32_t)(1023 * 0.1)); //DIO5がPWM 0.1の部分がSpeed調整(0~1)
    //digitalWrite(5, LOW);
    delay(1000);

    digitalWrite(4, HIGH);
    digitalWrite(5, HIGH);
    delay(1000);

    //digitalWrite(4, LOW);
    digitalWrite(5, HIGH);
    ledcWrite(0, (uint32_t)(1023 * 0.1)); //DIO4がPWM 0.1の部分がSpeed調整(0~1)
    delay(1000);
    }

  21. 12

    inohana says:

    >>10
    まずは、理屈・解説抜きで以下をやってみましょう。

    void setup() {
    pinMode(4, OUTPUT);
    pinMode(5, OUTPUT);
    ledcSetup(0, 100, 10); //(Ch 0-15,Freq,Timer Bits)
    ledcSetup(1, 100, 10); //(Ch 0-15,Freq,Timer Bits)
    ledcAttachPin(4, 0); //(Pin,Ch)
    ledcAttachPin(5, 1); //(Pin,Ch)
    }

    void loop() {
    digitalWrite(4, HIGH);
    digitalWrite(5, HIGH);
    delay(1000);

    //digitalWrite(4, HIGH);
    ledcWrite(0, (uint32_t)(1023 * 0.1)); //DIO4がPWM 0.1の部分がSpeed調整(0~1)
    digitalWrite(5, LOW);
    delay(1000);

    digitalWrite(4, HIGH);
    digitalWrite(5, HIGH);
    delay(1000);

    digitalWrite(4, LOW);
    //digitalWrite(5, HIGH);
    ledcWrite(1, (uint32_t)(1023 * 0.1)); //DIO5がPWM 0.1の部分がSpeed調整(0~1)
    delay(1000);
    }

  22. 11

    inohana says:

    >>10
    素晴らしい!
    STEP BY STEPなので、PWMをやってみましょう。
    草刈りROBOTの操縦には、必須の基本機能ですね。
    解説文を準備します。

  23. 10

    s says:

    ESP32とTB6643KQが届いたので、
    開発環境インストールして、Lチカやって、上手くいったので、
    以下のようなコードでモーターの制御やってみました。できました。なんか感動です。

    void setup() {
    pinMode(4, OUTPUT);
    pinMode(5, OUTPUT);
    }

    void loop() {
    digitalWrite(4, HIGH);
    digitalWrite(5, HIGH);
    delay(1000);

    digitalWrite(4, HIGH);
    digitalWrite(5, LOW);
    delay(1000);

    digitalWrite(4, HIGH);
    digitalWrite(5, HIGH);
    delay(1000);

    digitalWrite(4, LOW);
    digitalWrite(5, HIGH);
    delay(1000);

    }
    次どうしたらよいでしょうか?(子供みたいですみません)

  24. 9

    s says:

    ESP32とTB6643KQを秋月電子に注文しました。届いたらやってみます!

  25. 8

    inohana says:

    >>6
    まずは、PWMは後からやることにして、停止、正転、反転、OFFの基本動作をやってみるのが良いと思います。
    Arduinoは既にお持ちのようなので、ここは一気にESP32(これ、¥1,480、が使いやすいです)でやってみるのも良いかと、、、(GOALは、遠隔操作&自律走行なので)
    1,2PINに以下の図ように、high,Lowを与えると、動作をコントロールできます。

  26. 7

    inohana says:

    >>6
    PWMについては、また別途解説しますので、Step By Stepで行きましょう、、、

  27. 6

    s says:

    おお。こういうことがわからなかったんです。ありがとうございます。やってみようと思います。回転数をPWMで制御しようと思うと、Arduinoからの信号をパルスにして送ってやればいいってことでしょうか?

  28. 5

    inohana says:

    >>4
    最初は、ICを使うのが簡単です。
    モーターをArduinoで正転、反転、停止するだけなら、これだけで、出来ます。Lチカ並みに簡単ですよ。

  29. 4

    s says:

    半田づけして回路を作る作業から逃げないほうがいいんでしょうね。トランジスタやコンデンサの意味もわかってないので、そういうレベルからです。Hブリッジも調べてどういうものかはわかりました。でも自分で作ろうと思うと抵抗値の計算方法が全くわかりません。うーん。また勉強だ。

  30. 3

    inohana says:

    >>2 sさん
    わたしに解る範囲でしたら、
    このコーナーのご活用を、、、

  31. 2

    s says:

    残念ながら現状の私の知識ですと、ICひとつ与えられても全く手が出ません。やはり電子回路の基礎からやらねばならないのか、、。

  32. 1

    inohana says:

    Sさん

    このコーナーを試しに使ってみます。
    W数は不明ですが、1号機、3号機程度のモーターならば、
    秋月・東芝のTB6643KQ(¥280)が使い易いし、これで十分です。
    2号機や、原発ROBOTではもっと大電流が必要で、なかなか良いドライバーを知らないので、Hブリッジを自作して使っています。12V 10Wならば、TB6643KQでOKだと思います。150Wの草刈り機は、正転・反転制御が不要であれば単純なパワーMOS・FETのON/OFF制御で、OKだと思います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

        画像を添付(jpg,gif,png)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

〒350-0821        埼玉県川越市福田422