parent
commit
9eb648c86c
  1. 43
      reciever.py
  2. 69
      slave.ino

43
reciever.py

@ -0,0 +1,43 @@
import smbus
import time
import re
from datetime import datetime
from influxdb import InfluxDBClient
client = InfluxDBClient('192.168.1.6', 8086, 'test', 'test', 'sensor')
bus = smbus.SMBus(1)
address = 0x16
while True:
try:
now = datetime.now()
data = ""
for i in range(0, 40):
data += chr(bus.read_byte(address));
date_time = now.strftime("%m/%d/%Y, %H:%M:%S")
file = open("sensor_logs", "a")
file.write(date_time +" "+ data + "\n")
file.close()
find_values = re.findall(r'[-]{0,1}[\d]*[\.][\d]+', data)
create_list = list(map(str,find_values))
# print (create_list)
# print(create_list[0])
# print(create_list[1])
# print(create_list[2])
x_value = (create_list[0])
y_value = (create_list[1])
z_value = (create_list[2])
client.write(["logg,sensor_type=lilypad x_value="+x_value+",y_value="+y_value+",z_value="+z_value+""],{'db':'sensor'},204,'line')
print (date_time+ " " + data)
print("\n")
time.sleep(1);
except KeyboardInterrupt:
print("\n"+"Interrupt detected Stopping program")
exit(0)

69
slave.ino

@ -0,0 +1,69 @@
#include <Wire.h>
#include <stdlib.h>
#define SLAVE_ADDRESS 0x16
const int xpin = A0; // x-axis of the accelerometer
const int ypin = A1; // y-axis
const int zpin = A2; // z-axis (only on 3-axis models)
int index = 0;
char data[40];
void setup() {
//Serial.begin(9600);
pinMode(xpin, INPUT);
pinMode(ypin, INPUT);
pinMode(zpin, INPUT);
// initialize i2c as slave
Wire.begin(SLAVE_ADDRESS);
Wire.onRequest(sendData);
}
void loop() {
// Nothing to do at last !!!!
}
void sendData() {
read_lilypad();
Wire.write(data[index]);
index++;
if (index >= 40) {
index = 0;
}
}
//Function that reads the data from the Lilypad sensor
void read_lilypad () {
int x_input = analogRead(xpin);
int y_input = analogRead(ypin);
int z_input = analogRead(zpin);
//zero_G is the reading we expect from the sensor when it detects
//no acceleration. Subtract this value from the sensor reading to
//get a shifted sensor reading.
//float x_zero_G = 515.39;
//float y_zero_G = 508.57;
//float z_zero_G = 513.19;
float x_zero_G = 401.01;
float y_zero_G = 407.15;
float z_zero_G = 474.69;
//scale is the number of units we expect the sensor reading to
//change when the acceleration along an axis changes by 1G.
//Divide the shifted sensor reading by scale to get acceleration in Gs.
float scale = 102.3;
//Calculate values and convert them to string
String x_value = String(((float)x_input - x_zero_G) / scale);
String y_value = String(((float)y_input - y_zero_G) / scale);
String z_value = String(((float)z_input - z_zero_G) / scale);
//Putting all values to one string
String lilypad = "Lilypad x: " + x_value + " y: " + y_value + " z: " + z_value;
/* Saving The string to an array to be send to master */
lilypad.toCharArray(data, 40);
}
Loading…
Cancel
Save