Hugo, eller "U go! för LinkIt en (3 / 4 steg)

Steg 3: Programvaru- och kontroll



Som tidigare nämnts, är programvaran tillgänglig under licensen Apache 2.0 på GitHub.

Utvecklingen av ett effektivt övervakningssystem, med hänsyn till behovet av att spara så mycket batteri som möjligt inblandade vissa svårigheter samtidigt ge tillförlitlig information med en relativt enkel sensorer arkitektur krävs för att utveckla några effektiva strategier som kommer att diskuteras nedan. För full källa (dokumenterade), se offentliga databasen ovan.

Visuella meddelanden

På grund av dess användning är det nästan självklart att denna enhet inte kräver ett komplett användargränssnitt att arbeta. Men genom den andra sidan är det mycket användbart förmågan att veta status för Hugo med bara en titt. Valet var att anta en enda RGB ledde till hantera alla viktiga signaler som har känsla för att visuellt meddelas. I tabell förklara antagna färgkodning och ljus varaktighet för varje övervägd tillstånd.

För en effektiv färg förvaltning som har skapats en tvådimensionella matris med färginställningar RGB RGB LED stift och de olika villkor har varit knuten till en specifik färg.

Färgkodningen struct < br > int rgb [8] [3] = {
{HÖG, LÅG, LÅG}, / / RÖD
{LÅG, HÖGT, LÅGT}, / / GRÖN
{LÅG, LÅG, HÖG}, / / BLÅ
{HÖG, HÖG, LÅG}, / / GUL
{HIGH, LOW, HIGH}, / / MAGENTA
{LÅG, HÖG, HÖG}, / / CYAN
{HÖG, HÖG, HÖG}, / / VIT
{LÅG, LÅG, LÅGT} / / SVART
};

#define SMS_COLOR C_YELLOW
#define WEB_COLOR C_WHITE
#define TEMPERATURE_ALERT_COLOR C_MAGENTA
#define BATTERY_ALERT_COLOR C_RED
#define MOTION_ALERT_COLOR C_BLUE
#define MOTION_WARNING_COLOR C_YELLOW
#define MOVING_COLOR C_GREEN

En enkel setColor() funktion kan sedan skapa LED av önskad färg.

Annullera setColor (int colorID) {
digitalWrite (RED_PIN, rgb[colorID][L_RED]); < br > digitalWrite (GREEN_PIN, rgb[colorID][L_GREEN]); < br > digitalWrite (BLUE_PIN, rgb[colorID][L_BLUE]); < br >}

Hur huvudloop fungerar

Funktionen loop() definierar hela logiken i programmet, som är uppdelad i tre huvuddelar:

  • SMS-processor, alltid köra emot kommandon från användaren
  • Webben uppdatera förlopp (om användaren har uppdaterat cloud webbfunktioner)
  • Alert och visuella signaler kontrollerna

Den enda verksamhet som alltid kör är SMS aktivitet som regelbundet kontrollera förekomsten av meddelanden i kö

Som linkIt en under körningen av delay() går kommando i energisparläge är det viktigt strategin denna uppmaning används längs programmet; med en bra optimering är det möjligt att dramatiskt öka enhetens batteri tiden istället för att ha det fungerar bara några timmar. Den aktuella versionen av programvaran kan förbli för ca 24 timmar i standby-läge utan att behöva ladda batteriet. Detta menar, i en verklig situation, om hunden är i bakgården hund hus och under en natt jag ser är försvann jag kan aktivera enheten och börja spåra honom som ser miljön temperatur och sin aktivitetsnivå.

Bästa kalibreringen hittills är baserad på de olika inställningarna av försening till grand ett bra timing svar Hugo enheten i alla tillstånd med e mindre möjliga strömförbrukning.

