La carte micro-ordinateur utilise Adafruit Metro M4 Express AirLift (WiFi). C'est la caractéristique principale.
CircuitPython est 5.0.0 Beta 0 (https://github.com/adafruit/circuitpython/tags) ) Est utilisé. L'installation est ignorée. Lors de l'utilisation du Wi-Fi, le micrologiciel de l'ESP32-WROOM-32 doit être 1.3.0 ou supérieur. Augmentez-le à 1.4.0 ou 1.5.0 selon les instructions d'Adafruit. Consultez cet article. https://www.denshi.club/pc/python/circuitpython/circuitpython-10-step3-1.html
Dans l'éditeur Mu, chargez esp32spi_simpletest.py dans les exemples et modifiez les deux points de connexion du routeur Wi-Fi (nom et mot de passe du routeur) à la ligne 40.
esp.connect_AP(b'MY_SSID_NAME', b'MY_SSID_PASSWORD')
Enregistrez-le dans main.py. Ouvrez le numéro de série dans le menu. Le statut d'exécution est affiché en bas de l'écran.
Docs »Référence rapide pour ESP8266» Tutoriel MicroPython pour ESP8266 »5. Socket Network-TCP https://micropython-docs-ja.readthedocs.io/ja/latest/esp8266/tutorial/network_tcp.html Si vous regardez l'article de commentaire, il est différent du programme de socket Python normal.
import socket
C'est pareil, mais
addr_info = socket.getaddrinfo("towel.blinkenlights.nl", 23)
Connectez-vous avec la fonction getaddrinfo (). Jetez ensuite les pièces inutiles et
addr = addr_info[0][-1]
Connectez-vous avec cette adresse.
s = socket.socket()
s.connect(addr)```
J'ai extrait les pièces nécessaires de l'échantillon.
import board import busio from digitalio import DigitalInOut import adafruit_esp32spi.adafruit_esp32spi_socket as sockets from adafruit_esp32spi import adafruit_esp32spi import adafruit_requests as requests import time
esp32_cs = DigitalInOut(board.ESP_CS) esp32_ready = DigitalInOut(board.ESP_BUSY) esp32_reset = DigitalInOut(board.ESP_RESET)
spi = busio.SPI(board.SCK, board.MOSI, board.MISO) esp = adafruit_esp32spi.ESP_SPIcontrol(spi, esp32_cs, esp32_ready, esp32_reset)
requests.set_socket(sockets, esp)
if esp.status == adafruit_esp32spi.WL_IDLE_STATUS: print("ESP32 found and in idle mode")
print("Connecting to AP...") while not esp.is_connected: try: esp.connect_AP(b'Buffalo-G-20EA', b'xxxxxx') except RuntimeError as e: print("could not connect to AP, retrying: ",e) continue print("Connected to", str(esp.ssid, 'utf-8'), "\tRSSI:", esp.rssi) print("My IP address is", esp.pretty_ip(esp.ip_address))
Ensuite, nous décrirons comment connecter la prise. Sous Windows et Raspeye, .local peut être utilisé (mDNS et avahi), mais CircuitPython ne le prend pas en charge, alors écrivez directement l'adresse IP.
host = "K-34461A-16054.local" ipAddr = "192.168.111.111" ports = 5025 addr_info = sockets.getaddrinfo(ipAddr, ports) print(addr_info) addr = addr_info[0][-1] print(addr) skt = sockets.socket() print("connect to") skt.connect(addr) print("connect'd")
print("send to") skt.send("*IDN?\n") print("received")
data = skt.recv(64).decode() print(data) skt.close() print("Done")
Selon le système de traitement, la fonction recv () qui le reçoit ne se terminera pas si le nombre de caractères envoyés est inférieur au buffer. CircuitPython semble avoir une telle spécification. Ce multimètre numérique renvoie environ 70 caractères pour * IDN? Demande sur le nom de l'appareil. Recv (256) n'a pas fini de recevoir.
C'est le résultat de l'exécution.
![wifi02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/0041f4ee-88c5-727b-aab2-be3320bfbfac.png)
# Mesurer la tension
import board import busio from digitalio import DigitalInOut import adafruit_esp32spi.adafruit_esp32spi_socket as sockets from adafruit_esp32spi import adafruit_esp32spi import adafruit_requests as requests import time
esp32_cs = DigitalInOut(board.ESP_CS) esp32_ready = DigitalInOut(board.ESP_BUSY) esp32_reset = DigitalInOut(board.ESP_RESET)
spi = busio.SPI(board.SCK, board.MOSI, board.MISO) esp = adafruit_esp32spi.ESP_SPIcontrol(spi, esp32_cs, esp32_ready, esp32_reset)
requests.set_socket(sockets, esp)
if esp.status == adafruit_esp32spi.WL_IDLE_STATUS: print("ESP32 found and in idle mode")
print("Connecting to AP...") while not esp.is_connected: try: esp.connect_AP(b'Buffalo-G-20EA', b'xxxxxxx') except RuntimeError as e: print("could not connect to AP, retrying: ",e) continue print("Connected to", str(esp.ssid, 'utf-8'), "\tRSSI:", esp.rssi) print("My IP address is", esp.pretty_ip(esp.ip_address))
ipAddr = "192.168.111.111" ports = 5025 addr = sockets.getaddrinfo(ipAddr, ports)[0][-1]
skt = sockets.socket() skt.connect(addr)
skt.send("*IDN?\n") print(skt.recv(71).decode())
skt.send('CONF:VOLT:DC 10,0.001\n') skt.send('READ?\n') print('DC: ' + skt.recv(17).decode()) skt.close() print("Done")
C'est le résultat de l'exécution. La sortie de la source de tension expérimentale TL431 est connectée à la borne de mesure du multimètre numérique.
![wifi04a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/445fa189-2e2b-59d4-ac34-0a84fd683651.png)