Physical Computing

Network and Information, Senshu Univ.

Menu
  • Home
  • Tips
  • About
  • admin

Month: November 2020

Raspberry Piを外部電源で動かす

November 29, 2020
| No Comments
| Tips

Raspberry Piを外部電源で動かす方法はいくつかあります。ここでは、できるだけ危険の少ない方法をいくつか検討します。剥き出しのリチウムイオンポリマー電池(LiPo battery)は危険なので、授業で作成するものに使ってはいけません。 モバイルバッテリーを使う これが一番安全で簡単な方法です。一つ注意しなければならないことは、モバイルバッテリーが供給できる電流(A)についてです。 モバイルバッテリーとRaspberry Pi Zeroの接続は簡単で、2つあるUSBのうち、PWRと印字がある、つまりいつもUSBケーブルをつないでいない方に接続します。 大概のモバイルバッテリーは出力として最大1A(アンペア)以上の電流を供給できるようになっています。1Aというのは最大値です。接続するデバイスがどのくらいの電流を要求するのかによって、実際に流れる電流は変わります。 Raspberry Pi ZeroはRaspberry Piの中では一番消費電力が小さいボードになります。Raspberry Pi Zeroに何もつなげていない場合には250mAくらいの電流が流れるようです。とういうことは0.5A(500mA)くらいの出力能力があるモバイルバッテリーであれば大丈夫である気がします。ただ、この辺は余裕を見ておくことに越したことはないので、モバイルバッテリーは1A以上のものにしましょう。現在販売されているモバイルバッテリーは、ほとんどこの条件を満たしていると思われますので、困ることはないでしょう。 接続例で使ったモバイルバッテリーの性能は以下のようになっています。 出力は5Vで1.0Aです。容量は2600mAhとなっています。Ah(アンペアアワー)は、電流と時間の積です。このモバイルバッテリーは、フル充電の状態からRaspberry Pi Zeroが260mAの電流を消費し続けると10時間で空になるということになります。実際にはもっと短い時間で動かなくなるでしょうね。 乾電池を使う 電池には色々な種類があります。まずは9Vの角形電池を使うことを考えます。Raspberry Piは5Vで動作します。よって9Vでは電圧が高すぎることになります。これを解決してくれるのが電圧レギュレータというものになります。電圧レギュレータは、単に9Vを5Vに減圧してくれるだけでなく、微細な電圧の乱れも取り除いてくれます。 電圧レギュレータは3端子レギュレータというICを使って自作することもできます。しかし、少し面倒なので簡単に利用できるボードを使うことをお勧めします。以下のような製品ですね。 https://www.switch-science.com/catalog/2243/ このレギュレータキットは、半田付けしなければならない部品が少しありますが、そんなに面倒ではありません。入力電圧は6V〜12Vですから9Vの角形電池が使えます。出力は5Vと3.3Vが選べるようになっています。 入力電圧が6Vということは、単3電池4本でも使えるということです。ただし、充電式の単3電池は1本1.2Vしかありませんので合計4.8Vとなり、使えない可能性が高いです。 同じような製品は秋月電子でも入手可能です。しかし、こちらは入力電圧が7.2Vから35Vとなっているので単3電池4本の場合には使えません。 https://akizukidenshi.com/catalog/g/gK-12146/ 単3電池2本で動かす 単3電池2本では3.0Vしかないので、そのままではRaspberry Pi Zeroを動かすことはできません。3.0Vを5.0Vに昇圧するためのデバイスが必要となります。このようなデバイスを「昇圧DCDCコンバータ」などと呼びます。 ここでは例として以下の製品を使っています。ただし、これは現在スイッチサイエンスでは手に入らないようです。 https://www.switch-science.com/catalog/1872/ 写真ではUSBケーブルの部分が切れているのでわかりづらいかもしれませんが、DCDCコンバータからの出力はUSBケーブルでRaspberry Piにつながっています。 この例で使っているDCDCコンバータは出力電流が最大1.5Aとなっています。しかし、DCDCコンバータによっては、この供給できる電流の最大値が0.2Aくらいしかないものがあります。そのようなものは使えません。 秋月電子だと以下のような製品になると思います。 https://akizukidenshi.com/catalog/g/gK-11212/ 昇圧DCDCコンバータで、出力できる電流が1Aくらいあるものとなると値段が高くなるのが辛いところです。 コイン型電池(ボタン電池)は3Vのものが多いです。試しにCR2032というよく見かけるコイン型電池とDCDCコンバータを組みわせてRaspberry Pi Zeroを動作させられないか試してみましたがダメでした。250mAの電流を供給できないようです。

Read More »

Posted in Tips

10 実現可能性分析

November 23, 2020
| No Comments
| Class materials

今日は、開発プロセスのうちの2と3を行います。 企画(マップ作成) 部品リスト作成 実現可能性分析 ブロック図作成 回路図作成 実装 テスト お知らせ: 1/14(木)に最終作品の発表会を行います。1/14だけでは終わらない可能性がありますので、1/21(木)を発表予備日とします。1/21まで授業があると予定しておいてください。 目次 10.1 部品リスト 10.2 実現可能性分析 10.3 部品の購入と使用準備 10.4 実習 10.1 部品リスト 使用する部品のリストを作ります。Excelを使っても良いし、WordやPagesでも良いです。このリストには、使用する部品の具体的な製品を挙げます。 部品ごとに以下の情報を調べてください。 部品の名前: 例えば「カラーセンサー」や「デジタルコンパス」など 型番: 例えば「S11059-02DT」。秋月電子通商やSwitch Science、Amazon等で調べて型番を書きます。 価格: 部品の価格を書きます。 URL: 秋月電子やSwitch Scienceにある部品のページのURLを書きます。 最後の行に部品リストの価格の合計を入れます。この合計の目安が2,000円ということになります。Raspberry PiやGrove Base Hat for Raspberry Pi Zeroは部品リストに入れません。その他、抵抗やLED、厚紙、ビニールテープなどのありふれたものも入れません。 10.2 実現可能性分析 せっかく良いアイディアがあっても、モノが出来上がらないのではどうしようもありません。モノが出来上がらない理由は色々とあります。 技術的に難しい 金額的に難しい 時間的に難しい これらの事柄を検討することを実現可能性分析(フィージビリティ分析)と呼びます。 この演習の実現可能性分析では、部品リストに挙げられているデバイスをRaspberry Pi ZeroとGrove Base Hat for Raspberry […]

Read More »

Posted in Class materials

加速度センサ(MMA8452Q)の使い方

November 20, 2020
| No Comments
| Tips

ここでは、MMA8452QというICを使った加速度センサの使い方を説明します。製品としては、以下のようなものになります。 https://akizukidenshi.com/catalog/g/gK-12069/ 配線 配線の仕方は以下のようになります。矢印の左に書いてあるのが加速度センサのピンで、右がRaspberry PiのGPIOです。 3.3V → 1番ピン(3.3V) SDA → 3番ピン(GPIO 2(SDA)) SCL → 5番ピン(GPIO 3(SCL)) GND → 6番ピン(GROUND) 上記の写真は別の製品ですが、同じMMA8452Qを使っていて使い方も全く同じになります。 ライブラリ このMMA8452QはI2Cでマイコンと通信します。MMA8452Qのデータシートを見ると自分でライブラリを作ることができます。 https://www.nxp.com/docs/en/data-sheet/MMA8452Q.pdf ただ、自分で作るのは面倒なので、以下のPythonプログラムをMMA8452Q.pyというファイル名で保存して使ってください。ネットを検索すると使い方は色々と引っかかるのですが、その内の多くは、なぜか間違っています。ここに掲載するものは、それらを修正したものとなります。 I2Cで通信するために、smbus2というライブラリを使用しています。以下のようにしてRaspberry Piにsmbus2がインストールされているか確認してください。 以下のように表されればインストールされています。バージョンは多少違っていても大丈夫です。 もし、インストールされていない場合には以下のようにしてインストールします。 使い方 MMA8452Q.pyはライブラリですが、このままでもテストプログラムが動きます。 加速度センサを配置したブレッドボードを平らなところにおいて実行すると、以下のような出力が得られるはずです。 MMA8452Qは設定で、+-2g、+-4g、+-8gの範囲を12bitで計測できるようできます。gは重力加速度です。MMA8452Q.pyのテストプログラムでは+-2gの設定になっています。 先ほどの出力を見てみると、X軸方向とY軸にはほぼ0、Z軸方向に1034という加速度がかかっていることが分かります。12bitで計測していますから、値の範囲は-2047から2048までです。1034ということは、2048のほぼ半分、つまり1gがかかってるわけです。 加速度センサは止まっていても重力加速度がかかります。平にしているときにはZ軸方向に重力加速度がかかるということになります。これを90度回転させるとX軸方向かY軸方向に重力加速度がかかります。これを利用するとデバイスの傾きが検知できます。 自分で加速度センサを使ったプログラムを書くときには、MMA8452Q.pyを同じディレクトリに置いて以下のようにします。 initialize()というメソッドは、加速度センサの値を読み込む前にプログラム中で1度だけ呼び出す必要があります。update()メソッドを呼び出すたびに値が再計測されます。

