Índice:

Orientação do mapa por meio do servidor da Web: 6 etapas
Orientação do mapa por meio do servidor da Web: 6 etapas

Vídeo: Orientação do mapa por meio do servidor da Web: 6 etapas

Vídeo: Orientação do mapa por meio do servidor da Web: 6 etapas
Vídeo: Programador Sênior VS júnior #short #shorts 2024, Novembro
Anonim
Orientação do mapa por meio do servidor da Web
Orientação do mapa por meio do servidor da Web

Internet of Things, (IoT) é um dos tópicos populares no planeta atualmente. E está crescendo rapidamente a cada dia com a Internet. A Internet das Coisas está transformando casas simples em casas inteligentes, onde tudo, desde as luzes até as fechaduras, pode ser controlado a partir de seu smartphone ou desktop. Este é o luxo que todos desejam ter.

Nós sempre brincamos com as ferramentas que temos e continuamos trabalhando para ir para a próxima etapa de nossos limites. Tentamos dar aos nossos clientes uma visão das tecnologias e ideias mais recentes. Para que possa transformar a sua casa em casas elegantes e desfrutar do sabor do luxo sem muito esforço.

Hoje, pensamos em trabalhar em um dos tópicos mais importantes da IoT - Orientação de Mapas Digitais.

Construiremos um servidor web através do qual poderemos monitorar os movimentos de qualquer dispositivo ou coisa (cabe a você, quem você quer espionar;)). Você sempre pode pensar em atualizar este projeto para o próximo nível com algumas modificações e não se esqueça de nos dizer nos comentários abaixo.

Vamos começar então.. !!

Etapa 1: Equipamentos de que precisamos..

Equipamentos de que precisamos.. !!
Equipamentos de que precisamos.. !!
Equipamentos de que precisamos.. !!
Equipamentos de que precisamos.. !!
Equipamentos de que precisamos.. !!
Equipamentos de que precisamos.. !!
Equipamentos de que precisamos.. !!
Equipamentos de que precisamos.. !!

1. Sensor LSM9DS0

O sensor 3 em 1 fabricado pela STMicroelectronics, o LSM9DS0 é um sistema em pacote com um sensor de aceleração linear digital 3D, um sensor digital de taxa angular 3D e um sensor magnético digital 3D. O LSM9DS0 tem uma escala completa de aceleração linear de ± 2g / ± 4g / ± 6g / ± 8g / ± 16g, uma escala completa de campo magnético de ± 2 / ± 4 / ± 8 / ± 12 gauss e uma taxa angular de ± 245 / ± 500 / ± 2000 dps.

2. Adafruit Huzzah ESP8266

O processador ESP8266 da Espressif é um microcontrolador de 80 MHz com front-end WiFi completo (como cliente e ponto de acesso) e pilha TCP / IP com suporte DNS também. O ESP8266 é uma plataforma incrível para o desenvolvimento de aplicativos IoT. O ESP8266 fornece uma plataforma madura para aplicativos de monitoramento e controle usando a Arduino Wire Language e o Arduino IDE.

3. Programador USB ESP8266

seu adaptador host ESP8266 foi projetado especificamente pela Dcube Store para a versão Adafruit Huzzah do ESP8266, permitindo a interface I²C.

4. Cabo de conexão I2C

5. Cabo Mini USB

A fonte de alimentação do cabo mini USB é a escolha ideal para alimentar o Adafruit Huzzah ESP8266.

Etapa 2: Conexões de Hardware

Conexões de Hardware
Conexões de Hardware
Conexões de Hardware
Conexões de Hardware
Conexões de Hardware
Conexões de Hardware

Em geral, fazer conexões é a parte mais fácil deste projeto. Siga as instruções e imagens e não terá problemas.

Em primeiro lugar, pegue o Adafruit Huzzah ESP8266 e coloque o programador USB (com porta I²C para dentro) nele. Pressione o Programador USB suavemente e concluiremos essa etapa com a maior facilidade (veja a imagem acima).

Conexão do Sensor e Adafruit Huzzah ESP8266 Pegue o sensor e conecte o cabo I²C com ele. Para a operação adequada deste cabo, lembre-se de que a saída I²C SEMPRE se conecta à entrada I²C. O mesmo teve que ser seguido para o Adafruit Huzzah ESP8266 com o Programador USB montado sobre ele (veja a imagem acima).

Com a ajuda do Programador USB ESP8266, é muito fácil programar o ESP. Tudo o que você precisa fazer é conectar o sensor ao programador USB e pronto. Preferimos usar este adaptador porque torna muito mais fácil conectar o hardware. Não se preocupe em soldar os pinos do ESP ao sensor ou ler os diagramas de pinos e a ficha técnica. Podemos usar e trabalhar em vários sensores simultaneamente, você só precisa fazer uma corrente. Sem esses programadores USB plug and play, há muito risco de fazer a conexão errada. Uma fiação ruim pode matar seu wi-fi e também seu sensor.

