m5stackで組込み!!

Arduinoによるm5stack開発のいろいろと...

SSL通信をしたい その2

あれ。。。そういえばTwitter投稿していたよな
これはすでにSSL通信してました。。。?


m5stack-build.hatenablog.com


けど読み返してみると証明書の検証してないじゃん。。。
これは。。。ダメですね。
この辺をしっかりやりたいですね。

SSL通信をしたい その1

今の時代やっぱりセキュリティが大事ですよね。
SSL=Secure Sockets Layer(インターネット上での通信を暗号化する技術)

そもそもM5Stackで実現できるのかな。。。
参考までに色々と調べてみました。なんかできそう。


qiita.com


www.moonmile.net


intellectualcuriosity.hatenablog.com


www.mgo-tec.com

twitterに投稿 その3

M5stackからtwitterに投稿する機能がどうやら動かないみたいなので修正しました。

m5stack-build.hatenablog.com

変更点

まずはクライアントから Twitter にポストするサイトのURLが変わったので動いていなかったみたいです。
それならURLを更新してやってみたところ。。。

ダメでした。。。
よくよくみるとhttpsになっているので証明書の検証が必要になったみたいです。
とりあえずは検証を行わないようにするとできました。

投稿

投稿元がArduinoになってることが確認できました!

f:id:yamanonono:20211128233513p:plain
twitter投稿

バイブレーション機能

久しぶりの更新になりました。
今回はバイブレーション機能を触ってみました。

バイブレーション関数

第一引数はAXPのLDO番号、第二引数は有効/無効(true/false)
を設定します。

  M5.Axp.SetLDOEnable( uint8_t number, bool state );

サンプルコード

#include <M5Core2.h>

void setup() {
  // 初期化
  M5.begin();

  // 文字サイズを変更
  M5.Lcd.setTextSize(2);
  // Aボタン
  M5.Lcd.setCursor(20,75);
  M5.Lcd.printf("Button A : Vivrator ON");
  // Bボタン
  M5.Lcd.setCursor(20,125);
  M5.Lcd.printf("Button C : Vivrator OFF");

  return;
}

void loop() {
  TouchPoint_t atTouchPoint;

  // タッチ中
  if( M5.Touch.ispressed() )
  {
    // タッチしたX座標、Y座標を取得する
    atTouchPoint = M5.Touch.getPressPoint();
  }

  // Aボタン
  if( ((0 <= atTouchPoint.x) &&
      ((129) >= atTouchPoint.x)) &&
      ((240 <= atTouchPoint.y) &&
      ((280) >= atTouchPoint.y)) )
  {
    M5.Axp.SetLDOEnable(3, true);
  }
  // Bボタン
  if( ((130 <= atTouchPoint.x) &&
      ((200) >= atTouchPoint.x)) &&
      ((240 <= atTouchPoint.y) &&
      ((280) >= atTouchPoint.y)) )
  {
    ;
  }
  // Cボタン
  if( ((201 <= atTouchPoint.x) &&
      ((320) >= atTouchPoint.x)) &&
      ((240 <= atTouchPoint.y) &&
      ((280) >= atTouchPoint.y)) )
  {
    M5.Axp.SetLDOEnable(3, false);
  }
  return;
}

youtu.be

動画見て頂くとバイブレーションの振動で動いているのがわかりますか?
音も小さいですがバイブ音がなっています。

タッチによる色変え

前回はタッチによる座標を表示しましたが、
今回はタッチしたエリアに色を付けて表現してみました。

m5stack-build.hatenablog.com

サンプルコード

#include <M5Core2.h>

typedef struct TS_TOUCH_GAME {
  unsigned short usCoord_X;
  unsigned short usCoord_Y;
  unsigned short usWidth;
  unsigned short usHeight;
  unsigned short usColor;
} TS_TOUCH_GAME;

const TS_TOUCH_GAME gtTouchTbl[] = {
  {   0,   0, 160, 120, RED   },
  { 160,   0, 160, 120, WHITE },
  {   0, 120, 160, 120, BLUE  },
  { 160, 120, 160, 120, GREEN }
};
const unsigned short gusTblNum = sizeof(gtTouchTbl) / sizeof(TS_TOUCH_GAME);

void setup() {
  // 初期化
  M5.begin();

  return;
}

void loop() {
  unsigned short ausIdx = 0;
  TouchPoint_t atTouchPoint;

  // タッチ中
  if( M5.Touch.ispressed() )
  {
    // タッチしたX座標、Y座標を取得する
    atTouchPoint = M5.Touch.getPressPoint();
  }

  //
  for( ausIdx = 0; ausIdx < gusTblNum; ausIdx++ )
  {
    // 範囲チェック
    if( ((gtTouchTbl[ausIdx].usCoord_X <= atTouchPoint.x) &&
        ((gtTouchTbl[ausIdx].usCoord_X + gtTouchTbl[ausIdx].usWidth) >= atTouchPoint.x)) &&
        ((gtTouchTbl[ausIdx].usCoord_Y <= atTouchPoint.y) &&
        ((gtTouchTbl[ausIdx].usCoord_Y + gtTouchTbl[ausIdx].usHeight) >= atTouchPoint.y)) )
    {
      //四角形塗りつぶし
      M5.Lcd.fillRect( gtTouchTbl[ausIdx].usCoord_X,
                       gtTouchTbl[ausIdx].usCoord_Y,
                       gtTouchTbl[ausIdx].usWidth,
                       gtTouchTbl[ausIdx].usHeight,
                       gtTouchTbl[ausIdx].usColor );
    }
    else
    {
      ;
    }
  }

  // Bボタン
  if( ((130 <= atTouchPoint.x) &&
      ((200) >= atTouchPoint.x)) &&
      ((240 <= atTouchPoint.y) &&
      ((280) >= atTouchPoint.y)) )
  {
    M5.Lcd.fillRect( 0, 0, 320, 240, BLACK );
  }
  return;
}


www.youtube.com

色で表現すると作った感が出てきますね。
ちなみに下部の〇ボタンも物理キーからタッチキーに変わったので座標判定が必要です。
詳しくはまた。