So-net無料ブログ作成
検索選択
-| 2017年03月 |2017年04月 ブログトップ

ESP8266(WeMOS)のハングアップをATTINY85で自動リセット

IMG_5217.JPG
WeMOSは長い時間動作させると突然停止してしまう事が多々あります。
ATTINY85でハートビートモニターし、動作しなくなった、WeMOSをリセットさせます。

void(* resetFunc) (void) = 0;//declare reset function at address 0
int a, a_pre = 0;
unsigned long response_time = 0, interval_time = 0;
void loop() {
digitalWrite(1, HIGH);
oled.clear();
oled.cursorTo( 0, 0 );
oled.printString("volt:");
// Volt=val/1023*(19.8+68.1)/19.8*3.3=val*0.0143
a_pre = a;
a = int(analogRead(A3) * 0.0032); //for 3.3V
char strSensorValue[5];
oled.printString(itoa(a, strSensorValue, 10));
//
if (a != a_pre)
{
response_time = millis();
char buffer[10];
oled.cursorTo(0, 1);
sprintf(buffer, "%lu", response_time);
oled.printString(buffer);
goToSleep ();
}
if (a == a_pre) {
oled.cursorTo(0, 1);
oled.printString("int");
interval_time = millis() - response_time;
char buffer[10];
oled.cursorTo(0, 2);
sprintf(buffer, "%lu", interval_time);
oled.printString(buffer);
goToSleep ();
if ( interval_time > 5000)
{
oled.clear();
oled.cursorTo(0, 0);
oled.printString("Reset");
digitalWrite(4, LOW);
switch_on = 0;
delay(1000);
digitalWrite(4, HIGH);
delay(10000);
response_time = millis();
}
}
//sleep
digitalWrite(1, LOW);
goToSleep ();
if (millis() > 30 * 24 * 60 * 60 * 1000) resetFunc();
}
void goToSleep ()
{
set_sleep_mode (SLEEP_MODE_PWR_DOWN);
noInterrupts (); // timed sequence coming up
// pat the dog
wdt_reset();
// clear various "reset" flags
MCUSR = 0;
// allow changes, disable reset, clear existing interrupt
watchdogRegister = bit (WDCE) | bit (WDE) | bit (WDIF);
// set interrupt mode and an interval (WDE must be changed from 1 to 0 here)
//watchdogRegister = bit (WDIE) | bit (WDP2) | bit (WDP1) | bit (WDP0); // set WDIE, and 2 seconds delay
watchdogRegister = bit (WDIE) | bit (WDP2) | bit (WDP1); // set WDIE, and 1 seconds delay
sleep_enable (); // ready to sleep
interrupts (); // interrupts are required now
sleep_cpu (); // sleep
sleep_disable (); // precaution
}

DS203(DSO QUAD)にアプリを追加

IMG_5216.JPG
DS QUAD DS203のアルミボディ版にアプリを入れてみた。
GAB_N2.hex
の方をUSBドライブにコピーします。

nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

ノート(Macbook12)のカメラ画像をVS2017(VB)でキャプチャー

NuGet.png
VB.NETをツールのNuGetでライブラリをインストールします。
AForge.Video
AForge.Video.DtrectShow
AForge.Video.Controls
FormにVideo.Sorce.Playerを貼り付けます(探すのに苦労しました。ツールボックスの中で検索するのが簡単。)ボタンを2個を貼り付けます。

Imports AForge.Video
Imports AForge.Video.DirectShow
Partial Public Class frmCapture
Private Sub btnStart_Click(sender As Object, e As EventArgs) Handles btnStart.Click
' ビデオキャプチャデバイスを選択するダイアログの生成
Dim var = New VideoCaptureDeviceForm()
' 選択ダイアログを開く
If var.ShowDialog(Me) = System.Windows.Forms.DialogResult.OK Then
VideoSourcePlayer1.VideoSource = var.VideoDevice
VideoSourcePlayer1.Start()
End If
End Sub
Private Sub btnCapture_Click(sender As Object, e As EventArgs) Handles btnCapture.Click
Dim video_bmp As Bitmap = VideoSourcePlayer1.GetCurrentVideoFrame()
video_bmp.Save("video.bmp")
End Sub
End Class

こんなに短いコードでキャプチャーできるなんて。

IDBOX オートレベリング

fan.jpg
オートレベリング用のヘッドファンケースです。稼動領域が一切変わらないので、そのまま30mmのファンケースとしても使用できます。
http://www.thingiverse.com/thing:2196849
からstlでダウンロード可。
ファンは標準の40mmから30mm*30mm*10mmに変更します。
ヒートベットのプレートガラスから、ステンレス板に変更が必要です。
http://asobimind.com/shop/
から、銅板1mm2枚とステンレス板0.8mmを購入しました。
センサーはLJ12A3-4-Zを使用します。

Arduinoのファームを書き換えますので、詳しくは、idboxのオートレベリングを参考にしてください。
https://deagostini.jp/community/mtp_bbs/detail.php?id=4292
IMG_5206.JPG

arduino ESP8266(WeMOS)でドライブレコーダー

IMG_5200.JPGIMG_5201.JPG
arduino ESP8266で何ができるか?
処理速度、ROMの容量は問題がないが、RAM不足により、画像処理は不可能に近い。
メリットは消費電力が少ないので、バッテリーで運用できること。

構成
WeMOS(ESP8266)
ArduCAM(CCD)カメラ
MicroSDカード
Gセンサー
GPS
USB電源制御
有機ELディスプレイ
12V電圧モニター
機能
ドライブレコーダー
パーキングモニター
WebServer
GセンサーでMail警報
外部LED点灯と外部カメラ電力制御
GPSで位置情報の取得

DeepLearning

deeplearning.jpg
DeepLearningは、python言語で深いライブラリで書かれています。windowsからは、使いにくいので、VS.NETでシンプルに作ってみました。
w1,w2,w3を画像で表示してみると、どんな処理がされているのか、想像できますよね。

-|2017年03月 |2017年04月 ブログトップ