Blog 05

From BitWizard Wiki
Revision as of 14:33, 21 September 2015 by Cartridge1987 (talk | contribs) (→‎!BETA!)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

!BETA!

Now the temperature sensor: For making the temperature sensor we have to make 2 script.

Script 1(The name I gave it was: ui):

#!/bin/sh 
 ui="bw_tool -a 94 -I -D /dev/i2c-1" 
 $ui -W 70:c7:b # internal tempsens with internal 1.1V as reference 
 $ui -W 71:c6:b # external tempsens with internal 1.1V as reference 
 $ui -W 81:1000:s 
 $ui -W 82:6:b 
 $ui -W 80:2:b 

After this we make ui executable:

chmod +x ui 

And look if it worked:

ls -l ui 

This result should have -rwxr-xr-x like me: -rwxr-xr-x 1 root root 216 Sep 7 15:46 ui

Ater you see it works activate it:

./ui 

( There will be nothing printed out when you activate it )

Now it's time to make the second script. ( I named it showtemp)

#!/bin/sh
# 
#
# Set the number of samples to 64, and shift by 0, or set the 
# number of samples to 4096 and shift by 6. The latter is recommended!
#
adcmaxval=65520
#adcmaxval=1023
#
# MCP9700 degrees per volt. 
vperdeg=0.010
#refvoltage=4.9000
refvoltage=1.1000
# mcp offset voltage is 500mv at 0 deg. At 0.010 volt per deg that comes to 
# 50 degrees C. 
offset=50
#
#
# 60 adc channel 0, direct value (0-1023)
# 68 adc channel 0, averaged value (0-65520 with nsamp=4096, shift=6)
# 61 adc channel 1, direct value (0-1023)
# 69 adc channel 1, averaged value (0-65520 with nsamp=4096, shift=6)
register_to_read=69

#
# settings are done, now the preparations. 
convfactor=`(echo scale = 10 ; echo obase=16;echo $refvoltage / $vperdeg / $adcmaxval ) | bc`
offsethex=`(echo obase=16; echo scale=3;echo $offset) | bc `


# now do the real deal. 
rawtemp=`sudo bw_tool -I -D /dev/i2c-1 -a 94 -R $register_to_read:s | tr a-z A-Z`
(echo ibase=16; echo scale=3;echo $rawtemp \* $convfactor - $offsethex)  | bc

After that we make is executable, like we did with the ui script.

chmod +x showtemp 
ls -l showtemp 

-rwxr-xr-x 1 pi pi 999 Sep 7 14:26 showtemp


We trying it out I got failures, because I didn't download bc.:

apt-get install bc 

To check if your scripts work:

sh -x ./ui 
+ ui=bw_tool -a 94 -I -D /dev/i2c-1 
+ bw_tool -a 94 -I -D /dev/i2c-1 -W 70:c7:b 
+ bw_tool -a 94 -I -D /dev/i2c-1 -W 71:c6:b 
+ bw_tool -a 94 -I -D /dev/i2c-1 -W 81:1000:s 
+ bw_tool -a 94 -I -D /dev/i2c-1 -W 82:6:b 
+ bw_tool -a 94 -I -D /dev/i2c-1 -W 80:2:b 
sh -x ./showtemp 
+ adcmaxval=65520 
+ vperdeg=0.010 
+ refvoltage=1.1000 
+ offset=50 
+ register_to_read=69 
+ + bc 
echo scale = 10 
+ echo obase=16 
+ echo 1.1000 / 0.010 / 65520 
+ convfactor=.006E06E01 
+ echo obase=16 
+ echo+  scale=3 
bc+ echo 50  
+ offsethex=32 
+ sudo bw_tool+  -I -Dtr a-z A-Z 
 /dev/i2c-1 -a 94 -R 69:s 
+ rawtemp=ACC3 
+ echo ibase=16 
+ echo scale=3 
+ echo ACC3 * .006E06E01 - 32 
+ bc 
24.251648852 

If a line is wrong it should give a warning.

So now everything is fine it is time to print it out:

bw_tool -I -D /dev/i2c-1 -a 94 -t "temp: "`./showtemp`
Temperature.png


(The remove the latest temperature and see the newest one:

bw_tool -I -D /dev/i2c-1 -a 94 -w 10:00 
bw_tool -I -D /dev/i2c-1 -a 94 -t "temp: "`./showtemp

)

Code that I used: [Temperature Sensor example]


Now we have this. It may be better that we also get it to refresh around a several second instead we have to type the code:

bw_tool -I -D /dev/i2c-1 -a 94 -w 10:00 
bw_tool -I -D /dev/i2c-1 -a 94 -t "temp: "`./showtemp

over and over again. So I am going to try to mix the previous code with temperature code so it will check the code every amount of time. ( I will take 5 sec )

I made the script(Temp5):

#!/bin/bash 
DISPL="bw_tool -I -D /dev/i2c-1 -a 94"

$DISPL -W 10:0:b

 while true;do 
        bw_tool -I -D /dev/i2c-1 -a 94 -w 10:00 
        bw_tool -I -D /dev/i2c-1 -a 94 -t "temp: "`./showtemp` 
        sleep 5 
done 


Do like the other times: chmod +x Temp5

And now when you do:

./Temp5

He will print the temperature every 5 seconds.

On Blog 06 I combined made it possible to show the time and temperature on the display.