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

Arduino draadloos weerstation

Componenten en benodigdheden

Arduino Due
of Arduino Mega.
× 1
3.2" TFT HX8357C
× 1
DS3231 Real Time Clock-module
× 1
DHT22-temperatuursensor
× 1
SparkFun Transceiver Breakout - nRF24L01+
× 1
Broodplank (algemeen)
× 1
Mannelijke kop 36 Positie 1 rij - lang (0,1")
7 pinnen
× 1
Jumperdraden (algemeen)
meerdere
× 1
Arduino Nano R3
× 1
Xiaomi Powerbank
× 1

Over dit project

Het bouwen van een draadloos weerstation is een geweldige leerervaring. Wanneer u klaar bent met het bouwen van dit project, zult u beter begrijpen hoe draadloze communicatie werkt, hoe sensoren werken en hoe krachtig het Arduino-platform kan zijn. Met dit project als basis en de opgedane ervaring kun je in de toekomst eenvoudig complexere projecten bouwen.

Een weerstation is een apparaat dat gegevens over het weer en de omgeving verzamelt met behulp van veel verschillende sensoren. We kunnen veel dingen meten, zoals:

  • Temperatuur
  • Vochtigheid
  • Wind
  • Barometrische druk
  • UV-index
  • Regen

In het weerstation dat we gaan bouwen, gaan we op twee locaties temperatuur en vochtigheid meten en de huidige datum en tijd weergeven. Een weerstation bouwen is heel eenvoudig. Maar kan een maker een unit bouwen met een TFT-kleurenscherm en functies die overeenkomen met die van een commerciële unit? Het antwoord is ja! Met de kracht van open source software en hardware kan dit indrukwekkende weerstation eenvoudig worden gebouwd!

Het project bestaat uit twee delen:de zender en de ontvanger.

De zender meet de temperatuur en de luchtvochtigheid en stuurt de data draadloos naar de ontvanger. De ontvanger meet de temperatuur en de luchtvochtigheid, ontvangt de gegevens van de afstandssensor en geeft alles weer op een groot TFT-kleurendisplay.

Laten we dit project bouwen!

Stap 1:Verkrijg alle onderdelen

De onderdelen die nodig zijn om dit project te bouwen zijn de volgende:

  • Arduino Due ▶ http://educ8s.tv/part/ArduinoDue
  • Arduino Mega ▶ http://educ8s.tv/part/ArduinoMega
  • Arduino Nano ▶ http://educ8s.tv/part/ArduinoNano
  • 3.2" TFT-scherm ▶ http://educ8s.tv/part/32TFT
  • DHT22 ▶ http://educ8s.tv/part/DHT22
  • NRF24L01 ▶ http://educ8s.tv/part/NRF24L01
  • DS3231 RTC ▶ http://educ8s.tv/part/DS3231
  • Breadboard ▶ http://educ8s.tv/part/SmallBreadboard
  • Draden ▶ http://educ8s.tv/part/Wires
  • Koppins ▶ http://educ8s.tv/part/HeaderPins
  • Xiaomi Powerbank ▶ http://educ8s.tv/part/Powerbank

De kosten van het project bedragen ongeveer $ 40. U kunt de kosten van het project met $ 5 verlagen als u de Arduino Mega gebruikt in plaats van de Arduino Due. Ik heb ervoor gekozen om de Arduino Due voor de ontvanger te gebruiken omdat deze erg snel is en veel geheugen heeft. Dit zal in de toekomst erg handig zijn als we meer functies aan het project toevoegen.

Stap 2:Temperatuur- en vochtigheidssensor - DHT22

De DHT22 is een zeer populaire temperatuur- en vochtigheidssensor. Het is goedkoop, gemakkelijk te gebruiken en de specificatie claimt een goede precisie en nauwkeurigheid.

De DHT-sensoren bestaan ​​uit twee delen:een capacitieve vochtigheidssensor en een thermistor. Er is ook een chip aan de binnenkant die wat analoog naar digitaal omzet en een digitaal signaal afgeeft met de temperatuur en vochtigheid. Het digitale signaal is redelijk gemakkelijk te lezen met elke microcontroller.

Kenmerken van de DHT22

  • Lage kosten
  • 3 tot 5V voeding en I/O
  • 2,5mA max stroomverbruik tijdens conversie
  • 0-100% vochtigheidsmetingen met 2-5% nauwkeurigheid
  • -40 tot 125 °C temperatuurmetingen ±0,5 °C nauwkeurigheid
  • Langzaam

De verbinding met Arduino is uiterst eenvoudig. De sensorpin met het + teken verbinden we met de 5V of de 3.3V uitgang van de Arduino. We verbinden de sensorpin met het - teken met GROUND. Ten slotte verbinden we de OUT-pin met elke digitale pin van de Arduino.

Om de DHT22-sensor met Arduino te gebruiken, moeten we de DHT-bibliotheek gebruiken.

https://github.com/adafruit/DHT-sensor-library

Stap 3:De DS3231 Real Time Clock-module

De DS3231 Real-Time Clock-module is, zoals de naam al doet vermoeden, een real-time klok. Door de batterij te gebruiken, kan hij jaren meegaan omdat hij een minimaal stroomverbruik heeft.

De kosten van de module zijn extreem laag; het kost ongeveer $ 2 inclusief de batterij! We gaan het gebruiken om de tijd bij te houden in ons weerstationproject.

Stap 4:NRF24L01+:draadloze modules

De NRF24L01-module is een goedkope bidirectionele transceivermodule. De kosten ervan zijn minder dan $ 3! Het werkt op de 2,4 GHz-band en kan een gegevenssnelheid van 2 Mbits halen! Indrukwekkend is het niet? Het gebruikt de SPI-interface om met Arduino te communiceren, dus het is heel gemakkelijk te gebruiken. We moeten 7 van de 8 pinnen van de module aansluiten om hem met Arduino te laten werken.

Helaas kunnen we de module niet in het breadboard steken, dus we gaan mannelijke-naar-vrouw draden gebruiken om de module op Arduino aan te sluiten. Pin nummer 1 van de module is GND. Je moet hem aansluiten op Arduino Ground. De volgende pin is Vcc. Je moet hem aansluiten op de 3.3V uitgang van de Arduino Uno. Wees voorzichtig! Sluit hem niet aan op 5V, anders vernietig je je module! De derde pin heet CE en u kunt deze op elke gewenste digitale pin aansluiten. In dit voorbeeld ga ik het verbinden met digitale pin 7. Pin 4 is CS en je kunt ook verbinding maken met elke digitale pin. Ik ga verbinding maken met digitale pin 8. De volgende pin is SCK die naar digitale pin 13 van de Arduino Uno gaat. De volgende pin is MOSI die naar digitale pin 11 gaat, en de laatste pin in MISO die naar digitale pin 12 gaat. Dat is alles!

Om de module met Arduino gemakkelijk te gebruiken, moeten we de volgende bibliotheek gebruiken:https://github.com/TMRh20/RF24

Als je de NRF24L01+ modules tot nu toe nog niet hebt gebruikt, bekijk dan de bijgevoegde video om te zien hoe je deze kunt gebruiken door een eenvoudig project te bouwen. Het zal je helpen begrijpen hoe het werkt.

Stap 5:De zender bouwen

Laten we eerst de zender bouwen. Het is erg makkelijk.

Voor de zender gebruiken we:

  • Een Arduino Nano
  • Een DHT22-sensor
  • Een NRF24L01+ draadloze module
  • Een breadboard
  • Sommige draden

We verbinden de uitgangspin van de sensor met digitale pin 4 van de Arduino Nano. We verbinden de Ground en Vcc en we zijn klaar. Het enige wat we nu nog moeten doen is de NRF24L01 draadloze module aansluiten.

Bevestig het met behulp van de pinnen die worden weergegeven in de derde afbeelding. Bekijk voor meer informatie de gedetailleerde video die ik in de vorige stap heb bijgevoegd.

Dat is alles, uw zender is klaar. Laten we nu verder gaan met de ontvanger.

Stap 6:De ontvanger bouwen

Om de ontvanger te bouwen hebben we de volgende onderdelen nodig:

  • Een Arduino Due of een Mega
  • Een DS3231 Real Time Clock-module
  • Een DHT22 temperatuur- en vochtigheidssensor
  • Een NRF24L01+ draadloze module
  • Een 3,2" TFT-kleurenscherm
  • Een breadboard
  • 7 header-pinnen
  • Sommige draden

Eerst buigen we 7 header-pinnen en plaatsen we ze op enkele van de Arduino Due-pinnen. We hebben er een nodig voor aarde en een voor 3,3 V. We hebben er twee nodig bij de I2C-pinnen. We hebben de resterende 3 nodig tot digitale pinnen van 6 tot 8. We moeten ook drie draden solderen aan de hardware SPI-pinnen van de Arduino Due-pinnen. We hebben MOSI, MISO en SCK nodig. Controleer het schema goed. We verbinden de draden met de header-pinnen en we zijn klaar om het display te bevestigen.

De DS3231 aansluiten

  • VCC-pin op Arduino's 3.3V-uitgang
  • GND-pin naar Arduino's GND en
  • SDA (Serial Data Line) pin naar Arduino's SDA pin en
  • SCL (Serial Clock Line) pin naar Arduino's SCL pin

De DHT22-sensor aansluiten

  • VCC-pin op Arduino's 3.3V-uitgang
  • GND-pin naar Arduino's GND en
  • uitgangspin naar Arduino's digitale pin 8

De NRF24L01-module aansluiten

  • GND-pin naar Arduino's GND
  • VCC-pin naar Arduino 3.3V
  • 3e pin naar Arduino's digitale pin 6
  • 4e pin naar Arduino's digitale pin 7
  • 5e pin naar SCK-pin die we hebben gesoldeerd
  • 6e pin naar MOSI-pin die we hebben gesoldeerd
  • 7e pin naar MISO-pin die we hebben gesoldeerd

Stap 7:De zendercode

Allereerst moeten we de RF24-bibliotheek downloaden om ons leven gemakkelijker te maken wanneer we met de NRF24L01 draadloze modules werken. We hebben ook de DHT-bibliotheek nodig voor de DHT22-sensor.

  • DHT22-bibliotheek:https://github.com/adafruit/DHT-sensor-library

Laten we eerst de zendercode bekijken. Het zendt een eenvoudige datastructuur uit die twee vlotters bevat, de temperatuur en de vochtigheid.

Om een ​​communicatieverbinding tot stand te brengen, moeten we een "pijp" maken tussen de twee modules. Die pijp moet een adres hebben. Beide modules moeten van dezelfde pijp schrijven en lezen om te kunnen communiceren. Dat is het eerste wat we definiëren in onze code. We stellen het pijpadres in op "0". Vervolgens definiëren we het kanaal waarop we willen communiceren met de andere module. De NRF24L01-chip ondersteunt 126 verschillende kanalen. Beide modules moeten hetzelfde kanaal gebruiken om met elkaar te kunnen communiceren. In dit voorbeeld gebruik ik kanaal 115. Vervolgens definieer ik dat ik het maximale zendvermogen wil gebruiken dat de module biedt. Het gebruikt meer stroom, maar vergroot het bereik van de communicatie. Vervolgens definiëren we de datasnelheid van de verzending. Ik heb het ingesteld op 250Kbs, wat de laagst mogelijke gegevenssnelheid is om een ​​beter bereik te bereiken. De volgende stap is om de pijp te openen om er later naar te schrijven.

In de lusfunctie lezen we de temperatuur- en vochtigheidswaarden van de sensor, we slaan die gegevens op in de datastructuur en vervolgens sturen we de datastructuur door de datastructuur naar de pijp te schrijven. Dat is het. Je vindt de code in deze tutorial.

FU361QHIQFCEYSE.ino

Stap 8:De ontvangercode

Laten we nu de ontvangercode bekijken. We hebben 4 bibliotheken nodig. Eerst moeten we de bibliotheek voor de weergave downloaden via deze link:

DISPLAY Bibliotheek:https://github.com/Bodmer/TFT_HX8357_Due

Na het downloaden van de bibliotheek moet u het bestand User_Setup.h openen. Commentaar regel 13 en uncomment regel 14, omdat het display dat we hebben de HX8357C driver gebruikt. Nu kunnen we verder met de 3 andere bibliotheken. We hebben één bibliotheek nodig voor de real-time klok, één voor de DHT22-sensor en als laatste één voor de draadloze module.

  • NRF24L01:https://github.com/TMRh20/RF24
  • DHT22:https://github.com/adafruit/DHT-sensor-library
  • DS3231:https://github.com/SodaqMoja/Sodaq_DS3231

Laten we de code eens bekijken. Het eerste dat we moeten doen, is de tijd instellen op de realtimeklokmodule als deze nog niet is ingesteld. Om dit te doen, voert u de huidige datum en tijd in de setRTCTime functie, verwijder het commentaar van de setRTCTime oproep van de functie op regel 54 en upload het programma naar Arduino. Nu is de tijd ingesteld. Maar dan moeten we commentaar geven op setRTCTime roep de functie opnieuw aan en upload het programma nogmaals naar Arduino.

De code van de ontvanger werkt als volgt. In de setup-functie initialiseren we alle sensoren en de modules en printen we de gebruikersinterface. Vervolgens controleren we bij de lusfunctie continu op nieuwe draadloze gegevens. Als er nieuwe gegevens zijn, slaan we die gegevens op in variabelen en printen ze op het display. We lezen één keer per minuut de temperatuur en de luchtvochtigheid af en we werken het display alleen bij als er een verandering in de waarden is. Zo verminderen we het flikkeren van het display nog meer! Ik heb ook een versie van de code voorbereid met de temperatuur weergegeven in graden Fahrenheit. Je kunt beide versies van de code bij deze tutorial vinden.

F053BTXIQFCEZ09.ino FNV3X4LIQFCEZ0C.ino

Stap 9:het project testen

De laatste stap om alles op te starten en te kijken of alles werkt zoals verwacht. Zo ja, dan wordt bovenaan het display de huidige datum en tijd weergegeven. Onderaan het scherm zie je de temperatuur en de vochtigheid van zowel de afstandsbediening als de lokale sensor.

Als er geen gegevens worden weergegeven voor de afstandsbedieningssensor , breng de zender dichterbij - deze kan buiten bereik zijn. Als het probleem aanhoudt, controleer dan nog een keer alle verbindingen - daar moet iets mis zijn.

Zoals je kunt zien, is dit project een geweldige demonstratie van waartoe open source hardware en software in staat is. Binnen een paar uur kan men zo'n indrukwekkend project bouwen! Dit is natuurlijk nog maar het begin. We kunnen nog veel meer functies aan het project toevoegen. Ik zal binnenkort een knop toevoegen, zodat we grafieken kunnen weergeven en verschillende modi hebben. We kunnen ook meer sensoren, datalogging, internetverbinding enzovoort toevoegen. We gebruiken de Arduino Due, dus we hebben genoeg geheugen om nog veel meer dingen te implementeren. Ik hoor graag uw mening over dit project. Hoe wil je het zien evolueren? Plaats uw opmerkingen of ideeën in de opmerkingen hieronder!

Als je meer details wilt, bekijk dan de YouTube-video in de inleiding of bezoek mijn website. Bedankt voor het kijken!

Code

Github
https://github.com/adafruit/DHT-sensor-libraryhttps://github.com/adafruit/DHT-sensor-library
Github
https://github.com/TMRh20/RF24https://github.com/TMRh20/RF24
Github
http://DISPLAY:%20https://github.com/Bodmer/TFT_HX8357_Duehttp://DISPLAY:%20https://github.com/Bodmer/TFT_HX8357_Due
Github
https://github.com/SodaqMoja/Sodaq_DS3231https://github.com/SodaqMoja/Sodaq_DS3231

Productieproces

  1. Raspberry Pi 2 weerstation
  2. Raspberry Pi-weerstation
  3. Weerstation V 2.0
  4. Arduino digitale dobbelstenen
  5. Iron Man
  6. Vind mij
  7. Arduino 3D-geprinte robotarm
  8. Arduino-luchtbevochtigerbediening
  9. $10 draagbaar Arduino-weerstation (AWS)
  10. eDOT - op Arduino gebaseerde precisieklok en weerstation
  11. NeoMatrix Arduino Pong