Read More »

Posted in Tips

9 企画

November 16, 2020
| No Comments
| Class materials

目次 9.1 最終作品 9.2 開発プロセス 9.3 企画 9.4 マップを描く 9.5 Tips 9.6 できること、できないこと 9.7 リンク集 9.8 実習 9.1 最終作品 最終作品は、以下のようなものです。 電子玩具 生活の役に立つ何か 社会の役に立つ何か 不思議なオブジェ インタラクティブアート IoTのようなものでも良いですし、ガジェットのようなものでも良いです。これまで授業で学修した内容を応用した作品にしてください。 ここで作る最終作品はプロトタイプだと考えてください。よって、実際の理想型とは違っていても構いません。プロトタイプを動かすことによって、理想型イメージが他者に伝わればOKです。 例えば、農業を支援してくれるようなシステムを作るとしましょう。実際に畑に設置して動かすことはできませんから、100均で植木鉢を買ってきて土を入れ、乾燥度合いを測って自動的に水やりをするようなものを作ることになります。 最終作品を制作するにあたっては、様々な部品が必要となります。この部品の総額は2,000円を目安としてください。もちろん2,000円よりも少なくても良いですし、超えても問題はありません。 9.2 開発プロセス 最終作品は以下のような手順で作成します。 企画: アイディアを固めてマップで表現する。 部品リスト作成:どういう部品を使うかを決める。 実現可能性分析:アイディア通りに作品を実装することができるのかどうかを調べる。部品リストに挙がっているデバイスの使い方などを調べる。 ブロック図作成:システムを構成する要素を洗い出し、それらがどのように関連するのかを定義する。 回路図作成:エレキの部分を設計する。 実装:メカ・エレキ・ソフトの実装を行う。 テスト:作成したものがアイディアを正しく実装しているかどうかテストする。 9.3 企画 作品の構想にはマップを使います。このような用途でマップを使うときには2枚描いた方が良いです。1枚は全くアイディアのイメージが湧いていない段階で描くもの(ブレインストーミングのためのマップ)、2枚目はアイディアを固めるために描くものです。1枚目のマップは自分の頭の中を整理するためのもので、人に見せるものではありません。 ブレインストーミング用のマップ アイディア視覚化のためのマップ アイディアというものは、ただ唸っているだけでは出て来ません。関連する様々な情報を頭にインプットしてかき混ぜたり、分類したり、組み合わせたりする必要があります。そのためにマップに書き出してみるということを行います。 企画にはストーリーが重要です。そのストーリーを誰かが聞いた時に、共感してもらえるものが良いです。「それ面白そうだね」「それは便利だね」「私もそれが欲しい」、そう思ってもらえるものがストーリーです。 9.4 マップを描く この演習では、マインドマップのような図を描くためにcoggleというツールを使います。以下のURLにwebブラウザでアクセスしてください。 https://coggle.it/ coggleは、googleのアカウントでサインアップするようになっています。大学のgmailアカウントを使ってください。 マインドマップのような図は、これまでも何度か書いているのでごく簡単な説明をすることに留めたいと思います。coggleを使ってマップを描くときには図の真ん中にメインテーマを置きます。このテーマから枝を伸ばして行って想起されることをどんどん書いていきます。この枝をブランチと呼びます。結果的には、中心から周りに向かってブランチが広く伸びていくような図が出来上がります。 以下のようなことに気をつけて描きます。 重要だと思うことは大きく描いたり色をつけたりする […]

