Spisu treści:

Orientacja mapy przez serwer WWW: 6 kroków
Orientacja mapy przez serwer WWW: 6 kroków

Wideo: Orientacja mapy przez serwer WWW: 6 kroków

Wideo: Orientacja mapy przez serwer WWW: 6 kroków
Wideo: Złożyłem 50 Map Polski w Jeden Obraz! 👀 2024, Listopad
Anonim
Orientacja mapy przez serwer WWW
Orientacja mapy przez serwer WWW

Internet rzeczy (IoT) jest obecnie jednym z popularnych tematów na świecie. I szybko rośnie z dnia na dzień dzięki Internetowi. Internet Rzeczy zmienia proste domy w inteligentne domy, w których wszystkim, od oświetlenia po zamki, można sterować za pomocą smartfona lub komputera stacjonarnego. To luksus, który każdy chce mieć.

Zawsze bawimy się narzędziami, które mamy i pracujemy nad przejściem do następnego kroku naszych limitów. Staramy się dać naszym klientom wizję najnowszych technologii i pomysłów. Abyś mógł zamienić swój dom w inteligentne domy i cieszyć się smakiem luksusu bez większego wysiłku.

Dziś myślimy o pracy nad jednym z najważniejszych tematów w IoT - Digital Map Orientation.

Zbudujemy serwer WWW, dzięki któremu będziemy mogli monitorować ruchy dowolnego urządzenia lub rzeczy (to zależy od Ciebie, kogo chcesz szpiegować;)). Zawsze możesz pomyśleć o uaktualnieniu tego projektu na wyższy poziom z pewnymi modyfikacjami i nie zapomnij o tym w komentarzach poniżej.

Zacznijmy niż.. !!

Krok 1: Sprzęt, którego potrzebujemy..

Sprzęt, którego potrzebujemy.. !!
Sprzęt, którego potrzebujemy.. !!
Sprzęt, którego potrzebujemy.. !!
Sprzęt, którego potrzebujemy.. !!
Sprzęt, którego potrzebujemy.. !!
Sprzęt, którego potrzebujemy.. !!
Sprzęt, którego potrzebujemy.. !!
Sprzęt, którego potrzebujemy.. !!

1. Czujnik LSM9DS0

Czujnik 3 w 1 wyprodukowany przez STMicroelectronics, LSM9DS0 to zestaw składający się z cyfrowego czujnika przyspieszenia liniowego 3D, cyfrowego czujnika prędkości kątowej 3D i cyfrowego czujnika magnetycznego 3D. LSM9DS0 ma pełną skalę przyspieszenia liniowego ±2g/±4g/±6g/±8g/±16g, pełną skalę pola magnetycznego ±2/±4/±8/±12 gausów i prędkość kątową ±245 /±500/±2000 dps.

2. Adafruit Huzzah ESP8266

Procesor ESP8266 firmy Espressif to mikrokontroler 80 MHz z pełnym front-endem WiFi (zarówno jako klient, jak i punkt dostępowy) oraz stos TCP/IP z obsługą DNS. ESP8266 to niesamowita platforma do tworzenia aplikacji IoT. ESP8266 zapewnia dojrzałą platformę do monitorowania i sterowania aplikacjami przy użyciu języka Arduino Wire Language i Arduino IDE.

3. Programator USB ESP8266

jego adapter hosta ESP8266 został zaprojektowany specjalnie przez Dcube Store dla wersji Adafruit Huzzah ESP8266, umożliwiając interfejs I²C.

4. Kabel połączeniowy I2C

5. Kabel mini USB

Zasilacz mini USB to idealny wybór do zasilania Adafruit Huzzah ESP8266.

Krok 2: Połączenia sprzętowe

Połączenia sprzętowe
Połączenia sprzętowe
Połączenia sprzętowe
Połączenia sprzętowe
Połączenia sprzętowe
Połączenia sprzętowe

Ogólnie rzecz biorąc, wykonywanie połączeń jest najłatwiejszą częścią tego projektu. Postępuj zgodnie z instrukcjami i obrazami, a nie powinieneś mieć problemów.

Najpierw weź Adafruit Huzzah ESP8266 i umieść na nim programator USB (z portem Inward Facing I²C). Delikatnie naciśnij programator USB, a my wykonamy ten krok tak prosty, jak bułka z masłem (patrz zdjęcie powyżej).

