Course Description
This is the page for the DXARTS 490 Special Topics course on Embedded Systems. The course explores embedded operating systems and higher-performance alternatives to the Arduino platform with a focus on digital arts production. After an initial phase of in-class instruction, the course is a largely self-guided independent study. Participants are expected to pursue their individual interests into specific platforms and applications and present their findings to the class group. Students are not expected to have any previous experience programming embedded linux systems.
Each student will present a prototype of an embedded systems artwork or group project at the end of the quarter. As a second deliverable, each student is expected to contribute to reference pages detailing software workflows and how-tos for their particular platform on the departmental wiki. This can be developed on a personal blog and consolidated onto the wiki at the end of the term. Finally, each student will be responsible for one student-led session in the latter-half of the quarter, giving a presentation and leading a hands-on activity with the material they have discovered through their research. We will assign those sessions in Week Four.
Time and Location
Location: Fremont Warehouse (directions)
Time: Friday 2:30-4:30pm.
Instructor: Robert Twomey (rtwomey@uw.edu). office hours by appointment via e-mail.
Class E-mail list
Grading
The class grade will be broken down as follows:
- Contribution to Shared Resources: 25%
- Student-Led Session: 25%
- Final Prototype and Presentation: 50%
Topics
- Linux basics
- Device Interfacing (USB devices, cameras, dot matrix printers)
- Hardware Intefacing (GPIO pins, sensors)
- Particular software platforms and packages
- audio environments (supercollider, PD)
- speech recognition. (Sphinx)
- computer vision. (OpenCV)
- speech synthesis. (Festival, Julius)
- natural language processing. (NLTK)
- Hardware Platforms
- Raspberry Pi
- BeagleBoard
- APC
- Panda Board
- HackACam
- Elphel
- Operating system versus bare metal operation.
- Fabricate permanent, reliable interactive art objects.
- Fabricate portable, sophisticated, computational art objects.
Schedule
Week 0 ::
- Order hardware for use with the class. A class set of Raspberry Pis and power supplies.
Week 1 :: 4/5 - Introduction, Installing the OS Image. User accounts.
PURCHASE AN SDHC CARD AND BRING TO CLASS! details on compatible cards: http://elinux.org/RPi_SD_cards
- Course introduction.
- Discussion of interests in embedded systems and goals/plans for the quarter.
- Lecture: creating an OS image for Raspberry Pi.
- Hands on with hardware..
- Create an OS Image. http://elinux.org/RPi_Easy_SD_Card_Setup
- Booting up our new systems. Test that your system boots with your card.
- raspi-config will run. select "expand filesystem" and Modest overclocking. Click finish.
- Create a user account for yourself. http://wiki.roberttwomey.com/Raspberry_Pi#add_a_user_account
- Rename your system. figure it out...
- RPi quickstart http://www.raspberrypi.org/quick-start-guide
Week 2 :: 4/12 - SSH. wget. Software install. FM Broadcast.
- Lecture: wget. FM Broadcast. basic scripting.
- Hands On
- Basic Linux Commands http://www.my-guides.net/en/guides/linux/basic-linux-commands
- rm, cd, mkdir, ls, cat
- Comprehensive Shell Reference - http://linuxcommand.org/learning_the_shell.php
- find what is the address of your pi.
- if you have a monitor attached. turn it on. type ifconfig
- on osx, type: arp -i bridge0 -a
- SSH. generating a public key (and copy to the raspberry pi) to automate the login.
- scp, copying files back and forth.
- man scp.
- copy an audio file and play it.
- audio playback
- aplay
- FM Broadcast install. wget, unzip.
- Simple python script with FM broadcast.
- run PiFm.py.
- adapt PiFm.py to play multiple files, or multiple frequencies.
- editing a python file
- in the terminal. vim. nano. ssh to share filesystem. (emacs?)
- idle in the desktop environment on the RPi. (startx, or vnc)
- editing locally (idle) and copying back and forth (scp)
- other ideas?
Week 3 :: 4/19 - Apt-get, Remote Desktop, Speech Synthesis, Video Playback.
- Lecture: apt-get, Festival, more scripting.
- Hands On
- Week 3
- apt-get to install(build) software and dependencies.
- festival example http://elinux.org/RPi_Text_to_Speech_(Speech_Synthesis)
- vnc for Remote Desktop
- Festival
- installing a non-default voice
- training a voice
- scripting festival
Week 4 :: 4/26 - Intro to Python. Video Playback.
- Lecture: basic scripting (python). client-server.
- Hands On
- Assign student led sessions.
Week 5 :: 5/3 - Hardware Interfacing, GPIO
- Lecture: Hardware Interfacing, GPIO, Logic-level conversion.
- Project ideas?
- Student-Led Sessions 1 + 2.
Week 6 :: 5/10
- Progress, Q & A.
- Student-Led Sessions 5 + 6.
- Sam Potter - OpenGL programming on rpi.
- Jered - xBee.
- Marcin - gpio through kernel interface.
Week 7 :: 5/17
- Progress, Q & A.
- Student-Led Sessions 7 + 8.
- Hector - supercollider
- Joel - lux sensors.
- John Blalock - ???
Week 8 :: 5/24
- final discussion
- Student-Led Sessions 9 + 10.
Week 9 :: 5/31
- Student Led Sessions
- James Hughes - ???
- Robert - ???
- Jimmy - ???
- Presentations of finished projects. Invite others from departments or larger university community.
- Conclusions?
- Wrap-up.
Resource Pages
- Robert's Raspberry-Pi Page - http://wiki.roberttwomey.com/Raspberry_Pi
Software Reference
- CCRMA Satellite - https://ccrma.stanford.edu/~eberdahl/Satellite/ (includes PD, SC, others for beagleboard or raspberry pi)
- FESTIVAL
- JULIUS
- Sphinx
- OpenCV
- raspPi - http://www.technolabsz.com/2013/03/how-to-easily-install-opencv-on.html
- beagleboard - http://www.hbrobotics.org/wiki/index.php5/Beagle_Board
- openFrameworks on raspPi
- https://github.com/openFrameworks-RaspberryPi/openFrameworks/wiki/Raspberry-Pi-Getting-Started
- http://www.youtube.com/watch?v=0GnGHZq0Eyo
- SuperCollider on rPi
Hardware Reference
- Beagle Board - embedded linux - http://beagleboard.org/
- BeagleBone http://beagleboard.org/bone
- Panda Board - http://pandaboard.org/
- APC - http://apc.io/products/
- Arduino Due http://arduino.cc/en/Main/ArduinoBoardDue
- Arduino Mega Android Development Kit (ADK) - http://www.mouser.com/new/arduino/arduinoandroid/
- Hack-A-cam - programmable IP camera platform - http://www.hackacam.com/
- ChipKit - http://digilentinc.com/Products/Catalog.cfm?NavPath=2,892&Cat=18
- PIC32 32-bit MCU with arduino compatible form factor and IDE, $26.95
- PCDuino - arduino header compatible ARM processor running linux or android. http://www.pcduino.com/