2019振り返り

今年も色々ありました。後半息切れしたのだけど、まぁたくさんやったな。

・TV 2018/12購入だけどメインは2019.
・Panasonic bule-rayレコーダー導入
・自転車のハンドル交換
・CATV解約して、Nuro光へ
・平型アンテナを自分で購入設置
・リビングのダウンライトのLED化・リビングのシャンデリアのLED化
・玄関照明のLED化
・子供用の照明の自作
・スマホ全台 MVNO化&機種変更、Xpeia XZ2, Pixel3
・中途半端なハロ改造
・自分の部屋専用WiFi導入 MyWiFi
・洗濯機のヒートポンプの掃除2回目

・トイレの換気扇を自分で交換
・筆まめVup
・ソーラー充電バッテリー導入

・オークション三昧(4~10月ぐらいまでずっと)
・ガンオン卒業?
・アストロキングスどはまり(でももう疲れた)

他に何かあったかな。

この中で一番とすれば、電球の蛍光灯からLED化かな。
部分的に蛍光灯が残っていたのだけど、全面的にLEDに変えたことで
省エネでかつ明るくなったので家の雰囲気が変わった。
TVの買い替えと合わせて電気代も10%ぐらい減ってるしね!




Google Pixel 3 のモバイルデータ通信できない問題の解決

久しぶりの書き込み。モチベーションは上がらないので、頼られベースで行動しているw

今回は、Google Pixel 3 のモバイルデータ通信できない「モバイルネットワークが利用できません」問題の下記2パターンを解決したので、誰かの役に立てばと、まとめて書いておきます。

1.Google Pixel 3 をSIMロック解除されていてもSIMを認識しない件
2.Android 10にアップデートしたらモバイルデータ通信ができなくなった件

1.Google Pixel 3 がSIMロック解除されていてSIMを認識しない件

今回は、妻のスマホが元々 Aquos SEIRA mini SHV33 だったんだけど調子が悪くなったのでヤフオクでGoogle Pixel 3 の新古品を買った。本家より1万ぐらい安いだけ。中古!ってやつなら3万円台も変えそうなんだけどね。しかも、3a よりも性能が良い、意外といい感じ。

さて、このスマホ、購入時に確認したところSIMロック解除されているとのことでしたが、SIMを挿しても「モバイルネットワークが利用できません」と出る。
色々ググっても、電源ON/OFF、SIM差し替え、本体故障、SIM不良などの対処が多い、他のSIMを挿しても同じ状態なのでSIMとかの問題ではないことは確認してある。

で、これの原因は、キャリア側のSIMロック解除後、本体側のSIMロック解除が必要、ということでした。
対処としては、「開発者オプション」を有効にすることだけです。
有効にして再起動すればOKです。あ、APNの設定は必要です。

これを解決するために、5時間ぐらいかかったよ・・・

解決は、こちらのサイトのおかげでした。ありがとうございました。m(__)m
 https://androidons.com/news/softbank/softbank-simunlock-travel.html

これで、mineo auのSIMでGoogle Pixel 3が使えてます。

開発者オプションを有効にする方法をいちおう書いておきます。

①設定画面を開いて、「システム」を開きます
②「システム」で、「端末情報」を開きます
③「端末情報」で、一番下にある「ビルド番号」を何回かタッチすると、もうすぐ開発者うんたらと表示されるので、もっとタッチします。
④有効になりました、と表示されるはず

上記でダメなら、他のサイトを見てください。

2.Android 10にアップデートしたらモバイルデータ通信ができなくなった件

妻は、外出先で頻繁にはスマホを使わないので、たまたま外出先で使用しようしたところインターネットに接続できない、という事象に襲われました。
つながらない~って相談受けて、1の事象の確認やAPNの設定を見直していたのですが、驚くことにAPNの設定が使用していない「楽天モバイル」になっていたり、妻のGoogleアカウントに知らない携帯番号が勝手に追加されたり(これは、すぐに消えたのでPC側から確認したら追加されていなかった)と、恐怖な状態起きました。
電話番号はメモろうとしたら消えました。
APNの楽天モバイルの設定は削除したら消えて、元のmineoの設定が出てきました。

これはおかしい、と調べ方を変えると、いつなのかわからないのですがOSがAndroid10にアップデートされてたんですね。それで設定が初期化された可能性がある。

解決方法は、Android10 に更新されたらAPNを再設定する、なのですが、設定いじって保存しても解決しない。
悩んだあげくAPN設定を「新規」に作成したら繋がりました。
つまり、この「再設定」は、新規にAPNの設定を追加する。という方法が必要です。
既存の設定をいじって保存しても無意味でした。

これはちょっとした罠で、引っかかる人が多そうなので掲載する気になりました。
今後も同様なことが起きそうな気がしますね。

いやぁ、こわいこわい。

以上


モチベーションの山谷の谷から登ろうともがいている最中

また1か月以上、ブログの間が空いてしまった。
まぁ、そんなもの。
ちょっと気合いが入っていろいろ始めると、一山超えたぐらいで、ぷしゅ~~~っとモチベーションがダウンする。
その繰り返し。
モチベーションを維持できる人は、どんどんレベルが上がるんだろうな。


色々やったのよ、
1.ハロの基盤取り替えて、ESP32で耳を動かして目を光らせての直前までとか、

 まぁ進まないw


