Sunday, February 10, 2019

Week 5 Reading response


The articles this week were interesting because they all were written in a critical tone.  It had not previously occurred to me that some people may be critical of the maker movement.  Throughout the three different articles, the authors give several reasons why they are not makers, or why they are in opposition of the maker movement.  I will highlight a few of the most interesting examples that stuck out to me while reading through the articles and discuss my take on it. 
                From the article titled, “The Maker Movement Gets a Dose of Critique” the author quotes Chachra, who is an associate professor at the Olin College of Engineering who says, “...it’s carrying on a gendered history of prioritizing creation of stuff over occupations like caretaking or education, roles historically taken by women.”  Personally, I don’t think that the intent of the maker movement is to be misogynistic, or disparaging of occupations that focus on people, rather than things.  I believe that the maker movement highlights creativity, imagination, and ingenuity.  Also, I find it confusing that Chachra included education as one of the oppressed occupations regarding the maker movement because I feel that this is one of the areas highlighted in the movement itself.  Education, learning, and teaching is part of the draw about the maker movement in the first place.  People from different socioeconomic backgrounds can collaborate their ideas to create new things for the benefit of everyone.
                The article, “ Why I Am Not a Maker” continues with the same ideas.  In fact, the author is Chachra herself, so this is not too surprising.  Cachra claims that people who teach, criticize, and take care of others are ignored in the maker movement.  I understand were she is coming from, but I do not agree with her concerns.  Simply because a movement omits a group of people does not mean that the movement is discriminating toward the omitted group.  The maker movement does not address arborists, or marine biologists does this infer that people in these fields are ignored? 
                Kevin Driscoll’s article, “The Dark Side of DIY — Makerspaces and the Long, Weird History of DIY Hobbyists & Military Funding” takes a different angle in looking at some negative aspects of DIY and Makerspaces.  I can relate to many of the concerns that Driscoll pointed out in his article.  Driscoll discussed the topic of creating, “Killer nerds” based on the idea that some projects that are created can be used for the military.  Specifically, Driscoll mentioned DARPA and used examples of instances where makers created projects that ended up benefiting DARPA and ultimately the military.  The question Driscoll poised about why DARPA would have an interest in creating makerspaces is a good one, although self-evident. I was surprised to find out that the idea of secretly recruiting citizens to build/invent new technologies to benefit the military is not a new idea.  Driscoll pointed out that in the 1910s military and DIY hobbies started to become recruited by the military because they were easier to train. 


Week 5 Notes


Below I have listed the notes that we went over in class from the "arduino programming notebook".

comparison operators

Comparisons of one variable or constant against another are often used in if
statements to test if a specified condition is true. In the examples found on the
following pages, ?? is used to indicate any of the following conditions:

x == y //               is             equal to y
x != y //                is             not equal to y
x < y //                 is             less than y
x > y //                 is             greater than y
x <= y //               is             less than or equal to y
x >= y //               is             greater than or equal to Y


logical operators

Logical operators are usually a way to compare two expressions and return a
TRUE or FALSE depending on the operator. There are three logical operators,
AND, OR, and NOT, that are often used in if statements:

Logical AND:
if (x > 0 && x < 5) // true only if both
                                // expressions are true

LogcaIOR:
if (X > 0 || y > 0) // true if either
                                // expression is true

LogicalNOT:
if (!x > 0)  // true only if
// expression is false


Constants

The Arduino language has a few predefined values, which are called constants.
They are used to make the programs easier to read. Constants are classified in
groups.

true/false

These are Boolean constants that define logic levels. FALSE is easily defined as
0 (zero) while TRUE is often defined as 1, but can also be anything else except
zero. 80 in a Boolean sense, -1, 2, and -200 are all also defined as TRUE.

if (b == TRUE);
{
doSomething;
}

high/low

These constants define pin levels as HIGH or LOW and are used when reading
or writing to digital pins. HIGH is defined as logic level 1, ON, or 5 volts while
LOW is logic level 0, OFF, or 0 volts.

digitalWrite(13, HIGH);

input/output

Constants used with the pinMode() function to define the mode of a digital pin as
either INPUT or OUTPUT.

pinMode(13, OUTPUT);


if

if statements test whether a certain condition has been reached, such as an
analog value being above a certain number, and executes any statements
inside the brackets if the statement is true. If false the program skips over the
statement. The format for an if test is:

if (someVariable ?? value)
{

doSomething;
}

The above example compares someVariable to another value, which can be
either a variable or constant. If the comparison, or condition in parentheses is
true, the statements inside the brackets are run. If not, the program skips over
them and continues on after the brackets.

Note: Beware of accidentally using ‘=’, as in if (x=10), while technically valid,
defines the variable x to the value of 10 and is as a result always true. Instead
use ‘==’, as in if (x==10), which only tests whether x happens to equal the
value 10 or not. Think of ‘=’ as “equals”opposed to ‘==’ being “is equal to”.

if. .. else

if... else allows for ‘either—or’ decisions to be made. For example, if you wanted
to test a digital input, and do one thing if the input went HIGH or instead do
another thing if the input was LOW, you would write that this way:

if (inputPin == HIGH)
{

doThingA;
}

else

doThingB;
}

else can also precede another if test, so that multiple, mutually exclusive tests
can be run at the same time. It is even possible to have an unlimited number of
these else branches. Remember though, only one set of statements will be run
depending on the condition tests:

if (inputPin < 500)

{ doThingA;

ilse if (inputPin >= 1000)
} doThingB;

else

doThingC;
}

Note: An if statement simply tests whether the condition inside the parenthesis
is true or false. This statement can be any valid C statement as in the first
exampb,if (inputPin == HIGH)Jntmsexampb,flmifgamnwntomy
checks to see if indeed the specified input is at logic level high, or +5v.

for

The for statement is used to repeat a block of statements enclosed in curly
braces a specified number of times. An increment counter is often used to
increment and terminate the loop. There are three parts, separated by
semicolons (;), to the for loop header:

for (initialization; condition; expression)

{
}

doSomething;

The initialization of a local variable, or increment counter, happens first and only
once. Each time through the loop, the following condition is tested. If the
condition remains true, the following statements and expression are executed
and the condition is tested again. When the condition becomes false, the loop
ends.

The following example starts the integer i at 0, tests to see ifi is still less than 20
and if true, increments i by 1 and executes the enclosed statements:

for (int i=0; i<20; i++) // declares 1, tests if less
// than 20, increments i by 1
digitalWrite(13, HIGH); // turns pin 13 on

de1ay(250); // pauses for 1/4 second
digitalWrite(13, LOW); // turns pin 13 off
de1ay(250); // pauses for 1/4 second

Note: The C for loop is much more flexible than for loops found in some other
computer languages, including BASIC. Any or all of the three header elements
may be omitted, although the semicolons are required. Also the statements for
initialization, condition, and expression can be any valid C statements with
unrelated variables. These types of unusual for statements may provide
solutions to some rare programming problems.






Sunday, February 3, 2019

Week 4 Maker Response


 The Geek article was thought provoking.  The 1958 statement that, “no one on Earth knew how to build a pencil” at first sounded silly but accurate.  I was thinking well, just hollow out the wood, buy some graphite, and build the pencil.  However, as Cangeloso pointed out, even in these two steps, there is a problem.  The 1958 statement referred to all the complicated steps requires in making the pencil not just simply putting it together (mining the graphite, chemistry of creating the lacquer etc.

The Ted talk discussed the same topic in a more visual and sometimes comical way.  After watching the struggles, expense, and time required for him to attempt to make a toaster completely from scratch, I had a much better idea of the truly difficult task that this is.  Technology, and for that matter knowledge in general, is made possible from the people before who have paved the path for advancement.  Arguably, the extent to which humans are capable to pass along knowledge is what separates us from other members of the animal kingdom.  Any one human can create, design, or invent something.  However, no one person can invent something better than all the experts in that field combined, especially without piggy backing off the inventions and knowledge created before.

Leah Buechley’s vimeo presentation was interesting.  I wasn’t surprised hear that 85% of people who made up Maker magazine were men.  In fact, I wouldn’t be surprised if I found out that 85% of people who purchase products from adafruit were men.  However, I was surprised by that most of the people featured in the magazine had a median annual income of $106,000.  Before watching this talk I thought that the maker movement was directed toward young, low income people with an interest in technology and science.  This talk taught me that makers are “rich white guys”.  Leah explained that the featured things in maker magazine include; “electronics 56%, vehicles 31%, Robots, 26%, Rockets 8%, and music 5%” she mentioned that some products might be in two categories, maybe this is why they add up too 126%.  Nonetheless, it is interesting that electronic interactive art is not featured in these magazines because it is an interesting area, something Buechley and I agree on.


Week 4 Notes


This Week we made a circuit capable of detecting light intensity through the use off an Arduino and an LDR sensor.  Also, a resistor is required to steady the amount of voltage through the circuit

Here are some notes from the lecture discussing how to create the circuit digitally. 




Using a program called Fritzing, I designed my circuit before attempting to create it using the Arduino and physical components. 



This is my attempt at creating the circuit.  It worked!!







 This is the code required to make the circuit work properly. The code essentially tells the light bulb  how bright to glow (how much voltage it allows).


PROJECT 1 CHANGE
After talking with Thomas, about my motion sensing IR project I decided to modify the project a bit to give it more range.  I found this website helpful ===> HERE < === in deciding which direction to go.  Essentially, the new project would include wireless capabilities enabling the user to have more range and flexibility. See the Details below!

This would be the final design.  Note there are two arduino boards required, 1 large and 1 smaller.


"The device consists of two parts.One is a transmitter that contains PIR sensor and a transmitter module.A second receiver consisting receiving module and piezo speaker."

Parts



Here is the list of materials

1. Two arduinos any version

2. PIR sensor

3. Piezo speaker

4: RF 433MHz or 315 MHz module

5. 10Kohm resistor

Part 2 Transmitter


This is code of transmitter. When PIR sensor detects human movement transmitter sends uppercase letter A. When pir sensor it holds no signal transmitter sends lowercase letter a.

Here is the code:

int pirPin = 2;
int statePir = 0;

#include <VirtualWire.h>

void setup(){

Serial.begin(9600);

vw_setup(2000);

vw_set_tx_pin(3);

pinMode(pirPin,INPUT);

}

void loop(){

statePir = digitalRead(pirPin);

if (statePir == HIGH){

const char *msg = "A";

vw_send((uint8_t *)msg, strlen(msg));

vw_wait_tx();

}

if (statePir == LOW){

const char *msg = "a";

vw_send((uint8_t *)msg, strlen(msg));

vw_wait_tx();

}

}

Part 3 Receiver



Here is the code for receiver. Piezo play very loud alarm sound.

int led = 13;
int speaker = 10;

#define wait 1

#define time 100

int freq = 0;

#include

void setup(){

Serial.begin(9600); // Debugging only

vw_setup(2000);
vw_set_rx_pin(11);

vw_rx_start();

pinMode(speaker, OUTPUT);
pinMode(led, OUTPUT);

}

void loop(){

uint8_t buf[VW_MAX_MESSAGE_LEN];

uint8_t buflen = VW_MAX_MESSAGE_LEN;

if (vw_get_message(buf, &buflen))
{

for (int i = 0; i < buflen; i++)

{

if(buf[i] == 'A') {

digitalWrite(led, HIGH);
digitalWrite(speaker, HIGH);

for (freq = 500; freq < 3000; freq += 10)

{
tone(speaker, freq, time);

delay(wait);

}

for (freq = 3000; freq > 500; freq -= 10)

{

tone(speaker, freq, time);

delay(wait);

}

for (freq = 500;

freq < 3000;

freq += 10) //

{

tone(speaker, freq, time);

delay(wait);

}

for (freq = 3000;

freq > 500; freq -= 10)

{

tone(speaker, freq, time);

delay(wait);

}

for (freq = 500;

freq < 3000;

freq += 10) //

{

tone(speaker,

freq, time);

delay(wait);

}

for (freq = 3000;

freq > 500;

freq -= 10)

{

tone(speaker, freq, time);

delay(wait);

}

for (freq = 500; freq < 3000; freq += 10)

{

tone(speaker, freq, time);

delay(wait);

}

for (freq = 3000;

freq > 500; freq -= 10)

{

tone(speaker, freq, time);

delay(wait);

}

} if(buf[i] == 'a')

{ digitalWrite(led, LOW); digitalWrite(speaker, LOW);

}

}

}


}


Sunday, January 27, 2019

Project 1 proposal

I have decided that I would like to move forward with my initial idea of creating a movement alarm that activates an LED.  I decided to use an LED so this would act as a silent alarm.  Also, I have decided to modify the type of sensor that I would like to use.  Initially, I wanted to use a photo-sensor but I think that a sensor sensitive to movement, rather than light would be more fitting.  The first video in-bedded in this blog includes the general idea of what I would like to create.  Essentially, this project would enable the user to perceive movement even when they are not looking.  If the unit is placed behind a person, and the LED is placed in front of the person, the user would be able to know of movement, or threats without looking.  Also, the creator of the video offers a link to his website which overviews the project details. ~~~~>Link to site


Parts List:

Arduino UNO (Already Purchased)

The schematic will look something similar to this:

Arduino Code

int led = 13;                // the pin that the LED is attached to
int sensor = 2;              // the pin that the sensor is attached to
int state = LOW;             // by default, no motion detected
int val = 0;                 // variable to store the sensor status (value)
void setup() {
  pinMode(led, OUTPUT);      // initialize LED as an output
  pinMode(sensor, INPUT);    // initialize sensor as an input
  Serial.begin(9600);        // initialize serial
}
void loop(){
  val = digitalRead(sensor);   // read sensor value
  if (val == HIGH) {           // check if the sensor is HIGH
    digitalWrite(led, HIGH);   // turn LED ON
    delay(100);                // delay 100 milliseconds 
    
    if (state == LOW) {
      Serial.println("Motion detected!"); 
      state = HIGH;       // update variable state to HIGH
    }
  } 
  else {
      digitalWrite(led, LOW); // turn LED OFF
      delay(200);             // delay 200 milliseconds 
      
      if (state == HIGH){
        Serial.println("Motion stopped!");
        state = LOW;       // update variable state to LOW
    }
  }
}


Maker Movement Response Week 3


           Leah Buechley’s talk on Makers was interesting and inspiring to listen too.  My favorite part of the video was watching the children, and novices get excited about creating electronic art through the use of technology.  The conductive pen that was demonstrated in the video is a very interesting idea.  I like how the presenter discussed how artists are incorporating electronics into art work.  Leah showed an example of a student who made a 3D pop-up book that incorporated LEDs, and other electronics to make a city skyline come to life with lights. 
The more advanced examples illustrated in the video shows the potential future value that this new technology can bring.  Most interestingly, the clothing that detects ambient carbon monoxide in the air and displays the result as light released from LEDs sewn inside of the clothing. This helped for me to understand that the uses for this technology are nearly endless.  The thought of the clothing a person wears giving haptic or visual feedback makes a lot of sense.  Clothing, for the most part, has remained the same for thousands of years.  Typically, clothing is made of cotton, wool, silk, sometimes synthetic blends, but almost never functional in the sense that they assist the person wearing them, other than providing the shelter for which they were designed.
 I was at the mall a few years ago and remember seeing a t-shirt that had an LCD screen sewn on it in the shape of an equalizer.  The t-shirt must have had a small circuit board on it, accompanied by a microphone.  When the microphone picked up noise, it would send a signal to the circuit board, and in return the LCD screen to display the intensity of the sound.  At the time, I thought this was interesting but did not foresee the other types of products that could be created with slight variation.  The “bike shirt” that was shown in the video is probably simpler to create than the equalizer shirt that I saw at the mall, however I believe it is much more useful. 
I think no matter how useful this type of technology is, it will never become pervasive without first being a part of the culture.  There have been plenty of excellent idea in the past, like Google glasses, that have not made it into the mainstream lifestyles of society.  I believe this is more of a marketing and economics problem then it is a technological one.  To become part of a culture I believe small introductions, and releases are important first, then, over time, modification and improvements. 



Week 3 notes




Things to do:

Create a vendor list from:
  • Ada Fruit
  • Spark Fun
  • MPJA
  • Mouser
  • Amazon
Notes:
Arduino Programming notebook:
    https://playground.arduino.cc/uploads/Main/arduino_notebook_v1-1.pdf

    Structure:
    This runs in two at least two parts

    void setup()
    {
         statements;
    }

    void loop ()
    {
         statements;
    }

    Setup() is the preparation, loop() is the execution. Both functions are
    required for the program to work.

    The setup function should follow the declaration of any variables at the very
    beginning of the program. It is the first function to run in the program.


    setup()

    The setup() function is called once when your program starts. Use it to initialize
    pin modes, or begin serial. It must be included in a program even if there are no
    statements to run.

    void setup ()
    {
         pinMode(pin, OUTPUT); // sets the 'pin' as output
    }


    The loop function follows next and includes the code to be executed
    continuously reading inputs, triggering outputs, etc. This function is the core of
    all Arduino programs and does the bulk of the work.

    void loop()

    {

    digitalWrite(pin, HIGH); // turns 'pin' on

    delay(1000); // pauses for one second
    digitalWrite(pin, LOW); // turns 'pin' off
    delay(1000); // pauses for one second

    {} curly braces

    Curly braces (also referred to asjust "braces" or "curly brackets") define the
    beginning and end of function blocks and statement blocks such as the void
    |oop() function and the for and if statements.

    type function()

    statements;

    }

    An opening curly brace { must always be followed by a closing curly brace }.