エントリー

カテゴリー「電子工作」の検索結果は以下のとおりです。

【技術メモ】Lubuntu 18.04 のモニター設定でハマった記録【Linux】

化石パソコンなんで、ほとんど需要はないと思うけど、自分用にメモしておく。

工人舎SH8をSSD化してみたが、LinaxのLubuntuのインストールでハマった。

20210511101726.png

現象を確認してみる

USBからインストールしたまでは良かったが、モニターがデフォルトの800×600のまま変更できない現象が発生。

 システムの設定でモニタを1024×600に設定すると、再起動時にブラックアウトして全く先に進めなくなる。

しばらく放置(30分ほど)するとlogin画面が現れるが、ログインするとブラックアウト。

あれこれ試す

電源投入後にEscキーを押してリカバリーモードで起動して、GUIfilsafaxしてみたけど、全く効果なし。もちろんほかのコマンドも試したけどダメ。
USBから起動すると問題なく起動するので、ソフトウェアの問題であることは間違いない。

ブラックアウトしたあと、alt+Ctr+F1でCUIモードを試すと入れた。
単純にGUIが表示されないだけと断定。

これまで、あれこれ弄くったので、再インストールすることにした。

再インストール後に、tarminalを開いて $xranr コマンドで状態を調べる。

$ xrandr

20210511101719.png

入力後に出力された情報

Screen 0: minimum 8 x 8, current 800 x 600, maximum 32767 x 32767
LVDS1 connected primary 800x600+0+0 (normal left inverted right x axis y axis) 433mm x 271mm
   1024x600      60.00 +
   1024x576      59.82  
   960x540       59.63    59.82  
   800x600       60.32    56.25  
   864x486       59.92    59.57  
   640x480       59.94  
   720x405       59.51    58.99  
   640x360       59.84    59.32  
   512x300       60.00  
TV1 disconnected (normal left inverted right x axis y axis)
TV2 disconnected (normal left inverted right x axis y axis)
TV3 disconnected (normal left inverted right x axis y axis)
TV4 disconnected (normal left inverted right x axis y axis)
VGA1 disconnected (normal left inverted right x axis y axis)
VGA2 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)
  1024x600 (0x4b) 45.000MHz +HSync +VSync
        h: width   800 start 1034 end 1064 total 1200 skew    0 clock  37.50KHz
        v: height  600 start  601 end  606 total  625           clock  60.00Hz

 1024x600      60.00 + と表示されているので、ドライバーは問題なく読み込んでいるようだ。
xrandrのGUIを疑い始める。

Tarminalから次のコマンドを入力してみる。

sudo xrandr --output LVDS1 --mode 1024x600

記述では auto でも良いようだが、あえてSH8の標準サイズを指定してみた。

1024×600表示になった

20210511101721.png

うまくいきました。

しかし、再起動すると800×600に逆戻り・・・・

プロファイルへの書き込みが必要みたい。xprofileに書けばいいのかな。
上記のコマンドで1024×600へ変更した後にシステムからXrandrモニタの設定を覗くと、設定が1024×600に変更されてたので「保存」ボタンをクリック。

20210511102805.png

xprofileが上書きされたみたい。

再起動すると、ログイン後に1024×600になりました~ 

前にインストールした時はこんなことは無かったのに何で??? ネットに接続しないでインストールしたのに??

メモ

スタートアップで設定すると間違いないみたい。
そのうちやってみよう。

https://wiki.archlinux.jp/index.php/Xrandr

ヒント: KDM と GDM には X が初期化されたときに実行されるスタートアップスクリプトが存在します。GDM の場合、スクリプトは /etc/gdm/ にあり、KDM の場合、スクリプトは /usr/share/config/kdm/Xsetup、SDDM の場合、/usr/share/sddm/scripts/Xsetup です。この方法は root 権限を必要とし、システムの設定ファイルを弄る必要がありますが、起動プロセスでは xprofile よりも早く設定が適用されます。

参考サイト

【Ubnutu】リカバリーモードで起動する方法【18.04】

【自作タイムラプス】ESP32-CAMをDeepSleepモードで省電力化してみた【Time Lapse】

自作のタイムラプスカメラの稼働時間延長にトライしてみた。
arduinoにはDeepSleepモードがあって、待機電力をかなり減らせるみたい。

20210227110453.jpg

普通だと平均80mAほど消費しているようですが、DeepSleepを使うと10~150μA程度に消費電力を抑えることができるそうです。
10マイクロから150マクロなんてほとんど流れてない状態みたいですね。

20210301121545.png

現在使用中のコードはこちら

【ESP32-CAM】タイムラプス用のカメラを自作してみた。【DIY】

コードの考察

DeepSleepのコードについては、ArduinoIDEにスケッチのサンプルがある。

ファイル → スケッチ例 → ESP32 → Deepsleep 

いくつかサンプルがあるが、ここではTimerWakeupを選択する。

62行目

esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);

TIME_TO_SLEEP * uS_TO_S_FACTOR がスリープ時間になっている。
1000000Usが1秒なので、180*1000000として3分となる。

esp_deep_sleep_start();

88行目でDeepSleepがスタートする。

DeepSleepで変数が消える

 DeepSleepは半分リセットみたいなものなので、Void Loop() を使わずにSetup()で起動する。

 ここで困るのが、変数が消えてしまうこと。変数が消えてしまうと画像のファイル名もリセットされてしまい起動するたびにファイルが上書きされてしまう。
適当にテキストファイルを作ってファイル番号をRead、Writeさせる方法も考えたが、少し複雑になるのとSDの消費電力を考慮して見送った。

RTC_DATA_ATTR を使ってみる

RTC_DATA_ATTR を使うことで、ESP32のメモリーに変数を書き込むことができるようになるので、電源が落ちない限り保持することが可能になるみたい。

 これにより、電源を切っても保持されるEEPROMで親番のファイル名を保持し、子番はRTC_DATA_ATTRで電源が切れるまで保持することにした。

 こうすることでファイルが上書きされることを防ぐ。ただし、この方法だと256×999枚を超えるとP001_001.jpgから上書きされる。

できあがったタイムラプスのコード

#include "esp_camera.h"
#include "soc/soc.h"
#include "soc/rtc_cntl_reg.h"
#include "SD.h"

//SD Card Pins
#define sd_sck 14
#define sd_mosi 15
#define sd_ss 13
#define sd_miso 2

// read and write from flash memory
#include <EEPROM.h>

// define the number of bytes you want to access
#define EEPROM_SIZE 1
#define PWDN_GPIO_NUM 32
#define RESET_GPIO_NUM -1
#define XCLK_GPIO_NUM 0
#define SIOD_GPIO_NUM 26
#define SIOC_GPIO_NUM 27
#define Y9_GPIO_NUM 35
#define Y8_GPIO_NUM 34
#define Y7_GPIO_NUM 39
#define Y6_GPIO_NUM 36
#define Y5_GPIO_NUM 21
#define Y4_GPIO_NUM 19
#define Y3_GPIO_NUM 18
#define Y2_GPIO_NUM 5
#define VSYNC_GPIO_NUM 25
#define HREF_GPIO_NUM 23
#define PCLK_GPIO_NUM 22

RTC_DATA_ATTR int myF_No = 0;
RTC_DATA_ATTR int myS_No = 0;

char myFileName_str1[4];
char myFileName_str2[4];

void setup()
{
WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0);

Serial.begin(115200);
delay(10);

camera_config_t config;
config.ledc_channel = LEDC_CHANNEL_0;
config.ledc_timer = LEDC_TIMER_0;
config.pin_d0 = Y2_GPIO_NUM;
config.pin_d1 = Y3_GPIO_NUM;
config.pin_d2 = Y4_GPIO_NUM;
config.pin_d3 = Y5_GPIO_NUM;
config.pin_d4 = Y6_GPIO_NUM;
config.pin_d5 = Y7_GPIO_NUM;
config.pin_d6 = Y8_GPIO_NUM;
config.pin_d7 = Y9_GPIO_NUM;
config.pin_xclk = XCLK_GPIO_NUM;
config.pin_pclk = PCLK_GPIO_NUM;
config.pin_vsync = VSYNC_GPIO_NUM;
config.pin_href = HREF_GPIO_NUM;
config.pin_sscb_sda = SIOD_GPIO_NUM;
config.pin_sscb_scl = SIOC_GPIO_NUM;
config.pin_pwdn = PWDN_GPIO_NUM;
config.pin_reset = RESET_GPIO_NUM;
config.xclk_freq_hz = 20000000;
config.pixel_format = PIXFORMAT_JPEG;

config.frame_size = FRAMESIZE_VGA; //UXGA|SXGA|XGA|SVGA|VGA|CIF|QVGA|HQVGA|QQVGA
config.jpeg_quality = 10;
config.fb_count = 1;

esp_err_t err = esp_camera_init(&config);

if (err != ESP_OK) {
Serial.printf("Camera init failed with error 0x%x", err);
delay(1000);
ESP.restart();
}

// LED Pin Mode
pinMode(33, OUTPUT);
digitalWrite(33,LOW);
  delay (500);

camera_fb_t * fb = NULL;

// Take Picture with Camera

Serial.println(" ");
  Serial.println("Take Picture ");

fb = esp_camera_fb_get();

// Path where new picture will be saved in SD Card
Serial.println("Save SD Card");

// Get File Name
if (myS_No == 0 || myS_No == 999){

// initialize EEPROM with predefined size

EEPROM.begin(EEPROM_SIZE);
myF_No = EEPROM.read(0) + 1;
EEPROM.write(0, myF_No);
EEPROM.commit();

myS_No = 1;

}else{

myS_No = myS_No + 1;

}

sprintf(myFileName_str1, "%03d",myF_No);
sprintf(myFileName_str2, "%03d",myS_No);

String path = "/p" + String(myFileName_str1)+"_"+
String(myFileName_str2) +".jpg";

Serial.printf("Picture file name: %s\n", path.c_str());
SPI.begin(sd_sck, sd_miso, sd_mosi, sd_ss);
SD.begin(sd_ss);

File file = SD.open(path.c_str(), FILE_WRITE);
file.write(fb->buf, fb->len);

file.close();

esp_camera_fb_return(fb);
Serial.println("complete");

digitalWrite(33,HIGH);

// 1000000u秒 →1秒
esp_sleep_enable_timer_wakeup(180*1000000);
Serial.println("Deep Sleep Start.");
Serial.println(" ");

esp_deep_sleep_start();

}

void loop() {

}

従来のタイムラプスと比較してみた

 微量の電流を計る機材がないため、USBテスターで調べてみた。
従来のプログラムだと待機時に0.02Aを示していた。

20210227114649.jpg

今回のプログラムだと0.00Aと表示された。数値的にはどの程度の電流が流れているかは分からないが、明らかに消費電力が抑えれていることが分かる。

20210227114648.jpg

今後、稼働時間を測定してみたい。

参考サイト

【仕事帰りキャンプ】キャンプでもつ鍋を食ってみた【22張目】

仕事帰りのキャンプスタイルなので、準備はスマート。
解放されたのが19時とちょっと遅め。

だいぶ暖かくなってきたので、簡単な風除けにタープを強力マグネットで固定。
フェアハンドの偽ランプもいい味を出してくれます。
この夜はすでに1人のキャンパーが野営してました。

20210327141759.jpg

今晩のお品書き

 残念ながらスーパーの刺身コーナーも品薄でしたが、なんとか伊豆産の真鯛の刺身をゲットできました。

 まずはビールで乾杯。やっぱり鯛の刺身は少し時間が経った方がねっとりとした食感と歯触りがイイね。

20210327141800.jpg

メインディッシュの仕込みをしつつ、あっという間に1本開いてしまったw

続いては北雪さんの金星を熱燗でいただきます。ダイソーメスティンでお湯を沸かして金星を入浴させる。

20210327141801.jpg

左手に見えるのはダイソーの300円LEDライトを充電式に改造したもの。

日本酒と刺身の組み合わせは最高ですね。

20210327141802.jpg

メインディッシュの「モツ鍋」。出汁にキムチとニンニク増し増し。
唐辛子を追加して煮込む。
そして、ウマアアアアアアアア~ 辛さでお酒がすすみ過ぎた。

20210327141803.jpg

 残ったスープに豚ロースを投入。ほどよい脂が辛みスープとマッチして更に飲み過ぎた。

20210327141804.jpg

アマゾンプライムで映画を視聴しながら、箸をすすめる。

20210327141805.jpg

寝床はこちら

前回と違うエアマットを使ってみた。やっぱり、Hilanderさんのベッドの方が寝心地は良かった。

20210327143600.jpg

かさ張るのが難点だが、寝心地は圧倒的。

Newキャンプギアを持ちこんでみた

今回のキャンプには、以前に紹介したダイソーの300円LEDライトを持ちこんでみた。
明るさも十分で自立するので、かなり使い勝手が良い。折りたたんで壁に向けて点灯させると薄っすらとした明かりでちょうどいい。

20210327141806.jpg

電気毛布で朝まで爆睡。夜中に暑過ぎてスイッチ切ったった。

20210327141807.jpg

キャンプシーズン

 新緑のシーズンまでは景色も良いし、虫も来ない。
暑くもなく寒くもない。 最近は汁物ばっかりだな。

