2019年5月31日金曜日

ESP32-CAMのWiFiの相性

ESP32-CAMのテストで手持ちのWiFiルーターをAPとして
使おうとしたらつながらない。

通常使っているスマホとかAPには
つながる
  • ZTE MF98N  WiFiルーター × (WPA-PSK)
  • HAUWAI P20 PRO  スマホ ○ (WPA-PSK)
  • BUFFALO AirStationPro AP  ○ (WEP64)

もちろん、ZTEは通常使用出来ている
暗号化とかで微妙に違いがあるのだろうか?

ArduinoベースのESP32ではWiFi関連の細かい設定方法の
情報が少ないなぁ。
(そもそも技適が・・・・・)

継続調査!!

2019年5月30日木曜日

SIM7500JCのSMS

FTPからは外れるが、SIM7500のSMS機能を調べてみた。
もちろんSMSオプションのついたSIMである事が前提。


まず受信から。
普段使いのスマホからIIJの電話番号にSMSを送信する。


するとATコマンドのターミナルに次のようなメッセージが
表示される
-------------------------------------------


+CMTI: "SM",0
-------------------------------------------
これで受信を認識する。

次にメッセージの読み取り
以下は全メッセージの表示だが、個別に表示する事も
出来る
(スマホからは「test」というメッセージを送信した)
-------------------------------------------
AT+CMGL="ALL"

+CMGL: 0,"REC UNREAD","09026776837","","19/05/25,16:20:14+36"
test

OK
-------------------------------------------

逆にスマホへの送信は以下の様になる
(「TEST RETURN」を送信する)

-------------------------------------------

AT+CMGS="09026776837"
> TEST RETURN

+CMGS: 13

OK
-------------------------------------------

スマホでも受信する事が出来た。

1回の通信毎にSMS料金が発生するので
常時の使用は出来ないが、緊急でRESETを
かけたりするには便利かもしれない。


2019年5月28日火曜日

直動機構によるロボット駆動

Youtubeで面白いのを見つけた。

https://www.youtube.com/watch?v=0BoPoWF_FwY&list=PLpwJoq86vov_PkA0bla0eiUTsCAPi_mZf


https://www.youtube.com/watch?v=0BoPoWF_FwY&list=PLpwJoq86vov_PkA0bla0eiUTsCAPi_mZf

BostonDynamicsとかガチでやっているところを除けば
いままでこの手のロボットはサーボモータ状のものが圧倒的に多かったと
思うが、やはり関節数+αのサーボモーターが必要となると
二の足を踏む。

モーターの数としては同じ位だし、モータドライバもその数分
必要だけれど、機構部分はシンプルになると思う。

4足歩行を前提とすれば、それぞれの関節の可動域はそれほど
広く無くてすみ、それならば180度可動のサーボモータを使用する
必要はない。

問題点としては
  • 直動->角度変化への変換機構が大変そう(ロックしないか)
  • 回転->直動なので速度が出せない?
  • 停止点を決めるセンサー(マイクロスイッチ)が関節毎に必要となる
が考えられるが、チャレンジしてみたいなぁ。

2019年5月27日月曜日

ESP32-CAM 農業用カメラを作る 11shutter

IIJに接続できたので、早速FTPアクセスを試してみる。


https://simcom.ee/documents/SIM7100E/SIM7100_FTP_Application_Note_V0.01.pdf
を参考に。

まずはFTPサーバーに接続する設定。
-------------------------------------------
AT+CFTPSERV="server.url"
AT+CFTPPORT=21
AT+CFTPMODE=1
AT+CFTPTYPE=I
AT+CFTPUN="username"
AT+CFTPPW="password"
-------------------------------------------
サーバー名、ユーザーID、PASSは当然秘密。

全てOKになったらまずはFTPサーバー上の情報を
取得
lsコマンドに該当するコマンドを送信

-------------------------------------------

AT+CFTPLIST="/home/xxxxxx/"
OK

+CFTPLIST: DATA,1460
drwx------  29 xxxxx    users        4608 May 25 16:54 .
drwxr-xr-x 129 root     wheel        3072 Nov  1  2018 ..
-rw-------   1 xxxxx    users        2191 Apr 26 15:01 .bash_history

    中   略

drwx---r-x   2 xxxxx    users        1024 Dec  4  2016 yume
+CFTPLIST: 0
-------------------------------------------
無事に取得出来た。

次にサーバー上のファイルを取得してみる。
-------------------------------------------

AT+CFTPGET="/home/xxxxx/index.html"
OK

