チカラの技術

電子工作やプログラミング

日本全国の電子部品店マップを作成しました

こんにちは!元気です!
タイトルどおり、北は北海道から南は沖縄まで電子部品店をマップにまとめました。

電子部品店マップ

クリックすると地図にジャンプします。
https://www.power-of-tech.com/parts-map/index-map

使い方・注意点

  • マーカーをクリックすると店名とグーグルマップの詳細情報へのリンクが表示されます
  • 同地域の店舗はマーカーが重なっている場合があります。拡大してご確認ください
  • Google map APIの無料枠に限りがあるため1日の使用回数に制限を設けています。利用できない場合は翌日(日本時間17:00にリセット)に再度お試しください。
続きを読む

感謝を表しながら眠るためのIoTシステムを作りました

こんにちは。

今回、IoTシステムを製作しましたので紹介します。

システム名は「チェイシング・リスペクト (追跡する恩義)」です。
(遠距離操作型のスタンドを出すときの発音で呼びます)

本IoTシステムの目的

突然ですが、日本の慣習の一つに

「恩人には足を向けて眠れない」

というものが有ります。

毎晩眠るときに恩人から受けた恩を思い出し、恩人の居る方角へ足を向けて眠るような失礼は出来ない

という意味で、例え人に見られていない寝室でも恩義を忘れない日本人の美徳だと思います。

f:id:powerOfTech:20180701121939p:plain:w150

本IoTシステムはこの実行を強力にサポートします。

続きを読む

ハードオフで購入した謎の半導体の型式を調査、判別しました

前回のあらすじ

 ハードオフで540円で購入した謎の半導体を組み立てました。
  f:id:powerOfTech:20180301142835j:plain:h400
        図1
 電気特性はダーリントントランジスタに近いようですが何か・・・違和感を感じます。
 調べましょう!

続きを読む

ハードオフで購入した未完成の半導体を動作させました

こんにちは。
私は普段、完成品の半導体を使って電子工作をしていますが
今回は未完成品を買って組み立ててみました。

ハードオフとは

家電,オーディオ,ゲーム機器などの中古商品やジャンク品を扱うショップです。
ACアダプタや各種コネクタケーブル等も格安で販売しているので電子工作をする方にも便利なお店です。
f:id:powerOfTech:20180220211524p:plain

半導体を購入しました。

ハードオフのPCサプライコーナーで見つけた謎の半導体入りケースを540円で購入しました。

続きを読む

GravityLight(重力式ライト)が届きました!

○グラビティライト

2012年11月にクラウドファウンディングサイトの「Indiegogo」にて重力式ライトが投資を募っていました。

グラビティライトの翻訳記事

ウェイトを使って発電する画期的なライトという事で私も投資をして製品の完成と到着を待っていました。
発送予定は2013年の3月でしたが度重なる改良から一年間も遅れ、今日やっと到着しました!

イメージ 1

外箱

イメージ 2

本体。予想よりもかなり小さい。高さ15cm,幅10cm。
調整つまみで出力を調整可。

イメージ 6

本体背面。左側に置いているのが付属のDCプラグ。下部中央のジャックに差し込んで使う。


イメージ 10

取扱説明書。
電気のこない途上国向けの製品なので文字が読めない人にも使えるように
イラストメインとなっている。
⑥のカウンターウェイトが無いと②のメインウェイトを持ち上げたとき逆側のレールが下がらない。


イメージ 3
ウェイト用フック。樹脂ですが強度はかなり高い。
通しているレールもプラスティック。

イメージ 4
ウェイト袋。この中に砂を詰めてウェイトとする。
右がメインウェイト,左がカウンターウェイトの袋。
ロゴは大口投資の特典で「この人たちの協力を得てあなたの元へ届けています」と添え書きがある。

イメージ 5

動作中。なかなか明るい。

イメージ 11

過重量警告。右上の設置用タイラップが掛かっている黒い突起部分がバネで本体と
接続されていて重量がバネ力を超えるとスイッチが入る仕組み。

