Categories
Fab Academy AS220 - Providence, RI Fab Academy Providence -Year II - Teaching

Hello Serial Bus

bus

The purpose of this hello world example is to network several boards together in the form of a serial bus. The bridge board is connected to a computer via a FTDI cable. The two node boards are connected to the bridge board.

To replicate this example:

  1. Download the Fab Academy board diagrams / pngs and code.
  2. For each node in your network, you will need to modify the modify the “hello.bus.45.c” code.
  3. You need to change the line: #define node_id ‘0’ –> each node needs to have a different number (0, 1, 2, 3 – for each additional node you add.
  4. After flashing boards with 3 different node numbers:
  5. Open a Arduino IDE
  6. Open the serial monitor
  7. Enter number of note into serial monitor – press “enter”
  8. The node name (ex: node 1) should echo in on the serial monitor and the LED on the board that was flashed with the node id of 1 should flash.

Alternately- If you don’t have / want to use the Arduino IDE,

  1. After flashing boards with 3 different node numbers:
  2. Download term.py.
  3. Run term.py

In Ubuntu this is:

python term.py /dev/ttyusb0 9600

The node name (ex: node 1) should echo in on the serial monitor and the LED on the board that was flashed with the node id of 1 should flash.

Bus In Action

Categories
Fab Academy AS220 - Providence, RI Fab Academy Providence -Year II - Teaching

Fab Academy AS220 Assembles the MTM Snap

Categories
Fab Academy AS220 - Providence, RI Fab Academy Providence -Year II - Teaching

Pure Data to Arduino Over Serial

For Fab Academy, Shawn Wallace put together a basic example of getting the Arduino to make music using Pure Data.

  • Next, flash your Arduino with the following code:
void setup() {
 Serial.begin(9600);
}

void loop() {
 for (int i=0; i<255; i++) {
 Serial.write(i);
 delay(100);
 }
 for (int i=255; i>0; i--) {
 Serial.write(i);
 delay(100);
 }
}

pde

  • Then, save this Pure Data patch to a text file, name it SimpleExample.pd, and open it up in Pure Data:
#N canvas 644 73 523 614 10;
#X obj 186 309 dac~;
#X obj 110 182 r left;
#X obj 298 180 r right;
#X obj 36 150 osc~;
#X obj 80 151 osc~;
#X obj 39 194 *~ 0.2;
#X obj 235 181 *~ 0.2;
#X obj 266 227 *~ 1;
#X obj 90 226 *~ 1;
#X obj 35 47 comport 9600;
#X msg 36 17 devices;
#X msg 95 19 open 2;
#X floatatom 35 70 5 0 0 0 - - -;
#X obj 35 102 * 10;
#X obj 75 103 * 20;
#X connect 1 0 8 1;
#X connect 2 0 7 1;
#X connect 3 0 5 0;
#X connect 4 0 6 0;
#X connect 5 0 8 0;
#X connect 6 0 7 0;
#X connect 7 0 0 1;
#X connect 8 0 0 0;
#X connect 9 0 12 0;
#X connect 10 0 9 0;
#X connect 11 0 9 0;
#X connect 12 0 13 0;
#X connect 12 0 14 0;
#X connect 13 0 3 0;
#X connect 14 0 4 0;

A nice feature of Pd is that all the patches are in a simple text format.

To Get this Example Working:

  • Open Pure Data
  • Open the “SimpleExample.pd” file in Pure Data
  • Click on the “devices” message box: This will list any available serial ports in a numbered list.
  • On my Mac, the usb port connected to the microcontroller was on port 2; (it may be different on your computer)
  • Find the correct port number and change the “open” message from “open 2” to “open (your port # here)”. To do that, enter Edit mode under the Edit menu. Now you can type directly into the message boxes. After you change the “open” message, leave edit mode and do the following:
  • 1. Select “compute audio” in the main Pd window
  • 2. Click on the “open” message to open the serial connection

pd

You should see output of the comport changing, and should hear a rising and falling tone.

Categories
Fab Academy AS220 - Providence, RI Fab Academy Providence -Year II - Teaching

Hello (Make Your Own) Arduino

arduino
For reasons I haven’t uncovered yet, I was unable to use the Arduino IDE to burn the bootloader to a fabbed Arduino board. For my first attempt at this, see the Fabkit / Fabduino post. Also see Ed Baafi’s Fabkit / Fabduino page for how to program an fabbed Arduino without an external clock through the Arduino IDE. In both OS X and Ubuntu I was unable to connect to the board through the IDE. Shawn Wallace suggested that I use the following code. (See “To Program Your Arduino” section below) The code below worked for me in Ubuntu. NOTE: This code below works for a using an external 8MHZ resonator, see the links to the .png files.

Download the Files

Download Files to Mill
Get the files from the Fab Academy site
Download the Arduino Bootloader File for the Atmega168
Right click to save the files

To Program Your Arduino:

Set the fuses with:

Paste code is all in one line

avrdude -c usbtiny -p m168 -B 5 -u -U lock:w:0x0F:m -U  efuse:w:0x00:m -U
hfuse:w:0xdd:m -U lfuse:w:0xf6:m -P usb

Burn the bootloader with:

Paste code is all in one line

avrdude -P usb -c usbtiny -p m168  -u -U flash:w:ATmegaBOOT_168_pro_8MHz.hex
-U lock:w:0x0F:m -B .2

The options used:

  1. -u –> Disable safemode, default when running from a script.
  2. -U :r|w|v:[:format] –> Memory operation specification. Multiple -U options are allowed, each request is performed in the order specified.