İçindekiler:
- Adım 1: ESP32 Pin Çıkışı
- 2. Adım: NodeMCU Pin Çıkışı
- 3. Adım: MQTT
- Adım 4: Montaj
- Adım 5: Diyagram
- Adım 6: Kitaplıklar
- 7. Adım: Sıcaklık ve Nem Okuma Kitaplığı
- Adım 8: MQTT Kitaplığı
- Adım 9: MQTT.ino
- Adım 10: Grafik
- 11. Adım: Dosyalar
Video: Uç Nokta Olarak ESP32 ile IBM Watson: 11 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
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ışı
3. Adım: 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
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
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ığı
Adım 8: 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
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:
BEN HAYIR
Önerilen:
ISP Olarak Arduino -- AVR'de Hex Dosyası Yaz -- AVR'de Sigorta -- Programcı Olarak Arduino: 10 Adım
ISP Olarak Arduino || AVR'de Hex Dosyası Yaz || AVR'de Sigorta || Arduino As Programmer:……………………………Daha fazla video için lütfen YouTube kanalıma ABONE OLUN……..Bu makale isp olarak arduino ile ilgili. Hex dosyası yüklemek istiyorsanız veya sigortanızı AVR'ye ayarlamak istiyorsanız, bir programlayıcı satın almanıza gerek yok, yapabilirsiniz
Google Haritalar'ı Google E-Tablolarınıza Otomatik Olarak ve Ücretsiz Olarak Kolayca Ekleyin: 6 Adım
Google Haritalar'ı Google E-Tablolarınıza Otomatik ve Ücretsiz Olarak Kolayca Ekleyin: Pek çok Maker gibi ben de birkaç GPS takip projesi oluşturdum. Bugün, herhangi bir harici web sitesi veya API kullanmadan GPS noktalarını doğrudan Google E-Tablolar'da hızlı bir şekilde görselleştirebileceğiz. En iyisi de bedava olması
NodeMCU ile Arayüz LED Nokta Vuruşlu (8x8): 6 Adım (Resimlerle)
Arayüz LED Nokta Vuruşlu (8x8) NodeMCU ile: Merhaba Yapıcılar, başka bir basit ve havalı Instructable ile birlikteyim. Bu Instructable'da LED Dot Matrix'i (8x8) NodeMCU ile Arayüz yapmayı öğreneceğiz. Öyleyse başlayalım
IOT BIT (Resmi Olarak PiAnywhere V1.31 Olarak Bilinir) Raspberry Pi için 4G ve LTE Şapkası: 10 Adım (Resimlerle)
IOT BIT (Resmi Olarak PiAnywhere V1.31 Olarak Bilinir) Raspberry Pi için 4G ve LTE Şapkası: IOT BIT 4G & Raspberry Pi4G için LTE Hat (100 mbps aşağı/ 50 mbps yukarı) - Ahududu pi'niz için ultra hızlı internet bağlantısı, büyük indirmeler ve video akışı için mükemmeldir.TheIOT BIT 4G & Raspberry Pi Beta provi için LTE Hat
Mumları Sensör Olarak Kullanarak Wiimote Bilgisayar Faresi Olarak Nasıl Kullanılır!!: 3 Adım
Wiimote'u Bilgisayar Faresi Olarak Kullanma Mumları Sensör Olarak Kullanma!!: Bu kılavuz, Wii Remote'unuzu (Wiimote) bilgisayarınıza nasıl bağlayacağınızı ve onu bir fare olarak nasıl kullanacağınızı gösterecektir