酒と薔薇の日々(その2)

好きなことだけ求めて生きるアスペ気味のINTJ人

フォッサマグナ旅(3/14)天橋立・伊根の舟屋

2023年10月31日 15時21分31秒 | 旅行


フォッサマグナ旅(2/14)鳥取砂丘・余部鉄橋

2023年10月30日 14時26分38秒 | 地学系

朝10時から鳥取砂丘へ

前回は激走でバスまで走って帰ったが今回は全部をゆっくりと走破

良いですね~

青い海と空が印象的であります。

風紋

砂丘はボラさんが草抜きして何とか維持してるそうです。
パラグライダー練習なんてのもやっていた。

砂丘資料館にて。
何万年もかけて中国山地の岩が細かくなってここに集まってる。サンドミュージアムとか鳴き砂も同じジオ系ですね。
砂丘の砂をもらって帰りました。こういうのを作れるかな?と。

続いて砂の美術館へ

入館直後。圧倒されます。

今年はエジプトがメインテーマだそうです。

実は、これがいいなぁ・・などと

満足の資料館でありました。

更に東を目指して車は走る。
穴見海岸にてコーヒータイム
自由気ままな旅はよろし

何気なく見つけた「あまるべ道の駅」の看板
何があるのかよく走らなかったが、少し遠回りして寄ってみた。

赤い鉄骨が当時の架橋

ここまでJRのエレバータで上がることができる。
天気がいいけど悪い時には寒々とした風景なんだろうね。
帰った後12月31日にこの近くの温泉を舞台にした映画「夢千代日記」があることを知った。

2日に一回の入浴
丹後半島西付け根にある湯元館へ

おじいさん愛の元パイロットさんが運営してるんだろうか。

この晩は海の京都宮津へ車泊したけど、狭くて数台分のエリアしか無くやっとの思いで停めた。
隣りにいたおじさんは巨木を訪れる旅をやっているとか。
人によっていろんな目的があるのだなぁ


フォッサマグナ旅(1/14)三次もののけ博物館

2023年10月29日 13時54分44秒 | 旅行

この時期しか旅に出るチャンスはないのでVBA最終日はキャンセルしてフォッサマグナの旅に出発
ちなみに多忙だったのでこのブログは年明け1月2日から書いている。
旅が2週間、ロボットカー講座の目安(テキスト作成)、来年度講座全面改正検討、Jimdo講座テキスト再作成・・・で12月中旬までくっそ忙しかった。

前日100均で不足する食材を購入
結局飴類とポン酢以外は全部持ち帰りました。結局遊ぶのが忙しくて自炊なんかやってられんというところが結論

足元にいろいろ詰め込んで
このベッドの前部分の組み合わせは単なる嵌め込みで、全体が振動でくの字にズレて、旅の途中4回程度就寝中に外れるという始末
外れると畳んだ椅子の背中に当たるまでの10cmほど落下する。鉄ジョイントを使うなど少し考えないといけない。

後部左側にはチャリンコ
帰ったら後部ギアの油で椅子の布が真っ黒に・・・なにか対策が必要

グダグダやってたら10時半ころの出発に
三次方面に向けて白木を通って北上

12時前に三次もののけ博物館へ到着

こんな感じの展示

五日市に落ちてきたという雷獣の記事
なんか身近ですな。

江戸時代の錦絵。当時の楽しみ方が伝わってくる。
けっこう面白かった。

ここに車をおいたまま自転車で辻村寿三郎人形館へ

昔の街道筋が整備されており走りやすい。

なんとも言えない不気味な人形ばっかりだが、魅力がある。
女の情念も怖い・・・判るような気もする。

展示場所は旧銀行。展示物が少なすぎて・・・ちょっと残念

もののけへ帰ったらTVの収録をやっていた。
旅から帰って たまたまTV放送を見たのだが、異様な烏天狗さんの横にしっかりと映っておった。

この日はどこかの道の駅で車泊

 


TinyBitのブロックを日本語化(1)準備調査編

2023年10月28日 21時05分10秒 | マイコン(ESP32・Arduino等)

TinyBitはMaqueenに比べると半額だが日本語が使えない。
これで子供に読めと言ってもちょっと難がある。

が、GitHubのソースを眺めていたら言語パックが存在することがわかった。(_localesフォルダ)
Maqueenには「ja」が存在するが、TinyBitには中国語とフランス語しか存在しない。
中国語の言語パックソースをコピー&修正して「ja」フォルダに入れればいいんじゃないか?と思える。
TinyBitの中国語拡張パックとブロックエディタ画面の対応を調べてみたが、間違いなくそうなっている。

ただ、追加で4か国語目を入れたフォルダを作れば自動的に認識するのか、さらに上位の別設定が必要化は現時点不明
だけど_locales内にある言語数をわざわざ指定するなんて面倒なことやる必要はないと思うんだけどな。
日本語は多分「ja」決め打ちだろうし、「ja」があれば「日本語ありまっせ」と提示する、ちゅうんが親切ってもんじゃろ?

-----参考--------

以下はMaqueenの構造を調べた経過

「拡張機能」からメジャー各社が提供している製品の一覧を表示させ
「LearnMore」をクリックする。

表示された画面から「GitHub」をクリック

マクイーンのプログラムフォルダが表示された。
このURLを指定して検索し、拡張機能を組み込むこともできるはず。
「_locales」フォルダがある。これが言語パック格納場所

マックインは日本語化されているので「ja」フォルダがある。

他国のフォルダ構造を覗いてみる。
日本だけご丁寧にHelpらしき言語パックが存在しているが、
基本は「maqueen-strings.json」というファイルが言語パックのメイン(のはず)
各言語とも同じ名前でいいと思われる。
なので、他国の「maqueen-strings.json」をパクって日本語表記にすればOK(なはず)

マックイーンの日本語表記ブロック

プルダウンの内容

はいここにあります。

26行の「モーターの速さ指定」が先程から示しているブロックを日本語で表示してる部分

逆に中国人ならここを簡体で書き直せばいいはず。
大元のソースコードの中に「%xxxx」で記述した変数があるはずで、それを置き換えるのだろう。(多分。そこまで今回は必要なさそうだけど)

次はGitHubの使い方とパクり方

明日から度に出るので今日はここまででや~めた

 

====参考====

これはご丁寧な日本語だけに存在したヘルプのデータ(と思う)


Tiny:bit来ました・動いた・ひとあんしん

2023年10月28日 13時38分22秒 | マイコン(ESP32・Arduino等)

TinyBitが1日早く届いた。
昨晩ボラから帰ったら届いていたのだ。

Yahboom製3900円の所、-200クーポンで3700円と超コスパであります。
なぜかと言うと日本語化されていないから。競合他社は倍の8000円以上する。
調べたのだがGitHub上へ日本語化したプログラムを置けばなんとかなるっぽい。

パーツが少ない。慣れると5分もあれば組み立て可能
Arduino版ロボカーなどに比べると組み立て工程なんか無いに等しい。
パチパチと部品をはめていくだけ。
リポ充電も嬉しいポイント。電池運用経費がゼロに押さえられる。

足回りが秀逸・小型モータとメタルギア!

タイヤも適度な粘着性があってスリップしにくい良い製品
小さい(カワイイ)は正義!
右は1200円程度で買っていた汎用シャーシ+モータ
ちょっと不肖の兄貴扱いになるな・・・(ごめん)

兄貴に比べても見た目が垢抜けてますな。

電池込みでも重さわずか177g
リポ電池+充電回路も搭載なので超コスパです。

=======参考サイト===========

メーカーサイト(チュートリアル)
英語だけど細かい説明とサンプルが載っていて、いい環境が提供されています。

サヌキテックネット
組み立て方 動かし方概要 

商品紹介(販売業者)

