- Arduino
0. Arduino UNO
0. Ethernet shield
0. MPU-6050
The wiring of MPU-6050 is
0.
VCC -> 3.3V
0.GND -> GND
0.SCL -> A5
0.SDA -> A4
0.INT -> D2
- UE 0. 1x USRP-X310 with two LFRX daughterboards 0. 1x USRP-N210 with SBX daughterboard 0. Two demodulators and a power splitter
- Simulated eNodeB 0. 1x USRP-X310 with a UBX-160 daughterboard
- Miscellaneous 0. Ethernet switch 0. Ethernet cables 0. SMA cables 0. Two line antennas
The whole setup should look like below.
The wire connections are described in the schematics below.
-
Master 0. Python requirements
pip install -r ./master/requirements.txt
-
Slave - Arduino 0. Arduino IDE
ARDUINO_PATH=~/Arduino sudo apt-get install git make gcc ant openjdk-8-jdk git clone https://github.com/arduino/Arduino.git $ARDUINO_PATH cd $ARDUINO_PATH/build ant build
i2cdevlib
includingI2Cdev
andMPU6050
git clone https://github.com/jrowberg/i2cdevlib.git cp -r ./i2cdevlib/Arduino/{I2Cdev,MPU6050} ~/Arduino/libraries
- Install slave Arduino program via USB
$ARDUINO_PATH/build/linux/work/arduino --upload ./slave/Arduino/main.ino
-
Slave - UE 0.
uhd
0.srsLTE
and build with slave USRP programSRSLTE_PATH=~/srsLTE sudo apt-get install cmake libfftw3-dev libmbedtls-dev libboost-all-dev libconfig++-dev libsctp-dev git clone https://github.com/srsLTE/srsLTE.git $SRSLTE_PATH # add this toolbox mkdir $SRSLTE_PATH/signal-kinetics echo "add_subdirectory(signal-kinetics)" >> $SRSLTE_PATH/CMakeLists.txt mv ./slave/USRP/main.c $SRSLTE_PATH/signal-kinetics # build mkdir $SRSLTE_PATH/build && cd $SRSLTE_PATH/build && cmake .. && make
-
Master Run
./master/main.py
to start listening incoming TCP connections. Only when both Arduino and UE are connected it starts to run MCL algorithm. Usually you would want to reset the Arduino first, and wait for around 10 seconds before starting UE program since it takes around 10 seconds for the MPU to settle down to stable state. -
Slave - Arduino As soon as Arduino board starts/resets, it would try to connect to server via TCP, and we only need to reset Arduino as we start the experiment.
-
Slave - UE and simulated eNodeB Run
./slave/USRP/run.sh
with proper parameters set as described below. In the script, we firstmake
the slave USRP program 0.IS_CUSTOM
:true
for our custom eNodeB, otherwisefalse
0.FREQ
: the frequency we are listening to.739e6
for AT&T stations nearby, and you would probably want to use915e6
, which is with in ISM band for custom eNodeB