symp

Week 11 - Input Devices

Individual assignment: Measure something: add a sensor to a microcontroller board that you have designed and read it

Group assignment: Probe an input device's analog levels and digital signals

.

In the last week 10 for Moulding & Casting, i had made a batman made out of black panther and had temporarily added and programmed a neopixel LED as below

.

.

symp

.

So this week i thought i would utilize the same with an input device. The first sensor that came to my mind was the accelerometer. So i thought of using MPU6050. I thought i could use the accelerometer in the module so that whenever i move the batman the rate of changeing of colour increases I went through several tutorials to study the working of the same. Since the MPU 6050 module used I2C communication, I found the below youtube links very useful for understanding the same

.

.

.

.

MPU 6050 module

.

symp

.

symp

.

symp

.

.

symp

.

.

I modified Arduino program for mpu 6050 and attiny 44 with tinywireM.h obtained from several sources

.

symp

.

Shifting from MPU6050 to HCSR04

I thought i would use the same with attiny 44 and had found and modified the codes for the same. But i felt that there was a high chance of failure by using the same. Since i found only handful of supports for the interfacing with attiny 44 and mpu6050, i decided to test the working with another sensor before this. I desided to use the ultrasonics sensor module HC SR04 for the purpose of blinking the neopixel batman. If i get time then i will test the MPU6050 Sensor. My plan was to use this with neopixel LED WS2812B so that the colour changes instantly when the distance measured by the sensor is low

.

HC-SR04 Ultrasonic sensor module

.

symp

.

.

WS2812B- Neopixel LED

.

symp

.

Attiny 44 with ultrasonic sensor & neopixel

First we have to design the same in eagle by placing the required components and check whether the program and scheme would work

.

symp

.

.

symp

.

.

symp

.

.

symp

.

.

symp

.

.

symp

.

.

symp

.

.

symp

.

.

symp

.

.

symp

.

.

symp

.

.

symp

.

// NeoPixel Ring simple sketch (c) 2013 Shae Erisson
// released under the GPLv3 license to match the rest of the AdaFruit NeoPixel lib

// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS 1

// When we setup the NeoPixel library, we tell it how many pixels, and which pin to use to send signals.
// Note that for older NeoPixel strips you might need to change the third parameter--see the strandtest
// example for more information on possible values.
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

int delayval = 500; // delay for half a second

const int trigPin = A0;
const int echoPin = A1;


long duration;
int distance1,distance2,distance3;

void setup() {
  // This is for Trinket 5V 16MHz, you can remove these three lines if you are not using a Trinket
#if defined (__AVR_ATtiny85__)
  if (F_CPU == 16000000) clock_prescale_set(clock_div_1);
#endif
  // End of trinket special code

  pixels.begin(); // This initializes the NeoPixel library.

  pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
  pinMode(echoPin, INPUT); // Sets the echoPin as an Input
}

void loop() {

  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
 
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  
  duration = pulseIn(echoPin, HIGH);
 
  distance1 = duration * 0.034 / 2;

  distance2 = (distance1/400)*255;
  distance3= distance2*3;

  // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255
  pixels.setPixelColor(0, pixels.Color(distance1, distance2, 89)); // Moderately bright green color.

  pixels.show(); // This sends the updated pixel color to the hardware.

  delay(delayval); // Delay for a period of time (in milliseconds).

}


.

I found out that the neopixel i attached to my board was not working by connecting an external neopixel as below

.

.

symp

.

.

This is what i intended.So when the distance increases the light will change.

.

.

symp

.

I made another board by using the working components from the other board and adding a new atmega328 IC .Since neopixel was in small quantity with me i seperately soldered an external NEOPIXEL using wires

.

.

Removed useful components from the old PCB

.

symp

.

.

Soldered the new PCB

.

symp

.

.

Also soldered an external NEOPIXEL as below

.

symp

.

OUTPUT OF THE PROGRAM

.

.

EAGLE DESIGN FILES FOR DOWNLOAD

.

Group assignment

Probe an input device's analog levels and digital signals

The analog and digital values of the "Hall Effect Sensor" were measured. As per this code below

When a magnet is brought closer the analog value is changed as below

.

symp

.

.

symp

.

Week 7

Week 8

Week 9

10

Week 10