電子工作

PIC, AVR, ARM...

2018年1月 4日 (木)

RaspberryPi3

帰省しているツノ丸に、RaspberryPi3のインストールを頼んだ。
普通にインストールするのは簡単なので、ヘッドレスインストール(※1)し、リモートでLチカまでやるつもりだったが失敗。PCと接続するUSBシリアルケーブルを持っていなかった。
とりあえずテレビに接続して普通にLチカまで完了した。
いつでも使えるようにしておけば、インストールだけで燃え尽きることもあるまい。

※1. ディスプレイなしのインストール。

RaspberryPi3は、そろそろ使えるようにしておきたいとは思っているが、今のところ用途がない。
キーボード、マウス、16GBのSDカードで1万円超え。
CPUパワーが必要となるような場面では、装置自体も大型でPCが内蔵できる。ならば中古PCがもっとも安価。

全国高校サッカー、三重県代表は早々に敗退してしまった。
今日は長崎vs青森の試合があったのだが、青森の応援団が仕掛けたところがおもしろかった。


相手チームを讃えて、まさかの「カースーテラ大好き♪」
すかさず長崎の応援団も応じている。


2017年12月29日 (金)

用土センサ

我が家の年賀状をようやく書き終えた。
今日書き終えたところで、投函された年賀状が回収されるのは翌日。
12月30日から元旦までわずか二日しかないが、郵便屋さんは優秀らしいからがんばってほしい。

用土の温度や湿度を計測するセンサが届いた。マイコンボードに挿しやすいよう、ヘッダピンをハンダ付けして樹脂で固めた。

Soilsensor P1020029

センサ側(黒い方)の配線は、業者に防水コーティングしてもらったが、コーティング不良と思われる物がいくつかあった。

2017年12月 4日 (月)

格安ガーデンライト

近所の家電屋でガーデンライトを買って来た。お値段は三つでなんと540円(税別)。

Gardenlight

ガーデンライトは、ソーラーパネルにLEDとニッケル水素充電池、昇圧ICでLEDを点灯というのが一般的。
充電や昇圧はたった一つのICで実現できるが、それにしても安い。さっそく分解して中身を確認してみよう。

Gardenlightzoom

小さ目のニッケル水素充電池を基板に直付けしてコストダウンを図っているようだ。
ニッケル水素充電池を交換可能な単4電池にしている商品も多いが、実際使ってみると、電池よりも先にサビで寿命が来てしまうから、こういうのもアリだと思う。
内蔵のニッケル水素充電池を観察すると、容量(とは書いてないが)60mAhとなっている。箱にはフル充電で6時間点灯とあるが、60mAhでそれはちょっと疑わしい。

ちなみに単4型のニッケル水素充電池のeneloopは750mAh、廉価版のeneloop liteは550mAhである。

2017年11月21日 (火)

配線の整理

ブレボの配線は30cmの長さに切り、直径3cmの輪にして保存している。輪の中心に、PETボトルのキャップを入れておくと、配線がからまったりしない。
せっかくなので、こんな感じに整理した。

Wire2cap

電子工作をやっている人なら、どこが残念か一目瞭然である。

電子部品には、数字が書き込めないほど小さな部品がある。そんな時、色で数字を表すようになっている。
よって、0.黒、1.茶、2.赤、3.橙、4.黄、5.緑、6.青、7.紫、8.灰、9.白となっていなければならないが、灰色だけが間違っている。
これは灰色のキャップが手に入らないからだ。しかたなく8番を金色で代用している次第である。

2017年11月16日 (木)

ローソンのお茶

新聞にローソンの広告チラシが入っていた。
焼き鳥の無料券が付いているのだが、どうせどこのローソンに行ってもケースに焼き鳥はない。別の商品を買って帰るのがオチ。そういう商法である。
しかたなく、30円引き券を使っておにぎりを買う。私のイチオシはレンコンのかき揚げおにぎりである。
おにぎりのついでにお茶を買おう…を?

Oginaugt

おぎなう緑茶だって。水溶性食物繊維が入ったお茶らしい。
コンビニブランドだが値段は高い。いや、そんなことよりキャップを見ていただきたい。

Bottlecapcompare

左から順に熟成烏龍茶、オランジーナ、おぎなう緑茶、ウェルチである。並べてみると、ちょうどいい紫色であることがわかる。


2017年10月25日 (水)

ESPさん

Arduinoで回路を組む時に使える大き目のテンプレ回路を作っている。
ArduinoNANOに、WiFi(ESP-WROOM-02)+AJOY(AE-AJ-DIP)+LCD(AQM0802)などを接続した。

Arduinowifi

このテンプレ回路は、右上のエリアにESPを搭載しているため、WiFi経由でインターネットに接続できる。
極めて汎用的に作られていて、たとえばテンシオメータの値を見て、畑の乾き具合をツイートすることができるし、どこにボードが置かれているか、みちびき対応の高精度GPSで報告することもできる。

秋月電子では、このブレボが異様に安く売られていて、ひじょうに助かる。このサイズでわずか600円だ。
小さなブレボ6枚が並べられており、それらを機能ごとに使い分けることができて便利だ。
ただしこのシリーズは、基板内部の接点に難があってφ0.65mmのワイヤだと、挿すのに苦労する。※先端を斜めにカットすれば問題ない。
ジェスチャセンサを搭載しており、ボードにさわらなくても操作ができるから、手が濡れていたり、汚れていても大丈夫。
LCDに表示されたメニューを選択する仕組みだが、そのためには基板の前で怪しい動きをすることになる。それなりにキモい。

目標は、畑のモグラの巣穴に、亜硫酸ガスとか一酸化炭素を送り込むことなんだけど。

2017年10月22日 (日)

STM32F401のパッケージ

台風22号がやって来た。ここのところ、土日はいつも雨だ。冬野菜やジャガイモ、タマネギが心配である。

しかたがないので、少し前までSTM32F401をいじっていたので、その時に気付いた小ネタをどうぞ。STM32F401は、ArduinoUNOのような形をしていて、ブレボに挿せない。

ショートしていいなら、ある種のブレボに挿せる。大満足で通電もしたが、裏側でショートしていることに気付いて慌てて抜いたなんて、いくらアホでもやらないと思うし、さすがに信じてもらえないので、むしろ私はやっていないことにする。幸い、壊れなかったし。

そのままデスクに置いて使うと、裏側に出たピンでショートしそうだ。
ランチプレートはなかなか便利で1年ほど使っていた。ランチプレートは1枚100円で買えるし、見栄えがいい。だが狭いデスクの上にランチプレートは、場所を取り過ぎるし、長く使っていれば埃がたまる。
たまにしか使わないなら、パッケージのブリスターケースのまま使うといい。基板を裏返して入れれば、ピンソケットも使えるし、裏面がショートすることもない。

Stm32f404use

マイコンボードには、ピンアサインが印刷されたカードが付属するが、カードはフタ側に両面テープで固定しておくと便利だ。
それから、USBケーブルを挿すために、パッケージに穴を開けておくのがポイント。

Stm32f404cut

メーカーが最初から、この部分に切れ目を入れてくれるといいんだけど。

2017年10月16日 (月)

香辛料のビン

うちにはエスビーの香辛料がたくさんある。

Bottlespice

この中身が空になったら、容器を再利用するといい。配線をこのビンに巻き付けると、こんな感じで整理できるのだ。

▽あとで写真

唐辛子や山椒が入っているビンは、直径がちょうど3cm、円周は3×3.14=9.42cmである。これが適度に緩むと約10cmとなる。
配線の巻き数で、配線の残りがわかるのは助かる。

しかもこの容器は爪楊枝を入れるのにピッタリ。と、言うことは、抵抗を入れるのにもピッタリ。
よく使うR510の抵抗は、「緑」茶茶金だからフタが緑の山椒のビンに入れる。

Bottlesansho

茶黒「赤」金のR1Kはフタが赤い七味唐辛子。
茶黒「橙」金のR10Kや「橙橙」茶金のR330は、フタがオレンジ色の唐辛子がピッタリ。
よく使う抵抗はこの4種類だから、これでいい。
爪楊枝のように、さっと一振りで抵抗が出て来るのは、すごく気持ちがいい。

2017年10月13日 (金)

続いてジョイスティック

昨日の続きである。STM32に秋月電子のジョイスティック(AE-JY-DIP)を接続したい。
AE-JY(搭載されているJT8P-3.2T-B10K-1-16Y)は、2軸のアナログジョイスティックで、X軸とY軸それぞれの電圧を入力する必要がある。
ジョイスティックはA0とA1に接続する。STM32でいうとPA0とPA1だ。CubeMXでPA0をADC_IN1、PA1をADC1_IN2に設定する。

STM32で複数のアナログ入力をするためには、どのピンをどの順番でADCに接続するかを設定し、DMAを使って順番にメモリに転送しなければならない。
CubeMXでその順番を設定できるのだが、吐き出されたコードが正しくない。(※1)
ネットでもその手の情報が多く見られる。

Talk Like Singing
Cresent

この部分だけは毎回、手作業で修正しなければならない。
main.cで、Rankという文字を検索すると、

    sConfig.Rank = ?;

こんな感じの行が見つかる。
その前後には以下のような行が必要だが、なければ追加する。

    sConfig.Channel = ?;

Rankで変換の順番を指定し、その度にどのチャネルを使うのか指定するはずだが、同じチャネルのまま連続で読むことになっている。おかしい。
※チャネルをauto incrementする設定もあるが、チャネルを連続で使うとは限らない。やはりバグだと思う。
これを追加すると、無事にADCが動いた。

そういえば、AE-AJは以下のように配線している。AE-AJのピン番号は、シルク印刷をガン無視する。モジュールを上から見て、左上(CN2の一番上)のピンから反時計周りである。たとえば、AJOY/12は右上ピン。

AJOY/12───R10K───VCC
AJOY/11────────A0
AJOY/10────────GND
AJOY/9───R10K───VCC
AJOY/8────────A1
AJOY/7────────GND

このモジュールは、使い方が簡単すぎるのか、ネットにあまり情報がない。少なくとも私には簡単と思えず、せめて結線図だけでも残しておく。
AJOY1-6はブレボに固定するためのピンで配線する必要はない。先日紹介したSTM32のテンプレボードでは、ジョイスティックモジュールの下にも配線が通っている。

Stm32template

今日はここまで。次はLCDをやっつけたい。

※1. STMCubeMX V1.0 Version 4.22.1で確認

2017年10月12日 (木)

まずはLチカ

紆余曲折あったが、STM32の開発環境は、TrueStudio+CubeMXとした。

STM32のピン設定は、今までずっと手作業でやっていた。正確にいうと、SPL(Standard Peripheral Library)というライブラリを使って、手動でビットをON/OFFしていた。
マイコンが多機能になるにつれ、膨大な設定、初期化ルーチンを書かねばならない。STM32ともなると、かなり複雑で、新しいボードが発売されても移行する気になれなかった。

そんな中、CubeMXという自動設定ツールがリリースされた。ピン設定のソースを自動生成してくれる上、基本的なライブラリも付属するらしい。
両者に互換性はなく、それなりに使い込んでいた人には、自作ライブラリを作り直しとなる。だがイチから始める人は、自前でwait1ms()とか作らなくても、HAL_Delay()一つで事足りる。これだけでも相当楽だ。

リリース当時はSTM32F4系しかサポートされていなかった。STM32F4xxは大きくて、イベントの用のメカに組み込むには向いていない。しかしいつの間にか、小型のSTM32F3xxにも対応していたようだ。ちょうどいい機会なので乗り換えた。

さて、最初はオンボードのLチカである。ArduinoでいうLED13に相当する。
STM32F303K8のデータシートというか、以下の画像(※1)を見ると、

Stm32f303k8 STM32F303K8

オンボードのLチカ(LED点灯)は、Arduino的に言うとD13となっているが、STM32的にはPB3だということがわかる。
CubeMXでPB3をOUTPUTに設定して、プロジェクトを作った。
main()関数のユーザプログラム部分に以下のようなコードを追加する。

while(1) {
	HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_SET);
	HAL_Delay(300);
	HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_RESET);
	HAL_Delay(300);
}

問題なくLEDが点滅した。
CubeMXを使うと、ピンを設定する部分のコードを書かなくていいから、ずいぶん楽だ。
以下、外部Lチカ→sw判定→シリアル通信→ADC入力という手順で進もう。
外部LEDは機能が少ないD3(PB0)に接続した。

D3(PB0)───R510───LED───GND

プロジェクトに上書きすると、当然だが「自分が書いたコードは消えてしまう」ので、その度に、該当コードを上書き修正することになる。

while(1) {
	HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);
	HAL_Delay(300);
	HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);
	HAL_Delay(300);
}

続いてスイッチの判定。スイッチで、LEDをON/OFFすればいいかな。
スイッチはなるべく使い道のない(※2)ピンに接続しよう。今回はD3(PF1)を選択し、INPUT&PULLUPに設定した。
配線はこんな感じになる。

GND───SW──┬──R10K───VCC
D3(PF1)────┘

PCとのシリアル通信は、USART2を使うことになる。PA2とPA15を設定するだけだ。
プログラムはこんな感じ。

int flag = 0;
int sw;
char buf[] = "sw on!\r\n";
while (1) {
	sw = HAL_GPIO_ReadPin(GPIOF, GPIO_PIN_1);
	if( sw==0 ) {
		flag = 1 - flag;
		HAL_UART_Transmit( &huart2, (uint8_t*)buf, sizeof(buf), 0xffff);
		HAL_Delay(300);
	}
	if( flag ) {
		HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);
	}
	else {
		HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);
	}
}

文字が表示できるとデバグに便利だ。このままジョイスティックといきたいところだが、今日はここまで。

※1. STM32を使うのであれば、該当のマイコンボードの画像をダウンロードしておいた方がいい。デスクトップの壁紙にしてもいいし、カラー印刷してファイルにはさんでもいい。
拡大コピーしたものをポスターにして、壁に貼れるなら理想的だ。

※2. 特別な機能を持ったピンは空けておく。たとえばI2CやSPI1は避ける。

より以前の記事一覧

最近のトラックバック