ultimatemasashiのアイコン画像
ultimatemasashi 2021年02月23日作成 (2021年02月28日更新)
製作品 製作品 閲覧数 1327
ultimatemasashi 2021年02月23日作成 (2021年02月28日更新) 製作品 製作品 閲覧数 1327

M5paperで超音波レーダー

M5paperで超音波レーダー

M5paperで超音波レーダーを作ってみました。
360度サーボモーターで超音波センサーを回転させます。
液晶で距離とどの方角かを出力します。

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

動画はこちら↓
https://www.tiktok.com/@ultimatemasashi/video/6931192766097558786?referer_url=http%3A%2F%2Fsetsubi.no-mania.com%2F&referer_video_id=6931192766097558786&is_copy_url=0&is_from_webapp=v2&sender_device=pc&sender_web_id=6932259320226973186

M5paperはarduino IDEで開発できます。
↓コードはこちら

#include <M5EPD.h>

int servoPin = 26;

void servoSet(int Angle,int Time) {
  int pulseWidth;
  int TimeCount;

  TimeCount = Time/20;                                                

      for(int i=0; i <= TimeCount; i++){
        pulseWidth = map(Angle, 0, 180, 544, 2400);
        digitalWrite(servoPin, HIGH);
        delayMicroseconds(pulseWidth);                          
        digitalWrite(servoPin, LOW);
        delayMicroseconds(20000 - pulseWidth);
      }   
}

 int interval = 0;
    double distance = 0;
 int a = 0 ;
 int b = 0 ; 
 int c = 0 ;
 int d = 0 ;
 int f = 0 ;
 double e = 0 ;
   
    unsigned long duration;
    M5EPD_Canvas canvas(&M5.EPD);
    void setup() {
      pinMode(servoPin, OUTPUT);
        pinMode( 25, OUTPUT );
        pinMode( 32, INPUT );
   M5.begin();
    M5.EPD.SetRotation(90);
    M5.EPD.Clear(true);
    canvas.createCanvas(400, 500);
    canvas.setTextSize(4);
       //Serial.begin( 9600 );
       servoSet(90,100);
    }
    void loop() {      
            digitalWrite( 25, HIGH );
            delayMicroseconds( 100 );
            digitalWrite( 25, LOW );
            interval = pulseIn( 32, HIGH );
            distance = interval * 0.017;        
            Serial.println( distance, 1 );
                       Serial.println("cm");
            uint8_t percent = 80;
            //b = (3.14*d)/6 ;
            a = 200 + distance*cos(b);
            c = 330 + distance*sin(b);
            
            b = d ;
            f = f+ 1;
           if (f <=22 ){ e = 6 ;  servoSet(135,12);  
  }

           else{e = -6 ; servoSet(45,12); }
           d = d + e ; 
           canvas.drawCircle(200, 330, 150, BLUE);
         canvas.drawCircle(200, 330, 100, BLUE); 
         canvas.drawCircle(200, 330, 50, BLUE); 
         canvas.drawString(String(distance) , 10, 10);
          canvas.drawString(String(d) , 350, 500);
    canvas.drawString("cm" , 300, 10);
    canvas.pushCanvas(0,300,UPDATE_MODE_A2);
    if (f == 24 ) { M5.EPD.Clear(WHITE);  
   servoSet(90,100);
    canvas.deleteCanvas();
    canvas.createCanvas(400, 500);
      // canvas.fillRect(100, 280, 200, 200, WHITE);
       }

      // if ( 50<=  f <= 100 ){ e = -6 ;}
canvas.drawLine(200, 330,a ,c,WHITE);
if (f == 48 ) { M5.EPD.Clear(WHITE); canvas.deleteCanvas();
    canvas.createCanvas(400, 500); f = 0; }

 
   delay(200);
      
         
    }

接続はPOAT Aに超音波センサー(HC-SR04)とPOAT Bにサーボモーター(AS3103)を接続しています。

サーボモーターとセンサーは3Dプリンタで合体させています。

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

接続は下図の通りです。ケーブルが絡まるので1回転ずつ反転します。

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

ultimatemasashiのアイコン画像
設備のまにあどっとこむ管理人:アルティメット雅史 ラズパイ 歴3〜4年 ラズパイ コンテスト2020年 優良賞受賞
ログインしてコメントを投稿する