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

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

石を磨いてみた

2024年04月18日 01時45分58秒 | 地学系
昨年11月のフォッサマグナ旅
糸魚川の海岸で拾ってきた石
孫が気に入って少し磨く様子を見せたら、以来どうなった?と聞くし
最も大きい動機は「暇」w



かなりツルツルなので1000番から
サンドペーパーはダイソーで買い置きしていたやつがあった。
耐水性で8枚セットで100円!ありがたい。



最後は歯磨き粉を60cmほど使用



よく見ると右側には地層の乱れ(石英層の断片化)が見える。
恐竜が闊歩するユーラシア大陸で堆積し、数千万年前に大洪水でもあったのか?
などと想像が膨らむ。

1個目を磨いた後、ものすごい肩こり。
生半端な痛みではない。巨大電マで癒やしました。



2個めに挑戦。これはどこで拾ってきたのか全く記憶がない。柳瀬かな?
3Dプリンタ整形用に持ってた100均のダイヤモンド砥石使ったが・・・
馬鹿ですね。刃が全部なくなったようだ。



またまたとんでもない肩こりに襲われた。
本日はここで諦め。

ジオ系は好きなので、湯木地方へ石拾いにでも行こうかと。
Youtubeを探すと「時乃小石」さんという方が石拾いをあれこれ紹介してくれていた。
珪化木探しに行ってみよう。


こちらのサイトが無料で地質図をダウンロードさせてくれる。
とりあえず近場を数枚DLさせてもらいました。
吉和から東なら「みのち」辺りが有望かな。
あるいは西方面なら冠高原から寂地方向の川か。
ちょっと遠出する理由が見つかったw

Arduinoで赤外線リモコン・モーター制御の習作

2024年04月16日 15時26分01秒 | マイコン(ESP32・Arduino等)


ATtiny85へ書き込む前に、Arduino上でプログラムを作ってみた。
・電源は2.4Vのニッケル水素2本
 これ1本ではモタードライブ基盤が動かない。
 プチ電組み込み時はリポ電池にする予定
・2.4->5Vへ昇圧しArduinoのVinへ供給
・2.4Vはモーター制御基板のVinへ
・Arduinoと昇圧装置ともオーター制御基板のGNDは共通とする
・LED点滅はArduinoの基盤上LEDでPin番号は13
・モーター基盤はポートAしか使わない
・モータ制御信号はPWMアナログ値で出力し速度制御する
 PinはA0,A1を使った。
・赤外リモコンはTiny:bitのものを使った
 00h:電源ボタン 02h:ライトボタン
・赤外線検知は "TinyIRReceiver.hpp"を使用する
・「PinDefinitionsAndMore.h」が見つからない場合はライブラリから探し
 ソースと同じ同一フォルダに入れること。
・赤外信号が0なら正転、2なら逆転、それ以外で停止
 運転中はLED(Pin13)を点灯する



これをATtiny85で「目標サイズ」までサイズダウンする。
画面下にある白紙が、プチ電車内に収まる基板サイズ85*28*H:11mm

======================
/*
ArduinoUnoで1モーター制御 Attiny85へ移行する前準備

*/
//#include "Arduino.h"
#include "PinDefinitionsAndMore.h"
#include "TinyIRReceiver.hpp"

#define LED_pin 13

const int A1A = A0; // PB0; // Pin5(PWM)
const int A1B = A1; // PB1; // Pin6(PWM)

int m_speed = 150; // モータパワー

void setup() {
//------ Motor -----------
pinMode(A1A, OUTPUT);
pinMode(A1B, OUTPUT);

//------ Serial -----------
Serial.begin(115200);
Serial.println(F("START " __FILE__ " from " __DATE__ "\r\nUsing library version " VERSION_TINYIR));
if (!initPCIInterruptForTinyReceiver()) {
Serial.println(F("No interrupt available for pin " STR(IR_RECEIVE_PIN)));
}
Serial.println(F("Ready to receive NEC IR signals at pin " STR(IR_RECEIVE_PIN)));
}

int cmd = 255;

void loop() {
if (TinyIRReceiverData.justWritten) {
TinyIRReceiverData.justWritten = false;
Serial.print(F("Address=0x"));
Serial.print(TinyIRReceiverData.Address, HEX);
Serial.print(' ');
Serial.print(F("Command=0x"));
cmd = TinyIRReceiverData.Command;
Serial.print(cmd, HEX);
if (TinyIRReceiverData.Flags == IRDATA_FLAGS_IS_REPEAT) {
Serial.print(F(" Repeat"));
}
if (TinyIRReceiverData.Flags == IRDATA_FLAGS_PARITY_FAILED) {
Serial.print(F(" Parity failed"));
}
Serial.println();
}
//------- my code ---------
if (cmd == 00) {
digitalWrite(LED_pin, HIGH);
forward();
} else if (cmd == 02) {
digitalWrite(LED_pin, HIGH);
back();
} else {
digitalWrite(LED_pin, LOW);
stop();
}
}

void handleReceivedTinyIRData() {
printTinyReceiverResultMinimal(&Serial);
}

//--------停止----------
void stop() {
analogWrite(A1A, 0);
analogWrite(A1B, 0);
}
//--------後退----------
void back() {
analogWrite(A1A, m_speed);
analogWrite(A1B, 0);
}
//--------前進-----------
void forward() {
analogWrite(A1A, 0);
analogWrite(A1B, m_speed);
}




書き込み機[ HW-260 ]壊れた・・

2024年04月16日 02時43分56秒 | マイコン(ESP32・Arduino等)
悲しみは突然に・・・
全然原因がわからない。
外部電源テストを終えて、さて今度はモータドライバをと思ってた。
じゃが、ちょっとリモコンテストをしようとしたら、反応するLEDが点きっぱなしになる。

(゚Д゚)ハァ?
 
開発基盤からATTiny85のプログラムを書き込もうとしてもUSBを認識しない。
へ?ブートローダが壊れた??
ブートローダを再度書き込んでもダメ
あれこれ一から全部やり直すもダメ
そもそも同じプログラムを書き込んでいたはずの2個のマイコンが同時に壊れるはずもない。1個は使わずとっていたのだから。



ここまで来たら疑うべきは書き込み基盤HW-260しかない。
やむを得ずArduinoをもう一個持ち出して、ISPでプログラムを直接書き込んでみた。


書き込み設定はArduinoをISPにしてATtiny85へブートローダを書き込む際の設定と同じ。(最下部の「ブートローダを書き込む」は使わんよ)
プログラムを書くには以下の書き込み手順です。

ArduinoIDEには「書き込み装置を使って書き込む」というメニューがあるのだな。「Ctrl+Shift+U」

Lチカプログラムを書き込みHW-260に差し込むと・・・ちゃんとLチカしてる。
結局、基盤がメゲた。としか思えんが、簡単な構造のくせしてどこが壊れるんだ???
意味わからん。
午前3時だ。もう寝る。

USB経由で書かないのならブートローダも要らんのかな?
この件AIに聞いてみた。あったほうが良さげですね。
【回答】
ブートローダを省略してプログラムだけを書き込む場合、いくつかの問題が生じる可能性があります。以下はその一部です:
  1. 起動の問題: ブートローダがない場合、マイコンは電源投入時に直接プログラムの実行を試みます。しかし、ブートローダがないため、正しいアドレスからプログラムが実行されない可能性があります。
  2. シリアル通信の欠如: ブートローダはシリアル通信を介してプログラムを受信します。ブートローダがない場合、プログラムをアップロードする方法がなくなります。
  3. フラッシュメモリの初期化: ブートローダはプログラムをフラッシュメモリに書き込む前に、メモリを適切に初期化します。ブートローダがない場合、フラッシュメモリが適切に設定されていない可能性があります。
  4. ブートローダの機能の喪失: ブートローダはリセットボタンを押すことで再起動することができます。ブートローダがない場合、この機能が失われます。
したがって、ブートローダを省略する場合、これらの問題に注意する必要があります。
===============


おいおい、ブログがついに2800番台に突入
調べるとヘンテナ記事、メダカビオ、そしてATtiny85のLチカ記事がベスト3
旬な話題でもないのだが・・
これもわからんな。


超小型DCDCコンバータ使ってみた

2024年04月15日 22時53分36秒 | マイコン(ESP32・Arduino等)


AliExで買っていた超小型DCDCコンバータ、5個で220円
大容量電流は期待できないがマイコン程度なら動くはず、と勝手に思って。
【規格】
入力電圧0.9〜5v、出力5v
最大出力電流: 480 ma
開始電圧0.8v、出力電流7ma
入力1-1.5v、出力5v 40-100ma
入力1.5-2v,出力5v 100-150ma
入力2-3v、出力5v 150-380ma
入力3v,出力5v 380-480ma
DC-DCブーストモジュール動作周波数150KHz。 効率 <85% ( 推奨される高効率バージョン ) .
重量: 約1g
3端子あるが、真ん中は共通GND、左右が入力(VI)と出力(VO)
ーーーーーー
1.2Vのニッケル水素で動くかどうかをテスト



Arduino動きました。赤外受信モジュールでLEDのを光らせてます。
規格通り5Vが出てます。



ATtiny85も動きました。同じプログラムです。

だけど、当然だけどDCモーターは動かせなかった。
まあ、これで5Vのマイコンが動けば、モータドライバ基盤への信号は出せるので、モーター部分は3.7V小型リポ駆動とすればいいかな。

小型のモータドライバ基盤を買うか、あるいは今持ってる奴の端子台を外すか・・・

このままでも動いてるけどコンデンサを付けたほうが良いだろうな。




車中泊天井等はこれで決まり

2024年04月15日 22時41分02秒 | 旅車改造
先日AliExで600円にて購入した充電式のバーライト
なかなか良い。
タッチセンサーに少し慣れなかったのだが、軽くなぞるだけで点灯する。
できればスイッチは一番小さい面につけてほしかった。
凸凹が少なくて指先では所在が良くわからんのだ。

数回なぞると色味が代わって、最後にOFF
使用しない時はメインスイッチを切ることができる。
リモコンと長い充電ケーブル、固定マグネットが付属



こいつを車泊の主電灯にしようと天井にマジックテープで固定しようと四苦八苦するが、すぐに落ちる。
試しにおまけで付いてきた「ジェルテープ+鉄板」を使ってみると・・・
ををを、素晴らしい!!!
しっかり固定され運転中落ちることもなかった。

使わない時はパソコン手元ライトとして利用します。
===============

仕様:
LED Qtys: 20LED
パワー: 4W
リチウム電池: 5V、4000mAh ほんまか??
ディメンション: 26*2.2*2cm
充電時間: 3.5時間
低い明るさの働く時間: 24時間
中型の明るさの働く時間: 8時間
高い明るさの働く時間: 4時間
明るい色: 暖かい白、白、暖かい黄色
リモコン:CR2025 電源、照度、OFFタイマ(10/30)、色モード
制御:照度はリモコンと電源スイッチの長押しでコントロールされ、最終照度設定を本体記憶する
分解してみた。224/5/20
あれれ、リポかと思ってたが18650が入ってる。
本当に4000mAもあるのか?メーカー名だけで容量なども印刷はなかった。
機能説明では最大照度で4時間持つとあったが、最後の方はかなり暗かったにせよ実際にほぼ4時間光っていた。(素晴らしい!)
定番の赤外線受光部とタッチセンサー
タッチセンサー使いにくいんですよねぇ
このライトはセンサー部に突起がないので、暗闇で点灯するのはちょっとムズい。
ライトバーの端っこにある製品が正解です。

リモコンなんか要らないんで、電子工作へ流用しましょう。



AliExでの返品経過(到着翌日に手続き開始できるようだ)

2024年04月15日 06時20分27秒 | 物欲日記
AliExで小物を買ってみた。
予定より3日も早く届いたのは良いんだけど・・(4/10注文、4/14とうちゃこ)
AliExがTEMUに押されてか、100均格安セールをやってたので、ついつい乗せられてしまった。
確かにそこそこ安い価格設定だったのだが。

1 充電式バーライト 600円
 PCテーブルの照明用で、車泊時には天井等にする予定
 リモコンまで付いていい商品だった。
2 18650電池ホルダ 3個200円
 すぐに要るわけでもないのだが勢いで。安いです。
3 充電式ライト&5Vポタ電 300円・・のハズ
 数年前までは結構この手の製品は多かったが今では入手困難
 これ5V電池として使いたかったので、電灯機能なんて不要なのだ。
 だが到着した製品を見ると、出力のUSB-Aポート自体がないではないか!
 箱には「ありますよ」と書いてあるのだが。
 おまけに付属の充電ケーブルも断線してたらしく充電不能w
 ゴミだね。
 分解動画はこちらです。こちら

ということで、ここはいっちょうAliEXで返品経験してみようかw


到着から1日経った翌日の午前中、昨日不能だった返品に再チャレンジ
今度はちゃんとできました。
そして2日後の17日朝、300円がVisa講座へ返金された。

型番は「YT-81025」という。

=========
     返金の経過
=========
「アカウント」から「注文」、「注文の詳細」
返す商品を選ぶ。「返品 / 払い戻し」
返品理由やら証拠写真を日本語で記入した。勝手に翻訳なさい。
「商品説明には、USB-TypeAで5Vの出力機能を有すると書いてある。
送られてきた製品の箱にもその記載がある(写真参照)
しかし、送られてきた製品には出力ポートがない。(写真参照)」

返金金額欄は現在の販売価格557円だったので、購入金額の300円に減額しました。
受け付けましたのダイアログ
中国への返送は300円を超すだろうなとは思ってたが、案の定「返品は要りません」とのこと。
以前アマゾンでインチキ時計を返品した際にもそうなったのを思い出した。

