タグ別アーカイブ: Wifi

ESP-WROOM-02 RECOVERY

ESP-WROOM-02をArduinoで使用しようと思いましたが
ステルスのSSIDに対応できなかったのでATコマンドの出荷状態に戻そうと思います。
Wi-Fiモジュール ESP-WROOM-02 DIP化キット
http://akizukidenshi.com/catalog/g/gK-09758

元に戻すために準備するものは、フラッシュのダウンロードツールとファームウェアになります。
ダウンロードツールは、以下にあります。
◆ダウンロードツール
https://www.espressif.com/en/support/download/other-tools?keys=&field_type_tid%5B%5D=14
Flash Download Tools (ESP8266 & ESP32)
◆ファームウェア
https://www.espressif.com/en/support/download/sdks-demos?keys=&field_type_tid%5B%5D=14
ESP8266 NONOS SDK V2.2.0

ダウンロードファイルをそれぞれ解凍します。
ファームのファイルは、ESP8266\ESP8266_NONOS_SDK-2.2.0\binフォルダに入っています。
ダウンロードツールESPFlashDownloadTool_v3.6.3.exeを起動します。
以下のドキュメントに沿ってファイルとメモリアドレスを設定します。
https://www.espressif.com/sites/default/files/documentation/4a-esp8266_at_instruction_set_en.pdf
1.2.6. 32 Mbit Flash, Map: 1024 KB + 1024 KB

ESP-WROOM-02(ESP8266EX)を起動するときピンの電圧を設定する必要があります。今回は、書き込みモードなので以下のようにします。
GPIO pin   書き込みモード
GPIO0    LOW
GPIO2    HIGH
GPIO15     LOW
この状態で電源を入れた後、ダウンロードツールをSTARTします。
書き込みが終了したら、電源を切って、ピンの電圧を以下のようにします。この状態で電源を入れると実行モードになります。
GPIO pin  実行モード
GPIO0    HIGH
GPIO2    HIGH
GPIO15     LOW

TERA TERMを以下の設定で起動してESP-WROOM-02と接続します。
115200bps, 8N1
改行コード: RX=CR, TX=CR+LF
ATと入力してEnterキーを押すとOKが返ってくれば成功です。

Intel Quark D2000 Zephyr XBEE

XBeeで無線接続しました。
Arduino用プロトタイピングボード (Prototyping Shield For Arduino)上にXBeeを接続しました。http://akizukidenshi.com/catalog/g/gM-07033/
XBeeのピッチ変換基板は、
XBee用2.54mmピッチ変換基板を使用しました。
http://akizukidenshi.com/catalog/g/gP-05060/
XBeeは、
XBeeWi-Fi(S6B)モジュール(PCBアンテナタイプ)を使用しました。
http://akizukidenshi.com/catalog/g/gM-06676/

XBeeの場合、通信の大部分をモジュール側で行うので通信の可否はモジュール設定で決まります。

USBからの給電では、ZigbeeのXBeeしか動かせません。
AC-DCコンバータ経由での給電では、WiFiのXBeeも動作しました。

通信確認は、以下のサンプルプログラムを使用しました。
https://github.com/jendo1969/d2000/tree/master/Bmc150_MAG

ESP-WROOM-02 ARDUINO USE

interface 7月号の500円wifiでの記事を実践しています。
http://www.kumikomi.net/interface/contents/201707.php
ESP-WROOM-02をArduinoマイコンとして使ってみました。
http://akizukidenshi.com/catalog/g/gK-09758/
スケッチ書き込み用のUSB-USART変換には、HiLetgo FTDI FT232RL 3.3V 5.5V USB to TTL シリアル コンバーター アダプター モジュール for Arduinoを使用しました。
https://www.amazon.co.jp/HiLetgo-FT232RL-%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%BF%E3%83%BC-%E3%82%A2%E3%83%80%E3%83%97%E3%82%BF%E3%83%BC-Arduino/dp/B011QQJ034/ref=pd_sim_21_24?_encoding=UTF8&psc=1&refRID=BR9H455Y1XBDSGKT9EF4
格安で不安でしたが、Windows10で問題なく使用できました。

Arduino IDEを以下のURLからダウンロードしています。
https://www.arduino.cc/en/Main/Donate

LEDの点滅スケッチの書き込みができました。
RSTとDTR信号でリセットと書き込みモードを制御しているのでIDEには、メニューのツール→Reset Methodをnodemcuに設定する必要があります。ckのままでは書き込みが失敗します。

WiFi Module ESP-WROOM-02

Wi-Fiモジュール ESP-WROOM-02 DIP化キット
http://akizukidenshi.com/catalog/g/gK-09758/Jpeg
ESP-WROOM-02はESP8266EX(SoC、32bit MCU)を搭載したWiFiモジュールです。
キットで650円、単品で550円という格安WiFiモジュールです。
衝撃価格です。
Wi-Fiモジュール ESP-WROOM-02
http://akizukidenshi.com/catalog/g/gM-09607/Jpeg

IO15 -> GND
IO0  -> VCC
IO2  -> VCC
すべて10kΩの抵抗を入れてつなぎます。
電源投入時この設定で
Flash Boot Mode
でWROOM-02のFlushで起動します。

AT+CIFSR
これでMACアドレスを調べます。

+CIFSR:STAMAC,”MACアドレス”
セキュリティを回避するためこのMACアドレスをWiFiルータに登録します。

AT+CWMODE=1
ifiモードを設定します。 モードはstationにします。

AT+CIFSR
コマンドで取得したIPアドレスを確認します。
+CIFSR:STAIP,”***.***.***.***”

AT+CIPMUX=1
複数接続モードの許可。TCPサーバーとして動作させるためには、複数接続モードを許可しておく必要がある。

AT+CIPSERVER=1,1000
TCPサーバーとしての動作を許可し、ポート1000でのlisten()を開始させる。このコマンドを与える前に、AT+CIPMUX=1を実行しておくこと。

接続テストするためTERA TERMでTCPで接続します。
接続
0,CONNECT
切断
0,CLOSED

【送信】
10文字送信
AT+CIPSEND=0,10

【受信】
受信イベント
+IPD,0,4:***
Jpeg
一度設定するとルータまで自動的に接続するので案外手間いらずです。

EDISON SETUP

EDISONのセットアップを行います。

■Intel Edisonドライバーのダウンロード
https://software.intel.com/en-us/iot/hardware/edison/downloads
Windows 64-bit Integrated Installer (11.8 MB, .exe)
w_iot_2015.0.031.exe
これでファームウェアと開発環境も含めこのSetupで対応できる。

■Edison上で動かす最新Linuxイメージ
https://software.intel.com/en-us/iot/hardware/edison/downloads
Intel Edison® Board Firmware Software Release 2.1
edison-iotdk-image-280915.zip
※開発環境でインストールできるので再インストール以外不要

■ファームウェア書き換えツール
Flash Tool Lite
Download – (Windows*)
※開発環境でファームウェアは、インストールできるので再インストール以外不要

環境がととなったところでEDISON本体の設定を行います。
EDISONの内側のUSBとPCをつなぎます。開発環境にドライバが含まれているのでUSBを使ってLAN接続できます。
2016-01-11 (1)

XDKを起動し、下側にあるSSHツールで接続します。
IP192.168.2.15でSSH接続することができます。最初は、パスワードが設定されていません。
2016-01-11

configure_edison –setup
コマンドを実行します。
■Configure Edison: Device Name
適当にデバイスの名前を決めます。
■Configure Edison: Device Password
デバイスのパスワード(root共通)を設定します。ここを設定すると次回のログイン時に必要です。適当に設定します。
■Configure Edison: WiFi Connection
WiFiを設定します。数秒後に自動的にスキャンしたAPのリストを見せてくれます。SSIDとパスワードの設定を行います。
WiFiの設定確認をするために [ifconfig]を実行します。wlan0 にIPアドレスがあればOKです。
※ifconfigでwlan0のMACアドレスも調べられます。

■タイムゾーンの変更
rm /etc/localtime
で既存の設定を消してから
ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
で東京/日本に合わせられます。
dateコマンドで日時を確認してください。

■Edisonを最新にする
opkgを更新してパッケージを最新のものにします。
opkg update
opkg upgrade

セットアップが完了したのでアプリを作ってみたいと思います。

Raspberry Pi A+ Setup

今回は、GUIは使わずCUIで運用するため立ち上げに画面表示が必要なNOOBSは使用しません。
https://www.raspberrypi.org/downloads/

RASBIANを単独でダウンロードします。
インストールの仕方は以下のURLにあります。
https://www.raspberrypi.org/documentation/installation/installing-images/linux.md
LINUXでSDカードの作成を行います。SDカードを作業用PCに差し込みます。 df -h コマンドでSDカードがマウントされたデバイス名を確認します。 /dev/sd*1 *は、アルファベットが入ります。作業フォルダにダウンロードしたOSイメージを解凍します。imgファイル名が「2015-05-05-raspbian-wheezy.im」の時の例です。
sudo dd bs=4M if=2015-05-05-raspbian-wheezy.img of=/dev/sd*
*は、アルファベットが入ります。
SDカードへの書き込みが終わるまでしばらく待ちます。終わったら
Sync コマンドで書き込みを終わらせ、SDカードを安全な取り外しをします。

■ターミナル接続の準備
モニタに繋がず立ち上げるのでターミナル接続の準備をします。
IOが3.3Vで動作するUART-USB変換を準備します。http://akizukidenshi.com/catalog/g/gM-08461/
超小型USBシリアル変換モジュール
P1コネクタの4、6、8、10ピンを使用します。
RasPi P1とUART-USB変換の接続
4PIN    -    5V0                     <-     5V
6PIN    -    GND                   <->  GND
8PIN    ー    UART0_RXD <-    TXD
10PIN    ー    UART0_TXD  ->    RXD
電源5VもUART-USB変換から供給します。ただ、単独起動は問題ありませんがUSB Wifiドングルを繋ぐと電流が足りず、ボードのマイクロUSBから給電しました。
Jpeg

