Spisu treści:
- Krok 1: Sprzęt, którego potrzebujemy..
- Krok 2: Połączenia sprzętowe
- Krok 3: Kod
- Krok 4: Działanie kodu
- Krok 5: Aplikacje i funkcje
- Krok 6: Zasoby do dalszego rozwoju
Wideo: Orientacja mapy przez serwer WWW: 6 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:29
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..
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
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 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
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:
Kontrolowanie Led przez aplikację Blynk za pomocą Nodemcu przez Internet: 5 kroków
Sterowanie Led przez aplikację Blynk za pomocą Nodemcu przez Internet: Witam wszystkich Dzisiaj pokażemy Ci, jak sterować diodą LED za pomocą smartfona przez Internet
Dioda LED kontrolowana przez serwer HTTP - Ameba Arduino: 3 kroki
Dioda LED sterowana przez serwer HTTP - Ameba Arduino: Sterowanie diodą LED jest łatwe za pomocą dowolnego wybranego mikrokontrolera, ale bezprzewodowe sterowanie diodą LED w przeglądarce telefonu komórkowego jest naprawdę fajne i przyjemne. Właściwie jest to już projekt IoT, ponieważ możesz używać tego samego serwera do kontrolowania rzeczy
ESP 8266 Nodemcu Ws 2812 Neopikselowa lampa LED MOOD sterowana przez lokalny serwer sieciowy: 6 kroków
ESP 8266 Nodemcu Ws 2812 Neopikselowa lampa LED MOOD kontrolowana przez lokalny serwer sieciowy: ESP 8266 Nodemcu Ws 2812 Neopikselowa lampa LED MOOD sterowana za pomocą serwera internetowego
Stacja pogodowa DIY wykorzystująca DHT11, BMP180, Nodemcu z Arduino IDE przez serwer Blynk: 4 kroki
Stacja pogodowa DIY wykorzystująca DHT11, BMP180, Nodemcu z Arduino IDE przez serwer Blynk: Github: DIY_Weather_Station Hackster.io: Stacja pogodowa Widziałeś aplikację pogodową, prawda? Na przykład, kiedy go otworzysz, poznasz warunki pogodowe, takie jak temperatura, wilgotność itp. Te odczyty są średnią wartością dużego
Rolling Robot z ESP32 Thing i sterownikiem TB6612FNG, sterowany przez Androida przez BLE: 11 kroków
Rolling Robot z ESP32 Thing i sterownikiem TB6612FNG, kontrolowany przez Androida przez BLE: Witam wszystkich To jest moja pierwsza instrukcja. Toczący się robot (nazywany Raidho - od runy kojarzącej się z ruchem) oparty na ESP32 Thing, TB6612 FNG i BLE. Jedną z części, która może wydawać się osobliwa, jest to, że zdjęcia nie pochodzą z procesu tworzenia