Arducamについてのメモ
ローバーに搭載するカメラについて考えていて、ESP32で動画を取得できてなおかつArduinoIEDで書き込みできるものを探していました。よさげなカメラモジュールがあったのでTwitterでメモしておきました。それらに少し説明文を加えていざカメラを入手したときすぐ使えるようにまとめました。
Arducam Miniモジュール(5メガピクセル) - スイッチサイエンス https://t.co/SaUoVsWFyg
— ヨ ロ ズ マ サ ム ネ (@munekunsan) 2019年4月9日
ただ、このカメラモジュールをArduinoIEDで使うにはファイルシステムをアップロードしなければなりません。
— ヨ ロ ズ マ サ ム ネ (@munekunsan) 2019年4月9日
上記のArduCAMのページからGithubのページに飛びDownload ArduCAM_ESP32S_UNObordの欄にURLがあるのでコピーします。ArduinoIEDを開き、ファイル>環境設定<設定と開いていきますと追加のボードマネジャーのURLの欄にペーストします。okを押してタブを閉じます。ツール>ボード:○○>ボードマネージャーを開きます。しばらく待つとボードが全て表示されるのでArduCAM_ESP32_UNO by ArduCAMを探してインストールしちゃってください。
使用ピンは VCC GND SCL SDA CSn MISO MOSI SCLK を使用します。
・・・とまぁここまで調べておけばいざカメラを買ってからスムーズに使うことができるのではないでしょうかね。switchscienceのページにユーザーガイドやアプリケーションノートなどあるのでそちらも参考にしながら進めていきます。
ローバ本体設計
明けましておめでとうございます。更新が二か月以上かかってしまいとし越してしまいました。早いものですねぇ。今回はローバの基板やサーボ、電池などの固定、格納を目的とした外装を設計したお話です。だらだらしたり修正に時間かかったりしたので時間がかかってしましました。そんなこんなしている間に大学の後輩が修論を終わらせたそうです。おめでとうございます。
1. 目的
ローバとして走行可能な本体をざっくり設計する。
2. ローバについての概要
今現在、自作ローバを製作中でして2017年に初期型を作って以来作っていませんでした。ここしばらくはその改良型を作るた試行錯誤してます。
ローバについて軽く書きますと。ローバとは月や火星、小惑星の地表を走行し探査することを目的としたロボットです。ローバは車輪が2個から複数個ついているものや、車輪がなく慣性モーメントでランダムに移動するものもあります。筆者は二輪のローバを作製します。二輪のローバは車輪付きのローバの中でも車輪の少なさからコンパクトな設計が可能であるのが特徴といえます。また、車輪がついているので目的地までの制御走行が可能です。二輪のローバはスタビライザ(安定化装置)をつける必要です。というのもスタビライザーがないと走行せずに本体のみがその場で回転してしまうからです。図スタビライザーを地面につっかえさせ、本体の回転を防ぎます。ローバを作製する際に、サイズの制限を設けました。内径146mm×240mm参考にしたのはARLISSのオープンクラスのサイズを参考にしますた。
探査車 - Wikipedia3. 要求
- 直径146mm×高さ240mm内のサイズ
- メンテがしやすい
- 走行時に破損しない程度の強度をもつこと
- スタビライザを展開方式とし、展開前はサイズ内に入っていること
以上4つを仕様要求としました。めちゃくちゃ簡単ですね。
1に関してはサイズ制限がないとどんどん大きくなるので設けました。また今回は本体のみの設計ですのでなるべく小さく設計します。タイヤをつけた時にサイズオーバーしないよう気をつけます。タイヤ×2個+本体=制限サイズ内である事を目指します。2. に関しては部品の組み立て分解ができないとメンテナンスができません。工具がアクセスしやすいように設計します。3. いわずもがな。壊れたら元も子もありません。4. 地面まで伸びたスタビライザを格納しなければサイズオーバーになります。折りたたみましょう。
4. 設計手法
設計する際にどのように設計したのか大まかな流れを書きます。
- 部品サイズの測定
- 部品の配置図作製
- ポンチ図の作製
- モデリングと検査
まぁ正直なところ上記の順番通りでなく配置図描いたりポンチ図描いたりを何回か繰り返しました。本当に大まかな流れです。
4.1. 部品サイズの測定
使用する部品のサイズをノギス、直尺で計測します。細かなデティールまでは計測しません。アセンブリする際に必要な縦横高さと穴の位置大きさを計測しました。部品ごとの寸法を紙に控えます。
4.2. 部品の配置図作製
上記の要求を満たすよう部品を配置します。まずは最適であろう場所に部品をざっくりと書いていきます。
4.3. ポンチ図の作製
大まかな配置が決まったら細かな寸法を記入し、具体的にしていきます。寸法を入れたポンチ図を正面図、上面図、側面図を新たに描きます。自分は5mmマスのノートを使って書きました。とても楽でわかりやすいのでお勧めです。
4.4. モデリングと検査
ポンチ図を基にFusion360でモデリングしていきます。パーツを作りアセンブリで組み立てていきます。組み立てができたら部品どうしが接触していないか、工具が入るスペースがあるかを確認して不備があるなら修正していきます。この修正から検査を何度か繰り返しましたので時間がかかってしまいした。
5.完成モデル
完成モデルの画像です。材料はアクリル樹脂のプラ板を使用します。接着剤で突合せ板を固定します。ギアボックス、スタビライザ、その他電子部品を搭載したイメージ図です。外装と内装の二つに分けて紹介します。ちなみにギアボックスのモデルは左右についているお粗末なものです。スタビライザのモデルは真ん中にちょろっと出ている板です。
5.1. 外装
外装です。サイズが90mm×16mm×55mmとなりました。外装の上面の画像と三面図です。素材はアクリル樹脂の2mm板でつくります。
ボルト、ナットが入る場所は工具が入るように空間を設けました。負荷がかかりそうなギアボックス周辺は強度が出るようにトラス構造にしました。
5.2 内装
内装です。部品を定位置に固定しようとすると画像のようにいびつなものができました。上面と下面から見た画像です。それと三面図です。
内装に電子部品とスタビライザを付けました。上から見てもスタビライザが中央に来るよう曲げ加工しようと思ってます。しかし、2mm厚のアルミ材を使用するつもりなのですが自宅で曲げ加工できんの?と疑問が。高さを少しでも小さくするため、皿ねじを使用します。例えば、9V電池の上に配置したネジ穴などネジ頭が邪魔になる場所には皿ネジを使用します。
5.3 組立と走行時のイメージ図
外装と内装の組み立てイメージです。後ろの八角形の物体は以前製作したタイヤのモデルです。スタビライザの位置をわかりやすくするために配置しました。片方しか準備していませんが横から見やすいので勘弁して・・・
上から順に内装、外装上面を組み立てます。外装下面にスタビライザーを通すように内装を入れます。その後、外装上面をのせてネジで固定します。
スタビライザの長さを確保するため、車輪の外周近くから車輪中央を通るように配置しました。一枚目の画像ではスタビライザとサーボを青く表示しました。二枚目の画像は展開後のイメージです。三枚目の画像が走行時のイメージでず。
6. あとがき
最後までお付き合いありがとうございました。今回ローバーの本体を設計(もといデザイン)しました。これから実際に作製して、壊れないで走行してくれるのかや、組み立てやすいのかを確認します。それにともない、さらにこれから細かいところを修正するかもしれないです。
ESP32でローバーの基板を作ったお話
皆さんこんにちわ、よろずです。今回ローバーの電子基板を四苦八苦しながら、サイトを右往左往しながら作った話です。
1. 目的
ローバーを動作させるための電子系(基板)を作成します。
2. 概要
2.1 全般
現在、想定するローバーの動作としては基本的な動作として前進・後退・右回転・左回転・スタビライザーの開閉。これらをWIFI通信で遠隔操作させます。自立駆動させたいっちゃさせたいのですが、ちゃんと動作するか確認するためにまずは信号を送信しラジコンのように動作させます。ブロック図を図示します。
2.2 電源系統
ESP32開発ボードの動作には3.3Vの電源が必要ですが5Vピンに3.3Vに降圧するレギュレータがついています。5Vピンに9Vの電源を接続し3.3Vに降圧します。使用されているレギュレータASM1117-3.3を調べましたら15Vまで入れておkでした。
参考:http://www.advanced-monolithic.com/pdf/ds1117.pdf
モーターの動作には1.5V~3.3Vの電源が必要となります。3.3Vピンからモータードライバーを経由してモーターの給電をします。サーボ電源も3.3Vピンから給電します。
参考:http://akizukidenshi.com/catalog/g/gP-06437/
2.3 通信系統
ESP32に搭載されているWIFI通信機を使用します。今回はWIFIルーターを経由して通信します。HTMLで作製した操作ページから制御を行います。
3. 作製
3.1 基盤作製
今回はユニバーサル基盤で作成します。以下の写真に作製した基盤を載せます。以下に使用部品を記載します。
主な使用部品
- ESP32開発ボード
HiLetgo ESP32 ESP-32S NodeMCU開発ボード2.4GHz WiFi + Bluetoothデュアルモード
- 出版社/メーカー: HiLetgo
- メディア: オフィス用品
- この商品を含むブログを見る
- モータードライバーDRV8833
- サーボSG-5010
- ギアボックス
- 9V電池(100均)
以下にパワーポイントで無理やり書いた回路図を記載します。
3.2 プログラム
以下にプログラムを記載します。
#include <WiFi.h> #include "esp_system.h" const int servo = 22; //サーボのピン番号22pin const int frequ = 50; //周波数50Hz const int Amotor1 = 17; const int Amotor2 = 16; const int Bmotor1 = 19; const int Bmotor2 = 18; const char* ssid = "xxxxxxxxxxx"; //ご自分のルーターのSSIDに書き換えてください。 const char* password = "xxxxxxxxxxx"; //ご自分のルーターのパスワードに書き換えてください。 WiFiServer server(80); void setup() { delay(1000); Serial.begin(115200); //サーボのPWMの設定チャンネル、ピン、周波数の定義 ledcSetup(0, frequ, 8); // 0ch 50 Hz 8bit resolution ledcAttachPin(servo, 0); // 15pin, 0ch //モーターの設定、ピン番号 pinMode(Amotor1,OUTPUT); //set Amotor1 pinMode(Amotor2,OUTPUT); //set Amotor2 pinMode(Bmotor1,OUTPUT); //set Bmotor1 pinMode(Bmotor2,OUTPUT); //set Bmotor2 delay(10); //シリアルモニタ表示 Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); //wifiのssid,パスワード設定 WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } //シリアルモニタ表示 Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); server.begin(); } //モーター制御変更時0.5sだけ停止 void stop(){ digitalWrite(Amotor1, LOW); digitalWrite(Amotor2, LOW); digitalWrite(Bmotor1, LOW); digitalWrite(Bmotor2, LOW); delay(500); } void loop(){ WiFiClient client = server.available(); if (client) { Serial.println("new client"); String currentLine = ""; while (client.connected()) { if (client.available()) { char c = client.read(); Serial.write(c); if (c == '\n') { if (currentLine.length() == 0) { //操作ページの設定 client.println("HTTP/1.1 200 OK"); client.println("Content-type:text/html"); client.println(); client.println("<!DOCTYPE html>"); client.println("<html>"); client.println("<head>"); client.println("<meta name='viewport' content='initial-scale=1.5'>"); client.println("</head>"); client.println("<body>"); client.println("<form method='get'>"); client.println("<font size='4'>ESP-WROOM-32<br>"); client.println("</font><br>"); client.println("<br>"); client.println("<center>"); client.println("<input type='submit' name=0 value='F' style='background-color:#248; color:#fff;border-style: none; height:50px; width:50px; '>"); client.println("</center>"); client.println("<p style='padding-top':15px;>"); client.println("</p>"); client.println("<center>"); client.println("<input type='submit' name=2 value='L' style='background-color:#248; color:#fff;border-style: none; height:50px; width:50px; '>"); client.println("<input type='submit' name=4 value='S' style='background-color:#be0000; color:#fff;border-style: none; height:50px; width:50px; '>"); client.println("<input type='submit' name=3 value='R' style='background-color:#248; color:#fff;border-style: none; height:50px; width:50px; '>"); client.println("</center>"); client.println("<p style='padding-top':15px;>"); client.println("</p>"); client.println("<center>"); client.println("<input type='submit' name=1 value='B' style='background-color:#248; color:#fff;border-style: none; height:50px; width:50px; '>"); client.println("</center>"); client.println("<p style='padding-top':15px;>"); client.println("<center>"); client.println("<input type='submit' name=5 value='open' style='background-color:#666666; color:#fff;border-style: none; height:50px; width:50px; '>"); client.println("<input type='submit' name=6 value='close' style='background-color:#666666; color:#fff;border-style: none; height:50px; width:50px; '>"); client.println("</center>"); client.println("</form>"); client.println("</body>"); client.println("</html>"); client.println(); break; } else { currentLine = ""; } } else if (c != '\r') { currentLine += c; } //モーター制御文 if (currentLine.endsWith("GET /?0=F")) { stop(); digitalWrite(Amotor1, HIGH); digitalWrite(Bmotor1, HIGH); } if (currentLine.endsWith("GET /?1=B")) { stop(); digitalWrite(Amotor2, HIGH); digitalWrite(Bmotor2, HIGH); } if (currentLine.endsWith("GET /?3=R")) { stop(); digitalWrite(Amotor1, HIGH); digitalWrite(Bmotor2, HIGH); } if (currentLine.endsWith("GET /?2=L")) { stop(); digitalWrite(Amotor2, HIGH); digitalWrite(Bmotor1, HIGH); } if (currentLine.endsWith("GET /?4=S")) { stop(); } //サーボ制御文(制御パルス:0.5ms~2.4ms PMWサイクル20mS ) if (currentLine.endsWith("GET /?5=open")) { delay(50); ledcWrite(0,30); //(最大パルス値*PMW最大値)/PMWサイクル≒30 } if (currentLine.endsWith("GET /?6=close")) { delay(50); ledcWrite(0,6); //(最小パルス値*PMW最小値)/PMWサイクル≒6 } } } client.stop(); Serial.println("client disonnected"); } }
3.3 操作ページ
操作ページはESP32のプログラム内で編集します。3.2.のプログラム内の行目から行目のHTML文が操作ページの編集となります。操作ページを以下に表します。前進をF(Front)後退をB(Back)右回転をR(Right)左回転をL(Left)停止をS(Stop)サーボの開閉をO(Open)C(Close)ボタンとしました。
WIFI通信でESP32を制御するにはESP32をWIFIルーターのネットワーク内に入れる必要があります。そのためにはWIFIルーターのIPアドレスとパスワードをESP32のプログラム内の11行目12行目に登録すればおkです。
WebブラウザからESP32に接続します。接続する機器はネットワーク内にあるスマートフォンかパソコンで行います。ブラウザを開き、ESP32のIPアドレス(例192.168.○○○.○○○)を入力します。すると操作ページが表示されます。
4. 動作確認
タイムラグがほぼなく動作することを確認しました。モーターの動作を行いながらサーボの動作もできます。やったで
ラグほぼ無しの動作ができました! pic.twitter.com/ZWZJYY95jq
— ヨ ロ ズ マ サ ム ネ (@munekunsan) 2018年10月12日
5. まとめ
ローバーをWIFIで操作するために必要な基板を作りました
6. 参考文献
WIFI設定やプログラムをかく時に参考にした記事
ESP-WROOM-32 ( ESP32 ) で Wi-Fi スマホ LED スイッチ作り | ページ 4 / 4 | mgo-tec電子工作
HTMLを組む時の参考記事
ESP32をArduinoIEDでプログラミング
こんにちわ。趣味で色々やってるまさむねです。暖かいコーヒーが美味しい季節ですね。この記事は今現在、自主作製しているローバの作業記録となります。基本は他サイトを見ながら自分でやってみたというノリです。この記事ではESP32をaruduinoIDEでプログラミングできるよう設定を行い、実際に動かしてみるまで何をしたかをしたためました。ESP32を始める人にとって一つの参考になればと思います。
1.目的
ローバーに使用するESP32をプログラミングするためにArduinoIDEの設定を行うことを第一目的とします。ここまで来たら実際にプログラムを書き込んで動作させるまでやっちゃいます。
2.概要
ESP32はWIFI通信とBluetooth通信ができるマイコンといったぐらいの認識です。これを使用してモーターとサーボ制御を無線制御をさせます。aruduinoIDEはaruduinoシリーズのマイコンを動作させるためのソフトです。プログラムを書いたり、書き込んだり、通信したりできます。統合開発環境って言うみたいです。
3.準備するもの
- HiLetgo ESP32 ESP-32S NodeMCU開発ボード2.4GHz WiFi + Bluetoothデュアルモード こちらAmazonで購入した開発ボードです
https://www.amazon.co.jp/gp/product/B0718T232Z/ref=oh_aui_detailpage_o00_s01?ie=UTF8&psc=1
- aruduinoIDE(これからインストールします)
- LED
- 10kΩ抵抗
- USBケーブル(マイクロUSBbタイプ)
4.aruduinoIDEのインストールと設定
4.1ArduinoIEDのダウンロードとインストール
まずaruduinoIEDをインストールしましょう。Arduino - Softwareから下図のaruduinoIDEのダウンロードページに飛べます。
このページからWindowsやMac、Linuxなどご使用しているOSから選んでください。クリックすると次のページに進みます。
はい、こちらのページですね。JUST DOWNLOADをクリックでダウンロード開始されます。
次にダウンローしたファイルを開いてインストールします。エクスプローラーを開きますとダウンロードフォルダ内にArduinoIEDのインストーラーがあります。それをダブルクリックで開きます。
開いたあとはインストールするにあたって利用規約に従いますか?どれを選びますか?的なことを英語で質問されるのでi agreeとかokとかnextとか押していけば大丈夫です。これでインストールは完了です。開こうとすると『ArduinoIEDはインターネットからダウンロードされたアプリケーションです開いてもよろしいですか?』的なことを聞かれるかもしれませんのでOKをクリックしてください。
4.2ArduinoIEDでESP32をプログラミングでできるように設定する
さて、ここからが本番です。ちょっとやる事が多いですが頑張りましょう!!ArduinoIEDでESP32をプログラミングできるようにするにはESP32のライブラリーをインストールしなければなりません。そのライブラリーはGithub(「プログラムやらソースコードなどのファイルが投稿、保存されている場所」ぐらいにしか筆者は思ってない)にあるので以下リンクからダウンロードします。
ページを開いたら真ん中よりチョイ下あたりにInstallation instructionsにUsing Arduino IDE Boards Manager(preferred)の欄がありInstructions for Boards Managerを選択しダブルクリックで開きます。
開いたら以下の画像のページが表示されます。Stable rlease linkからURLをコピーします。
URLをコピーしたらaruduinoIDEを立ち上げファイルから環境設定を開きます。ショートカットキーはCtrlキー+カンマキーでパッと開けます。すると以下のウィンドウが開きます。
環境設定の追加のボードマネージャーのURLの欄に先ほどコピーしたURLを張り付けます。その後OKを押して環境設定を閉じます。
IDE画面に戻りツール内のボードからボードマネージャーをクリックします。すると以下図の画面が出てきます。赤枠で指定したところにESP32と記入して検索します。
本来であれば以下の図で削除と書かれているところにインストールと書かれていますのでクリックしてインストールを開始してください。筆者がすでにインストールしてしまっているので削除と書かれている画像を使用しました...ややこしくてすみません…
再びaruduinoIDEに戻り細かな設定をします。
ツールの欄にその細かな設定をする欄があります。以下設定内容です。
ボード:ESP32 Dev Module
FlashMode:QIO
Flash Size:4MB(32Mb)
Partition Scheme:初期値
Flash Frequency:80MHz
PSRAM:Disabled
Upload Speed:115200
Core Debug Level:無し
シリアルボード:ESP32を使用するCOMボード
と設定しました。以上でaruduinoIDEの設定が終わりました。お疲れさまでした
5.ESP32を動作させる
5.1LEDを点滅させる
せっかくプログラムを組めるように設定したので早速LEDを点滅させましょか。まずは回路を作ります。手元に10kΩの抵抗があったのでLEDを直列でぶっこみましょう。すでに光っていますが以下回路の写真です。
PIN23番にLED10k抵抗を順番に刺します。LEDは極性があるので長い脚をピン側に向けて刺しましょう。
次にLEDを一秒間隔で点滅させるプログラムを記述します。
int ledPin = 23; int i =0; void setup() { pinMode(ledPin,OUTPUT); } void loop() { digitalWrite(ledPin,HIGH) ; delay(1000); digitalWrite(ledPin,LOW); delay (1000); }
aruduinoIDEにコピー&ペーストしたら左上にあるチェックマークの検証ボタンを押します。問題がなければ右矢印マークのマイコンボードに書き込むをクリックします。
書き込む際にArduinoIEDには『スケッチをコンパイルしています』と表記されます。この時にESP32についているENボタンとIO0ボタンを長押しします。
書き込みがはじまりましたら『マイコンボードに書き込んでいます』と表記されます。この時にESP32のIO0ボタンとENボタンを離します。書き込みが終わりましたら、もう一度ENボタンを押しますと、LEDが一秒感覚で点滅を始めます。
以上で書き込み終わりです!!!お疲れさまでした!!
書き込みをする際にスイッチを押したり離したりしていたのは書き込みのモードに入れるためだそうです。自分はこの方法で時々失敗しながらですが書き込みできています。本来は順番があるとかなんとか・・・
6.あとがき
ここまで書いたのは大学のレポート以来なんじゃないでしょうか・・・
ESP32についての記事はすでに多数あります。正直他の記事のほうが分かりやすいし細かいところまで詳しく書いてます。1つの参考にしていただければと思います。それとこの記事を読んでちょっとでも電子工作に興味をもってもらえれば幸いです。これからもっとオリジナルなものが書ければいいなと思う次第です。
最後までお付き合いいただきありがとうございました!!
ローバー作製近況報告
ユニバーサル基盤実装で詰みました。送信されないんですもの。作った基盤が悪いのか電流不足なのかなんなのか・・・
まぁいいさ!!とりあえずは!!
今回、詳しいことは書かずにあらすじ兼まとめを書いて近況報告と称してお茶を濁します。
ローバー作製近況報告
そういえば今まで名称が定まっていませんでした。一応は惑星探査車を目標にしているのでローバーで呼び名を統一することにしました。愛着が沸く名前をちゃんとつけたいところです。
今までローバーを作るまでにしてきたことをまとめておきます。
といったところまで進みました。
それぞれ箇条書きしたテーマを一つ一つ記事にしていこうと思います。先駆者のブログやサイトを読んで実際に真似してちょっと手を加えて動いたで!!といった具合で書いていきます。
今後は
- ユニバーサル基盤動作確認
- 外装作製
- 全体動作確認
といった具合で進めていきます。
ちなみに外装のデザインは一年前に作ったものを改良しようと思っています。
うぃーんうぃーんブブブブブブ
— ヨ ロ ズ マ サ ム ネ (@munekunsan) 2017年12月4日
とりまラジコン完成
FPSで使うwsdaのキーを前後左右に当てはめて操作
Xbeeで送受信してarduinoで制御させるちょー簡単設計 pic.twitter.com/xSwHVhAtUq
今回はさくっとこんなもので終わりです。
オリジナルTシャツを作りました
やってしまった・・・
オリジナルTシャツを作ってしまいました。
作品がこちらです!
半分悪乗りで作ってしまったこのTシャツ!なんとなんと当ブログ筆者の描きおろしイラスト『トビカカルネコ』をオリジナルプリント様に送りつけておこがましくも制作していただきました!ありがとうございます!!
素材はメッシュ!(本当は綿100%がよかった!)サイズはでっかくXL!全面印刷による大迫力なオーバープリント!通気性速乾性ともによし!!これから寒くなる季節には最悪だぜ!!
君も飛びかかるパワフルな猫をこの胸に宿してみないか・・・
友人に見せたところ「いやwマジックで落書きしただけじゃんw」と言われました。いやいやいや、ちゃんと印刷されてますよって。
『ラクガキネコTシャツ』今のところ在庫の用意してないけど、もし売るなら2700円ぐらいかな?
も、もし欲しい方いたらコメントしてくれると嬉しいです/////
以上、久々の更新でした!!
三軸加速度センサーでサーボさせたかった
お久しぶりです。今回は電子工作の回です。手元にある部品で何か作れないかな?と思い寄せ集めの部品で回路を作りましたのでレポート兼備忘録を書くことにしました。
筆者は素人みたいなものでして、これよんでこうしたほうがいいよ!とかここどうなってるの?とかそんなことも知らないの?とかアドバイスやコメント、質問等あればTwitteなりコメントお願いいたします!
1. とりあえずの目標
有翼飛行機(ラジコン?)を自作したときに自動でサーボでローイング、ヨーイング、エレベーターを自動制御させてみたいな。というのが頭にあり作ってみることにしました。
まず最初の目標は三軸の(x軸、y軸、z軸)加速度を検知させて3個のサーボの制御をおこなうことです。もし可能なら三軸同時にタイムラグ少なく制御させたいですな。
2.概要
まずはシステムのざっくりな説明です
Arduino unoと三軸加速度センサ間の通信はSPI通信をしています。サーボの通信はPWM通信で動作させています。Arduino unoの電源はPCからUSBで給電しています。三軸加速度センサの電源はArduino unoの3.3Vから給電。サーボの電源は乾電池の6Vから給電しています。以下に使用した部品と制作した回路図、プログラムを記載します。
2.1使用した部品
Arduino uno
3軸加速度センサ LIS331
サーボ×3
- CG-5010
- S3005
- もう一個わかんない
乾電池4本(6V)
2.2回路図
手書きの回路図には電源を4Vと記載していますが間違えました。6Vです!
サーボは並列回路を組んで電源供給しています。
2.3使用したプログラム
3軸加速度センサーを動作させるためのプログラムがすでにネット上にあったのでそれをちょちょいと書き加えてサーボをなんとか動作させるようにはできました。
使用したプログラムのダウンロード先がどこだか覚えていません!ごめんなさい!たしかGit Hubにあった気がします。
以下プログラム
三軸加速度センサーから値を取得し、サーボの角度0度から180度の間の数値に置き換えています。その置き換えた数値をサーボに送信し動作させています。
3.動作結果
サーボの3軸加速度センサー制御の件をまとめようとしてるけど「???????」ってなってる
— ヨ ロ ズ マ サ ム ネ (@munekunsan) 2018年6月30日
考えられる問題の切り分けしないと pic.twitter.com/C3jzrf8RUU
うーん、よくわかんないっす
絶えず細かく変化している加速度の値を読み込んでいます。その値を常時サーボに送っているせいかギシギシ動きまくっています。
電力不足なのかプログラムがよくないのか回路の組み方が悪いのかどれも考えられるので問題の切り離しをひとつづつやってかないと何にもわかんないだろうな・・・
考察は取り合えず後に回して後々追記していこうかと思います。(これじゃぁもらえるアドバイスなんてないだろうな・・・)そもそも勉強不足なのもあるしいろいろ調べてみます