サイド購入履歴を確認すると「紛争終了」となっていた。
さて、いつ頃口座へ振り込まれるのか?



メールが来ておった。数日間振込にかかるとある。
そりゃそうだろう。以前Paypal+eBayでの返金なんざ2ヶ月もかかったことを考えると良心的だわ。


もう一本メールも。
この画面の下にある「注文を確認する」も踏んでくれと。
メールに対するクリックは嫌だが今回はしょうがないか。


=====================
 以下は到着後数時間で返品開始した状況
 返品できない!ので1日待つことにした。 
=====================
まずは業者説明用の写真を作成

まずこの「吹き出し」が見つからんわ。日本のサイトはこんなことないな。

異議を選択する。


何を「送る」のか全然わからん。あほか
多分、異議を申し立てる物件の「選択」なんだろう。
何回やっても埒が明かないので、しょうがないのでこれを選んでみた。


で、これを選ぶ。

脈絡がない流れ、順番が良くわからん。
しょうがないので「返金を申請する」をクリックしてみた。

ここがクソ
この二択しかないので、一応到着してるから上側を選ぶ。

するとこれだ。
何やってもここで堂々巡り。

返品できるはずだろ?

業者とのトークも意味がわからん宣伝モードに入ってしまった。
到着後2時間程度での返品要求だからな、と猶予を与えてみることにした。

明日まで待って、もう一回やってみる。


TD4を回路シミュレータで(メモ)

2024年04月15日 00時59分42秒 | マイコン(ESP32・Arduino等)


あちこちで基盤+部品を売っているけど
もうはんだ付けは、目が見えないので辛過ぎる。
絶対一発では動かないだろうし、それをチェックする能力もない。

でも死ぬまで一回はTD4のLEDのチカチカはやってみたいよねぇ・・・

そんな私に朗報
探したらありました。

シミュレータは「CircuitMaker」
使い方の紹介
しかし古いソフトだなぁ

回路図は
データがDLできます。



ATtiny85で赤外線リモコン信号を受けてLチカ

2024年04月13日 23時30分12秒 | マイコン(ESP32・Arduino等)


苦節数日、やっとTiny:bit付属の赤外線リモコンでATtiny85に接続したLEDの点灯制御ができるようになった!
「TinyIRReceiver.hpp」ではPB2がデフォルトの受信端子らしいので、すなおにここに繋いだ。(良くはわかっていないのだが・・)
LEDはPB4番にした。
一発で稼働。(嬉し泣き)

【参考】
ライブラリを使わず直接パルスを読む動画はこちら
ソースコードはこちら

=========================
/*
ATtiny85 にIRセンサーを付けて、Tiny:bitリモコンの
 電源が押されたら(0x00):点灯
 点灯が押されたら(0x02):消灯
  LEDはPB4に接続
  IRはPB2に接続
*/
#include "TinyIRReceiver.hpp" // include the code

#define IR_RECEIVE_PIN PB2
int LED_pin = PB4;

void setup() {
pinMode(LED_pin, OUTPUT);
digitalWrite(LED_pin, LOW);
if (!initPCIInterruptForTinyReceiver()) {
for (int i=0; i<=30; i++){ // ERROR Blink
digitalWrite(LED_pin, HIGH);
delay(200);
digitalWrite(LED_pin, LOW);
delay(200);
digitalWrite(LED_pin, HIGH);
}
}
}

int cmd = 0xFF;

void loop() {
if (TinyIRReceiverData.justWritten) {
TinyIRReceiverData.justWritten = false;
cmd = TinyIRReceiverData.Command;
if (cmd == 00){
digitalWrite( LED_pin, HIGH );
}
if (cmd == 02){
digitalWrite( LED_pin, LOW);
}
}
}



各種赤外リモコンのボタン:値

2024年04月13日 19時32分13秒 | マイコン(ESP32・Arduino等)
先に作った受信プログラムを使って、100均のリモコン、Tiny:bitリモコンなどの発する信号を一覧にまとめてみた。


左から
1 Tiny:bitに付属
2 ダイソーのカラーLEDのライト(330円)
3 ダイソーの単色LEDライト(330円)
4 NEC製シーリングライト(CH1/CH2の2種類がある)
  このリモコンは今回のライブラリではすべてパリティエラーとなっている。

以下は16進です。(C系の「0x」って嫌い。00h系です)

 Tiny:bit付属のリモコン

 ダイソーの単色リモコン

 ダイソーのフルカラーリモコン

  NECリモコン(CH1)

  NECリモコン(CH2)