Datauppdatering frekvenser i ms < br > #define FREQ_REMOTE 10000 / / (10 SEK.)
#define CYCLES_BATTERY_LEVEL 90 / / antalet ms är CYCLES_BATTERY_LEVEL * FREQ_REMOTE (15 min)
#define CYCLES_TEMPERATURE 15 / / antalet ms är CYCLES_TEMPERATURE * FREQ_REMOTE (2,5 min)
#define CYCLES_MOTION 30 / / antalet ms är CYCLES_MOTION * FREQ_REMOTE (5 min)
#define MAX_INACTIVITY_WARNING 30 / / nr-motion period innan du börjar Visuell varning (5 min)

SMS-processor

SMS processorn kontrollera varje slinga cykel förekomsten av meddelanden i kö och hämta dem skicka dem till tolken (se koden nedan).

Observera att efter det första (äldre) meddelandet i kö SMS bufferten rengörs automatiskt så om användaren skicka flera meddelanden utan att vänta på svar några av dem kan vara förlorad.

void sendSMSAnswer (String smsMsg) {< br > sträng svar = ""; Svarssträng att kommandot
booleska sendResponse;

msgQueue = false; Inaktivera kön. Kommer att vara skapar om omöjligt att skicka meddelande
sendResponse = false; Ställ in till true om endast ett giltigt kommando tas emot

Kontrollera innehållet i meddelandet för kommandot
och förbereda svarsmeddelandet

// ................................................... Heta
(detta är ett själv skicka meddelande)
IF(smsMsg.equals(CMD_OVERHEATING)) {
svar = getTemperatureAlert();
sendResponse = sant;
// ................................................... Start
} annat if(smsMsg.equals(CMD_START)) {
IF(!Armed) {
powerGPS(true);
svar = CMD_BOARDARMED;
beväpnade = sant;
sendResponse = sant;
}
annat {
svar = CMD_ALREADYRUNNING;
sendResponse = sant;
}
// ................................................... Stanna
} annat if(smsMsg.equals(CMD_STOP)) {
IF(Armed) {
powerGPS(true);
svar = CMD_BOARDSTOPPED;
beväpnade = false;
sendResponse = sant;
}
annat {
svar = CMD_NOTRUNNING;
sendResponse = sant;
}
// ................................................... Information
} annat if(smsMsg.equals(CMD_INFO)) {
IF(Armed) {
svar = getBatteryLevel();
svar += getTemperature();
svar += getMotion();
svar += getGPSPosition();
sendResponse = sant;
}
annat {
svar = CMD_NOINFO;
sendResponse = sant;
}
// ................................................... Firmware
(papperslösa)
} annat if(smsMsg.equals(CMD_FIRMWARE)) {
char bl [MSG_BUFFER];

sprintf (bl, CMD_FIRMWAREINFO, checkBatteryLevel());
svar = bl;
sendResponse = sant;
// ................................................... Hjälp
} annat if(smsMsg.equals(CMD_HELP)) {
svar = CMD_HELPMSG;
sendResponse = sant;
}
// ................................................... Okänd
annat {
svar = CMD_UNKNOWN;
sendResponse = sant;
}

Skicka svaret SMS
IF(sendResponse) {
Ställa in målnumret börjar SMS skickas process
LSMS.beginSMS(REMOTE_NUMBER);
Skicka meddelande (svar)
LSMS.print(response);
Prova att skicka meddelande eller aktivera kön
IF (!. LSMS.endSMS()) {
msgQueue = sant; Aktivera en kö för skicka igen
msgQueueMessage = smsMsg; Sparar köade meddelandet
}
} / / Skicka svar stämmer
}

Observera att kommandot odokumenterade Firmware utförs oberoende av enheten, återvänder den firmware version, version och build-nummer batterinivån och datum för den senaste uppdateringen.

Styra Hugo

