Skip to content

industrial-optimization-group/DesdeoInterface

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Physical interface for desdeo framework

A modular physical interface for preference input from decision-maker for solving multiobjective optimization problems and decision making.

Setup libraries

  • From desdeo_interface/ArduinoFiles copy all modules (folders with no sub folders, i.e. CRC8) except UniversalNode to the arduino libraries folder.
    • (TODO: Figure out relative imports)
    • If modifying these files, you must copy the modified file again to the libraries folder (relative would handle this).
  • From the arduino library manager install PJON and ADS1X15.
  • To install webusb follow the installation guide: https://github.com/webusb/arduino
    • Uploading webusb code requires upgrading device USB 2.0 to USB 2.1. This requires changing a line in a header file.
    • (windows) After the upgrade one must include the webusb library in the sketch. Uploading a sketch without the library will cause windows to not recognize the device. To fix this you can upload a sketch from a linux/mac pc.
  • After this you should be able to upload the UniversalNode sketch to a webusb supported board.

TODO

React / javascript

  • Reconfiguring resets roles... would be better if it didn't
  • Use the states better
  • Handle disconnection/quitting
  • Handle errors
  • Verify node drawing works as intended
  • Handle drawing disconnected nodes properly:
    • Instead of outlining just the one that disconnected, outline each one that might of disconnected as well because of the disconnection
    • i.e. 3 nodes side by side => master - node 1 - node 2. Say node 1 disconnected then also node 2 disconnects...
  • Make it prettier
  • Add crc check

Arduino side

  • A set value function for each component might be a good idea
    • How to send these values as we're already sending a struct type without id
  • Send pjon struct packets with an id.
    • Currently only sending one struct => it can be identified as it is the only packet without an id
  • ADS seems to cause some issues sometimes as getting values takes too long and the node misses receiving data
  • Same issue with interrupts so I removed interrupts, you might want to include that again, not sure
    • i.e. Constantly changing rot values will call interrupt function over and over again -> not receiving/sending data.
  • Strings to char arrays or something else
  • Try to save some memory?

Immediate Improvements

  • Increase the sampling frequency of the ADC.
  • Change the connectors to 90 degree headers or magnetic pogo pin connectors.
  • PCB revision would be the first step. A stable system will be required for a comprehensive test.

PCB

Some or actually quite many solders are weak on these prototype pcbs, maybe make them better. Problems with pcb in image: pcbProblems

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 39.6%
  • Python 33.4%
  • C++ 16.1%
  • JavaScript 8.3%
  • C 1.2%
  • CSS 0.7%
  • HTML 0.7%