2.子供部屋の照明改造するために50cmのLEDバー(SMD5730)を5本買って、Wiiの電源を利用して12V提供して、レバースイッチでカチャカチャと点灯できるようにしたりとか
スイッチいっぱいだけど、電源ショートさせてコントローラーが壊れてプッシュボタンは使えない、で、部品追加購入したけど放置

3.リビングのダウンライトが白熱電球100Vx4個で、電気代が怖くて15年使っていなかったのをやっとLEDに変えたりとか、
4.ヤフオクに嵌って出品発送祭りとか

一気にいろいろやって、中途半端になっている、いつものパターン。
次書くのは、2番の安い5730は外れが多い、ってのにやっぱり当たったようなので色々調べたことかな、忘れないうちに記事にしないとね、久しぶりにAitendoにも行ったしね。って忘れてそうな気がするw


まぁ、リアルが忙しいのもあって記事にするのが面倒ってとこもある。これ仕事でも義務でもないしw
この頃はこんなことしていたなぁの備忘録と、誰かが読んでくれて役に立っているのがわかると嬉しい自己満足の世界だからね。


家庭内リクエストで、次は子供部屋に二人分の机を作成の要望も来ているのを思い出した。
でも、勉強するとは思えない、子供部屋で勉強するとは思えないのが気になる
こっちは大掛かりなので、相当気合が必要だ

Bloggerに更新日を表示してみた際の注意事項 @Firefox

過去のブログを更新しても、日付が変わらなかったりで更新したのかどうかわからない状態が続いていたので、更新日付が表示されるように修正しました。

修正した内容は、toshi 氏の書かれた
Bloggerに更新日を表示する
の記載そのものです。

変更したのは、更新日を前に持ってくること、右寄せにすること。表示部分の前後の入れ替えとスペース調整です。


<span style='display: block;text-align: right;'><span class='updated-info' style='display:none;'>更新日&amp;nbsp;<span class='date' expr:data-publishd='data:post.timestampISO8601' expr:data-updated='data:post.lastUpdatedISO8601' tyle='display: block;text-align: right;'/>&amp;nbsp;&amp;nbsp;</span>
<span class='published-info'>投稿日&amp;nbsp;<data:post.date/></span></span>


作業上、特に注意する点は、テーマのHTML編集画面は、FireFoxでは動作しないということ。表示はされれるけど、ほぼ動かない。
しょうがないので、Chromeでログインして修正したら快適なことこの上ない。そりゃそうだよねw
ということで、Bloggerを使うときは、やはりChromeが最適です。Chromeには別のGoogleアカウントをメインで貼り付けているので、作業するときはわざとシークレットモードで実施しています。便利なのか不便なのか。

で、更新日付の追加修正ですが、あとはブログのレイアウトで、メインの日付表示を失くしたり、設定で日付のフォーマットを合わせたりを行いました。

とりあえず視認性良くなったかな・・・

MVNO検討

A.検討編

自分のスマホの更新タイミングになってきたので、MVNOに入れ替えた子供の回線なども含めて4回線分をどうしようかと色々と検討しています。今日はそんな話。

1.条件
現状の保有回線は、キャリアが2回線、MVNOが2回線の計4回線。うち、子供のスマホは5年落ちのAndroid4で色々支障が出てきているので機種変更が必要な状態。
他は、2-3年落ちクラス。

2.キャリアへのMNPの検討
4回線いっぺんにどっかのキャリアにMNPすれば結構安くなりそうな気もしたけど、縛りと月額が気になって早々に検討中止。

MVNOだと3GBでおおよそ月1,600円なので、年で19,200円、消費税(10%w)も入れると21,120円になり、2年で42,240円前後となる。そこに新規申し込みのキャンペーンが入ると、さらに5,000~15,000円位安くなる。4回線2年間で12~15万円ぐらい。
キャリアだと月5~6,000円になるので2年で約14万円、4回線分だと56万円!なのでものすごい差。iPhone8で8万円のキャッシュバックがあってトントンだけど、48分割とかw 現状は一括が無いのが悲しい。

3.格安スマホキャンペーンの検討
MVNOのキャンペーン調査はもう1か月ぐらい続けていて、スマホが格安で手に入るOCNモバイルのキャンペーンでnova lite 3 やSH-M08が3800円とかかなり魅力的だった、でも手が出なかった。

なぜか?
一つ目は、対象のスマホの性能。
格安になるスマホの性能は、キャリアの最新機種の3世代型落ちにも性能は届かない。レンズが複眼化とかAIカメラとか機能は良くなっているのだろうけどね・・・iPhoneが良い例で、iPhone6SとかiPhone7がまだまだ現役、下手するとiPhoneSEでも安いスマホよりも性能が良いってことなる。
つまり、そんなスマホを安く手に入れても長持ちしない可能性あるのと、キャリアで最新機種を使ってきた場合は、性能がガタ落ちという結果が待っている・・・結果MVNOだめ、ってなったりして。
(実際のところ、nova lite 3とかでも良いんだけどね・・・特に古い機種使っている子供なら)

二つ目は、OCNモバイルはベース金額が高いってところ。
元々3GB 1,800円だから、2年間320円引きキャンペーンでやっと他のMVNOの通常回線費用と同じになるレベル。
つまり、nova lite 3 を3,800円で購入できた、と思っても、一番安いMVNOの2年間費用との差分がでて最悪18,000円位で購入したイメージになる。

最初から、そういった機種狙いなら問題は無いんですけどね。
これから先も使い続けていくことを考えるとできるだけ性能の良いものにしておきたい、それもできるだけ安く。