でした。





ArduinoUnoで赤外線送受信(IRrecv TinyReceiver使用)

2024年04月13日 18時37分52秒 | マイコン(ESP32・Arduino等)
ATtiny85を赤外線コントロールしたいのだが、その前に各リモコンがどんな信号を出しているかを調べた。
今回は「IRrecv」ライブラリをインスコ時に付いてくる「TinyReceiver」サンプルを使ってみた。



赤外ユニット、向かって左からGND、5V、信号線
信号線はデジタル2Pinへ接続した。
「PinDefinitionsAndMore.h」を見ると各チップごとのPinアサインが記述されてるが・・良くわからん。
一般的には、受信はD2Pin、送信はD3Pinのようです。


今回はArduinoで動くことを確認するためなので、マクロを外した以下のソースで動かした。

========= ArduinoUnoで動いたソース ====================
#include "Arduino.h"
#include "PinDefinitionsAndMore.h" 
#include "TinyIRReceiver.hpp" // include the code

void setup() {
Serial.begin(115200);
Serial.println(F("START " __FILE__ " from " __DATE__ "\r\nUsing library version " VERSION_TINYIR));
if (!initPCIInterruptForTinyReceiver()) {
Serial.println(F("No interrupt available for pin " STR(IR_RECEIVE_PIN)));
}
Serial.println(F("Ready to receive NEC IR signals at pin " STR(IR_RECEIVE_PIN)));
}

void loop() {
if (TinyIRReceiverData.justWritten) {
TinyIRReceiverData.justWritten = false;
Serial.print(F("Address=0x"));
Serial.print(TinyIRReceiverData.Address, HEX);
Serial.print(' ');
Serial.print(F("Command=0x"));
Serial.print(TinyIRReceiverData.Command, HEX);
if (TinyIRReceiverData.Flags == IRDATA_FLAGS_IS_REPEAT) {
Serial.print(F(" Repeat"));
}
if (TinyIRReceiverData.Flags == IRDATA_FLAGS_PARITY_FAILED) {
Serial.print(F(" Parity failed"));
}
Serial.println();
}
/*
* Put your code here
*/
}
void handleReceivedTinyIRData() {
printTinyReceiverResultMinimal(&Serial);
}

========================
  Tiny:bitリモコンでLEDを点灯させるソース
========================
/*
ArduinoUno用 IR受信プログラム 2024/4/13
   Tiny:bit付属のリモコンは、電源ボタンが00、点灯ボタンが02を送ってくる
   00を受けたら Pin3に繋いだLEDが点灯
   01を受けたら Pin3に繋いだLEDが消灯
   ※注意点
   作成時に「TinyIRReceiverData.Command」が初期化で00が入っていることから、cmd変数を作成し
   初期値にFFを入れておき、起動時には点灯しないようにするため。
   「TinyIRReceiverData.Command」から受け取った値を入れることにした。

*/
#include <Arduino.h>
#include "PinDefinitionsAndMore.h" // Set IR_RECEIVE_PIN for different CPU's
#include "TinyIRReceiver.hpp" // include the code

#define LED_pin 3

void setup() {
Serial.begin(115200);
Serial.println(F("START " __FILE__ " from " __DATE__ "\r\nUsing library version " VERSION_TINYIR));
if (!initPCIInterruptForTinyReceiver()) {
Serial.println(F("No interrupt available for pin " STR(IR_RECEIVE_PIN)));
}
Serial.println(F("Ready to receive NEC IR signals at pin " STR(IR_RECEIVE_PIN)));
pinMode( LED_pin, OUTPUT );
}

int cmd = 255;

void loop() {
if (TinyIRReceiverData.justWritten) {
TinyIRReceiverData.justWritten = false;
Serial.print(F("Address=0x"));
Serial.print(TinyIRReceiverData.Address, HEX);
Serial.print(' ');
Serial.print(F("Command=0x"));
cmd = TinyIRReceiverData.Command;
Serial.print(cmd, HEX);
if (TinyIRReceiverData.Flags == IRDATA_FLAGS_IS_REPEAT) {
Serial.print(F(" Repeat"));
}
if (TinyIRReceiverData.Flags == IRDATA_FLAGS_PARITY_FAILED) {
Serial.print(F(" Parity failed"));
}
Serial.println();
}
/*
* Put your code here
*/
if (cmd == 00){
digitalWrite( LED_pin, HIGH );
}
if (cmd == 02){
digitalWrite( LED_pin, LOW);
}





}

void handleReceivedTinyIRData() {
printTinyReceiverResultMinimal(&Serial);
}