Die Mikrocomputerplatine verwendet Adafruit Metro M4 Express AirLift (WiFi). Dies ist das Hauptmerkmal.
CircuitPython ist 5.0.0 Beta 0 (https://github.com/adafruit/circuitpython/tags) ) Wird genutzt. Die Installation wird übersprungen. Bei Verwendung von Wi-Fi muss die Firmware von ESP32-WROOM-32 1.3.0 oder höher sein. Erhöhen Sie es gemäß den Anweisungen von Adafruit auf 1.4.0 oder 1.5.0. Siehe diesen Artikel. https://www.denshi.club/pc/python/circuitpython/circuitpython-10-step3-1.html
Laden Sie im Mu-Editor in Beispielen esp32spi_simpletest.py und ändern Sie die beiden Wi-Fi-Router-Verbindungspunkte (Routername und Kennwort) in Zeile 40.
esp.connect_AP(b'MY_SSID_NAME', b'MY_SSID_PASSWORD')
Speichern Sie es in main.py. Öffnen Sie die Seriennummer im Menü. Der Ausführungsstatus wird am unteren Bildschirmrand angezeigt.
Dokumente »Kurzanleitung für ESP8266» MicroPython-Lernprogramm für ESP8266 »5. Network-TCP-Socket https://micropython-docs-ja.readthedocs.io/ja/latest/esp8266/tutorial/network_tcp.html Wenn Sie sich den Kommentarartikel ansehen, unterscheidet er sich vom normalen Python-Socket-Programm.
import socket
Ist das gleiche, aber
addr_info = socket.getaddrinfo("towel.blinkenlights.nl", 23)
Stellen Sie eine Verbindung mit der Funktion getaddrinfo () her. Dann entsorgen Sie die unnötigen Teile und
addr = addr_info[0][-1]
Verbinden Sie sich mit dieser Adresse.
s = socket.socket()
s.connect(addr)```
Ich habe die notwendigen Teile aus der Probe extrahiert.
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))
Als nächstes beschreiben wir, wie die Buchse angeschlossen wird. Unter Windows und Raspeye kann .local verwendet werden (mDNS und avahi), CircuitPython unterstützt dies jedoch nicht. Schreiben Sie daher die IP-Adresse direkt.
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")
Abhängig vom Verarbeitungssystem wird die empfangende Funktion recv () nicht beendet, wenn die Anzahl der gesendeten Zeichen geringer als der Puffer ist. CircuitPython scheint eine solche Spezifikation zu haben. Dieses DMM gibt ungefähr 70 Zeichen für * IDN zurück? Fragen Sie nach dem Gerätenamen. Recv (256) hat den Empfang nicht beendet.
Dies ist das Ausführungsergebnis.
![wifi02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/0041f4ee-88c5-727b-aab2-be3320bfbfac.png)
# Messen Sie die Spannung
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")
Dies ist das Ausführungsergebnis. Der Ausgang der experimentellen Spannungsquelle TL431 ist mit dem Messanschluss des DMM verbunden.
![wifi04a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407635/445fa189-2e2b-59d4-ac34-0a84fd683651.png)
Recommended Posts