Observação: o fio marrom deve sempre seguir a conexão de aterramento (GND) entre a saída de um dispositivo e a entrada de outro dispositivo.

Alimentação do circuito

Conecte o cabo Mini USB no conector de alimentação do Adafruit Huzzah ESP8266. Ilumine e voila, estamos prontos para ir!

Etapa 3: Código

Código
Código

O código ESP para o sensor Adafruit Huzzah ESP8266 e LSM9DS0 está disponível em nosso repositório github.

Antes de prosseguir com o código, certifique-se de ler as instruções fornecidas no arquivo Leiame e configurar seu Adafruit Huzzah ESP8266 de acordo com ele. A configuração do ESP levará apenas 5 minutos.

O código é longo, mas está na forma mais simples que você pode imaginar e você não terá dificuldade em entendê-lo.

Para sua conveniência, você também pode copiar o código ESP de trabalho para este sensor aqui:

// Distribuído com licença de livre arbítrio.// Use-o como quiser, com ou sem lucro, desde que se enquadre nas licenças das suas obras associadas. // LSM9DSO // Este código foi desenvolvido para funcionar com o Mini Módulo TCS3414_I2CS I2C disponível em dcubestore.com.

#incluir

#incluir

#incluir

#incluir

// O endereço LSM9DSO Gyro I2C é 6A (106)

#define Addr_Gyro 0x6A // LSM9DSO O endereço Accl I2C é 1E (30) #define Addr_Accl 0x1E

const char * ssid = "seu ssid";

const char * password = "sua senha"; int xGyro, yGyro, zGyro, xAccl, yAccl, zAccl, xMag, yMag, zMag;

Servidor ESP8266WebServer (80);

void handleroot ()

