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)

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


2020年3月30日月曜日

Arduino IDE スコープエラー

M5Stack用のプログラムを整理していたら(タブに分けていたら)
以下の様なスコープエラーが出てきた。(一部抜粋)

error: variable or field '関数名' declared void
error: '引数名' was not declared in this scope
「WiFi.h」に対して複数のライブラリが見つかりました
「SD.h」に対して複数のライブラリが見つかりました

エラーに書かれている内容を元に調べてみても原因は見つからず、、
他の方の記事を見るとloop前に関数を持ってくるとか色々書いてあったけど、それで動いても気持ち悪いので仕方なくバックアップしておいた一つ前のファイルを元に調べてみました。
するとメインファイル(フォルダ名と同じinoファイル)に関数を一つも置いていないのが原因でした。
仕方ないのでメインファイルの末尾に適当な空の関数を入れたらエラーがすべて消えました。

void empty(){}

setup()やloop()を別のタブに移動させた時は注意しよ。。
プログラムを書く時は、まめに検証(コンパイル)ですね。

2020年3月27日金曜日

M5Stackをプログラムからリセット(再起動)する

こんな使い方して良いのか分からないけど、
M5.Lcd.print(1/0);
でリセット出来た。