明るさを確認したところ、細大出力なら6畳程の部屋で家事が出来る程度に部屋を灯せそうです。
本を読むには光源が遠いのですがその対策としてオプションとして光源を分割するオプション品の
SatLightsが開発されています。
こちらの最下段の動画に紹介されています。

概ね期待どおりの製品が出来て大変うれしいです。


○特性チェック

背面のDCジャックから発電している電力を取り出せます。またこの時LEDの点灯は停止します。
この時の負荷特性を出力を3段階に分けて測ってみました。

イメージ 7

砂が無かったので米を下げてます。
カウンターウェイトには1リッターのペットボトルを下げました。

イメージ 8

可変抵抗で負荷を調整します。

イメージ 9
結果
電圧は動作中ずっと安定しないので幅を持たせて表記している。
強モードの時、出力は約45mW,3.3Vの時は11mA程度取り出せる。

強力ではありませんがLEDの点灯には十分な電力ですね。
使ってみた感想ですが、製品の強度や作り、警告表示を見て完成度は高いと感じました。
そして途上国に普及させるというコンセプトを実現させようとする意気込みが伝わりました。
一年も待った甲斐はあったなとw
今後よりオプション等で用途を広げ、灯油の明かりから置き換わっていって欲しいと思います。

STM32CubeのHALをCoIDEに移植してみました


お久しぶりです。ヌル夫です。
元気です!


○HALですよ
イメージ 1

STM32Cubeという新しい開発環境のファームウェアセットが発表されました。
今はSTM32F4のみ対応ですが、これから他のシリーズも対応して行くとの事です。
公式ページからSTM32F4対応のファームウェアを入手しようとするとSTM32Cubeのみリンクされている状態でした。
つまりSTマイクロさんとしては「これからはこちらを使ってね。」という事なのでしょう。

ファームウェアが変わった事で最も影響を受けるのは関数ライブラリです。
旧「Standard Peripheral Driver」から「HAL(hard ware abstraction layer)」へ変更されていますがこの二つは互換性が全くありません。
旧ライブラリで書かれたソースを移植する際、ペリフェラル関数は全て書き直しになると言っても過言ではありません。

つまりHALは今後のSTM32ユーザーの強制必須科目という事ですね。(苦笑)
下記に移植したソースコードを紹介した後、HALの特徴と旧ライブラリとの比較をしたいと思います。



○HALを移植しました
内容は従来と同じですがソースコードを見て頂けば感じは掴めると思います。
フレームワークの「main.c」にLチカ(TIM4のPWM+割り込みによるGPIO制御)のサンプルコードがあります。

CoIDE開発環境
(「4. CoIDEプロジェクトの作成」の中に移植したフレームワークがあります)



○HALの特徴 ー 抽象化

HALは新しいCMSIS規格を意識してペリフェラルの抽象化と移植性の向上を狙ったライブラリです。
抽象化の為、オブジェクト指向を意識して設計されている事が伺えます。

ソースコードを見た方が分かり易いですね。
以下はペリフェラル(GPIOのDポート)にクロックを供給する関数です。

旧STDライブラリ 「RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);」
HALライブラリ  「__GPIOD_CLK_ENABLE();」

上記は同じ処理ですがHALはペリフェラルを抽象化しているのが分かります。
これは良いですね。私はいつもデータシートと首っ引きでこの設定をしていましたが、それでも良く間違えていました。このように抽象化されると非常に助かります。


○HALのコールバック処理

反対に抽象化で分かりにくくなった部分もあります。
旧STDライブラリではIRQハンドラに直接割り込み時の処理を書いていました。
しかし、HALの作法では若干複雑になります。(作法を気にしなければ従来通り書く事も出来ます)
まず、割り込み時の処理は各割り込みに対応したCallback関数に記述します。
(例: 「HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)」 )
ここでHandle型の引数を取りますが、これはペリフェラルの設定時に使ったHandle変数を使います。
このHandle変数は割り込み関数内で値が利用される為、グローバル変数となりますので気をつけて下さい。

このCallback関数は「HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim))」の中で呼ばれます。
割り込みハンドラにはこの関数を登録します。

TIM4の更新イベントを例にまとめると
-----------------------------------------------------
割り込み発生
------------------------------------------------------

↓割り込みハンドラ呼び出し

---------------------------------------------------------
TIM4_IRQHandler(){
    HAL_TIM_IRQHandler(&Tim4Handle);
}
---------------------------------------------------------

↓HAL_TIM_IRQHandlerで割り込みフラグの処理などを行った後、
↓HAL_TIM_PeriodElapsedCallback(&Tim4Handle)を呼び出し

---------------------------------------------------------
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){
     //ここにタイマ更新時の処理をユーザーが書く
}
---------------------------------------------------------

なぜこのように多段でコールバック処理をしているかというと、コールバックの呼び出し元を抽象化する為です。
例えばAD変換の場合ならAD変換完了割り込みとDMA転送完了通知の二つのイベントからコールバックが呼ばれています。
AD変換完了の通知処理とコールバック関数が別なので、ユーザはコールバック関数にAD変換されたデータを処理するプログラムを書く事に集中できます。
また、ユーザがポーリングによってAD変換完了を通知する関数を作った場合もその中でコールバック関数を呼べば共通の処理が行われる訳です。
こうして呼び出し元の通知関数で行われるハードウェア処理を抽象化する事で、関数同士の結合を弱め、移植性、保守性、拡張性を向上させています。

ただし関数分割によるオーバーヘッドとグローバル変数を使用するという副作用もあるので、速度やサイズが重要な場合はコールバック関数を使わないほうが良い場合もあると思います。


○HALの特徴まとめ

1.旧ライブラリとの互換性は全く無い

2.ハードウェアの抽象化が行われていて関数が使いやすくなっている

3.コールバック関数による通知関数の抽象化

4.ペリフェラルの初期化コードは「stm32f4xx_hal_msp.c」ファイルに書くのが作法
(ただし自作フレームワークではmain.cだけ変更すれば使えるようにあえて無視している)
(追記:msp.cのテンプレート(void HAL_PPP_MspInit(PPP_HandleTypeDef *hppp))を使って初期化関数を作ってみましたが、グローバル変数と参照渡しの関係で非常にややこしい書き方になってしまうので、しばらくこのテンプレートは無視する事にしました。)

5.抽象化によってコードサイズは増える。3kB(ROM)のプログラムをHALに移植すると8kBとなった。STM32F4においてはペリフェラルコードのサイズは一部に留まるので大きな問題では無いように思うが、今後STM32F0等ROMが少ないマイコンにSTM32Cubeが移植されると問題が表面化しそうです。

HALの理解はSTM32Cubeに含まれているサンプルコードを読むのが一番だと思います。

それでは皆さん、(大変ですが)頑張ってHALに乗り換えましょう!

英語をアルファベットからやりなおしてTOEIC720までの記録

こんばんわ。
自分は電子系の情報を読む為に英語を勉強しており、能力を測る為にTOEICを受けています。
5月のテストで700点を超えたので一区切りして勉強の経過を書いておこうと思います。


○勉強を始める前の英語力
イメージ 5
英語っておいしいの?

学生の間は英語が大の苦手でずっと避けてきました。
社会人になって就いたのが販売職だった事もあり全く語学には関心が無い状態だったので
中学生レベルの基礎も覚束ない状態でした。

例①:
3年前に書いた自分のプログラムに線を描画する関数が有るのですが関数名が「white_line」でした。
「write_line」と書きたかったのでしょうが、正しくは「draw_line」です。

例②:
SVC文型の英語しか読めなかった。
というかそもそも文型がある事を知らなかった。

悲惨の一語です。


○勉強を始めたきっかけ
イメージ 1
データシート読まなあかんねん

5年前、電子設計の仕事に転職してからデータシートなど英語に接する事が多くなりました。

①ニコ技
ニコニコ技術部の皆さんはどうしてるんだろうと思ったので、IRC
「やはりみなさん英文のデータシートを読んで開発してるんですか?」と質問したところ
英語が読めなきゃオモチャも作れないよ・・・」と言われてガツーンと来ました。
情けないというのも有りましたが凄く悔しかったのを覚えています。
この悔しさが後の勉強のバネになりました。
しかし当時は電子設計を勉強していたので英語の勉強をする時間はありませんでした。

②日本語データシートの終了
上記の後にSTM32マイコンを使い始め、このブログを立ち上げます。
STM32F1には日本語リファレンスマニュアルとデータシートがあり、英語が使えなくてもなんとか開発ができました。
しかしSTM32F2が発表されてから日本語資料はパッタリと無くなってしまいます。
それはSTマイクロにとっての日本市場の重要度が変わったという事で仕方の無いことではありますが
周りの人達(職場外)がSTM32F2で開発を進めている中で自分は日本語資料が無い事が理由で開発も出来ず、取り残されている事に強烈な焦燥感を感じました。
そして英語の勉強を始める事にしました。
1年半前の事です。


○基礎-中学生レベル
イメージ 2
This ! is ! a ! pen !!! これはペンです!!

期間:3ヶ月
勉強時間:毎日1~2時間、土日のどちらかに5時間。

①手始めに

本当に全く英語が出来なかったので何処から手をつけていいかも分かりませんでした。
初心者の参考書として公文式の英文法が有名ですが自分にはそれでも難しすぎました。

そこで初めに選んだのが
「Mr.Evineのアルファベットから英語の基礎をなんとかするドリル」でした。
題名どおり、アルファベットの小文字の書き取りから曜日や数字の英単語を覚えて行き
英語の基礎を学ぶドリルです。
一日で定められた範囲の終わりに演習もついているので復習もしやすかったです。

英語の勉強はこの頃が一番辛かったです。
どんな勉強もそうですが最初は何が分からないかも分からない、入り口すら分からないという状態ではないでしょうか。
加えて、いい大人がアルファベットからやり直すのは恥ずかしいという気持ちが強かったです。
なんとかこのドリルをなんとか1ヶ月で終わらせました。

②文法と単語
これで文法と単語の勉強に入る事が出来ます。
「Mr. Evineの中学英文法を修了するドリル」
「基本英単語・熟語ターゲット1100 」
を平行して2ヶ月間勉強しました。

Mr.Evineのドリルにはコラムがあって、その中に印象深い言葉があります。
「初心者のうちは質より量。効率を考えて手段を探すよりどんどん勉強するべき」
至言です。基礎で覚える事はどんな参考書を使っても同じですから
巷に溢れる効率の良い勉強法などに意味はありません。

③電子辞書
カシオのEX-word XD-B8600を使っています。
単語帳はもちろん、発音や例文も豊富で非常に多機能かつ使いやすい電子手帳です。
今でも愛用しています。


○高校レベル
イメージ 3
C言語が出来たから英語も簡単・・・そう思ってた時期が俺にもありました。

期間:10ヶ月
勉強時間:毎日2~3時間。(途中で仕事を辞めてプラス2~3時間)

英文データシートが読めれば良かったので高校基礎レベルの文法と単語まで覚える事にしました。
主に使った文法書は
「総合英語FOREST」
「Forest  解いてトレーニング」
FORESTは分厚いですが網羅的で丁寧で分かりやすい良書です。

単語帳は
「DUO 3.0」
「風呂で覚える英単語」
「ドラゴン・イングリッシュ必修英単語1000」
特にDUO3.0は練習・応用CDを購入して5周繰り返しました。

また長文独解の参考書として
「あたりまえながらネイティブはなぜ英語を速く読めるのか? 」