+CFTPGET: DATA,119
GET / HTTP/1.1
User-Agent: Wget/1.14 (freebsd9.1)
Accept: */*
Host: www.pipipi.net:20080
Connection: Keep-Alive



+CFTPGET: 0
-------------------------------------------
例としてTEXTファイルを取得したが、
BINの場合もそのまま垂れ流される?のだろうか。

そしていよいよバイナリデータを送信してみる。
サーバー上にtest.pngというファイルを作成する
前提です。

-------------------------------------------

AT+CFTPPUT="/home/xxxxx/test.png"
+CFTPPUT: BEGIN

OK
-------------------------------------------
OKを受信したところで、データを送信する。
ここで若干嵌る。


送信の終了を指示する方法として
0x1aを送信するのだが、データ中の0x1aと区別する
為に0x1aを送信する場合は前に0x03を付加する。
つまり
0x1aは 0x03 0x1aとなる。

又、この0x03を区別する為にデータ中に0x03が存在した
場合も前に0x03を付加する。
つまり

0x03は0x03 0x03となる。

単純に画像ファイルを送信すれば良いのではなく、
1バイト毎にデータをチェックして上記の変換を
行う必要がある。


最後に0x1a(CTRL + Z)を送信するとサーバー上にファイルが作成された。

2019年5月26日日曜日

ESP32-CAM 農業用カメラを作る 10shutter

COMポートが見えたので、ATのCOM21(環境により番号は変わる)に
TeraTerm等で接続する。
パラメータはこんな感じ。ボーレートは何でもいいみたい。



AT[ENTER]と打つとOKが返ってくれば成功。



1.確認


確認用のコマンドを色々投げてみる

------------------------------------------
AT
OK
ATI
Manufacturer: SIMCOM INCORPORATED
Model: SIMCOM_SIM7500JC
Revision: SIM7500JC-OL_V1.1
IMEI: 8614780300*****
+GCAP: +CGSM

OK
AT+CNUM
+CNUM: "","090********",129


OK
AT+CSQ
+CSQ: 25,99

OK
AT+CPSI?
+CPSI: NO SERVICE,Online

OK
------------------------------------------
*** の部分は実際は数字
ATIコマンドのRevisionがSIM7500JC-OL_V1.1に
なっているのは大人の事情。(通常OLはつかない)

AT+CSQのレスポンスで
電波強度が15より大きくて、AT+CPSI?のレスポンスが
NO SERVICEになっているのはAPNが正しく設定できていない。

IIJのAPNは
  • APN:iijmio.jp
  • ユーザ名:mio@iij
  • パスワード:iij
  • 認証タイプ:PAPまたはCHAP
なので
------------------------------------------
AT+CGAUTH=1,3,"mio@iij","iij"
OK
AT+CGDCONT=1,"IP","iijmio.jp"
OK
AT+CGDCONT=6,"IP",""  <--おまじない
OK

AT+CGAUTH?
+CGAUTH: 1,3,"iij","mio@iij"
+CGAUTH: 2,0
+CGAUTH: 3,0


OK
AT+CGDCONT?
+CGDCONT: 1,"IP","iijmio.jp","0.0.0.0",0,0,0,0
+CGDCONT: 2,"IPV4V6","ims","0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0",0,0,0,0
+CGDCONT: 3,"IPV4V6","sos","0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0",0,0,0,1
+CGDCONT: 6,"IP","","0.0.0.0",0,0,0,0

OK
------------------------------------------
で、再度AT+CPSI?を送信すると

+CPSI: LTE,Online,440-10,0x117D,41201172,143,EUTRAN-BAND19,6100,3,3,-104,-888,-614,11

となり、無事にONLINEとなりました。

2019年5月25日土曜日

ESP32-CAM 農業用カメラを作る 9shutter

空いているSIMを探したらIIJのnanoSIMがあった。(解約忘れwww)
基板に載っているSIMスロットは標準SIMなので
変換カードを使用する。



マイクロSIM → nanoSIM → 標準SIMという変遷
基板に取り付けるとこんな感じ。



写真の真ん中辺に赤いPUSH SWがあるが、これがPOWER KEY信号につながって
いる。



LEDはSTATUS。
写真はPWRKEYを押下して起動した状態。

これでUSBポートとPCを接続すればCOMポートして見えるはず。
(ドライバインストール前提)


COM19からCOM23までがSIM7500JCのポート。
無事に認識したみたいです。

ドライバは代理店(キャセイトライテック)から入手できるのですが
インストールにちとコツがいるのでこちらを参考に。
https://github.com/botletics/SIM7500-LTE-Shield/wiki/USB-Drivers 

2019年5月24日金曜日

ESP32-CAM 農業用カメラを作る 8shutter

とにかくSIM7500JCのFTP転送を確認しないと先に進まない。
本業で作り散らかした残材を使って
  • SIM7500JC(モジュール版)
  • SIMカードスロット
  • 電源SW
  • STATUS LED
を載せた基板を作った。



シリアルポートは1.8Vのレベル変換が必要なので
USBの口だけ出す。
USBドライバを入れておけばいくつかのUSBシリアルの
ポートが現れ、そのうちの1つがATコマンドの口となる。

まずは100byteのデータ転送からだな。

2019年5月23日木曜日

ESP32-CAM 農業用カメラを作る 7shutter

SIM7500JCでFTP送信を調べてみた。
サーバー接続までは以下の一連のコマンドで出来そう。


AT+CFTPPORT
AT+CFTPMODE
AT+CFTPTYPE
AT+CFTPSERV
AT+CFTPUN
AT+CFTPPW

ただUARTからFTP UPLOADするコマンドが無い。
いや、AT+CFTPPUTがあるのだが、

Description
This command is used to upload the DATA from serial port to FTP server as a file . Each <Ctrl+Z> character present in the data flow of serial port when downloading FTP data will be coded as <ETX><Ctrl+Z>. Each <ETX> character will be coded as <ETX><ETX>. Single <Ctrl+Z> means end of the FTP data. <ETX> is 0x03, and <Ctrl+Z> is 0x1A.

とか書いてあって、JPEGとか送れるか疑問。

引き続き調査だな
(さっさと基板作って試せや)

2019年5月22日水曜日

ゲームボーイの開発環境 その2


 Qiiteに「GBDKによるゲームボーイソフト制作-0回 準備編-
というページがあり、ざっくり開発手順がわかった。
  • GBDKの入手
  • エミュレータの入手
  • サンプルプログラムの動作

まではあっさり完了
(zip解凍してBAT走らすだけwww)


GameBoyのHWを調べていると、GB Specというページを見つけた。
これによるとシリアル通信にはクロック同期らしい・・・orz

UARTでないとつらいなぁ。


ゲームボーイの開発環境

ハードオフとかでゲームボーイ各種が100円とかで売られているのを見て
簡易な端末とかに使えるんじゃね?
  • 通信ケーブルがあるということはUART使える?
  • プリンタやカメラの付いたカートリッジがあるということはカートリッジ経由ならI/Oも使える?

と思ったので、こそこそ情報集めから
備忘録的に。
GBDK これが主流みたいね。

参考サイト
簡単にゲームボーイソフトが作れる「GB Studio」公開。ROMやウェブアプリで書き出し可能


2019年5月20日月曜日

ESP32-CAM 農業用カメラを作る 6shutter

SIM7500JCを用いたファイル転送を考える。
ESP32-CAMによるSDカードへの撮影画像保存が先か?
とも思うがやれる事から。
SIM7500JCはATコマンドを用いて
  • HTTP
  • HTTPS
  • FTP
  • FTPS
  • TCP/IP
の通信を行う事が出来る。
画像データ自体は単なる畑の写真なので、FTP、もしくはFTPSで
サーバーにデータを送信するものとする。

■状態確認のコマンド
ATI ・・・ IMEI表示
AT+CNUM ・・・ SIMの電話番号表示
AT+CSQ  ・・・ 電波状態
AT+CPSI? ・・・ 接続状態

■初期設定
AT+CFOTASWITCH=0,0 ・・・ FOTA OFF(これをやらないとRESET時にメッセージがうざい。)
AT+CGDCONT=6,"IP","" ・・・ これを入れておかないと繋がらない。(嵌った)

■APN設定
AT+CGAUTH=1,3,"userID","PASSWORD"
AT+CGDCONT=1,"IP","APN"

■接続例
AT+CGAUTH? ・・・ 確認
+CGAUTH=1,3,"userID","PASSWORD"
AT+CGDCONT? ・・・ 確認
+CGDCONT: 1,"IP","APN SAMPLE","0.0.0.0",0,0,0,0
+CGDCONT: 2,"IPV6","ims","0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0",0,0,0,0
+CGDCONT: 3,"IPV4V6","","0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0",0,0,0,1
+CGDCONT: 6,"IP","","0.0.0.0",0,0,0,0

AT+CFUN=1 ・・・ WAN有効化

これ以降FTPの接続、データ送信をすれば良いのだが、
完全に忘れているので又後日。

ところで、SIM7500JCのUARTの信号レベルは1.8V。
なので3.3V系のESP32と接続するにはレベル変換が必要となる。

この辺も整理していこう。

2019年5月19日日曜日

畑 2畝目

苗植えてから1ヶ月放置で雑草だらけ。
土日毎朝2時間かけて雑草抜き

マジで雑草抜きロボ欲しいわ。

2019年5月18日土曜日

ESP32-CAM 農業用カメラを作る 5shutter

ESP32-CAMは現時点では技適が取れていないので、WiFiの電波を
放出すると、電波法に触れる恐れがあります。

実害は無いのは解っていますが、気になるので
WiFiを停止させる方法を調べてみました。
 Arduinoベースだと
setupの中で


  WiFi.disconnect();
  WiFi.mode(WIFI_OFF);
  WiFi.forceSleepBegin();


を記述すれば良いみたい。

誰か技適取ってくれませんかね