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 draadloos sensornetwerk in uw huis bouwen

In deze zelfstudie leert u hoe u een netwerk van kosteneffectieve, draadloze sensormodules kunt maken. Veel van de kant-en-klare draadloze modules kunnen te duur zijn voor gebruik in meerdere sensorunits. Hoewel Wi-Fi- en Zigbee-modules populair en gebruiksvriendelijk zijn, kunnen hun kosten het gebruik ervan in een reeks sensoren onpraktisch maken. Er zijn echter goedkope RF-modules zonder alle dure functies die voor deze doeleinden prima werken. Het Arduino-platform kan low-end radiomodules gebruiken om gemakkelijk en betrouwbaar te communiceren.

Zodra de hardware is geassembleerd, maakt u gebruik van het Raspberry Pi-platform om de gegevens naar de Internet of Things-service van Xively te posten, waar u de waarden in de loop van de tijd kunt volgen en kunt activeren onder drempelvoorwaarden.

Dit project omvat drie delen, twee zenderunits en één ontvangerunit. De zenders bestaan ​​uit een Arduino-bord, sensor en RF-zender. De ontvangereenheid bestaat uit een Arduino-bord, een RF-ontvanger, een logisch niveau-omzetter en een Raspberry Pi.

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

In deze tutorial heb ik een set Arduino Nano-boards gebruikt die goed in een breadboard passen en eenvoudig te programmeren zijn. De 5V-versies van de Arduino pro mini of Trinket zullen echter ook goed werken en tegen een veel lagere prijs. Deze vereisen echter wat meer ervaring om te programmeren en te gebruiken. Kies verstandig.

  • Raspberry Pi—Model B met voeding, behuizing en SD-kaart—Zorg ervoor dat de GPIO-pinnen toegankelijk zijn met de behuizing die u kiest
  • Pi-compatibele wifi-adapter
  • Arduino
  • Overbruggingsdraden van breadboard
  • Mannelijke naar vrouwelijke jumperdraden
  • Logisch niveau-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,1 mm DC-cilinderaansluiting
  • 2 x 9V voedingsadapter met 2,1 mm x 5
  • Overbruggingsdraden van breadboard
  • PC/Mac met Arduino-programmeer-IDE geïnstalleerd
  • USB-kabel voor het programmeren van Arduino-kaarten
  • USB-toetsenbord en muis. Ofwel gecombineerd of met een hub, zodat beide kunnen worden gebruikt met een enkele USB-poort.
  • Het bronpakket dat bij deze zelfstudie hoort op uw programmeerwerkstation

De zenders zelf zijn relatief eenvoudige schakelingen. Er wordt slechts één pin gebruikt om de informatie van de temperatuur- en vochtigheidssensor op te halen en één pin wordt gebruikt om die gegevens naar de RF-zender te sturen. Het breadboard-diagram wordt hieronder weergegeven.

De 9V-voeding wordt bevestigd aan de vatconnector waardoor de onderste rails 9V worden. De stroomregelaar in de Arduino zal 5V produceren die veilig te gebruiken is voor de radio en sensoren, de bovenste stroomrail van het diagram.

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

Zorg ervoor dat u de onderstaande instellingen volgt en zorg ervoor dat u het gegevensblad voor de sensor en RF-module dubbel controleert om er zeker van te zijn dat de componenten correct in het breadboard zijn geplaatst en dat de voedings-, grond- en signaalpinnen op de juiste pinnen zijn aangesloten. Het fritzing-diagram is opgenomen in het bronpakket voor meer details.

De antenne is een belangrijk onderdeel van het bord omdat de RF-module geen ingebouwde antenne heeft. Ik gebruikte een 6-inch vrouwelijke naar mannelijke jumperdraad die op het breadboard was aangesloten en het werkte goed genoeg om ontvangst vanuit alle delen van mijn huis en een klein beetje buiten mogelijk te maken. 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 het gebruik van frequenties in verschillende landen. Zorg ervoor dat u zich aan deze regels houdt voordat u uitzendt. Dat gezegd hebbende, de signalen van deze modules zijn nauwelijks krachtig genoeg om naar buiten te gaan. In perfecte omstandigheden kunnen deze modules echter tot 150 voet uitzenden.

De zender maakt gebruik van twee bibliotheken die niet zijn gebundeld met de Arduino IDE. Download de bibliotheken zoals hieronder beschreven en decomprimeerde ze in uw schetsmap in een submap met de naam Bibliotheken.

  • Download het VirtualWire-bronpakket voor deze zelfstudie en pak de schetsmap van de draadloze zender uit in uw Arduino-schetsmap
  • Maak in de map wirelesstransmitter een map met de naam Bibliotheken
  • 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 map wirelesstransmitter/Libraries/ zodat u een andere submap hebt met de naam VirtualWire
  • Download de DHT-sensorbibliotheek van de github-pagina van het project
  • Pak de DHT-map ook uit in de map Bibliotheken. U zou nu de twee vereiste bibliotheekmappen DHT en VirtualWire in uw wirelesstransmitter/Libraries-map moeten hebben.

Deze tutorial gaat ervan uit dat je enige ervaring hebt met Arduino en hoe je ze programmeert met behulp van de Arduino IDE. Als je dat niet doet, zijn er zeer goede instructies op de officiële Arduino-site.

  • Open de schets van de draadloze zender uit het bronarchief in de Arduino IDE en sla lokaal een kopie op
  • Zorg ervoor dat de Arduino NIET is aangesloten op de voeding via de barrel-connector
  • Sluit het bord aan op uw programmeerwerkstation met een geschikte USB-kabel
  • Stel het bordtype in op het door u geselecteerde Arduino-bord onder het menu Extra> Bord
  • Stel de seriële poort in op de poort die werd gedetecteerd toen je het Arduino-bord aansloot onder het menu Extra> Poort
  • Zorg ervoor dat de MYID-definitie is ingesteld op 1 en dat de TRANSPIN en DHTPIN correct zijn ingesteld op de pinnen die zijn aangesloten op respectievelijk de RF-zendermodule en de DHT-sensor. Als je je bord volgens het bovenstaande diagram hebt gebouwd, zou dit allemaal al moeten zijn ingesteld. Zie het codevoorbeeld hieronder.
  • Zorg ervoor dat de EENHEID correct is ingesteld voor uw voorkeur Fahrenheit of Celsius.
12345 #define MYID 1      //het ID-nummer van dit bord. Wijzig dit voor elk bord dat je flitst.                      //De ID wordt samen met de gegevens verzonden, zodat u kunt zien welk apparaat de gegevens verzendt #define TRANSPIN 3  //op welke pin moet worden verzonden #define DHTPIN 4     // op welke pin de DHT is aangesloten #define UNIT 0      // 0 voor Fahrenheit en 1 voor Celsius

De MYID-definitie is een numerieke ID die de zender gebruikt om zichzelf op unieke wijze te identificeren. Omdat u meerdere zenders op verschillende locaties zult hebben, is het belangrijk om voor elke zender een unieke ID te hebben. Dit nummer wordt opnieuw gebruikt wanneer u het ontvangerscript instelt.

  • Verifieer de code door op Control-R te drukken om er zeker van te zijn dat de bibliotheken correct zijn opgenomen en gecompileerd.
  • Duw de code naar het bord door op de knop Uploaden op de werkbalk te klikken.
  • Open de vensters van de seriële monitor door op Control-Shift-M te drukken

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

12 Vochtigheid:44,00 %    Temperatuur:60,80 *F Bericht verzenden:ID:1:TS:23143:TF:60.79:RH:44.00

Het bericht is samengesteld uit Naam:Waarde-paren die de ontvanger zal afhandelen. De zender leest en zendt zijn signaal uit met een lang willekeurig interval. De sensoren veranderen niet veel of vaak, dus vaker dan eens per minuut uitzenden heeft geen toegevoegde waarde. De willekeurige wachttijd is om meerdere sensoren naast elkaar te laten bestaan.

Zelfs als er sprake is van een verdubbeling en het signaal van beide zenders wegvalt, zorgt het willekeurige interval ervoor dat hun volgende uitzendingen elkaar niet overlappen. De willekeurige seed voor dit interval wordt ingesteld vanaf een analogRead op een ongebruikte analoge poort die willekeurige waarden retourneert om ervoor te zorgen dat er geen twee zenders op hetzelfde patroon zitten.

