投稿

5月, 2024の投稿を表示しています

無線アップデート

イメージ
無線アップデート 無線アップデート(OTA) ESP32で無線アップデートをやってみます。 ESP-IDFではWi-Fi経由かBluetooth経由でのアップデートが可能なようです。 Wi-Fi経由でしか試してませんので以下はWi-Fiでの無線アップデートの手順になります。 無線アップデート(Over The Air Updates)略してOTAになります。 公式のリンクは以下になります。 OTA概要 OTA API Reference 公式サンプル OTAはWebサーバからbinファイルをダウンロードしてアップデートします。 Webサーバを用意するのが面倒なのでGithubのリポジトリにbinファイルを置いてOTAを実行します。 以下が手順になります。 1.Webサーバのサーバー証明書を取得 httpsからダウンロードするのでTLSサーバー証明書を取得します。 以下のコマンドを実行します。 openssl s_client -connect github.com:443 情報がたくさん出てきますが、以下の部分だけ切り取って ca_cert.pem ファイルに保存します。 -----BEGIN CERTIFICATE----- MIIEozCCBEmgAwIBAgIQTij3hrZsGjuULNLEDrdCpTAKBggqhkjOPQQDAjCBjzEL MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE BxMHU2FsZm9yZDEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTcwNQYDVQQDEy5T ZWN0aWdvIEVDQyBEb21haW4gVmFsaWRhdGlvbiBTZWN1cmUgU2VydmVyIENBMB4X DTI0MDMwNzAwMDAwMFoXDTI1MDMwNzIzNTk1OVowFTETMBEGA1UEAxMKZ2l0aHVi LmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABARO/Ho9XdkY1qh9mAgjOUkW mXTb05jgRulKciMVBuKB3ZHexvCdyoiCRHEMBfFXoZhWkQV

サーボを動作させてみる

イメージ
サーボを動作させてみる サーボを動作させてみる SG-90小型サーボをESP32に接続してみました。 回路図 SG-90くらいの小型サーボならESP32 DEVKITの3.3Vに接続すれば動きます。回路図もご覧の通り簡単です。繋げるだけ。 SG-90小型サーボについて 20msのパルス信号で動作します。 0.5ms~2.5msの範囲のON時間でサーボが180°稼働します。 実際には調整できるように180°より可動範囲は大きいですがそこはトリムなりパルス幅の最小・最大値を制限するなりして調整します。 サーボから伸びている配線の色が説明とちょっと違ってるみたい。 (赤とかないんですけど) 色 説明 茶色 GND オレンジ 電源 黄色 信号線 目の錯覚かな、写真で見ると説明書通りにオレンジが赤、黄色がオレンジに見える。 プログラム main.cを以下のようにします。 PWM用の初期設定が面倒・・・。 # include <stdio.h> # include <math.h> # include "freertos/FreeRTOS.h" # include "nvs_flash.h" # include "driver/mcpwm_prelude.h" # include "driver/gpio.h" # include "esp_adc/adc_oneshot.h" # include "esp_log.h" # define TAG "SERVO" // PWM用パラメータ # define SERVO_TIMEBASE_RESOLUTION_HZ 1000000 // 1MHz, 1us per tick # define SERVO_TIMEBASE_PERIOD 20000 // 20000 tick, 20ms // PWM用 int groupID ; mcpwm_timer_hand

モーターを動作させてみる

イメージ
モーターを動作させてみる モーターを動作させてみる モータードライバでお手軽にDCモーターを回してみました。 ESP32に以下を繋げてます。 よくあるFA-130モーターとDRV8835モータードライバ。 あと速度調整用の5kΩの可変抵抗を繋げてます。 DRV8835では2個までのDCモーターを駆動させられます。 回路図 こんなんなります。配線するだけでOK。 FA-130モーターについて FA-130モーターは最大2.2Aの突入電流が発生します。 DRV8835では最大1.5Aの電流しか流せないので、3Vフルパワーで動かそうとしても動きません。 FA-130モーターの場合はじわっと電圧を上げていくとうまく動作します。 ここでの回路ではPWMのON時間をじわっと上げていけばちゃんと動作してくれます。 ほかの小型DCモーター(よくあるギア付きのもの)とかコアレスモーターなんかは突入電流が低いので何も意識しなくてもちゃんと回ります。 プログラム main.cを以下のようにします。 PWM用の初期設定が面倒・・・。 # include <stdio.h> # include <math.h> # include "freertos/FreeRTOS.h" # include "nvs_flash.h" # include "driver/mcpwm_prelude.h" # include "driver/gpio.h" # include "esp_adc/adc_oneshot.h" # include "esp_log.h" # define TAG "DRV8835" // モーターPWM用 # define MOTOR_PWM_RESOLUTION_HZ 1000000 // 1MHz, 1us per tick # define MOTOR_PWM_PERIOD 100 // 100 tick, 100μs = 10kHzのP

ESP32でラジコン

イメージ
ESP32でラジコン ESP32でラジコン モーターコントロールとか色々苦労しながら動作するようになりました。 FPV用のカメラ(3,000円くらい)も乗っけてます。 最初は3.7Vのリチウムポリマーバッテリー一つでESP32とモーター両方動かそうとしてたのですが、今一安定しないのでモーター駆動用に単三x2を後から追加してます。 コントロールはWebで行えるようになってます。 バッテリーで動かそうとすると意外と安定しませんね。 もっと小型化できないかなぁ。あとバッテリーもLi-Poバッテリー一個にしたい。FA-130のようなDCモーターだと難しいのかな。 あとESP32-DEVを3.7VのLi-Poバッテリーで動作するように秋月電商さんのXC9306 DC/DCコンバータ 5V版を繋げてます。 GitHub にソースコード上げてます。

ステッピングモーターを動かす

イメージ
ステッピングモーターを動かす ステッピングモーターを動かす バイポーラ型のステッピングモーターを動作させてみました。 ESP32に以下を繋げてます。 秋月電商 さんの42SHD4404-24 バイポーラ型ステッピングモーター。 DRV8835モータードライバ。 取り合えず動けばいいやと、ブレッドボードに適当に配線して動かしました。 回路図 こんなんなります。配線するだけでOK。 ステッピングモーターについて 以下の順番に出力を切り替えていけば回ってくれます。 step1~4を順番に切り替えてゆくと左回りに回転します。 右回りにしたい場合はstepを逆に切り替えればOKです。 step AOUT1 AOUT2 BOUT1 BOUT2 1 H L L L 2 L L H L 3 L H L L 4 L L L H 1stepで1.8°、200stepで1回転します。 回転中は500mA~600mAくらい消費しますので駆動用の電源は別に用意します。データシートには定格3.4Vと書いてあったのですが3.0Vでも動作しました。 プログラム main.cを以下のようにします。 # include <stdio.h> # include "freertos/FreeRTOS.h" # include "freertos/timers.h" # include "nvs_flash.h" # include "driver/gpio.h" # include "esp_log.h" # define TAG "StepMotor" int step_counter = 0 ; TaskHandle_t xHandle = NULL ; enum StepDirection { left , // 左回り right // 右回り } ; void task ( void * arg )