まごころせいじつ堂

浜町庄金 研究開発  マイコンで遊んでばっかりで

ハードウェア

PROMで*PGMをオープンにしていると読めないことがある

 ハマったのでメモ。

 パラレル接続のPROMは容量が違っても互換性があるようにピン配置にを決めてある。

スクリーンショット 2019-08-08 7.37.01

 さて、この28ピンパッケージでVppやP#(*PGM)をオープンにしたままでROMの種類を変えていたらリードできないものがあった。使ったのはいずれも富士通製のUVEPROM。

2019UVEPROM

 Vpp,*PGMをオープンにしたままでの結果は以下のとおり。

MBM2764 読める
MBM27C128 読めない
MBM27C256 読める

 データシートを確認してみると、リード時ではVppはVccと同じ、*PGMはVIH(=Hレベル)とあった。追加実験としてMBM27C128で*PGMを4.7KΩでプルアップしたらリードできた。

 ということでサボってハマってしまったという話でした。




富士通(FUJITSU) UV EPROM 32K 2732A-30Z MBM2732A-30Z-G
B079JS4PRP

¥ 980




DroboProリブート問題(未解決)

 NASのDroboPro、電源を入れるとリブートを繰り返すという症状。調べてくれと頼まれたのでみてみた。
DroboPro Review
Drobo Pro Beyond Raid 8-Bay USB 2.0/FireWire 800/iCSI/SATA 6GB/S Storage Array DRPR1A21
http://www.drobo.com/drobo-downloads-2/
http://www.drobo.com/documentation/
http://www.drobo.com/downloads/products/DS-0098-00_drobopro.pdf

 DroboProのこのような症状はよくあるようだが、DroboProは生産終了、サポートしてもらうにも海外からの購入品で困難。

(1)ペーパークリップによるリセット
 USBポートの隣にある穴にクリップを挿したまま電源を入れる。
2 minute Paper Clip reset for Drobo Pro https://vimeo.com/10299060
Trouble shooting a Drobo Pro https://vimeo.com/10275143

I followed the procedure below, but the Drobo Pro continues to go into a reboot cycle:

If you do not want to format your drive set, remove the entire drive set from the Drobo, keeping the drives in order.

Insert a paper clip into the reset hole on the plastic case to the left of the USB port on the back of the DroboPro, and hold it in FIRMLY.

While holding the paper clip FIRMLY in the reset hole, toggle ON the power to the DroboPro.

During this PIN Reset the lights on the DroboPro will do the following:

*** All of the drive lights will light up amber and all of the blue capacity lights will light up

*** All of the drive lights and all of the blue capacity lights will go out and only the green power light will still be lit

*** The blue capacity lights will start scrolling up the right-hand side of the DroboPro

*** All of the blue capacity lights will go out AND:

If the drives are still in the DroboPro, all of the drive lights will turn green.

If the drives are NOT in the DroboPro, the first drive light will turn solid red.
 やってみたがダメだった。

HOWTO: Fix the Drobo Pro infinite reboot loop (TECHKNIGHT)
これによると、 電源ケーブル/コイン電池/二次電池を外して三時間以上放置で直りそうなことが書いてある。
以下のフォーラムでは
DroboPro reboot loop - Printable Version(Drobo Forums)
一週間ほど主電源を切っていたらリブート繰り返しが発生
ファームウェアアップデートで対応?
Dorobo Sでも発生
なぜか三日後に直った例 などが載っていた。
Drobo Forums / Drobo / Legacy Products / DroboPro / DroboPro restarting.over and over...ugh

 これをやってみた。電源になるものを外して一晩放置後、再接続。なんと直った。drobo dashboardをWindowsにインストールし、USBケーブルを接続。が、最新のファームウェアに更新後また再起動を繰り返すようになってしまった。この後二回ぐらい放置をやってみたが直らなかった。

 まずはここまで。


ロジックチェッカー

 30年前くらいに作ったロジックチェッカー。見たいところのH/Lレベルと立ち上がり/立ち下がりがわかる。7474と7400を使った。電源はターゲットからもらう。

2016logigchecker1

 当時便利に使ってたけど、LSやHCタイプでも問題ないよう作りなおした。せめてICソケットを使っていれば……

