1.概説
Maixduinoには、ESP32-WROOM-32チップが搭載されているため、WIFI通信が可能です。
以下のSipeed社公式Githubサイトに参考となるコードがあるので、これを踏まえて、Socket通信ができるところまでのコードを紹介します。試しにヤフージャパンのIPアドレスを取得しています。内容の信憑性と実行については自己責任でお願いしますね。
2.コード(Maixduino)
import socket
import network
import gc
import os
import lcd, image
import machine
from board import board_info
import utime
from Maix import GPIO
from fpioa_manager import *
# iomap at MaixDuino
fm.register(25,fm.fpioa.GPIOHS10)#cs
fm.register(8,fm.fpioa.GPIOHS11)#rst
fm.register(9,fm.fpioa.GPIOHS12)#rdy
fm.register(28,fm.fpioa.GPIOHS13)#mosi
fm.register(26,fm.fpioa.GPIOHS14)#miso
fm.register(27,fm.fpioa.GPIOHS15)#sclk
nic = network.ESP32_SPI(cs=fm.fpioa.GPIOHS10,rst=fm.fpioa.GPIOHS11,rdy=fm.fpioa.GPIOHS12,
mosi=fm.fpioa.GPIOHS13,miso=fm.fpioa.GPIOHS14,sclk=fm.fpioa.GPIOHS15)
wifi = nic.scan()
for v in wifi:
print(v)
print()
nic.isconnected()
nic.connect("<SSID>", "<WifiPassword>")
print(nic.isconnected())
s = socket.socket()
addr = socket.getaddrinfo("www.yahoo.co.jp", 80)[0][-1]
s.connect(addr)
3.最後に
MaixPyはMicropythonをベースにしていると思われるのですが、今のところ、なんとインターネット通信でお決まりのSSLやREQUESTSモジュール(MicropythonでいうところのUSSLやUREQUESTS)が使えません。SIPEED社の更新を待つか、もしインストールの仕方がわかる人がいれば教えてほしいのですが、これは結構面倒な話です。つまり、Socket通信でコードを書いていくしかないということ。SSLが使えないとすると、データベースへのセキュアアクセスなどもできないのではないか?と心配になります。このあたりの解決策をご存知の方、ぜひ教えてください!
ここがMaixduino、Maixpyの改善点だと思います。少し価格で妥協ができるのであれば、やはりRasberryPiの方がモジュールの多様性という点では、優れているように思います。