■起動
LANがないと何かと不便なのでUSB Wifiドングルをつけてセットアップしました。Raspberry Pi A+は、USBが1ポートしかないのでそこに接続しました。
http://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-4PTC
http://www.planex.co.jp/products/gw-usnano2a/

作成したSDカードをRaspberry Pi A+に差し込み、UART-USB変換をPCに差し込み電源を入れます。
ターミナルの通信設定は、通信速度115200bps、データ長さ8ビット、ストップビット1、パリティなしです。
起動後、ユーザ名:pi、パスワード:raspberryでログインします。

sudo iwlist wlan0 scan
自分が接続したいSSIDを見つけます。
今回はWEPで接続すします。Raspberry Piで無線LANを利用するときに必要な情報が書かれているファイルは以下になります。
/etc/network/interfaces
テキストエディタは、nanoが入っているのでこれを使います。
sudo nano /etc/network/interfaces

#####################################
allow-hotplug wlan0
iface wlan0 inet dhcp
wireless-essid 接続先のSSID
wireless-key 接続先のキー
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
#####################################

接続先のSSIDには、””ダブルコーテーションはつけません。
接続先のキーには、アスキー設定の場合、s:を先頭につけます。

Jpeg

■接続確認
sudo reboot で再起動してwifi接続の確認します。
ifconfig -a
これでwlan0にIPアドレスが設定されていればOKです。

■システム更新
インターネットにつながったのでシステムの更新します。
sudo apt-get update
sudo apt-get upgrade

いつもし使用しているテキストエディタVIMを入れておきます。
sudo apt-get install -y vim

以上でセットアップ完了です。

MySQL ON RENTAL SERVER

IoTのサーバ側の準備をしています。
格安のロリポップのロリポプランを使用しています。
http://lolipop.jp/
今回はデータベースを使ってみます。ロリポップは、MySQLの使用が出来ます。

■テーブルの準備
レンタルサーバにテスト用のテーブルを作成しておきます。プランがロリポプランのためMySQLのデータベースは1個しかあリません。Wordpressに使っているデータベースにテーブルを追加しました。
3列のテーブルを作成し、2行レコードを追加しました。
Id、item、 value
1、 command、0
2、 status、 1

MySQLのドライバは、MySQL-pythonを使用しました。ちなみにMySQL公式のmysql-connector-pythonは使用できませんでした。
以下、データベースの読み込みサンプルです。
################################

#!/usr/bin/python2.7
# coding: UTF-8

import cgi
import os
import MySQLdb

def connect():
return MySQLdb.connect(host=”サーバ名”, db=”データベース名”,
user=”ユーザID”, passwd=”パスワード”, charset=”utf8″)

def get(form):
print “Content-Type: text/html; charset=utf-8”
print
print “<html><body>”

# 一覧表示
conn = connect()
curs = conn.cursor()

sql=”SELECT * FROM roomba_ctrl”
curs.execute(sql)
result = curs.fetchall()
for row in result:
print “<h2>”
print “id=”
print row[0]
print ” : item=”
print row[1].encode(‘utf-8’)
print ” : val=”
print row[2]
print “</h2>”

curs.close()
conn.close()
print “</body></html>”

def err():
print “Content-Type: text/html; charset=utf-8”
print
print “<html><body>”
print “<p>ERROR!!</p>”
print “</body></html>”

def main():
form = cgi.FieldStorage()
if os.getenv(“REQUEST_METHOD”) != “GET”:
err()
else:
get(form)

if __name__ == “__main__”:
main()

################################

以下、サンプルURLです。
http://spineedge.com/CGI/dbget.py

このテーブルにXBee WiFiでDBに読み書きしたいので
spineedge.comのIPアドレスを調べます。pingを投げて確認します。
203.189.109.118
と判明しました。
XCTUで設定&テストを行いました。

テーブルからのGETを行いました。
STATUSが読み出せました。
get

テーブルへのPOSTを行います。
COMMANDが書き込めました。
post

データベースからテーブルを読み出したところCOMMANDのvalに3が設定されているのが確認出来ました。
dbase

これでXBee WiFiでインターネット上のサーバのデータベースの読み書きが出きるようになりました。マイコンを使ったIoTに一歩近づきました。

XBEE Wifi HTTP TEST

Jpeg
IoTの環境構築一環で組込機器のネットワーク接続にXBee Wifiを使用しようと考えています。
まず、XBeeの設定をします。X-CTUを起動してXBeeモジュールと接続します。
WifiのAPの設定は環境に合わせてください。
その他は、以下のようにします。
・Network Type → TCP
・Destination Port → 0x50 (80番ポート:HTTP)
・Source Port → 0x50(80番ポート:HTTP)
・Destination IP Address → 接続先のIP(google.co.jpの場合:74.125.203.94)

X-CTUのターミナル画面から次のようにgoogleにGETリクエストを投げます。
GET /search HTTP/1.1
Host: www.google.co.jp
Connection: close
(1行改行)

googleからの応答が返って来ました。
XCTU
XBee WifiでHTTPリクエストできる準備ができました。

© 2014 Spineedge Corporation.