※図はRISEとFALLが入れ替わっています!
2016-04-04 23_54_13-LogicChecker

 74LS74と74LS14使用。テストクリップはピンヘッダ経由で接続。リセットボタンを押すと立ち上がり/立ち下がりのLEDを消灯する。Hレベル/LレベルのLEDは片方しか点灯しないので電流制限抵抗を兼用した。輝度が大幅に違うような場合などは個別に入れなければならないが。

http://www.tij.co.jp/product/jp/sn74ls74a/description

 秋月電子のD基板に載せた。ICソケットを使ったので標準TTL、LS、HCなどOK。

2016logigchecker2

 測定はこんな感じ。

2016logigchecker3


 この本はたいへん良いですよ。

定本 ディジタル・システムの設計―ディジタル技術の基礎からASIC設計まで定本 ディジタル・システムの設計―ディジタル技術の基礎からASIC設計まで
猪飼 国夫 本多 中二

CQ出版 1990-09
売り上げランキング : 732940

Amazonで詳しく見る
by G-Tools

 改訂版。

定本 ディジタル・システムの設計―ディジタル技術の基礎からASIC設計まで定本 ディジタル・システムの設計―ディジタル技術の基礎からASIC設計まで
猪飼 國夫 猪飼 維斗

CQ出版 2010-11
売り上げランキング : 186954

Amazonで詳しく見る
by G-Tools



汎用ロジックICによる早押し回路

 35年くらい前、ラジオの製作で見かけた74LS00一個による早押しゲームというのがあって、どんな回路だったか思い出せないでいた。おそらく基本はSRラッチで、早く押した方が確定したら自分はONのまま他方はONさせないんだろうなと考えてたら風呂で思いついた。

 SRラッチを中心に、一度確定した方の入力をホールドしてしまえばよい。

2016hayaoshi-kentou

 で、手持ちの部品で作ってみた。秋月片面D基板。電源はUSBからもらう。

2016hayaosi

 赤い方のボタンを先に押したら赤のLEDが、緑の方を先に押したら緑のLEDが点灯してそれ以降はどう操作しても変化しない。リセットするには電源をいったん切る。

 さてコレで完成……ではなかった。試しに74LS00の代わりに無印7400と74HC00に差し替えて実験してみたら、電源投入後に片方のLEDが点灯したままロックしてしまう。74HC00では常に発生し、7400では高い頻度で発生する。74LS00でもたまに発生することがわかった。
 このSRラッチの出力が両方とも"H","H"の初期状態になるためには、入力が両方共"L"になっていないといけない。その前段にあるNANDの出力が、電源投入時に"L"とみなされればうまくいくが、無印7400と74HC00では"H"となりどちらか片方に確定してしまうようだ。そこでこの部分をプルダウンしてみるとうまくいった。
2016hayaoshikairo

 これは修正済みの回路。Y,Zをプルダウンしているので電源投入時は"L"とみなされる。これによりSRラッチの出力B,Dは両方とも"H"になりLEDは消灯。
 A,Cはスイッチ入力でプルアップされているので開放時は"H"。B,Dも"H"なのでY,Zは両方とも"L"である。
 Aのスイッチが先に押されたとする。Aが"L"になり、Yが"H"となる。Y,Dが"H"なのでSRラッチの出力Bが"L"となりLEDが点灯する。Bが"L"になるとYは常に"H"となりSRラッチはこれ以降動かない。この状態でCのスイッチを押すと、Zは"H"だがBが"L"なので出力Dは"H"のままで変化しない。

 先程の素子によってはレベルが確定せずどちらか片方が先にセレクトされてしまう問題は等価回路や出力/入力のスレッショルドレベル、ディレイなども確認しないといけないが、そもそも電源投入直後は論理演算素子として正常動作していない状態である。この時の信号線は不定値"X"として扱う。不定値"X"は"H","L"のどちらでもないが、NANDゲートの場合は片方の入力が"L"ならばもう片方の入力が何であろうと出力は"H"で確定する。過去に見た早押し回路にはプルダウンはなかった記憶なので、74LS00を使うことにより電源投入後の状態がスイッチの入力待ちになることをアテにしていたのだろう。

SN74LS00 (供給中) クワッド 2 入力 正論理 NAND ゲート
http://www.tij.co.jp/jp/lit/an/slva700/slva700.pdf
高速 CMOS ロジック HD74HC シリーズ アプリケーションノート

 なお、LSIの中の同期回路ではこのような設計は避ける。意図しないラッチができるとクロックに同期せずに状態を記憶する部分ができてしまい検証が困難になる。

2016hayaoshi-normalTTL

2016hayaoshi-HC


おまけ:USBを電源にしているが、スマホ用のバッテリーの中にはある程度の電流が流れないと切断してしまうものがある。PanasonicのQE-PL203はロジックIC一個程度でも切れないで実験に使用できた。


パナソニック モバイルバッテリー 5,800mAh 無接点充電(Qi)対応 USBモバイル電源 ホワイト QE-PL203-Wパナソニック モバイルバッテリー 5,800mAh 無接点充電(Qi)対応 USBモバイル電源 ホワイト QE-PL203-W

パナソニック 2013-06-26
売り上げランキング : 14475

Amazonで詳しく見る
by G-Tools

レーザーカッター 予習編

 ホビー用レーザーカッター(激光彫刻机)の情報収集。

このようなグレードの物について。
CO2レーザー40Wで20cm×30cmの板について加工できる。
Free Shipping CO2 Laser Engraver Machine JK-K3020 Cutting Printer 220V 40W Laser Cutter Engraving Printing(Ali Express)
Gowe® Laser Engraving Machine,laser Cutting Machine, Co2 Laser Engraver,40w, 200*300mm, USB Port

トレーニング動画あり。
Hobby 40W CO2 LASER ENGRAVING CUTTING MACHINE ENGRAVER, Support and Ship from USA - See more at: http://www.automationtechnologiesinc.com/products-page/laser-engraving/40w-co2-laser-machine-software-training#sthash.zNQjqM25.dpuf

 この動画がわかりやすかった。


国内のblog記事。皆さん苦労されているようです。
レーザーカッター(その2)(みんなのラボ)
【模型】 激光生活 #3-1  中華レーザーソフト実践 その1(思ひ出はぶだう色)


・220Vで動作
・WindowsXP機以降が必要。ソフトはUSBドングルで提供
・排気ダクトが必要
・冷却用ポンプが必要
・レーザー光経路の調整が必要なこともある
・絶対に加工中のレーザー光は直視するな

絶対に加工中のレーザー光は直視してはいけません




Raspberry Pi 2がカメラのフラッシュで落ちる話

 Raspberry Piの改良版、Raspberry Pi 2が出た。Raspberry Pi B+と外形はほぼ同じでメモリが倍の1GB、CPUは4コアとなった。
Introducing the Raspberry Pi 2(HACKADAY)

 が、カメラのフラッシュで暴走するという話が出た。カメラシャイとかキセノンデスフラッシュとか。
Photonic Reset of the Raspberry Pi 2(HACK A DAY)

Why is the PI2 camera-shy ?
A camera flash will make the Raspberry Pi 2 freeze and reboot

 昔、プロセッサ誌のコラムにマイコンボードを撮影しようとフラッシュを焚いたら暴走したという話が載っていた。これと似た現象だろうか。
 フラッシュの影響を受けるのはHDMIコネクタ近辺のU16とU8のチップ。これらはWL-CSP(Wafer Level Chip Scale Packaging)といって、通常は樹脂で完全に封入するダイを一部むき出しの状態でひっくり返して実装したもの。
ウエハーレベルCSP(Wikipedia)
 この状態だと遮光されていないため、光電効果により誤動作が起きる。
光半導体 取り扱い上の留意事項(東芝)
光電効果(Wikipedia)

 確認してみた。RasPi2のU8/U16がある箇所を狙ってフラッシュを焚くと暴走する。現象としては画面が真っ暗になる。U8/U16は電源まわりの石なので電源異常でCPUが停止してしまうようだ。
NCP6343(On Semicondactor)
こちらにはその時の電源の波形が載っている。
Xenon Death Flash: a free physics lesson

2015raspi2_1


U8/U16を隠してフラッシュを焚くと暴走しない。
2015Raspi2_2

 ではU8とU16にUVEEPROMの誤消去防止用シールを貼ってみたらどうだろうか?とチップ表面のサイズに切って貼ってみたのだがうまくいかなかった。これはCSPが上部だけではなく側面からも光が回り込むせいらしい。
 ということでアルミテープで隠してみた。そのままだとショートするのでカプトンテープを貼ってからアルミテープを貼る。光の回り込みを防ぐため広めにカバーする。
2015raspi2_3
 これでフラッシュを十回くらわせても暴走しなかった。

 フラッシュを焚く時の電磁波の影響ではないかという説もあったが、レーザー光を当てても暴走するのでやはり光電効果と思われる。試しに手持ちのレーザーポインタで当ててみたが弱すぎたせいか影響しなかった。

 これらの知見は主にtwitter上にあっという間に流れた情報を元に確認した。@felis_silvさん、@unosさんありがとうございました。

以下の記事にわかりやすく整理してある。
Raspberry Pi 2のフラッシュ光でクラッシュの件の続き(あっきぃ日誌)

しかしGIGAZINEの記事はまったく役にたたんなあ。原理ぐらい調べて追加したらいいのに。


追記:ふと思い付いて裏面からフラッシュしてみたら同じ現象が起きた。ただし頻度は低い。




Raspberry Pi 2 Model B (1)Raspberry Pi 2 Model B (1)

梅本合同会社, RS Components
売り上げランキング : 14

Amazonで詳しく見る
by G-Tools

メモ:ENGINEER NZ-12ミクロカッター

 ありがとうございました!活用します!
2014enginnertool

ミクロカッター NZ-12ミクロカッター NZ-12


売り上げランキング : 1106279

Amazonで詳しく見る
by G-Tools
 
メモ:

USB関連
MacOS XのUSBデバイスのメモ
8ピンPICでUSB -16FUSBの移植-
USB ホスト倶楽部

MSP430
Going Steampunk With The MSP430 – A Retro Calculator
第20回 MSP430™ LaunchPadでキッチンタイマを作ろう ~ダイナミック点灯編~

AVR LCD interfacing : LCD part I
Tiniest Linux COM yet?

メモ:201403


IRKitの作り方(SlideShare)

PS4 controller support for the USB Host library

Boards.h in Firmata library needs an update

https://github.com/yishii/Galileo_useLinuxShellFromUSB/blob/master/Galileo_useLinuxShellFromUSB/Galileo_useLinuxShellFromUSB.ino

mbed
STM32 Nucleoで始めるmbed開発:mbed開発でデバッグするにはどうすればよいのか

mbedをHTTPサーバ化メモ

ビット制御のBITBANDは超便利 (2012.12.07)

MB2051-206E-SPN

第17回 MSP430™ LaunchPadの入出力機能を拡張する、省電力モードを活用したプログラミング

電子箱庭『のらぴか 明-mei-』

無線LAN(Wi-Fi) SDカードまとめ ~Arduinoで使いたい~

http://arduino.densikit.com/jikken-shitsu/aqm1248a


 

2013年10月までのメモ


LTspice入門
 Mac用もある
 
INTRODUCING 123D CIRCUITS

Enginursday: Visually Programming Arduino

[GR-SAKURA][mruby]GR-SAKURAでmrubyを動かす (1)

2013-08-06 ¥1,650で買えるARM基板STM32F4DISCOVERYでmrubyを動かす

Nibbler 4 Bit CPU

TTL でCPUを作成、16bitの手作りコンピューター TANACOM-1 誕生

PIC32MX220F032B USB MIDI ホスト (15)

ISP programming application on mbed イカ醤油ポッポ焼き

[lang:ja] mbed LPC1114での遊び方

サポートするSCSIコマンド

プリント基板の試作、実装、リワーク 株式会社工房やまだ

カーネル/VM式ARMマイコン入門

BBB - FPGA / CPLD Programmer for the BeagleBone Black

論理回路デザイン

Amber ARM-compatible core :: Overview

DESIGNSPARK - ホーム

PINOUTS.RU

SparkfunのmicroUSBブレイクアウトボードはもげやすい

 SparkfunのmicroUSBブレイクアウトボードに搭載されているmicroUSB-Bコネクタはもげやすい。
試作品を渡してたらUSBケーブルごともがれて持っていかれた。

Breakout Board for USB microB[Sparkfun]
ブレイクアウトボード for USBマイクロB [Strawberry-linux]

 おなじmicroBコネクタを採用しているArduino LeonardoやRaspberryPiではそんなことないので比較した。

Breakout Board for USB microB
2013moge1 

RaspberryPi
2013moge2

Arduino Leonardo
2013moge4 
 ということで、ブレイクアウトボードのコネクタ、信号端子の両側をガードしておらず機械的に弱いので気をつけましょう。

メモ 水晶振動子

 いままでは水晶振動子の付け方については無頓着であったが(なるべく短い距離で繋ぐなどは気をつけていた)、一緒に付ける22pFのセラミックコンデンサが必要な理由、その値について。
 過去、友達からマイコンボードのethernetが不安定で他からマウントできない、という話を電話で受けて、聞いていたら原発振はセラロックだった。とりあえず同じ値の水晶振動子に交換してもらい動いたようで、さらに後の報告では22pFのセラミックコンデンサを2個付けたらデータの取りこぼしがなくなりさらに安定したとの喜びの声。ここでは見知った回路でいじくりまわしたにすぎないのだけれども、その理由がまとめてあって納得した。

水晶振動子の仕様


ソレノイド駆動メモ

ツイッターで今日話してたのをメモ。
 マイコンでサインペンを5mm程度アップダウンするための機構について、いくつか考えた。
(1)モーター+低速なギアボックス+クランク  モーターは回りっぱなしなので位置を検出するセンサが必要
(2)サーボモーター ラジコン用の小さなサーボ。舵角を調整できるしArduinoにはservo.hといったライブラリがある。
(3)ソレノイド。電磁石の原理でシャフトを動かすことができる。

例えば、以下で扱っているソレノイドは6V、保持電流0.53A、5gまでOK
【MD-252-1】ソレノイド

マルハ電機 DCソレノイド
そのままではマイコンでは駆動できないのでトランジスタを使う。
トランジスタによるドライブ回路
リレー等はこれでも良いが、シャフトを引っ張ったままにする保持電流が0.5Aもあるので小電力トランジスタでは駆動できない。増幅率を上げるダーリントン接続はオススメしない、と以下にあった。
電子回路におけるリレー使用上のご注意 

モーター駆動用のMOS-FETモジュールもある。
パワーMOS-FETモジュール MP4401 120V3A(12Apk)/ch

昔はMini-ZのFET貼替えなどやって遊んでいた。以下が参考になる。並列接続もできる。
http://minase.on.arena.ne.jp/mniz/

HAT3004→HAT3010→SP8M4

PS/2テンキーボード FMV-NTKB1の調査

ちょっと脱線。昔、USBポートのなかった頃のノートPCのオプションでPS/2接続のテンキーボードがあったのだが、この挙動が謎だった。スキャンコードを観測できるようになって、コードの割り当てがまったく違うことがわかった。

2012tenkey

富士通 FMV-NTKB1 テンキーボード

キー名称 make/releaseコード

NumLock 01 / 81
7home 02 / 82
4← 03 / 83
1End 04 / 84
/ 06 / 86
8↑ 07 / 87
5 08 / 88
2↓ 09 / 89
0Ins 0A / 8A
* 0B / 8B
9PgUp 0C / 8C
6→ 0D / 8D
3PgDn 0E / 8E
.Del 0F / 8F
- 10 / 90
+ 11 / 91
Enter 13 / 93

キーリピートなし

 要は専用のオプションだったってことですね。

マイコン覚書き2012

色々調べて思った最近のマイコンに関するメモ。

・特徴
 安価:PIC、AVR 省電力:MSP430 高性能:ARM、PIC32(MIPS)

・フィジカルコンピューティング
 Arduino:プログラムを転送して実行、Gainer,Gainer-mini:パソコンの手足として動作

・Arduinoについて
 ArduinoのコアはATmega328。これにUSB-シリアル変換が付く。
 3.3Vと5V動作の品がある。
 Arduino UNOはUSB-シリアル変換をAVRのUSB付きモデルであるATmega16U4や8U4が使われている。 
 Arduino LeonardoはATmega32U4 ワンチップで実現。
 開発環境がフリーで使いやすく、作例が多い。
 動作確認後、ATinyなどに実装することも可能。

・ARM系について
 STマイクロなど評価ボードが安い。他社も続々参入。
 開発環境は複数ある。ちょっととっつきにくい。

・PIC
 USBの使えるPICはGainer-miniやPinguinoで使える。

・PIC32
 MIPSアーキで高性能かつ安価。Arduinoのシールドが使えるボードがある。

 いずれも、I/O周り、メモリ容量、動作速度に気をつけながらC/C++言語で開発できる。命令セットアーキテクチャはギチギチにプログラムを押し込めようとしないかぎり知らなくてもいいのでは?

 H8,SHなどが流行ってた頃はマイコンいじってなかったので分からないけど、新規に使わなくてもよいかな。R8C、78K0、V850あたりも。

 やはりユーザが多いマイコンは作例も豊富、何か行き詰まった時に調べやすい。

Harpy届いたのでLチカ

株式会社鳥人間からHarpyというArduino互換ボードが出たので試しに買ってみた。
買ったのはHarpy nanoスターターキットで、Harpy nano本体、Arduinoのシールドを取り付けるアダプタ、USB-シリアル変換(5V/3.3V両対応)、6VACアダプタ、USBケーブルのセットで4980円。USB-シリアル変換は持っていなかったのと、世界最小のADK(Android Open Accessory Development Kit)ということで。
2012harpy01
 標準的なArduino UNOとの大きさ比較。面積は半分以下。白い基板がいいね。

主要部品はATmega328とMAX3421Eで、これはUSBホストシールドを搭載した状態と同じらしい。
USBホストに電源を供給する必要があるため、ACアダプタが必要。5Vの供給はUSBコネクタのみ、3.3Vは主要デバイスに。

 MacOSX(Lion)+Arduino IDEで動作確認してみた。Harpy USBシリアルのジャンパプラグを3.3Vに設定し、Arduino IDEで[Tools]→[Board]を"Arduino Pro or Pro mini(3.3V/8MHz) w/ATmega328"に指定して接続する。
2012harpy03

 購入時はLEDが点灯しっぱなし。ではLチカで確認してみる。Arduino IDEの[File]→[Examples]→[1.Basics]からBlinkを選ぶ。回路図を見ると、Harpy nanoはLEDがATmega328のPD6端子に接続されていたので、スケッチのpinMode(13,OUTPUT)……といった端子を指定してある箇所"13"をすべて"6"に書き換える。
 MacOSXで実行した場合、Upload時にシリアル・インターフェースの接続状況が変わっていたら訊ねてくれるので便利。

 こちらはH2A nanoボード。Harpy nanoに接続する。Arduinoのシールドが使える。
2012harpy02

 デモ用に3色LEDとタクトスイッチが1個付いている。LEDはカソード側がI/Oに接続されている。赤が2、青が3、緑が4。スイッチはA0で、押すとGNDに接続される。使用時はプルアップする。LEDのアノード側は共通で、ハンダブリッジで3.3Vに接続されてあるので2,3,4ピンを他の用途に使う時はハンダを取ればよい。
ピン配置はこちらを参考にしました。

ソースはhttps://gist.github.com/22a83dc4e21b7e39f9a5 。本体側の黄色から順に点灯する。タクトスイッチを押すと早送り。

2012harpy04

あと、試してみたらLチカ程度ではACアダプタはいらないみたい。
けっこう眩しいですよ。

PICとUSBメモ

PICの開発ツール MPLABXはMacOSX用もある。
Macで始めるPIC開発環境まとめ(MPLAB X + C18 + PICkit2 + PK2CMD) 

PIC18F14K50といえば秋月のPIC18F14K50使用USB対応超小型マイコンボード
PICkit3でPIC18F14K50が使えない(その3 事情判明) [PICkit3] 

PICはようしらんのでぼちぼちやる。

STM32F4 DISCOVERY

単精度の浮動小数点演算回路を持つARMマイコンSTM32F4の評価キット、STM32F4 DISCOVERY。
秋月電子などで扱っている。Cortex-M4、FLASH 1MB、RAM192KBも搭載して1650円という驚きの安さ。
STM32F4-DISCOVERY


STM32F4DISCOVERYDiscovery kit for STM32 F4 series - with STM32F407 MCU

キットには基板のみ。開発用に使うPCと接続するUSBケーブル(mini-B)が必要。
以下、説明書より:
Getting started
1.Check jumper position on the board,JP1 on,CN3 on(Discovery selected).
2.Connect the STM32F4-Discovery board to a PC with a USB cable 'tye A to mini-B' through USB connector CN1 to power the board. Red LED LD2(PWR) then lights up.
3.Four LEDs between B1 and B2 buttons are blinking.
4.Press user button B1,then MEMS sensor is enabled.Move the board and observe the four LEDs blinking according to the motion direction and speed.
5.To study or modify the Discover project related to this demo,visit www.st.com/stm32f4-discovery and follow the tutorial.
6.Discover the STM32F4 features,download and execute programs proposed the list of projects.
7.Develop your own applications using available examples.

 USBケーブルを接続すると基板上のLED3,4,5,6(橙、緑、赤、青)が回転するように点滅する。
