2021年4月19日月曜日

Python3 Tkinter ボタンの色が変わらない。

他にも原因はあると思いますが、Macだと変わらなかった。
RaspberryPiだと問題なく動く。

button.config(bg='RoyalBlue3')

2021年4月15日木曜日

ArduinoUNO x Python3のSerial通信[read_until]が上手くいかない

Python2では

ser = serial.Serial( "/dev/ttyACM0" , 115200 , timeout = 0.01)
〜〜省略〜〜
received = ser.read_until("k")
str_value = re.sub(r'\D' , '' , received)
num = int(str_value)

で"k"区切りになっていた値を受け取れていたのにPython3では

NameError : name 'received' is not defined

と出る。。。
調べてみたら「python3では、文字列とバイト列の区別が明確になりました。」との事。
どうやらこいつの影響っぽい。

Python2
received = ser.read_until("k")

Python3
received = ser.read_until(b'\x6b')#kをbytes型で指定

これだと b'a200k' のような状態なので、これをそのままstr型の文字列に変換して
余計なものを取る。
received = str( ser.read_until(b'\x6b') )
received = received[ 2 : len(received)-1 ]

とっても後味悪い方法に。。

以下、参考にしたサイト
python3のbytes型とstr型の比較と変換方法
Python3での文字列のstr型とbytes型のまとめ
Raspberry Pi と Arduino でUSBシリアル通信(複数の値を送受信)(第二弾)


2021年4月7日水曜日

ArduinoUNOからRaspberryPiへUART通信(TXD・RXD)/dev/ttyS0

RaspberryPiとArduinoUNOのシリアル通信で
USBシリアル通信時 /dev/ttyACM0で問題なく通信できたが
UART通信時 /dev/ttyS0にしても通信出来てる気配がない。 

 調べてみたら以下の作業が必要との事
・/boot/cmdline.txtの「console=serial0,115200」を削除 
・/boot/config.txtに「enable_uart=1」を追加

こちらに詳しく書いてあります。

2021年4月3日土曜日

Raspberry Pi にRTC(DS3231)の設定をする

最新のRaspberry Pi OSだと簡単に設定できたので追記した。
Raspbian 12 (bookworm)

Raspberry Pi 4 Model B にRTC(DS3231)を繋ぐ。

今回はスイッチサイエンスで購入した
DS3231搭載 高精度RTCモジュール
を使用した。

1)
設定>RaspberryPiの設定>インターフェイス
でi2cを有効にする。

2)
RTCとラズパイを繋ぐ
Vin→3.3V
GND→GND
SCL→SCL(GPIO 3)
SDA→SDA(GPIO 2)
※RTCに電池入れる。

3)
ターミナルからconfig.txtを編集する。
sudo nano /boot/firmware/config.txt
※/boot/config.txtではない。/boot/config.txtは/boot/firmware/config.txtに移動したらしい。
最終行に
dtoverlay=i2c-rtc,ds3231
を追加。

4)
Wi-Fi繋いだ状態で再起動

5)
ターミナルで
timedatectl
すればRTCの時間が出る。
Local timeと比べると9時間ずれてるけど問題なし。

6)
心配ならWiFiをOFFにして、しばらく電源切って放置して確認。

コマンドプロンプトで
i2cdetect -y 1
を実行してi2cアドレスを確認
(0x68だった。)

コマンドプロンプトで
echo ds3231 0x68 | sudo tee /sys/class/i2c-adapter/i2c-1/new_device
を実行し

他のコマンド)
RTC時間を取得
sudo hwclock -r

RTCにラズパイの時間を設定する場合は
sudo hwclock -w

RTCの時間をラズパイに設定する場合は
sudo hwclock -s

インターネット環境がない場所で使う時は起動時にこれを実行するようにする。
echo ds3231 0x68 | sudo tee /sys/class/i2c-adapter/i2c-1/new_device
sleep 1
sudo hwclock -s

時間を手動で設定するには
sudo date --set='yyyy/mm/dd hh:mm:ss'

ModuleNotFoundError:No module named 'board'

Raspberry Pi 4 Model B(Python3.7.3)でboardモジュールのインストールにつまずいたのでメモ。

import board
を含むプログラムを実行してみたらエラー

あ、モジュールがインストールされていないんだなとコマンドプロンプトで
sudo apt-get install board
「パッケージboardが見つかりません」
と出たのでPipでのインストールに変更

まずはPipをインストール
sudo apt-get install python-pip

pipでboardをインストール
pip install board

しかしプログラムを実行したら再度エラー
ModuleNotFoundError:No module named 'board'

ちゃんとインストールされなかったのかな?と思い
pip install board
を再度実行すると
python2.7/site-packages
の文字が。。
python3用ではなかったみたい。

pip3 install board
を実行したらエラー出なくなりました。

----------

後日adafruitのモジュールを使ってみたら
インストールしたboardじゃなくadafruit-blinkaをインストールしなければならないみたい。

pip3 uninstall board

pip3 install adafruit-blinka_

これでダメなら強制再インストール
私はこれで無事動きました。

sudo python3 -m pip install --force-reinstall adafruit-blinka

2020年11月28日土曜日

テプラカートリッジ収納ケース 100円ショップ(ダイソー)

長年探し続けていたアイテムが見つかりました!それは!

テプラ カートリッジ収納ケース

電子工作をするので通常のテプラや熱収縮チューブタイプ色々使用するのでカートリッジだらけなのです。

キングジムさんが出しているケースもしばらく使ってみたものの取り出すのが面倒になり使うのをやめてしまいました。

そして、本日紹介したい商品がこちら

ダイソー
マルチ収納ボックス(フタ付)
JAN:4549131743074



それでは収納した様子をご覧ください。

テプラ収納ケース

ご覧の通り、かなりの数が入ります。
テプラ使う人は全員買った方が良くないですかこれ。
ダイソーさんありがとう!!


2020年6月22日月曜日

Arduino Array.length

配列の要素数が欲しかったけど、ArduinoではArray.length無いみたい。

配列が以下の場合は
int testArray[] = {1,2,3,4,5,6,7,8,9,10};

こうやって求める
sizeof(testArray)/sizeof(int)

配列全体のサイズを取得
型のサイズを取得
割って要素数を求めている。