Tioluwani Ajani, Jason Hoang, Sharon Li
18-500: ECE Design Experience
SkateBack Parts List
Block Diagram

Parts
Microcomputer - Raspberry Pi
Current choice: Raspberry Pi 5 8GB (available from course inventory, request soon)
Constraints:
- Wi-Fi/Bluetooth enabled for communication with Web Application
- At least 3 Qwiic Connection Ports (Qwiic HAT for Raspberry Pi needed)
- Portable power connection to battery pack (USB-C cables needed?)
- Sufficient External Storage (MicroSD card needed)
- Sufficient RAM
Open Questions:
- Will power over a USB-C be possible? Do the kind of batteries capable of powering electric skateboards come with USB-C ports? Separate RPi battery from motor battery, use a powerbank (This means we need to be able to open up board undercarriage) or LiPO battery and Buck Converter like HomeRover (ask Nathan).
- How much external storage do we need? It will depend on the amount of data our sensors collect, how large our code is, size of Raspberry Pi OS, etc. Do the ECE inventory RPis come with microSDs?
- How much RAM do we need at minimum? It will depend on how intensive our object avoidance and path finding algorithms are. Since the ECE RPis are free, go for 8GB, better to have it and not need it. The power consumption difference doesn’t seem huge.
- If the Pi needs to connect to the VESC, will the ports needed be available? Does the Qwiic HAT use all the GPIO pins? If so, what if the VESC needs them? Could using 2Pis solve the port availability issues without unnecessary overhead?
- Should we be running path planning and object avoidance computations on the Pi or on the web application’s server?
GPS Module - SparkFun - READ HOOKUP GUIDES
Current choice:
Why:
- It has an internal IMU! :D
- It needs an external antenna :C (u.fl patch antenna) NEO-M8U
- “this breakout maximizes position accuracy in dense cities or covered areas. Even under poor signal conditions, continuous positioning is provided in urban environments and is also available during complete signal loss (e.g. short tunnels and parking garages).”
- Might be able to use this package: https://github.com/sparkfun/Qwiic_Ublox_Gps_Py
- https://github.com/semuconsulting/PyGPSClient
Constraints:
- Qwiic Connection Port
- High accuracy (which can hopefully be improved by Kalman filter)
- Python package preferable
- Onboard Antenna
Open Questions:
- Can Arduino IDE and .ino run on RPi? Ask Michael about writing code for RTKs, and we might need an arduino. Not all GPS and IMU chips have Python packages
IMU Module - SparkFun
Current choices:
Constraints:
- Qwiic Connection Port
- 6DoF > 9DoF
- Python package preferable
Open Questions:
- Can Arduino IDE and .ino run on RPi? Ask Michael about writing code for RTKs, and we might need an arduino. Not all GPS and IMU chips have Python packages
VESC:
Motors:
3D Printing
https://engineering.cmu.edu/techspark/facilities/fab-lab.html
https://engineering.cmu.edu/techspark/facilities/services.html
https://cmu.fbs.io/Anon/Default.aspx?f=619 
https://github.com/nathanrooy/spatial-analysis/tree/master
https://nathanrooy.github.io/posts/2016-12-18/vincenty-formula-with-python/
https://gis.stackexchange.com/questions/353701/converting-latitude-and-longitude-to-xy-coordinates#:~:text=If%20point%202%20is%201.4,*%20sin(32)%20).