SmartFusion XY Plotter
Final project for EECS 373: a web-connected drawing robot that issues HTTP REST requests, parses JSON, and extracts + translates SVG path directions into motor instructions.
TL;DR everything.
- Libero project for building FPGA + generating C libs
- SoftConsole project for building FreeRTOS + tasks
- References folder with useful PDFs + a clone of the uIP stack that we used
- Work-in-Progress folder with some stuff we just didn't have time to get to
- Super barebones + sketchy NodeJS REST server code (literally wrote this in an hour. sorry bro.)
- Rough start based on reference code from http://www.freertos.org/FreeRTOS-For-SmartFusion-Cortex-M3.html
- With some tweaking, got DHCP working
- Future 373 students: never try to get DHCP working in the lab unless you spoof the MAC and use one of the lab machine's address instead
- I've got one hardcoded in the
application_tasks/http_task.c
file that you can enable if need be - You're still better off just running a DHCP server on your own laptop and using that
- I've got one hardcoded in the
- Integrated the latest version of uIP
- Integrated JSMN for parsing the received HTTP requests
- Custom verilog for motor control
- Super barebones REST server via NodeJS to hold jobs
This gets a little hairy. We use a lot of third-party code in this project-- see individuals for exact licensing restrictions / requirements, but here is a base list:
- FreeRTOS is covered by a modified version of the GPL
- uIP is Copyright (c) 2001-2003, Adam Dunkels.
- Anything and everything Actel / Microsemi / Libero is (c) Copyright 2009 Actel Corporation.
- JSMN is covered by the MIT license
- Anything that's left is all yours under CC0
Bart Kiley and I worked super hard to get FreeRTOS + uIP running consistently on the SmartFustion board-- I'd love to hear what you are building and answer any questions you may have about this code. Keep in mind that a lot of this was super new to us. We definitely made some mistakes, but hey, it works! (most of the time)...
- Bart Kiley
- Kyle Smith
- Aaron Ridenour
- Paul Sheridan