Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Please Design an application that runs on a BeagleBone Black divice which utiliz

ID: 3926294 • Letter: P

Question

Please Design an application that runs on a BeagleBone Black divice which utilizes an LM34/MCP9701 temperature readings.(Please note Analog input pins requirementwith regard to BBB and currents.1.8 Volts is the max for these pins not 3.3 Volts .The Application should utilizes the temperature readings obtained from the sensor and present both Fahreinheit and CelisiusPlease runs the application for 3 minutes while logging the temperature readings at regular interval 10 seconds .Write structure code using python 3.4.4

Explanation / Answer

in python :

nanotmp36.py

import Adafruit_BBIO.ADC as ADC
import time

sensor_pin = 'P9_40'

ADC.setup()

while True:
    reading = ADC.read(sensor_pin)
    millivolts = reading * 1800 # 1.8V reference = 1800 mV
    temp_c = (millivolts - 500) / 10
    temp_f = (temp_c * 9/5) + 32
    print('mv=%d C=%d F=%d' % (millivolts, temp_c, temp_f))
    time.sleep(1)

Save and exit the editor using CTRL-x and the Y to confirm.

To start the program, enter the command:

You will then see a series of readings. :

mv=757 C=25 F=78
mv=760 C=26 F=78
mv=762 C=26 F=79
mv=765 C=26 F=79
mv=763 C=26 F=79
mv=763 C=26 F=79
mv=766 C=26 F=79
mv=768 C=26 F=80

in C

#include "MCP9701E.h"

#include <stdlib.h>

#include <fcntl.h>

#include <stdio.h>

#include <unistd.h>

/// Input voltage

const float MCP9701E::Vdd = 3.3;

/// Maximum and minimum values that can be measured

const int MCP9701E::TempSensorMin = 0;

const int MCP9701E::TempSensorMax = 4096;

/// Temperature sensor constants

const float MCP9701E::V0 = 0.3f;

const float MCP9701E::Tc = 0.0195f;

/// Handles a MCP9701E temperature sensor

///

/// @param Hardware device to read the temperature measurements from

MCP9701E::MCP9701E(const char *pin)

{

_input = open(pin, O_RDONLY);

}

/// Grabs a temperature measurement

float MCP9701E::GetTemperature()

{

// Read the sensor

int status = read(_input, _buffer, sizeof(_buffer));

if (status == -1)

{

fprintf(stderr, "ERROR: Could not get temperature measurement.");

return -999.0f;

}

// Reset the sensor

lseek(_input, 0, 0);

// Convert the string into an integer

_buffer[status] = '';

int value = atoi(_buffer);

           

// Convert the measurement into a temperature

float voltage = ((float) value) / (TempSensorMax - TempSensorMin + 1) * Vdd;

float temp = (voltage - V0) / Tc;

return temp;

}

/// Closes the temperature sensor

void MCP9701E::Close()

{

if(_input != -1)

{

close(_input);

_input = -1;

}

}