Skip to content

ivanscode/sd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Purdue ECE 477 - Senior Design - Team 13

Dynamic Sensor Array

This project aims to create a cost-effective solution to mapping interior spaces of unknown configuration using n amount of nodes that can be laid out to cover as much of interior space as needed. The mapping is for a top-down 2D representation of a room and can be used in various applications like real estate and industrial applications.

The original aim was to have modularity of sensors on board that could map various environment variables like temperature as the mapping was being done.

Table of Contents

Structure

The project is made up of the following general components:

  1. Node(s)
  2. Server
  3. SLAM

Nodes

Nodes

Figure 1 Nodes completed for the project.

These are individually programmable devices that can operate alone or in conjuction with other nodes. The packaging holds the battery and hardware along with the distance measuring sensors.

Server

This can be anything that can run python and connect to Wi-Fi. While developing this project, a laptop was used to connect and manage deployed nodes and process incoming data using SLAM. In terms of using Wi-Fi, either a local network or a hotspot from the laptop should suffice as the only requirement is having the nodes and server be on the same network. The server can also utilize the frontend environment built with Flask to avoid using the terminal.

SLAM

The bulk of the software in this repository aside from ESP code is the SLAM processing code. This takes takes the distance measurement data from the nodes and builds and outputs a 2D layout of the mapped space.

Map

Figure 2 Sample map output from SLAM using data collected by three nodes.

Hardware

Components

Component Purpose
ESP32-WROOM-32 Microcontroller - Connection to server
DWM1000 Distance measurements between nodes
DRV8834 Stepper motor driver
MPM3601 3V buck converter
UBEC 5V (Adafruit) 5V buck converter
TFMini Distance measurements to obstacles

PCB

PCB

Figure 3 A revision 2 board. Note: revision 3 has same layout, but different GPIO pins are used.

Packaging

The packaging for the nodes was designed by Tanner Andrulis and was printed using PLA.

Programming

ESP-IDF

Programming requires the use of a USB-Serial cable and can be found on Adafruit as an example.

  1. Setup ESP-IDF on your machine. Instructions can be found here.
  2. Plug in the cable into your machine and wire the orange, yellow, and black pins to the board in that order to the programming header.
  3. Power on the node and put it in flash mode by holding BOOT and pressing RST. Let go of both.
  4. Run idf.py flash (optionally add -p PORT to specify which port you're using).
  5. Wait until completion and press RST.

Frontend - Optional

Flask

The frontend is setup with Flask working as the lightweight server. Because it's written in Python, we could easily reference our existing scripts that communicated with the nodes and integrate them with Flask and by extension, the user interface.

Dependencies

For SLAM

scipy, numpy, pygame

About

Purdue ECE 477 Senior Design Project - Dynamic Sensor Array. Fall 2020

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •