Оглавление:

Ориентация карты через веб-сервер: 6 шагов
Ориентация карты через веб-сервер: 6 шагов

Видео: Ориентация карты через веб-сервер: 6 шагов

Видео: Ориентация карты через веб-сервер: 6 шагов
Видео: Шаг №2 * WebServer WEB сервер - ESP8266 2024, Ноябрь
Anonim
Ориентация карты через веб-сервер
Ориентация карты через веб-сервер

Интернет вещей (IoT) сейчас является одной из популярных тем на планете. И он стремительно растет день ото дня с Интернетом. Интернет вещей превращает простые дома в умные дома, где всем, от фонарей до замков, можно управлять со смартфона или настольного компьютера. Это роскошь, которой хочет обладать каждый.

Мы всегда играем с инструментами, которые у нас есть, и продолжаем работать над тем, чтобы перейти к следующему этапу наших возможностей. Мы стараемся дать нашим клиентам представление о новейших технологиях и идеях. Чтобы вы могли без особых усилий превратить свой дом в умный дом и насладиться вкусом роскоши.

Сегодня мы думаем над одной из самых важных тем в IoT - ориентацией цифровых карт.

Мы создадим веб-сервер, через который мы сможем отслеживать перемещения любого устройства или объекта (за кем вы будете шпионить - решать вам;)). Вы всегда можете подумать об обновлении этого проекта до следующего уровня с некоторыми изменениями и не забудьте сообщить нам об этом в комментариях ниже.

Начнем, чем.. !!

Шаг 1: Необходимое оборудование..

Необходимое оборудование.. !!
Необходимое оборудование.. !!
Оборудование, которое нам нужно.. !!
Оборудование, которое нам нужно.. !!
Необходимое оборудование.. !!
Необходимое оборудование.. !!
Необходимое оборудование.. !!
Необходимое оборудование.. !!

1. Датчик LSM9DS0

Датчик 3-в-1 производства STMicroelectronics, LSM9DS0 представляет собой комплексную систему, включающую цифровой датчик линейного ускорения 3D, цифровой датчик угловой скорости 3D и цифровой магнитный датчик 3D. LSM9DS0 имеет полную шкалу линейного ускорения ± 2g / ± 4g / ± 6g / ± 8g / ± 16g, полную шкалу магнитного поля ± 2 / ± 4 / ± 8 / ± 12 Гс и угловую скорость ± 245 / ± 500 / ± 2000 дпс.

2. Adafruit Huzzah ESP8266

Процессор ESP8266 от Espressif - это микроконтроллер с частотой 80 МГц с полным интерфейсом WiFi (как в качестве клиента, так и в качестве точки доступа) и стеком TCP / IP с поддержкой DNS. ESP8266 - потрясающая платформа для разработки приложений Интернета вещей. ESP8266 представляет собой зрелую платформу для мониторинга и управления приложениями с использованием языка Arduino Wire и Arduino IDE.

3. Программатор USB ESP8266

его хост-адаптер ESP8266 был разработан Dcube Store специально для Adafruit Huzzah версии ESP8266, что позволяет использовать интерфейс I²C.

4. Соединительный кабель I2C.

5. Кабель мини-USB.

Кабель mini-USB Источник питания - идеальный выбор для питания Adafruit Huzzah ESP8266.

Шаг 2: Подключение оборудования

Аппаратные соединения
Аппаратные соединения
Аппаратные соединения
Аппаратные соединения
Аппаратные соединения
Аппаратные соединения

В общем, установление связей - самая легкая часть в этом проекте. Следуйте инструкциям и изображениям, и у вас не должно возникнуть проблем.

Прежде всего, возьмите Adafruit Huzzah ESP8266 и поместите на него USB-программатор (с портом I²C, обращенным внутрь). Осторожно нажмите на USB-программатор, и мы закончили этот шаг так же просто, как пирог (см. Рисунок выше).

Подключение датчика и Adafruit Huzzah ESP8266 Возьмите датчик и подключите к нему кабель I²C. Для правильной работы этого кабеля помните, что выход I²C ВСЕГДА подключается к входу I²C. То же самое нужно было сделать для Adafruit Huzzah ESP8266 с установленным над ним USB-программатором (см. Рисунок выше).

С помощью USB-программатора ESP8266 запрограммировать ESP очень легко. Все, что вам нужно сделать, это подключить датчик к USB Programmer, и все готово. Мы предпочитаем использовать этот адаптер, потому что он значительно упрощает подключение оборудования. Не беспокойтесь о том, чтобы припаять контакты ESP к датчику или прочитать схемы контактов и техническое описание. Мы можем использовать и работать с несколькими датчиками одновременно, вам просто нужно составить цепочку. Без этих программаторов USB plug and play существует большой риск неправильного подключения. Плохая проводка может убить ваш Wi-Fi, а также ваш датчик.

Примечание. Коричневый провод всегда должен следовать за заземлением (GND) между выходом одного устройства и входом другого устройства.

Питание схемы

Подключите кабель Mini USB к разъему питания Adafruit Huzzah ESP8266. Зажги его и вуаля, мы в порядке!

Шаг 3: Код

Код
Код

Код ESP для сенсора Adafruit Huzzah ESP8266 и LSM9DS0 доступен в нашем репозитории на github.

Прежде чем переходить к коду, убедитесь, что вы прочитали инструкции, приведенные в файле Readme, и настройте Adafruit Huzzah ESP8266 в соответствии с ними. Настройка ESP займет всего 5 минут.

Код длинный, но он представлен в простейшей форме, которую вы можете себе представить, и вам не составит труда ее понять.

Для вашего удобства вы также можете скопировать рабочий код ESP для этого датчика отсюда:

// Распространяется по свободной лицензии.// Используйте его любым способом, коммерческим или бесплатным, при условии, что он соответствует лицензиям на связанные с ним работы. // LSM9DSO // Этот код разработан для работы с мини-модулем TCS3414_I2CS I2C, доступным на dcubestore.com.

#включают

#включают

#включают

#включают

// Адрес I2C гироскопа LSM9DSO - 6A (106)

#define Addr_Gyro 0x6A // LSM9DSO Accl I2C-адрес 1E (30) #define Addr_Accl 0x1E

const char * ssid = "ваш SSID";

const char * password = "ваш пароль"; int xGyro, yGyro, zGyro, xAccl, yAccl, zAccl, xMag, yMag, zMag;

ESP8266WebServer server (80);

недействительный handleroot ()

{данные типа int без знака [6];

// Запуск передачи I2C

Wire.beginTransmission (Addr_Gyro); // Выбираем регистр управления 1 Wire.write (0x20); // Скорость передачи данных = 95 Гц, ось X, Y, Z включена, питание включено Wire.write (0x0F); // Остановка передачи I2C Wire.endTransmission ();

// Запуск передачи I2C

Wire.beginTransmission (Addr_Gyro); // Выбор регистра управления 4 Wire.write (0x23); // Полномасштабный 2000 дпс, постоянное обновление Wire.write (0x30); // Остановка передачи I2C Wire.endTransmission ();

// Запуск передачи I2C

Wire.beginTransmission (Addr_Accl); // Выбираем регистр управления 1 Wire.write (0x20); // Скорость передачи данных ускорения = 100 Гц, ось X, Y, Z включена, питание включено Wire.write (0x67); // Остановка передачи I2C на устройстве Wire.endTransmission ();

// Запуск передачи I2C

Wire.beginTransmission (Addr_Accl); // Выбор регистра управления 2 Wire.write (0x21); // Выбор полной шкалы +/- 16g Wire.write (0x20); // Остановка передачи I2C Wire.endTransmission ();

// Запуск передачи I2C

Wire.beginTransmission (Addr_Accl); // Выбираем управляющий регистр 5 Wire.write (0x24); // Магнитное высокое разрешение, скорость вывода = 50 Гц Wire.write (0x70); // Остановка передачи I2C Wire.endTransmission ();

// Запуск передачи I2C

Wire.beginTransmission (Addr_Accl); // Выбираем управляющий регистр 6 Wire.write (0x25); // Магнитная полная шкала +/- 12 Гс Wire.write (0x60); // Остановка передачи I2C Wire.endTransmission ();

// Запуск передачи I2C

Wire.beginTransmission (Addr_Accl); // Выбираем управляющий регистр 7 Wire.write (0x26); // Нормальный режим, режим магнитного непрерывного преобразования Wire.write (0x00); // Остановка передачи I2C Wire.endTransmission (); задержка (300);

for (int i = 0; i <6; i ++) {// Запустить провод передачи I2C.beginTransmission (Addr_Gyro); // Выбираем регистр данных Wire.write ((40 + i)); // Остановка передачи I2C Wire.endTransmission ();

// Запрос 1 байт данных

Wire.requestFrom (Addr_Gyro, 1);

// Чтение 6 байтов данных

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

// Конвертируем данные

int xGyro = ((данные [1] * 256) + данные [0]); int yGyro = ((данные [3] * 256) + данные [2]); int zGyro = ((данные [5] * 256) + данные [4]);

for (int i = 0; i <6; i ++) {// Запустить провод передачи I2C.beginTransmission (Addr_Accl); // Выбираем регистр данных Wire.write ((40 + i)); // Остановка передачи I2C Wire.endTransmission ();

// Запрос 1 байт данных

Wire.requestFrom (Addr_Accl, 1);

// Чтение 6 байтов данных

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

// Конвертируем данные

int xAccl = ((данные [1] * 256) + данные [0]); int yAccl = ((данные [3] * 256) + данные [2]); int zAccl = ((данные [5] * 256) + данные [4]);

for (int i = 0; i <6; i ++) {// Запустить провод передачи I2C.beginTransmission (Addr_Accl); // Выбираем регистр данных Wire.write ((8 + i)); // Остановка передачи I2C Wire.endTransmission ();

// Запрос 1 байт данных

Wire.requestFrom (Addr_Accl, 1);

// Чтение 6 байтов данных

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

// Конвертируем данные

int xMag = ((данные [1] * 256) + данные [0]); int yMag = ((данные [3] * 256) + данные [2]); int zMag = ((данные [5] * 256) + данные [4]);

// Выводим данные на последовательный монитор

Serial.print («Ось вращения X:»); Serial.println (xGyro); Serial.print ("Ось вращения Y:"); Serial.println (yGyro); Serial.print ("Ось вращения Z:"); Serial.println (zGyro); Serial.print («Ускорение по оси X:»); Serial.println (xAccl); Serial.print («Ускорение по оси Y:»); Serial.println (yAccl); Serial.print («Ускорение по оси Z:»); Serial.println (zAccl); Serial.print («Магнитное поле по оси X:»); Serial.println (xMag); Serial.print («Магнитное поле по оси Y:»); Serial.println (yMag); Serial.print ("Магнитное поле по оси Z:"); Serial.println (zMag);

// Выводим данные на веб-сервер

server.sendContent ("

МАГАЗИН DCUBE

www.dcubestore.com

"" LSM9DS0 Мини-модуль датчика I2C

);

server.sendContent ("

Ось X вращения = "+ String (xGyro)); server.sendContent ("

Ось Y вращения = "+ String (yGyro)); server.sendContent ("

Ось Z вращения = "+ String (zGyro)); server.sendContent ("

Ускорение по оси X = "+ String (xAccl)); server.sendContent ("

Ускорение по оси Y = "+ String (yAccl)); server.sendContent ("

Ускорение по оси Z = "+ String (zAccl)); server.sendContent ("

Магнитное поле по оси X = "+ String (xMag)); server.sendContent ("

Магнитное поле по оси Y = "+ String (yMag)); server.sendContent ("

Магнитное поле по оси Z = "+ String (zMag)); delay (1000);}

установка void ()

{// Инициализируем связь I2C как MASTER Wire.begin (2, 14); // Инициализируем последовательную связь, устанавливаем скорость передачи = 115200 Serial.begin (115200);

// Подключаемся к сети Wi-Fi

WiFi.begin (ssid, пароль);

// Ждем подключения

в то время как (WiFi.status ()! = WL_CONNECTED) {задержка (500); Serial.print ("."); } Serial.println (""); Serial.print («Подключено к»); Serial.println (ssid);

// Получаем IP-адрес ESP8266

Serial.print ("IP-адрес:"); Serial.println (WiFi.localIP ());

// Запускаем сервер

server.on ("/", handleroot); server.begin (); Serial.println («HTTP-сервер запущен»); }

пустой цикл ()

{server.handleClient (); }

Шаг 4: Работа с кодом

Работа кода
Работа кода

Теперь загрузите (или выполните git pull) код и откройте его в среде разработки Arduino.

Скомпилируйте и загрузите код и посмотрите результат на Serial Monitor.

Примечание. Перед загрузкой убедитесь, что вы ввели в коде вашу сеть SSID и пароль.

Скопируйте IP-адрес ESP8266 из Serial Monitor и вставьте его в свой веб-браузер. Вы увидите веб-страницу с осью вращения, ускорением и показаниями магнитного поля по 3 осям.

Выходные данные датчика на последовательном мониторе и веб-сервере показаны на рисунке выше.

Шаг 5. Приложения и функции

LSM9DS0 представляет собой комплексную систему с цифровым датчиком линейного ускорения 3D, цифровым датчиком угловой скорости 3D и цифровым магнитным датчиком 3D. Измеряя эти три свойства, вы можете получить много знаний о движении объекта. Измеряя силу и направление магнитного поля Земли с помощью магнитометра, вы можете приблизительно определить свой курс. Акселерометр в вашем телефоне может измерять направление силы тяжести и оценивать ориентацию (портретная, альбомная, плоская и т. Д.). Квадрокоптеры со встроенными гироскопами могут следить за внезапными кренами или качками. Мы можем использовать это в глобальной системе позиционирования (GPS).

Некоторые другие приложения включают внутреннюю навигацию, интеллектуальные пользовательские интерфейсы, расширенное распознавание жестов, игровые устройства и устройства ввода виртуальной реальности и т. Д.

С помощью ESP8266 мы можем увеличить его емкость до большей длины. Мы можем контролировать наши устройства и отслеживать их производительность с наших настольных компьютеров и мобильных устройств. Мы можем хранить и управлять данными в Интернете, а также изучать их в любое время на предмет изменений. Другие приложения включают домашнюю автоматизацию, ячеистую сеть, промышленное беспроводное управление, радионяни, сенсорные сети, носимую электронику, устройства с определением местоположения Wi-Fi, маячки системы определения местоположения Wi-Fi.

Шаг 6. Ресурсы для дальнейшего развития

Для получения дополнительной информации о LSM9DS0 и ESP8266 перейдите по ссылкам ниже:

  • Лист данных датчика LSM9DS0
  • Схема подключения LSM9DS0
  • ESP8266 Лист данных

Рекомендуемые: