6 | Untoolkit: Electronic Inputs

Zine

Assignment

  • Create an on/off switch (tact, toggle, slide, tilt or other)

  • Also create an analog sensor (potentiometer, capacitive touch, other)

  • Show at least 3 iterations (drawings, prototypes) before making the final paper sensor in black cardboard

  • All the nodes should work as series, none can take visual supremacy

  • The sensors shown in class are the point of departure for the series. You can recreate the technical circuit but not the form

  • Program a Node MCU to read the values with the serial plotter

  • Change an LED’s brightness depending on switch & sensor values

Seeeduino Lotus Cortex M0+

It has 14 digital I/O (input/outputs) and 6 analog I/O. All pins with a ~ in front support PWM (Pulse-Width Modulation) output. Which means D3, D4, D5, D6, D8, D9, D10, D11, D12, D13, ten in total.

More info about the Seeeduino Lotus Cortex M0+ at Seeedstudio's site: http://wiki.seeedstudio.com/Seeeduino_Lotus_Cortex-M0-/

Breadboard

Digital sensor

A digital sensor has two states (on/off). When a circuit is closed it's on and when a circuit is open it's off. Because when the circuit is closed the current follows the circuit and when it's open the current is interrupted and can't go to the other side.

I've teamed up with Thijs for this week during the days we need to do the assignments at home. Thijs mainly focussed on building a digital sensor and I mainly focussed on building a capacitive sensor.

Capacitive sensor

In class, the day before the schools closed the doors because of the corona virus, we made a crystal that is conductive. Loes showed her own crystal sensor and I really wanted to make one myself. So at first I started to build a capacitive sensor with a conductive crystal, but later on I also tried different conductive materials. This setup works with every conductive object.

Conductive crystal

I just can't seem to get the setup to work. To my idea I've checked everything. I've checked if I've put USB behind every serial . I've checked if the I had connected the wires in the right way to setup the circuit. I've swapped the wires for other wires, to check if the wires are broken. After that I checked if the it works without the conductive crystal, so just with the paperclip. But the paperclip unfortunately doesn't work either, so I can't conclude that the crystal doesn't work.

The black wire looks like it isn't connected, but it is. It is connected to the same copper tape as the conductive crystal. The copper tape is one piece of tape that's also on a little bit on the back of the piece of paper. I made sure that its one piece, otherwise it wouldn't work.

//https://www.instructables.com/id/Capacitive-Sensing-for-Dummies/
//https://www.arduino.cc/en/Tutorial/Smoothing

#include <CapacitiveSensor.h>
// how to install libraries https://learn.sparkfun.com/tutorials/installing-an-arduino-library 
// download capsense lib here https://playground.arduino.cc/Main/CapacitiveSensor/

//send at pin 4, receive at pin 3, 1-10M ohm resistor between
CapacitiveSensor cs_3_4 = CapacitiveSensor(3, 4); // 1-10 megohm resistor between pins 4 & 3, pin 3 is sensor pin, add wire, foil

const int numReadings = 10;     // size of array/number of readings to keep track of (higher = slower)
int readings[numReadings];      // the readings from the analog input
int readIndex = 0;              // the index of the current reading
int total = 0;                  // the running total
int average = 0;                // the average
int brightness = 0;             // initialize delay time at 0
int ledPin = 11;
int newAverage = 0;             //store values after mapping

void setup() {

  // initialize serial communication with computer:
  SerialUSB.begin(9600);           //start serial communication via USB cable
  
  cs_3_4.set_CS_AutocaL_Millis(0xFFFFFFFF); // turn off autocalibrate on channel 1 - just as an example Serial.begin(9600);

  //initatialize readings array setting all values to 0
  for (int thisReading = 0; thisReading < numReadings; thisReading++) {
    readings[thisReading] = 0;
  }  
}

void loop() {

  // subtract the last reading:
  total = total - readings[readIndex];

  // read from the sensor:
  readings[readIndex] = cs_3_4.capacitiveSensor(30);

  // add the reading to the total:
  total = total + readings[readIndex];

  // advance to the next position in the array:
  readIndex = readIndex + 1;

  // if we're at the end of the array...wrap around to the beginning
  if (readIndex >= numReadings) {
    readIndex = 0;
  }

  // calculate the average:
  average = total / numReadings;

  // USE THIS TO FIND THE SENSOR RANGE (COMMENT OUT WHEN DONE)
  // send it to the computer as ASCII digits
  SerialUSB.println(average);  // if using Arduino serial >> e.g. 0 (touch), 70 (no touch)

//  // UNCOMMENT THIS TO MAP THE VALUES TO THE LED RANGE
//  // map the average value to the min and max we recorded above
//  newAverage = map(average, 70, 0, 0, 255);
//
//  //set brightness of LED to sensorValue (between 0-255)
//  analogWrite(ledPin, newAverage);  
//
//SerialUSB.print("Old Value = ");
//SerialUSB.print(average);
//SerialUSB.print("\t");   // add a tab between the numbers
//SerialUSB.print("New Value = ");
//SerialUSB.println(newAverage);

  delay(10); // arbitrary delay to limit data to serial port
}

When I was unwiring the circuit I still had my Serial Monitor open and it suddenly showed values. After looking at the wires one last time I saw I didn't make a mistake following the instructions. I recognized a mistake, the only thing I had to do was swap the wires connected in pin 3 and 4.

//send at pin 4, receive at pin 3, 1-10M ohm resistor between

The code works, just this comment should be changed to this:

//send at pin 3, receive at pin 4, 1-10M ohm resistor between

After this the setup worked (without the conductive crystal connected, just the paperclip) I could finally conclude that the crystal doesn't work.

Copper wire

At the show and tell I showed the sensor and told all the debugging I've done in the last week. After talking with Loes at the show and tell we came to the conclusion to solder the copper wire to the copper tape. So the copper wire and copper tape have better connection. In my design the copper tape makes the connection to my sensor, the copper wire. It's important to have no flaws there.

After soldering the copper wire to the copper tape I had a bit better results, but not as great as it needs to. I completely missed the part where I had to use 1 - 10M ohm resistance. The whole time building the multiple capacitive sensors I used 40k ohm. 40k ohm was the maximal amount of resistance I could create with the resistances I took with me before the school was closed, because of the corona virus.

All iterations

Reflection

While building further and further I realized it would've been smarter to pack more. I thought I packed a bit more than I needed, but that wasn't a great estimation. In the future I need to pack more than I think is more than enough, I am too economical. I needed a lot more resistance to get decent values from my capacitive sensor. The higher the resistance the higher the values.

References

https://playground.arduino.cc/Main/CapacitiveSensor/

Last updated