4.結果
4.1 回線
4回線のうち、2回線は一番安くなるBiglobeモバイル。一番スマホを使う子供はLINEモバイル。
オサイフケータイやら色々活用しているもう1回線は、現状維持、といった感じになった。

4.2 スマホ
色々考えた結果、自分用に Xperia XZ2の中古を購入、今使っている Xperia XZ を、子供に譲ることに。

Xperia XZ2は、2018年5月発売のSnapdragon 845搭載の高性能機種。ただし、評判はイマイチw。
最新機種の1年型落ちなのに25,000円位で購入できた。もう1つ新しいXZ3なら35,000円以上かな。
さらに今回は、SIMフリー化された傷の無い美品。SIMフリー化されているとMVNOで、どこのキャリア回線でも使えるのでベスト。利用制限×になっても他のキャリア回線で利用可能なので問題が無い。
さっき計算した18,000円で新品のnova lite 3と比較しても全然良かった。

Xperia XZは、2016年11月発売のSnapdragon 820搭載の機種。子供が使っている機種からすると3~5倍の性能。まだまだ現役。※カメラはちょっとひどいけど。
XZを買ってから2年あっという間、でも性能はそんなに悪くない。

5.色々
安さと利便性を調整するのが大変だったw


しかも、子供にはiPhoneに良かったって言われてしまう始末・・・orz
自分だけ新しいって、やっぱズルいよな。

1年後には全員キャリア回線へMNPできそうだから、その時に一括0円キャンペーンがあれば、光回線も合わせて変えてまとめてiPhoneかな。(;^ω^)

それまで、そういったキャンペーンが一掃されないように願ってます。

# もうiPhoneの一括0円はなさそうですね・・・


ESP32でWebからモーター制御 L293D

ESP32シリーズの続きです。

その前に、Fritzingのパーツは、頑張ってGitHUBで公開して、Qiitaで他のESP32のパーツと合わせて紹介しました。

さて、前回、DHT11を使用した温度計、湿度計を試してました。ただ表示しているだけなんだけど、なんかうれしくて、ずっと電源入れっぱなしにしていたりして楽しんでいました。

そろそろ次に進まないと、と、DCモーターの制御を試してみます。
記事にはしていないけど、サーボモーターとかと一緒に以前試してみたのだけど、動作してもあまりうれしいことが無くて放置していました。で、今回は、DCモーターからやり直しです。

DCモーターの実験の目的は、マスコットロボ ハロの耳を動かすこと。
写真の通り、ハロの前側の下にモーターがついています。ここの制御をESP32からやってみるのが最終目標です。


DCモーターの制御ということで、モータードライバが必要となります。今回は、ArduinoのキットについていたL293D を使用します。
 モータードライバが必要なのか?と思って調べてみると、モーターの回転の正方向、逆方向の制御や回転速度の制御、電源関連など苦労するものが多いということが分かったので、素直にモータードライバを使用することにしました。

プログラムはサンプルと、参考サイトのコードを利用しています。

DCモーターとL293Dのサンプル参考サイト:
https://randomnerdtutorials.com/esp32-dc-motor-l298n-motor-driver-control-speed-direction/

Webサーバの参考サイト:
http://mukujii.sakura.ne.jp/esp1.html
https://lastminuteengineers.com/esp32-dht11-dht22-web-server-tutorial/

接続図は下記のような感じ。
電源は両方投入しないといけない。

そして、まだ書きかけの汚いコードだけど、載せておきます。
モーターの frequency が良くわかっていない。


#include <WiFi.h>

// WiFi
const char* ssid     = "ssid";
const char* password = "password";

// WiFi Server
WiFiServer server(80);
String header;  // HTTPリクエストを格納する変数

// Motor Pin
int motor1Pin1 = 27; 
int motor1Pin2 = 26; 
int enable1Pin = 14; 

// Setting PWM properties
const int freq = 1000;
const int pwmChannel = 0;
const int resolution = 8;
int dutyCycle = 200;

void setup() {
  // sets the pins as outputs:
  pinMode(motor1Pin1, OUTPUT);
  pinMode(motor1Pin2, OUTPUT);
  pinMode(enable1Pin, OUTPUT);
  
  // configure LED PWM functionalitites
  ledcSetup(pwmChannel, freq, resolution);
  
  // attach the channel to the GPIO to be controlled
  ledcAttachPin(enable1Pin, pwmChannel);

  Serial.begin(115200);

  // WiFi Connect
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  // ローカルIPを表示(このIPにスマホなどからアクセスします)
  Serial.println("");
  Serial.println("WiFi connected.");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());

  server.begin();

}

String SendHTML() {
  String ptr = "<!DOCTYPE html> <html>\n";
  ptr +="<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\">\n";
  ptr +="<title>ESP32 DCMoter</title>\n";
  ptr +="<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}\n";
  ptr +="body{margin-top: 50px;} h1 {color: #444444;margin: 50px auto 30px;}\n";
  ptr +="p {font-size: 24px;color: #444444;margin-bottom: 10px;}\n";
  ptr +="</style>\n";
  ptr +="</head>\n";
  ptr +="<body>\n";
  ptr +="<div id=\"webpage\">\n";
  ptr +="<h1>ESP32 DCMoter Web</h1>\n";
  
  ptr +="<form method='get'>\
<input type='submit' name='le' value='耳停止' />\
<input type='submit' name='ri' value='耳動作' /><br>\
<input type='submit' name='st' value='停止' /><br>\
<br>\
</form></div>";
  ptr +="</body>\n";
  ptr +="</html>\n";
  return ptr;
}