Read More »

Posted in Class materials

8 IoT

November 9, 2020
| No Comments
| Class materials

今週はIoTの演習です。 目次 8.1 IoTとは? 8.2 IoTプラットフォーム 8.3 ThingSpeakにデータを送信する 8.4 ThingSpeakからデータを受信する 8.5 応用 8.6 実習 8.1 IoTとは? 少し前から、普通の新聞等でもIoTという言葉をよく聞きますね。これはInternet Of Thingsの略で、モノとモノがインターネットを通じて通信することで構築されるシステムのことです。ここでいうモノとは、コンピュータと通信機能が搭載された物であればなんでもよくて、家電製品や監視カメラ、センサーを搭載したデバイスなどのことです。 インターネットは、その黎明期には電子メールやWWW、電子商取引などに使われるネットワークとして認識されており、人と人、あるいは人とモノの間のネットワークというイメージでした。IoTはそれを拡張して、モノとモノもインターネットにつなげると色々な可能性があるよ、ということなのです。 IoTは、概念としては全く新しいものではないのですが、マイコンや無線通信のデバイスが安価で小型になったこと、大量のデータを処理することがクラウドコンピューティング技術の進歩によって容易になったこと、AIが進歩したことなどにより、様々な応用分野が現れ広く認知されたというべきでしょう。語呂(語形?)が良かったことも流行った一因だと思います。 所詮は流行り言葉なので、IoTという言葉自体はすぐに消えていく運命にありますが、技術それ自体とそれがどのように応用可能であるかは、きちんと理解しておく必要があります。この演習では特に、IoTがどのように応用可能であるかに焦点を当てて学修していきます。 IoTで何が実現できるのか IoTを活用すると、どんなことができるのでしょうか。製品をベルトコンベア式に生産する工場を考えてみましょう。工場には生産目標があり、そのための生産計画があります。順調に生産が行われていれば利益が出るのですが、ベルトコンベアや生産設備に故障が起こると生産がストップして損が出ます。最適解は故障が起こる直前で生産設備の部品を交換することですが、生産設備の数が多いのでなかなか難しいです。また、問題が発生した時に、どこが壊れたのかが即座にわかると嬉しいです。そのために、多数ある生産設備にセンサーをつけて、機器の状態をサーバに逐一送ることが考えられます。例えば、機器の温度を測ったり、機器から発生する音を録音したりして、そのデータを蓄積するわけです。蓄積されたデータを解析することによって、温度が何度になったら故障の前兆であるとか、機器からどんな音がし始めたら故障の前兆であるかなどのことが分かるかもしれません。 要するにIoTは、監視作業や計測作業の自動化、少し面倒な作業の単純化などをやる仕組みということですね。監視作業や計測作業の自動化をすれば、当然膨大なデータが蓄積されます。これを世の中ではビッグデータなどと呼んでいて、そのデータを解析し問題の最適化を行うためにAIを使ったりするというわけです。そいういう文脈では、IoTとビッグデータとAIはセットで語られることが多くなっています。 この演習では、データの分析・解析及び最適化については扱いません。モノとモノとが通信するというところだけを取り出して演習をしてみたいと思います。 8.2 IoTプラットフォーム IoTプラットフォームというのは、IoTのエッジデバイスを管理したり、エッジデバイスからデータを集めるインターフェイスを提供したり、集めたデータを加工したりすることを助けてくれるシステムです。IoTにおけるエッジデバイスとは、センサなどを搭載して情報を収集する役割を持つデバイスのことです。 ここでは、ThingSpeakというIoTプラットフォームを使います。11/12(木)の演習までに、ThingSpeakのアカウント登録を終わらせておいてください。 https://thingspeak.com/ ThingSpeakは、IoTのエッジデバイスから情報を収集してデータを視覚化したり、他のWebアプリなどにデータを渡す中継基地のような役割をはたしたりしてくれます。 上記の図を見ると分かるように、エッジデバイスとThingSpeakの間は、モノとモノがインターネットを使って通信します。 ThingSpeakは無料で使用することができますが、いくつか制約があります。 1日あたりの送信データが8,200以下 データの送信は15秒以上間隔が必要 チャネル数は最大4つまで プライベートチャネルは最大3つまで この中でも特にデータの送信間隔に注意してください。データを送信する際には30秒くらいの間隔を開けるようにするのが良いでしょう。 通信プロトコル エッジデバイスとThingSpeakの間はhttpsを使って通信します。httpsは、SSLを使ってhttp通信をします。SSLとは、TCP通信を暗号化し通信経路における情報の盗み見、改竄などを防ぐためのプロトコルです。 httpsはhttpをSSLの上に載せただけなので、プロトコルとしてはhttpということになります。現在広く使われているhttpのバージョンはHTTP/1.1です。これ以降httpと言えばHTTP/1.1のこととします。 httpはクライアントサーバ型のシステムにおける通信を規定しています。今回の場合、クライアントはエッジデバイスで、サーバはThingSpeakです。 httpには8つのメソッドがあります。しかし、実際に使われるのはGETとPOSTの2つです。 GETは、クライアントがURI(URL)を指定してサーバにリソースの要求をする際に使います。 POSTは、クライアントがURI(URL)を指定してサーバにデータを送信する際に使います。サーバはデータ受信後にクライアントにデータを返すことができます。 エッジデバイスからThingSpeakにデータを送る際にはGETメソッドを使います。データを送信するのだからPOSTメソッドでは、と思いますよね。実はGETメソッドを使ってもサーバにデータを送ることができます。 上記のURLの?以降はGETパラメータと呼ばれている情報で、サーバ側ではこの情報を取り出して使うことができます。GETパラメータは正式にはクエリと呼ばれる部分ですが、一般的にGETパラメータと呼ばれているので、ここでもそのまま使います。?以降の部分は&で区切られています。上記の例の場合、以下の3つのパラメータがあります。 api_key=APIキー field1=2 field2=5 これらをキーバリュー形式のデータだと思うと、api_keyやfield1、field2の部分はキーにあたり、APIキー、2、5が値(バリュー)にあたります。 GETパラメータで渡されたデータは、もちろんサーバ側できちんと取り出しのための処理をしなければいけません。ThingSpeakはそれを良いようにやってくれるという訳です。 httpsのGETメソッドを使ってエッジデバイスからサーバにデータを送るというやり方は、色々な場面で良く使われるので頭に入れておくと良いでしょう。 8.3 […]

Read More »

Posted in Class materials

Posts navigation

1 2 Next

Recent Posts

  • NE22の学生さんたちへ
  • 13 発表会
  • 12 発表準備
  • 11 実装
  • 10 要素テスト

Archives

  • July 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • January 2020
  • December 2019
  • November 2019
  • October 2019
  • September 2019
  • August 2019
  • January 2019
  • December 2018
  • November 2018
  • October 2018
  • September 2018
  • January 2018
  • December 2017
  • November 2017
  • October 2017
  • September 2017
  • July 2017
  • January 2017
  • December 2016
  • November 2016
  • October 2016
  • September 2016

Categories

  • Announcement
  • Class materials
  • Tips
  • Uncategorized

Meta

  • Log in
  • Entries RSS
  • Comments RSS
  • WordPress.org

Physical Computing 2023 | Powered by WordPress.