2020年06月

・M5StickC で 接触確認アプリ (COCOA) の数を数えてみた。

◆下記参考URLよりAtom から M5StickCに変更。
◆釦Aでリスタート出来るように追加した。
◆バッテリー電圧の表示を追加した。

◆参考URL
M5 Atom Matrixで新型コロナウイルス接触確認アプリが周囲に何個あるか数えてみる


◆下記は、スーパーでのカウント数です。

4900


◆下記は、自宅にて
S__44122132


◆スケッチ例(cocoaM5StickC.ino)

#include <M5StickC.h>
#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEScan.h>
#include <BLEAdvertisedDevice.h>

#define LED 10
int scanTime = 4; //BLEスキャン間隔
BLEScan* pBLEScan;

// 接触確認アプリのUUID
const char* uuid = "0000fd6f-0000-1000-8000-00805f9b34fb";
int deviceNum = 999;

class MyAdvertisedDeviceCallbacks: public BLEAdvertisedDeviceCallbacks {
    void onResult(BLEAdvertisedDevice advertisedDevice) {
       if(advertisedDevice.haveServiceUUID()){
            if(strncmp(advertisedDevice.getServiceUUID().toString().c_str(),uuid, 36) == 0){
                int rssi = advertisedDevice.getRSSI();
                Serial.print("RSSI: ");
                Serial.println(rssi);
                Serial.print("ADDR: ");
                Serial.println(advertisedDevice.getAddress().toString().c_str());
                Serial.println("Found!");
                deviceNum++;
            }
        }

    }
};

void disp(){    
  M5.Lcd.fillScreen(BLACK);
  M5.Lcd.setCursor(10,20);M5.Lcd.setTextSize(2);
  M5.Lcd.setTextColor(GREEN);M5.Lcd.print("COCOA");  
  if (deviceNum>9) M5.Lcd.setCursor(5,60); else M5.Lcd.setCursor(25,60);
  if (deviceNum>99) M5.Lcd.setTextSize(4); else M5.Lcd.setTextSize(6);
  M5.Lcd.setTextColor(WHITE);M5.Lcd.printf("%d", deviceNum);
  M5.Lcd.setCursor(0,120);M5.Lcd.setTextSize(1);
  M5.Lcd.setTextColor(CYAN);M5.Lcd.printf("BtnA=Restart");  
  M5.Lcd.setCursor(0,140);M5.Lcd.setTextSize(2);
  M5.Lcd.setTextColor(GREEN);M5.Lcd.printf("Bt%3.1fV\n", M5.Axp.GetBatVoltage());
}

void Task1(void *pvParameters) {
  // loop()内に書くとボタン圧下が取れないのでマルチスレッド化してある
  while(1) {
    deviceNum = 0;
    BLEScanResults foundDevices = pBLEScan->start(scanTime, false);
    disp();
    Serial.print("Devices found: ");
    Serial.println(deviceNum);
    Serial.println("Scan done!");
    pBLEScan->clearResults();   // delete results fromBLEScan buffer to release memory
  }
}

void setup() {
  M5.begin();
  Serial.begin(115200);
  Serial.println("Program Start...");
  pinMode(LED, OUTPUT);
  M5.Lcd.setRotation( 0 );
  M5.Lcd.fillScreen(GREEN);
  for(int i=0;i<3;i++) {
    digitalWrite(LED,LOW);delay(500);
    digitalWrite(LED,HIGH);delay(500);
  }
  disp();
  BLEDevice::init("");
  pBLEScan = BLEDevice::getScan(); //create new scan
  pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks());
  pBLEScan->setActiveScan(true); //active scan uses more power, but get results faster
  pBLEScan->setInterval(100);
  pBLEScan->setWindow(99);  // less or equal setInterval value
  xTaskCreatePinnedToCore(Task1,"Task1", 4096, NULL, 3, NULL, 1);
}

void loop() {
  M5.update();
    if ( M5.BtnA.wasReleased() ) {
    // ボタンを押すとリスタート
      esp_restart();
    }
 }