void MoterStop() {
  Serial.println("Motor stopped");
  digitalWrite(motor1Pin1, LOW);
  digitalWrite(motor1Pin2, LOW);
}

void  Forward() {
  Serial.println("Moving Forward");
  digitalWrite(motor1Pin1, LOW);
  digitalWrite(motor1Pin2, HIGH); 
  delay(800);
}

void loop() {
  ledcWrite(pwmChannel, dutyCycle);   
//  Motor();
//  Forward();
  
  WiFiClient client = server.available();

  if (client) {
    Serial.println("New Client."); 
    String currentLine = "";             // make a String to hold incoming data from the client
    while (client.connected()) {         // loop while the client's connected
      if (client.available()) {          // if there's bytes to read from the client,
        char c = client.read();          // read a byte, then
        Serial.write(c);                 // print it out the serial monitor
        if (c == '\n') {                 // if the byte is a newline character
          if (currentLine.length() == 0) {
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println();

            client.print(SendHTML());
            client.println();
            // break out of the while loop:
            break;
          } else {    // if you got a newline, then clear currentLine:
            currentLine = "";
          }
        } else if (c != '\r') {  // if you got anything else but a carriage return character,
          currentLine += c;      // add it to the end of the currentLine
        }

        // Check to see if the client request was "GET /H" or "GET /L":
        if (currentLine.endsWith("GET /?le")) {
          Forward();
          MoterStop();
        }
        if (currentLine.endsWith("GET /?ri")) {
          Serial.println("");
          Serial.println("Moving Backwards");
          digitalWrite(motor1Pin1, HIGH);
          digitalWrite(motor1Pin2, LOW); 
        }
        if (currentLine.endsWith("GET /?st")) {
          Serial.println("");
          MoterStop();
        }
      }
    }
    // close the connection:
    client.stop();
    Serial.println("Client Disconnected.");
  }
}


実際にマスコットロボ ハロの耳を動かすのは、次回。

ESP32で温度と湿度を表示する DHT11

さてさて、ESP32の話題に戻って、この手の定番の温度と湿度の表示をやってみます。LCD表示のサンプルを改造して、DHT11の出力を表示させます。


参考にさせていただいたサイトは下記となります。ありがとうございます。
Interface DHT11 DHT22 with ESP32 & Display Values Using Web Server

まぁ書いてある通りになんですが、前回のLCDのやつに統合するので、上記サイトの格好いいWeb表示部分は全部いらなくて、必要な部分だけ抜き出します。Web表示は後での楽しみ。

// include the library code:
#include <LiquidCrystal.h>
#include "DHT.h"

#define DHTTYPE DHT11   // DHT 11

// DHT Sensor
uint8_t DHTPin = 4; 
// Initialize DHT sensor.
DHT dht(DHTPin, DHTTYPE);

float Temperature = 0;
float Humidity = 0;

// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
const int rs = 32, rw = 33, en = 25, d4 = 26, d5 = 27, d6 = 14, d7 = 13;
//LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
LiquidCrystal lcd(rs, rw, en, d4, d5, d6, d7);

void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  pinMode(DHTPin, INPUT);
  dht.begin();  
}

void loop() {
  Temperature = dht.readTemperature(); // Gets the values of the temperature
  Humidity = dht.readHumidity(); // Gets the values of the humidity 
  // Display Temperature in C
  lcd.setCursor(0, 0);
  lcd.print("Temp         C  ");
  lcd.setCursor(6, 0);
  // Display Temperature in C
  lcd.print((Temperature));

  lcd.setCursor(0, 1);
  lcd.print("Humid        %  ");
  lcd.setCursor(6, 1);
  lcd.print((Humidity));
  delay(500);  
} 


 まぁこんな感じで、最初の画像のような表示ができる。
で、気になるのが、温度も湿度も小数点以下が表示されないこと。

これも調べると、DHT11は、少数点以下は表示されないとのこと。だとしたら、数字の表示を変えた方が良いですね~

接続は下記の通り。ESP32 DevKitのパーツも作成してしまった。ベースに公開されていた二つのESP32のパーツを組み合わせてサイズを変えて、とか、まぁ趣味の世界w


Bloggerのレイアウト、幅の変更をしてみました、簡単です

ブログの幅を変更しました。いろいろなことを書こうとすると、デフォルトの幅だと狭いんですよね。昔のVGAに合わせたようなサイズで、フレキシブルでもないので、ちょっと古い感じもしてきています。

Bloggerのデザインって、簡単に使えるようにしている分、手を入れようとおもうとわからなくなる。でも、実は簡単に手直しができるのね。今回は、幅変更メモ。

1. Bloggerにログインして、「テーマ」の「カスタマイズ」を選択する。


2. 表示された画面の「幅を調整」を選択する。


 3. ほら、バーをスライドさせることで、本文とサイドメニューの幅を調整することが出来ます。
 最大、最小は御覧の通り 。下の方に反映されたものが表示されるのでわかりやすいです。



4. 最適なサイズを決めたら、「ブログに適用」をクリックするとブログに適用されます。
 適用したら、「Bloggerに戻る」をクリックすることで、Bloggerの画面に戻れます。

 デフォルトに戻すのも簡単なので気軽に試せばよいと思います。
 ちなみに、現在のこのブログの設定は、ブログ全体が1010ピクセル、右側のサイドバーが240ピクセルです。


