2018年8月2日木曜日
2018年7月26日木曜日
STM32F103C8T6をスリープ状態にする
最近、天気が暑くて、「外の気温、何度かな?」と思う時が多くなりました。
そこで、外の気温を測って、室内に表示する「無線温度計」を自分で作ってみました。
STM32F103C8T6の開発ボードを使いましたが、一番の問題は、
「マイクロコントローラーをスリープ状態にする」ことです。
色々試してみました。
このstm32sleepというライブラリーも使ってみましたが、
どうもうまく行けませんでした。
そのライブラリーのもとをみて、更に探し、
tomtorさんのコードを見つかりました。
このコードの関数を使って、何とかできました!
使い方は簡単です。
Arduinoコードのloop()の一番最後のところに、
mdelay(1000);
を追加するだけで、1000ミリ秒をスリープさせます。
あ、Arduino IDEに使えるSTM32 Coreが必要ですけどね。
使っているのが、rogerclarkmelbourneさんのArduino_STM32です。
ちなみに、STMicroelectronics社の正式なものもあります。
ここから、tomtorさんのコードの抜粋です。
そこで、外の気温を測って、室内に表示する「無線温度計」を自分で作ってみました。
STM32F103C8T6の開発ボードを使いましたが、一番の問題は、
「マイクロコントローラーをスリープ状態にする」ことです。
色々試してみました。
このstm32sleepというライブラリーも使ってみましたが、
どうもうまく行けませんでした。
そのライブラリーのもとをみて、更に探し、
tomtorさんのコードを見つかりました。
このコードの関数を使って、何とかできました!
使い方は簡単です。
Arduinoコードのloop()の一番最後のところに、
mdelay(1000);
を追加するだけで、1000ミリ秒をスリープさせます。
あ、Arduino IDEに使えるSTM32 Coreが必要ですけどね。
使っているのが、rogerclarkmelbourneさんのArduino_STM32です。
ちなみに、STMicroelectronics社の正式なものもあります。
#include <libmaple/pwr.h>
#include <libmaple/scb.h>
#include <RTClock.h>
// Define the Base address of the RTC registers (battery backed up CMOS Ram), so we can use them for config of touch screen or whatever.
// See http://stm32duino.com/viewtopic.php?f=15&t=132&hilit=rtc&start=40 for a more details about the RTC NVRam
// 10x 16 bit registers are available on the STM32F103CXXX more on the higher density device.
#define BKP_REG_BASE ((uint32_t *)(0x40006C00 + 0x04))
RTClock rt(RTCSEL_LSI, 39); // 1 milli second alarm
void storeBR(int i, uint32_t v) {
BKP_REG_BASE[2*i]= (v << 16);
BKP_REG_BASE[2*i+1]= (v & 0xFFFF);
}
uint32_t readBR(int i) {
return ((BKP_REG_BASE[2*i] & 0xFFFF) >> 16) | (BKP_REG_BASE[2*i+1] & 0xFFFF);
}
void sleepMode(bool deepSleepFlag)
{
// Clear PDDS and LPDS bits
PWR_BASE->CR &= PWR_CR_LPDS | PWR_CR_PDDS | PWR_CR_CWUF;
// Set PDDS and LPDS bits for standby mode, and set Clear WUF flag (required per datasheet):
PWR_BASE->CR |= PWR_CR_CWUF;
// Enable wakeup pin bit.
PWR_BASE->CR |= PWR_CSR_EWUP;
SCB_BASE->SCR |= SCB_SCR_SLEEPDEEP;
// System Control Register Bits. See...
// http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0497a/Cihhjgdh.html
if (deepSleepFlag) {
// Set Power down deepsleep bit.
PWR_BASE->CR |= PWR_CR_PDDS;
// Unset Low-power deepsleep.
PWR_BASE->CR &= ~PWR_CR_LPDS;
} else {
adc_disable(ADC1);
adc_disable(ADC2);
#if STM32_HAVE_DAC
dac_disable_channel(DAC, 1);
dac_disable_channel(DAC, 2);
#endif
// Unset Power down deepsleep bit.
PWR_BASE->CR &= ~PWR_CR_PDDS;
// set Low-power deepsleep.
PWR_BASE->CR |= PWR_CR_LPDS;
}
// Now go into stop mode, wake up on interrupt
asm(" wfi");
// Clear SLEEPDEEP bit so we can use SLEEP mode
SCB_BASE->SCR &= ~SCB_SCR_SLEEPDEEP;
}
uint32 sleepTime;
void AlarmFunction () {
// We always wake up with the 8Mhz HSI clock!
// So adjust the clock if needed...
#if F_CPU == 8000000UL
// nothing to do, using about 12 mA
#elif F_CPU == 16000000UL
rcc_clk_init(RCC_CLKSRC_HSI, RCC_PLLSRC_HSE , RCC_PLLMUL_2);
#elif F_CPU == 48000000UL
rcc_clk_init(RCC_CLKSRC_HSI, RCC_PLLSRC_HSE , RCC_PLLMUL_6);
#elif F_CPU == 72000000UL
rcc_clk_init(RCC_CLKSRC_HSI, RCC_PLLSRC_HSE , RCC_PLLMUL_9); // 72MHz => 48 mA -- datasheet value => between 40 and 41mA
#else
#error "Unknown F_CPU!?"
#endif
extern volatile uint32 systick_uptime_millis;
systick_uptime_millis+= sleepTime;
}
void mdelay(int n, bool mode= false)
{
sleepTime= n;
time_t nextAlarm = (rt.getTime() + n); // Calculate from time now.
rt.createAlarm(&AlarmFunction, nextAlarm);
sleepMode(mode);
}
#define RCC_CFGR_HPRE_DIV1 0x00000000U
#define RCC_CFGR_HPRE_DIV2 0x00000080U
#define RCC_CFGR_HPRE_DIV4 0x00000090U
#define RCC_CFGR_HPRE_DIV8 0x000000A0U
#define RCC_CFGR_HPRE_DIV16 0x000000B0U
#define RCC_CFGR_HPRE_DIV64 0x000000C0U
#define RCC_CFGR_HPRE_DIV128 0x000000D0U
#define RCC_CFGR_HPRE_DIV256 0x000000E0U
#define RCC_CFGR_HPRE_DIV512 0x000000F0U
void msleep(uint32_t ms)
{
uint32_t start= rt.getTime();
while (rt.getTime() - start < ms) {
asm(" wfi");
}
}
2018年7月24日火曜日
イージス・アショア、増額!?
イージス・アショア
2基2500億円 2~3割増額
予算を組んでいる防衛省、何やってんのと言いたいです。
ありえません。
予算を立てた時の見積が甘かったのか、
それとも見落としたものがあったのか?
なんか原因があってこのような問題が起きます。
私も昔、予算にかかる仕事をしました。
だから言えます。
あり得ません。
税金を扱う公務員として、あとになって「予算が足りない」というものは罪とも言えます。
最初にコストが低いと思って、契約を交わし、
後からコストが増えたと言って。。。
実際のコストに対して意思決定していないから、
最終値段が適切なのか、受容できるのか、
誰が判断するの?
だれがミスを起こしたのか?
防衛省?ロッキード・マーチン?
防衛省の職員なら、重大過失で処分すべき。
ロッキードなら、契約を見直すべき。
簡単に容認するのがダメです。
ちなみに、ロッキードの顧問に、元航空自衛隊の空将がいます。
これが意思決定に影響を与えたら、また重大な事件になります。。。
2基2500億円 2~3割増額
予算を組んでいる防衛省、何やってんのと言いたいです。
ありえません。
予算を立てた時の見積が甘かったのか、
それとも見落としたものがあったのか?
なんか原因があってこのような問題が起きます。
私も昔、予算にかかる仕事をしました。
だから言えます。
あり得ません。
税金を扱う公務員として、あとになって「予算が足りない」というものは罪とも言えます。
最初にコストが低いと思って、契約を交わし、
後からコストが増えたと言って。。。
実際のコストに対して意思決定していないから、
最終値段が適切なのか、受容できるのか、
誰が判断するの?
だれがミスを起こしたのか?
防衛省?ロッキード・マーチン?
防衛省の職員なら、重大過失で処分すべき。
ロッキードなら、契約を見直すべき。
簡単に容認するのがダメです。
ちなみに、ロッキードの顧問に、元航空自衛隊の空将がいます。
これが意思決定に影響を与えたら、また重大な事件になります。。。
2018年7月19日木曜日
DIY火炎センサーを購入
先日、Aliexpressから、DIY火炎センサーキットを購入しました。
取説など、何もないまま届きました。
一個ずつの部品なので、基盤を見れば何はどこに入るのがわかりますが、
抵抗は五つもあるので、どれがどことわかりません。
サイトを見ると、
R1: 10K
R2: 10K~30K
R3: 1K
R4: 10K
R5: 1K
とりあえずはんだ付けして、
こうなりました。
電源(5V)をつなげば、ブザーが鳴りました。
「起動しました」との印?
真ん中のボタンを押せば音は消えます。
でも、ストーブに火をつけても、音はならないから、
本当に正常に動いているかどうか、わかりません。
ま、今度時間あるとき、また色々試します。
購入したい人は:
https://www.aliexpress.com/item/DC-5V-Infrared-Flame-Sensor-Module-Suite-Warehouse-IR-Alarm-Kit-Electronic-DIY-Kits-Flame-Detection/32832557194.html
取説など、何もないまま届きました。
一個ずつの部品なので、基盤を見れば何はどこに入るのがわかりますが、
抵抗は五つもあるので、どれがどことわかりません。
サイトを見ると、
R1: 10K
R2: 10K~30K
R3: 1K
R4: 10K
R5: 1K
とりあえずはんだ付けして、
こうなりました。
電源(5V)をつなげば、ブザーが鳴りました。
「起動しました」との印?
真ん中のボタンを押せば音は消えます。
でも、ストーブに火をつけても、音はならないから、
本当に正常に動いているかどうか、わかりません。
ま、今度時間あるとき、また色々試します。
購入したい人は:
https://www.aliexpress.com/item/DC-5V-Infrared-Flame-Sensor-Module-Suite-Warehouse-IR-Alarm-Kit-Electronic-DIY-Kits-Flame-Detection/32832557194.html
2018年7月13日金曜日
MPU9250付のM5Stack Grayを紹介
M5Stack Grayは先日紹介したM5Stack Basic CoreのV2です。
見た目は同じ、ただ色が灰色になっただけ。
中身もほぼ一緒ですが、
GrayはMPU9250モーションセンサーがついています。
後はBasicと同じです。
ちなみに、LoRAモジュールはこんな感じです。
最近はDRV8825ステッパードライバー(x3)のモジュールも出したみたいです。

