Já si udělal shield na UNO, kde jsou dvě velká tlačítka -
zelené, které rozsvítí/zhasne zelenou diodu, která indikuje, že jsme na chatičce (protože to se ta teplota chová logicky jinak) a píše to do logu
červené, které rozsvítí/zhasne červenou diodu, která indikuje, že je SD karta odpojená a může se vytáhnout - při stisknutí provede měření, odpojí kartu a rozsvítí ledku, při dalším stisknutí zhasne ledku, připojí kartu a provede měření.
Pak je tam modul pro
SD kartu, kam se ta měření ukládají
modul pro
RTC, aby to znalo správný čas a datum i v případě výpadku napájení
spousta
DS18B20 senzorů, které to měří na různých místech
a
fotoodpor z Arduino kitu pro měření světla (ono je to kdesi uvnitř, ale (jasný/zamračený) den a noc to rozezná
Výsledný soubor převedu na CSV (tohle jsem ještě moc nevychytal, tak to dělám skriptem, v nějaké další verzi asi přepíšu logování) a z něj vygeneruju graf, vypadá to asi takhle (ale to jsem měl všechny senzory na jednom stole - a je vidět, kdy se v pokoji svítilo lampou)

Kód: Vybrat vše
import pandas as pd
import matplotlib.pyplot as plt
# Load your data from a CSV file
data = pd.read_csv('MER2309B.csv', parse_dates=['datetime'], sep=',' )
print(data.head())
print(data.info())
# Assuming 'datetime' is your timestamp column, convert it to datetime format
data['datetime'] = pd.to_datetime(data['datetime'])
data['light_100'] = data['light'] / 100
# Replace error code (-127) with 0.0 in all temperature columns
temperature_columns = ['temperature[0]', 'temperature[1]', 'temperature[2]', 'temperature[3]', 'temperature[4]', 'temperature[5]', 'temperature[6]', 'temperature[7]', 'temperature[8]', 'temperature[9]', 'temperature[10]', 'temperature[11]', 'temperature[12]']
for column in temperature_columns:
data[column] = data[column].replace(-127, 0.0)
# Calculate the average of the temperature columns and store it in a new column 'average_temperature'
data['average_temperature'] = data[temperature_columns].mean(axis=1)
# Plot your data
plt.figure(figsize=(12, 6))
plt.plot(data['datetime'], data['light_100'], label='Light', color='blue')
for i in range(13):
plt.plot(data['datetime'], data[f'temperature[{i}]'], label=f'Temperature[{i}]')
plt.plot(data['datetime'], data[f'average_temperature'], label=f'Temperature Average', color='red')
# Customize your plot (titles, labels, legends, etc.)
plt.title('Light and Temperature Over Time')
plt.xlabel('Datetime')
plt.ylabel('Value')
plt.legend()
plt.grid()
# Save or display the plot
plt.savefig('MER2309B.png')
plt.show()
ale je to celé ještě dost nehotové a ve vývoji a pro publikaci to bude chtít učesat
tahle vypadají nějaká reálná data se dvěma čidly - jedno v chatě, jedno venku
Je vidět, jak je teplota uvnitř stabilnější a opožděná za venkovní, která je opožděná za sluncem