{dados internos não assinados [6];

// Iniciar a transmissão I2C

Wire.beginTransmission (Addr_Gyro); // Seleciona o registro de controle 1 Wire.write (0x20); // Taxa de dados = 95 Hz, X, Y, eixo Z habilitado, ligue Wire.write (0x0F); // Parar a transmissão I2C Wire.endTransmission ();

// Iniciar a transmissão I2C

Wire.beginTransmission (Addr_Gyro); // Seleciona o registro de controle 4 Wire.write (0x23); // 2000 dps em escala real, atualização contínua Wire.write (0x30); // Parar a transmissão I2C Wire.endTransmission ();

// Iniciar a transmissão I2C

Wire.beginTransmission (Addr_Accl); // Seleciona o registro de controle 1 Wire.write (0x20); // Taxa de dados de aceleração = 100 Hz, X, Y, eixo Z habilitado, ligue Wire.write (0x67); // Pare a transmissão I2C no dispositivo Wire.endTransmission ();

// Iniciar a transmissão I2C

Wire.beginTransmission (Addr_Accl); // Seleciona o registro de controle 2 Wire.write (0x21); // Seleção de escala completa +/- 16g Wire.write (0x20); // Parar a transmissão I2C Wire.endTransmission ();

// Iniciar a transmissão I2C

Wire.beginTransmission (Addr_Accl); // Seleciona o registro de controle 5 Wire.write (0x24); // Alta resolução magnética, taxa de dados de saída = 50Hz Wire.write (0x70); // Parar a transmissão I2C Wire.endTransmission ();

// Iniciar a transmissão I2C

Wire.beginTransmission (Addr_Accl); // Seleciona o registro de controle 6 Wire.write (0x25); // Escala completa magnética +/- 12 gauss Wire.write (0x60); // Parar a transmissão I2C Wire.endTransmission ();

// Iniciar a transmissão I2C

Wire.beginTransmission (Addr_Accl); // Seleciona o registro de controle 7 Wire.write (0x26); // Modo normal, modo de conversão magnética contínua Wire.write (0x00); // Parar a transmissão I2C Wire.endTransmission (); atraso (300);

for (int i = 0; i <6; i ++) {// Iniciar I2C Transmission Wire.beginTransmission (Addr_Gyro); // Selecione o registro de dados Wire.write ((40 + i)); // Parar a transmissão I2C Wire.endTransmission ();

// Solicitar 1 byte de dados

Wire.requestFrom (Addr_Gyro, 1);

// Leia 6 bytes de dados

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

// Converta os dados

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

for (int i = 0; i <6; i ++) {// Iniciar I2C Transmission Wire.beginTransmission (Addr_Accl); // Selecione o registro de dados Wire.write ((40 + i)); // Parar a transmissão I2C Wire.endTransmission ();

// Solicitar 1 byte de dados

Wire.requestFrom (Addr_Accl, 1);

// Leia 6 bytes de dados

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

// Converta os dados

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

for (int i = 0; i <6; i ++) {// Iniciar I2C Transmission Wire.beginTransmission (Addr_Accl); // Selecione o registro de dados Wire.write ((8 + i)); // Parar a transmissão I2C Wire.endTransmission ();

// Solicitar 1 byte de dados

Wire.requestFrom (Addr_Accl, 1);

// Leia 6 bytes de dados

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

// Converta os dados

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

// Dados de saída para monitor serial

Serial.print ("Eixo X de rotação:"); Serial.println (xGyro); Serial.print ("Eixo Y de rotação:"); Serial.println (yGyro); Serial.print ("Eixo Z de rotação:"); Serial.println (zGyro); Serial.print ("Aceleração no eixo X:"); Serial.println (xAccl); Serial.print ("Aceleração no eixo Y:"); Serial.println (yAccl); Serial.print ("Aceleração no eixo Z:"); Serial.println (zAccl); Serial.print ("Campo magnético no eixo X:"); Serial.println (xMag); Serial.print ("Campo magnético no eixo Y:"); Serial.println (yMag); Serial.print ("Arquivo magnético no eixo Z:"); Serial.println (zMag);

// Saída de dados para o servidor web

server.sendContent ("

DCUBE STORE

www.dcubestore.com

"" Mini Módulo Sensor I2C LSM9DS0

);

server.sendContent ("

Eixo X de rotação = "+ String (xGyro)); server.sendContent ("

Eixo Y de rotação = "+ String (yGyro)); server.sendContent ("

Eixo Z de rotação = "+ String (zGyro)); server.sendContent ("

Aceleração no eixo X = "+ String (xAccl)); server.sendContent ("

Aceleração no eixo Y = "+ String (yAccl)); server.sendContent ("

Aceleração no eixo Z = "+ String (zAccl)); server.sendContent ("

Arquivo magnético no eixo X = "+ String (xMag)); server.sendContent ("

Arquivo magnético no eixo Y = "+ String (yMag)); server.sendContent ("

Arquivo magnético no eixo Z = "+ String (zMag)); atraso (1000);}

void setup ()

{// Inicializar a comunicação I2C como MASTER Wire.begin (2, 14); // Inicializar a comunicação serial, definir a taxa de transmissão = 115200 Serial.begin (115200);

// Conecte-se à rede WiFi

WiFi.begin (ssid, senha);

// Aguarde a conexão

while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print ("."); } Serial.println (""); Serial.print ("Conectado a"); Serial.println (ssid);

// Obtenha o endereço IP de ESP8266

Serial.print ("endereço IP:"); Serial.println (WiFi.localIP ());

// Inicie o servidor

server.on ("/", base manual); server.begin (); Serial.println ("servidor HTTP iniciado"); }

void loop ()

{server.handleClient (); }

Etapa 4: Funcionamento do Código

Trabalho de Código
Trabalho de Código

Agora, baixe (ou git pull) o código e abra-o no IDE do Arduino.

Compile e carregue o código e veja a saída no Serial Monitor.

Nota: Antes de fazer o upload, certifique-se de inserir sua rede SSID e senha no código.

Copie o endereço IP do ESP8266 do Monitor Serial e cole-o no seu navegador. Você verá uma página da web com eixo de rotação, aceleração e leitura do campo magnético nos 3 eixos.

As saídas do sensor no Serial Monitor e no Web Server são mostradas na imagem acima.

Etapa 5: aplicativos e recursos

O LSM9DS0 é um pacote de sistema com um sensor 3D de aceleração linear digital, um sensor 3D digital de taxa angular e um sensor 3D magnético digital. Ao medir essas três propriedades, você pode obter uma grande quantidade de conhecimento sobre o movimento de um objeto. Medindo a força e a direção do campo magnético da Terra com um magnetômetro, você pode aproximar sua direção. Um acelerômetro em seu telefone pode medir a direção da força da gravidade e estimar a orientação (retrato, paisagem, plano, etc.). Quadricópteros com giroscópios integrados podem detectar oscilações ou inclinações repentinas. Podemos usar isso no Sistema de Posicionamento Global (GPS).

Alguns outros aplicativos incluem navegação interna, interfaces de usuário inteligentes, reconhecimento avançado de gestos, dispositivos de entrada de jogos e realidade virtual, etc.

Com a ajuda do ESP8266, podemos aumentar sua capacidade para um comprimento maior. Podemos controlar nossos aparelhos e monitorar o desempenho de nossos desktops e dispositivos móveis. Podemos armazenar e gerenciar os dados online e estudá-los a qualquer momento para modificações. Mais aplicativos incluem automação residencial, rede de malha, controle sem fio industrial, monitores do bebê, redes de sensores, eletrônicos vestíveis, dispositivos com reconhecimento de localização Wi-Fi, sinalizadores de sistema de posição Wi-Fi.

Etapa 6: Recursos para ir mais longe

Para obter mais informações sobre LSM9DS0 e ESP8266, verifique os links abaixo:

  • Folha de dados do sensor LSM9DS0
  • Diagrama de fiação LSM9DS0
  • Folha de dados ESP8266

Recomendado: