Androidのメモとか

ポキオの日記です。今日も遅延してない。

M5Stackに潮汐を表示させてみる

大潮でも釣れないときは釣れないんですけどね。

ポキオ M5Stack 潮汐

前回は潮汐情報のWebサービスを見つけました

全国各地のポイントの潮汐情報を日付を指定して取得できるすごい子でした。

relativelayout.hatenablog.com

今回は、これを使ってM5Stackに潮汐情報(とりあえず、大潮、中潮、・・・など)を表示させてみようと思います。

環境と実装

  • 実装環境:UIFlow(Betaのほう、v1.7.2)
  • バイス:M5Stack Basic

ここで、UIFlowはBetaのほうを使っているのがミソです。Betaの方だとNTPが使えるため、こちらを使用しています。(それに合わせて、M5Stackのファームウェアも更新しています)

ポキオ M5Stack 潮汐

こんな感じでブロックを組み立てていきます。やっていることとしては、

  • Wi-Fi接続
  • ntptimeの初期化
  • 定期的に潮汐情報ページにアクセス(日付指定にntptimeで取得した現在日付を使う)
  • 潮汐情報に応じて予め準備した画像を表示

このような処理です。

画像は予め準備

macKeynoteとかで、大潮用、中潮用、・・・の320x240な画像を予め準備して、M5Stackに流し込んでおきます。

ポキオ M5Stack 潮汐

ローディング画面用も一応作成。流し込んだ画像をコードから参照して表示させています。

早速動作確認

うーん、今日は中潮!ちゃんと動いてそうですね!

ポキオ M5Stack 潮汐

こういうガジェットを作ったからと言って、釣果が良くなるかは別の話なので、あしからず。

MicroPythonのコードはこちら

from m5stack import *
from m5ui import *
from uiflow import *
import wifiCfg
import ntptime
import urequests
import time

setScreenColor(0x222222)


url = None

wifiCfg.doConnect('*****', '*****')
image0 = M5Img(0, 0, "res/loading.jpg", True)




while not (wifiCfg.wlan_sta.isconnected()):
  pass
ntp = ntptime.client(host='jp.pool.ntp.org', timezone=9)
while True:
  image0.changeImg("res/loading.jpg")
  url = 'http://fishing-community.appspot.com/tidexml/index?portid=112&year=YYYY&month=MM&day=DD'
  url = url.replace('YYYY', str((ntp.year())))
  url = url.replace('MM', str((ntp.month())))
  url = url.replace('DD', str((ntp.day())))
  try:
    req = urequests.request(method='GET', url=url)
    if 0 < (req.text).count('大潮'):
      image0.changeImg("res/ooshio.jpg")
    if 0 < (req.text).count('中潮'):
      image0.changeImg("res/nakashio.jpg")
    if 0 < (req.text).count('小潮'):
      image0.changeImg("res/koshio.jpg")
    if 0 < (req.text).count('若潮'):
      image0.changeImg("res/wakashio.jpg")
    if 0 < (req.text).count('長潮'):
      image0.changeImg("res/nagashio.jpg")
  except:
    pass
  wait(3600)
  wait_ms(2)

macOS Big SurにESP8266開発環境を構築する(Arduino IDE)

今回もハマったお。

ポキオ ESP8266 Arduino macOS Big Sur

Big Sur環境に構築

Big Surをクリーンインストールしたのはいいのですが。

relativelayout.hatenablog.com

Arduino開発環境などが綺麗サッパリなくなってしまったので、いちから構築してみました。特に、よくプロトタイピングで使うESP8266が動くようにしてみました。

ESPr Developer(ピンソケット実装済)

ESPr Developer(ピンソケット実装済)

  • メディア: おもちゃ&ホビー

まずはArduino IDEをインストール

なにはともあれ。

ポキオ ESP8266 Arduino macOS Big Sur

www.arduino.cc

公式HPからmacOS向けのバイナリをダウンロード。そのままApplicationフォルダにどーん。

ポキオ ESP8266 Arduino macOS Big Sur

とりあえず起動はOKそうです。

ESP8266が開発できるようにする

Arduino core for ESP8266 WiFi chipを導入します。

github.com

設定画面のAdditional Boards Manager URLshttps://arduino.esp8266.com/stable/package_esp8266com_index.jsonを追加します。

ポキオ ESP8266 Arduino macOS Big Sur

するとBoard ManagerにESP8266が現れるので、インストールしちゃいます。

ポキオ ESP8266 Arduino macOS Big Sur

ESP8266をmacにつなぐと、認識もされるようです。

ポキオ ESP8266 Arduino macOS Big Sur

ビルドができない・・・?

