質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.86%

  • Python

    6293questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • Raspberry Pi

    664questions

    Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Raspberry Pi3におけるGPIOのショート

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 800
退会済みユーザー

退会済みユーザー

前提・実現したいこと

Raspberry Pi3のGPIOを使って、あれこれする前に、まずは電源の制御、Lチカをやろうとしています。(電気回路のことが心配での相談です)

発生している問題・エラーメッセージ

ショート回路が危険、ということは分かるのですが、GPIOを使ってスイッチの制御をしようとするとGPIO(3.3V)-->スイッチ-->GNDの回路となり、ほぼ抵抗のない回路になります。
V=RIですので、3.3[V]=0.00...[Ω] x I[A]、I[A]=膨大な数になるように思われます。一方RPiのGPIO1回路の制限は、1回路あたり16[mA]=0.016[A]となり、恐らく制限を超えてしまうように思われます。

pupさんのブログの写真が分かりやすいのですね。

イメージ説明

Q.1 このようにして回路が破損しない理由を教えていただけないでしょうか?

Q.2 GPIOには、出力(3.3Vかける)モードと入力(3.3Vがかっているか)モードがあるのですが、 GPIO-->スイッチ-->GPIOの構成でも安全に手で押したことを検出できるスイッチを作ることができるのでしょうか?

該当のソースコード

(ショートによる破損の話のため割愛します。)

試したこと

Raspberry PiのGPIO関係のブログを見ましたが、恐らく初歩的過ぎてどこにも書かれておらず、行き詰っています。ブログに書いてある通り回路をつなげば動くのでしょうが、理解しないで回路を作ることが危険だと思い相談に至りました。

参考)
ツールラボ
くらげのIoTテクノロジー

補足情報(言語/FW/ツール等のバージョンなど)

Raspberry Pi
Python3

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+3

Q.1 このようにして回路が破損しない理由を教えていただけないでしょうか?

GIPOを使ってスイッチの制御をしようとするとGIPO(3.3V)-->スイッチ-->GNDの回路となり、ほぼ抵抗のない回路になります。

o : GPIO
x : GIPO

GPIOが入力モードになっていて、スイッチの状態を取得したいということですよね?

であれば、そもそも入力ピンの電圧は3.3Vではありません。GNDでもありません。
"ハイインピーダンス"になっています。

ハイインピーダンスがどういう状態かを乱暴な説明で言えば、
大きな抵抗値を直列に挟んで適当な電圧につながっています。

なのでその抵抗値によってショートしません。

Q.2 GIPOには、出力(3.3V流す)モードと入力(3.3Vが流れているか)モードがあるのですが、 GIPO-->スイッチ-->GIPOの構成でも安全に手で押したことを検出できるスイッチを作ることができるのでしょうか? 

できます。が、やる意味は思いつきません。

なお言葉の細かいことですが、電圧を流すと言う表現はおかしいです。
かけるか出力するものです。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/10/13 18:16

    指摘と回答をありがとうございます。

    *誤植の件
    気づかなければ平気だったものが、分かると気持ち悪い(&恥ずかしい)ので修正させていただきました。
    - GIPO-->GPIO
    - 電圧を流す-->電圧をかける。

    *Q.1 ショートの件
    > そもそも入力ピンの電圧は3.3Vではありません。GNDでもありません。
    GPIOの入力ピン(信号待ち?)の初期状態は、3.3Vでもなく(受け側も3.3Vだったら信号を拾えないですね)、GND(GNDだったら電圧計?がないので信号が拾えないですね)でもなく、プルアップかプルダウンという第三の状態だということですね。”ハイインピーダンス"というキーワードを元に、以上の話と、"gpio readall"で確認できるというところまで調べることができました。

    参考)
    http://pc.watch.impress.co.jp/docs/column/nishikawa/1006048.html

    *Q.2 GPIO-->スイッチ-->GPIOの件
    > できます。が、やる意味は思いつきません。
    できます、とのことでひとまず安心しました。
    質問に至った動機は、RPiのピンに何本もさせるのだろうか?と心配したことと、なるべくアウェイ(電気的なこと)よりもホーム(Python的なこと)で事足りるようにしたいなぁ、と思ったためです。

    キャンセル

  • 2017/10/13 19:06

    それで納得できたんならひとまずはいいです。

    プルダウンは
    例えば
    3.3V -> スイッチ -> 入力ピン(Hi-Z)
    というつなぎ方した時に、
    スイッチをoffにすると入力ピンが電圧的に何処にもつながっていない状態になるので、
    抵抗を介してGNDに引っ張る(プル)という行為・機能です。
    プルアップは3.3Vに引っ張ります。

    キャンセル

+2

ツールラボのリンクの最後のほうにも書いてありますが、ソフトウエアでプルアップ・プルダウン抵抗を設定する機能があるので、それを使っているのではないかと思います。

pupさんが参考にしたブログのほうにその旨書かれています。

Raspberry Pi内部のプルダウン抵抗を使用しているため、ボタンにはプルダウン抵抗を接続していません。WiringPIのmodeオプションの引数にdownを指定すると、内部のプルダウン抵抗が有効になります。upとすればプルアップ、offとすれば無効になります。

引用元
http://blog.livedoor.jp/victory7com/archives/42423877.html

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/10/13 18:29

    > ソフトウエアでプルアップ・プルダウン抵抗を設定する機能がある
    これですね。

    しかも、ツールラボのリンクのコメント欄に、私と同じことをキャップさんが質問し、claynetsさんが以下のように答えていました。
    > 性質1) GPIOピンを出力にした場合、そのGPIOピンはなるべく電流を流そうとする性質を持ちます。
    > 性質2) GPIOピンを入力にした場合、そのGPIOピンはなるべく電流をもらわないような性質を持ちます。

    だとすると、私の質問の
    Q.1の +3.3V-->GPIO で破損しない理由は性質2の話ですね。
    Q.2の GPIO-->スイッチ-->GPIO で壊れない理由は性質1と2の組み合わせですね。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.86%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    I2Cのアドレス0へのアクセスの可否について

    RaspberryPi(以下、RPi)でI2Cデバイスを使用するときに、I2Cアドレスを選択します。 RPiでi2cdetectコマンドを用いると、使用できる(使用中の)デバイスの

  • 解決済

    RaspberryPiでロータリーエンコーダを使う

    前提・実現したいことロボットの動作の処理を行うRasPi2のMainプログラムで ロータリーエンコーダの信号を wiringPiISRの割り込みを使って読み取り、回転速度の計算を行

  • 解決済

    2重ルーターでのポート開放する方法

    2重ルーターでのポート開放する方法を教えてください。 使用機器:RaspberryPi3(ポート開放接続先)   ルーター:AtermBL-900HW(auから提供されたも

  • 解決済

    温度、湿度のスクリプトが正常動作しない

    AdafruitDHT.pyから温度用temp.py,湿度用humid.pyを作成 temp.py、tempスクリプト URL blog.bnikka.com/raspber

  • 解決済

    CentOS7でWebページ公開

    前回からの続き的な質問になるんですが、前回UbuntuでWeb公開をやっていて、回答どうりにやてもうまく行かなく、今回CentOS7(1611)を導入してやっているんですが、これも

  • 受付中

    ER図について

    つぶやきアプリを作っているのですが、 ER図を作るとする例えばどんなものがありますか?? サンプル程度でいいので教えていただきたいです

  • 受付中

    kivyが全画面表示になってしまう

    raspberry pi2上でkivyのアプリケーションを作っているのですが、必ず全画面で実行されてしまいます。なんとか全画面表示を解除する方法はありませんか? ちなみに調べ

  • 解決済

    センサーで感知すると天気予報を喋るプログラムの作り方

    前提・実現したいこと Raspberry piにセンサーを接続させて、天気予報を喋らせるというプログラムを実行したいのですがエラーがでて実行できませんでした。  センサーを接続させ

同じタグがついた質問を見る

  • Python

    6293questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • Raspberry Pi

    664questions

    Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。