Pular para o conteúdo principal

Wio Tracker - GPS, BT3.0, GSM, Compatível com Arduino

O que é o Wio Tracker? O Wio Tracker é uma placa de desenvolvimento compatível com Arduino que ajuda você a rastrear qualquer coisa em movimento no planeta. Ao integrar GSM&GPRS assim como GPS&BeiDou em uma única placa, ele fornece uma solução tudo‑em‑um para o seu projeto de IoT ao ar livre.

Se você está acompanhando as últimas notícias sobre Low-Power Wide-Area Network (LPWAN), talvez saiba que 2016 é um ano especial porque surgiram novas tecnologias como LoRa e Sigfox, que impulsionaram notavelmente o desenvolvimento de WAN. O Wio Tracker tem semelhanças com LoRa e Sigfox, mas também é bastante diferente. Ele é mais adequado para rastreamento de movimentação ao ar livre e situações que exigem alta frequência de interação com o cliente e volume médio de dados, por exemplo bicicleta compartilhada, localização em logística, rastreamento de animais de estimação.

Comparado à solução tradicional de rastreamento por GPS, o Wio Tracker da Seeed é muito mais fácil de usar e personalizar para o mercado de IoT em rápida mudança. Como uma placa de desenvolvimento Grove amigável ao usuário, a aparência do Wio Tracker pode lembrar você do Wio Link, outro produto inicial da Seeed. Então você também pode encontrar 6 conectores Grove na placa. Como é uma placa compatível com Arduino, os usuários podem usar o Wio Tracker diretamente com a Arduino IDE.

Por que chamamos o Wio Tracker de solução? Porque ele realmente não é apenas uma placa. Na SeeedStudio, temos a capacidade de ajudar o cliente a personalizar o Wio Tracker para seu próprio projeto e concluir o projeto até a produção em massa. Como o Wio Tracker usa módulo padrão que já está em produção em massa, estamos prontos para produção em massa mesmo quando o cliente ainda está na fase de prototipagem.

Nós já preparamos tudo, a última coisa de que precisamos são seus projetos criativos, então se você estiver desenvolvendo um projeto de rastreamento de IoT ao ar livre, não hesite em usar o Wio Tracker!

cuidado

Sempre conecte uma bateria Lipo de 3,7 V caso a alimentação via USB não seja suficiente.

Recursos

  • Motor Multi-GNSS para GPS e BeiDou combinados, localização de maior precisão
  • Tecnologia EPO™, fornecendo Extended Prediction Orbit previsto para acelerar o TTFF sem necessidade de servidor extra
  • Com base em dados EPO™, a função QuecFastFix™ Online reduz ainda mais o TTFF em cold start, tornando o TTFF de cold start comparável ao de hot start
  • Modo GLP (GNSS Low Power), 40% do consumo de energia do modo normal e ligeiramente menor precisão
  • Period Mode, também reduz o consumo de energia controlando o tempo de suspensão
  • Always Locate™ Technology, um algoritmo inteligente para economia de energia
  • Easy™ (Embedded Assist System) Technology, predição de órbita auto‑gerada para correção de posicionamento instantânea, reduzindo o Time To First Fix (TTFF)
  • LOCUS™ Technology, solução nativa de registrador de dados de navegação sem necessidade de host e memória flash externa
  • Comando AT: GSM 07.07, 07.05 e comando AT aprimorado
  • Bluetooth 3.0 com SPP e HFP-AG
  • 6 conectores Grove
  • Soquete 2 em 1 para Nano SIM e cartão TF
  • Compatível com Arduino IDE
  • Baixo consumo de energia e tamanho reduzido

Módulo Quectel MC20

  • Tamanho ultracompacto: 18,7 × 16,0 × 2,1 mm
  • Constelação de navegação múltipla: GPS/ BeiDou/ QZSS
  • Canais do receptor GNSS: 99 canais de aquisição/ 33 canais de rastreamento
  • Poderosas funções AGPS: Autonomous AGPS EASY™/ Offline AGPS EPO™/ Online AGPS QuecFastFix
  • LNA integrado para melhor sensibilidade GNSS (-167dBm@Tracking): permite usar antena GNSS passiva sem necessidade de LNA extra
  • Recursos GNSS aprimorados: comando SDK/ AIC/ LOCUS/ GLP
  • GSM quad-band: 850/900/1800/1900MHz
  • Múltiplos protocolos de internet: TCP/ UDP/ PPP/ HTTP/ FTP/ SSL
  • Suporta Voz, SMS, QuecFOTATM, DSSS, OpenCPU
  • Suporta Bluetooth V3.0: perfis SPP & HFP-AG
cuidado

Diferente da maioria das placas Arduino & Genuino, o Wio Tracker funciona em 3,3 V. A tensão máxima que os pinos de I/O podem suportar é 3,3 V. Aplicar tensões maiores que 3,3 V em qualquer pino de I/O pode danificar a placa.

Especificação

ItemFunçãoValor
MicrocontroladorProcessadorATSAMD21G18A-MU, ARM Cortex-M0+, 48MHz
Memória Flash256KB
SRAM32KB
Tensão de Operação3,3V
Corrente DC por pino de I/O7 mA
Frequência de Clock48 MHz
GSM/GPRSGSM850/900/1800/1900MHz, Classe 4 (2W @850/900MHz), Classe 1 (1W @1800/1900MHz)
Comando AT: GSM 07.07, 07.05 e comando AT aprimorado
Baixo consumo de energia: 1,2mA@DRX=5
GPRSClasse Multi-slot GPRS 12: Down até 85,6kbps, Up até 85,6kbps
Protocolo: TCP/UDP/FTP/HTTP/PPP/SSL
SMSMensagem ponto a ponto, transmissão de SMS, modo Texto e PDU
ÁudioCancelamento de eco, eliminação de ruído
BluetoothBluetooth 3.0: SPP, HFP-AG
GNSSSistemaGPS L1 1575,42MHz, BeiDou B1 1561,10MHz
Precisão<2,5 m CEP
TecnologiaEASY/LOCUS/AlwaysLocate/EPO/GLP/AIC
PeriféricoGrove2 x Porta Digital Grove
2 x Porta Analógica
1 x UART
1 x I2C
AntenaAntena GSM
Antena Bluetooth
Antena GNSS
OutrosUSB: Alimentação e envio de programa
Conector JST 1.0 para bateria
Conector de Áudio 3,5mm
Botão de Alimentação GSM, Botão de Reset
1 x LED RGB de Usuário SK6812
Interface para Alto-falante
Soquete 2 em 1 para Nano SIM e cartão TF
TamanhoComprimento54,7mm
Largura48,2mm
Peso

Ideias de Aplicação

  • Transporte inteligente
  • Rastreador de animais de estimação
  • Equipamentos para esportes ao ar livre
  • Gravador de condução
  • Dispositivo vestível
  • Segurança patrimonial
dica

Use módulos Grove para expandir sua aplicação

Há 6 conectores Grove na placa. Se esta é a primeira vez que você ouve falar de Grove, por favor veja Grove System para mais detalhes. Em resumo, Groves são centenas de sensores em formato padrão, que consistem em sensores, atuadores, displays e também comunicação.

Visão Geral de Hardware

dica

Se você quiser usar o conector Grove on-board, use digitalWrite(12, HIGH) para ligar o 3V3_B. Caso contrário, você não poderá fornecer energia aos módulos Grove.

Mapa de Pinos

Nome do PinoInterrupção ExternaPWMEntrada AnalógicaSaída AnalógicaFunção
RXSIMSIMGrove UART
TXSIMSIMGrove UART
D2SIMSIMGrove Digital
D3SIMSIMGrove Digital
D4SIMGrove Digital
D5SIMSIMGrove Digital
D6SIMControle de LED do Usuário
D7SIMAlimentação do MC20
D10SIMSIMLED do Usuário
D11SIMSIMVerificar Fone de Ouvido
D12SIMSIMControle de Alimentação Grove
D13SIMSIMBotão de Alimentação GSM
SDASIMGrove I2C
SCLSIMGrove I2C
A0SIMSIMSIMGrove Analógico
A1SIMSIMSIMGrove Analógico
A2SIMSIMSIMGrove Analógico
A3SIMSIMSIMGrove Analógico
A4SIMSIMVerificar bateria
nota

Todos os pinos podem atuar como Entrada e Saída Digital

Primeiros Passos - Arduino IDE

nota

Este capítulo é baseado em Win10 e Arduino IDE v1.6.0

Primeiro você precisa instalar a versão mais recente da Arduino IDE e ADICIONAR Seeeduino SAMD à sua Arduino IDE.

Instalar o Driver (Para Windows)

Ao inserir a placa pela primeira vez, você deverá obter um dispositivo USB COM chamado Wio Tracker que precisa de instalação de driver. Clique aqui para baixar o driver para a placa.

Para garantir que o driver foi instalado com sucesso, abra o Gerenciador de Dispositivos e verifique se Wio Tracker existe.

Instalar a biblioteca do Wio Tracker (Para Windows, Linux e Mac)

Clique aqui para baixar a biblioteca (arquivo zip) do Wio Tracker e importe a biblioteca zip para sua Arduino IDE. Se você é novo nisso, clique aqui para mais informações.

Diferente de outras placas, há um LED de Usuário SK6812 no Wio Tracker, que é uma fonte de luz LED de controle inteligente e semelhante ao ws2812b. Agora vamos enviar nosso primeiro demo - Blink para o Wio Tracker, que apresentará como usar o LED de Usuário.

Primeiro, precisamos instalar a Adafruit NeoPixel Library (para LED ws2812b) e importá-la para a Arduino IDE.

Em seguida, abra sua Arduino IDE e clique em File > Examples > MC20_GPS_Traker > Blink para abrir o sketch ou copie o código abaixo:

#include "MC20_Arduino_Interface.h"
#include <Adafruit_NeoPixel.h>

#define RGBPOWER 6 //To use User LED, D6 should be HIGH.
#define RGBPIN 10
#define LED_NUM 1

Adafruit_NeoPixel pixels = Adafruit_NeoPixel(LED_NUM, RGBPIN, NEO_GRB + NEO_KHZ800);

void setup() {
pinMode(RGBPOWER, OUTPUT);
digitalWrite(RGBPOWER, HIGH);
pixels.begin(); // This initializes the NeoPixel library.
}

void loop() {

// For a set of NeoPixels the first NeoPixel is 0, second is 1, all the way up to the count of pixels minus one.
// pixels.Color takes RGB values, from 0,0,0 up to 255,255,255
pixels.setPixelColor(0, pixels.Color(0,0,100)); // Moderately bright blue color.
pixels.show(); // This sends the updated pixel color to the hardware.
delay(1000); // Wait for 1 second
pixels.setPixelColor(0, pixels.Color(0,0,0)); // Turn off the led.
pixels.show();
delay(1000);
}

E então,

  • Clique em Tools > Board > Wio Tracker
  • Clique em Tools > Port para selecionar uma porta correta. (Não escolha COM1)

Em seguida, clique no botão Upload no canto superior esquerdo da IDE do Arduino; alguns segundos depois o sketch será enviado com sucesso.

Se o envio for bem-sucedido, você deverá ver algumas informações em vermelho e verá o LED de usuário piscando em azul.

Verificar bateria

O Wio Tracker é projetado para rastrear coisas em movimento ao ar livre. Assim, você pode alimentar a placa por meio de uma bateria Lipo de 3,7 V com conector JST1.0 e verificar facilmente a tensão da sua bateria.

cuidado

Certifique-se de que os polos positivo e negativo da sua bateria estejam conectados corretamente, caso contrário a placa poderá ser danificada.

O pino de status da bateria foi conectado ao A4, o que permite medir a tensão da bateria via código.

Abra sua IDE do Arduino e clique em File > Examples > MC20_GPS_Traker > Check_Battery para abrir o sketch ou copie o código abaixo:

#include "MC20_Arduino_Interface.h"

const int pin_battery_voltage = A4;

void setup() {
SerialUSB.begin(115200);
}

void loop() {

int a = analogRead(pin_battery_voltage);
float v = a/1023.0*3.3*2.0; // there's an 10M and 10M resistor divider
SerialUSB.print("The voltage of battery is ");
SerialUSB.print(v, 2);
SerialUSB.println(" V");
delay(1000);
}

Use módulos Grove para expandir sua aplicação

Para usar 6 conectores Grove no Wio Tracker, precisamos usar digitalWrite(12, HIGH) para ligar o 3V3_B e alimentar os módulos Grove (D12 é definido como LOW por padrão para reduzir o consumo).

  • O código a seguir mostra como usar módulos Grove analógicos e digitais:

Abra sua IDE do Arduino e clique em File > Examples > MC20_GPS_Traker > Button_LightSensor para abrir o sketch ou copie o código abaixo:

#include "MC20_Arduino_Interface.h"

#define GrovePowerPin 12
#define LightSensorPin A0
#define ButtonPin 2


void setup() {
SerialUSB.begin(115200);
pinMode(ButtonPin, INPUT);
pinMode(GrovePowerPin, OUTPUT);
// write high to grove power pin to enable all the Grove ports,
// or only Grove D2 port is usable.
digitalWrite(GrovePowerPin, HIGH);
}

void loop() {
// print analog data when the button is pressed
if (digitalRead(ButtonPin)) {
SerialUSB.print("The value of light sensor:");
SerialUSB.println(analogRead(LightSensorPin));
}
delay(500);
}
  • O código a seguir mostra como usar a porta Grove UART:
#define GrovePowerPin   12

void setup() {
pinMode(GrovePowerPin, OUTPUT);
digitalWrite(GrovePowerPin, HIGH); //power Grove
//SerialUSB.begin(115200);
SerialDBG.begin(115200); //set Grove UART baud rate 115200
}

void loop() {
//SerialUSB.println("Grove UART is sending message");
SerialDBG.println("This is Grove UART");
delay(1000);
}

Use USB To Uart para ler os dados da porta Grove UART.

cuidado

Se tanto SerialUSB quanto SerialDBG forem usados no código, abra a porta COM do SerialUSB ao utilizá-lo, caso contrário o SerialDBG não funcionará.

GNSS

O módulo MC20 fornece o conjunto de comandos AT para que o MCU se comunique com seus módulos GSM/GPRS, GNSS e Bluetooth.

E nós instalamos uma biblioteca bem escrita para o Wio GPS; para aplicações simples você nem precisa saber muito sobre como usar os comandos AT, que são complexos e difíceis de ler.

O exemplo a seguir mostra como ler longitude e latitude e imprimi-las no Serial Monitor. Observe que o Wio Tracker deve ser colocado ao ar livre para obter sinal de GPS. E este exemplo precisa de um cartão SIM no Wio Tracker; as imagens a seguir mostram como instalar/desinstalar um cartão SIM:

Abra sua IDE do Arduino e clique em File > Examples > MC20_GPS_Traker > MC20_GNSS > GNSS_Show_Coordinate para abrir o sketch ou copie o código abaixo:

#include "MC20_Common.h"
#include "MC20_Arduino_Interface.h"
#include "MC20_GNSS.h"


GNSS gnss = GNSS();

void setup() {
SerialUSB.begin(115200);
// while(!SerialUSB);

gnss.Power_On();
SerialUSB.println("\n\rPower On!");

while(!gnss.open_GNSS()){
delay(1000);
}

SerialUSB.println("Open GNSS OK.");
}

void loop() {
// gnss.dataFlowMode();

if(gnss.getCoordinate()){
SerialUSB.print("GNSS: ");
SerialUSB.print(gnss.longitude, 6);
SerialUSB.print(",");
SerialUSB.println(gnss.latitude, 6);
} else{
SerialUSB.println("Error!");
}

delay(1000);
}

Leitura de Mensagens SMS

O exemplo a seguir mostra como ler mensagens SMS no Wio Tracker. É necessário um cartão Nano SIM neste exemplo.

Abra sua IDE do Arduino e clique em File > Examples > MC20_GPS_Traker > MC20_SMSRead para abrir o sketch ou copie o código abaixo:

#include "MC20_Common.h"
#include "MC20_Arduino_Interface.h"

#define RGBPIN 10

char phone[32];
char dateTime[32];
char buffer[64];
int i = 0;
char *s = NULL;
int inComing = 0;

GPSTracker gpsTracker = GPSTracker();

void setup() {
// MC20_init();
pinMode(RGBPIN, OUTPUT);
digitalWrite(RGBPIN, LOW);
SerialUSB.begin(115200);
// while(!SerialUSB);

gpsTracker.Power_On();
SerialUSB.println("Power On!");

// gpsTracker.deleteSMS(1);

}

void loop() {

if(MC20_check_readable()){
inComing = 1;
}else{
delay(1000);
}

if(1 == inComing){
MC20_read_buffer(buffer, 64);
SerialUSB.println(buffer);

if(NULL != (s = strstr(buffer,"+CMTI: \"SM\""))) { //SMS: $$+CMTI: "SM",24$$
char message[128];
int messageIndex = atoi(s+12);
gpsTracker.readSMS(messageIndex, message,128);
SerialUSB.print("Recv SMS: ");
SerialUSB.println(message);
}
MC20_clean_buffer(buffer,64);
inComing = 0;
}

}

Conexão Bluetooth

Também é muito fácil conectar ao seu dispositivo Bluetooth no Wio Tracker. Abra sua IDE do Arduino e clique em File > Examples > MC20_GPS_Traker > MC20_BlueTooth > BT_FastConnect para abrir o sketch ou copie o código abaixo.

Depois altere o deviceName do seu dispositivo Bluetooth; o Wio Tracker irá conectá‑lo automaticamente.

#include "MC20_Common.h"
#include "MC20_BT.h"

// GPSTracker gpsTracker = GPSTracker();
BlueTooth bt = BlueTooth();
int bt_state = -1;
char *deviceName = "N-612";


void setup() {
SerialUSB.begin(115200);
while(!SerialUSB);

bt.Power_On();
SerialUSB.println("\n\rMC20 power On!");
bt.BTPowerOn();
SerialUSB.println("\n\rBT power On!");

while(IDLE != (bt_state = bt.getBTState())){
SerialUSB.print("State: ");
SerialUSB.println(bt_state);
delay(1000);
}

bt.BTFastConnect(deviceName, HFG_PROFILE);
}

void loop() {
/* Debug */
if(SerialUSB.available()){
serialMC20.write(SerialUSB.read());
}
if(serialMC20.available()){
SerialUSB.write(serialMC20.read());
}
}

Cartão SD

  • Passo 1. Conecte o cartão SD à placa Wio GPS.
  • Passo 2. Use o cabo USB para conectar a placa Wio GPS ao PC.
  • Passo 3. Abra sua IDE do Arduino, selecione Tools -> Board -> Wio GPS board.
  • Passo 4. Clique em File > Examples > Seeed_Wio_GPS_Board\SD_Card_Test_DumpFile para abrir o sketch ou copie o código abaixo.
  • Passo 5. Envie o código para a placa Wio GPS; ele mostra como ler um arquivo do cartão SD usando a biblioteca SD e enviá‑lo pela porta serial.
/*
SD card file dump

This example shows how to read a file from the SD card using the
SD library and send it over the serial port.

The circuit:
* SD card attached to SPI bus as follows:
** MOSI - pin 11
** MISO - pin 12
** CLK - pin 13
** CS - pin 4 (for MKRZero SD: SDCARD_SS_PIN)

created 22 December 2010
by Limor Fried
modified 9 Apr 2012
by Tom Igoe

This example code is in the public domain.

*/

#include <SPI.h>
#include <SD.h>

const int chipSelect = 4;
char* fileName = "gps.txt";

void setup() {
// Open serial communications and wait for port to open:
SerialUSB.begin(115200);
while (!SerialUSB) {
; // wait for serialUSB port to connect. Needed for native USB port only
}


SerialUSB.print("Initializing SD card...");

// see if the card is present and can be initialized:
if (!SD.begin(chipSelect)) {
SerialUSB.println("Card failed, or not present");
// don't do anything more:
return;
}
SerialUSB.println("card initialized.");

// open the file. note that only one file can be open at a time,
// so you have to close this one before opening another.
File dataFile = SD.open(fileName);

// if the file is available, write to it:
if (dataFile) {
while (dataFile.available()) {
SerialUSB.write(dataFile.read());
}
dataFile.close();
}
// if the file isn't open, pop up an error:
else {
SerialUSB.println("error opening datalog.txt");
}
}

void loop() {
}

Visualizador online do esquemático

Recursos

Suporte Técnico e Discussão de Produtos

Se você tiver qualquer problema técnico, envie-o para o nosso forum. Obrigado por escolher nossos produtos! Estamos aqui para oferecer diferentes tipos de suporte e garantir que sua experiência com nossos produtos seja o mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.

Loading Comments...