Spisu treści:

IBM Watson z ESP32 jako punktem końcowym: 11 kroków
IBM Watson z ESP32 jako punktem końcowym: 11 kroków

Wideo: IBM Watson z ESP32 jako punktem końcowym: 11 kroków

Wideo: IBM Watson z ESP32 jako punktem końcowym: 11 kroków
Wideo: Build and Deploy IoT Applications with IBM Watson IoT Platform 2024, Listopad
Anonim
Image
Image
Wyprowadzenie ESP32
Wyprowadzenie ESP32

Zamieszczam tutaj dzisiaj pierwszy film z serii o tym, jak zamontować urządzenie Endpoint z ESP32, a następnie wysłać je do usługi w chmurze. W tym konkretnym odcinku pokażę, jak wysyłać informacje z czujnika DHT22 za pomocą protokołu MQTT dla IBM Watson.

Najpierw przedstawimy MQTT, który jest protokołem maszyna-maszyna używanym w IoT (Internet of Things). Prześlemy również dane z czujnika temperatury i wilgotności za pomocą tego protokołu, a następnie sprawdzimy wykres z tymi danymi na stronie internetowej.

Krok 1: Pinout ESP32

Umieściłem tutaj Pinout ESP32, którego używamy w naszym przykładzie. Chcę jednak wyjaśnić, że projekt działa również z ESP8266, a nawet z tym samym kodem źródłowym.

Krok 2: Pinout NodeMCU

Wyprowadzenie węzła NodeMCU
Wyprowadzenie węzła NodeMCU

Krok 3: MQTT

MQTT
MQTT

MQTT to protokół maszyna-maszyna używany w IoT. Został zaprojektowany tak, aby był lekki i szybki. Wykorzystuje system subskrypcji/publikowania, w którym urządzenie „subskrybuje” temat z konkretnymi informacjami, które Cię interesują, a następnie otrzymuje informacje za każdym razem, gdy urządzenie publikuje dane dotyczące tego tematu.

Podobnie jak program serwera, MQTT potrzebuje oprogramowania. Nazywa się to brokerem. W tym konkretnym przypadku skorzystamy z usługi IBM Bluemix IoT. Ta usługa jest bezpłatna do testowania punktów końcowych.

Następnie musimy mieć telefon komórkowy lub tablet ze stroną Aplikacji, czyli jako klient MQTT. Mamy też stronę Device, czyli stronę ESP z termometrem. To wysyła dane dotyczące temperatury i wilgotności do Bluemix, który następnie wysyła te informacje do strony aplikacji.

Krok 4: Montaż

montaż
montaż

Nasz obwód składa się z rezystora 4,7 k Ohm między 3,3 V a pinem danych oraz DHT22 podłączonego do GPIO4 ESP32 lub NodeMCU. Tak więc jest to nasz punkt końcowy.

Krok 5: Schemat

Diagram
Diagram
Diagram
Diagram

Przedstawiam tutaj kilka sposobów pracy z Lokalnym Brokerem MQTT. Umieściłem dwa modele diagramów. Na filmie opowiadam o sytuacji, w której na przykład Raspberry Pi otwiera bramę.

Na powyższym obrazku mamy pierwszą architekturę, która używa lokalnego brokera z trwałością, a drugą architekturę poniżej, która komunikuje się tylko z brokerem w chmurze.

Jak pokazano na schemacie, nasz czujnik wysyła następnie dane dotyczące temperatury i wilgotności do IBM Watson. Należy podkreślić, że IBM Watson nie zapisuje danych w tym przypadku, ponieważ są one wyświetlane tylko na wykresach. Dzieje się tak, ponieważ w dzisiejszym przykładzie nie zajmiemy się żadnymi operacjami na bazie danych, a jedynie wskażemy dostęp do strony Szybki start (https://quickstart.internetofthings.ibmcloud.com/), która wyświetli stan Endpoint. Schemat jest prosty i wykorzystuje WiFi do przesyłania danych.

Krok 6: Biblioteki

W Arduino IDE przejdź do menu Szkic -> Dołącz bibliotekę -> Zarządzaj bibliotekami…

Na ekranie, który się otworzy, wpisz w wyszukiwaniu „DHT” i zainstaluj lib „Biblioteka czujników DHT”

Następnie wpisz „PubSubClient” i zainstaluj bibliotekę „PubSubClient”.

Krok 7: Biblioteka odczytów temperatury i wilgotności

Biblioteka odczytów temperatury i wilgotności
Biblioteka odczytów temperatury i wilgotności

Krok 8: Biblioteka MQTT

Biblioteka MQTT
Biblioteka MQTT

Krok 9: MQTT.ino

Kod źródłowy zaczynamy od sprawdzenia, który ESP jest używany i zaimportowania odpowiedniej biblioteki i WiFi. Nadal zawieramy biblioteki MQTT oraz czujnik temperatury i wilgotności.

//Verifica qual ESP está sendo utilizado//e importa a lib e wifi korespondente #if defined(ESP8266) #include #else #include #endif //Lib de MQTT #include //Lib do czujnika temperatury i wyświetlania #include

Następnie definiujemy: odstęp czasu między przesyłaniem danych, serwer MQTT, który będzie używany, informacje o wydruku na wykresie oraz identyfikator. Wskazaliśmy również, jak powinien wyglądać ciąg QUICK_START.

//Przerwa między kolejnymi działaniami#define INTERVAL 1000 //Zastępowanie identyfikatora SSID przez rede #define SSID "TesteESP" //Zastępowanie pola po ponownym uruchomieniu #define HASŁO "87654321" //Server MQTT que iremos utlizar #define MQTT_.messaging.internetofthings.ibmcloud.com" //Nome do tópico que devemos enviar os dados //para que eles apareçam nos gráficos #define TOPIC_NAME "iot-2/evt/status/fmt/json" //ID para conectar que usare //QUICK_START twórz na stałe como está const String QUICK_START = "d:quickstart:arduino:";

W tym kroku definiujemy unikalny identyfikator. W tym przykładzie używamy adresu MAC używanego urządzenia. Będzie to służyć jako identyfikacja w witrynie QuickStart. Tutaj również łączymy Quickstart ID z identyfikatorem naszego urządzenia.

//No DEVICE_ID você deve mudar para um id único//Aqui nesse exemplo utilizamos o MAC Address //do dispositivo que estamos utilizando //Servirá como identificação no site //https://quickstart.internetofthings. ICE_ID_stcloud = "240ac40e3fd0"; //Concatemos o id wykonaj szybki start com o id wykonaj nosso //dispositivo const String CLIENT_ID = QUICK_START + DEVICE_ID;

Następnie konfigurujemy MQTT i WiFi, a także obiekty i zmienne związane z wartościami temperatury i wilgotności.

//Klient WiFi que o MQTT jest używany do łączenia się z WiFiClient wifiClient; //Klient MQTT, podaj adres URL do serwera, port //e lub klient WiFi PubSubClient client(MQTT_SERVER, 1883, wifiClient); //Tempo w ostatnim czasie dla długiego czasu lastPublishTime = 0; //Objeto que realiza a leitura da temperatura e da umidade DHT dht(4, DHT22); //Variável para guardarmos o valor da temperatura float temperature = 0; //Variável para guardarmos o valor da umidade float wilgotność = 0;

MQTT.ino - konfiguracja

W Setup zainicjujemy DHT i połączymy się w sieci WiFi i serwerem MQTT.

void setup() { Serial.begin(115200); //Incializamos o dht dht.begin(); //Połącz konfigurację WiFiWiFi(); //Conectamos ao serwer MQTT connectMQTTServer(); }

MQTT.ino - pętla

W pętli zbieramy dane z czujników, aby utworzyć plik Json, który zostanie opublikowany w temacie, w którym IBM Watson spodziewa się wygenerować wykres.

void loop() { //Tempos agora em milisegundos long now = millis(); //Ustaw tempo w ostatnim czasie dla największego czasu oczekiwania o czasie, jeśli (teraz - lastPublishTime > INTERWAŁ) { //Aktualizuj tempo w ostatnim czasie lub w ostatnim czasie lastPublishTime = teraz; //Fazemos a leitura da temperatura e umidade readSensor(); Serial.print("Opublikuj wiadomość: "); //Criamos o json que enviaremos dla serwera mqtt String msg = createJsonString(); Serial.println(wiadomość); //Publicamos no tópico onde o servidor espera para receber //e gerar o gráfico client.publish(TOPIC_NAME, msg.c_str()); } }

MQTT.ino - konfiguracjaWiFi

Tutaj mamy funkcję odpowiedzialną za połączenie z siecią WiFi.

//Funkcja odpowiedzi na połączenie z ponownym wykonaniem WiFivoid setupWiFi() { Serial.println(); Serial.print("Łączenie z"); Serial.print(SSID); //Manda lub połącz się z nowymi através //do ssid e senha WiFi.begin(SSID, PASSWORD); //Espera até que a conexão com a rede seja estabelecida while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } //Se chegou aqui é porque conectou Serial.println(""); Serial.println("Połączenie WiFi"); }

MQTT.ino - connectMQTTServer

W tym kroku korzystamy z funkcji odpowiedzialnej za połączenie z serwerem MQTT.

//Funkcja odpowiada na połączenie z serwerem MQTTvoid connectMQTTServer() { Serial.println("Łączenie z serwerem MQTT…"); //Połącz się z id que definimos if (client.connect(ID_KLIENTA.c_str())) { //Połącz się ze sobą Serial.println("podłączony"); } else { //Se ocorreu algum erro Serial.print("błąd = "); Serial.println(klient.stan()); } }

MQTT.ino - odczytCzujnik

W tej funkcji definiuje się odczyt danych temperatury i wilgotności.

//Função responsável por realizar a leitura //da temperatura e umidade void readSensor(){ float value; //Faz a leitura da temperatura value = dht.readTemperature(); //Se o valor lido é válido if(!isnan(wartość)){ //Armazena o novo valor da temperatura temperature = wartość; } //Faz a leitura da umidade value = dht.readHumidity(); //Se o valor for válido if(!isnan(value)){ //Armazena o novo valor da umidade wilgotność = wartość; } }

MQTT.ino - tworzenieJsonString

Tutaj mamy funkcję odpowiedzialną za tworzenie Json z odczytanymi danymi.

//Odpowiedź na zabawę przez criar//um Json z dados lidos String createJsonString() { String data = "{"; data+= "\"d\": {"; data+="\"temperatura\":"; dane+=Ciąg(temperatura); dane+=", "; data+="\"wilgotność\":"; data+=Ciąg(wilgotność); dane+="}"; dane+="}"; dane zwrotne; }

Krok 10: Grafika

Graficzny
Graficzny
Graficzny
Graficzny

Aby wyświetlić wykres czujnika, przejdź

na

W polu Identyfikator urządzenia wprowadź identyfikator DEVICE_ID zdefiniowany w kodzie.

- Ważne jest, aby zmienić ten identyfikator urządzenia na unikalny identyfikator, używany tylko w celu uniknięcia konfliktu z danymi przesłanymi przez inną osobę.

Na koniec zaakceptuj warunki i kliknij Przejdź.

W tym projekcie przetestowaliśmy nasz Endpoint na serwerze IBM Watson. Gwarantuje to, że nasz program Arduino prawidłowo komunikuje się z platformą, a przesyłane przez nas dane zostaną bezproblemowo odebrane przez usługę w chmurze, jeśli utworzymy konto.

W nadchodzącym filmie z tej serii pokażę, jak zalogować się do IBM Watson, a także pisać w banku danych tej lub innej usługi w chmurze, takiej jak Google, Amazon, między innymi.

Krok 11: Pliki

Pobierz pliki:

PDF

JA NIE

Zalecana: