Press "Enter" to skip to content

Przyszłość jest teraz! Czyli jak IoT wkracza do SAP [szkolenie cz.1]

Obserwując trend zmian technologiczny zauważyć można, że świat idzie w kierunku automatyzacji procesów, gdzie maszyny wyręczają ludzi w coraz bardziej skomplikowanych czynnościach wymagających „pomyślenia”, a jeśli to nie jest możliwe to użytkownik może nawiązać kontakt z urządzeniem poprzez Internet.

Dziś zajmiemy się tym drugim elementem, czyli jak urządzenia mogą komunikować się przez Internet. Spojrzymy na to z perspektywy SAP. Celem projektu będzie przekazywanie danych z czujnika temperatury (LC-DS18B20) poprzez mikrokontroler Arduino Mini Pro do SAP HANA z wykorzystaniem MQTT. Niektórym z Was rozpaliła się w tej chwili wyobraźnia i myślą jak fascynujące scenariusze biznesowe można przetwarzać w oparciu o Internet rzeczy. Jeśli nie należysz do tej grupy osób, to przytoczę przykład rozwiązania pokazanego na zeszłorocznym SAP TechEd. Jednym z zaproszonych gości był Andreas Siebert, szef rozwiązań geoprzestrzennych, lidera grupy ubezpieczeniowej Munich RE. Firma ta korzysta z czujników rozmieszczonych na świecie, gdzie mierzone są parametry pogodowe, a także czynniki środowiska takie jak, wilgotność podłoża czy też wstrząsy ziemi. Dane te zbierane są i trafiają do SAP HANA, gdzie są przetwarzane. Na ich podstawie system przygotowuje prognozy zagrożeń geologicznych dla danych regionów, przez co firma może zminimalizować ryzyko i odpowiedniej dobrać wysokość stawek ubezpieczenia. Fascynujące prawda?

Cel?

W części pierwszej szkolenia za cel stawiamy zmontowanie układu oraz wgranie programu do mikrokontrolera który połączy się z siecią WiFi.

Stawiamy pierwszy krok!

Niestety próg wejścia, ze względu na potrzebę znajomości elektroniki jest dosyć wysoki (szczególnie dla ludzi z SAP), jednak spokojnie – damy radę J

Czego będziemy potrzebować:

  • Środowisko Arduino (stabilna wersja 1.6.5)
  • Mikrokontroler Arduino Mini Pro 3.3v
  • Moduł WiFi ESP8266
  • Programator FT232RL
  • Płytka testowa
  • Kabele zeńsko-zeńskie, męsko-męskie, żeńsko-męskie
  • 2 oporniki 10kΩ

Jeśli mamy to wszystko tzn., że możemy wziąć się za zmontowanie układu. Pamiętajmy, że układ WiFi ESP8266 pracuje z napięciem 3.3V. Podanie większego napięcie doprowadzi do uszkodzenia układu. Nasz układ podłączymy bezpośrednio do komputera poprzez bootloader, dlatego ważne aby przestawić zworkę na 3.3V. Dlaczego podłączymy układ poprzez bootloader? Chcemy „debugować” działanie układu przez Serial Monitor (o tym za chwilę).

Programator FT232RL

Układ powinien zostać zbudowany zgodnie ze schematem:

Schemat połączenia ESP8266 z Arduino Pro Mini

Zanim podłączymy układ do komputera musimy przygotować kod źródłowy. Aby móc korzystać z Serial Monitora musimy zmapować piny RX/TX na 7/8 pinie płytki Arduino. Posłużymy się do tego biblioteką SoftwareSerial. Na pinie 2 ustawimy resetowanie ESP8266. Metoda setup inicjalizuje płytkę WiFi. Metoda loop funkcjonuje przez cały czas gdy płytka jest zasilana. Sterowanie nią odbywa się poprzez poniższe komendy:

Komendy do ESP8266

Metoda loop resetuje układ i nawiązuje połączenie z siecią podaną przy komendzie AT+CWJAP.

  1. #include <SoftwareSerial.h>
  2. SoftwareSerial wifi(7,8);// RX, TX
  3. intPIN_RESET = 2;
  4. intstrSize;
  5. voidcmdPrint(String cmd) {
  6. println(cmd);
  7. }
  8. boolcmdSearch(String text, int timeOut = 50) {
  9. String line;
  10.  bool wasOk = false;
  11.  for (int i = 0; i < timeOut; i++) {
  12.   while (available()) {
  13.     line = readString();
  14.     if (indexOf(text) > 0) {
  15.       wasOk = true;
  16.       i = timeOut;
  17.       break;
  18.     }
  19.     if (indexOf(„ERROR”) > 0 || line.indexOf(„FAIL”) > 0) {
  20.       i = timeOut;
  21.       break;
  22.     }
  23.   }
  24.   delay(100);
  25.  }
  26.  return wasOk;
  27. }
  28. voidsetup() {
  29. pinMode(PIN_RESET, OUTPUT);
  30. begin(9600);
  31. flush();
  32. begin(9600);
  33. flush();
  34. end();
  35. println(„SETUP”);
  36. digitalWrite(PIN_RESET, LOW);
  37. delay(100);
  38. digitalWrite(PIN_RESET, HIGH);
  39. delay(500);
  40. }
  41. voidloop() {
  42. println(„LOOP”);
  43.   cmdPrint („AT+CIOBAUD=9600”);
  44.   cmdSearch(„OK”);
  45.   cmdPrint („AT+RST”);
  46.   cmdSearch(„OK”);
  47.   cmdPrint („AT+CIPMODE=0”);
  48.   cmdSearch(„OK”);
  49.   cmdPrint („AT+CIPMUX=0”);
  50.   cmdSearch(„OK”);
  51.   cmdPrint („AT+CWMODE=1”);
  52.   cmdSearch(„OK”);
  53.   cmdPrint („AT+CWJAP?”);
  54.   if(!cmdSearch(„OK”)) {
  55.     cmdPrint („AT+CWJAP=\”sid\”,\”pswd\”„);
  56.     cmdSearch(„OK”);
  57.  }
  58.  delay(60000);  //  1min
  59. }

Teraz możemy spokojnie skopiować kod do środowiska Arduino podłączyć płytkę i wgrać program przez przycisk „Upload”.

Zanim to jednak zrobimy, w zakładce Tools należy wybrać typ płytki Arduino na jaki będziemy wgrywać program. Ja uzywałem Arduino Pro Mini, z procesorem ATmega328(3.3v, 8MHz). Ponadto, wybieramy programator USBasp.

Gdy program został już wgrany, wybieramy z zakładki Tools Serial Monitor przez co możemy śledzić na bieżąco stan wykonywania programu.

Share This:

2 komentarze

  1. Ιt’s nearly impossible t᧐ find expеrienced pеople on this topic, but yoᥙ sound like you know what
    you’re talking about! Thanks

  2. add add

    Ꮐreat post. I ѡas checking constantly this bⅼog and I ɑm
    imрressed! Vеry useful informatiоn sρecifically the
    remaining ѕection 🙂 I maintain such information much. I used to be looking for this certain info fⲟr a vеry ⅼengthy time.
    Thank you and best of lucк.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *