Med hjälp av sensorer, 433Mhz RF moduler och Adafruit's BLE Bluefruit chip för att samla uppgifter om Smartphone med Evothings Studio (3 / 6 steg)

Steg 3: Arduino sändarmodul



Vi kommer börja med att göra sändarna. De är alla byggda och kodas på samma sätt, den enda skillnaden är det identifikationsnummer som vi kommer att lägga till i koden. Låt oss börja med att binda den upp.

Jag använde stift 2 på Arduino för mottagarendata pin och pin 3 för sändarendata stift. Mottagaren har 2 identiska data stift, behöver du bara använda en. Fotocellen är ansluten till pin A0 på Arduino. Dock måste du använda en resistor ansluten till en av de fotocell stift. För mesta, en 10 k Ω motstånd är nog, men om du planerar att använda den i ett ljust rum, du kan behöva ersätta den med en 1 k Ω motstånd, eftersom det förmodligen kommer att mätta.

Nu ska vi gå till koden. Vi kommer att använda ett bibliotek kallas RadioHead skicka och fick meddelande med RF-sändare/mottagare. Det du behöver är som kallas RH_ASK, som står för RadioHead Amplitude Shift Keying. Du hittar den på denna webbplats. Du behöver även SPI (Serial Peripheral jagnterface) biblioteket som används för kommunikation mellan två mikrokontroller. Det är inte används i koden som behövs för att kompilera den.

#include < RH_ASK.h > / / Radiohead bibliotek för RF-moduler
#include <SPI.h > / / faktiskt inte används men behövs för att sammanställa

Nästa steg är att skapa RH_ASK-objektet att vi kommer namn driver. Om du inte anger några parametrar, kommer det att skapas med standardinställningarna som är:

  • Hastighet = 2000bps
  • RX stift = 11 (Rpostob)
  • TX pin = 12 (Transmit)
  • PTT pin = 10 (Push to talk)

Som jag använder stift 2 och 3, kommer jag ange dessa parametrar. Typ av RF-moduler använder vi har inte funktionen Ptt, så du kan ignorera det, om inte du ansluter något till pinne 10, i vilket fall måste du ställa in Ptt nåla fast till en oanvända pin (eller -1) eftersom det kommer att orsaka några störningar annars.

RH_ASK driver (2000, 2, 3); Ställa in RX stift (mottagare) till 2 och TX stift (sändare) till 3

Här är de globala variabler som används i koden:
Variabeln rum är den Arduino identifikationsnummer. Behöver du öka det för varje sändare Arduino du använder.
Variabeln startRequest består av bokstaven "a" följt av ID-numret. Sändaren Arduino att jämföra begäran tas emot från "modern" Arduino till denna sträng. Om de matchar sedan skickas tillbaka data läsa från sensorn.
Variabeln photocellPin är PIN-koden som fotocellen är ansluten.
Variabeln photocellReading lagrar värdet läsa från fotocellen.

constint rum = 0; ID-nummer
String startRequest = "a"String(room); Begäran skickas av "modern" Arduino

constint photocellPin = A0; Fotocell pin
int photocellReading; Variabel för att lagra fotocell behandlingen

Det setup är ganska enkelt. Du måste ställa in fotocell PIN-koden till INPUT -läge och om du vill starta den seriell kommunikationen för felsökning.

voidsetup()
{
pinMode (photocellPin, ingång);

Seriella.begin(9600); För felsökning
om (! driver.init()) / / om RF-moduler strandat till starta
Seriella.println ("init misslyckades");
}

Vi kommer att skriva koden som hanterar mottagandet av begäran och för överföring av data i loop delen. Vi börjar med att skapa en 2 byte lång buffert som kommer att lagra mottagna begäran. Uint8_t formatet är detsamma som ett byte, och innebär osignerat heltal av längd 8 bitar. Vi måste också ange dess längd i variabeln buflen .

