RumiCar-C3の製作 プログラミング編 その1(Arduino IDE)

はじめに

 RumiCar-C3について、これまで回路設計編、車体設計編を書きましたが、今回はプログラミング編です。

 自動運転車のコミュニティ向けに設計してきましたが、プログラムはまだ自動運転には対応していません。とりあえずWiFiでラジコン操作できるようにしています。

 これまでの設計でちゃんと走ることができるのかを確認するためのプログラミングです。

▼ソースコードについては、GitHubのリポジトリをご覧ください。最新のプログラムが入っています。

https://github.com/404background/RumiCar-C3

▼ProtoPediaにも書いています。

https://protopedia.net/prototype/5030

▼以前の記事はこちら

RumiCar-C3の製作 回路設計編(Quadcept)

はじめに  今年に入ってから開発を進めていたRumiCar-C3について、今回から少しずつ記事にまとめていこうと思います。  まずは回路設計編です。あと車体設計編と、プロ…

RumiCar-C3の製作 車体設計編(Fusion 360)

はじめに  前回はRumiCar-C3の回路設計編でしたが、今回は車体設計編です。  元はといえば、コミュニティの誰でもRumiCarを作れるようにということで設計しています。ギ…

Arduino IDEでプログラミング

主な単体試験でのプログラム

 マイコンはSeeed Studio XIAO ESP32C3を使っています。千円ぐらいで、WiFiやBLEも使えて小型です。個人的にお気入りのマイコンです。

 モジュール単体のプログラムについては、それぞれ記事にまとめています。

▼モータードライバーはこちら。TAMIYAのギヤボックスを制御します。

モータードライバーを使ってモーターを制御する その2(DRV8835)

はじめに  今回はモータードライバーのDRV8835を使ってみました。普段からよく使っているTB6612FNGとは制御方法が異なります。基板の大きさがこちらのほうが小さいですね…

▼サーボモーターはこちら。ステアリングを操作しています。

XIAO ESP32C3を使ってみる その2(analogWrite関数、サーボモーター)

はじめに  今回はXIAO ESP32C3で、analogWrite関数とサーボモーターの制御を試してみました。  サーボモーターについては、既存のライブラリが使えませんでした。そこで…

▼距離センサーはこちら。これを使った衝突回避のプログラムは書いていませんが、動作は確認できました。

距離センサーを使ってみる その1(VL53L0X)

はじめに  今回は距離センサーのVL53L0Xを使ってみました。自動運転アルゴリズム開発プラットフォームのRumiCarでも使われていたものです。 ▼RumiCarのリポジトリはこち…

 距離センサーは上記の記事では1つしか使っていないのですが、複数の距離センサーを使い分けることもできました。一つずつ順番にXSHUTピンで起動し、アドレスを書き換えました。

スマートフォンで操作してみる

 先程までのプログラムと、さらにWiFiのAccessPointにするプログラムを組み合わせました。

 これでスマートフォンに接続して、ブラウザで特定のIPアドレスにアクセスすると操作できるようにしてみました。

▼WiFiのAccessPointについてはこちら。

XIAO ESP32C3を使ってみる その4(WiFi AccessPoint、二輪ロボット)

はじめに  今回はXIAO ESP32C3をWiFiのアクセスポイントにして、ブラウザから操作できるようにしてみました。  そもそもなぜこの機能を試したのかというと、展示会やイ…

 初期の頃は、操作画面といっても文字を選択してURLにアクセスし、そのURLによって操作を切り替えていました。

▼押す部分が小さいので操作しにくい...

 その後操作画面のようなものにしました。C/C++系のArduino言語で、HTMLを文字列として渡す都合上、かなり書きにくかったです。

▼見た目はこんな感じ。デザインはできないです...

 右側の三角を押すと、右にステアリングを切る、右斜め前に前進または後進するといった感じです。

▼ステアリングを操作するとこんな感じ。

 実際に走らせてみました。モーターの回転速度は、analogWrite関数を使っているので0~255で調整します。

▼速度が80だとこんな感じ。このくらいが操作しやすいです。

▼最高速度にするとこんな感じ。コントロールが難しいです...

 ちなみに、コントローラの画面にはCSS Gridを使っています。HTMLを文字列として渡すということは、ダブルクォーテーションをエスケープしたりする必要があって不便です。そこでHTMLを文字列に変換する、ちょっとしたプログラムを用意しました。

▼詳細はGitHubのリポジトリをご覧ください。

https://github.com/404background/RumiCar-C3/blob/main/controller/%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%A9%E7%94%BB%E9%9D%A2%E3%81%AE%E4%BD%9C%E6%88%90.md

距離センサーの動作確認

 どのくらいの距離を測定できるのか、検証してみました。2mぐらいまで測定できるようですが、位置が低くて床に反応するので、だいたい1mぐらいまで測定できました。

 もし距離が必要なら、より高い位置に設置することが必要です。

▼定規で測っている位置ぐらいの数値になっています。そんなに厳密な数字が必要なわけではないので、いい感じです。

▼外装を取り付けると距離センサーが反応しなくなる可能性を気にしていたのですが、ちゃんと反応していました。

▼ちなみに、RumiCarコミュニティでVL53L0Xの後継品である、VL53L1Xがあることを教えてもらいました。こちらは4mまで測定できるようです。

https://www.st.com/ja/imaging-and-photonics-solutions/vl53l1x.html

最後に

 走行するためのプログラムはできたので、自動運転のプログラムを作成したいところなのですが、他のマイコンを載せたくなったりして停滞気味です。3Dプリンターで誰でも作れるように設計しているので、もしよければプログラムを書いてもらえたらと思います。

 距離センサーの位置は高くした方が良さそうなのですが、外装のデザインが難しくなるので悩みどころです...

コメントを残す

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