Arduino(アルドゥイーノ)始めます -2ページ目

I2Cバスリピーター PCA9515ADを試す

Kです。
秋月のI2C液晶がラズパイで使用できなかった件、秋月のサイトを見てみると
I2Cバスリピーターを使用すると良いと書いてありました。
http://akizukidenshi.com/catalog/g/gI-10882/

さっそくためしてみました。
接続は下のpdfを参考にして
http://akizukidenshi.com/download/ds/akizuki/I2C-LCD_Raspberry_Pi_repeater.pdf

下のように接続しました。


VRで分圧する方法で書き込むと16回でエラー停止していました。
抵抗

I2Cリピーターを接続すると、63回で停止していました・・・


何回か試すと170回で止まったり26回で止まったりなどしていました。
プログラムで何か工夫したほうが良いのかもしれませんね・・・

ーー使ったスケッチ(AdafruitのDHT11サンプルを改変したものです。lcd_07はブルーバックスのサンプルプログラムです)--
#!/usr/bin/python

# Copyright (c) 2014 Adafruit Industries
# Author: Tony DiCola

# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:

# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.

# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
import Adafruit_DHT
import lcd_07
from time import sleep

# Sensor should be set to Adafruit_DHT.DHT11,
# Adafruit_DHT.DHT22, or Adafruit_DHT.AM2302.
sensor = Adafruit_DHT.DHT11

# Example using a Beaglebone Black with DHT sensor
# connected to pin P8_11.
#pin = 'P8_11'

# Example using a Raspberry Pi with DHT sensor
# connected to GPIO23.
pin = 4
cnt = 0

try:
while True:
cnt += 1
# Try to grab a sensor reading. Use the read_retry method which will retry up
# to 15 times to get a sensor reading (waiting 2 seconds between each retry).
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)

# Note that sometimes you won't get a reading and
# the results will be null (because Linux can't
# guarantee the timing of calls to read the sensor).
# If this happens try again!
if humidity is not None and temperature is not None:
print('Temp={0:0.1f}*C Humidity={1:0.1f}%'.format(temperature, humidity))
print(cnt)
lcd_07.clear()
lcd_07.write_string('T=' + str(temperature) + 'C' + ' H='+ str(humidity) + '%')
else:
print('Failed to get reading. Try again!')

sleep(1)

except KeyboardInterrupt:
print("end")
pass

ラズベリーパイでSPI接続ADC

Kです。
今読んでいるラズパイ本の最新版が発売されたみたいですね・・・


今読んでいるもの
Raspberry Piで学ぶ電子工作 超小型コンピュータで電子回路を制御する (ブルーバックス)/講談社

¥1,166
Amazon.co.jp