Połączenie czujnika i Adafruit Huzzah ESP8266Weź czujnik i podłącz z nim kabel I²C. Dla prawidłowego działania tego kabla należy pamiętać, że wyjście I²C ZAWSZE łączy się z wejściem I²C. To samo należało zrobić w przypadku Adafruit Huzzah ESP8266 z zamontowanym nad nim programatorem USB (patrz zdjęcie powyżej).

Za pomocą programatora USB ESP8266 bardzo łatwo jest zaprogramować ESP. Wszystko, co musisz zrobić, to podłączyć czujnik do programatora USB i gotowe. Wolimy używać tego adaptera, ponieważ znacznie ułatwia on podłączenie sprzętu. Bez obaw o przylutowanie pinów ESP do czujnika czy odczytanie schematów pinów i karty katalogowej. Możemy używać i pracować na wielu czujnikach jednocześnie, wystarczy wykonać łańcuch. Bez tego programatora USB typu plug and play istnieje duże ryzyko nieprawidłowego połączenia. Złe okablowanie może zabić zarówno Wi-Fi, jak i czujnik.

Uwaga: Brązowy przewód powinien zawsze podążać za połączeniem uziemienia (GND) między wyjściem jednego urządzenia a wejściem innego urządzenia.

Zasilanie obwodu

Podłącz kabel Mini USB do gniazda zasilania Adafruit Huzzah ESP8266. Zapal to i voila, dobrze jest iść!

Krok 3: Kod

Kod
Kod

Kod ESP dla czujnika Adafruit Huzzah ESP8266 i LSM9DS0 jest dostępny w naszym repozytorium github.

Zanim przejdziesz do kodu, upewnij się, że przeczytałeś instrukcje podane w pliku Readme i skonfiguruj zgodnie z nimi swój Adafruit Huzzah ESP8266. Konfiguracja ESP zajmie tylko 5 minut.

Kod jest długi, ale jest w najprostszej formie, jaką możesz sobie wyobrazić, i nie będziesz miał trudności ze zrozumieniem go.

Dla Twojej wygody możesz tutaj również skopiować działający kod ESP dla tego czujnika:

// Rozprowadzany z wolną licencją.// Używaj go w dowolny sposób, z zyskiem lub za darmo, pod warunkiem, że pasuje do licencji powiązanych z nim dzieł. // LSM9DSO // Ten kod jest przeznaczony do współpracy z modułem TCS3414_I2CS I2C Mini dostępnym na stronie dcubestore.com.

#włączać

#włączać

#włączać

#włączać

// Adres I2C żyroskopu LSM9DSO to 6A(106)

#define Addr_Gyro 0x6A // Adres LSM9DSO Accl I2C to 1E(30) #define Addr_Accl 0x1E

const char* ssid = "Twój identyfikator SSID";

const char* password = "twoje hasło"; int xGyro, yGyro, zGyro, xAccl, yAccl, zAccl, xMag, yMag, zMag;

ESP8266serwer WebServer(80);

void handleroot()

{ unsigned int data[6];

// Rozpocznij transmisję I2C

Wire.beginTransmission(Addr_Gyro); // Wybierz rejestr kontrolny 1 Wire.write(0x20); // Szybkość transmisji danych = 95 Hz, X, Y, oś Z włączona, włączone zasilanie Wire.write(0x0F); // Zatrzymaj transmisję I2C Wire.endTransmission();

// Rozpocznij transmisję I2C

Wire.beginTransmission(Addr_Gyro); // Wybierz rejestr kontrolny 4 Wire.write(0x23); // Pełna skala 2000 dps, ciągła aktualizacja Wire.write(0x30); // Zatrzymaj transmisję I2C Wire.endTransmission();

// Rozpocznij transmisję I2C

Wire.beginTransmission(Addr_Accl); // Wybierz rejestr kontrolny 1 Wire.write(0x20); // Szybkość transmisji danych przyspieszenia = 100 Hz, X, Y, oś Z włączona, włączone zasilanie Wire.write(0x67); // Zatrzymaj transmisję I2C na urządzeniu Wire.endTransmission();

// Rozpocznij transmisję I2C

Wire.beginTransmission(Addr_Accl); // Wybierz rejestr kontrolny 2 Wire.write(0x21); // Wybór pełnej skali +/- 16g Wire.write(0x20); // Zatrzymaj transmisję I2C Wire.endTransmission();

// Rozpocznij transmisję I2C

Wire.beginTransmission(Addr_Accl); // Wybierz rejestr kontrolny 5 Wire.write(0x24); // Wysoka rozdzielczość magnetyczna, wyjściowa szybkość transmisji danych = 50Hz Wire.write(0x70); // Zatrzymaj transmisję I2C Wire.endTransmission();

// Rozpocznij transmisję I2C

Wire.beginTransmission(Addr_Accl); // Wybierz rejestr kontrolny 6 Wire.write(0x25); // Pełna skala magnetyczna +/- 12 gausów Wire.write(0x60); // Zatrzymaj transmisję I2C Wire.endTransmission();

// Rozpocznij transmisję I2C

Wire.beginTransmission(Addr_Accl); // Wybierz rejestr kontrolny 7 Wire.write(0x26); // Tryb normalny, tryb ciągłej konwersji magnetycznej Wire.write(0x00); // Zatrzymaj transmisję I2C Wire.endTransmission(); opóźnienie(300);

for (int i = 0; i < 6; i++) { // Rozpocznij transmisję I2C Wire.beginTransmission(Addr_Gyro); // Wybierz rejestr danych Wire.write((40 + i)); // Zatrzymaj transmisję I2C Wire.endTransmission();

// Poproś o 1 bajt danych

Wire.requestFrom(Addr_Gyro, 1);

// Odczytaj 6 bajtów danych

// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb if (Wire.available() == 1) { data = Wire.read(); } }

// Konwertuj dane

int xGyro = ((dane[1] * 256) + dane[0]); int yro = ((dane[3] * 256) + dane[2]); int zGyro = ((dane[5] * 256) + dane[4]);

for (int i = 0; i < 6; i++) { // Rozpocznij transmisję I2C Wire.beginTransmission(Addr_Accl); // Wybierz rejestr danych Wire.write((40 + i)); // Zatrzymaj transmisję I2C Wire.endTransmission();

// Poproś o 1 bajt danych

Wire.requestFrom(Addr_Accl, 1);

// Odczytaj 6 bajtów danych

// xAccl lsb, xAccl msb, yAccl lsb, yAccl msb // zAccl lsb, zAccl msb if (Wire.available() == 1) { data = Wire.read(); } }

// Konwertuj dane

int xAccl = ((dane[1] * 256) + dane[0]); int yAccl = ((dane[3] * 256) + dane[2]); int zAccl = ((dane[5] * 256) + dane[4]);

for (int i = 0; i < 6; i++) { // Rozpocznij transmisję I2C Wire.beginTransmission(Addr_Accl); // Wybierz rejestr danych Wire.write((8 + i)); // Zatrzymaj transmisję I2C Wire.endTransmission();

// Poproś o 1 bajt danych

Wire.requestFrom(Addr_Accl, 1);

// Odczytaj 6 bajtów danych

// xMag lsb, xMag msb, yMag lsb, yMag msb // zMag lsb, zMag msb if (Wire.available() == 1) { data = Wire.read(); } }

// Konwertuj dane

int xMag = ((dane[1] * 256) + dane[0]); int yMag = ((dane[3] * 256) + dane[2]); int zMag = ((dane[5] * 256) + dane[4]);

// Dane wyjściowe do monitora szeregowego

Serial.print("Oś obrotu X: "); Serial.println(xGyro); Serial.print("Oś obrotu Y: "); Serial.println(yGyro); Serial.print("Oś obrotu Z: "); Serial.println(zGyro); Serial.print("Przyspieszenie w osi X: "); Serial.println(xAccl); Serial.print("Przyspieszenie w osi Y: "); Serial.println(yAccl); Serial.print("Przyspieszenie w osi Z: "); Serial.println(zAccl); Serial.print("Pole magnetyczne w osi X: "); Serial.println(xMag); Serial.print("Pole magnetyczne w osi Y: "); Serial.println(yMag); Serial.print("Magnetyczny złożony w osi Z: "); Serial.println(zMag);

// Dane wyjściowe na serwer WWW

server.sendContent ("

SKLEP DCUBE

www.dcubestore.com

Minimoduł czujnika I2C LSM9DS0

);

server.sendContent ("

Oś X obrotu = " + String(xGyro)); server.sendContent ("

Oś Y obrotu = " + String(yGyro)); server.sendContent ("

Oś Z obrotu = " + String(zGyro)); server.sendContent ("

Przyspieszenie w osi X = " + String(xAccl)); server.sendContent ("

Przyspieszenie w osi Y = " + String(yAccl)); server.sendContent ("

Przyspieszenie w osi Z = " + String(zAccl)); server.sendContent ("

Magnetyczny złożony w osi X = " + String(xMag)); server.sendContent ("

Magnetyczny złożony w osi Y = " + String(yMag)); server.sendContent ("

Magnetyczny złożony w osi Z = " + String (zMag)); opóźnienie (1000); }

pusta konfiguracja()

{ // Zainicjuj komunikację I2C jako MASTER Wire.begin(2, 14); // Zainicjuj komunikację szeregową, ustaw szybkość transmisji = 115200 Serial.begin(115200);

// Połącz z siecią Wi-Fi

WiFi.begin(SSid, hasło);

// Czekaj na połączenie

while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.print("Połączony z"); Serial.println(ssid);

// Uzyskaj adres IP ESP8266

Serial.print("adres IP: "); Serial.println(WiFi.localIP());

// Uruchom serwer

server.on("/", handleroot); serwer.początek(); Serial.println("Serwer HTTP uruchomiony"); }

pusta pętla()

{ serwer.obsługaKlient(); }

Krok 4: Działanie kodu

Działanie kodu
Działanie kodu

Teraz pobierz (lub git pull) kod i otwórz go w Arduino IDE.

Skompiluj i prześlij kod i zobacz dane wyjściowe na Serial Monitor.

Uwaga: przed przesłaniem upewnij się, że w kodzie wpisałeś swoją sieć SSID i hasło.

Skopiuj adres IP ESP8266 z monitora szeregowego i wklej go w przeglądarce internetowej. Zobaczysz stronę internetową z osią obrotu, przyspieszeniem i odczytem pola magnetycznego w 3 osiach.

Wyjście czujnika na monitorze szeregowym i serwerze sieciowym pokazano na powyższym obrazku.

Krok 5: Aplikacje i funkcje

LSM9DS0 to system w pakiecie zawierający cyfrowy czujnik przyspieszenia liniowego 3D, cyfrowy czujnik prędkości kątowej 3D i cyfrowy czujnik magnetyczny 3D. Mierząc te trzy właściwości, możesz zdobyć ogromną wiedzę na temat ruchu obiektu. Mierząc siłę i kierunek ziemskiego pola magnetycznego za pomocą magnetometru, możesz przybliżyć swój kurs. Akcelerometr w telefonie może mierzyć kierunek siły grawitacji i oszacować orientację (portret, krajobraz, mieszkanie itp.). Quadkoptery z wbudowanymi żyroskopami mogą zwracać uwagę na nagłe przechyły lub pochylenia. Możemy to wykorzystać w Global Positioning System (GPS).

Niektóre inne aplikacje obejmują nawigację w pomieszczeniach, inteligentne interfejsy użytkownika, zaawansowane rozpoznawanie gestów, urządzenia wejściowe do gier i rzeczywistości wirtualnej itp.

Za pomocą ESP8266 możemy zwiększyć jego pojemność na większą długość. Możemy sterować naszymi urządzeniami i monitorować ich wydajność z naszych komputerów stacjonarnych i urządzeń mobilnych. Możemy przechowywać i zarządzać danymi online oraz analizować je w dowolnym momencie pod kątem modyfikacji. Inne zastosowania obejmują automatykę domową, sieć mesh, przemysłowe sterowanie bezprzewodowe, elektroniczne nianie, sieci czujników, elektronikę do noszenia, urządzenia rozpoznające lokalizację Wi-Fi, sygnalizatory systemu pozycjonowania Wi-Fi.

Krok 6: Zasoby do dalszego rozwoju

Aby uzyskać więcej informacji o LSM9DS0 i ESP8266, sprawdź poniższe łącza:

  • Arkusz danych czujnika LSM9DS0
  • Schemat połączeń LSM9DS0
  • Arkusz danych ESP8266

Zalecana: