Anchor (esp32/uwb_anchor): - DW1000Ranging library (200m range, MODE_LONGDATA_RANGE_ACCURACY) - Unique addresses per anchor (anchor0/anchor1 build envs) - +RANGE output: anchor_id, tag_addr, range_mm, rssi - ESP-NOW receiver: forwards tag packets + priority E-STOP to Jetson - AT+ID? command Tag with Display (esp32/uwb_tag): - DW1000Ranging as tag, auto-discovers anchors - SSD1306 OLED: big distance, per-anchor ranges, RSSI bars, link status - ESP-NOW broadcast: range/heartbeat/estop packets - E-Stop on GPIO 0 (BOOT button), 10Hz TX while held - Display at 5Hz, ranging driven by DW1000Ranging.loop() Shared: - lib/DW1000/ extracted from mf_DW1000.zip (Makerfabs fork) - lib_extra_dirs for PlatformIO to find local library
65 lines
2.1 KiB
C++
65 lines
2.1 KiB
C++
/*
|
|
* Copyright (c) 2015 by Thomas Trojer <thomas@trojer.net>
|
|
* Decawave DW1000 library for arduino.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*
|
|
* @file BasicConnectivityTest.ino
|
|
* Use this to test connectivity with your DW1000 from Arduino.
|
|
* It performs an arbitrary setup of the chip and prints some information.
|
|
*
|
|
* @todo
|
|
* - move strings to flash (less RAM consumption)
|
|
* - make real check of connection (e.g. change some values on DW1000 and verify)
|
|
*/
|
|
|
|
#include <SPI.h>
|
|
#include <DW1000.h>
|
|
|
|
// connection pins
|
|
const uint8_t PIN_RST = 9; // reset pin
|
|
const uint8_t PIN_IRQ = 2; // irq pin
|
|
const uint8_t PIN_SS = SS; // spi select pin
|
|
|
|
void setup() {
|
|
// DEBUG monitoring
|
|
Serial.begin(9600);
|
|
// initialize the driver
|
|
DW1000.begin(PIN_IRQ, PIN_RST);
|
|
DW1000.select(PIN_SS);
|
|
Serial.println(F("DW1000 initialized ..."));
|
|
// general configuration
|
|
DW1000.newConfiguration();
|
|
DW1000.setDeviceAddress(5);
|
|
DW1000.setNetworkId(10);
|
|
DW1000.commitConfiguration();
|
|
Serial.println(F("Committed configuration ..."));
|
|
// wait a bit
|
|
delay(1000);
|
|
}
|
|
|
|
void loop() {
|
|
// DEBUG chip info and registers pretty printed
|
|
char msg[128];
|
|
DW1000.getPrintableDeviceIdentifier(msg);
|
|
Serial.print("Device ID: "); Serial.println(msg);
|
|
DW1000.getPrintableExtendedUniqueIdentifier(msg);
|
|
Serial.print("Unique ID: "); Serial.println(msg);
|
|
DW1000.getPrintableNetworkIdAndShortAddress(msg);
|
|
Serial.print("Network ID & Device Address: "); Serial.println(msg);
|
|
DW1000.getPrintableDeviceMode(msg);
|
|
Serial.print("Device mode: "); Serial.println(msg);
|
|
// wait a bit
|
|
delay(10000);
|
|
}
|