最新版
カラー図解 最新 Raspberry Piで学ぶ電子工作 作って動かしてしくみがわかる (ブル.../講談社

¥1,296
Amazon.co.jp

MCP3208というADCを使うサンプルプログラムも試しています。
06-01-print.py

そのままでばっちり動きました。
ついでなのでボルト表記にしてI2C液晶へ表示するようにしました。
import lcd_07
を追加、
try:の中を下のようにしておきました。

--
try:
while True:
inputVal0 = readadc(0, SPICLK, SPIMOSI, SPIMISO, SPICS)
print(inputVal0)
volt = 3.3*inputVal0/4095
print(str(round(volt, 4)) + 'V')
lcd_07.clear()
lcd_07.write_string(str(round(volt, 4)) + ' V')

sleep(0.2)

--
下のように表示されます。



pythonではround関数で小数点以下の桁数を指定できるようです。
桁数指定しないと

桁が多すぎるので、


round(volt, 4)にして4桁までとしました。

Windowsのプロダクトキーを確認する

Kです。

現在諸事情によりノートパソコンをメインに使っています。

が、win10にアップデートしてから調子が悪く、
昨日ついにエクスプローラが開けない(画面が一瞬暗転する)状態になってしまいました。

仕方がないのでクリーンインストールを行いました。
その際、念のためプロダクトキーを控えておくほうが良いそうです。

プロダクトキーの確認にはRJL Software Windows Product Kye Viewerを使用するとよいとのことです。
下のウェブサイトからダウンロードして起動するとプロダクトキーが表示されるので、
こちらを控えてクリーンインストール時に入力したところ正しくインストールできました。
http://www.rjlsoftware.com/software/utility/winproductkey/


標準ブラウザのedgeだとアメブロの画像viewerも開けないですし、win10あまり使い勝手良くないですね…

--追記--
上のURLにつながらないことが結構あるようです。
その場合は下ののprodukeyというソフトも同じ用途に使えます。
http://www.nirsoft.net/utils/product_cd_key_viewer.html

ラズベリーパイでDHT11

いろいろなボードで接続しているDHT11ですがラズベリーパイでも試してみました。

http://blog.bnikka.com/raspberrypi/dht11-raspberrypi.html
こちらのブログを参考にライブラリをインストール。動作確認を行いました。

ちゃんと動いているようなので、前回のI2C液晶と組み合わせてみました。

1.
http://bluebacks.kodansha.co.jp/special/rspi.html
のサンプルファイルの07-02-LCDを07_lcd.pyに名前を変更、
setup_aqm0802a()より下のif文、else文を全部削除しました



2.AdafruitDHT の examples フォルダ内 simpletest.pyを画像のように変更。


名前を変更して、07_lcd.pyと同じフォルダにおいてIDLEから起動させると



LCDに温湿度が表示されました。

Pythonって便利だなあと思うのが
print('T=' + str(temperature) + 'C' + ' H='+ str(humidity) + '%')
で文字と+数字(float)を文字に変換したものを一行で表示できちゃうところです。楽ですね。

Fritzing パーツデータ AE-AQM1602A(KIT)

前回の記事のI2C LCDのFritzing用パーツデータ

AE-AQM1602A(KIT)を置いておきます。
ボード図のみで回路図は作成していません。
微妙にサイズ違っています。自由に直して使ってください。

https://drive.google.com/file/d/0B-auPsKrMUj_dmhyaDhNVmlVa3M/view?usp=sharing

商品:
http://akizukidenshi.com/catalog/g/gK-08896/


Inkscapeの使い方がわからないうえに
スペック不足からかFritzingが落ちまくるのでかなり時間がかかりました・・・。

ラズベリーパイ  I2C接続小型キャラクタLCD

Kです。

前回の記事ではラズベリーパイI2Cに失敗しましたが、
http://raspibb.blogspot.jp/2016/04/blog-post.html
と前回の記事のSさんのコメントを参考に再チャレンジしました。

リード抵抗を使用したかったのですが、
家にリード抵抗がなかったので半固定抵抗(103)をテスタで抵抗値測って調整しながら無理やり行いました。

まずはサポートページの方法で2k程度の抵抗でSDAをGNDに落とす方法だと、



ターミナルにsudo i2cdetect -y 1
と打ち込んでも3eが出てこない状態で動きませんでした。
VRまわして抵抗値を低くすると沢山アドレスが出てきてしまい正常に動きそうにありませんでした。



次にコメントにあったSDAを分圧する方法


では、
ラズパイSDA - 20Ω - LCD SDA - 9.99kΩ - GND
くらいの値にVRを調整すると正常に認識し、Hello World と表示されました。

オシロもないので何が起こっているのかわかりませんが無事に動いたということで…

--追記--

whileループを使って連続で書き込むプログラムを試してみたところ、
90回目で認識エラーが出てしまいました。
なのでまだ完全な解決ではないようです。


ラズベリーパイ GPIO INPUT

Kです。
前回のラズパイI2C、最近のI2C LCDだと電流の吸い込みが足りずにうまく動きませんでした。
下のサポートページにある通り、I2C認識しないようでした。
http://raspibb.blogspot.jp/



GPIOのINPUTはうまく動きました。
本にある通り、GPIOのINPUTピンの立ち上がりを認識してLEDをON/OFFするプログラムです。


プログラム動いているのかどうかわかりにくかったので、
開始時/終了時にIDEに"running..." と"exit"と表示するようにしています。

プログラムの解説があってわかりやすい本なので初心者的にはすごく面白いのですが
I2C液晶が動かないとなるとちょっと困りました…

ラズベリーパイ Python環境でI2Csmbusが使えないときは

Kです。
前回の本でI2Cの紹介があるのですが、
私の環境ではI2Cが使用できるように設定しても
bus = smbus.SMBus(1)
IOError: [Errno 2] No such file or directory

というエラーが出て使用できませんでした。

検索するとターミナルからsudo apt-get installで
python-smbus
i2c-tools
をインストールすると直ると書いてありましたが、実行するとすでにインストール済みとの表示でした。


そこでターミナルから

sudo raspi-configで設定画面を出して



Advanced Settingを選び



I2C


はいを押す

と上記のエラーは出てこなくなりました。

ラズベリーパイのGPIO

Kです。
下の本を借りました。
Raspberry Piで学ぶ電子工作 超小型コンピュータで電子回路を制御する (ブルーバックス)/講談社

¥1,166
Amazon.co.jp


ラズベリーパイではGPIOの制御にPythonという言語が使えるみたいです。
上の本でIDLE(PythonのIDE)でプログラミングをしてGPIOを動かす方法が乗っていたので試してみました。

まずはターミナル(Windowsでいうコマンドプロンプトのようなイメージでしょうか?)
から"sudo idle &"と入力し、idleを管理者権限で起動します
IDLE 起動

IDLE画面から新規でプログラムを入力して、
プログラム

実行すると、GPIOがHIGH/LOWされました。




ちなみにPythonは"paiza コードガールこれくしょん"というゲームで遊びながら学習できるそうですよ!

ESP-WROOM-02で使えるクラウドサービス

Kです。
この記事で使用したXivelyよりも簡単に使用できると評判のサービスがありました。

EasyIoT Cloud betaというサービスです。


BuildページDHT22を使ったクラウド温湿度計のビルド方法が紹介されています。

上の紹介ページのスケッチ

20-23行目
#define AP_USERNAME "xxx"
#define AP_PASSWORD "xxx"
#define INSTANCE_ID "xxx"
xxxを自環境のWifiのSSIDとパスワード、EasyIoTCloudbetaアカウントのインスタンスIDに変更、

180行目

dht.setup(2); // data pin 2
をWROOM-02に合わせて変更するだけでリモート温湿度センサーを作ることができます。



CSVファイルで保存することも可能のようです。

BuildページにたくさんESP8266向けのスケッチがあるので、少しの変更で使用できそうです。
手っ取り早く実験するには良さそうです。