ESP32でLCD 1602 モジュールをI2Cなしで接続することになった

ESP32であれこれしていて、せっかく買ったArudinoキットの中の LCD 1602を試しに使ってみることにした。

ただ、キットの中の1602は、I2Cがついていない。ググってみると、ほとんどがI2C接続、1,2個そのままの接続の例があるけど、ケーブルが多くて面倒そう。


と、いうことで、I2CをAmazonでぽちった。150円位のやつ。
届いたのを見ると、I2Cにもピンヘッダがついてる。どうしようかと悩んだ結果、I2C側のピンヘッダを取り外すことにした。

じゃーん
ピンヘッダを外すのは相当苦労したけど、見た目はとりあえずOK。
これで楽々LCD接続ができる(^^)/

ところが。。。。
豆腐!豆腐!豆腐!豆腐!

何をやっても豆腐!
輝度調整しても変わらない。
Arudino IDE で、ありとあらゆる LiquidCrystal_I2C.h を試したけどダメ、LiquidCrystal.h でもだめ。
アドレスチェックでは、0x27が出ていて設定も確認したけど豆腐!

これは、I2Cのピンヘッダ外しとかの時に壊してしまったに違いない・・・
仕方がないので、I2Cを1602から取り外すことに。

しかし、ピンヘッダの取り外しって、ものすごく大変。どれだけハンダを取っても、どこか残っているようでなかなか外れない。 もう面倒すぎ。

せっかく付けたI2Cをやっとのことで取り外したので、1602を直接ESP32に接続する方法をググった。

<今回の参考サイト> ありがとうございます。
searat.netさん [ESP32]IoTマイコンを動かしてみる7 -LCD制御するよ編‐

この記事の通り接続し用としてみたけど、ちょっと接続図が良くわからない。なので、元々接続ってどうなってるのか確認するためにArduinoのキットの資料を確認して、接続先を見直した。
そして、ArduinoのLiquidCrystalのサンプルスケッチを、これも記事通りに修正して書き込み実施。

接続は下記の通り。手持ちのLCD 1602が5V用なので、図で電池の部分は、実際はUSBから直接電源を取っている。


LCD1602 ESP32
VSS GND
VDD 5V
VO 半固定抵抗10KΩ
RS IO32
RW GND
E IO25
DB0
DB1
DB2
DB3
DB4 IO26
DB5 IO27
DB6 IO14
DB7 IO13
A 3V3
K GND

後でよく見たら、sarat.netさんの記事にもRWはGNDでも良いって書いてあった。素人なので知らないとスルーするんだよなぁ(;'∀')


とりあえず、動いてよかった。I2CとLCD1602の両方壊していたら泣いていたかも~~

しかし、買ったI2Cもピンヘッダがついていたのだから、最初にブレッドボード上で接続確認しておけばよかった・・・ピンヘッダの取り外しがこんなに大変だとは・・・、いい勉強になったよ。


ESP32はんだ付け、その3動作確認

先日はんだ付けが完了したESP32の動作確認を実施。


こんな細かいハンダ付けは初めてで、目もきつくて大変だった。
はんだ付けが失敗していたらやり直ししないといけないのきつい。
さぁ、ドキドキしながら動作確認を。

1.ESP32の書き込み回路

動作確認に必要なのは、ESP32へプログラムをするための書き込み回路です。開発ボードであれば全部入りなので不要なのですが、今回はすべて自前で準備しないといけない。

1.1. 書き込み回路の参考

書き込み回路図は、下記のサイトを参考にさせてもらいました。ありがとうございます。

ESP32-WROOM-32 Deko氏
ESP WROOM-32でLチカしてみる jumbleat氏
Wiring Flashing / Programming ESP-32 / ESP32S with USB – TTL / UART and Integration with Arduino IDE

特に、jumbleatさんのページは、今回と同じチャレンジだし、レイアウトも写真もきれいなの非常にわかりやすかったです。

書き方はみんな違うけど、基本的部分は全部同じでした。EN-3V3間に10KΩ入れる。とかね。
後は、シリアル通信と電源が必要。


 1.2. シリアル通信

USB接続用のシリアル通信と電源。Dekoさんのページの情報から、Amazonのノーブランド品をセレクトしてAmazonで購入していたので、これをそのまま使う。

CP2102を搭載したシリアル変換基盤。ドライバをインストールするとCOM3で認識してくれた。

次に、このUSBを利用するのに直接PCに繋げると使い勝手が悪いので、USBの延長ケーブルも購入した。こちらは珍しく、家電量販店で正規購入。Amazonで購入しようと思ったけど、安いものだと電流量が少ないとか色々と問題があるようなので、直接実験と関係ない汎用パーツは信頼性優先。USB3.0で、電流もちゃんと流れるやつ。

1.3. 電源モジュール

電源は、できればUSBからとろうと思っていたので、5Vから3.3Vへの降圧が必要。秋月電子で買った東芝製のTA48033Sを使用。

ということで、書き込み回路図と部品が揃ったので実際に書き込み回路を作成します。

2.書き込み実験

2.1. 組み込みその1

ケーブリングを、って最初はミニブレッドボードに、エイヤー!っと突っ込んでみた。




結果・・・動作しませんでしたw
Arudiono IDEで反応しない・・・。まぁどこか繋ぎが悪いのでしょうけど・・・

やはり、いきなりミニブレッドボードでは何がおかしいかわからない、ということで、大きいブレッドボードに乗せ換えて再確認を決行。

2.2. 組み込みその2

大きいブレッドボードでは余裕ができるので、どこに何が繋がっているか一目瞭然です。

ほら、Lチカ成功!


まぁ、さっさと動いたように見えるけど、ここに書けてない紆余曲折あった。
一番のポイントは、シリアル通信のRXI,TX0との接続は、ESP32のそれと逆ということでした。

シリアル通信側RXI - ESP32のTXD、シリアル通信側TXO - ESP32のRXDで繋ぐのを忘れないようにw

2.3. 最終結果

初めてのハーフピッチのはんだ付け挑戦 は、大成功!
意外とできるものですね。
しかし、パーツ代その他考えたら、開発ボード買った方が絶対安い。小さくするために、こんなに苦労するとは思ってなかった。

せっかくなので回路図を、と、fritzingに手を出した。
これは凝り性の成分がある人には危険なソフトウェアだ。自分も、ESP32とCP2102のパーツを作りたくなって、Inkspaceを導入して、見様見真似でパーツ作成にまで手を出してしまい、土日を丸々潰してしまった。その力作は下記。パーツ作成は時間を忘れられる危険な遊びですw。



どうでしょうか、意外とよくできたと思うぞw
パーツは、どこかで公開予定です。



後は自動書き込み回路までできると良いなぁ・・・

ESP32 はんだ付け その2

前回、ESP32をピッチ変換基盤にはんだ付けをした。これにピンヘッダ、ソケットをはんだ付けしないといけない。でも、ピンヘッダやソケットは持っていないので、Amazonで中華品を購入。安い!



1点のみ購入では申し訳ないので、足りなくなってきたジャンパと、1602用のI2C基盤も合わせて購入。


ピンをブレッドボードに挿して、ESP32を載せてはんだ付けする。下側はソケットをつける。
2列のソケットは購入していないため、1列のソケットを引っ付ける。
SuperX!


固まるまで色々固定w
はんだ付け完了。ここからギャラリー。

DevKitと比較すると約半分ってとこかな。

さて、動作確認するか試さなきゃです。

ESP32単体のはんだ付け

ESP32をどうしようかと、ハーフピッチの基盤でいろいろしようと考えていたのだけど、
1.27mmの穴は細くて、2.5mmの色々なピンが刺さらないので、結局アダプタ化しないといけないという結末になった。

結果、これを買った。




で、はんだ付けしてみた。
ピッチが狭いので、眼鏡外して近接戦闘w
細いハンダが欲しくなるなぁ




形悪いけど何とかなったかな
動作確認は後日!

意外と楽しかったw

Chromeが重いとか、カスペルスキーのバグと思われる挙動

光回線で無料提供のセキュリティソフトウェア、カスペルスキー インターネットセキュリティ2019を導入した。今まで、Avira アンチウィルスのフリー版だったので、機能的にはかなりの進化だ。

って、最初は変えるつもりが無かったけど、つい1か月ぐらい前から Aviraが重くなってきていて、イライラしてアンインストール、そして、Windows Defenderでいいや、ってしていた。

が、Windows Defender にしてから、Thunderbirdのメール処理が異常に重くなった
メールを一つ一つ開くのが遅い、なんていうか、毎回スキャンするおバカさん的な雰囲気。

それで耐えかねて、光回線の無料提供のカスペルスキーを導入してみた。機能がいっぱいあって使いこなせないけど、Thunderbirdでのメール閲覧のストレスは全くなくなったし、Webブラウジングはそれなりに安心できるのだろう、いろいろ情報を提供してくれる。

CPU使用率も意外と高くないし、と満足して、妻のPCにも入れてみたら問題が発生した。

Chromeが異常に重くなったとの苦情
妻のPCは、前にも書いたMB-B505E、Celeron N3450 メモリ4GB、SSD換装済というスペック。Celeron N3450は4スレッドでるからそこまで遅くないだろうと思っていたけど、確認すると4スレッドともにCPU100%の状態。ChromeがCPU使用率90%前後をキープしている。
なんだこれ?
試しにChromeの拡張機能でカスペルスキーをOFFにすると軽くなる。
原因はカスペルスキーなのは明白。
自分のPCでも確認を行ったら、同じような状態となった。

さらに調べるとChromeの中ではサブフレームってのが重くなる原因らしい。

Chromeで、shift+ESCでタスクマネージャを起動するとサブフレームの状態を見ることが出来る。
わかったのは、Chromeの拡張機能のカスペルスキーがONだと、サブフレームの負荷が高くなるという事実。※このサブフレームはWebトラッキング関係っぽい
つまり、軽くするにはカスペルスキーをOFFにすることってことになる。

また、Chromeの拡張機能のカスペルスキーの設定「ファイルの URL へのアクセスを許可する」をON/OFF もしくは、OFF/ONにするとサブフレームのCPU利用率が、カスペルスキーOFFと同じ状態ぐらいになる。 カスペルスキーの拡張機能の設定で、「ファイルの URL へのアクセスを許可する」をON、もしくは、OFFにしていてもCPU利用率は高いだけなので、これはバグと思われる。
ちなみにカスペルスキーの拡張機能自体のサブフレームのCPU使用率も高く、なぜかずっと通信していたりする。これもさっきのON/OFF操作で解消される。
カスペルスキーの拡張機能のバージョン:20.0.543.401

次にカスペルスキーの状態は、トラッキング防止、バナー広告防止はOFFのまま、もしくは片方だけOFFでは、CPU負荷が高く(80~90%)継続する。
トラッキング防止、バナー広告防止の両方がONの場合は、CPU負荷は先の状態と比較して徐々に低減していくが減りきらない(~40%ぐらい)。でも、OFF/ONするとCPU負荷は解消される

ということで、Chrome重い対策はCPU性能を向上させるか、カスペルスキーのトラッキング防止、バナー広告防止をONにして多少重いのを我慢するか、Chromeの拡張機能のカスペルスキーをOFFにするしかない。

試しに、報告してみました、少しでも役に立てばよいのだけど。

ちなみに、自分のメインのブラウザであるFireFoxだとそれほど重くならないよw




GWが近い

4月になって、少し仕事の内容が変わって忙しくなった。それにも多少は慣れてきた。
こういう時って、他のことをしたくなるものなんだけど、前回まで書いていたハロについてはラジコン入手したら途端に冷めてしまったので、しばらく放置かもしれない。

でも、GWの10連休、子供を遊びに連れ出すのと、自分の遊びも充実させたい。

やはり、ハロか・・・、ラジコン分解するかな?W

ネタを変えて、
子供用のBluetoothのヘッドホンの片耳が断線した。Q12っていう、Amazonで売れまくってた奴。買って2年たつのでまぁ仕方がない。

で、壊れたので分解してみると、基盤は元気。断線個所はわからないので根元から外して流用を考えた。でも、自分で修理したり改造すると技適が外れて、電波法に引っかかるらしい。
 少しだけ無線をかじろうとしていときは、トラック運転のCB無線は違法が多いからという話を思い出した。Bluetoothならそんなに出力は無いけど・・・って10mは余裕で飛ぶんだよね。100mの規格もあるらしい。

ESP32は通信モジュール自体に技適がついているので、周りを色々いじっても問題が無いとのこと。



 

ハロレンジャー5

いつの間にかハロが5体揃ってしまった・・・
左から、1号、2号、3号、4号、5号・・・
左端の青ハロはうちの初代で、左から2,3番目はハロ改造用
右2つが先日記載したデジハロ、あの後格安で入手できた。

デジハロは、耳は動くけど、手や足のスペースをつぶして色々なものを詰め込んでいるようで、手も足も出ない。いや、動けるから問題ないのだけどw

まぁ、せっかく壊してもよいぐらい揃ったし、ESP32単体も買ったので、とりあえず遊ぶとしますか


ESP32単体購入

秋月電子さんで買った部品が到着。
あまりに丁寧な梱包とか色々に、中華との差異、価格の差異を思い知る。

コンデンサに説明書とか、二重パックされてたりとか、もう、それはそれは品質が良さそうなのですよ。

その部品に慣れるまでは秋月電子がベストでしょうね。 と、自分を含めた素人にお勧めしたくなる。

自分で何とかできるようになったり、模造品で失敗しても金で解決できるならAmzonで、という感じで説明できそうなぐらいw

 さて、主題のESP32は、というと、
こんな感じで、立派なパッケージング。550円というのが心配なぐらいです。
で、開封するとこんなにかわいい。

いや、これはリアルに見てもらった方が良いでしょ、何気ない可愛さが漂っているw

ところで、パッケージの画像を見て、持っている開発ボードのと違うのに気づく。
どうも、これは「高確率で Rev.0。但し Rev.1 の事もある。」 by こちらのサイト
だそうです。まぁ気にするほどのものではなさそうなので。

ハーフピッチの基盤とピンヘッダで簡易開発ができるようにしようと思っている。シリアル変換は中華を頼んだので、どんなのが来るのか楽しみだw






TinyPICO

こんなものがクラウドファウンディングにでるらしい。

https://www.crowdsupply.com/unexpected-maker/tinypico

サイズはなんと、18 mm x 32 mm

技適は通っていないのはデフォ。

デジハロ

マスコットハロの動作の動画を探していたら見つかった。

これは知らなった。


マスコットロボハロのリモコン版、デジハロ
同じサイズでリモコン無しでも勝手に動き回るし、喋るし耳も動く。

いやぁ凄い。自分が今やろうしているハロのスマートハロ化、わざわざ作る必要あんのか?ってぐらいの完成度。こっちは転がるしなぁ。
これが7000円位で売っていたとか、知っていたら買っていたのにな(今なら)

サイズが合わない

ハロの分解も上手くいって、桜も咲いた春分の日に、上機嫌な状態でArduinoでモーター制御の方法の確認をしたり、サウンドの確認をしたりして、ESP32での実装を考えていた。
そして、ハロの耳とかモーターでどう動かすのかな、と再度分解。モーターに電流を流して耳とかの動きを確認して、ESP32の配置を考えていると。
ん!?意外とスペースがない。Raspberry Pi Zeroは入らないのはわかっていたけど、ESP32の開発ボードが入らない。ギリギリ行けると思っていたのに・・・

 画像の通り、ESP32の縦幅は27mmぐらいだけど、ハロの基盤の狭いところは23mmなので、このままだと入らない。
外装とモーターの固定用ねじ部分で上下の縦幅が狭くなっている。ESP32の開発ボードは小さいと思っていたけど、入らないとは想定外。


