ETWEST2014  ヒートアップセッション3    組込み技術教育から見た電子工作
Upcoming SlideShare
Loading in...5
×
 

ETWEST2014 ヒートアップセッション3 組込み技術教育から見た電子工作

on

  • 340 views

Embedded Technology West 2014 / 組込み総合技術展 関西 ...

Embedded Technology West 2014 / 組込み総合技術展 関西

ET WEST2014 ヒートアップセッション3 組込み技術教育から見た電子工作
~組込みマイコン VS Arduino(アルデュイーノ)  -その、似て非なるもの-~

http://www.jasa.or.jp/etwest/2014/conf/conf_hu3.html

Statistics

Views

Total Views
340
Views on SlideShare
326
Embed Views
14

Actions

Likes
1
Downloads
13
Comments
0

2 Embeds 14

https://twitter.com 11
http://s.deeeki.com 3

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

ETWEST2014  ヒートアップセッション3    組込み技術教育から見た電子工作 ETWEST2014 ヒートアップセッション3 組込み技術教育から見た電子工作 Presentation Transcript

  • ~組込みマイコン VS Arduino(アルデュイーノ) -その、似て非なるもの-~ トライアングルエレクトロニクス 久保 幸夫 カンファレンス/ヒートアップセッション 7月30日(水) 12:30-13:30 【ルーム5】 組込み技術教育から見た「電子工作」
  • カンファレンスの内容 • 組込み技術の入門として、Arduino(アルデュ イーノ)などの電子工作用マイコンを使用す ることが増えている。また、hackathon(ハッ カソン)などのイベントでの高速プロトタイ ピングツールとしても、良く使われている。 初心者でも扱いやすく、手軽な反面、組込み 技術教育の観点から見ると、落とし穴もある。 組込みマイコンとArduinoの違いを把握して、 組込みマイコン初心者からステップアップす るための処方箋を示す。 と、大きく書いてしまった
  • 久保幸夫 @tentenV3って誰やねん? • 自称 IT&組み込み講師・コンテンツライター – 電子工作マガジン、エレキジャック、日経ネット ワーク、などの雑誌記事や書籍を書いている人 – JASAでは ETEC試験関連のお仕事担当 • 最近は 地元・大阪日本橋(にっぽんばし)に生息 – 日本橋ロボット連絡会幹事 – 日本橋ものづくり拠点 robobaのメンバー 昨年から3Dプリンタ作りに嵌り… http://roboba.jp/
  • 組込み技術の入門といえば・・・ 昔々その昔 Z80マイコンなどを 自分で作る シングルチップマイコンの ボードを使って実習 H8やPICマイコンがポピュラー 今どきは、ARM系 レゴマインドストーム Arduino(アルドゥイーノ)など お手軽マイコンボード
  • Arduino(アルドゥイーノ) Arduinoは、AVRマイコン、 入出力ポートを備えた基板、 C++風のArduino言語とそれ の統合開発環境から構成さ れるシステム。 (Wikiより引用)
  • フィジカルコンピューティング フィジカルコンピューティングとは? ものをコントロール、センシング いままで無かった、おもろい、楽しい、 役に立つ、システムをつくる(考える) ちょっと先の未来を発想するワクワク感 Arduinoは、フィジカル コンピューティングのためのツール 新たな、モノ、サービスを 考えるための教育用訓練ツール
  • Arduinoは、フィジカルコンピュー ティングのためのツール 実体は、AVRマイコン(ATmega168など) を使った、マイコンボード 専門家以外でも、 マイコンを扱えられるように工夫 ハードウェア知らなくても大丈夫 使いやすい開発環境 多くのサンプルプログラム けっこう丈夫なハードウェア!
  • Arduinoの開発環境 PC上で開発 C++言語風 簡単にサクサク プログラムを 作成できる USBで基板に 書き込む 使いやすい わかりやすい
  • Arduinoの開発事例 • 使いやすい開発環境 – スケッチと呼ぶプログラム • C言語風のプログラム言語 でスケッチを記述 • 豊富なサンプルで、手早く プログラミング 赤外線リモコン の信号を解析する スケッチとモータの PWM制御の事例 赤外線リモコン の信号を解析する スケッチ 9yukio kubo 2010
  • Arduinoは、使いやすい 開発環境の導入が楽 コストがやすい 2500円~ ブレッドボードでお手軽 電子工作 書籍など参考資料が多い 壊れにくい いろんな意味で、敷居が低い 教える方も 楽
  • 学校の教育現場でも ハードウェアの敷居が低い 非電子系(情報系)の大学での授業・実習 芸術・アート系の作品つくり 電気電子系の大学や専門学校でも 教えやすい 基板が安い 壊れにくい ハンダ付け要らない 半田付けの体験が↓
  • Arduinoと組込み教育 その1 Arduinoは組込み? その2 Arduinoを使った 組込み技術の教育のポイント その3 ブレッドボード電子工作のポイント
  • その1 Arduinoは組込み? ArduinoはAVRの組込みマイコンを 使っている 『Arduinoを使いこなせる』 ⇒『組込みマイコンを使いこなせる』 ⇒『組込み技術を身につけている』 という、勘違いが発生しやすい!
  • 例 Arduino のLED点灯プログラム // Pin 13 has an LED connected on most Arduino boards. // give it a name: int led = 13; // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. pinMode(led, OUTPUT); } // the loop routine runs over and over again forever: void loop() { digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) } LEDは13番ピン 13番ピンを出力に 13番ピンをHに 実質 4~5行で、スケッチを書けてしまう
  • じゃ、組込みマイコンの場合 STM32ディスカバリの場合 STM32 Value line discovery 1000円のマイコンとして有名 ARMコア STMicroelectronics のSTM32F100マイコンを 搭載した格安マイコン基板 インサーキットデバッガ・ プログラマ内蔵(USB) 開発環境は、無償版を ダウンロード使用 Cortex-M3ベースFlashマイクロコントローラ
  • STM32ディスカバリの場合 開発環境の整備 ネットからのダウンロード・インストール 半日仕事 マイコンの初期設定に10数行 ハードウェアの知識が必要 LEDの点灯まで 準備が長い
  • LEDの点灯までの長い旅… //ペリフェラルのライブラリのインクルード #include "stm32f10x.h" //ペリフェラルの初期化用構造体を用意 GPIO_InitTypeDef GPIO_InitStructure; int main(void) { volatile int i; //ペリフェラルのクロックをオンにして起動 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //ペリフェラルの初期化用構造体を初期化 GPIO_StructInit(&GPIO_InitStructure); //ペリフェラルの初期化用構造体にパラメータを設定 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //pin8に設定 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //出力モードpush-pullに設定 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //スイッチング速度 50MHz(MAX) //ペリフェラルの初期化関数の呼出し GPIO_Init(GPIOC, &GPIO_InitStructure); //ペリフェラルの操作 GPIO_WriteBit(GPIOC, GPIO_Pin_8, Bit_SET); while (1); } いろいろと準備 IOポートにクロック供給 8番ピンを指定 プッシュプル モードで出力 IOポートのクロック を50MHzにIOポートの 初期化
  • GPIOの初期化でモードを設定 ディジタル・デザイン・テ クノロジ No.14 マイコン でハードウェア制御 超入門 久保幸夫著(2012年CQ出版) より引用
  • GPIOのモード設定には ハードウェアの知識が必要
  • 最近のシングルチップマイコン 高機能・高性能 豊富な内蔵ペリフェラル 1個のピンが、複数の機能を持つ 適切に設定切り替える必要がある 省電力のため、 細かい有効、無効の設定 細かいクロック設定 ハードウェアの知識が必要
  • 今どきマイコンを生で使うには int main(void) { <省略> 以下はEMI/EMC対策のため、いったん全GPIOのポートをアナログ入力に設定 /* Configure all unused GPIO port pins in Analog Input mode (floating input trigger OFF), this will reduce the power consumption and increase the device immunity against EMI/EMC *************************************************/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE, ENABLE); RCC_APB2PeriphClockCmd() 関数で、ペリ フェラルバスB(APB2)に属するGPIOにクロックを与え、一時的に有効にしている GPIO初期化用構造体のメンバ変数への代入 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All; GPIOの全ピンを指定 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIOのモードをアナログINに GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO Aの初期化 GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO Bの初期化 GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO Cの初期化 GPIO_Init(GPIOD, &GPIO_InitStructure); GPIO Dの初期化 GPIO_Init(GPIOE, &GPIO_InitStructure); GPI0 Eの初期化 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | ハードウェアの設定 メインクロック・サブクロック プロセッサの設定 省電力の設定 割込みの設定 ・・・・・ お膳立てしてから、やりたいことを記述
  • Arduinoと組込みマイコン Arduinoは、やりたいことをすぐに 記述できる 細かい面倒なことは、横に置いて… すぐに結果がでる 組込みマイコンは、 そこへ行くまでが大変 初心者は、途中で挫折! orz
  • Arduinoと組込みマイコン Arduinoの 環境 組込みマイコン ハードウェア スケッチ C言語 プログラムマイコンの初期化 クロック・動作 モード 割込み・省電力 容易 難
  • プロとして組込みマイコンを扱うには 便利なAPI ハードウェア アプリケ―ション めんどうな ところ ここを、きちん と意識する必要 がある RTOS 割込みハンドラ デバイスドライバ
  • と、言っても・・・・ 現場の先生の声 教える時間が足らない 学生のハードウェアのスキルが 年々、下がっている 学生のモチベーションが続かない 教える(若い)先生の方も、 ハードウェア苦手の人が増える傾向 ハードを基礎から教えることができない
  • 少なくとも 少なくとも、 以下のことを理解させてあげたい Arduinoと組込みマイコンは違う! プロとして組込みマイコンを使うには、 もっと細かいことが要求される 組込みで飯を食うには、ハードウェアの どろどろしたところも知っておきたい。 違いを解った上で、 使うとArduinoも立派な組込み技術の教材に できれば、 ちょとだけでも、裸のマイコンを弄る体験も
  • Arduinoと組込み教育 その1 Arduinoは組込み? その2 Arduinoを使った 組込み技術の教育のポイント その3 ブレッドボード電子工作のポイント
  • Arduinoで組込み なんだかんだ言っても、 Arduinoは教育現場で便利なツール Arduinoを組込み教育のツールとして 使うときの注意点
  • Arduinoの工作記事  Arduinoを使った電子工作の記事は、 良くも悪くも やってみた 的なものも多い 手早く動かすことを優先 細かい仕組み とかは、横に置いて 趣味の電子工作や 発想(アイデア)のトレーニング なら、それでよいが …
  • 組込み教育のツールとして使う場合 行き当たりばったり やってみた × 組込み開発の教育ツールとして使うには… 設計する V字モデルの開発工程を意識させる ドキュメントを書く 簡単なもので良い テスト・評価を行う 簡単でも良いから、これらを体験
  • 設計する・開発工程を意識させる 要求分析 外部設計 内部設計 詳細設計 実装 単体テスト 結合テスト システムテスト システム評価 デバッグ V字モデル型開発モデルを体験 要求定義
  • 古臭くてもいいから、設計させよう ディジタル・デザイン・テクノロジ No.14 CQ出版 2012年 P.108より引用 例えば、状態遷移図 を書いてみる できれば、イレギュ ラーやエラーも考慮
  • ディジタル・デザイン・テクノロジ No.14 CQ出版 2012年 P.108より引用 状態遷移図をステー トマシンとして実装 それをソフトに 落とし込む ステートマシンをソフトで実装 古くさいけど、FPGAなど でハードウェア化すると きに、移植しやすい
  • オブジェクト指向もいいけど 古くさいやり方の方が、わかりやすい 基本を理解するには、適している と、五十路オヤジ(私)は考える もっとも、学習ではなく、大規模開発や ソフトウェア部品の再利用…などを考える と今どきのオブジェクト指向などなど 必要かと
  • Arduinoの落とし穴 全ての処理をループで考えてしまう // the loop routine runs over and over again forever: void loop() { hoge; delay(500); hoge; delay(200); hoge; } 組込みのプログラムは コンテキストスイッチにより、 細切れのプログラム実行にな ることがよくある 割込みハンドラ RTOSの タスクスイッチング
  • ぶつ切れ、非同期のプログラム 組み込みマイコンのプログラムには、 ループだけではなく、ぶつ切れ、非同期のプログ ラムもある 割り込み RTOSによるタスクの切替え RTOSまで、言わないが、 「割り込み」は(少しでも)体験して欲しい Arduinoで割り込みを使うのは、 なにかと制約がある できれば、 裸の組込みマイコンで体験して欲しい
  • Arduinoの落とし穴 変数 メモリが少ないので、charを多用 へんな癖がつく ARM系Arduinoでは、この心配がない。 クリティカルセクション 割込み制御に制限 排他制御がやりにくい デバックしくい(デバッガが無い)  Serial.println() ; でIDEヘ送信する手法が多い
  • Arduinoと組込み教育 その1 Arduinoは組込み? その2 Arduinoを使った 組込み技術の教育のポイント その3 ブレッドボード電子工作のポイント
  • Arduinoのハード拡張 シールド(専用の基板)で拡張 機能が固定 動作が安定 ブレッドボードで電子工作 お手軽 半田付け不要 自由に電子回路を試すことができる 不安定 半田付けの スキル必要
  • ブレッドボードで電子工作 半田付け不要 お手軽!
  • お手軽・半田付け不要のデメリット 定番のLEDチカチカをブレッドボードで 部品の極性をよく確認せずに接続 LEDから煙・・・・・ 抵抗のカラーコードをよく確認せずに接続 わー明るい! ブレッドボートが、熱で溶けている トランジスタの ECB… オペアンプのV+、V- orz 「やってみた」的に適当につなぐと…壊れる
  • LEDと抵抗 A K 黄 紫 茶 470Ω
  • 先生!電源リセットしても直りません デジタル世代(ネイティブ)は、 思いもかけないことを言う (この発想は、無かった!) ハードウェアは一回壊れると、元に戻り ません!中の半導体が焼けて壊れていま す! 当たり前と思っていたことを、最初に、 きちんと説明しなければならない
  • でんしこうさく のやくそく(ちゅうい) プラス(+)とマイナス(-)をまちがえない でんせんはあかがプラス(+)、くろがマイナス(ー) ぶひん の とりつけをたしかめる ぶひんの しゅるい、いち、ほうこう、むきは あっている? ショートさせない でんきょくを、まちがってつなげないこと あそんだら、でんち をぬいていく プラス(+)とマイナス (-)を逆にすると部品が 壊われます 部品の種類、方向、位 置を確認してください 異なる電極を誤ってつ なぐと、ショート(短絡) して、発熱等の危険が あります。 事故防止のため、使用 後は、電池を抜いてく ださい 指導者・保護者のみなさまへ 1~2個の単3乾電池を使った電子工作は、電圧が低いので、危険性は高くはありませんが、念のため、子供たち が上記の注意点を守っているか、常に確認をお願い致します。万が一、異常な発熱、焼けたような匂い等を感じ られた場合、すぐに電池を抜いてください。
  • 考えてみれば… 例えば、小学校の理科の実験教材 モータと電磁石 最初から、エナメル線、磨いてある 3個の内、2個は、コイル巻いてある 配線は、コネクタのようなもの プラス、マイナスを間違わない その教材の 教員向けの説明書き 限られた時間で、必ず動く…(失敗しない)
  • 失敗しない実験って! 失敗しない、失敗をさせない実験 それって実験なの!?
  • そこで… やってはイケない(失敗する)ことを 実際に、体験してもらう 小さな危険体験で、大きな危険を抑止する 例えば、ブレッドボードで電子工作する 前に、LEDに乾電池2個(3V)つないで、 (電流制限抵抗なし)で、LEDが どうなるか、体験してもらう! あかるい!熱い!切れた…くさっー プチやけどする子も出たので、講師が実演…
  • 実演! ここでも、実演しようかと、おもいま したが、地下の会場で換気ができない ので、 自粛させていただきます。 「GFOで異臭騒ぎ…犯人は自称…」 明日の朝刊に載りたくありません
  • ハードウェアは壊れる ハードウェアは壊れることを キチンと説明する その上で、電子部品の説明を キチンとする キチンと配線する ショートさせない プラスとマイナス 端子、方向… 過電流・過電圧放熱 Ⓒシリコン教 不幸にして 逝ってしまったデバイス
  • できれば、正しく回路を組む 例 Arduinoなどのマイコンに、 アナログ出力の温度センサーをつなぐ LM35 ANALOG IN 良くある回路! でも、正確に動きますか 温度 センサー +5V GND Arduinoなどのマイコン OUT
  • LM35 温度センサー こんな3端子の温度センサー こんな形の 温度センサー
  • 良くある回路!が動かない 動くこともあるが、 思ったように動かないことも (精度が出ない、ずれが大きい…) 原因 AD変換器のインピーダンスミスマッチング ブレッドボートからの長い線にノイズがのる USB給電 PCの電源ラインからノイズ VCC が +5Vよりも低い などなど
  • 例 H8マイコンのADCの場合 (4) 許容信号源インピーダンスについて 本LSIのアナログ入力は、信号源インピーダンスが10kΩ以下の入力信号に対し、変 換精度が保証される設計となっております。これはA/D変換器のサンプル&ホー ルド回路の入力容量をサンプリング時間内に充電するために設けている規格で、 センサの出力インピーダンスが10kΩを越える場合充電不足が生じ、A/D変換精度 が保証できなくなる場合があります。単一モードで変換を行う場合で外部に大容量 を設けている場合、入力の負荷は実質的に内部入力抵抗の10kΩだけになります ので信号源インピーダンスは不問となります。ただし、この場合ローパスフィルター となりますので、微分係数の大きなアナログ信号(例えば電圧の変動率が5mV/ μs以上)には追従できない場合があります(図15.11)。高速のアナログ信号を変換 する場合や、スキャンモードで変換を行う場合には、 低インピーダンスのバッファを入れてください。 日本語で書いてあるので(汗;)
  • 要はインピーダンスとか インピーダンスとか電気的特性とか、 アナログ的なことを、 ちゃんと考えて接続しなさい ・・・と書いてある よくよく考えれば、 AD変換器って、アナログだ! デジタル回路みたいに、線でつなげば 良いわけではない! …で、 オペアンプでバッファを入れさせたが…
  • その他の要因 ブレッドボートからの線にノイズがのる 短くする、ツイストペア化、シールド線 結合(容量的、電磁的)しそうなものから 離す USB給電 PCの電源ラインからノイズ VCC が +5よりも低い 外部電源の使用 バッテリ給電など USB電源アイソレータ― なんか、とっても、アナログな対策!
  • ブレッドボート向きの回路 半田付けの基板とブレッドボートの回路 同じでいいの? ブレッドボートは、 部品や線が抜けたりして、 不安定になりやすい 場合によっては、部品や線が抜けたりし て、事故が起きることもある。 フィジカルコンピューティングの注意事項
  • 例えば、モータドライバ ディジタル・デザイン・テクノロジ No.14 CQ出版 2012年 P.118より引用 焼損!
  • 鉄道模型の電動ポイント駆動
  • フェールセーフを考えた ブレッドボート向きの回路 ディジタル・デザイン・テクノロジ No.14 CQ出版 2012年 P.118より引用 断線しても Hで安定 断線や接触不良を 前提に設定する
  • デメリットを逆手に取る ブレッドボートのデメリットを 逆手に取って… 安全性 フェールセーフ などを、考える教材にする
  • AC100VをON/OFFしたい 最近、 家電などのAC100VをON/OFFしたい との 要望があるようだ ネットワークを介したリモート制御 IoT( Internet of Thing) モノのインターネット がらみで 興味? ネットを見ると、ブレッドボートでAC100V を、扱う事例が見受けられる
  • 危険です! ブレッドボートでAC100V制御 感電!漏電!短絡!の危険があります 特に、非接地側(Line)を触ると 大変危険です! 接地側 (Neutral )は、大丈夫ですが… 少なくとも、接地側、非接地側がわかない人は、 触っては危険です。 とは、言っても AC100Vを制御したい場合
  • こんな方法もあります USB電圧検知 電源タップ
  • USB電圧検知電源タップとは USB電圧感知式の電源タップ例 (エレコム T-Y12USBA) USBコネクタがついており、 AC100Vをオン・オフできる USBの電圧を検知して、 AC100Vをオン・オフするタップ mbed/ARM活用事例 (2012年 CQ出版) より引用
  • DOS/V機用USBケーブル 先がバラバラのタイプの DOS/V機用のケース用 USBケーブルを使用 USB検知連動タップの USBコネクタに接続 先バラ
  • 安全なAC100V制御 USB感知式連動タップ ・エレコム USB電圧感知式PC 連動タップ T-Y12USBA ・サンワサプライ USB連動タップ TAP-RE8U (その他同等品) USBコネクタ 4 3 2 1 USB標準Aプラグ(オス) 1 電源(+5V) 2 データ(-) 3 データ(+) 4 GND 非 連 動 口 連 動 口 PC AC100V オス メス AC100Vの機器 arduino DOS/V機 ケース用 USBケーブル40cm Aメス―バラピン(オス) 黒 GND 赤 +5V 白 未接続 緑 未接続 緑・白 つながない digital out GND 黒 +5V 赤 GND(0V)
  • 安全のために 紹介した 安全なAC100V制御方法を つかっても、 無人のリモート運用は要注意 キチンとリモートで監視する 裸の火(電熱器)とかは、危険です 万が一を考えて、別の方法でOFFにできる 手法を組み合わせる。
  • ブレッドボード電子工作のポイント キチンと電子回路を組む 安全のためにも アナログは、デジタルのように つなげばOK とはいかない ブレッドボートを前提にした、 フェールセーフを考慮した回路 AC100Vを扱う場合は、安全な方法で リモート運用は要注意
  • そのほか・・・ 電波の事 2.4GHz凄いことに ノイズの事 電源の事… ネットワークのこと セキュリティのこと 伝えたいことは、 やまほどありますが、またの機会に…
  • Arduinoと組込み教育 まとめ その1 Arduinoと裸のマイコンの違いを意識する。 その2 開発工程や、設計、見える化、文書化などを意識 すれば、Arduinoも、立派な組込み技術の教材に なりうる! その3 ブレッドボードを使うときも、キチンと電子回路 を組む。フェールセーフや安全に注意する。 これらに、留意すれば、 Arduinoも良い 組込み教育のツールになる!
  • ご清聴ありがとうございました お問い合わせ 講演依頼・執筆依頼等は、 Tw:@tentenV3 もしくは、FB または http://triangle-ele.com/ のフォームから 大阪日本橋・ロボット連絡会 では勉強会を毎月開催しています 詳しくは、 http://roboba.jp/ まで