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

MKR FOX 1200 Weermonitor

Componenten en benodigdheden

Arduino MKR Fox 1200
× 1
SparkFun Atmosferische Sensor Breakout - BME280
× 1
TSL2561 digitale lichtsensor
× 1
HTU 1D
× 1

Apps en online services

Arduino Web Editor
ThingSpeak-API
Sigfox

Over dit project

Opmerking:deze tutorial kan verouderd zijn, ga naar hier voor een meer actuele versie.

Dit project laat zien hoe je een MKR FOX 1200 . draait en een aantal I2C-sensoren in een eenvoudig weerstation op batterijen.

We gebruiken:

  • de temperatuursensor aan boord (lage precisie, ± 1 °C)
  • HTU21D I2C-sensor om vochtigheidsniveau te krijgen
  • Bosch BMP280 om de barometrische druk en nauwkeurige temperatuur te krijgen
  • TSL2561 lichtsensor om helderheid te krijgen

Hardware-installatie

De hardware-aansluitingen voor dit project zijn vrij eenvoudig:alle sensoren gebruiken I2C-interfaces en werken op 3,3V.

Ze hebben vier draden nodig van de MKR FOX 1200:GND, 3.3V, SDA op Pin 11 en SCL op Pin 12. Dezelfde vier verbindingen kunnen parallel worden gedeeld met de drie sensoren omdat elk van hen een specifiek I2C-adres heeft en dus de relevante bibliotheken en functies zorgen ervoor dat elk van hen wordt onderscheiden.

Het hele project kan worden gevoed door twee AA- of AAA-alkalinebatterijen die in serie zijn geschakeld om 3V te genereren en worden aangesloten op het schroefaansluitklemmenblok op het bord.

Sigfox-berichten

Aangezien het Sigfox-netwerk maximaal 140 berichten per dag kan verzenden, optimaliseren we de metingen en verzenden we gegevens in compact binair formaat.

Het inpakken van gegevens is belangrijk omdat de maximale grootte van een bericht dat u kunt verzenden 12 bytes is. Een float neemt 4 bytes in beslag, dus we zullen onze metingen in een kleinere representatie moeten stoppen.

Het float-formaat is erg breed (u kunt getallen weergeven zo groot als 3.402823e+38 (!) ) en we hebben niet de hele dataruimte nodig; we kunnen dan veilige limieten bepalen (op basis van waar we het station gaan inzetten) en de oorspronkelijke weergave in de backend herstellen.

Configuratie van de Cloud Services

We gebruiken twee cloudservices:

  • Sigfox-backend
  • Dingenspreken

Registreer uw bord op de Sigfox-backend met behulp van PAC en ID geleverd door FirstConfiguration-voorbeeld (kan worden overgeslagen als u dat al deed voor een vorig project).

Beide moeten worden geconfigureerd om met elkaar te praten en de gegevens in het juiste formaat te interpreteren. Registreer je bij beide en maak een paar kanalen op Thingspeak. De configuratie wordt weergegeven in de onderstaande afbeelding.

Het eerste kanaal dat we configureren, is het kanaal dat de onbewerkte gegevens ontvangt (readChannelID ), terwijl de tweede de opnieuw geschaalde gegevens verzamelt (writeChannelID ).

Het wordt tijd om de schets te uploaden met Arduino Create Editor. Met de standaardschets kunt u alle infrastructuur uitgebreid testen voordat u deze in het veld implementeert.

Vergeet niet aan te geven:

oneshot =false 

wanneer u zeker weet dat alle instellingen van de backend-infrastructuur correct zijn. De schets wacht op de seriële poort, dus we zullen hem nu niet starten. Open in plaats daarvan de SigFox-backend en configureer een callback:

Klik op TYPE APPARAAT -> LIJST -> klik met de rechtermuisknop op je bord en klik op Bewerken.

Klik op TERUGBELLEN in het menu aan de linkerkant:

U ziet een venster als dit:

Klik op Nieuw knop rechtsboven in het venster:

Selecteer Aangepast terugbellen:

De relevante configuraties worden hieronder vermeld. Zorg ervoor dat het terugbellen is ingesteld als:

  • TYPE:DATA/UPLINK
  • Kanaal:URL
  • Http-methode:GET

Stel als aangepast laadvermogen in:

status::uint:8 temp1::int:16:little-endian temp2::int:16:little-endian pers::uint:16:little-endian brom::uint:16:little -endian light::uint:16:little-endian lastMsg::uint:8  

Dit vertegenwoordigt de structuur die we in de schets hebben ingepakt. We wijzen een variabele toe aan elk veld, zodat we ernaar kunnen verwijzen in de HTTP-callback.

Stel als URL-patroon in:

https://api.thingspeak.com/update?api_key=XXXXXXXXXXXX&field1={customData#temp1}&field2={customData#press}&field3={customData#temp2}&field4={customData#hum}&field5={customData#light}&field6={customData#status}&field7={customData#lastMsg}  

Eenmaal geconfigureerd, zouden uw vensters als volgt moeten zijn:

Vergeet niet om de API-sleutel api_key te wijzigen met degene geleverd door Thingspeak als Write API Key voor Kanaal1 .

Opslaan en afsluiten. We kunnen nu de seriële poort openen en kijken naar het eerste bericht dat wordt verzonden. Hoera!

Van onbewerkt tot grafisch

De configuratie die we hebben geconfigureerd, leidt onze gegevens naar de Thingspeak-backend, maar ze zijn nog steeds in onbewerkte indeling; om ze opnieuw te converteren, gebruiken we de Thingspeak-analysetool met dit fragment

% TODO - Vervang de [] door kanaal-ID om gegevens te lezen van:readChannelID =[]; % TODO - Voer de Read API Key in tussen de '' hieronder:readAPIKey ='T6UK7XO6A4H2AGT7'; % TODO - Vervang [] door kanaal-ID om gegevens naar te schrijven:writeChannelID =[]; % TODO - Voer de Write API Key in tussen de '' hieronder:writeAPIKey ='XU4TGY261P6B5USN'; %% Gegevens lezen %% gegevens =thingSpeakRead(readChannelID, 'ReadKey', readAPIKey,'OutputFormat','table'); geanalyseerdData =gegevens; %% Analysegegevens %% INT16_t_MAX =32767; UINT16_t_MAX =65536; geanalyseerdData.('Temperatuur1') =gegevens.('Temperatuur1') / INT16_t_MAX * 120; geanalyseerdData.('Temperatuur2') =gegevens.('Temperatuur2') / INT16_t_MAX * 120; geanalyseerdData.('Druk') =data.('Druk') / UINT16_t_MAX * 200000; analysisData.('Light') =data.('Light') / UINT16_t_MAX * 100000; analyzeData.('Vochtigheid') =data.('Vochtigheid') / UINT16_t_MAX * 110; %% Schrijfgegevens %% thingSpeakWrite(writeChannelID, analysisData, 'WriteKey', writeAPIKey); %% Plan actie:Reageer -> elke 10 minuten 

Door de kanaal-ID's . te vervangen met onze eigen gegevens kunnen we eindelijk de onbewerkte gegevens terugzetten in werkelijke waarden. Vergeet niet om de analyse-actie elke 10 minuten te plannen met Reageren anders wordt het nooit uitgevoerd!

We hebben eindelijk onze prachtige grafieken.

Code

Weermonitor

Productieproces

  1. Raspberry Pi-weerstation
  2. Weermonitor
  3. Maak Monitor Ambilight met Arduino
  4. CO2-monitoring met K30-sensor
  5. Hartslagmeter met IoT
  6. Arduino + ESP-weerbox
  7. Hoe lang ben je?
  8. Capacitieve vingerafdruksensor met een Arduino of ESP8266
  9. Arduino Cloud Sensor Tower
  10. DIY-luchtkwaliteitsmonitor met Sharp GP2Y1010AU0F-sensor
  11. Lokaal weerstation