20210327141808.jpg

【100円ショップ】DAISOの300円LEDライトを改造してみた【ダイソー】

100円ショップのダイソーの300円LEDライトを改造してみた。

3WAYで使えるとのことで、300円のLEDライトにしては良くできている。
単三乾電池3本で約10時間使用できるようです。100円ショップの品質が高くなっていますね。

20210321141639.jpg

ダイソーライトをさっそく分解してみる

 4本のネジを外すと蓋が取れる。中身はシンプルな構造。
100円のLEDライトと同じ配線だった。コードはかなり細く、この辺からもコスト削減を意識しているんだろうな。

20210321141641.jpg

抵抗は1KΩが入ってた。単三乾電池3本の仕様のため、このままリチウムイオン電池の18650に置き換えても問題はない。

100円のLEDライトに比べて、スイッチの質が上がっていた。100円の物はスカスカで接触もあまり良くなかったが、300円のLEDライトは「カチッ」としていた。

20210321141640.jpg

拡散用の発光部には8つのLEDチップが乗ったモジュールが入っていた。

20210321144524.jpg

サーチライト用のチップは1WのLEDライトで放熱フィンが付いていた。

20210321141642.jpg

充電式に改造してみる

リチウムイオン18650をインストールするため、本体をカットしていく。

裏ブタの突起をカット。

20210321141643.jpg

電池の収納部をカットしてリチウムイオン電池18650をセットしてみた。

20210321151240.jpg

充電用チップはTP4056を使用。


 

このチップは本当に優秀。4.2V以上になると過充電防止で給電が中止されます。

20210321144525.jpg

B+、B-の端子が4つあるものにしてください。

配線する。抵抗はそのままだとショートするとマズいので伸縮チューブで保護しておきました。

20210321151239.jpg

グルーガンで配線の固定と絶縁処理。

20210321141644.jpg

裏から見るとこんな感じ。電池もグルーガンで固定。

20210321141645.jpg

完成そしてテスト点灯

 かなり明るいです。ただし、ダイソーの100円LEDの方が更に明るい。

自立して点灯できるのはポイントが高いです。これが意外と重要で、キャンプでテーブルの上に置けるって意外と便利。

20210321141646.jpg

この300円LEDライトは自立しながら、広く照らすこともできる。

20210321141648.jpg

サーチライトも1wLEDのハイパワー。

20210321141649.jpg

充電用の穴を空けてTP4056にアクセスできるようにしました。
充電中は赤ランプが点灯し、充電が完了するとランプが緑色に点灯します。

20210321141647.jpg

LEDライト改造シリーズ

 

【ESP32-CAM】自作タイムラプスカメラを安定化してみる【書き込みエラー】

ESP32-CAMを使って超省電力型のタイムラプス装置を作ってみたが、動作が安定しない。
500枚撮影してエラーが無いこともあるし、10枚撮影してエラーになることもある。
なんで?

20210207120851.jpg

奇妙なエラーコード

[E][camera.c:1049] camera_probe(): Detected camera not supported.
[E][camera.c:1249] esp_camera_init(): Camera probe failed with error 0x20004

ようするに、ESP32-CAMのカメラモジュールに対して「検出されたカメラはサポートされていません」ってことなんだけど、撮影できることもあるので何とも判断がつかない状況。

困ったときのgithub

この手の情報って日本語のサイトはあまりないので頼りになるのがgithubです。
全文英語表記ですが、翻訳機能と単語でなんとか読むことが可能。
世界中のESP32-CAM利用者が参加している。

電源周りを変更してみる

フォーラムの情報を見ると、ピンの設定でも起こるということだが、何度見てもピンの設定は間違っていないしそもそも撮影できないはず。

よって、怪しいのはESP32-CAMに接続されている、電源周りが怪しいようだ。
PCのUSB供給だと安定しないので、電源を別にするといいらしい。

20210207120852.jpg

昇圧モジュールで5.2vを確保。これならPCよりはるかに電源が安定するはず。

20210207120853.jpg

バッテリーはリチウムイオン電池の18650をセット。

結果

 何回かテストしているが、確実に前よりは動作は安定した。効果は出ていると言える。

どうも、deepsleepモードは復帰時の電源供給に問題があるようだ。撮影時間を短くして(とはいっても電池で1週間は持つと思われる)もsleepさせない方法を考えた方が良いのだろうか??

 

 

ページ移動

ユーティリティ

サイト内検索

twitter

ありがとうございます

新着画像

過去ログ

Feed