İçindekiler:

Uç Nokta Olarak ESP32 ile IBM Watson: 11 Adım
Uç Nokta Olarak ESP32 ile IBM Watson: 11 Adım

Video: Uç Nokta Olarak ESP32 ile IBM Watson: 11 Adım

Video: Uç Nokta Olarak ESP32 ile IBM Watson: 11 Adım
Video: Node Red Kurulumu 2024, Kasım
Anonim
Image
Image
ESP32 Pin Çıkışı
ESP32 Pin Çıkışı

Bugün burada bir Endpoint cihazının ESP32 ile nasıl monte edileceğine ve ardından bir bulut hizmetine nasıl gönderileceğine ilişkin bir serinin ilk videosunu gönderiyorum. Bu özel bölümde, IBM Watson için MQTT protokolünü kullanarak bir DHT22 sensöründen nasıl bilgi göndereceğinizi göstereceğim.

Öncelikle IoT'de (Nesnelerin İnterneti) kullanılan makineden makineye bir protokol olan MQTT'yi tanıtacağız. Ayrıca bu protokolü kullanarak sıcaklık ve nem sensöründen veri göndereceğiz ve ardından bir web sayfasında bu verilerle grafiği kontrol edeceğiz.

Adım 1: ESP32 Pin Çıkışı

Örneğimizde kullandığımız ESP32'nin Pinout'unu buraya yerleştirdim. Ancak projenin ESP8266 ve hatta aynı kaynak kodu ile de çalıştığını açıkça belirtmek isterim.

2. Adım: NodeMCU Pin Çıkışı

NodeMCU Pin Çıkışı
NodeMCU Pin Çıkışı

3. Adım: MQTT

MQTT
MQTT

MQTT, IoT'de kullanılan makineden makineye bir protokoldür. Hafif ve hızlı olacak şekilde tasarlanmıştır. Bir cihazın ilginizi çeken belirli bilgilerle bir konuya "abone olduğu" ve ardından bir cihaz bu konuyla ilgili verileri yayınladığı zaman bilgileri aldığı bir abone olma/yayınlama sistemi kullanır.

Bir sunucu programı gibi, MQTT'nin de yazılıma ihtiyacı vardır. Buna Broker denir. Bu özel durumda, IBM'in Bluemix IoT Hizmetini kullanacağız. Bu hizmet, uç nokta testi için ücretsizdir.

Daha sonra Uygulama tarafı olan bir MQTT istemcisi olarak bir cep telefonu veya tabletimiz olması gerekiyor. Ayrıca, termometreli ESP tarafı olan Cihaz tarafımız da var. Bu, sıcaklık ve nem verilerini Bluemix'e gönderir ve ardından bu bilgiyi Uygulama Tarafına gönderir.

Adım 4: Montaj

toplantı
toplantı

Devremiz, 3.3v ile veri pini arasında 4.7k Ohm'luk bir direnç ve ayrıca bir ESP32 veya NodeMCU'nun GPIO4'üne bağlı bir DHT22'den oluşur. Dolayısıyla, bu bizim Son Noktamızdır.

Adım 5: Diyagram

Diyagram
Diyagram
Diyagram
Diyagram

Burada MQTT Yerel Broker ile çalışmanın birkaç yolunu gösteriyorum. İki diyagram modeli yerleştirdim. Videoda örneğin Raspberry Pi kullanarak bir kapı açma durumundan bahsediyorum.

Yukarıdaki resimde, kalıcı olarak yerel bir Broker kullanan ilk mimariye ve aşağıdaki ikinci mimariye, yalnızca buluttaki broker ile iletişim kurana sahibiz.

Diyagramda gösterildiği gibi, sensörümüz daha sonra sıcaklık ve nem verilerini IBM Watson'a gönderir. Yalnızca grafiklerde gösterildiğinden, bu durumda verileri IBM Watson'ın yazmadığını vurgulamak önemlidir. Bunun nedeni, bugünkü örnekte herhangi bir veritabanı işlemini ele almamamız, yalnızca Bitiş Noktasının durumunu görüntüleyen Hızlı Başlangıç sayfasına (https://quickstart.internetofthings.ibmcloud.com/) erişimi belirtmemizdir. Şema basittir ve veri göndermek için WiFi kullanır.

Adım 6: Kitaplıklar

Arduino IDE'de Sketch menüsüne gidin -> Kütüphaneyi Dahil Et -> Kütüphaneleri Yönet…

Açılan ekranda "DHT" aramasına girin ve "DHT sensor library" lib'ini kurun

Ardından, "PubSubClient" yazın ve "PubSubClient" kitaplığını kurun.

7. Adım: Sıcaklık ve Nem Okuma Kitaplığı

Sıcaklık ve Nem Okuma Kitaplığı
Sıcaklık ve Nem Okuma Kitaplığı

Adım 8: MQTT Kitaplığı

MQTT Kitaplığı
MQTT Kitaplığı

Adım 9: MQTT.ino

Hangi ESP'nin kullanıldığını kontrol ederek ve ilgili kitaplığı ve WiFi'yi içe aktararak kaynak kodunu başlatıyoruz. MQTT Lib'lerini ve Sıcaklık ve Nem Sensörünü hala dahil ediyoruz.

//Doğrulama ESP kullanımı için geçerli //e bir lib e wifi muhabirini içe aktarın #if tanımlı(ESP8266) #include #else #include #endif //Lib de MQTT #include // Sensör de sıcaklık ve umidade #include

Ardından, aşağıdakileri tanımlarız: veri gönderimleri arasındaki süre, kullanılacak MQTT sunucusu, grafikteki baskı bilgileri ve kimlik. QUICK_START dizesinin nasıl olması gerektiğine de dikkat çektik.

//Aralık giriş os envios#define INTERVAL 1000 //Değiştirilen SSID da sua rede #define SSID "TesteESP" //Yer değiştirilen PASSWORD "87654321" //Sunucu MQTT que iremos utlizar #define MQTT_SER_start.messaging.internetofthings.ibmcloud.com" //Devemos'u enviar os dados'ları için kullanın //para que eles apareçam nos gráficos #define TOPIC_NAME "iot-2/evt/status/fmt/json" //ID que usaremos para conectar //QUICK_START geliştirme kalıcı como está const String QUICK_START = "d:quickstart:arduino:";

Bu adımda benzersiz bir kimlik tanımlıyoruz. Bu örnekte kullandığımız cihazın MAC Adresini kullanıyoruz. Bu, QuickStart sitesinde tanımlama görevi görecektir. Burada ayrıca Quickstart ID'sini cihazımızın ID'sine bağlarız.

// MAC Adresi için DEVICE_ID ses kaydı yok//Aqui nesse exemplo utilizamos o MAC Adresi // dispositivo que estamos utilizando // hiçbir site tanımlaması yok //quickstart.internetofthings.ibmcloud.com const_ID Dize https = "240ac40e3fd0"; //Concatemos o id hızlı başlangıç com o id do nosso //dispositivo const String CLIENT_ID = QUICK_START + DEVICE_ID;

Daha sonra MQTT ve WiFi'yi ve ayrıca sıcaklık ve nem değerleriyle ilgili nesneleri ve değişkenleri yapılandırırız.

//MQTT için WiFi kuyruğu veya MQTT'nin kullanımı için bağlantılarWiFiClient wifiClient; //Cliente MQTT, passamos a url do server, a porta //e o cliente WiFi PubSubClient client(MQTT_SERVER, 1883, wifiClient); //Tempo em que o ultimo envio foi feito uzun lastPublishTime = 0; //Sıcaklığın zamana yakışır şekilde yerine getirilmesine izin verme DHT dht(4, DHT22); //Variável para guardarmos o valor da temperatura float sıcaklığı = 0; //Variável para guardarmos o valor da umidade float nem = 0;

MQTT.ino - kurulum

Kurulumda, DHT'yi başlatacağız ve WiFi ağına ve MQTT sunucusuna bağlanacağız.

geçersiz kurulum() { Serial.begin(115200); //Incializamos veya dht dht.begin(); //Conectamos ve WiFi kurulumuWiFi(); //Conectamos ao sunucusu MQTT connectMQTTServer(); }

MQTT.ino - döngü

Döngüde, IBM Watson'ın grafiği oluşturmayı beklediği konuda yayınlanacak olan Json'u oluşturmak için sensör verilerini topluyoruz.

void loop() { //Tempos agora em milisegundos uzun şimdi = millis(); //Maior que için o tempo desde o último envio o intervalo de envio if (now - lastPublishTime > INTERVAL) { //Atualizamos o tempo em que ocorreu o último envio lastPublishTime = şimdi; //Sıcaklık ve sıcaklık değişkenleri, readSensor(); Serial.print("Mesajı yayınla: "); //Criamos o json que enviaremos para o server mqtt String msg = createJsonString(); Seri.println(mesaj); //Publicamos hiçbir tópico onde o sunucu espera para receber //e gerar o gráfico client.publish(TOPIC_NAME, msg.c_str()); } }

MQTT.ino - kurulumWiFi

Burada, WiFi ağına bağlanmaktan sorumlu işleve sahibiz.

//WiFivoid kurulumunun yeniden düzenlenmesiyle ilgili yanıtlarWiFi() { Serial.println(); Serial.print("Bağlanıyor"); Seri.print(SSID); //Önemli bilgiler ve yeniden yapılandırmalar // WiFi.başla(SSID, ŞİFRE); //Espera até que a conexão com a rede seja estabelecida while (WiFi.status() != WL_CONNECTED) { gecikme(500); Seri.print("."); } //Bağlantıları kontrol et Serial.println(""); Serial.println("WiFi bağlandı"); }

MQTT.ino - connectMQTTServer

Bu adımda MQTT sunucusuna bağlanmaktan sorumlu olan fonksiyonu kullanıyoruz.

//Sunucu bağlantısı için yanıtlar MQTTvoid connectMQTTServer() { Serial.println("MQTT Sunucusuna Bağlanıyor…"); //İf (client.connect(CLIENT_ID.c_str())) { //Bir conexão foi bem sucedida Serial.println("bağlı"); } else { //Se ocorreu algum erro Serial.print("hata = "); Serial.println(client.state()); } }

MQTT.ino - readSensor

Sıcaklık ve nem verilerinin okunması bu fonksiyonda tanımlanır.

// Bir boş zaman için yanıt verme // sıcaklık ve ölçüm boşluğunu geçersiz readSensor(){ kayan değer; //Sıcaklık değeri için boş zaman değeri = dht.readTemperature(); //Se o valor lido é válido if(!isnan(value)){ //Armazena o novo valor da temperatura sıcaklık = değer; } // Bir boş zaman aralığı değeri = dht.readHumidity(); //Valor for válido if(!isnan(value)){ //Armazena o novo valor da umidade nem = değer; } }

MQTT.ino - createJsonString

Burada, okunan verilerle bir Json oluşturmaktan sorumlu fonksiyona sahibiz.

//Eğlenceli yanıtlar//um Json iletişim bilgileri lidos String createJsonString() { String data = "{"; data+= "\"d\": {"; data+="\"sıcaklık\":"; data+=String(sıcaklık); veri+=", "; data+="\"nem\":"; data+=String(nem); veri+="}"; veri+="}"; dönüş verileri; }

Adım 10: Grafik

Grafik
Grafik
Grafik
Grafik

Sensör grafiğini görüntülemek için

quickstart.internetofthings.ibmcloud.com adresine

Cihaz Kimliği alanına, kodda tanımladığınız DEVICE_ID'yi girin.

- Bu Cihaz Kimliğini, yalnızca başka bir kişi tarafından gönderilen verilerle çakışmayı önlemek için kullanılan benzersiz bir kimlikle değiştirmek önemlidir.

Son olarak, şartları kabul edin ve Git'e tıklayın.

Bu projede Endpoint'imizi IBM Watson sunucusunda test ettik. Bu, Arduino programımızın platformla düzgün bir şekilde iletişim kurmasını ve bir hesap oluşturduğumuzda gönderdiğimiz verilerin bir bulut servisi tarafından sorunsuz bir şekilde alınmasını sağlar.

Bu seride yakında yayınlanacak bir videoda, IBM Watson'da nasıl oturum açılacağını ve bunun veya Google, Amazon gibi başka bir bulut hizmetinin veri bankasına nasıl yazılacağını göstereceğim.

11. Adım: Dosyalar

Dosyaları indirin:

PDF

BEN HAYIR

Önerilen: