Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Een Betaalbaar Draadloos Sensornetwerk Bouwen voor Uw Huis

Deze tutorial leert u hoe u een netwerk van kosteneffectieve, draadloze sensormodules kunt creëren. Veel kant-en-klare draadloze modules zijn te duur voor gebruik in meerdere sensoreenheden. Terwijl Wi-Fi- en Zigbee-modules populair en gemakkelijk te gebruiken zijn, kan hun kosten het gebruik in een array van sensoren onpraktisch maken. Er zijn echter goedkope RF-modules zonder alle dure features die prima werken voor deze doeleinden. Het Arduino-platform kan low-end radiomodules gebruiken om eenvoudig en betrouwbaar te communiceren.

Zodra de hardware gemonteerd is, zult u het Raspberry Pi-platform benutten om de data naar Xively's Internet of Things-service te posten, waar u de waarden over tijd kunt volgen en kunt triggeren op drempelcondities.

Dit project omvat drie delen: twee zendereinheden en één ontvangereinheid. De zenders bestaan uit een Arduino-bord, sensor, en RF-zender. De ontvangereinheid bestaat uit een Arduino-bord, een RF-ontvanger, een logic-level-converter, en een Raspberry Pi.

Er is een breed scala aan Arduino-compatibele borden die gebruikt kunnen worden voor dit project. De minimumeis voor het bord is twee digitale GPIO-pins en één analoge pin. Selecteer een Arduino-compatibel bord dat past bij de kosten- en eenvoudsbehoeftes voor dit project.

In deze tutorial heb ik een set Arduino Nano-borden gebruikt die goed in een breadboard passen en simpel te programmeren zijn. Echter, de 5V-versies van de Arduino Pro Mini of Trinket werken ook goed en tegen een veel lagere prijs. Deze vereisen echter iets meer ervaring om te programmeren en te gebruiken. Kies wijselijk.

  • Raspberry Pi—Model B met voeding, behuizing, en SD-kaart—Zorg dat de GPIO-pins toegankelijk zijn met de behuizing die u kiest
  • Pi-compatibele Wi-Fi-adapter
  • Arduino
  • Breadboard draadbrugjes
  • Male-to-female draadbrugjes
  • Logic level converter
  • 434 MHz RF-ontvanger
  • Half breadboard

  • 2 x Arduino
  • 2 x Temperatuur / vochtigheidssensoren
  • 2 x 434 MHz RF-zender
  • 2 x Half breadboard
  • 2 x Breadboard-vriendelijke 2,1mm DC-baarconnector
  • 2 x 9V voedingsadapter met 2,1mm x 5
  • Breadboard draadbrugjes
  • PC/Mac met Arduino-programmeer-IDE geïnstalleerd
  • USB-kabel voor programmeren van Arduino-borden
  • USB-toetsenbord en muis. Gecombineerd of met een hub zodat beide met een enkele USB-poort gebruikt kunnen worden.
  • Het bronpakket geassocieerd met deze tutorial op uw programmeerwerkstation

De zenders zijn relatief simpele circuits. Slechts één pin wordt gebruikt om de informatie van de temperatuur- en vochtigheidssensor op te halen en één pin om die data naar de RF-zender te sturen. Het breadboard-diagram wordt hieronder getoond.

De 9V-voeding zal aan de baarconnector worden bevestigd, waardoor de onderste rails 9V worden. De spanningsregelaar in de Arduino produceert 5V dat veilig is voor de radio en sensoren, de bovenste power-rail van het diagram.

De sensor wordt geleverd met een 10k ohm-weerstand die de datapin met de voeding verbindt als pull-up-weerstand, terwijl een andere draad het verbindt met GPIO D3.

Wees voorzichtig om de onderstaande setup te volgen en dubbelcheck de datasheet voor de sensor en RF-module om ervoor te zorgen dat de componenten correct in het breadboard zijn gepositioneerd en de voeding, ground, en signaalpins met de juiste pins zijn verbonden. Het Fritzing-diagram is inbegrepen in het bronpakket voor meer detail.

De antenne is een belangrijk onderdeel van het bord omdat de RF-module geen ingebouwde antenne heeft. Ik gebruikte een 6-inch female-to-male draadbrug in het breadboard gestoken en het werkte goed genoeg om ontvangst toe te staan vanuit alle delen van mijn huis en een beetje buiten. Zoals aangegeven in het diagram, is 6,5-inch optimaal voor deze antenne als u extra bereik nodig heeft.

Een opmerking over RF-gebruik. Er zijn verschillende wetten en regels over frequentiegebruik in verschillende landen. Zorg ervoor dat u deze regels naleeft voordat u uitzendt. Dat gezegd hebbende, de signalen van deze modules zijn nauwelijks krachtig genoeg om buiten uw huis te komen. In perfecte omstandigheden kunnen deze modules tot 500 voet uitzenden.

De zender gebruikt twee bibliotheken die niet gebundeld zijn met de Arduino IDE. Download de bibliotheken zoals hieronder beschreven en pak ze uit in uw sketch-directory in een subdirectory genaamd Libraries.

  • Download het VirtualWire-bronpakket voor deze tutorial en pak de wirelesstransmitter-sketch-map uit in uw Arduino-sketch-map
  • In de wirelesstransmitter-map, maak een map genaamd Libraries
  • Download de nieuwste versie van de VirtualWire-code, 1.23 op het moment van schrijven, van de projectpagina
  • Pak de VirtualWire-map uit in de wirelesstransmitter/Libraries/ map zodat u nog een submap genaamd VirtualWire heeft
  • Download de DHT-sensorbibliotheek van de project-GitHub-pagina
  • Pak de DHT-map ook uit in de Libraries-map. U zou nu de twee vereiste bibliotheekmappen DHT en VirtualWire in uw wirelesstransmitter/Libraries-map moeten hebben.

Deze tutorial gaat ervan uit dat u enige ervaring heeft met Arduino en hoe u ze programmeert met de Arduino IDE. Als niet, zijn er erg goede instructies op de officiële Arduino-site.

  • Open de wirelesstransmitter-sketch uit het bronarchief in de Arduino IDE en sla een lokale kopie op
  • Zorg dat de Arduino NIET aangesloten is op stroom via de baarconnector
  • Sluit het bord aan op uw programmeerwerkstation met een geschikte USB-kabel
  • Stel het bordtype in op uw geselecteerde Arduino-bord onder het Tools > Board-menu
  • Stel de seriële poort in op de poort die gedetecteerd werd toen u het Arduino-bord aansloot onder het Tools > Port-menu
  • Zorg dat de MYID-define op 1 staat en dat TRANSPIN en DHTPIN correct ingesteld zijn op de pins verbonden met de RF-zendermodule en DHT-sensor respectievelijk. Als u uw bord per het bovenstaande diagram gebouwd heeft, zou dit al ingesteld moeten zijn. Zie het codevoorbeeld hieronder.
  • Zorg dat de UNIT correct ingesteld is voor uw voorkeur Fahrenheit of Celsius.
12345 #define MYID 1 //het ID-nummer van dit bord. Wijzig dit voor elk bord dat u flasht. //De ID wordt met de data meegestuurd zodat u kunt zien welk apparaat stuurt#define TRANSPIN 3 //op welke pin te zenden#define DHTPIN 4 // welke pin de DHT is verbonden met#define UNIT 0 // 0 voor Fahrenheit en 1 voor Celsius

De MYID-define is een numeriek ID dat de zender gebruikt om zich uniek te identificeren. Omdat u meerdere zenders op verschillende locaties zult hebben, is het belangrijk om een uniek ID voor elk te hebben. Dit nummer wordt opnieuw gebruikt bij het instellen van het ontvangerscript.

  • Verifieer de code door Control-R in te drukken om te zorgen dat de bibliotheken correct zijn opgenomen en gecompileerd.
  • Plaats de code op het bord door op de Upload-knop in de toolbar te klikken.
  • Open de Serial Monitor-venster door Control-Shift-M in te drukken

Het Serial Monitor-venster reset de Arduino, dus u zou een regel code op het scherm moeten zien die er ongeveer zo uitziet:

12 Vochtigheid: 44.00 % Temperatuur: 60.80 *FBericht Verzenden: ID:1:TS:23143:TF:60.79:RH:44.00

Het bericht bestaat uit Naam:Waarde-paren die de ontvanger zal verwerken. De zender zal lezen en zijn signaal uitzenden op een lang willekeurig interval. De sensoren veranderen niet erg veel of frequent, dus vaker uitzenden dan één keer per minuut voegt geen waarde toe. De willekeurige wachttijd is om meerdere sensors te laten coexisteren.

Zelfs als er dubbelsignalen zijn en het signaal van beide zenders verloren gaat, zal het willekeurige interval ervoor zorgen dat hun volgende uitzendingen niet overlappen. De willekeurige seed voor dit interval wordt ingesteld vanuit een analogRead op een ongebruikte analoge poort die willekeurige waarden zal retourneren om ervoor te zorgen dat geen twee zenders op hetzelfde patroon zitten.

De voorbeeldcode die de bovenstaande output genereert, is ingesteld op Fahrenheit. U kunt de TF:60.79-identifier in de berichtstring zien die aangeeft dat mijn lab inderdaad net onder de 61 graden is. De relatieve vochtigheid RH:44.00 is een comfortabele 44%. Men zou kunnen afleiden uit de koele vochtige omgeving dat mijn lab in mijn kelder zit. Men zou gelijk kunnen hebben.

De zenders staan standaard ingesteld om 2 tot 5 minuten te wachten tussen uitzendingen. Als u dit wilt versnellen voor debug-doeleinden, wijzig dan de delay()-waarde aan het einde van de sketch naar iets meer als 5000 (ms). Het wordt ten zeerste aangeraden dit terug te veranderen en de code opnieuw naar uw zenders te uploaden wanneer u klaar bent voor fulltime gebruik.

  • Bouw het tweede zenderbord
  • Wijzig de zendersketch zodat de MYID-define op 2 staat
  • Upload de code naar het tweede bord
  • Open de Serial Monitor-venster door Control-Shift-M in te drukken en verifieer dat de output eruitziet als die van de eerste zender met de uitzondering dat het verzonden bericht begint met ID:2

Het ontvangerbord zal verantwoordelijk zijn voor het ontvangen van het uitzendbericht op het RF-ontvangercomponent en het doorsturen van dat bericht over seriële draden naar de Raspberry Pi. Het Arduino-bord wordt gebruikt om het signaal te ontvangen om een paar heel belangrijke redenen. De VirtualWire-code gebruikt de realtime-aard van de Arduino om het moduleren en demoduleren van het signaal te managen.

Dit betekent dat de ontvangende eenheid op dezelfde frequentie moet opereren. Daarnaast is er weinig ruimte voor jitter op de ontvangende processor, waartoe de Raspberry Pi geneigd is, vanwege zijn preëmptieve, niet-realtime besturingssysteem. De kosten van een Arduino Pro Mini plus de RF-ontvangermodule vergeleken met die van een Zigbee-module die direct met de Raspberry Pi kon praten, onthulde dat het gebruik van een externe Arduino nog steeds nogal economisch was.

Op dit moment koppel de 5V- en ground-leids van de Pi NIET aan het breadboard. Houd de draadbrugjes bij de hand, maar u wilt de Arduino niet van zowel de USB-poort als de Raspberry Pi voeden.

Let op dat de logic-level-converter in de materialenlijst boven niet precies dezelfde is als die in de Fritzing-bibliotheek, maar de pin-outs zijn goed gelabeld, alleen op andere plekken. Zorg er zeker van dat de juiste draden met de juiste pins op de daadwerkelijke logic-level-converter zijn verbonden.

Dit component is vereist om het 5V Arduino-seriële signaal om te zetten in een 3,3V Raspberry Pi-seriële signaal en de Pi niet te beschadigen. Zie de afbeelding hieronder voor extra hulp.

Voor meer detail: Building a Wireless Sensor Network in Your Home


Productieproces

  1. Betrouwbare Draadloze Oprit-sensor voor Lange Opritten – Eenvoudige Raspberry Pi Integratie
  2. Een draadloos sensornetwerk implementeren op een 18e-eeuwse graanmalerij
  3. Arduino Draadloze Magnetische Dataoverdracht met Infineon 3D-Sensor
  4. K30 CO2-sensor: Real-time binnenluchtkwaliteitmonitoring met Arduino
  5. Bouw een Digitale Lichaamslengtemeter: Je Lengte Meten met Arduino en Lasersensor
  6. Een DFRobot Capacitieve Vingerafdruksensor integreren met Arduino of ESP8266
  7. USB-BLE Draadloze MIDI Adapters – Naadloze Connectiviteit voor Musici
  8. Robuuste lange-afstand draadloze sensornetwerken voor remote datamonitoring
  9. Wisselen van Draadloze Sensornetwerken: 6 Belangrijke Overwegingen voor Technologiemigratie
  10. Low-Power draadloze sensornetwerken begrijpen: Efficiënte IoT-oplossingen drijven
  11. Implementeren En Beheren Van Draadloze Sensornetwerken In Het Bedrijf