Online temperatur övervaka w/Raspberry Pi (6 / 6 steg)
Steg 6: programvara
Programmet har två viktiga komponenter. Den första komponenten är ett delat bibliotek som monitor programmet beror på. Det är inte nödvändigt att göra ett delat bibliotek, naturligtvis, men om du vill skriva din egen anpassad kod är det bra att kunna länka till den genom att bara ange biblioteket på kommandoraden gcc. Makefile för biblioteket kommer med ett installationsprogram som kommer att placera biblioteket i rätt plats för programmet monitor.Biblioteket är mycket enkel och består av bara en handfull funktioner:
int SpiOpenPort (int spi_device, int läge, int hastighet);
int SpiClosePort (int spi_device);
int SpiWriteAndRead (int spi_device, unsigned char * data, int längd);Funktionen SpiOpenPort öppnas en spi-enhet. Val för spi_device är 0 eller 1 som motsvarar CE0 och CE1 för chip Välj. Läget anger SPI läge - ledande klocka kant, avslutande klocka edge, etc... Den sista parametern, hastighet, representerar önskad hastighet (i Hz) du vill ha din SPI att kommunicera på. Det underliggande systemet försöker matcha till närmaste eller bästa matchen för den hastighet du anger.
Monitor-programmet är inte mycket svårare. Det handlar om läsning 2 byte från MAX144. Läs utförs två gånger så vi är alltid opererad CH2 data (vilket bör vara kortsluten till CH1). Vi skapar ett två byte ord med den första byten som MSB och andra LSB. Vi sedan mask den 12: e lite som anger vilken kanal som vi läser, och slutligen konvertera det till ett resulterande spänningen värde för konvertering till en temperatur. Konvertering till temperatur innebär den linjära funktionen (V * 100)-50 som är omvandlingen funktion till temperatur enligt databladet.
dubbel read_temperature() {
dubbel skala = 3,3/4096;
dubbel spänning;
unsigned char data [2] = {0x00, 0x00};
int värde; < br >
SpiOpenPort(0,0,10000); < br >
Läs två gånger för att få CH2 data < br > SpiWriteAndRead (0, uppgifter, 2). < br > SpiWriteAndRead (0, data, 2); < br >< br > SpiClosePort(0);
konvertera till en 2 byte word MSB första < br > värde = (((int) data [0] << 8) + (int)data[1]) & 0x0FFF; < br > spänning = värde * skala; < br > återvända (spänning * 100)-50; < br >}
Efter att ha läst spänningen infogas det i tabellen MySql. Innan vi tittar på att koden ändå, vi har att göra en liten skillnad till MySql och skapa databas och tabell struktur som krävs för att programmet ska fungera korrekt.
Ladda ner källkoden från github databasen: https://github.com/scottmccain/tempmonitor
Skapa de nödvändiga tabeller och databas med hjälp av följande kommando (observera detta måste bara göras en gång):
? MySQL -u root -p -e "skapa databas Piservicedb; Använd Piservicedb; Skapa tabell temperaturer (id heltal inte NULL AUTO_INCREMENT, temperatur dubbel inte NULL, timestamp DATETIME inte NULL, PRIMÄRNYCKEL (id)) ";
Ändra katalog till projektet roten:
CD tempmonitor
Kontrollera att du markerar skriptet körbart:
chmod + x./createdb.sh
Sedan köra skriptet:
./createdb.shAnge i dina autentiseringsuppgifter (du kan ändra användaren om du vill genom att ändra skriptet) och databas och tabellstrukturen kommer att skapas för dig.
När det är klar kan du skapa biblioteksfiler som krävs genom att köra:
sudo göra bibliotek
Detta kommer att bygga och installera nödvändiga bibliotek och delade objekt för temperatur monitor. Efter det kan du bygga och installera programmet monitor. Innan du kör bygga källkoden, men det finns ett par kommandon måste du köra innan handen. Makefile beror på 2 miljövariabler som måste anges innan koden kommer att sammanställa eller länka ordentligt. Variablerna bör anges med följande kommandon:
[infoga kommando för att ange vars med mysql_config]
Slutligen kan du bygga och installera programmet med följande kommando:
sudo göra & & sudo göra installeraDetta kommer att bygga källkoden för monitor programmet och installera det på en plats där cron kan se den.
Nästa kommer att vi skapa en crontab post starta loggning temperaturer på en tidsinställd grund. Först öppna crontab redigeraren genom att köra följande kommando:
sudo crontab -eNär redaktören är öppna rullar till slutet av filen och infoga följande rad:
* / 5 **** /opt/bin/monitor
Spara dina ändringar. Detta kör programmet monitor var 5 minuter om du vill logga temperaturen. Du kan justera transaktionen för dina egna behov. Vänligen hänvisa till cron man-sidorna för mer information.
Grattis! På denna punkt bör din Raspberry Pi logga temperaturer. Du kan kontrollera genom att gå till mysql och köra en fråga mot tabellen temperaturer i databasen servicedb. Nästa kommer jag visa dig en enkel webbtjänst och ansökan jag piskade upp visar värden från databasen.