De voorbeeldcode die de bovenstaande uitvoer genereert, is ingesteld om Fahrenheit te gebruiken. U kunt de TF:60.79-identificatie in de berichtreeks zien die aangeeft dat mijn lab inderdaad slechts een haar onder de 61 graden is. De relatieve vochtigheid RH:44.00 is echter een comfortabele 44%. Uit de koele, vochtige omgeving zou je kunnen afleiden dat mijn lab zich in mijn kelder bevindt. Misschien heeft iemand gelijk.

De zenders zijn standaard ingesteld om 2 tot 5 minuten te wachten tussen uitzendingen. Als u dit wilt versnellen voor foutopsporingsdoeleinden, wijzigt u de waarde delay() aan het einde van de schets zodat deze meer op 5000 (ms) lijkt. Het wordt ten zeerste aanbevolen dat u dit terug verandert en de code opnieuw uploadt naar uw zenders wanneer u klaar bent voor voltijds gebruik.

  • Bouw het tweede zenderbord
  • Wijzig de zenderschets zodat de MYID-definitie is ingesteld op 2
  • Upload de code naar het tweede bord
  • Open de vensters van de seriële monitor door op Control-Shift-M te drukken en te controleren of de uitvoer eruitziet als de eerste zenderkaart, behalve dat het verzonden bericht begint met ID:2

Het ontvangerbord is verantwoordelijk voor het ontvangen van het uitgezonden bericht op zijn RF-ontvangercomponent en het verzenden van dat bericht via seriële draden naar de Raspberry Pi. Het Arduino-bord wordt om een ​​aantal zeer belangrijke redenen gebruikt om het signaal te ontvangen. De VirtualWire-code gebruikt de realtime aard van de Arduino om het moduleren en demoduleren van het signaal te beheren.

Dit betekent dat de ontvangende eenheid op dezelfde frequentie moet werken. Bovendien is er weinig ruimte voor jitter op de ontvangende processor, waar de Raspberry Pi gevoelig voor is vanwege zijn preventieve, niet-realtime besturingssysteem. Door de kosten van een Arduino Pro Mini plus de RF-ontvangermodule te vergelijken met die van een Zigbee-module die rechtstreeks met de Raspberry Pi kon praten, bleek dat het gebruik van een externe Arduino nog steeds vrij zuinig was.

Bevestig op dit punt NIET de 5V- en aardingskabels van de Pi naar het breadboard. Houd de jumperdraden bij de hand, maar je wilt de Arduino niet van stroom voorzien via zowel de USB-poort als de Raspberry Pi.

Merk op dat de logische niveau-omzetter in de bovenstaande materialenlijst niet precies hetzelfde is als die in de Fritzing-bibliotheek, maar de pin-outs zijn goed gelabeld, alleen op verschillende plaatsen. Zorg ervoor dat de juiste draden zijn aangesloten op de juiste pinnen op de daadwerkelijke logische niveau-omzetter.

Dit onderdeel is nodig om het 5V Arduino seriële signaal om te zetten in een 3.3V Raspberry Pi serieel signaal en de Pi niet te beschadigen. Zie de afbeelding hieronder voor extra hulp.

Voor meer details:Een draadloos sensornetwerk in uw huis bouwen


Productieproces

  1. Draadloze sensornetwerken:6 dingen om te onthouden bij het wisselen van technologie
  2. Wat is een draadloos sensornetwerk met laag vermogen?
  3. Interface naar draadloze opritsensor
  4. Een sensornetwerk bouwen voor een 18e-eeuwse korenmolen
  5. Hoe u uw draadloze sensornetwerken kunt voeden en onderhouden
  6. Draadloze magnetische gegevensoverdracht
  7. CO2-monitoring met K30-sensor
  8. Hoe lang ben je?
  9. Capacitieve vingerafdruksensor met een Arduino of ESP8266
  10. USB-BLE draadloze MIDI-adapters
  11. Lange-afstand draadloos sensornetwerk