カテゴリー別アーカイブ: Python

ESP8266 micropython3

WiFi接続を行いました。
ESP8266の使い方は以下に詳しくあります。
https://micropython-docs-ja.readthedocs.io/ja/latest/esp8266/quickref.html
ネットワーキングの項目にWiFiの接続方法が書かれています。
この関数を使って簡単にWiFi接続ができました。

次にOLEDディスプレイを接続しました。I2Cでの接続です。
これも以下のURLで接続方法の記述があります。
https://randomnerdtutorials.com/micropython-oled-display-esp32-esp8266/
ライブラリファイルをアプロードした後に、メインプログラムをアップロードします。

SSD1306のOLEDは、I2Cで使用ピンも少なく、視認性も良いので重宝します。

ESP8266 micropython2

micropythonの IEDとしてuPycraft を使用しました。
以下のサイトにWindowsにInstallする方法があります。
https://randomnerdtutorials.com/install-upycraft-ide-windows-pc-instructions/

uPyCraft.exeは、以下のURLからダウンロード可能です。
https://randomnerdtutorials.com/uPyCraftWindows

IDEが立ち上がります。
micropythonのファームウェアを書き込んだNODEMCUをUSBでPCと接続します。
ToolsメニューのSerialメニューから接続しているCOMポートを選択してください。これでエディタの下側のターミナル表示部分に>>>のプロンプトが表示されます。
これでmicropythonのコーディング準備ができました。

NODEMCU側は、そのままだと使いづらいので NodeMcuベースを購入しました。
https://www.amazon.co.jp/gp/product/B07KD2XVD4

/ref=ppx_yo_dt_b_asin_title_o02_s00?ie=UTF8&psc=1
電源やIOのピンが複数用意されているのでプロトタイプを作成するのに最適です。残念なことに幅が合わなくて亀の子状態になっています。

ESP8266 micropython

NODEMCUを購入しました。 https://www.amazon.co.jp/gp/product/B07K2VQ4J7/ref=ppx_yo_dt_b_asin_title_o06_s00?ie=UTF8&psc=1
ESP8266を搭載したESP-12Eを搭載しています。
micropythonで使用してみます。
以下のサイトがmicoropythonの公式サイトです。
https://docs.micropython.org/en/latest/index.html
ESP8266のクイックリファレンスです。
https://docs.micropython.org/en/latest/esp8266/quickref.html
まずはインストールのなので Getting startedを参照します。
https://docs.micropython.org/en/latest/esp8266/tutorial/intro.html#intro
インストールするためUBUNTUを使用しました。
pip install esptool
でツールをインストールします。NODEMCUをUBUNTUに接続します。
まずフラッシュメモリを消すコマンドを実行します。
esptool.py –port /dev/ttyUSB0 erase_flash

 

先にmicropyhtonのファームウェアをダウンロードしておきます。以下にイメージがあります。最新のv1.11を使用します。
http://micropython.org/download#esp8266

次にまずmicropyhtonのファームウェアをフラッシュメモリに書き込みます。
esptool.py –port /dev/ttyUSB0 –baud 460800 write_flash –flash_size=detect -fm dio 0 esp8266-20190529-v1.11.bin

書き込みが終わるとシリアルで接続できるようになります。
picocom /dev/ttyUSB0 -b115200
115200bpsで接続できます。

MicroPython v1.11-8-g48dcbbe60 on 2019-05-29; ESP module with ESP8266
Type “help()” for more information.
>>>

ターミナルが起動すれば成功です。

 

Raspberry Pi A+ UART GATEWAY

Raspberry Pi A+でUSB Serial ComverterとOnboardのUARTとをGatewayするプログラムを作成しました。

UARTは、RS232Cレベルで通信するためアナログデバイセズのドライバIC ADM3202を使用しました。
https://www.analog.com/jp/products/adm3202.html

OnboardのUARTをプログラムで使用するときは、コンソールでの使用を無効にする必要上がります。
sudo raspi-config
でシリアル接続上のシェルとカーネルのメッセージを無効にします。以下のURLに詳しい記載があります。
https://www.raspberrypi.org/documentation/configuration/raspi-config.md

双方向にデータのやり取りができました。
サンプルプログラムは、以下にあります。
https://github.com/jendo1969/pydir/blob/master/UART/serialtest.py

Raspberry PI2 + Chainer


Raspberry PI2でAIを試すためChainerをインストールしました。
https://chainer.org/
Pythonは、raspbian9.1に初めからインストールされています。
バージョンは、Python 2.7.13 を使用しました。
以下の物をインストールしました。
sudo apt-get install python-dev
sudo pip install chainer
Chainerは、3.3.0がインストールされました。
テストのため デモプログラムtrain_mnist.pyを実行しました。
sudo python train_mnist.py
動作完了までに112091 秒かかりました。約31時間かかったことになります。
いろいろやってみようと思います。

Google AIY VOICE KIT ASSEMBLY

Google AIY VOICE KITを組み立てます。
カラー冊子のマニュアルに詳しい組立方法が記載されています。
またプロジェクトのホームページにも組立方法があります。
https://aiyprojects.withgoogle.com/voice#assembly-guide
樹脂の支柱を2本取り付けてVoice HATを取り付けます。支柱の取り付けは固いので破損させたり、怪我したりしないように注意してください。

付属品の他に、小さいプラスドライバと両面テープが必要です。プラスドライバは、スピーカ接続に使用します。

ケーブルでマイクボードを接続します。

ボタンケーブルを接続します。

次に箱ケースを組み立てます。

中箱を組み立てます

スピーカをはめ込みます。

中箱を箱ケースに収めます。

ボタンを上蓋にはめ込み配線します。配線ピンを間違えないように接続します。

両面テープは、マイクボードを貼り付けるに使用します。マイクはボードの左右にあり、箱の小さい穴にマイクが合うように貼り付けます。

蓋を閉じて完成です。

次にSDカードを焼き、起動確認します。

Google AIY VOICE KIT


Google AIY VOICE KITを購入しました。
Google AIY Voice Kit
http://akizukidenshi.com/catalog/g/gK-12835/
Raspberry PI3も必要なので同時に購入しました。
RaspberryPi3 Model B (ラズベリーパイスリーモデルビー) element14版
http://akizukidenshi.com/catalog/g/gM-11425
電源も同時に購入しています。
スイッチングACアダプター (USB ACアダプター) 5V3A
http://akizukidenshi.com/catalog/g/gM-12001/


KITには、カラー冊子のマニュアルが付属しており、詳しい説明があります。段ボールケース、拡張ボード、マイクボード、スピーカ、ケーブル、ボタンが付属しています。
SDカードは付属していません。OSイメージは、AIYのホームページからダウンロードできます。
https://aiyprojects.withgoogle.com/voice/#project-overview
まずは組み立てて行こうと思います。

Python De IoT

PythonでIoTを構築しようと思います。
XBeeでセンサーからデータを収集します。mqttを使用し、インターネットを介してデータベースへ上げる。

XStick ZB Japanを使用してシリアルでデータを集めます。
http://akizukidenshi.com/catalog/g/gM-09335/
Pythonの開発環境は、Winodws10にAnacondaを使用してインストールしました。
https://www.continuum.io/why-anaconda
IEDは、PyCharmを使用しました。
https://www.jetbrains.com/pycharm/
コマンドラインを使わずデバッグまでできて便利です。

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に一歩近づきました。

© 2014 Spineedge Corporation.