Stap 6: Software
De software heeft twee belangrijke componenten. Het eerste onderdeel is een gedeelde bibliotheek die afhangt van het monitorprogramma. Het is niet nodig om een gedeelde bibliotheek, natuurlijk, maar als u wilt uw eigen aangepaste code schrijven is het handig om de link naar het door de bibliotheek alleen op te geven op de opdrachtregel van de gcc te kunnen. De makefile voor de bibliotheek wordt geleverd met een installateur die de bibliotheek in de juiste plaats voor het monitorprogramma zal plaatsen.De bibliotheek is zeer eenvoudig en bestaat uit slechts een handvol functies:
int SpiOpenPort (int spi_device, int modus, int snelheid);
int SpiClosePort (int spi_device);
int SpiWriteAndRead (int spi_device, unsigned char * data, int lengte);De functie SpiOpenPort zal een spi-apparaat niet openen. De keuzes voor spi_device zijn 0 of 1 die komt met CE0 en CE1 voor het selecteren van chip overeen. De modus geeft de instelling voor SPI - leiden van de klok-rand, trailing edge van de klok, enz... De laatste parameter, snelheid, de gewenste snelheid vertegenwoordigt (in Hz) u wilt uw SPI om te communiceren op. Het onderliggende systeem zal proberen te koppelen aan het dichtstbijzijnde of het beste overeenkomen met de snelheid die u opgeeft.
Het monitorprogramma is niet veel moeilijker. Het gaat om het lezen van 2 bytes van het MAX144. Het lezen wordt uitgevoerd tweemaal zodat we altijd op CH2-gegevens (die moet worden kortgesloten aan CH1) worden bediend. We maken een twee-byte word met de eerste byte wordt de MSB en anderzijds de LSB. Wij vervolgens maskeren de 12e bit die aangeeft welke kanaal wij lezen, en ten slotte dat omzetten in een spanning van de resulterende waarde voor conversie naar een temperatuur. De conversie naar temperatuur houdt de lineaire functie (V * 100)-50 die de conversiefunctie tot temperatuur volgens het gegevensblad.
double read_temperature() { double scale = 3.3/4096; double voltage; unsigned char data[2] = {0x00, 0x00}; int value;<br> SpiOpenPort(0,0,10000);<br> // read twice to get CH2 data<br> SpiWriteAndRead(0, data, 2);<br> SpiWriteAndRead(0, data, 2);<br><br> SpiClosePort(0); // convert to a 2 byte word MSB first<br> value = (((int)data[0] << 8) + (int)data[1]) & 0x0FFF;<br> voltage = value * scale;<br> return (voltage * 100) - 50;<br>}
Na het lezen van de spanning die deze in de MySql tabel wordt ingevoegd. Voordat we kijken naar die code wel, hebben we een klein verschil in MySql aanbrengen en de database en tabel structuur kunt maken die nodig zijn voor de toepassing om goed te functioneren.
De bron van de bewaarplaats van github downloaden: https://github.com/scottmccain/tempmonitor
De benodigde tabellen maken en database met behulp van de volgende opdracht (Let op dit slechts is één keer worden gedaan):
? mysql -u root -p -e "create database Piservicedb; use Piservicedb; create table temperatures (id INT NOT NULL AUTO_INCREMENT, temperature double NOT NULL, timestamp DATETIME NOT NULL, PRIMARY KEY ( id ) )";
Wisseling woninggids voor naar de hoofdmap van het project:
CD tempmonitor
Zorg ervoor dat u het script uitvoerbaar markeren:
chmod + x./createdb.sh
Vervolgens het script uitvoeren:
./createdb.shGa in uw referenties (u kan de gebruiker desgewenst wijzigen door het script wijzigen) en de database en tabelstructuur wordt gemaakt voor u.
Zodra dat is voltooid kunt u de vereiste library-bestanden bouwen door het uitvoeren van:
sudo bibliotheek maken
Dit zal bouwen en installeren van de vereiste bibliotheek en gedeelde object voor de temperatuur-monitor. Na dat u kunt bouwen en installeren van de monitorprogramma. Voordat u de broncode bouwen, er zijn echter een paar commando's die u moet uitvoeren voor de hand. De makefile, is afhankelijk van 2 variabelen van het milieu dat moeten worden ingesteld voordat de code zal compileren of naar behoren koppelen. De variabelen moeten worden vastgesteld met de volgende opdrachten:
[invoegen, opdracht instellen vars met mysql_config]
Tot slot kunt u bouwen en installeren van het programma met de volgende opdracht:
sudo make & & sudo maakt installerenDit zal de broncode voor het monitorprogramma bouwen en installeer het op een locatie waar cron het kan zien.
Vervolgens maken we een crontab om te beginnen met temperaturen van logboekregistratie op basis van getimede. Eerst de crontab editor te openen door de volgende opdracht uit te voeren:
sudo crontab -eZodra de editor is open scroll naar de onderkant van het bestand en voeg de volgende regel:
*/5 * * * * /opt/bin/monitor
Sla uw wijzigingen op. Dit werkt het monitorprogramma elke 5 minuten om te registreren van de temperatuur. U kan de vermelding voor uw eigen behoeften aanpassen. Raadpleeg de cron man pagina's voor meer informatie.
Gefeliciteerd! Op dit moment moet je Raspberry Pi worden registreren temperaturen. U kunt dat controleren door te gaan in mysql en een query uitvoeren op de tabel van de temperaturen in de servicedb database. Daarna zal ik laten zien u een eenvoudige webservice en toepassing die ik opgeklopte de waarden uit de database wilt weergeven.