ああ、本業が忙しくて畑カメラが進まない orz
気軽にテストツールを作るのに良くmedを使用するのだが、
LPC54113というNXPの変態CPUを使用していてはまったので
備忘録。
現象は115200bpsのときだけ文字化けする。
#include "mbed.h"
Serial device(P0_1, P0_0); // tx, rx
// main() runs in its own thread in the OS
int main()
{
device.baud(115200);
device.printf("Hello World\n");
上記だと化ける。9600,19200,38400は問題なし。
オシロとかで見てないけど多分クロック設定のミス?
いろいろ調べたらRawSerialというものがあり、
割り込みとかも便利らしい
以下の様に修正して解決。
115200bpsでもばっちり。
#include "mbed.h"
#include "RawSerial.h"
RawSerial device(P0_1, P0_0); // tx, rx
// main() runs in its own thread in the OS
int main()
{
device.baud(115200);
device.printf("Hello World\n");
2019年7月13日土曜日
2019年6月17日月曜日
pythonスクレイピングの覚書
chromedriver-binaryとcromeのバージョンは合っていないといけない
確認方法
$ pip3 show chromedriver-binary
Name: chromedriver-binary
Version: 76.0.3809.25.0
Summary: Installer for chromedriver.
Home-page: https://github.com/danielkaiser/python-chromedriver-binary
Author: Daniel Kaiser
Author-email: daniel.kaiser94@gmail.com
License: MIT
Location: /usr/lib/python3.8/site-packages
Requires:
Required-by:
確認方法
$ pip3 show chromedriver-binary
Name: chromedriver-binary
Version: 76.0.3809.25.0
Summary: Installer for chromedriver.
Home-page: https://github.com/danielkaiser/python-chromedriver-binary
Author: Daniel Kaiser
Author-email: daniel.kaiser94@gmail.com
License: MIT
Location: /usr/lib/python3.8/site-packages
Requires:
Required-by:
# Chromeが75の場合
pip3 install chromedriver-binary==75.0.3770.8.0
# Chromeが76の場合
pip3 install chromedriver-binary
参考にさせて頂きました
2019年6月13日木曜日
ESP32-CAM 農業用カメラを作る 15shutter
前回のフラッシュLEDがうっすらと点灯する件、なんとなく判明
回路図を良く見ると、LEDの点灯ポートは
「HS2_DATA1」という信号名(ArduinoではD4)。
で、SDカードの信号を良く見ると、
しっかり「HS2_DATA1」を使っている(笑)。
しかも47Kでプルアップされている。
いやいや、そんな結線ありえんだろ。と、テスタであたってみるも
しっかり導通。
そりゃうっすらと点灯するわなヽ《 ゚Д゚》ノ
GPIOをLにすれば消灯するし、Hにすれば点灯するけど、D4がINPUT設定に
なっていればこのプルアップが効いてくる。
何故Light-Sleep時にうっすら点灯するかは謎だが、どこかの処理で
D4をINPUT設定にしているのかも知れない。
さて、どうするか。
本来の「畑作物監視カメラ」という目的からすると
夜間撮影するわけでもないのでLEDは不要。
SDカードを使わないわけにも行かないし、LEDは
うっすらなら点いていても問題はないので放置でも
良いが、点灯させない方向で改造するか。
回路図を良く見ると、LEDの点灯ポートは
「HS2_DATA1」という信号名(ArduinoではD4)。
で、SDカードの信号を良く見ると、
しっかり「HS2_DATA1」を使っている(笑)。
しかも47Kでプルアップされている。
いやいや、そんな結線ありえんだろ。と、テスタであたってみるも
しっかり導通。
そりゃうっすらと点灯するわなヽ《 ゚Д゚》ノ
GPIOをLにすれば消灯するし、Hにすれば点灯するけど、D4がINPUT設定に
なっていればこのプルアップが効いてくる。
何故Light-Sleep時にうっすら点灯するかは謎だが、どこかの処理で
D4をINPUT設定にしているのかも知れない。
さて、どうするか。
本来の「畑作物監視カメラ」という目的からすると
夜間撮影するわけでもないのでLEDは不要。
SDカードを使わないわけにも行かないし、LEDは
うっすらなら点いていても問題はないので放置でも
良いが、点灯させない方向で改造するか。
2019年6月12日水曜日
ESP32-CAM 農業用カメラを作る 14shutter
ESP32-CAMで
・撮影
・SDに連番で保存
というだけのスケッチを書いたのだが、何かがおかしい。
フラッシュの代わりのLEDがうっすら点灯した状態のままになる
いろいろいじってみると、どうもlight_sleepが影響しているみたい。
void loop() {
digitalWrite(LED_FLASH, LOW); //フラッシュLED消灯
Serial.println("Captuer");
digitalWrite(LED_FLASH, HIGH); //フラッシュLED消灯
//撮影処理とりあえずコメントアウト capture_save_jpeg(cnt++);
digitalWrite(LED_FLASH, LOW); //フラッシュLED消灯
esp_sleep_enable_timer_wakeup(10*1000000); //10 seconds
int ret = esp_light_sleep_start();
Serial.println("Exit sleep");
}
上の処理だとうっすら点灯になるが、
void loop() {
digitalWrite(LED_FLASH, LOW); //フラッシュLED消灯
Serial.println("Captuer");
digitalWrite(LED_FLASH, HIGH); //フラッシュLED消灯
//撮影処理とりあえずコメントアウト capture_save_jpeg(cnt++);
digitalWrite(LED_FLASH, LOW); //フラッシュLED消灯
delay(10*1000);
Serial.println("Exit sleep");
}
これだと「点灯」→「消灯」を繰り返す。
LED自体は単純なFETのゲートでドライブされているので
中途半端な状態にはならないはずだが。
調査継続。
・撮影
・SDに連番で保存
というだけのスケッチを書いたのだが、何かがおかしい。
フラッシュの代わりのLEDがうっすら点灯した状態のままになる
いろいろいじってみると、どうもlight_sleepが影響しているみたい。
void loop() {
digitalWrite(LED_FLASH, LOW); //フラッシュLED消灯
Serial.println("Captuer");
digitalWrite(LED_FLASH, HIGH); //フラッシュLED消灯
//撮影処理とりあえずコメントアウト capture_save_jpeg(cnt++);
digitalWrite(LED_FLASH, LOW); //フラッシュLED消灯
esp_sleep_enable_timer_wakeup(10*1000000); //10 seconds
int ret = esp_light_sleep_start();
Serial.println("Exit sleep");
}
上の処理だとうっすら点灯になるが、
void loop() {
digitalWrite(LED_FLASH, LOW); //フラッシュLED消灯
Serial.println("Captuer");
digitalWrite(LED_FLASH, HIGH); //フラッシュLED消灯
//撮影処理とりあえずコメントアウト capture_save_jpeg(cnt++);
digitalWrite(LED_FLASH, LOW); //フラッシュLED消灯
delay(10*1000);
Serial.println("Exit sleep");
}
これだと「点灯」→「消灯」を繰り返す。
LED自体は単純なFETのゲートでドライブされているので
中途半端な状態にはならないはずだが。
調査継続。
2019年6月4日火曜日
ESP32-CAM 農業用カメラを作る 13shutter
いきなりESP32-CAMを動かし始めたが、補足の情報を。
開発環境
開発環境(Arduino)は
https://qiita.com/Nabeshin/items/b195cad1afe99ce29f1e
ここが詳しいので参照願います。
回路図
フラッシュLED
フラッシュLEDの点灯方法
但し、点灯時200mAくらい電流が流れる。
#define LED_FLASH 4 //FLASH LED
pinMode(LED_FLASH, OUTPUT);
digitalWrite(LED_FLASH, LOW); //フラッシュLED消灯
digitalWrite(LED_FLASH, HIGH); //フラッシュLED点灯
digitalWrite(LED_FLASH, LOW); //フラッシュLED消灯
開発環境
開発環境(Arduino)は
https://qiita.com/Nabeshin/items/b195cad1afe99ce29f1e
ここが詳しいので参照願います。
回路図
フラッシュLED
フラッシュLEDの点灯方法
但し、点灯時200mAくらい電流が流れる。
#define LED_FLASH 4 //FLASH LED
pinMode(LED_FLASH, OUTPUT);
digitalWrite(LED_FLASH, LOW); //フラッシュLED消灯
digitalWrite(LED_FLASH, HIGH); //フラッシュLED点灯
digitalWrite(LED_FLASH, LOW); //フラッシュLED消灯
2019年6月3日月曜日
ESP32-CAM 農業用カメラを作る 12shutter
いよいよESP32-CAMを使って撮影した画像を
SDカードに保存する。
いろいろNETを彷徨っているとこんなサンプルを発見
https://github.com/v12345vtm/CameraWebserver2SD/blob/master/CameraWebserver2SD/CameraWebserver2SD.ino
通常のサンプルはいろいろエラーが出て、動かすのに苦労があるのだが
このサンプルはいきなりOKだった。
WiFiの設定とNTPサーバーを国内のものに変更する
const char* ssid = "XXXXX";
const char* password = "PASS";
const char* ntpServer = "ntp.nict.jp"; //internet time server
RESETすると、シリアルポートに以下のメッセージ
ets Jun 8 2016 00:22:57
rst:0x1 (POWERON_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1100
load:0x40078000,len:9232
load:0x40080400,len:6400
entry 0x400806a8
[D][esp32-hal-psram.c:47] psramInit(): PSRAM enabled
v12345vtm
[D][WiFiGeneric.cpp:336] _eventCallback(): Event: 0 - WIFI_READY
[D][WiFiGeneric.cpp:336] _eventCallback(): Event: 2 - STA_START
.[D][WiFiGeneric.cpp:336] _eventCallback(): Event: 4 - STA_CONNECTED
[D][WiFiGeneric.cpp:336] _eventCallback(): Event: 7 - STA_GOT_IP
[D][WiFiGeneric.cpp:379] _eventCallback(): STA IP: 192.168.200.109, MASK: 255.255.255.0, GW: 192.168.200.254
.
WiFi connected
Sunday, June 02 2019 16:57:14
internet time ok
SD_MMC Card Type: SDHC
SD_MMC Card Size: 7600MB
Listing directory: /
FILE: /.dropbox.device SIZE: 56
Creating Dir: /mydir
Dir created
Listing directory: /
DIR : /mydir
FILE: /.dropbox.device SIZE: 56
Removing Dir: /mydir
Dir removed
Listing directory: /
FILE: /.dropbox.device SIZE: 56
Writing file: /hello.txt
File written
Appending to file: /hello.txt
Message appended
Reading file: /hello.txt
Read from file: Hello World!
Deleting file: /foo.txt
[E][vfs_api.cpp:135] remove(): /foo.txt does not exists or is directory
Delete failed
Renaming file /hello.txt to /foo.txt
File renamed
Reading file: /foo.txt
Read from file: Hello World!
[E][vfs_api.cpp:64] open(): /sdcard/test.txt does not exist
1048576 bytes written for 2274 ms
Total space: 7582MB
Used space: 762MB
Starting web server on port: '80'
Starting stream server on port: '9601'
Camera Ready! Use 'http://192.168.200.109' to connect , de stream zit op een andere poortkanaal 9601
stream Ready! Use 'http://192.168.200.109:9601/stream
image Ready! Use 'http://192.168.200.109/capture
画像が欲しいので、
http://192.168.200.109/capture
にアクセスすると以下のメッセージが表示され、ブラウザに
1600x1200の画像が表示された。
lijn493
lijn496 pixformatjpg for httpd send
fb lengte=
106073
Writing file: /capture.jpg
succes to open file for SDwriting552
Writing file: /info.txt
File written
0
JPG: 106073B 978ms
SDカードの内容はこんな感じ
Textファイルはテスト的に作成されたものの様。
ここまで出来ていると、もう先が見えてきた。
偉大な先人に感謝。
まだスケッチ内容を理解していないが、
を追加する事になる。
ところでNTP設定は何のために使っているんだろう
SDカードに保存する。
いろいろNETを彷徨っているとこんなサンプルを発見
https://github.com/v12345vtm/CameraWebserver2SD/blob/master/CameraWebserver2SD/CameraWebserver2SD.ino
通常のサンプルはいろいろエラーが出て、動かすのに苦労があるのだが
このサンプルはいきなりOKだった。
WiFiの設定とNTPサーバーを国内のものに変更する
const char* ssid = "XXXXX";
const char* password = "PASS";
const char* ntpServer = "ntp.nict.jp"; //internet time server
RESETすると、シリアルポートに以下のメッセージ
ets Jun 8 2016 00:22:57
rst:0x1 (POWERON_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1100
load:0x40078000,len:9232
load:0x40080400,len:6400
entry 0x400806a8
[D][esp32-hal-psram.c:47] psramInit(): PSRAM enabled
v12345vtm
[D][WiFiGeneric.cpp:336] _eventCallback(): Event: 0 - WIFI_READY
[D][WiFiGeneric.cpp:336] _eventCallback(): Event: 2 - STA_START
.[D][WiFiGeneric.cpp:336] _eventCallback(): Event: 4 - STA_CONNECTED
[D][WiFiGeneric.cpp:336] _eventCallback(): Event: 7 - STA_GOT_IP
[D][WiFiGeneric.cpp:379] _eventCallback(): STA IP: 192.168.200.109, MASK: 255.255.255.0, GW: 192.168.200.254
.
WiFi connected
Sunday, June 02 2019 16:57:14
internet time ok
SD_MMC Card Type: SDHC
SD_MMC Card Size: 7600MB
Listing directory: /
FILE: /.dropbox.device SIZE: 56
Creating Dir: /mydir
Dir created
Listing directory: /
DIR : /mydir
FILE: /.dropbox.device SIZE: 56
Removing Dir: /mydir
Dir removed
Listing directory: /
FILE: /.dropbox.device SIZE: 56
Writing file: /hello.txt
File written
Appending to file: /hello.txt
Message appended
Reading file: /hello.txt
Read from file: Hello World!
Deleting file: /foo.txt
[E][vfs_api.cpp:135] remove(): /foo.txt does not exists or is directory
Delete failed
Renaming file /hello.txt to /foo.txt
File renamed
Reading file: /foo.txt
Read from file: Hello World!
[E][vfs_api.cpp:64] open(): /sdcard/test.txt does not exist
1048576 bytes written for 2274 ms
Total space: 7582MB
Used space: 762MB
Starting web server on port: '80'
Starting stream server on port: '9601'
Camera Ready! Use 'http://192.168.200.109' to connect , de stream zit op een andere poortkanaal 9601
stream Ready! Use 'http://192.168.200.109:9601/stream
image Ready! Use 'http://192.168.200.109/capture
画像が欲しいので、
http://192.168.200.109/capture
にアクセスすると以下のメッセージが表示され、ブラウザに
1600x1200の画像が表示された。
lijn493
lijn496 pixformatjpg for httpd send
fb lengte=
106073
Writing file: /capture.jpg
succes to open file for SDwriting552
Writing file: /info.txt
File written
0
JPG: 106073B 978ms
SDカードの内容はこんな感じ
Textファイルはテスト的に作成されたものの様。
ここまで出来ていると、もう先が見えてきた。
偉大な先人に感謝。
まだスケッチ内容を理解していないが、
- WiFi関連の削除
- 定期的にCaptuerを実行
- 余計なTextファイルを作らない
- FTPによる画像ファイルの送信
を追加する事になる。
ところでNTP設定は何のために使っているんだろう
2019年6月2日日曜日
2019年5月31日金曜日
ESP32-CAMのWiFiの相性
ESP32-CAMのテストで手持ちのWiFiルーターをAPとして
使おうとしたらつながらない。
通常使っているスマホとかAPには
つながる
もちろん、ZTEは通常使用出来ている
暗号化とかで微妙に違いがあるのだろうか?
ArduinoベースのESP32ではWiFi関連の細かい設定方法の
情報が少ないなぁ。
(そもそも技適が・・・・・)
継続調査!!
使おうとしたらつながらない。
通常使っているスマホとか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を
かけたりするには便利かもしれない。
もちろん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
BostonDynamicsとかガチでやっているところを除けば
いままでこの手のロボットはサーボモータ状のものが圧倒的に多かったと
思うが、やはり関節数+αのサーボモーターが必要となると
二の足を踏む。
モーターの数としては同じ位だし、モータドライバもその数分
必要だけれど、機構部分はシンプルになると思う。
4足歩行を前提とすれば、それぞれの関節の可動域はそれほど
広く無くてすみ、それならば180度可動のサーボモータを使用する
必要はない。
問題点としては
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)を送信するとサーバー上にファイルが作成された。
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が返ってくれば成功。
確認用のコマンドを色々投げてみる
------------------------------------------
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は
------------------------------------------
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となりました。
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
基板に載っている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転送を確認しないと先に進まない。
本業で作り散らかした残材を使って
シリアルポートは1.8Vのレベル変換が必要なので
USBの口だけ出す。
USBドライバを入れておけばいくつかのUSBシリアルの
ポートが現れ、そのうちの1つがATコマンドの口となる。
まずは100byteのデータ転送からだな。
本業で作り散らかした残材を使って
- 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とか送れるか疑問。
引き続き調査だな
(さっさと基板作って試せや)
サーバー接続までは以下の一連のコマンドで出来そう。
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円とかで売られているのを見て
簡易な端末とかに使えるんじゃね?
と思ったので、こそこそ情報集めから
備忘録的に。
GBDK これが主流みたいね。
参考サイト
簡単にゲームボーイソフトが作れる「GB Studio」公開。ROMやウェブアプリで書き出し可能
簡易な端末とかに使えるんじゃね?
- 通信ケーブルがあるということは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日日曜日
2019年5月18日土曜日
ESP32-CAM 農業用カメラを作る 5shutter
ESP32-CAMは現時点では技適が取れていないので、WiFiの電波を
放出すると、電波法に触れる恐れがあります。
実害は無いのは解っていますが、気になるので
WiFiを停止させる方法を調べてみました。
Arduinoベースだと
setupの中で
WiFi.disconnect();
WiFi.mode(WIFI_OFF);
WiFi.forceSleepBegin();
を記述すれば良いみたい。
誰か技適取ってくれませんかね
放出すると、電波法に触れる恐れがあります。
実害は無いのは解っていますが、気になるので
WiFiを停止させる方法を調べてみました。
Arduinoベースだと
setupの中で
WiFi.disconnect();
WiFi.mode(WIFI_OFF);
WiFi.forceSleepBegin();
を記述すれば良いみたい。
誰か技適取ってくれませんかね
2019年5月17日金曜日
監視カメラ用のSIMを考える
以前の記事で、激安MVNO SIMはロケットモバイルか?
みたいな事を書いたが、少し調べてみる
まず前提条件
これによると
SMS付(税込み)
SMS無し(税込み)
なので、やはりロケットモバイルが今回の使用目的では最安か!?
と、思ったがb-mobileのHPを良く見てみると、
(税別)
となっており、税込み205円から使用できる。
但し、100MBを超えたら段階的に料金が上がる。
1日3.3MB・・・・は越えないよなぁ。
(一応管理ページでは3GBの制限は出来るみたい)
制限無し 322円
100MB制限 205円
じっくり考えよう。
みたいな事を書いたが、少し調べてみる
まず前提条件
- 通信速度は問わない。なんなら3Gでも良い位。
- SMSは有っても無くても良い。
- SIMはマイクロSIMかnanoSIM
- 安ければ安いほど良い
これによると
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回の撮影と送信をしたい
- 将来的にはサーボモーターを使って3方向くらいに振って撮影したい。
- 将来的には、WiFiの機能かBLE機能を用いて温度/湿度の採取もしたい。
まず1に絞って考えてみると、ざっくり消費電力を以下の様に仮定する。
- 撮影 100mA x 5sec
- 送信 300mA x60sec
- その他 100mA x 10sec
100mA*(5/3600)+300mA*(60/3600)+100mA*(10/3600)
=5.41mA/h
但し、DC/DCとかの損失分を加味してざっと2倍(そんなにひどいか?)
を掛けると
10.8mA/h
となる。
365回でも4000mA/h弱なので、モバイルバッテリ1個で
結構いけるんじゃね!?
という気になるが、経験上こんなには持たない事はわかりきってる。
まずはざっくり試作基板を作って実電流を測ってみないとね。
これでも2年いけちゃうの?
無理だよなぁ。。。
2019年5月15日水曜日
ESP32-CAM 農業用カメラを作る 3shutter
電源 その1
電源は大きく分けて2系統必要。
- ESP32は2.7V~3.6V
- SIM7500JCは3.4~4.2V
いけるんじゃね?とおもうが、SIM7500は電源ON時の突入電流が
600mAくらい流れるので、下手なDC/DCやシリーズレギュレータを
使うと電圧効果を起こしてESP32がリセットしてしまう。
これを 防ぐためには
大き目の電解コン(470uF以上?)を付けて突入電流に備えるか
電源系統を別にするしかない。
(3.4~4.2Vという時点でLion直結を想定している気がするが)
2019年5月14日火曜日
ESP32-CAM 農業用カメラを作る 2shutter
LTEモジュール
外部との通信で使用するLTEモジュールとしては
SIMCOM製 SIM7500JCを使用する。
SIM7500シリーズの国内向けには
- SIM7500JE SoftBank用
- SIM7500JC NTTDocomo/KDDI用
何故このモジュールを選択したかと言うと本業で使用した事が
あるからw
LTE-CAT1専用モジュールだが、SIMは通常のLTE用が使用出来る。
なので 、ロケットモバイルとかの\298(税抜き)とかの激安MVNO SIM
が使えるはず。
(LTE-CAT1専用のSIMも存在し、数分の1の金額だが個人での入手は
現時点では難しい)
2019年5月13日月曜日
ESP32-CAM 農業用カメラを作る 1shutter
ESP32-CAMが御手頃価格で買えて、畑を始めたので、
「作物監視カメラ」を作りたくなるのは自然な流れだと思う。
ESP32-CAMが安価なので、極力費用は掛けたくない。
また、現時点で技適は取れていない(すくなくとも手持ちのは)ので
WiFiは封印する。
とすると、遠隔から画像を確認するには、3G/LTE回線を用いて
外部サーバーに飛ばす、という方法を考え付く
↓こんな感じ
ESP32-CAMにはMicroSDスロットが搭載されているので
少しずつ進めていこう。
「作物監視カメラ」を作りたくなるのは自然な流れだと思う。
ESP32-CAMが安価なので、極力費用は掛けたくない。
また、現時点で技適は取れていない(すくなくとも手持ちのは)ので
WiFiは封印する。
とすると、遠隔から画像を確認するには、3G/LTE回線を用いて
外部サーバーに飛ばす、という方法を考え付く
↓こんな感じ
ESP32-CAMにはMicroSDスロットが搭載されているので
これに撮影画像を保存して、一定間隔でLTEモジュール経由で
サーバーに送信する。
ちょっと調べたところ、こんな記事が見つかった。
SDカードに保存
SDカードに保存
少しずつ進めていこう。
2019年5月12日日曜日
畑 1畝目
今年から家庭菜園を借りた。
まずは25㎡から。
植えたものは
・ジャガイモ
・サツマイモ
・枝豆
・ズッキーニ
・茄子
・ピーマン
・きゅうり
・空芯菜
・小松菜
あと
・ すいか
・ゴーヤ
を植える予定。
一週間ぶりに行ってみたら雑草の勢力がすごい。
作業の8割は雑草とり。
除草ロボット作るか。
まずは25㎡から。
植えたものは
・ジャガイモ
・サツマイモ
・枝豆
・ズッキーニ
・茄子
・ピーマン
・きゅうり
・空芯菜
・小松菜
あと
・ すいか
・ゴーヤ
を植える予定。
一週間ぶりに行ってみたら雑草の勢力がすごい。
作業の8割は雑草とり。
除草ロボット作るか。
2019年5月11日土曜日
ESP32-CAMにはまる CH2
ESP32-CAMが順調(でもなかったけど)に動いたので、
今度はAliで2台目を購入。10日くらいで到着。
送料込み$8.11だったけど、今見たら更に値下げ。
送料込みで$6くらいになってくれればいいのに。
(実質カメラが無料)
で、アンテナはパターンアンテナになっていました。
チップコンデンサ(か0Ω抵抗)の付け替えだけなんだけど
型番やLotで違いがあるのか?
今度はAliで2台目を購入。10日くらいで到着。
送料込み$8.11だったけど、今見たら更に値下げ。
送料込みで$6くらいになってくれればいいのに。
(実質カメラが無料)
で、アンテナはパターンアンテナになっていました。
チップコンデンサ(か0Ω抵抗)の付け替えだけなんだけど
型番やLotで違いがあるのか?
2019年5月10日金曜日
ESP32-CAMにはまる CH1
ESP-32に2Mpixlのカメラが付属したモジュールが最近話題なので
買ってみた。
Amaで1200円くらい。
Aliだと送料込みで$9くらい
この値段なら、監視カメラとかでも気軽に使える。
で、いきなりWiFiにつながらない刑に嵌った。
Verposeオプションを付けて詳細情報をDUMPしてみると
APは見えているが信号レベルがやたら低い
(-97dbとか)
原因は何で??みたいな事だったけど、
他にも嵌ってる人がいるかも知れないので
備忘録として残しておく。
原因は簡単で、オンボードのパターンアンテナと外部アンテナ用のFLコネクタの切り替えが「外部アンテナ」になっていた。
他の記事とかだとデフォでオンボードアンテナになっている様だが、
こいつは外部アンテナ用にチップ(コンデンサか0Ω抵抗)が
実装されていた。
2.4GHzのWiFiアンテナは手持ちでなかったが、2.1GHzLTE用の
アンテナを付けてみたらすんなりAPにつながった。
(技適的にはアウトなのでゴニョゴニョ・・・)
商品説明には全く記載は無かった。
原因不明でAPに繋がらない人はこのチップを確認してみては。
買ってみた。
Amaで1200円くらい。
Aliだと送料込みで$9くらい
この値段なら、監視カメラとかでも気軽に使える。
で、いきなりWiFiにつながらない刑に嵌った。
Verposeオプションを付けて詳細情報をDUMPしてみると
APは見えているが信号レベルがやたら低い
(-97dbとか)
原因は何で??みたいな事だったけど、
他にも嵌ってる人がいるかも知れないので
備忘録として残しておく。
原因は簡単で、オンボードのパターンアンテナと外部アンテナ用のFLコネクタの切り替えが「外部アンテナ」になっていた。
他の記事とかだとデフォでオンボードアンテナになっている様だが、
こいつは外部アンテナ用にチップ(コンデンサか0Ω抵抗)が
実装されていた。
2.4GHzのWiFiアンテナは手持ちでなかったが、2.1GHzLTE用の
アンテナを付けてみたらすんなりAPにつながった。
(技適的にはアウトなのでゴニョゴニョ・・・)
商品説明には全く記載は無かった。
原因不明でAPに繋がらない人はこのチップを確認してみては。
登録:
投稿 (Atom)