Spisu treści:
- Krok 1: Pinout ESP32
- Krok 2: Pinout NodeMCU
- Krok 3: MQTT
- Krok 4: Montaż
- Krok 5: Schemat
- Krok 6: Biblioteki
- Krok 7: Biblioteka odczytów temperatury i wilgotności
- Krok 8: Biblioteka MQTT
- Krok 9: MQTT.ino
- Krok 10: Grafika
- Krok 11: Pliki
Wideo: IBM Watson z ESP32 jako punktem końcowym: 11 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
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
Krok 3: 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ż
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
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
Krok 8: 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
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:
JA NIE
Zalecana:
Arduino jako dostawca usług internetowych -- Nagraj plik szesnastkowy w AVR -- Bezpiecznik w AVR -- Arduino jako programista: 10 kroków
Arduino jako dostawca usług internetowych || Nagraj plik szesnastkowy w AVR || Bezpiecznik w AVR || Arduino As Programmer:…………Zasubskrybuj mój kanał YouTube, aby uzyskać więcej filmów………Ten artykuł to wszystko o arduino jako isp. Jeśli chcesz wgrać plik hex lub chcesz ustawić bezpiecznik w AVR to nie musisz kupować programatora, możesz zrobić
Jak używać silnika krokowego jako enkodera obrotowego i wyświetlacza OLED dla kroków: 6 kroków
Jak używać silnika krokowego jako enkodera obrotowego i wyświetlacza OLED dla kroków: W tym samouczku dowiemy się, jak śledzić kroki silnika krokowego na wyświetlaczu OLED. Obejrzyj film demonstracyjny.Kredyt samouczka oryginalnego trafia do użytkownika YouTube „sky4fly”
Dispensador De Alimento Para Múltiples Mascotas Usando Inteligencia Artificial Con Watson: 11 kroków
Dispensador De Alimento Para Múltiples Mascotas Usando Inteligencia Artificial Con Watson: En este Instructable aprenderemos como hacer un dispensador de alimento para sus mascotas, por lo general, o al menos en mi caso siempre he querido hacer un dispensador automá un perro y un gato. Por ende no tengo una
Hydroponika IoT - wykorzystanie IBM Watson do pomiarów PH i EC: 7 kroków (ze zdjęciami)
Hydroponika IoT – Korzystanie z IBM Watson do pomiarów PH i EC: Ta instrukcja pokaże, jak monitorować EC, pH i temperaturę w konfiguracji hydroponicznej i przesyłać dane do usługi IBM Watson. Rozpoczęcie pracy z Watsonem jest bezpłatne. Istnieją płatne plany, ale darmowy plan jest więcej niż wystarczający dla tego projektu
Jak używać Wiimote jako myszy komputerowej, używając świec jako czujnika !!: 3 kroki
Jak używać Wiimote jako myszy komputerowej, używając świec jako czujnika !!: Ten przewodnik pokaże Ci, jak podłączyć Wii Remote (Wiimote) do komputera i używać go jako myszy