ググるとこんな記事がヒット
ここに「Mbit_IR」の記事があった。
機種は違うが同じメーカーで同じパーツを使っている物が多き。
個々のパーツを利用した実験記事がありがたい。

====プログラム作成事前準備=====

micro:bit拡張ブロックの読み込み
「Tinybit」「Mbit_IR」「Neopixel」の3個が必要とある。
パーツがGitHub上にあるので、メジャーじゃないパーツはそのURLを打ち込むことで組み込まれる。

■「Tinybit」
 本体コントロール用のブロック
 こいつはGitHubに以下のURLを入力して検索するとヒットした。
 https://github.com/YahboomTechnology/Tiny-bitLib

右上の「Code」をクリックするとソースコードがDLできます。
表示されたメニューに「Clone」てのがあるが多分これがパクって自身のコードにできるボタン(と勝手に思ってる)

■「Neopixel」
 自動で入ったようです。

■「Mbit_IR」
 GitHubで「yahboom」というメーカー名で検索をかけたらブロックパーツ関係が出てきた。
 https://github.com/lzty634158/yahboom_mbit_IR

 

ブロック組み込みはここが一番わかりやすかった。(機種が違うけど)

機種は違うが多分「https://github.com/lzty634158/yahboom_mbit_en」で全部一気に組み込み(後でわかった)

================================

サンプルHEXをメーカーサイトからDLしてあれこれやってみた。
プログラムをmicro:bitへ転送する際にうまくリセットがかかっていないことがチョコチョコある
確実な手はないものか。まだ良くわかっていない。
ま、当たり前。説明書なんて全然読んでないもんな。
今後の研究事項です。

旅に出る前日だが何が何でもこまではやっておかないと、同中ずっと落ち着けないので。
旅の途中ではGitHubと日本語化のお勉強をします。

===========

走らせた動画
自作ロボカー走行動画
LEDテープ動画


車泊 Ver2.5に改造(9)車内カーテンなど内装

2023年10月25日 20時47分14秒 | マイコン(ESP32・Arduino等)

100均で買ってあったレースのカーテンを車中お昼寝対策で取り付けた。
夜間就寝時は黒いプラダンを窓にハメるのでいいのだが、昼寝時は中が丸見えなのでちょっとな。

立派なカーテンレールを取り付けるのもアホ臭いし、金もないし、技術もセンスもない。
四面楚歌の私は、「超貧乏ったれVer」で実装

家に転がってたガチャ&目玉クリップと水糸

ピラーBの進行方向面にガチャ玉を掛けてここから後部へ水糸を張る。
このガチャ玉は内側のバリが取ってないらしく水糸が切れた。
糸自体は内装プラカバーの奥を通っているので見えない。

Cピラーの内装プラをカジッているだけに見えるが、不思議とこれでも食いつきは強い。
目玉クリップは「中」が吉

Dピラー
目玉クリップが小さいのしか無かったのでテンションを掛けると外れそう。
ゼムクリップと協同でなんとか踏みとどまっております。
車内にはあれこれ物があるので、こんな風体でもあんまり気にならないよ。(雑な性格なだけ)

車内の出入りの際に水糸が少し目障りなので、カーテンを使わない時はグリップへ引っ掛けておきます。
ここは照明を付けたりできそうで、重宝するパーツです。

カーテンを束ねるのは単純な紐で、2ndシートのシートベルト台座に括り付けてあるだけ。
未塗装のベッド天板が目立つわ。

運転席後部に掛けてあるのは就寝時の小物入れ。100均の植木鉢をぶら下げる袋
鍵とか財布とかスマホを入れます。
狭い車内、収納が命であります。
飲んでたりすると後でモノ探しで苦労するんよ。

なんかゴージャズ
カーテンも少しぐらい垂れ下がっていたって無問題ですよ。
実はこれがないと道端で休憩中、通行人と目があって困ります。挨拶されたりして・・・

これは夜間就寝時に窓へハメ込むプラダン
プラダンは強度もあるし、曲げても復元するし、無理しても壊れないし、冬は断熱。良いことばかり。
外すのはちょっとキツイのだが、時に外を覗きたいことがある。
顔の近くをカットして小窓を作った。
開ける際に引っ張るベロを養生テープで作って付けてある。
写真は2列目左座席脇のやつ。ベッド側の窓は位置が違います。
プラダンは剛性が高く、カットしたコの字部分はビチッとハメ戻すことができ、勝手に開いたりしない。素晴らしい!


車泊 Ver2.5に改造(8)後部棚の高さを上げた

2023年10月24日 20時02分16秒 | 旅車改造

先日、海浜公園で車泊してきたが、ちょっと不満点があった。
それは後部棚の高さが低いため、寝返りを打つとスネが垂木に当たって痛いこと。
狭い部屋で寝てるので慎重に動く癖は付いているのだがちょっとストレス
なので10cmほど高さをアップした。

単純に棚板の左右に下駄を履かせればいいと思ってたが、実際は癖が悪い車内壁の勾配
上へ行くほど狭くなっている。
なので、ジクソーを持ち出して微妙なカットが必要だった。
仕上げにブライワックスを塗布して安っぽい木の地肌を隠すことに。
ついでに最後尾ベッドの色も目立つので塗ってやったよ。
真ん中天板1枚が無地のままだが、普通は見えないからこれでいい。(センス悪っ)
塗装すると解体後に転用が難しくなるからね。

 

 


ホンダ・ステップワゴンのシート固定の修理に4万円か・・

2023年10月23日 17時42分53秒 | 旅車改造

年金生活者には 痛え。
ステップワゴンの2列目シートを固定するロック機構が壊れた。
シートは固定位置に近づくと、自転車ブレーキワイヤーみたいな機構でロック機構の口を開き、ボディの鉄でできたフックを噛み込む。
物を作ることの大変さを知ったここ5年であるが、ワイヤーが伸びたのだろう。
それ以外に劣化原因ってあるのか?実は同じ場所が購入後に一度壊れている。
その時の修理を見ていたので原因は想像ができる。
実は自分でタイコを移動させてみたのだがダメだった。

今回の修理見積もりを見て、HONDA店でワイヤー交換で済むのでは?と修理担当者言ったがダメだった。
まるごと周辺を交換する。と冷たいお言葉
鈴鹿から一式を取り寄せ交換となった。
素人判断だけど、部品18000円+技術料2万円で4万円弱は悲しかったね。
もう面倒くさいから全面依頼をしたが。

お隣にあるビッグモーターは例の事件以降、日々在庫車両は減っている。
こういう業界、いつまで潰れずもつんだろうね。
まあ、それがモータリゼーションとか言って社会をまわしていたんだけどもね。

ものを修理することが楽しい人間と、商業的な運営とはちょっと違う。
と思った一日でありました。

午前中は秋旅に備えて早めの防寒着を高温乾燥殺ダニ
100円で殺せるので重宝します。
防ダニ剤を使ってるので居ないとは思うけど、念を入れてます。

ホンダの修理中にあるパークの模型ショップでドリフトを見させてもらった。
日本独自文化らしい。しらんけど。

これ700円で塗装済。欲しいんだけどどうもガチャ形式で思ったものが買えるわけではないらしい。
店員さんが多分そう、なんて言ってた。
ちゃんと箱に書いとけよな。チューインガム販売業者

アルパークがヲタクの聖地にならんかなぁ
ヤマダ電機もむこうを張って「西日本最大級のおもちゃ売り場である」なんて変な改装していた。


DHT11温度をOLEDとシリアルLEDへ表示(Arduino)

2023年10月21日 23時19分06秒 | マイコン(ESP32・Arduino等)

久々の長い自作プログラム
タイマー2割り込みを利用してLEDの点滅を行ってる。(参考

現在の気温の位置のLEDが点滅する。左から2個めが現在気温で消灯中
このDHT11何時間立っても気温1度以下にならん。
果たしてこれで正しいのか・・・

/*
    温度計から得たデータが示す位置のLEDを1秒おきに点滅させるプログラム
  割り込みを使い1秒毎に変数 dspOff を切り替える
  dspOff = trueの時、 temp2pos の位置のLEDを消す(1秒割り込みで点滅)

  DHT11の結線
   5VとGND 信号線(緑)は12Pinに
  OLED SSD1306の結線
   3.3V,GND、SDAはA4ピン、SCK(SCL)はA5ピンへ。
  (SCLとSCKは同じ意味でクロック線を意味する。)
  
        2023/10/21
*/
#include "MsTimer2.h"           // タイマ2割り込み(AD変換pwmは注意のこと)
//---------温湿度計----------------------
#include "dht11.h"              // 温湿度計ライブラリ
dht11 DHT11;                    // 温湿度計
float hum;     // 湿度保存             
float tmp;     // 温度保存
String humS;   // 表示整形用文字列
String tmpS;   // 同上
//--------OLED SSD1306制御----------------
#include "SPI.h"
#include "Wire.h"
#include "Adafruit_GFX.h"
#include "Adafruit_SSD1306.h"
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 32 // OLED display height, in pixels
#define OLED_RESET     -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
//---------LEDバー制御----------------------
#include "Adafruit_NeoPixel.h"  // LEDバー制御
const int DIN_PIN = 11; // D1
const int LED_COUNT = 8; // LEDの数
Adafruit_NeoPixel pixels(LED_COUNT, DIN_PIN, NEO_GRB + NEO_KHZ800);  // LEDバーの定義
//----カラーテーブル------
uint32_t red = pixels.Color(128, 0, 0);      uint32_t orange = pixels.Color(128, 82, 0);
uint32_t yellow = pixels.Color(128, 128, 0); uint32_t green = pixels.Color(0, 128, 0);
uint32_t cyan = pixels.Color(0, 64,64);   uint32_t blue = pixels.Color(0, 0, 128);
uint32_t purple = pixels.Color(128, 0, 128); uint32_t Lgreen = pixels.Color(0, 32, 0);
uint32_t Lblue = pixels.Color(0, 0, 255);     uint32_t Hred = pixels.Color(255, 0, 0);
//----カラーバーの表示色------
uint32_t barColor[] = {Lblue, cyan, Lgreen, green, yellow, purple, red, Hred};

//-----OLED運用開始--------------
void startLcd(){
  if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
    Serial.println(F("SSD1306 allocation failed"));
    return;
    //for(;;); // Don't proceed, loop forever
  }else   Serial.println("Start SSD1306");
  display.clearDisplay();
  display.display();           // 画面クリア
  delay(500);
  display.setTextSize(1);      // Normal 1:1 pixel scale
  display.setTextColor(SSD1306_WHITE); // Draw white text
  display.setCursor(10, 10);     // Start at top-left corner
  display.cp437(true);         // Use full 256 char 'Code Page 437' font
  display.println("SSD1306 + DHT11");
  display.display();           // buffer => Display
  delay(1);
}
//----OLEDデータ表示---------------
void dspData(){
  display.clearDisplay();
//  display.display();           // buffer => Display
  display.setTextSize(2);      // Normal 1:1 pixel scale
  display.setCursor(0, 0);     // Start at top-left corner
  display.print("hum: ");
  display.print(humS);
  display.println("%");
  display.print("tmp: ");
  display.print(tmpS);
  display.display();           // buffer => Display
  delay(1);
}
//------- 温度から点滅箇所を計算---------------
int temp2pos(float inTemp){
  return map( int(inTemp), -10,60, 0,7); 
}
//-------タイマ割り込みでLED表示を1秒毎にON/OFF切り替え--------------
bool dspOff = true;   // LEDを消すかどうかのフラグ 
//----- 割り込みでdspOffを切り替える
void intrUp(){
  dspOff = ! dspOff;
}

void setup() {
  Serial.begin(9600);
  Serial.println("Start Program");
  //----OLCD---------
  startLcd();
  //----温湿度計---------
  DHT11.attach(12);              // 温湿度センサーを12ピンにセット 
  //---LEDバー-------
  pixels.begin();                // LED利用開始宣言
  pixels.setBrightness(20);      // 明るさセット
  //---割り込み-------
  MsTimer2::set(1000, intrUp);   // 1000ms毎にintrUp( )割込み関数を呼び出す
  MsTimer2::start();             // タイマー割り込み開始
}
//-----LEDバーに既定全色をセット--------
void setColorBar(){
  for (int i=0; i<8; i++){
    pixels.setPixelColor(i, barColor [i]);
  }
}

void loop() {
  //---温湿度データ取得-----
  if (dspOff) 
    int chk = DHT11.read();   // 2秒に一回読み込み  
  hum = DHT11.humidity;       // 湿度
  tmp = DHT11.temperature;    // 温度
  humS = String(hum, 0);      // 表示用に整形
  tmpS = String(tmp, 1);      // 同上
  Serial.print("hum:");     Serial.print(humS);
  Serial.print("  temp:");  Serial.println(tmpS);

  dspData();                  // 液晶へ温湿度を表示  

  int pos = temp2pos(tmp);       // 温度から点滅するLEDの位置を取得する

Serial.println(pos);

  pixels.clear();                // LEDバーバッファのクリア
  setColorBar();                 // LEDバー全色セット
  if (dspOff) pixels.setPixelColor(pos, 0);  // ブリンクで色を消すタイミングの場合、該当LEDの色を黒にする
  pixels.show();                 // LEDバー表示 
  delay(1000);
}


OLED(SSD1306)+ DHT11で温度表示

2023年10月21日 16時08分44秒 | マイコン(ESP32・Arduino等)

温度計作ってみた。

画面更新が判りにくいので、わざと少し画面を点滅させてる。

============

#include "dht11.h"
dht11 DHT11;

#include "SPI.h"
#include "Wire.h"
#include "Adafruit_GFX.h"
#include "Adafruit_SSD1306.h"
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 32 // OLED display height, in pixels
#define OLED_RESET     -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

float hum;
float tmp;
String humS;
String tmpS;
 
void startLcd(){
  if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
    Serial.println(F("SSD1306 allocation failed"));
    return;
    //for(;;); // Don't proceed, loop forever
  }else   Serial.println("Start SSD1306");
  delay(2000);

  display.clearDisplay();
  display.setTextSize(1);      // Normal 1:1 pixel scale
  display.setTextColor(SSD1306_WHITE); // Draw white text
  display.setCursor(10, 10);     // Start at top-left corner
  display.cp437(true);         // Use full 256 char 'Code Page 437' font
  display.println("SSD1306 + DHT11");
  display.display();           // buffer => Display
  delay(10);
}

void dspData(){
  display.clearDisplay();
  display.display();           // buffer => Display
  delay(100);

  display.setTextSize(2);      // Normal 1:1 pixel scale
  display.setCursor(0, 0);     // Start at top-left corner
  display.print("hum: ");
  display.print(humS);
  display.println("%");
  display.print("tmp: ");
  display.print(tmpS);
  display.display();           // buffer => Display
  delay(1);
}

void setup(){
  DHT11.attach(12);
  Serial.begin(9600);
  Serial.println("Start Dht11");
  startLcd();
  delay(3000);
}

void loop(){
  int chk = DHT11.read();
  hum = DHT11.humidity;
  tmp = DHT11.temperature;
  humS = String(hum, 0);
  tmpS = String(tmp, 1);

  dspData();

  Serial.print("  hum:");
  //Serial.print(hum, DEC);
  Serial.print(humS);
  Serial.print("  temp:");
  //Serial.println(tmp, DEC);
  Serial.println(tmpS);

  delay(3000);
}