Calendrier de l'Avent Python 2019 C'est le troisième jour de publication.
Raspberry Pi de côté La série dite ESP32 peut utiliser le Wifi, mais comme Arduino, c'est un substitut qui brûle le programme en ROM et l'exécute, il s'agit essentiellement d'un programme de type langage C utilisant l'IDE d'Arduino. J'écris.
···Mais
La requête HTTP est paresseuse www Même s'il s'agit de l'IoT uniquement en liant les données des points de périphérie avec SaaS Honnêtement, vous vous sentez démotivé lorsque les requêtes HTTP sont lentes.
Exemple d'esquisse du client Http Arduino
HTTPPost
#include <ArduinoHttpClient.h>
#include <WiFi101.h>
#include "arduino_secrets.h"
///////please enter your sensitive data in the Secret tab/arduino_secrets.h
/////// Wifi Settings ///////
char ssid[] = SECRET_SSID;
char pass[] = SECRET_PASS;
char serverAddress[] = "192.168.0.3"; // server address
int port = 8080;
WiFiClient wifi;
HttpClient client = HttpClient(wifi, serverAddress, port);
int status = WL_IDLE_STATUS;
void setup() {
Serial.begin(9600);
while ( status != WL_CONNECTED) {
Serial.print("Attempting to connect to Network named: ");
Serial.println(ssid); // print the network name (SSID);
// Connect to WPA/WPA2 network:
status = WiFi.begin(ssid, pass);
}
// print the SSID of the network you're attached to:
Serial.print("SSID: ");
Serial.println(WiFi.SSID());
// print your WiFi shield's IP address:
IPAddress ip = WiFi.localIP();
Serial.print("IP Address: ");
Serial.println(ip);
}
void loop() {
Serial.println("making POST request");
String postData = "name=Alice&age=12";
client.beginRequest();
client.post("/");
client.sendHeader("Content-Type", "application/x-www-form-urlencoded");
client.sendHeader("Content-Length", postData.length());
client.sendHeader("X-Custom-Header", "custom-header-value");
client.beginBody();
client.print(postData);
client.endRequest();
// read the status code and body of the response
int statusCode = client.responseStatusCode();
String response = client.responseBody();
Serial.print("Status code: ");
Serial.println(statusCode);
Serial.print("Response: ");
Serial.println(response);
Serial.println("Wait five seconds");
delay(5000);
}
Même si je publie juste, c'est bâclé www Eh bien, j'espère m'y habituer, mais c'est vraiment mauvais ...
Pour le moment, nous avons besoin d'une fondation.
Je pense que ce domaine est bon.
https://www.switch-science.com/catalog/5448/ https://www.switch-science.com/catalog/3210/
Vous pouvez utiliser la série ESP32 bon marché vendue sur Amazon. Pour être honnête, il y a un problème de compétence, et même si elle est marquée, il y a aussi un problème de savoir si elle est vraiment authentique, alors achetez cette zone dans un endroit solide.
Veuillez consulter ce manuel pour la méthode d'installation.
Premiers pas avec MicroPython avec ESP32
MicroPython est conçu de telle sorte qu'à la mise sous tension, boot.py est d'abord exécuté, puis main.py est exécuté.
boot.py
Ce sera le premier fichier Python à être appelé lors de la mise sous tension. Fondamentalement, c'est une bonne idée d'incorporer un processus qui se connecte au Wifi.
boot.py
import utime
import network
# ==== connecti to wifi access point ============================================
SSID_NAME = <SSID>
SSID_PASS = <WifiPassword>
def connect_wifi(ssid, passkey, timeout=10):
wifi= network.WLAN(network.STA_IF)
if wifi.isconnected() :
print('already Connected. connect skip')
return wifi
else :
wifi.active(True)
wifi.connect(ssid, passkey)
while not wifi.isconnected() and timeout > 0:
print('.')
utime.sleep(1)
timeout -= 1
if wifi.isconnected():
print('Connected')
return wifi
else:
print('Connection failed!')
return null
wifi = connect_wifi(SSID_NAME, SSID_PASS)
if not wifi :
sys.exit(0)
main.py
Ce sera un fichier Python qui sera exécuté lorsque l'exécution de boot.py se terminera normalement. Si vous avez fait Arduino etc., vous pouvez comprendre Fondamentalement, ce fichier Python suppose une ** boucle infinie **.
main.py
from m5stack import lcd # m5stack Library
import machine
import time
lcd.setCursor(0, 0)
lcd.setColor(lcd.WHITE)
lcd.font(lcd.FONT_DejaVu24)
rtctime = machine.RTC()
def aaaaaa():
global rtctime
prm_year = '{:0=4}'.format(timedata[0])
prm_month = '{:0=2}'.format(timedata[1])
prm_day = '{:0=2}'.format(timedata[2])
prm_hour = '{:0=2}'.format(timedata[3])
prm_minute = '{:0=2}'.format(timedata[4])
prm_second = '{:0=2}'.format(timedata[5])
prm_datetime = prm_year + "-" \
+ prm_month + "-" \
+ prm_day + "T" \
+ prm_hour + ":" \
+ prm_minute + ":" \
+ prm_second + "Z"
lcd.print(prm_datetime,10,10)
while True: #boucle infinie
aaaaaa()
time.sleep(1)
Il n'a pas autant de zone de stockage et de zone de mémoire d'exécution (zone de tas) qu'un ordinateur personnel ou un Raspberry Pi. Comme vous pouvez le voir dans cet article, il y en a pas mal.
[travail électronique mgo-tec: méthode d'acquisition d'informations d'adresse MAC de mémoire de puce ESP32-WROOM-32](https://www.mgo-tec.com/blog-entry-chip-info-esp-wroom-32-esp32 .html)
Veuillez noter que si vous le codez de manière lâche, la zone de tas sera utilisée en un clin d'œil, GC se produira fréquemment ou le fichier Python que vous avez créé ne sera pas inclus.
En Python, je pense qu'il utilise la bibliothèque de requêtes Pour MicroPython, utilisez la bibliothèque urequests. La fonctionnalité est presque la même que celle de la bibliothèque de requêtes.
urequests
import ujson
import urequests
def postpowerbi(self):
pbheaders = {
'Content-Type' :'application/json'
}
body = [
{
"datetime" : self.datetime,
"temp" : float(self.temp),
"humi" : float(self.humi),
"pres" : float(self.pres)
}
]
body_json = ujson.dumps(body).encode("utf-8")
res = urequests.post(
self.posturl,
data=body_json,
headers=pbheaders
)
res.close()
En gros, j'aimerais que vous puissiez voir ça ...
Adafruit, qui fabrique de nombreux capteurs de température, dispose également d'une bibliothèque pour Python.
En utilisant cela, il est possible de contrôler facilement les appareils IoT.
Bien que cela ne soit pas recommandé, il y en a qui peuvent être utilisés si les bases telles que les capteurs utilisés sont les mêmes. Cependant, il existe des pièges, donc à vos risques et périls. Vous devrez peut-être modifier une partie de la bibliothèque. Veuillez cesser de l'utiliser pour vos propres produits et faites-le dans votre hobby.
Je l'ai écrit vaguement, mais même avec Python, vous pouvez facilement créer un appareil IoT original à un coût suffisamment bas! Essayez-le!
Recommended Posts