voidloop()
{
uint8_t buf [2]. Buffert används för att lagra mottagna begäran, dess storlek är inställd på 2 byte som begäran är: "en" + String(room) (t.ex. a0)
uint8_t buflen = sizeof(buf);

När RF-mottagare får ett meddelande av storleken buflen, lagras det i buf. Eftersom formatet för meddelandet är en matris med byte, måste vi förvara den i en string-variabel för att jämföra det med förväntade begäran. Detta görs genom att tilldela variabeln buf , föregås av (char *). Observera att den * innebär att tecken skapat pekare till byte, som inte används någon ytterligare lagring.

När jag testade detta, fick jag ibland begäran följt av några konstiga tecken vilket gjorde jämförelsen omöjligt. Jag kommer därför hålla bara de två första tecknen i meddelandet med hjälp av sträng funktion delsträng.

om (driver.recv (buf, och buflen)) / / vid mottagandet av en begäran
{
Sträng begäran = (char *) buf; Lagra begäran i en sträng för jämförelse
begäran = request.substring (0, 2); Meddelandet som mottogs följs ibland av konstiga tecken, att hålla bara två första
Seriella.print ("Got begäran:"); Skriva ut mottagna begäran för felsökning
Seriella.println(request);

Nu när vi har vår begäran lagras i en strängvariabel, kan vi jämföra det på begäran som vi förväntat oss, vilket är startRequest som vi skapade i början.

om (begäran == startRequest) / / om begäran matchar denna Arduino startbegäran, mäter data och skicka det
{
Seriella.println ("startbegäran fick");
Seriella.println("");
Delay(150);

Om mottagna begäran matchar startRequest, har Arduino att skicka tillbaka några data. Så vi börjar med att läsa denna data, i detta fall från fotocellen med funktionen analogRead och lagrar det i variabeln photocellReading . Detta ger oss ett värde mellan 0 och 1023, men detta är inte praktiska för parsning som värdet längd varierar. Vi kommer därför funktionen karta till karta värdet till ett nummer mellan 100 och 999, så att det är alltid 3-siffrigt.

Skicka data
Seriella.println ("skicka data");
Seriella.println("");
photocellReading = analogRead(photocellPin); Mäta ljusstyrka
Seriella.print ("fotocell behandlingen:");
Seriella.println(photocellReading); För felsökning

Mappa data till ett nummer mellan 100 och 999 så att det är alltid 3 siffror lång, vilket gör det lättare att tolka av modern Arduino
int mapPhotocellReading = karta (photocellReading, 0, 1023, 100, 999);

När vi har våra data korrekt mappade, måste vi skicka det till "modern" Arduino. Se till att det inte blanda ihop data, vi lägger till rummets ID-nummer i början av meddelandet kommer vi att skicka. Efter att vi skapar en char-matris (1 byte längre än meddelande) och kopiera vårt budskap till den med snöre funktion toCharArray.

String str = rum + String(mapPhotocellReading); Att skapa en sträng som innehåller rumsnummer och läsning så att "modern" Arduino vet var den kommer ifrån
röding data [5]. Char matris för lagra svar, måste vara 1 byte längre som stränglängden
str.toCharArray (data, 5); Kopiera strängen till char array

Nu allt som är kvar för att göra är att skicka meddelandet. Detta görs med hjälp av Skicka metoden för objektet föraren på ett meddelande i formatet uint8_t . Metoden waitPacketSent används för att se till att data skickas helt innan resten av koden

driver.send ((uint8_t *) data, strlen(data)); Skicka svar
driver.waitPacketSent(); Väntar tills svarspaket skickas helt

Seriella.print ("Data som skickas:"); För felsökning
Seriella.println(data);
Seriella.println("");
}
}
}

Se Steg
Relaterade Ämnen

Med hjälp av en ESP8266 till kontroll elnätet uttag med 433mhz sändare och mottagare

I detta Instructable visar jag hur man styr en huvudsocket använder en 433mhz sändare och mottagare.Jag började detta projekt eftersom jag ville kunna byta min lampa av och på utan att använda fjärrkontrollen som jag redan hade för att växla elnätet...

Styra arduino med visual studio via bluetooth

Hej alla,Här kommer att vi kontrollera en ledde via bluetooth med din dator av en progam wirtten med visual studiovad du behöver är:1) Arduino (en)2) Bluetooth-modul (hc05 eller hc 06)3) ledde4) 2 motstånd (10ko och 15ko)och du kan göra det ;)alla ko...

IoT väderstation med Adafruit HUZZAH ESP8266 (ESP-12naE) och Adafruit IO

Hej, alla! Tid sedan jag såg denna väderstation av Aleator777 och jag blev inspirerad att göra min egen väderstation. Jag såg att Intel Edison är för dyrt i mitt land, så jag bestämde mig för att leta efter något mycket billigare, och jag hittade den...

Ström från träden! Och med denna befogenhet att samla in data miljö.

Det är mycket väl känt att när lägger en koppar och en zink spö i en potatis, en spänning kan mätas över två stavar, som är hur potatis klockan fungerar. Vi kan emellertid ta denna idé ytterligare med hjälp av ett träd. Ett träd har en högre volym än...

Android handledning: Ansluta, konfigurera App på riktiga Android-enhet och kör Hello World-programmet med Android Studio

I detta inlägg kommer vi lära oss hur du ansluter och konfigurerar Android-enhet (Smartphone etc.) med Android Studio. Efter som vi kommer att köra en enkel Hello World-programmet. Följ bara följande steg:Steg 1: Aktivera utvecklaren alternativet i A...

Strainfree metod för att samla smör från ostmassa med hemgjord mixer

