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();


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

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




2019年5月17日金曜日

監視カメラ用のSIMを考える

以前の記事で、激安MVNO SIMはロケットモバイルか?
みたいな事を書いたが、少し調べてみる
まず前提条件
  • 通信速度は問わない。なんなら3Gでも良い位。
  • SMSは有っても無くても良い。
  • SIMはマイクロSIMかnanoSIM
  • 安ければ安いほど良い
 で、以下に良い一覧が。

【SMS付き格安SIM】1,000円以下で運用可能なプランまとめ

これによると
SMS付(税込み)
b-mobile 190PadSIM
SMS付SIM(ドコモのみ)
100MB 346円

SMS無し(税込み)
ロケットモバイル Dプラン(ドコモ)
データプラン
神プラン
200kbps
322円

なので、やはりロケットモバイルが今回の使用目的では最安か!?

と、思ったがb-mobileのHPを良く見てみると、
(税別)
データ使用量 データ通信専用SIM(ドコモorソフトバンク) SMS付SIM (ドコモのみ)
100MBまで 190円 320円
1GBまで 480円 610円
3GBまで 850円 980円
6GBまで 1,450円 1,580円
10GBまで (初期設定上限値) 2,190円 2,320円
15GBまで 3,280円 3,410円
15GB以降も低速度でご利用になれます。

となっており、税込み205円から使用できる。
但し、100MBを超えたら段階的に料金が上がる。
1日3.3MB・・・・は越えないよなぁ。
(一応管理ページでは3GBの制限は出来るみたい)

制限無し 322円
100MB制限  205円

じっくり考えよう。


2019年5月16日木曜日

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

電源 その2


各デバイスの電源は前ページに書いたが、大元の電源をどうするか?
基本的に畑に設置するので、商用電源(100V)はまず使えない。
なので電池を使う事になるが、当然充電可能な2次電池となる。
現実的なところとしては
  • リチウムイオン電池
  • 鉛蓄電池
のどっちか。
且つ、充電方法は太陽電池によるもの意外は現実的ではない。
大容量のものを2個用意して週代わりで入れ替える、という手もあるが
「暑い」「寒い」「雨」「風」を理由に毎週行かない可能性も
高いので、極力自然エネルギーに依存したい。

そもそもどの程度の容量を必要とするのかを定義しないと
種類、サイズを絞れない。

  1. 最低1日1回の撮影と送信をしたい
  2. 将来的にはサーボモーターを使って3方向くらいに振って撮影したい。
  3. 将来的には、WiFiの機能かBLE機能を用いて温度/湿度の採取もしたい。

まず1に絞って考えてみると、ざっくり消費電力を以下の様に仮定する。
  • 撮影  100mA x 5sec
  • 送信 300mA x60sec
  • その他 100mA x 10sec
すると、1回の撮影と送信にかかる消費電流は
100mA*(5/3600)+300mA*(60/3600)+100mA*(10/3600)
=5.41mA/h
但し、DC/DCとかの損失分を加味してざっと2倍(そんなにひどいか?)
を掛けると
10.8mA/h
となる。


365回でも4000mA/h弱なので、モバイルバッテリ1個で
結構いけるんじゃね!?
という気になるが、経験上こんなには持たない事はわかりきってる。

まずはざっくり試作基板を作って実電流を測ってみないとね。


 これでも2年いけちゃうの?
無理だよなぁ。。。