Kanske låter konstigt implementera en metod för att styra enheten via SMS, men det finns många skäl att försöksvis bekräftade att hans är förmodligen den mest tillförlitliga metoden.

  • Det är nästan säkert att endast godkända telefonnummer kan skicka kommandon.
  • Det är tillförlitliga, eftersom SMS (eller text meddelande) inte är förlorat om mottagaren har ingen täckning när det skickas. Eftersom det inte finns täckning igen meddelandet omedelbart emot och bearbetas.
  • Det är en billig lösning. Det finns många aktörer som ger hundratals dagliga eller månatliga gratis SMS
  • Det behöver inte speciella tjänster eller dedikerade applikationer att köras
  • Gör det fjärranslutna systemet kan nås i många förhållanden när mer sofistikerade metoder misslyckas.
  • Om till att föredra andra trådlösa metoder som WiFi, Bluetooth eller BLE eftersom det är tänkt att i de flesta fall den enheten bör vara gör att det är långt bort från användaren.

Styrprotokollet för SMS är mycket enkel och bygger på en uppsättning kommandon som ska skickas till mobilnumret på enheten. Väsentliga genomförs och fungerar bra, flera andra är under test.

Start

Detta kommando aktiverar enheten som börja spåra positionen var 10 sekunder och kolla hunden aktivitetens status och miljön temperatur.

Information

En komplett returstatus sensorerna och den faktiska ställning. Position visas som en Google Maps-länk som öppnas i webbläsaren på mobil smartphone visar läget.

Stanna

Kommandot inaktivera systemet som returnerar i standby-läge.

FRAMTIDA IMPLEMENTERINGAR:

Tyst

Att spara energi, visuell anmälan RGB LED ignoreras och hålls

Samla in

Aktivera/inaktivera datainsamling under aktiviteten på en fil som sparas på microSD-kortet.

Web

Aktivera/inaktivera spårningsdata skickas till webbservern. När aktiverad, användaren kan spåra vägen för hunden realtid på webben men förbrukar mer ström.

Se Steg
Relaterade Ämnen

LinkIt en röst domare

Tro det eller ej, stöder MediaTek LinkIt en styrelsen inspelning via 3,5 mm ombord jack!Jag bläddrade igenom forumen för detta forum och jag hittade lite kod som kallas röstinspelning API. Det finns inga exempel skisser av detta i mappen exempel så j...

LinkIt en flamma Finder

Detta Instructable visar dig hur du skapar en flamma finder använder din LinkIt ONE. Detta projekt använder en flamma Sensormodul och en servo Skanna ett område och sedan hitta en låga inne i området. Låt oss börja!Steg 1: material LinkIt enLågan mod...

LinkIt en Joystick laserpekare

Kul litet projekt som du kan göra att lura runt med vänner och familj! Jag använde 2 servon kopplade ihop för att ge mig x och y rörelse kapacitet och sedan kontrolleras dem båda genom en joystick så att användaren kan syftar laser som ett spel. Låt...

LinkIt en Radar Scanner

I detta instructable jag kommer att visa dig hur du skapar en radar med LinkIt en mikrokontroller. Detta projekt ursprungligen kom från hur till mekatronik men detta instructable visar dig hur man bygger projektet med LinkIt ONE. Detta instructables...

LinkIt en Tutorials - #3 tala med extern enhet

Jag hoppas att du följt mina tidigare två LinkIt en tutorials och allt fungerade bra.För den här läraren kommer vi att ansluta en extern enhet (i detta fall en LED (Light Emitting Diode)) till LinkIt en styrelsen.Detta kommer att Visa styra externa e...

APDuino på WiFi / 3G - workaround

många gånger det finns ingen bekväm trådlös anslutning möjlighet på önskad plats för automation. Som APDuinOS (från APDuino projektet) stöder endast kabelanslutna Ethernet från och med nu, kan följande lösning användas för att få ett trådlöst (WiFi e...

Skapa ditt eget äventyr spel (HTML)

detta är en mycket mycket mycket grundläggande användning av HTML-programmering att göra a skapa ditt eget äventyrsspel. Jag är inte super kunnig i HTML. Om du ser detta och prova och vill nötkött upp ditt spel för att göra det mer visuellt awesome k...

Raspberry Pi fjärrkontrollen gratis!

För min första kompatibel ville bara ge alla en snabb tutorial på hur man använder HDMI-CEC-protokollet för att styra din Pi med din TV: ns fjärrkontroll.Detta är mycket användbart eftersom är slipper du köpa en fjärrkontroll bara för din Pi och ocks...

Kid's Maker project: lampa

2 minuters maker project för att undervisa barn om lampa, el och lite historia.Steg 1: komponenter 1. Leviton 125 15 Amp, 660 Watt, 125 Volt, 2-polig, 2-tråd, Socket till Outlet Adapter$2 på Amazon.2. gemensam USB nätadaptrar (du förmodligen redan fl...

WiFi kontrollerad RGB LED Strip

De IR-fjärrkontroller som används för att styra RGB LED strips kan ibland bli irriterande på grund av deras begränsade räckvidd och jakt på fjärrkontrollen när du inte hittar den. Detta enkla, men effektiva projekt kan lösa ett problem genom att kont...

LinkitONE LCD!

Ville någonsin göra ett spel med din LinkitONE? Har du fått en styrelse och ville göra något coolt än webbservrar eller blinkande lysdioder med din Linkit? Då är denna handledning rätt för dig!Här ska jag visa dig hur man gör en enkel 1-knappen arcad...

En enkel hydroponiska System med MediaTek LinkIt™ en

Idag vill vi beskriva ett projekt baserat på den nya styrelsen Mediatek Linkit en. Vi vill med denna styrelse inser en enkel hydroponiska system som kan:1) att göra hydroponics näringslösning:Detta kommer att göras med hjälp av magnetventiler aktiver...

Arduino Serial Port Shield för Linkit en

Jag använder en hel del Lantronix WiBoxes. De låter dig koppla äldre seriella enheter till Wifi-nätverk. Jag använder dem för Digital Signage och säkerhet övervakning apps. Jag använder oftast bara en port på dem.Jag gjorde en legacy seriell port ada...

Alkohol detektering med Linkit en

En Alkoholmätare är en enhet för skattning av blodalkoholhalten (BAC) från ett utandningsprov. Bevisinstrument mäta inte direkt blodalkoholkoncentration eller koncentration, vilket kräver en analys av ett blodprov. Istället, de uppskattar BAC indirek...

Automatisk telefonsvarare med en Linkit

Hej... Detta instructable handlar om hur man gör en automatisk telefonsvarare... Jag fick en Linkit en fri giveaway styrelse... dess en utmärkt ombord med inbyggd GSM, GRP, GPS, RTC, BLUETOOTH, Wi-Fi, ljud, SD-kortplats... Som det programmera språket...

Baby samtal med en Linkit

HejDet är svårt för en baby eller barn nedan 3 år att komma ihåg 10-siffriga telefonnummer inte ens min mamma också vet inte min telefon inte... så i för att göra kallar lättare jag med bygga en Linkit enSteg 1: Komponenter som krävs Linkit enArduino...

Batteri Monitor - LinkIt en kod bita 1

Detta är först av vad som kan vara många, eller få, koden biter. Snabbt, ska koden biter vara liten plug-and-play kod segment för olika plattformar som syftar till att lägga till snabb och enkel funktionalitet i dina projekt. Oftast blir de funktione...

Ändra Windows Desktop Backgorund från Schemaläggaren eller genväg

Klippet ovan visar användningen av nytta, vilket gör för att ändra kommandoraden för windows bakgrund form, baken arkivera, genväg på skrivbordet och (viktigaste) från Schemaläggaren. Programmet från början levereras som med sökvägen till imagefil el...

Digital Object Counter med LDR gränssnitt med Mediatek LinkIt en

I detta Instructable, kommer du att kunna att Mediatek Linkit en gränssnittskortet med hjälp av LDR och Digital Object Counter som kan räkna objekt upp till 9999.Steg 1: krav General Purpose PCB ombord4 CD 4026 Johnson decennium Counter.4 gemensam ka...