Det stammar och tar lång tid att samla smör från ostmassa manuellt. Elektrisk mixer fungerar i högspänning som är farliga för barn. Här är en enkel mixer består av enkla objekt upphandlas från gamla leksaker hemma. Det fungerar bra med batteri. 1/4 b...

Hur man skapar en kalkylatorprogrammet med Android Studio

De flesta människor äger idag smarta enheter som klarar bearbeta tusentals applikationer. Tyvärr bara en bråkdel av användare vet hur dessa program skapas och fungera. En populär plattform där de flesta av dessa program är utformade och genomförs i a...

DIY RTC DS1307 modul och användning med Raspberry Pi

Hej vänner,Efter en hel del forskning kom jag bygga min egen RTC med DS1307.Jag kommer att använda min RTC med Raspberry Pi.Jag skulle ha köpt en modul men det var alldeles för dyrt... så jag bestämde mig att bygga min egen.Kan komma igång.Steg 1: Re...

Komma igång med Bluetooth till seriell HC-06 trådlös modul och Arduino

Efter några tidiga misslyckade försök på att använda en bluetooth-modul JY-MCY HC06 slav jag har tillbringat många timmar på internet för att försöka förstå modulen ' kapacitet och hur den används. Som novis upptäcker du snart hur svåra dessa enheter...

Motoriserad linjär bild med hem sensor för robotic och CNC använder återvunnet delar

En linjär bild är betydelse för att ge gratis motion i en riktning, motordriven linjära bilder som maskin bilder, XY bord, roller tabeller och vissa passar ihop bilderna är lager flyttas av drivdon. Inte alla linjära bilder är motoriserade och icke-m...

RF 315/433 MHz sändar modul och Arduino

Hej varje kropp, jag sökte på Instructables om en enkel RF sändar-modul, som används i fjärrkontrollen för bilar, eller för att styra enkla uppgifter, som Styrrelä/på tyvärr har jag inte hittat vad jag behöver, så jag beslöt att skriva en enkel artik...

Arduino Temp/fukt Sensor använder DHT11 och I2C LCD-en dag projekt

Jag har köpt en Arduino Mega 2560 uppsättning som kom med några sensorer och naturligtvis och Arduino Mega.I detta instructable, jag kommer att dela med dig stegen jag tog för att göra en Arduino baserade temperatur och luftfuktighet visas.Element, s...

DIY Flex sensor använder Sugru och grafit pulver (Resistencia flexibla usando Sugru y polvo de grafito)

Este es el primero de 5 instructables que surgieron del Instructables & Sugru bygga natt (och dag en nuestro caso) que hicimos en el Laboratorio de Juguete, el 20 de julio del 2013: una Resistencia flexibla o Flex Sensor hecha con Sugru y polvo de gr...

Openremote Arduino sensorer servo RGB ledde och switch

Detta är hur man använder Openremote programvara för att kontrollera en RGB ledde med reglagen för varje färg, använda en switch för att aktivera en led eller inaktivera, flytta ett servo med ett reglage och läsa en temperaturgivare. Alla objekt ge f...

Hur man skapar en Desktop Os med Suse Studio

detta fungerar för windows och mac.Steg 1: Internet Gå till susestudio.com och logga in eller skapa ett konto. När du har loggat in klickar du på Skapa ny apparat. Klicka sedan på GNOME-skrivbordet och längst ned väljer du namnet.Steg 2: programvara...

Hur man Design med Silhouette Studio

Silhouette porträtt är en användarvänlig elektroniska skärmaskin. Det kan skära allt från kartong till vinyl, så du kan göra klistermärken, affischer eller även 3D-objekt. Med all denna möjlighet till kreativitet, kan det vara överväldigande att komm...

Att göra en hemsida om dig med Visual Studio (HTML, CSS, JQUERY)

Hej alla!Detta är min första instructable och i detta instructable jag ska visa dig hur du använder Visual Studio för att skapa din egen hemsida!Här är en nedladdningslänk för Visual Studio:Visuella Studio´s hem länkRikta data överför länkDetta kan v...

Rullande text med Arduino och Adafruit TFT sköld

Vad vi ska göra: demonstrera textrullning med en Arduino och en Adafruit 2,8 tum TFT beröring sköldVad vi kommer att användaArduino UnoAdafruit 2,8 tum TFT beröring sköldFörsamlingMount TFT sköld på ArduinoVar noga med för att undvika att böja pins -...

Hur man skapar en Android App med Android Studio

Denna handledning kommer att lära dig grunderna i hur man bygger en Android app använder Android Studio utvecklingsmiljö. Såsom Android-enheter blir allt vanligare, ökar efterfrågan på nya apps bara. Android Studio är en enkel att använda (och gratis...