Användning av GPS, hall sensor, lysdioder och Firebase med Edison (6 / 10 steg)

Steg 6: Redo koden



< stark > den fullständiga koden är listade på < / strong >< en href = "https://github.com/dtorczynski/safety_holster" rel = "nofollow" > https://github.com/dtorczynski/safety_holster</a><br>Bellow är full cpp koden som används för hall och gps-sensor. Observera att det också finns en LED och knappen som används i koden tillsammans med integration med FireBase.

/ * < Br > * författare: Thomas Lyet
< thomas.lyet
*
* Copyright (c) 2015 Intel Corporation.
*
* Tillstånd beviljas härmed, gratis, till någon person
* en kopia av denna programvara och tillhörande dokumentationsfiler (den
* "Programvara"), i programvaran utan begränsning, inklusive
* utan begränsning rättigheter att använda, kopiera, ändra, sammanfoga, publicera,
* fördela, underlicensiera eller sälja kopior av programvaran, och att
* tillåta personer som programvaran är inredda för att göra det, med förbehåll för
* följande villkor:
*
* Ovanstående copyrightmeddelande och detta tillstånd tillkännagivande skall
* ingår i alla kopior eller betydande delar av programvaran.
*
* PROGRAMVARAN TILLHANDAHÅLLS "I BEFINTLIGT SKICK", UTAN GARANTIER AV NÅGOT SLAG,
* UTTRYCKTA ELLER UNDERFÖRSTÅDDA, INKLUSIVE MEN INTE BEGRÄNSAT TILL GARANTIER AVSEENDE
* SÄLJBARHET, LÄMPLIGHET FÖR ETT SÄRSKILT ÄNDAMÅL OCH
* ICKE-INTRÅNG. UNDER INGA OMSTÄNDIGHETER SKALL FÖRFATTARNA ELLER UPPHOVSRÄTTSINNEHAVARE VARA
* ANSVARIG FÖR EVENTUELLA ANSPRÅK, SKADOR ELLER ANNAT ANSVAR, VARE SIG I EN
* AV KONTRAKTET, KRÄNKNING ELLER ANNAT, SOM UPPSTÅR FRÅN, AV ELLER I ANSLUTNING
* MED PROGRAMVARAN ELLER ANVÄNDNING ELLER ANDRA MELLANHAVANDEN I PROGRAMVARAN.
*/
IP-adress 10.60.0.145
#include "mraa.hpp" < /thomas.lyet

#include "UdpClient.hpp"
#include < grove.h >
#include < signal.h >
#include < ublox6.h >
#include < a110x.h >
#include < stdio.h >
#include < curl curl.h= "" >
#include < iostream >
#include < sstream >
#include < sträng >< / sträng >< / sstream >< / iostream >< / curl >< /stdio.h >< /a110x.h >< /ublox6.h >< /signal.h >< /grove.h >

med hjälp av namnområdet upm;
genom att använda namespace std;

CONST size_t bufferLength = 256;

/*
* IoT Cloud Analytics exempel
*
* Visa hur att kontinuerligt skicka data till IoT Cloud Analytics
* (https://dashboard.us.enableiot.com/)
* Läsa en analog spänning värde från en ingångsstift med hjälp av MRAA biblioteket,
* sedan skicka dess värde till IoT Cloud Analytics.
* Någon sensor som matar ut en variabel spänning kan användas med detta exempel
* kod. Lämplig är i Grove Starter Kit Rotary vinkel sensorn,
* Ljussensor, sund Sensor, temperatursensor.
*
* - analog i: analog sensor kopplad till pin A0 (Grove Base sköld Port A0)
*
* Ytterligare linker flaggor: ingen
*

*
* Preliminära steg
*
* Följ IoT Cloud Analytics komma igång-Guide:
* http://www.intel.com/support/motherboards/desktop/sb/CS-035346.htm
*
* Kontrollera om iotkit-agenten är aktiv på din enhet via
* $ systemctl status iotkit-agent
* Om inte, aktivera den med
* $ systemctl börja iotkit-agent
*
* Kolla datum för din enhet! Det är detta datum som kommer att registreras
* i IoT Cloud Analytics.
*

*
*-NOD (värd) och SERVICE (port)
iotkit-agent lyssnar för UDP-data
* enligt definitionen i /etc/iotkit-agent/config.json
*/
#define nod "localhost"
#define SERVICE "41234"

/*
* COMP_NAME definieras när en komponent är registrerad på enheten
* $ iotkit-admin registrera ${COMP_NAME} ${CATALOG_ID}
* I det här exemplet:
* $ iotkit-admin registrerar temperatur temperature.v1.0
*/
#define COMP_NAME "temperatur"

int main)
{
Skapa den Grove LED objekt med GPIO stift 4
UPM::GroveLed * ledRed = ny upm::GroveLed(4);
UPM::GroveLed * ledGreen = ny upm::GroveLed(3);
skapa en analog ingång objekt från MRAA med hjälp av pin A0
mraa::AIO * a_pin = ny mraa::Aio(0);
Skapa den knappobjekt med GPIO stift 8
UPM::GroveButton-knappen = nya upm::GroveButton(8);
Instansiera en Ublox6 GPS-enhet på uart 0.
UPM::Ublox6 * nmea = nya upm::Ublox6(0);

int gunDrawn = 100;
int magFieldAvg = 0;
int magFieldCurrent = 0;
int magField [10].
int tempIndex = 0;
int numSamples = 2;
sträng tempData;

Kontrollera att vi kör på Galileo eller Edison
mraa_platform_t plattform = mraa_get_platform_type();
om ((plattform! = MRAA_INTEL_GALILEO_GEN1) & &
(plattform! = MRAA_INTEL_GALILEO_GEN2) & &
(plattform! = MRAA_INTEL_EDISON_FAB_C)) {
std::cerr << "Plattform som inte stöds, spännande" << std::endl;
återvända MRAA_ERROR_INVALID_PLATFORM;
}

Läs i hall sensordata
om (a_pin == NULL) {
std::cerr << "Kan inte skapa mraa::Aio objekt, spännande" << std::endl;
återvända MRAA_ERROR_UNSPECIFIED;
}

GPS Setup

Kontrollera att porten initieras ordentligt. 9600 baud är standard.
om (! nmea -> setupTty(B9600))
{
cerr << "Misslyckades med att inställningsparametrar tty port" << oä;
tillbaka 1.
}

Curl setup
följde denna curl exempel: http://curl.haxx.se/libcurl/c/http-post.html
CURL * curl;
CURLcode res;
I windows, kommer detta att init winsock grejer
curl_global_init(CURL_GLOBAL_ALL);
få en curl handtag
curl = curl_easy_init();
Ange den URL som är på väg att få vår POST. Denna URL kan
lika bra vara en https:// URL om det är vad bör få den
data.
curl_easy_setopt (curl, CURLOPT_URL, "https://flickering-inferno-5440.firebaseio.com/data.json");

Detta är endast avsett att samla in NMEA data och inte behandla det
bör se ut på konsol

char nmeaBuffer [bufferLength];
char tempCharArray [10].
slinga för evigt utskrift indatavärdet varje sekund
While(1) {
uint16_t pin_value = a_pin -> read();
std::Cout << "analog input värde" << pin_value << std::endl;
std::Cout << "mag fältet genomsnittlig" << magFieldAvg << std::endl;

Beräkna magnetfält genomsnittliga
magFieldAvg = 0;

magField [magFieldCurrent ++] = pin_value;

om (magFieldCurrent > = numSamples) {
magFieldCurrent = 0;
}
för (int jag = 0; jag < numsamples; i ++) {magfieldavg = "" + = "magField [i];"} = "" == "" numsamples; < = "" p = "" >< / numsamples; i ++) {>

Sleep(1);

IF(magFieldAvg < gunDrawn) {
ledRed -> off();
ledGreen -> on ();
} annat {
om (nmea -> dataAvailable())
{
int rv = nmea -> readData (nmeaBuffer, bufferLength);

om (rv > 0) {
skriva (1, nmeaBuffer, rv);
std::Cout << nmeaBuffer << std::endl;
} annat {
några läst slags fel uppstod
cerr << "Port läsa fel" << oä;
bryta;
}

tempData = "{\"nmeaData\":\" ";
för (int jag = 70; jag < 81; i ++) {
tempCharArray [i-70] = nmeaBuffer [i];
// }

tempData = tempData + string(nmeaBuffer) + "\"} ";
tempData.append(nmeaBuffer);
tempData.append("\"}");

Nu ange vilka data som POST

curl_easy_setopt (curl, CURLOPT_POSTFIELDS, tempData.c_str());
std::Cout << tempData.c_str() << std::endl;
curl_easy_setopt (curl, CURLOPT_POSTFIELDS, "{\"gunDrawn\":\"true\ "}");

Utföra begäran, res får returkod
Res = curl_easy_perform(curl);
Sök efter fel
std::Cout << "curl utdata:" << res << std::endl;
om (res! = CURLE_OK)
fprintf (stderr, "curl_easy_perform() misslyckades: %s\n", curl_easy_strerror(res));

}

ledRed -> on ();
ledGreen -> off();
}
om (knapp -> value() == 1) {
bryta;
}
}

Ta bort objektet Grove LED
ledGreen -> off();
ledRed -> off();

ta bort ledGreen;
ta bort ledRed;
ta bort a_pin;
ta bort knappen;
ta bort nmea;

återvända MRAA_SUCCESS;
}

Se Steg
Relaterade Ämnen

Övningsexempel 4 - Kontrollera lysdioder och servon med sensorer och göra funktioner

med Servo biblioteket; Mappning av variabler med en annan variabel; att skapa funktioner...

Smart hölster: Hall Sensor och GPS sensor för geo plats

Följande instructable beskrivs hur du ansluter din Intel Edison med Grove GPS-sensorn, Hall sensor, LED, knapp och Base sköld. Data är sedan fångade en belastat upp till den kunde använda Firebase.Observera att Grove GPS inte kommer standard i Gove S...

Med hjälp av lysdioder och laserdioder

Det finns en hel del instructables om att använda LED i cool och intressant sätt, men inte ofta diskuteras hur du bör använda lysdioder på elektroniska nivå.Sedan laserdioder är effektivt en LED (Light Emitting Diods) kommer att detta fungera för dem...

En användning för en 1 MW Lasern Pekpinnen

använda som incidens mätmodul, för att mäta anfallsvinkel av en vingprofil i grader.Mestadels på modell flygplan när du ställer in vingen.kommersiell enhet här AccupointSteg 1: Mätenhetens komponenter mätaren består av:1. kroppen, (enkel aluminium ga...

Liten katt hängmattor - hem eller skydd användning

Denna lilla pvc pipe katt hängmatta ramens färdiga måtten är: 10" lång, 10 ½" bred, 16 ½" lång.När jag starta volontärverksamhet på min lokala djurhemmet, jag såg att någon hade gjort pvc pipe ram katt hängmattor. Hängmatta ramarna var olik...

Hur man använder och gå med EL wire

De flesta Instructables du hitta är kort och erbjuder grunderna för att upprepa vad visades.Som ni kanske redan märkt jag gå ett något annorlunda sätt med min, så var inte blyg och tycker att det är lång och tråkig ;)Jag kommer att fokusera främst på...

Skicka SMS TCPIP GATEWAY - PHP, PYTHON och MySQL med RPI och a-gsm sköld

För en tid sedan berättade en av mina grannar, som äger en online-biljett verksamhet, om ett förekommande problem. De måste kontrollera registreringstiden användare, deras telefonnummer. Han syftar till att genomföra en process som skicka via SMS en...

Arduino - Ultrasonic Sensor med lysdioder och Summer

Hi guys detta är min första tutorial, jag har precis börjat för några månader sedan lära sig elektronik (tidigare jag har bara visste hur man programmerar i C och Python). När jag avslutat projektet (tog mig ca 5 timmar eller något) har jag beslutat...

Migbot Prusa I3 3D skrivare - montering och användning

3D-utskrifter är en av dessa coola tekniker att när du börjar använda det, undrar du hur du någonsin fick along utan det förut. Jag har designat och producerar 3D-tryckta delar i flera år, dock så långt jag har använt tjänster såsom Shapeways att fak...

Hur man korrekt skära, borra och böja Plexiglas att göra en multi-användning gopro tripod.

Detta instructable är i tävlingen "Upp!" och jag skulle älska det om du kunde ta sig tid att rösta om du tycker att jag förtjänar att rösta, tack! Njut!Jag hade fått göra en del arbete med plexiglas nyligen och hittade några bra sätt att göra må...

Tredje Hand ++: en multi-användning hjälpande hand för elektronik och andra känsliga arbete.

Tidigare jag har använt den tredje händer/hjälpande händer finns på kedjan elektronik butiker och har varit frustrerad över deras användbarhet. Jag kunde aldrig få klipp exakt där jag ville ha dem eller det tog mer tid än det egentligen borde för att...

Reparera väska handtaget med hjälp av en plastflaska och sin mössa. En kreativ användning av begagnade plastflaska

Hej alla, här jag (Mr Suhasa, Ph.D. student i bioteknologi, Bengaluru, Karnataka, Indien) Visa hur man håller en påse med trasiga handtag. En plastflaska och sin mössa kan användas praktiskt att göra ett handtag för väska - https://www.youtube.com/wa...

Användning av tidningen, Eco Friendly; Återanvända tidningen. Eco Friendly kvast och Eco Friendly soptunna från tidningar.

Hej alla, här (Mr Suhasa, Ph.D. student i bioteknologi, Bengaluru, Karnataka, Indien) har jag kombinerat mina videor berättar två användningsområden av Läs tidningen-https://youtu.be/CB86G3aeOSQ titta på hur man gör en kvast med endast tidningar och...

Etsning på någon yta billigt och utan att den användning av kemikalier

detta är en annan av mina egna processer att, fram till nu, jag har ganska mycket kvar till mig själv. Jag har använt Paasche air radergummit under många år, och med de flesta kemikalier, har jag vände den i lite av ett litet företag. Jag lägger lite...

Användning upp fet rester (Spaghetti och vitlök Parmesan biter på Pita)

så denna vecka var typ av en hektisk period. Vi tillbringade mer på snabbmat än vad vi normalt gör och sedan när vi laga mat, vi av misstag lagt för mycket olja. Så i slutet av veckan idag var resterna vi hade typ av fet och inte aptitlig.Om du bor i...

Raket bilar - en tid användning-bil båt signalpistol och wtf maskinen

igår gick jag till en hobby butik av mitt hus och jag köpte 4 modell raket bilar var de en gång så jag tänkte det skulle vara kul att använda dem för olika saker, än en raket alla dessa små leksaker är en gång använda det är därför de är billiga ser...

ESP8266 Trådlös toalett användning indikator (Smart Home)

Det är som en ingenjör, turen att arbeta för ett företag som gör upp med en grupp av maker. Eftersom vissa problem möter vi ofta i vårt liv, vår manger tillåter oss att sätta vår kreativitet i full spela på grund av den öppna atmosfären, vi kan bygga...

ACCELEROMETER & LOGGER + göra & användning

Bakgrund och syfteFör några veckor sedan en vän bröt hennes underarm: hon var på en buss vars föraren drog våldsamt bromsarna, och hon föll ner. Detta påminde mig om de få gånger som jag hade (artigt) påminna busschauffören att han inte skulle transp...

Mediatek linkit en - Bygg din egen spårning webbplats med hjälp av linkit en GPS, GPRS och JSP med Google karta

Först och främst mycket tack för Mediatek för skicka mig en Mediatek Linkit en styrelse. Jag är mycket glad å öppna förpackningen och arbeta med WIFI, Bluetooth, GPS, GSM, GPRS. Det är mycket trevligt. Ser utdata från varje kod har mitt sinne hoppa a...