と、ここまでは良かったんですが。いざコンパイルをしようとすると失敗してしまいます。

pyserial or esptool directories not found next to this upload.py tool.

An error occurred while uploading the sketch

どうやら、ライブラリをロードする部分で失敗しているようです。

mag.switch-science.com

forum.arduino.cc

~/Library/Arduino15/packages/esp8266/hardware/esp8266/2.7.4/tools/pyserial/serial/tools/list_ports_osx.pyの一部を書き換えます。

ポキオ ESP8266 Arduino macOS Big Sur

29行目・30行目を下記のように書き換えます。

iokit = ctypes.cdll.LoadLibrary('/System/Library/Frameworks/IOKit.framework/IOKit')
cf = ctypes.cdll.LoadLibrary('/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation')

これで書き込めるようになりました!

ポキオ ESP8266 Arduino macOS Big Sur

釣りをハックする

釣りです。

ポキオ 釣り IoT ハック

空前の釣りブーム

はい、最近釣りをしてばっかりです。

コロナ禍で勉強会が中止になったりオンライン開催でなんとなくテンションが上がらない一方で、地元で過ごすことが多くなったので自転車乗ったり釣りに行ったりしてたわけで。プライベートでコーディングすることからちょっと離れてしまったのは確かですが、新たな課題が見つかったのも事実です。

釣りはハックする余地がある?

自転車もそうですが、釣りも割と科学的な側面を持っていて、潮汐・水温・気圧などの気象条件や、キャスティングやアクションなどの釣り方、明暗や海水の濁り具合など、いろいろなファクターの重ね合わせで釣果が変わるといっても過言ではないと思っています。

ポキオ 釣り IoT ハック

一気に全部のファクターに手をつけちゃうと大変そうなので(笑)、まずはかんたんなところから手をつけていこうかと思います。

まずは潮汐

潮の満ち引きはもちろん重要なファクターの一つ、まずはここから着手します。潮汐データを取得できるWebAPIがあるかなと調べてみると、結構ありますねぇ。

fishing-community.appspot.com

www.data.jma.go.jp

大多数が有料なWebAPIのなかで、上記2つは無料でそこそこ使えそうな情報源になりそうでした。例えばfishstarのAPIだと、任意の日付・場所の潮汐情報が取得できます。

2021/01/21の横浜の根岸の潮汐データの場合、下記のようなURLにアクセスすると・・・

http://fishing-community.appspot.com/tidexml/index?portid=112&year=2021&month=01&day=21

<?xml version="1.0" encoding="UTF-8"?>
<tideinfo>
   <port-id>112</port-id>
   <port-name>根岸</port-name>
   <latitude1>35°24'</latitude1>
   <longitude1>139°38'</longitude1>
   <latitude2>35.400000</latitude2>
   <longitude2>139.633333</longitude2>
   <year>2021</year>
   <month>1</month>
   <day>21</day>
   <youbi></youbi>
   <sunrise-time>06:48</sunrise-time>
   <sunset-time>16:59</sunset-time>
   <moonrise-time>11:26</moonrise-time>
   <moonset-time>--:--</moonset-time>
   <tide-name>小潮</tide-name>
   <tidedetails>
      <tide-time>03:28</tide-time>
      <tide-level>74</tide-level>
   </tidedetails>
   <tidedetails>
      <tide-time>10:06</tide-time>
      <tide-level>148</tide-level>
   </tidedetails>
   <tidedetails>
      <tide-time>17:11</tide-time>
      <tide-level>66</tide-level>
   </tidedetails>
   <tidedetails>
      <tide-time>23:14</tide-time>
      <tide-level>111</tide-level>
   </tidedetails>
   <tidedetails>
      <tide-time />
      <tide-level />
   </tidedetails>
   <tidedetails>
      <tide-time />
      <tide-level />
   </tidedetails>
   <tidedetails>
      <tide-time />
      <tide-level />
   </tidedetails>
   <tidedetails>
      <tide-time />
      <tide-level />
   </tidedetails>
</tideinfo>

こんな感じでいろいろなデータが取得できました。これを使えば様々な用途に活用できそうですねぇ。

2020年のBest Buy(5つ)

今年もあんまり買ってないですね(真顔)

ポキオ BEST BUY 2020

はやいもので

もうすぐ2020年は終わり。色々あったけど、何もなかった2020年ですが、今年もBest Buyを決める季節ですね。今年は5つほど挙げさせていただきます。

PFU Happy Hacking Keyboard Lite2 for Mac 英語配列

ポキオ BEST BUY 2020

relativelayout.hatenablog.com

まずはキーボード。

Amazonのセールでやすかったので出来心で購入しちゃいました。打鍵音は非常に大きいので、Web会議中にカタカタやってるとたまに苦情が来ますが、押し心地は最高で、これに慣れてしまうと他のキーボードがもうだめです。そういう体になちゃいました。変な位置にあるバッククオートも、今となっては普通の位置。他のキーボードが変な位置にあるんだと、そう信じています。安心と信頼のUSB接続なので、(電波的に)過酷な環境下でもちゃんと打てるのも魅力のひとつ。

リングフィット アドベンチャー

ポキオ BEST BUY 2020

relativelayout.hatenablog.com

リングフィット アドベンチャー -Switch

リングフィット アドベンチャー -Switch

  • 発売日: 2019/10/18
  • メディア: Video Game

ギリギリ2020年じゃないけど、まぁいいや。7月までお世話になりました(あれ?w)。やっぱり、リングを押し込む運動だけでもかなり上半身が鍛えられた気分になれます。実際に、自転車に乗るとき、ダンシングがしやすくなりました(個人の感想です)。そろそろ再始動しようかしら。

ポンコタン ハイバックチェア

ポキオ BEST BUY 2020

relativelayout.hatenablog.com

何脚かテレワーク用に椅子を試してみましたが、結局これに落ち着きました。座面が低く、相対的にディスプレイが高めになって、長時間のデスクワークでも快適です。アウトドア用の椅子といっても侮ってはいけないわけで、包み込まれるような座り心地は素晴らしいです。これが壊れたら、Helinoxのハイバックを買ってみようかな。

SONY WF-1000XM3

ポキオ BEST BUY 2020

relativelayout.hatenablog.com

テレワークで全集中したいときの最強アイテム。たまにあった出勤時も電車の中で大活躍。耳から外すと曲が止まったり、もう一回つけると曲が再開したり、思いがけないおもてなしな仕様も最高です。

SONY PlayStation 5

ポキオ BEST BUY 2020

relativelayout.hatenablog.com

空気清浄機じゃありません。どちらかというと、空気が物理的に暖かくなるやつです。当選しちゃったので購入しましたが、やっぱり家にゲーム機があるといいですねぇ。シュッと短時間でNeed for Speedをやってリフレッシュ、みたいなことができますからね。今後のPS5のソフトにも期待しています。

というわけで

来年もよろしくおねがいしまーす。

enebular + Sonos + 導電糸で 快適テレワーク環境を作ってみた

スワイプできる椅子。

ポキオ enebular + Sonos + 導電糸で 快適テレワーク環境を作ってみた

tl;dr

speakerdeck.com

静電容量センサーと導電糸の組み合わせ

もともと静電容量センサーをつかったユーザーインターフェイスをもったガジェットを作っていました。触ったりすることで、何かのトリガーとなり得るなと確信を得ていたわけです。

relativelayout.hatenablog.com

今回、この静電容量センサーに導電性の糸を組み合わせて、糸を縫い込んだ布をさわることを検知し、普段使っているホームオーディオシステム「Sonos」の曲送りができないか、やってみました。

全体の構成

今回は、テレワークで使っているアウトドア用の椅子をハックしていきます。

ポキオ enebular + Sonos + 導電糸で 快適テレワーク環境を作ってみた

relativelayout.hatenablog.com

この椅子のサイドのポケットに、導電性の糸を縫い付けて、スワイプを検知できるようにしていきます。

ポキオ enebular + Sonos + 導電糸で 快適テレワーク環境を作ってみた

スワイプは静電容量センサーMPR121とマイコンボードESP8266を使って検知します。

ポキオ enebular + Sonos + 導電糸で 快適テレワーク環境を作ってみた

ESPr Developer(ピンソケット実装済)

ESPr Developer(ピンソケット実装済)

  • メディア: おもちゃ&ホビー

スワイプを検知したあとは、ESP8266からenebular・IFTTTを経由してSonosスピーカーの制御を行います。

ポキオ enebular + Sonos + 導電糸で 快適テレワーク環境を作ってみた

かんたんに曲送り可能に

テレワークでSonosで音楽を聞きがちなんですが、テレワークで使っている椅子がSonosのリモコンとして使えるようになり、かなり便利になりました。

ポキオ enebular + Sonos + 導電糸で 快適テレワーク環境を作ってみた

また、あえてenebularを経由してIFTTTにアクセスさせることで、急なロジック変更時もマイコンの実装を変えることなく、enebularのフローを変えるだけで変更するだけなので臨機応変に対応することができるのでいい感じです。

FlutterでChrome向けにビルドしようとした時にハマったのでメモ

揚げ物ではないです。

ポキオ Flutter Android Web Chrome

Flutter環境を構築中

前回Big Surの起動メディアを作って、家にある人柱になっても良さそうなMacBook Airにインストールしたわけなんですが。

relativelayout.hatenablog.com

個人的な信条としては必ずクリーンインストールをしないと気が済まないため、せっせと環境を再構築中です。その中でもFlutterの環境を構築しなおした時にハマったのでメモしておきます。

flutter.dev

Flutterっていうのはこれ。これを読んでいる諸兄姉にとっては釈迦に説法かもしれませんが、Googleが開発したクロスプラットフォームなアプリを作れる仕組みです。

flutter.dev

インストール方法も簡単で、ZIPファイルをダウロードして、展開して、パスを通すだけ。

$ cd ~/development
$ unzip ~/Downloads/flutter_macos_1.22.4-stable.zip
$ export PATH="$PATH:`pwd`/flutter/bin"

そして、プロジェクトを作るのもこんな感じ。

$ flutter create fluttertest

これでfluttertestというプロジェクトができちゃいます。

早速Hello, world

あらかじめVS Codeをインストールの上、FlutterとDartプラグインをインストールしておけば、VS Code上で開発ができちゃいます。

ポキオ Flutter Android Web Chrome

さらに、Android Studioがインストール済みで、ADB接続できる実機か仮想デバイスがあればVS Codeからその環境にアプリをインストールして実行することができます。

ポキオ Flutter Android Web Chrome

ここまではいいんですが。問題はここから。

Chromeで実行できない?

クロスプラットフォームの良さみを感じたくて、Chromeで実行しようと思ったわけです。FlutterのオプションでChromeでの実行を有効にしてみます。

$ flutter config --enable-web

これで、ビルド対象をChromeにして実行すれば大丈夫かなぁと思ったんですが・・・。

ポキオ Flutter Android Web Chrome

ビルド対象にChromeが出てきません・・・。

flutter.dev

最初っから本家チュートリアルを見ればよかったんですが、

Flutter has early support for running web applications, but you need to be running the beta channel of Flutter at present.

というわけで、Beta版のFlutterを使わないとChromeで実行できなさそうです。

$ flutter channel beta
$ flutter upgrade
$ flutter config --enable-web

こんな感じで、Beta版に切り替えた後に、再度Chromeでの実行のオプションを有効にして、VS Codeを再起動すると・・・

ポキオ Flutter Android Web Chrome

ビルド対象にChromeが表示されました!Chromeを選択してビルドを行うと・・・

ポキオ Flutter Android Web Chrome

無事にChromeでも実行することができましたー。お疲れ様でした(笑)

基礎から学ぶ Flutter

基礎から学ぶ Flutter

macOS Big Surのインストール用USBドライブを作ってみる

ビッグサア。

ポキオ macOS Big Sur 起動ディスク

Big Surでましたねぇ

でちゃいましたねぇ。

www.apple.com

そして、

たまには家でゆっくりクリーンインストールするのも悪くないなと思い、インストール用のUSBドライブを作ってみました。

つくりかた

公式はこちら。

support.apple.com

What you need to create a bootable installer

  • A USB flash drive or other secondary volume, formatted as Mac OS Extended, with at least 12GB of available storage

  • A downloaded installer for macOS Big Sur, Catalina, Mojave, High Sierra, or El Capitan

16GBのUSBメモリがあれば大丈夫そうです。とりあえず、App StoreからBig Surのインストーラーをダウンロードしたうえで、USBメモリ(ここではNO NAMEという名前)をmacに挿して、

$ sudo /Applications/Install\ macOS\ Big\ Sur.app/Contents/Resources/createinstallmedia --volume /Volumes/NO\ NAME/

これを実行。macのパスワードを聞かれるので入力すると、USBドライブが作成されます。

Ready to start.
To continue we need to erase the volume at /Volumes/NO NAME/.
If you wish to continue type (Y) then press return: Y
Erasing disk: 0%... 10%... 20%... 30%... 100%
Copying to disk: 0%... 10%... 20%... 30%... 40%... 50%... 60%... 70%... 80%... 90%... 100%
Making disk bootable...
Install media now available at "/Volumes/Install macOS Big Sur"

完成!

あとは、このメディアをBig Surをクリーンインストールしたいmac挿してから電源オン、からのoptionボタンをホールドするとUSBメモリからBig Surが起動できるようになりますー。

「Androidのメモとか」は、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。

このブログは個人的なメモ書きであったり、考えを書く場所であります。執筆者の所属する団体や企業のコメントや意向とは無関係であります。また、このブログは必ずしも正しいことが書かれているとは限らず、誤字脱字や意図せず誤った情報を載せる場合がありえます。それが原因で読者が不利益を被ったとしても、執筆者はいかなる責任も負いません。ありがとうございます。