見た目は同じ、ただ色が灰色になっただけ。
中身もほぼ一緒ですが、
GrayはMPU9250モーションセンサーがついています。
後はBasicと同じです。
ちなみに、LoRAモジュールはこんな感じです。
最近はDRV8825ステッパードライバー(x3)のモジュールも出したみたいです。
2018年7月12日木曜日
ESP32 DevKitCクローン
今日はこのESP32の開発ボードを紹介します。
これは、一般的なESP32 DevKitCの中国クローンです。
一般的なESP32モジュールESP-WROOM-32が載っていて、
プラス4Mbのフラッシュメモリもあります。
ESP32の全てのIOピンにアクセスでき、
USB-to-serialのICもあり、USBでPCとつながり、Arduino IDEを使ってプログラムできます。
ESP32についての日本語情報は、ここから入手できます。
プログラムは、
ESP-IDF
Arduino-ESP32
MicroPython
で作れます。
ESP-IDFはESP32の機能を最大限活用できますが、
C/C++に慣れていない方にとってはちょっと難しいです。
Arduino-ESP32なら、Arduinoの開発環境でプログラム作れます。
開発は少ししやすくなります。
MicroPythonはPython言語の実装、
より「ハイレベル」のプログラミング言語で開発ができます。
でも、RAMが少ないと、ちょっと制限されている感じがします。
普通のESP32モジュールは320KbのRAMしかありません。
MicroPythonをもっと活用したいなら、PSRAM付のモジュールを使いましょう。
これは、一般的なESP32 DevKitCの中国クローンです。
一般的なESP32モジュールESP-WROOM-32が載っていて、
プラス4Mbのフラッシュメモリもあります。
ESP32の全てのIOピンにアクセスでき、
USB-to-serialのICもあり、USBでPCとつながり、Arduino IDEを使ってプログラムできます。
プログラムは、
ESP-IDF
Arduino-ESP32
MicroPython
で作れます。
ESP-IDFはESP32の機能を最大限活用できますが、
C/C++に慣れていない方にとってはちょっと難しいです。
Arduino-ESP32なら、Arduinoの開発環境でプログラム作れます。
開発は少ししやすくなります。
MicroPythonはPython言語の実装、
より「ハイレベル」のプログラミング言語で開発ができます。
でも、RAMが少ないと、ちょっと制限されている感じがします。
普通のESP32モジュールは320KbのRAMしかありません。
MicroPythonをもっと活用したいなら、PSRAM付のモジュールを使いましょう。
2018年7月11日水曜日
M5Stack Basic Coreを紹介
中国のスタートアップM5Stack社が出した初代ESP32製品がこのM5Stack Basic Coreです。
色は黒。
このようなケースで来ました。
簡単な取説書も入っています。
機能として、ESP32マイクロコントローラーに、
2インチTFT
1Wスピーカー
microSDカードリーダー
150mAhバッテリー
2x15のIOピン
Groveコネクター
3つのユーザボタン
がついています。ESP32はWiFiとBluetooth機能がついています。
基本的なArduinoスケッチもGitHubから入手できます。
https://github.com/m5stack/M5Stack
M5Stack用ライブラリーへのリンクも載っています。
Arduino IDEにESP32の設定が既に完了している方なら、そのまま使えます。
ボードマネージャーからM5Stackを選べば大丈夫です。
ESP32を使ってIoT開発を行う方なら、とても便利なものです。
TFTがありますから、PCなくても文字・絵の出力ができます。
microSDカードへの読み書きもでき、データの保存に困りません。
そして、バッテリーが付いていて、持ち運びやすいです。
基本的な入力としてボタンが使えます。
本当に便利です。
そして、色々な機能モジュールも別売りで、
自由に拡張できます。
例えば、LoRAを試したい時はLoRAモジュールを購入、
GPS機能が必要ならGPSモジュールを購入。
自分の試作を作るためのPCB(Prototypeモジュール)もあります。
購入を考えているかたは、スイッチサイエンスから購入できます。
macsbug様が色々作っているみたいです。試作品やスケッチを見るとかなり面白そうです。
一応、私もGPSモジュールを使って、自宅までの直線距離を分かるようなスケッチも試してみました。
M5Stack社が結構頻繁にM5Stack用の新モジュールを出しています。
公式SNSから新商品や開発中のものについての情報が入手できます。
M5Stack社のFacebookページ
M5Stack社のTwitter
色は黒。
このようなケースで来ました。
簡単な取説書も入っています。
機能として、ESP32マイクロコントローラーに、
2インチTFT
1Wスピーカー
microSDカードリーダー
150mAhバッテリー
2x15のIOピン
Groveコネクター
3つのユーザボタン
がついています。ESP32はWiFiとBluetooth機能がついています。
基本的なArduinoスケッチもGitHubから入手できます。
https://github.com/m5stack/M5Stack
M5Stack用ライブラリーへのリンクも載っています。
Arduino IDEにESP32の設定が既に完了している方なら、そのまま使えます。
ボードマネージャーからM5Stackを選べば大丈夫です。
ESP32を使ってIoT開発を行う方なら、とても便利なものです。
TFTがありますから、PCなくても文字・絵の出力ができます。
microSDカードへの読み書きもでき、データの保存に困りません。
そして、バッテリーが付いていて、持ち運びやすいです。
基本的な入力としてボタンが使えます。
本当に便利です。
そして、色々な機能モジュールも別売りで、
自由に拡張できます。
例えば、LoRAを試したい時はLoRAモジュールを購入、
GPS機能が必要ならGPSモジュールを購入。
自分の試作を作るためのPCB(Prototypeモジュール)もあります。
購入を考えているかたは、スイッチサイエンスから購入できます。
macsbug様が色々作っているみたいです。試作品やスケッチを見るとかなり面白そうです。
一応、私もGPSモジュールを使って、自宅までの直線距離を分かるようなスケッチも試してみました。
M5Stack社が結構頻繁にM5Stack用の新モジュールを出しています。
公式SNSから新商品や開発中のものについての情報が入手できます。
M5Stack社のFacebookページ
M5Stack社のTwitter
登録:
投稿 (Atom)












