Zabawa z IoT na platformie Azure

    1 Comment

    1. Zakup urządzenia
    Wg producenta jest to
    Moduł WiFi oparty na układzie ESP8266. Na pokładzie znajduje się 9 portów GPIO z obsługą I2C i SPI, wejście analogowe oraz złącze baterii lipol 3,7 V. Posiada oprogramowanie NodeMCU, które wspiera język skryptowy Lua lub środowisko Arduino IDE. Dodatkowym atutem jest wbudowany konwerter napięć na liniach interfejsu UART.
    Czyli skrócie dostajemy gotowe urządzenie, które potrafi się komunikować po WIFI i ma możliwość podłączania dodatkowych czujników m.in. temperatury i wilgotności.

    esp8266_1

    2. Konfiguracja IoTHub na platformie Azure

    Wybieramy menu “wszystkie zasoby”

    azure_iot_1

    Z kategorii Internet of Things wybieramy IoT Hub i wypełniamy podstawowe parametry, unikalną nazwę, grupę zasobów i lokalizację. Na początek proponuję zacząć od planu darmowego F1, ale jeśli planujemy coś bardziej poważnego, to w chwili obecnej nie ma możliwości podniesienia planu usługi. Można tylko postawić kolejna usługę. Wstaje ona po kilku minutach.

     

    azure_iot_2

     

    Po wygenerowaniu kluczy z polisy iothubowner możemy przejść do rejestracji naszych urządzeń

    Device ID: Nazwa urządzenia. Unikalna w ramach IoT huba, wielkie i male litery maja znaczenie

    Authentication Type: Pozostawiamy Symmetric Key.

    Auto Generate Keys: Pozostawiamy zaznaczone (zostaną automatycznie wygenerowanie klucze).

    Connect device to IoT Hub: Pozostawiamy Enable.

    azure_iot_3

     

    Każde z urządzeń będzie mieć wygenerowane dwa klucze.

    azure_iot_4

    Konfiguracja połączeń w tym przypadku wygląda tak

     

    I tę konfigurację będziemy wykorzystywać podczas pracy z urządzeniem. W ten sposób Hub wie, z jakiego urządzenia nadchodzą dane z czujników.

    Jeżeli nasz hub nazwałem djkormohub to warto sprawdzić połączenie sieciowe na porcie 8883

    3. Instalacja oprogramowania Arduino
    Adres instalatora
    https://www.arduino.cc/en/Main/Software
    W momencie pisania artykułu jest to wersja 1.8.5.

    arduino_1

    arduino_2

    Pojawi się grupa  pytań wymagających potwierdzenia instalacji sterowników “Arduino”arduino_5 arduino_6

    Instalacja została zakończona.

    4. Konfiguracja Visual Studio Code

    Potrzebny będzie dedykowany plugin do Arduino. Plugin ten nie zadziała bez instalacji  oprogramowania z punktu 3).

    Adres pluginu
    https://marketplace.visualstudio.com/items?itemName=vsciot-vscode.vscode-arduino

    vsc_1

     

    Po instalacji pluginu proponuje restart VSC. U mnie bez tego nie były możliwe dalsze kroki.

    Zaczynamy od konfiguracji dla ESP8266.

    Podlączyłem urządzenie po USB, pojawił się komunikat

    vsc_3

    -> Arduino: Boar Manager.

    vsc_2Naciskamy aditional Urls. Wstawiamy w pliku User Settings .json adres

    vsc_4

    Wybieramy w polu “filter your search” esp8266.

    Wybrałem ostatnią wersje stabilną, czyli 2.4.0 i przycisk install. Po krótkiej chwili skończyło się to tak:

    Ups…
    Bez chwili namysłu wybrałem starszą wersję 2.3.0. Udało się

    A poźniej zrobiłem upgrade. W ten sposób mam działającą wersje 2.4.0.

    Uruchamiamy Arduino:Board Config

    vsc_5

    To czego nam brakuje to bibioteki do obsługi naszego IoTHuba w Azure i nie tylko

    Uruchamiamy Arduino: Librany Manager i instalujemy bibioteki

    AzureIoTHub
    AzureIoTUtility
    AzureIoTProtocol_MQTT
    ArduinoJso
    DHT sensor library
    Adafruit Unified Sensor

    vsc_6

    Oprogramowanie do pracy z płytką zostało zinstalowane. Czas na prosty przykład. Pobieram z githuba, gotowy projekt przygotowany przez Microsoft.

    Ponieważ, nie mam jeszcze czujnika DTH22 (temparatura i wilgotność) wykorzystam możliwość symulacji jego zachowania.
    W pliku config.h należy zmienić linię kodu odpowiedzialną za nią

    Otwieramy w VSC plik app.ino.

    Spróbujmy zapisać oprogramowanie na urządzeniu
    Uruchamiamy Arduino:Upload i po wybraniuy portu komunikacyjnego pojawi się po chwili następujący komunikat.

    Kolejne ups ?

    Po krótkim wykorzystaniu wujka Google trafiłem na rozwiązanie. Należy zainstalować brakujące oprogramowanie w podkatalogu hardware Arduino.

     

    Log z instalacji

    Restartujemy Arduino.

    Instalujemy obraz z poziomu Arduino (VSC nadal poprawnie nie działa).

    arduino_7

    Zwróćcie uwagę na migająca niebieską diodę podczas zapisywania oprogramowania.

    Oprogramowanie wgrane, teraz należy podłączyć urządzenie do naszej sieci WIFI.

    Po podaniu nazwy sieci WIFI (SSID) , hasła (PASS) i konfiguracji połączenia naszego urządzenia do IotHuba w postaci

    Urządzenie uruchamia się:

    Widać, że urządzenie podłączyło się do sieci bezprzewodowej i próbuje wystać komunikat w postaci

    Urządzenie ESP_*  jest widoczne od strony rutera WIFI, otrzymało przez DHCP swój adres IP.

    asus_1

    Włączyłem opcje debugowania i mam taki wyciąg z logów

     

    Problematyczne okazało się żle skonfigurowany DNS i urządzenie nie potrafiło ustalić adresu IP huba. IP 10.0.0.1 to lokalny adres rutera mojego dostawcy internetu.

    Po naprawie konfiguracji w logach monitora zaczęły pojawiac sie komunikaty

    Zweryfikowałem metryki diagnostyczne usługi w Azure. Pojawiły się pierwsze komunikaty.

    azure_iot_5

    W darmowym planie F1 mamy do wykorzystania 8000 komunikatów na dobę, jeśli dobrze oszacowałem oznacza to jeden komunikat co 11 sekund. Do prostych pomiarów jest to wystarczające.

     

    Categories: Arduino, Azure, IoT