青色のボタンを押すと基板の傾きによりLEDが点滅する。もう一度青色のボタンを押すと最初に戻る。
黒いボタンはリセット。

 USBケーブルを挿すとデバイスドライバが見つからない旨のエラーがでるが、このマイコンはST-LINK/V2相当のデバッガで接続されているので対応するデバイスドライバをインストールする。
以下からダウンロード。
ST-LINK/V2 in-circuit debugger/programmer for STM8 and STM32

 開発用のIDEは他社提供のものを使うらしい。説明書にあったのは
Altium,TASKING VX-Toolset
Atollic,TrueSTUDIO
IAR,EWARM
Keil,MDK-ARM

 今回はAtillic TrueSTUDIOをインストールしてみた。
無償のLiteバージョンを使用する。
Atollic TrueSTUDIO® for ARM® Lite v3.0.0

インストーラを起動すると、ブラウザが開いてRegister Lite Version ID登録の画面がでる。ここのcomputer ID欄にインストーラ画面に表示されている文字列をコピペする。
登録情報を送信すると、記入したメールアドレスに登録用のキーが送られてくるので、それをインストーラ画面にコピペして続行するとインストール完了。

とりあえずここまで。

ATmega32U2/16U2/8U2にPS/2機能はあるのか?

ATmega32U2(ATmega16U2,ATmega8U2)のドキュメントを眺めていたらブロックダイアグラムにPS/2の箱が描いてある。USBの端子と兼用みたいだが、本文には何も書かれていない。しかしAT90USB82(AT90USB162)の同じI/Oレジスタ設定には記載されている。ちょっと抜き出してみる。

UPOE - USB/PS2 Software Output Enable Register

R/W Bit 7:6 – UPOE[1:0]: USB/PS2 Output enable
R/W Bit 5:4 – UPDRV[1:0] : USB/PS2 direct drive values
R Bit 3 – SCKI : SCK Input value
R Bit 2 – DATAI : DATA Input value
R Bit 1 – DPI : D+ Input value
R Bit 0 – DMI : D- Input value

このうち、ATmega32U2ではBit3 SCKIとBit2 DATAIの記載がない。

 ひょっとして同一マクロを使っているとしたら、ATmega32U2でもPS/2入力が使えるかも知れない。もちろん保証外だが。

なおAT90USB82ではD- がSDATA、D+がSCLK兼用となっている。
 
AT90USB82 AT90USB162 datasheet
ATmega8U2/16U2/32U2 datasheet

ArduinoにLEDとスイッチをつなぐ

Arduino Unoを使ってLEDを光らせてみた。それだけではちょっと足りないのでボタンも付けた。

必要な部品:
Arduino Uno ×1
ブレッドボード ×1
ブレッドボード用の線材
LED ×4
抵抗 330Ω ×4 (330Ω〜1KΩくらいでOK)
抵抗 10KΩ ×4

 今はLEDも抵抗も袋入りで買えば問題ない。
LED1
 
押しボタンスイッチはこのような形。左下の小さいのはブレッドボードに直接挿せる。
LED2
 
LEDには極性がある。リード(足)の長い方が+。電解コンデンサなど極性のある部品も+側が長い。
LED3
 
ブレッドボードに配置してみる。こんな感じでどうか。
 LED4

Arduino、というよりArduinoの心臓部であるAVRマイコンの端子は役割が決まっている。
通常のデジタル入出力と、他の機能を兼用しているものがある。
LEDの点灯にはPWM(Pulse Width Modulation)機能のある端子を使う。これは出力オン/オフの比率を切り替えることにより人間の目には輝度の変化として感じる。PWM機能のあるピンはArduinoでは基板上に#3とか~3のようにシルク印刷で指示してある。
配線のメモ。Pin3,5,6,9を出力に、Pin2,4,7,8を入力にする。
出力にLEDは直結しない方がいい。Arduinoの本などにはそのような例があるが、LEDの定格を超えるので壊す可能性がある。
入力は10KΩの抵抗を通して端子を5V側に吊るしてある(プルアップ)。プルアップ抵抗を外して実験してみたが、これがないと入力が不安定になる。
LED7

実際の配線。割と電源の配線は忘れがちなのよね。
LED5

全体。
LED6
 ではスケッチ。Arduino IDEのExamplesにある"Fade"を元に書き換える。 4LEDの明るさ制御+スイッチによる消灯。  void setup()はawkでいうとBEGIN{}に相当する箇所で、一回だけ実行される。ハードウェアの初期化に使う。 ここではpinModeで端子の入出力を設定している。  digitalReadでスイッチの状態を読み取り、analogWriteで書き込む値を0にすることにより消灯している。analogWriteはPWM制御でLEDの明るさを制御できる。
これをArduino Unoに転送して確認する。ボタンを押した位置のLEDが消灯すればOK。このプログラムはLEDとスイッチの接続テストにもなるよ。
int brightness = 0;    // how bright the LED is
int fadeAmount = 5;    // how many points to fade the LED by
int bright[4] = {0,0,0,0};
int i;

const int LED0 = 3;
const int LED1 = 5;
const int LED2 = 6;
const int LED3 = 9;
const int SW0 = 2;
const int SW1 = 4;
const int SW2 = 7;
const int SW3 = 8;

void setup()  { 
  pinMode(LED0, OUTPUT);
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);
  pinMode(SW0, INPUT);
  pinMode(SW1, INPUT);
  pinMode(SW2, INPUT);
  pinMode(SW3, INPUT);
} 

void loop()  { 
  // set the brightness of pin 9:
  analogWrite(LED0, bright[0]);    
  analogWrite(LED1, bright[1]);    
  analogWrite(LED2, bright[2]);    
  analogWrite(LED3, bright[3]);    

  // change the brightness for next time through the loop:
  brightness = brightness + fadeAmount;
  for(i=0;i<=3;i++){
    bright[i] += fadeAmount;
  }
  if (digitalRead(SW0)==LOW) bright[0]=0;
  if (digitalRead(SW1)==LOW) bright[1]=0;
  if (digitalRead(SW2)==LOW) bright[2]=0;
  if (digitalRead(SW3)==LOW) bright[3]=0;

  // reverse the direction of the fading at the ends of the fade: 
  if (brightness == 0 || brightness == 255) {
    fadeAmount = -fadeAmount ; 
  }     
  // wait for 30 milliseconds to see the dimming effect    
  delay(30);                            
}
 実は手抜きしてあるので、最初揃っていた明滅のタイミングがボタンを押すことによりずれて行ってしまうよ。

 動作中の動画はこちら。 
Arduino 4LED 4switch

 組立とプログラム(といってもサンプルを元に改造)は一時間もかからなかった。これはマイコン界の軽量言語ではないかい?手持ちのブレッドボードなどが増えればスクリプトの資産が増えるのと同様にいろんなことがさらに簡単にできそうだ。
Arduinoをはじめよう 第2版 (Make:PROJECTS)Arduinoをはじめよう 第2版 (Make:PROJECTS)
Massimo Banzi 船田 巧

オライリージャパン 2012-03-16
売り上げランキング : 2218

Amazonで詳しく見る
by G-Tools

PS/2キーボード変換器の製作(8)

Arduino Unoで試作し、Davinciに実装する方針にした。
(1) PS2Keyboardライブラリでキーボードが扱えることを確認
(2)USB HID Keyboardデバイスにできることを確認
(3)US→JPのマッピングを行う(PS2Keyboard.cppの修正)
でやってみる。

資料メモ:
PIC AVR 工作室 ブログ
ARDUINO PLAYGROUND PS2Keyboard
Interfacing the PS/2 Keyboard
PS/2 Keyboard Library
Virtual USB Keyboard

(1)の注意点:プルアップ抵抗が必要
(2)の注意点:DavinciのUSBインターフェースがよくわからないのでソフトウェアによるV-USBを使う
(3)の注意点:US配列とGerman配列があるので、ここを修正
記事検索
プロフィール

hardyboy

カテゴリ別アーカイブ
月別アーカイブ
QRコード
QRコード
  • ライブドアブログ