ググって、ESP32の幅の狭いものを見つけたけど、結構なお値段。
これは、ESP32単体を買って、自作するしかないのかって感じ。
モータードライバとかLEDとか、ちょこっとだけ半田づけと思っていたけど、これらも実装しないといけないので、基盤丸ごと作成ということが一番の現実解なんだと思うが、基盤設計なんてできるわけがない。
あと、老眼のおじさんにはESP32のはんだ付けは厳しそうなのよね。(といって、たぶんやるだろうけど)
しかし、日曜DIYにしては敷居が高くなってきたぞ。

別の実装方法も考えないとね。
ワイヤードとか・・・オイ

追記。
ESP32単体とかシリアル通信基盤とか、いろいろ注文してしまった。送料込みで3000円位になった、幅の狭い開発ボード買える値段w。
まぁ色々使えるからよいでしょう、頑張ろう!



そろそろ何か作りたい

さて、これは何でしょう?

そう、これは、マスコットロボハロの内部構造です。元はこれ。

Raspberry Pi Zeroのアップデートで、マスコットハロの改造プロジェクトが少しだけ再開、勢いでついにハロの分解を決行したのです。この中に、Raspberry Pi Zero Wを入れてWiFiで操作、とか企んでいたのに今まで何でやってなかったのか、不思議な状態w
しかし、開けて驚愕、空きスペースなんてほとんどない。まぁ、それなりに、ずっしりと重かったので考えていない方がおかしい。

中身の方は、中心部は耳と体を動かくギヤボックスになっていて、前面に基盤その他があります。
中心部を横から見たのが下記。

最初の画像でもわかるように基盤は前面にあるだけ。
電源、マイク、スピーカー、時刻設定用のボタン類はプラグ接続なので取り外しができます。

この基盤を入れ替えてRaspberry Pi Zero W か ESP32を仕込むことになります。
部品はほとんど流用できそうなのだけど、不足しているのはカメラぐらいかな?、あとマイクが後ろなので前に持ってきたい。って、そこまで作りこめる技量は無いので、まずは目をチカチカと、耳を動かすところぐらいかな。

外側だけでも、こんなに可愛いw


さぁ、いつ(か)やろう



CATVから他のインターネット回線への切り替えと地デジアンテナ設置

年頭でも書いた、CATVから他のインターネット回線への切り替え、そして地デジアンテナ設置が完了しました。
インターネットは、光回線で10倍速、電話も込みでCATVのセット価格から500円下がったぐらい。2年経ったらまた考えてみるけど、どこも値段変わらないのでこのままかな。割引考えると変えた方が良いかもだけど回線工事の面倒さもある。

テレビは、平型アンテナを自力で設置。設置はとっても簡単でした。



アンテナケーブルも買ってきてちょうど良い長さでカット、自分でF型コネクタを装着して見た目もすっきり。
受信レベルも全然問題が無い。
近所に平型アンテナを設置しているところが無いし、電波塔方面にビルがあるので駄目かもと思っていたけど、隙間からいけましたw

CATV局の人が言っていたけど、地デジになってから難視聴地域でも普通に見れるようになってきているらしい、CATVの商売もかわいそうです(やめといて申し訳ないけど)。

これで、年間5000円の出費低減と回線速度10倍を実現。
そして、最も重要な事項である、ストレスの元であったBS受信料の請求に悩まされずに済みます。※地上波はちゃんと払ってるのよ。


Raspberry Pi JessieからStretchへのアップグレード

大雪警報の三連休、家でちまちまとゲームしていても飽きてきたので、そろそろRaspberry Piを触ってみるかと、すでに記憶の向こうに行ってしまったものを呼び起こしてみる。でも、ほとんどグーグル先生頼み。

Raspberry PiのOSは、Jessie から Stretch にバージョンアップしているので、まずは、OSのアップデートをしてみる。普段はCentOSを使っているのでapt-getは慣れない。

普通のアップデートは以下だけで良いようですが、

pi@raspberrypi:~ $ sudo apt-get update
pi@raspberrypi:~ $ sudo apt-get dist-upgrade


Jessieから、Stretchの場合はちょっと一手間いるようです。
https://www.raspberrypi.org/documentation/raspbian/updating.md
の真ん中あたり。

pi@raspberrypi:~ $ sudo sed -i 's/jessie/stretch/g' /etc/apt/sources.list
pi@raspberrypi:~ $ sudo sed -i 's/jessie/stretch/g' /etc/apt/sources.list.d/raspi.list
コマンド参照元:https://qiita.com/mt08/items/278ef51e1d6c1259e098
これをやってから、update, dist-upgradeを実行しろと書いてる。

全部が終わったらリブート。

実行結果が以下
pi@raspberrypi:~ $ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
NAME="Raspbian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
pi@raspberrypi:~ $ cat /etc/debian_version
9.6
pi@raspberrypi:~ $ uname -a
Linux raspberrypi 4.14.79+ #1159 Sun Nov 4 17:28:08 GMT 2018 armv6l GNU/Linux

さて、これまで作ってたやつ動くかな?
でもその前に、色々と繋げないといけないのがかなり面倒。

むむ、続きは明日でw

自転車のハンドル交換

昨年末に突然折れた自転車のハンドル、やっと交換しました。それも自分で実施。
思ったよりも簡単で、ちょっと力がいるぐらいの作業です。


ハンドルを外しました。すんなりといきます。



ネットで購入したハンドル、大きなダンボール箱に丁寧に梱包されていました



途中の撮影を忘れてた。グリップを入れるのが一番大変で、かなり力が必要でした。

これで懸念事項の一つが完了。いろいろなことに手を出してきてるなぁw