Kodのアイコン画像
Kod 2021年02月10日作成 (2021年02月27日更新)
製作品 製作品 閲覧数 3127
Kod 2021年02月10日作成 (2021年02月27日更新) 製作品 製作品 閲覧数 3127

加速度センサとXbeeを用いたドローンを基盤設計から自作

加速度センサとXbeeを用いたドローンを基盤設計から自作

詳しく書いたブログは以下にあります!!
https://kod2212.hatenablog.com/entry/2019/10/23/232344?_ga=2.186428653.518330021.1612935339-1826127355.1612315974
.
.
.

方針&機能

部品の選定&機能の相談
Eagle による回路の設計及びプリント基板の外注
3D CAD & 3D printer によるフレーム、ガードの設計
Arduinoでプログラム
飛ぶ
横回転
姿勢制御(水平に保つ)
電池が減ったらLEDが点滅
初挑戦なので基本的なことしかやりません。

一番大事なマイコンは Arduino Nano を選びました。

Arduino とは...

簡単に電子工作ができるマイコン及びプログラム言語のことです。

簡単に通信をしたりセンサの値を読み取ったりできます。

また、使っている人が多いのでネットに沢山の情報が転がっています。なので全然ハードルがかなり低いです。プログラムのソースコードやライブラリも豊富にあります。

Arduino Nanoは安価でなおかつ小型、PWM制御ピンを搭載しているため選びました。

PWM制御とは....(pulse width modulation)

日本語だとパルス変調。

基本的に、マイコンはパソコンのようなものなので全てデジタル入出力しかできない。

デジタル入出力=1か0 つまり 5V か 0V

0Vと5Vを激しく変更して、1パルスごとに値を調整することによって電圧を平均して出力するという制御方法。
.
.

購入サイト 及び 外注サイト
秋月電子
スイッチサイエンス
楽天
Amazon
seeed studio
.

・秋月電子:

とにかく安い!! そして種類も豊富です!!

基本的な物は全てここで買うことをオススメします! しかもすぐに届きます!

都心の方は秋葉の本店に行ってもいいかもしれません。

ドローンのモーターやプロペラはないので補う必要あり。

.

・スイッチサイエンス:

秋月にはないような面白いセンサなどが沢山あります。

今までにない物作りたい!!とか便利な部品を使いたいならのぞいてみてもいいかも。値段はピンきりです。

.

・楽天:

同じ機能のセンサなのに秋月よりも安い、なんてことが結構あるので確認しておいた方がいいかも!! Micro SD や 湿度センサなど。

プロペラとかモーターは基本ここで買います。

※許容電圧などがあまり書かれていないことがあるので注意が必要です。

.

・seeed studio:

中国の基板加工サイトです。10枚で 4ドル!!!

送料がかなり高いのですが、送料込みで

2500円です!!

品質は問題なく、1週間ほどで届きました。。。

安いし、早いし、文句のつけ所がありません。

ちなみに日本だと7000円くらいかかります( ノД`)シクシク....。

.
.
購入部品

Pololu 5V昇圧/降圧電圧レギュレータS9V11F5
分割ロングピンソケット (42P)

電源用電解コンデンサー100μF35V

Arduino Nano USB付き

XBee-PRO ZB / PCBアンテナ型

Nch MOSFET 2SK3234(500V 8A)

6軸加速度計ジャイロモジュール

ドローン バッテリー 「3.7V 800mAh 4個」+「マルチ充電器(5台同時)」セット  ※過充電保護機能付き [並行輸入品]
LED
チップ抵抗 1kΩ , 200Ω (普通の抵抗でもOK)
トグルスイッチ
タクトスイッチ(テスト用)
はんだごて
半田線

キャプションを入力できます

キャプションを入力できます

キャプションを入力できます

感想
初の基盤設計だったので大変だった。そしてとてもワクワクした。

プログラミング
とりあえず、基本的な飛行のみ。

// 加速度からセンサ対地角を求める
float acc_angle_x;
float acc_angle_y;
float acc_angle_z;
float acc_angle_a;
int b, c, d, e, f, g , h, i, j, k, l, m, n, o, s;

void setup() {
Serial.begin(115200);

}

void loop() {
if (Serial.available() > 0) {
char rec = Serial.read();
if (rec == 'b') {
Serial.print(rec);
analogWrite(6, 70);
analogWrite(9, 0);
analogWrite(3, 70);
analogWrite(11, 0);
}
if (rec == 'c') {
Serial.print(rec);//右回転
analogWrite(9, 0);//左
analogWrite(6, 190); //左
analogWrite(3, 190); //右
analogWrite(11, 0); //右
}
if (rec == 'd') {
Serial.print(rec);
analogWrite(6, 0);
analogWrite(9, 60);
analogWrite(11, 80);
analogWrite(3, 0); //後退
}
else if (rec == 'e') {
Serial.print(rec);
analogWrite(6, 0);
analogWrite(9, 190);
analogWrite(11, 225);
analogWrite(3, 0); //後退
}
if (rec == 'f' || rec == "fb" || rec == "bf" || rec == "df" || rec == "fd" || rec == "cf" || rec == "fc" || rec == "fe" || rec == "ef") {
Serial.print(rec);
analogWrite(9, 0);
analogWrite(6, 200);
analogWrite(11, 0);
analogWrite(3, 100); //右回転
}
if (rec == 'g' || rec == "gb" || rec == "bg" || rec == "gc" || rec == "cg" || rec == "gd" || rec == "dg" || rec == "ge" || rec == "eg") {
Serial.print(rec);
analogWrite(6, 100);
analogWrite(9, 0);
analogWrite(3, 200);
analogWrite(11, 0); //左回転
}
if (rec == 'i') {
analogWrite(6, 0);
analogWrite(9, 200);
analogWrite(3, 225);
analogWrite(11, 0);
}
if (rec == 'h') {
analogWrite(9, 0);
analogWrite(6, 200);
analogWrite(11, 225);
analogWrite(3, 0);
}
if (rec == 's') {
analogWrite(9, 255);
analogWrite(6, 255);
analogWrite(11, 255);
analogWrite(3, 255);
}
}
}

ログインしてコメントを投稿する