************************************
*4秒周期の数と電源on(リスタート)からの
 トータルの数を表示するように追加修正


cocoa07074995

◆経過時間追加
S__44171275


◆スケッチ例(cocoaM5StickC_2.ino)
次の項目を追加修正した。
①スタートからのトータル表示
 (マックアドレスをチェックして違うものだけカウント)
②ボタンAでリスタート
③ボタンBで電源OFF
④スタートからの経過時間を表示

#include <M5StickC.h>
#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEScan.h>
#include <BLEAdvertisedDevice.h>

#define LED 10
int scanTime = 4; //BLEスキャン間隔
BLEScan* pBLEScan;

// 接触確認アプリのUUID
const char* uuid = "0000fd6f-0000-1000-8000-00805f9b34fb";
int deviceNum = 0;
int cocoa = 999;
int skip_flg=0;
int hh=0;
int mm=0;
int ss=0;
unsigned long otime;

char  cocoa_buf[500][18] = {"01:23:45:57:89:ab","40:00:31:92:29:5a","01:23:45:57:89:ab","40:00:31:92:29:5a"};
char  c_buf[18] = "01:23:45:57:89:ab";

class MyAdvertisedDeviceCallbacks: public BLEAdvertisedDeviceCallbacks {
    void onResult(BLEAdvertisedDevice advertisedDevice) {
       if(advertisedDevice.haveServiceUUID()){
            if(strncmp(advertisedDevice.getServiceUUID().toString().c_str(),uuid, 36) == 0){
                int rssi = advertisedDevice.getRSSI();
                Serial.printf("RSSI: %d \n",rssi);
                strcpy(c_buf, advertisedDevice.getAddress().toString().c_str());
                Serial.printf("ADDR: %s \n",c_buf);
                Serial.println("Found!");
                cocoa++;
                skip_flg=0;
                for(int i=0;i<=deviceNum;i++) {
                  if (strcmp(cocoa_buf[i],c_buf)==0) {
                    skip_flg=1;
                    break;  
                  }
                }
                if (skip_flg==0) {
                  strcpy(cocoa_buf[deviceNum], c_buf);
                  deviceNum++;
                }
            }
        }

    }
};
void jikan(){
  otime = millis()/1000;
  ss=int(otime%60);
  mm=int((otime/60)%60);
  hh=int(otime/3600);
}
void disp(){    
  M5.Lcd.fillScreen(BLACK);
  M5.Lcd.setCursor(10,5);M5.Lcd.setTextSize(2);
  M5.Lcd.setTextColor(GREEN);M5.Lcd.print("COCOA");  
  if (cocoa>9) M5.Lcd.setCursor(5,40); else M5.Lcd.setCursor(25,40);
  if (cocoa>99) M5.Lcd.setTextSize(4); else M5.Lcd.setTextSize(6);
  M5.Lcd.setTextColor(WHITE);M5.Lcd.printf("%d", cocoa);
  M5.Lcd.setCursor(0,90);M5.Lcd.setTextSize(2);
  M5.Lcd.setTextColor(YELLOW);M5.Lcd.printf("T=%d", deviceNum);
  M5.Lcd.setCursor(0,110);M5.Lcd.setTextSize(1);jikan();
  M5.Lcd.setTextColor(GREEN);M5.Lcd.printf("Time=%02d:%02d:%02d",hh,mm,ss);  
  M5.Lcd.setCursor(0,120);M5.Lcd.setTextSize(1);
  M5.Lcd.setTextColor(CYAN);M5.Lcd.printf("BtnA=Restart");  
  M5.Lcd.setCursor(0,130);M5.Lcd.setTextSize(1);
  M5.Lcd.setTextColor(CYAN);M5.Lcd.printf("BtnB=PowerOff");  
  M5.Lcd.setCursor(0,146);M5.Lcd.setTextSize(2);
  M5.Lcd.setTextColor(GREEN);M5.Lcd.printf("Bt%3.1fV\n", M5.Axp.GetBatVoltage());
}

void Task1(void *pvParameters) {
  // loop()内に書くとボタン圧下が取れないのでマルチスレッド化してある
  while(1) {
    cocoa=0;
    BLEScanResults foundDevices = pBLEScan->start(scanTime, false);
    disp();
    Serial.printf("Devices found: %d Total: %d \n",cocoa,deviceNum);
    for (int i = 0; i < deviceNum; i++){
      Serial.printf("%03d=%s \n",i+1,cocoa_buf[i]);
    }
    Serial.println("Scan done!");   
    pBLEScan->clearResults();   // delete results fromBLEScan buffer to release memory
  }
}

void setup() {
  M5.begin();
  Serial.begin(115200);
  Serial.println("Program Start...");
  pinMode(LED, OUTPUT);
  M5.Lcd.setRotation( 0 );
  M5.Lcd.fillScreen(GREEN);
  for(int i=0;i<3;i++) {
    digitalWrite(LED,LOW);delay(500);
    digitalWrite(LED,HIGH);delay(500);
  }
  disp();
  BLEDevice::init("");
  pBLEScan = BLEDevice::getScan(); //create new scan
  pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks());
  pBLEScan->setActiveScan(true); //active scan uses more power, but get results faster
  pBLEScan->setInterval(100);
  pBLEScan->setWindow(99);  // less or equal setInterval value
  xTaskCreatePinnedToCore(Task1,"Task1", 4096, NULL, 3, NULL, 1);
}

void loop() {
  M5.update();
  if ( M5.BtnB.wasReleased() ) {
    // ボタンを押すとパワーオフ
      M5.Axp.PowerOff();
  }
  if ( M5.BtnA.wasReleased() ) {
    // ボタンを押すとリスタート
      esp_restart();
  }
}

・docomo d-01G 電源 が 入らない ジャンク品を入手したので 分解 してみた

◆本体

S__44081218

S__44081216


①下側切り込みにヘラを挿しパネルを開ける

S__44081215


②写真の赤丸のビスを外す。

d01g-01


③上側も同様にパネルを外す。
④写真の赤丸のビスを外す。

d01g-02


⑤液晶の側面にヘラ又は小さいマイナスドライバーなど挿し、
 少しずつ抉って全周のツメを外す。

S__44081212


⑥中のフラットケーブルに気を付けて開ける。

S__44081211


⑦内部の写真


S__44081209

S__44081208


S__44081207

S__44081205


◆電源スイッチ部分

S__44081210

S__44081229


d01g-10


◆パネル部分の分解
①コネクタの外し方

d01g-20


②特殊ビスの位置赤丸部のを外す

d01g-21


③押さえを外した所

d01g-22


④液晶とタッチパネルを分解した所

d01g-23

d01g-24



色々やった結果
◆別のジャンクを入手し、電源スイッチ部分だけを交換したが変化なし。
◆一台は、タッチパネルの不具合だったので分解し、交換した。
◆他のも組み立ててみたら、どういうわけか両方とも治った。


・車の OBDⅡ 端子に ELM327 を繋いでみた。 *説明等はネットよりのコピペです。

◆OBD-II とは?

オン・ボード・ダイアグノーシス(On-board diagnostics; OBD)とは、自動車各部に取り付けられたECU(Electrical Controll Unit)にプログラミングされている自己診断機能である。
On-Board Diagnosticsの頭文字を取って、OBDと略称されている。

1996年以降、アメリカで販売する自動車に取り付けを義務付けられた車両診断を行うための通信、コネクタ規格です。

日本では、2002年ごろから OBD-II コネクタが採用され始め、新型車は2008年、販売継続車は2010年から OBD-II の搭載が義務付けられました。

なお、欧州では2001年から搭載義務化。中国では2006年12月から、韓国では2007年1月から、OBDコネクタがついていない車の販売が禁止されています。

ただし、コネクタが OBD-II でも、さまざまな通信プロトコルがあり、メーカーが独自に採用する通信プロトコルもあるため OBD-II コネクタがあっても、 全ての自動車で同じ機器が使えるわけではありません。

◆取得できる情報(参考)
・回転数[rpm]
・速度[km/h]
・瞬間燃費[m/μℓ]
・水温[℃]
・スロットルポジション
・累積走行距離[m]
・累積燃料消費量[ml]
・燃料カット走行距離[m]
・エコドライブ時間[s]
・走行距離[m]
・最高速度[km/h]
・平均速度[km/h]
・最高回転数[rpm]
・アイドリングストップ時間[s]
・アイドリング時間[s]
・エコスタート回数
・発進停止回数
・燃料消費量[ml]
・走行時間[s]
など


◆下記は、コネクタのピンアサインです。

odb2-pin2

odb2-pin3


◆ELM327とは?
ELM327は、ELM Electronicsというカナダの会社が作ったOBD-IIの通信を簡単に行えるICチップです。 このICチップを搭載した機器が様々な所から発売されています。


今回、下記の製品をアマゾンにて入手しました。
https://www.amazon.co.jp/gp/product/B07RNHZS44/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1

odb-01


◆フタを開けた時の写真

odb-02


◆横から見た写真

odb-03


◆電源12Vに繋いだ時の電流

odb-04


◆コネクタに直刺しするとバッテリーに直結状態となり、車を使っていないときでも
 消費し続け、バッテリーが上がる可能性があります。
 これを防ぐため、アクセサリー電源よりの給電となるよう分岐ケーブルをアマゾンで
 入手し改造しました。
 ■オスコネクタ16番からの配線を切断し、メス側にシュガーライタプラグよりの12Vの
  線を接続しました。

https://www.amazon.co.jp/gp/product/B015CCIDRC/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1


odb-05


◆車(マツダ フレアワゴン)
 ダッシュボート ハンドル左下についていたコネクタ部 写真

odb-11


◆仮に接続した時の写真 (実際は分岐ケーブル経由)

odb-12

◆分岐ケーブル経由での最終設置写真

odb-13


◆IOS版は、WiFi版が必要とのことです。
◆アンドロイド版ODBⅡのソフト
◆Bluetooth対応で、Android端末やPCと接続可能ソフト
 Torque、OBD Info-san!、OBD Driver、Car Gauge、Leaf Spy(e-powerはNG)で動作確認されているみたいです。
 この中の下記の三つを試してみました。

1.Torque
詳しくは、下記URLを参照して下さい。
[今話題]無料自動車アプリ「Torque(トルク)」とは?


odb-21


odb-22

◆ここで、ちょっと走行テストの動画を紹介します。(先人の方)
超小型 OBDⅡ ELM327 取り付け&Torque走行テスト(4分15秒)



2.OBD Info-san! トライアル版(8分間しか使えない) 製品版は、580円
詳しくは、下記URLを参照して下さい。
OBD Info-san! for Android


odb-24

3.OBD Driver
詳しくは、下記URLを参照して下さい。
車愛好者向けの追加メーターアプリ、「OBD Driver Free」無料配布開始


odb-25


◆この製品は、技適が通っていないのではと、推測されます。
 よって、下記のURLを参照して、技適に対応改造するのも良いかと思います。


ELM327技適対応

OBD2の車両情報を活用、スマートフォンアプリケーション用SDKを公開|カーメイト

技適未取得機器の申請がこんなにカンタンに! マイナンバーカードさえあればスグに実験OK UDM米国版で試してみた

技適なしの海外無線デバイスが国内で気軽に試せる時代到来


以上



・ゴーヤ、トマト、キュウリ、クローバ園芸日誌

◆5/11(月) ゴーヤ、トマト 植え付け

S__44048542

S__44048543

S__44048544


◆6/3(水) キュウリ 植え付け

◆6/9(火) 四葉のクローバー 種まき

S__44048536


◆ゴーヤ、キュウリ 6/9現在

S__44048538


◆トマト 6/9現在

S__44048539

◆ゴーヤ 6/12現在


S__44056626


◆ゴーヤ 6/26現在

S__44105735


◆クローバ 6/26現在

S__44105737

◆キュウリ 7/25 収穫 結構良いのが出来た。

S__44236805



↑このページのトップヘ