それからラダーシリーズ等の学習者向け洋書を5冊ほど読みました。
これでやっとデータシートを読めるかな?というレベルの英語力が付いたと思います。

TOEIC
イメージ 4
聞き流してる内に英語が理解できる?それはジョークだよ!

期間:4ヶ月
勉強時間:毎日3~6時間

TOEICを受けるのは勉強の目的ではありませんでしたが、
英語の勉強の結果を見える形で残したかったのでTOEICの試験を受ける事にしました。

○教材
まず対策本として
「新TOEICテスト一発で正解がわかる 基礎編」

後はテストに場馴れする為に模擬テスト繰り返してやりました。
「TOEICテスト新公式問題集〈Vol.4〉」
「TOEICテスト新公式問題集〈Vol.5〉」
「TOEICテスト究極の模試600問」

○結果
二回受けました。
初回は2013年3月: listening 280  reading 300 total 580でした。
二回目が2013年5月: listening 380  reading 340 total 720でした。

実感として720点は実用英語には程遠い点数です。
TOEICというテストの問題の内容を大筋理解して答えられるのは850点以上ではないでしょうか?
それ以下は闇雲に勘で解いている、という感じだと思います。
またTOEIC試験の内容はビジネスシーンが主ですが、
倒産も解雇も無く同僚や上司はみんな常識と配慮を兼ね備えている素晴らしい世界です。
実社会とのギャップが凄いw

TOEICのアドバイス
低得点なりのTOEICアドバイスを書いてみます。

①本番前にリスニングパートの音が聞き取れるか監督官の人が聞いてくれます。
聞こえにくい場合は申告しましょう。席を替えるなどの対応をしてもらえます。

②本番の試験の難易度は新公式問題集Vol5よりかなり上、Vol4より少し下、というレベルです。
Vol5だけやって本番に臨むと難しすぎて混乱してしまい、本来の実力も出せなくなるのでVol4をやってから本番を受けましょう。

③テスト当日にジタバタ勉強しても余り意味はありません。
2時間のテストで力を出し切るには相当集中力が必要なので、
本番前は休んだりストレッチをしたりして頭が冴えるようにした方が良いと思います。

④模擬テストで500点も取れない状態で受けるのはTOEIC以前の学力がたりないので
基礎からやりなおしましょう。自分に合わないレベルの勉強をしても身につきません。


○その他

海外で有名な感電芸人さん。体張ってます。

○lang8
読む能力ばかりでは無く書く能力も大事かなと思ってlang8で日記を書いていました。
話題はサブカルチャーが中心で頭のおかしな記事を沢山書いてしまいました・・・

○英語漬け
英語漬けやりました。
レベル2からは音声を繰り返し聞いて画面を見ずにデクテーションをしていました。
弱調の単語を聞き取る力が多少上がったと思います。

○海外系の電子サイト
当たり前の事なのですが海外にも電子系ホビイストやガジェット系のサイトがあります。
お勧めのサイトを紹介します。

クラウドファウンディング系
indiegogo
kickstarter

②電子工作・ガジェット系

hackaday  :クラフト系からマイコン系まで幅広い話題。(LPC1114の記事を紹介して頂きました。)
geekboy.it :マイコン系の話題が多い。綺麗にまとまっていて読みやすい。

③STM32系
STM32 forum :本家のフォーラム。非常に活発にトピックが立てられています。
Frank's Random Wanderings :STM32のSDIOやDMAに関して有益な情報があります。

○まとめ

実際は掲載している教材の倍は買って色々手をつけていましたが、実力に合わない教材は終わらせることができず背伸びをしても意味が無いと感じました。
世間的に評価の高い教材はやはりよく出来ていて確実に身になるという安心感があったので続ける事が出来ました。

今後の課題としては英文を読むのにまだ日本語の何倍も時間が掛かるので
これからは量を読んで速く読むよう意識したいと思っています。

それでは!