2021年8月17日火曜日

ESP-WROOM-02D(ESP8266)を使ってみる1

安価に無線LANモジュールを入手出来ないかと模索中。 Lichee Pi Zeroにつなげたいじゃん。
ESP-WROOM-02D https://akizukidenshi.com/catalog/g/gM-13289/とか安いじゃん @360
開発ボード https://www.digikey.jp/product-detail/ja/espressif-systems/ESP8266-DEVKITC-02D-F/1965-1001-ND/9649768

技適も問題なし。


本当は、今年の3月くらいにやっていたのだけど、なぜかブログにアップするのを忘れていた。
なんだかなー。

準備

用意したもの

※フラッシュメモリの容量は2MB

ドキュメント

書き込みツール

  • windowsはESPFlashDownloadTool
  • pythonツールもある[rsptool.py]

SDKなど

技適のメモ

カスタムファームでの技適問題はスイッチサイエンスさんが確認してくれている
https://mag.switch-science.com/2016/01/20/esp-wroom-02_telec/

なので、

ファーム 技適
The official AT firmware (ESP8266_NONOS_SDK) OK
RTOS (ESP8266_RTOS_SDK) OK
Arduino core for ESP8266 WiFi chip OK
MicroPython ?
FreeRTOS https://github.com/aws/amazon-freertos ?

初期ファームで起動・最新バージョンに書き換え

ready
AT+GMR
AT+GMR
AT version:1.6.2.0(Apr 13 2018 11:10:59)
SDK version:2.2.1(6ab97e9)
compile time:Jun  7 2018 19:34:26
Bin version(Wroom 02):1.6.2
OK

Quick Start Guideの手順書通りにファーム書き換え、windowsが必要になったけどね。。
rsptool.py使えば、linuxでもできる気がするけど試していない。

ready
AT+GMR
AT+GMR
AT version:1.7.4.0(May 11 2020 19:13:04)
SDK version:3.0.4(9532ceb)
compile time:May 27 2020 10:12:22
Bin version(Wroom 02):1.7.4
OK

The official AT firmwareでhttpリクエストしてみる

ATコマンドを駆使してhttpリクエストをやってみる
ATコマンドは
https://www.espressif.com/sites/default/files/documentation/4a-esp8266_at_instruction_set_en.pdf
https://www.espressif.com/sites/default/files/documentation/4b-esp8266_at_command_examples_en.pdf
を参考にした

今勉強中のPythonでやってみる
pyserialを使うので

pip3 install pyserial

が必要。

テスト用プログラム

import serial
import threading
import time
import io

busy_flg = False
rcv_flg = True

def _rcv() :
    global busy_flg
    global rcv_flg
    global sio
    while rcv_flg:
        rawline = sio.readline()
        line = rawline.replace("\r","").replace("\n","")
        if (line == "OK") or (line == "SEND OK") :
#            print("Found \"OK\".")
            busy_flg = False
        elif (line == "FAIL") or (line == "ERROR") :
#            print("Found \"FAIL\" or \"ERROR\".")
            busy_flg = False

        if len(line) > 0 :
            print(line)

def _send(data,nocr=False) :
    global busy_flg
    global sio
    while busy_flg == True :
        time.sleep(1)
        print("*")
    busy_flg = True

    print("snd>"+data)
    if nocr:
        sio.write(data)
    else :
        sio.write(data+"\r\n")
    sio.flush()


ser = serial.Serial('/dev/ttyUSB1',115200,timeout=0.5)
sio = io.TextIOWrapper(io.BufferedRWPair(ser, ser))

rcv_thread = threading.Thread(target=_rcv)
rcv_thread.daemon = True
rcv_thread.start()

try:
    _send(data = "AT+GMR")

    _send(data = "AT+CWMODE=1")     # Station mode 
    _send(data = "AT+CWLAP")        # Lists Available APs
    _send(data = "AT+CWJAP_CUR=\"[ESSID]\",\"[password]\"")        # Connects to an AP

    _send(data = "AT+CIFSR")        # Gets the local IP address 
    _send(data = "AT+CIPSTA?")  

    _send(data = "AT+CIPSNTPCFG=1,9,\"pool.ntp.org\",\"jp.pool.ntp.org\"") # Sets the Configuration of SNTP 
    _send(data = "AT+CIPSNTPTIME?") # Checks the SNTP Time

    _send(data = "AT+CIPSTART=\"TCP\",\"203.137.163.123\",80")        #protocol,server IP and port
    
    http_body="GET / HTTP/1.0\r\n"
    http_body+="\r\n\r\n"
    http_body_length = len(http_body)

    _send(data = "AT+CIPSEND="+str(http_body_length))
    _send(data = http_body,nocr=True)
    time.sleep(10)

    _send(data = "AT+CIPCLOSE")
    _send(data = "AT+CWQAP")        # Disconnects from the AP 

except KeyboardInterrupt:
    print("Bye.")
    

print("Exit.")
busy_flg = False
rcv_flg = False
rcv_thread.join()
ser.close()

やってること

ATコマンドを順に実行している。エラー処理などは未実装。

  1. バージョン表示
  2. ステーションモード(STA)に変更
  3. アクセスポイント(AP)を検索
  4. APに接続
  5. APからもらったIPアドレスなどを表示
  6. NTPサーバーを設定(“pool.ntp.org”,“jp.pool.ntp.org”)
  7. NTPサーバーから時刻を取得
  8. WEBサーバーに接続(今回は、自分のグローバルIPアドレスを確認できるサービス http://ipaddr.show/ のIPを設定[203.137.163.123])
  9. WEBサーバーにリクエスト送信
  10. 10秒待つ
  11. TCPセッション切断
  12. APから切断

実行結果

adeno@drakorange:~/develop/ESP8266$ python3 test.py 
snd>AT+GMR
AT+GMR
AT version:1.7.4.0(May 11 2020 19:13:04)
SDK version:3.0.4(9532ceb)
compile time:May 27 2020 10:12:22
Bin version(Wroom 02):1.7.4
OK
*
snd>AT+CWMODE=1
AT+CWMODE=1
OK
*
snd>AT+CWLAP
AT+CWLAP
*
*
+CWLAP:(4,"****************",-79,"**:**:**:**:**:**",1,5,0,4,4,7,1)
(省略)
OK
*
snd>AT+CWJAP_CUR="SSID","PASSWORD"
AT+CWJAP_CUR="SSID","PASSWORD"
*
*
*
WIFI CONNECTED
*
*
WIFI GOT IP
OK
*
snd>AT+CIFSR
AT+CIFSR
+CIFSR:STAIP,"192.168.1.19"
+CIFSR:STAMAC,"**:**:**:**:**:**"
OK
*
snd>AT+CIPSTA?
AT+CIPSTA?
+CIPSTA:ip:"192.168.1.19"
+CIPSTA:gateway:"192.168.1.1"
+CIPSTA:netmask:"255.255.255.0"
OK
*
snd>AT+CIPSNTPCFG=1,9,"pool.ntp.org","jp.pool.ntp.org"
AT+CIPSNTPCFG=1,9,"pool.ntp.org","jp.pool.ntp.org"
OK
*
snd>AT+CIPSNTPTIME?
AT+CIPSNTPTIME?
+CIPSNTPTIME:Wed Mar 31 06:19:39 2021
OK
*
snd>AT+CIPSTART="TCP","203.137.163.123",80
AT+CIPSTART="TCP","203.137.163.123",80
CONNECT
OK
*
snd>AT+CIPSEND=20
AT+CIPSEND=20
OK
*
snd>GET / HTTP/1.0



> 
Recv 20 bytes
SEND OK
+IPD,133:HTTP/1.0 200 OK
Date: Tue, 30 Mar 2021 21:19:43 GMT
Content-Length: 16
Content-Type: text/plain; charset=utf-8
***.***.***.***
CLOSED
snd>AT+CIPCLOSE
AT+CIPCLOSE
ERROR
*
snd>AT+CWQAP
Exit.
AT+CWQAP

いい感じ
なんとなく、わかってきた。

2021年8月2日月曜日

GEOのノイキャン付きワイヤレスイヤホンを使ってみる


最近、ストレスのはけ口が物欲に向かっている気がする。イケない傾向だ。。
ツイッターかなんかで、安くて性能もそこそこと評判だったものを、気づいたら手もとにあった。

GRFD-SWE500HT01


ちょっとだけ集中したいときに、ノイキャンあると嬉しいし
マスク外出が増えてきたので、ケーブル付きだとマスクと絡まってうっとおしい。

スペックは
https://geo-online.co.jp/campaign/special/other/geoselection/earphones/swe500ht01.html

プレスリリースには、QCYのGEO専売パッケージって書いてあった。
https://www.geonet.co.jp/news/news2020/20820/



ネットの記事を見ると、CQYのアプリがそのまま使える的なことが書いてあった。
https://watchmono.com/e/geo-swe-ht01-bg-review-check

ほえー割り切っているね。
こういうビジネスが今後どうなるか興味ある。
裾野が広がるんじゃなかと思う。

良い点

  • 件のCQYアプリで、左右のタッチ機能の割当を変更できる
  • 超シンプルなデザイン 主張がないのがとても良い
  • 耳から外すと音楽一時停止する
  • 音楽の音量が小さくても聞こえる気がする(これがノイキャンの効果?)

悪い点

  • レビュー通り高音がサラサラ?している
    プレーヤーの方で調整している人がいた。
  • アプリの通知がうっとおしい
  • アプリの個人情報登録がちょっと抵抗がある
    よくわからないが、個人登録しない状態でも使えている
  • たまーに「ブツッ」という20分に1回くらい。
    出先だと起きない気がするからwifiとの干渉かしら?
  • 結構早めに耳が痛くなる まぁ休憩の目安ということでいいんだけど。

よくわからない点

  • ペアリングは無条件に受け入れ?
    スマホでペアリングしていて、ChromeBookでペアリングできた。これって横取りできるってことけ? ちがった。 スマホと接続になっていないときの話だった。

  • ChromeBookとペアリングして音楽聴きながら、スマホのQCYアプリでノイキャンの切り替えができた
    そういうもんなのか??便利だからいいんだけど。

  • ノイキャンの効果は
    体感できたのは、「アウトドアモード」で風斬り音が弱まった
    ANCで音よりも振動に意識が向くようになった。
    もちろん音も聞こえるんだけど。
    高級なiPodsとかWH-1000XM4だとどんな感じになるんだろうか。気になる。
    これは、沼だ。あぶないあぶない。

  • ハンズフリーは
    まだ試していない。ワイヤレスだと、完全に独り言みたいになるので、ちょっと勇気が出ない。

その他

取説はここに電子がある
https://product.geo-online.co.jp/wp-content/uploads/GRFD-SWE500HT01_manual.pdf

これでしばらくは物欲の虫がおとなしくしてくれるといいのだが。
にしても、マスクのつけ外しやちょっとした動きのときにケーブルを気しないってこんなに快適なんだとびっくりした。

2021年7月25日日曜日

ChromeBookを使ってみる

入手したのは、これ
https://www.asus.com/jp/Laptops/For-Home/Chromebook/ASUS-Chromebook-Detachable-CM3-CM3000/

本当は、この機会にiPadでも良かったんだけど、自分の使用用途を考えたら、こっちのほうがいいような気がした。
物書きしたり、サーバーに接続したり、pdf閲覧して手書きするくらい。
なので、2in1とペン入力が標準でついているCM3が丁度いいと思った。

気づいたら、身の回りものがASUSになっていく

環境構築をメモがてら

セットアップ

googleのアカウントが必要。
特に、ハマるところはない。

マイクラウド環境(NextCloud)への接続

nextcloudアプリと、カレンダー同期用にopensyncを入れた。
スマホのときと変わらず。違和感なし。
大きい画面でカレンダー見れたり。とても便利。

物書き・手書きとして

squidをインストールしてみた。
手書きメモは、絵を書くわけではないので筆圧感知を無効にした。

linux仮想環境

これも試してみたかったやつ。可能性が広がるね。

サーバー接続用

スマホのときはconnecBotを使用していたけど
この環境ではどうしようか。

結果的にはconnectBotを使わなくてもやりたいことができた。

linuxシェルから

ssh -L 3000:localhost:3000 username@servername -p port

で、linuxからもchromeのブラウザからもlocalhost:3000にアクセスできた!
これはとても便利だ。

VS Code

この手順の通り
https://code.visualstudio.com/blogs/2020/12/03/chromebook-get-started

ダウンロードするときに、ARM64のdebパッケージを選択しないとハマる。

日本語化はコマンドパレットから「Configure Display Language」
日本語入力は以下を参考にした
https://gotoblog.org/chromebook-vscode-japanese/

エクステンション

とりあえず

  • MPE Markdown Pereview Enhanced
  • Paste Image

あとは、使い続けて試行錯誤していこう。

git

gitとgit-guiをインストール
こちらもふつーに使えた。嬉しい。


その他

誰か指摘している方がいたが、音量の最小でも大きい。
特にヘッドホン使用時もう少し小さくしたいことがある。
多分なにかやり方あるんだろうけど、まだわからない。