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

Klein internetweerstation

Componenten en benodigdheden

Arduino Nano 33 IoT
× 1
BME-weersensor
× 1
0.96 in OLED-scherm - 128x 64
× 1
Plastic behuizing 3,9" x 2,7"
× 1
Micro-USB-kabel
× 1
Mannelijk naar vrouwelijk breadboard jumperdraden
× 1
USB-wandoplader
× 1

Benodigde gereedschappen en machines

Hot lijmpistool (algemeen)

Apps en online services

Arduino IDE
Blynk

Over dit project

Er zijn veel apps waarmee je je smartphone kunt verbinden met het internet der dingen. Ik heb er een aantal geprobeerd en ben meestal teleurgesteld. Niet zo met Blynk! Het is echt flexibel, heeft een mooie gebruikersinterface, werkt met allerlei IoT-platforms en draait op zowel Android als iPhone. Het is ook gratis voor hobbyisten! Dit is dus een relatief eenvoudig IoT-project waarmee ik Blynk kon verkennen.

Hardware

De hardware voor dit project is vrij eenvoudig. We gebruiken de Arduino Nano 33 IoT die WiFi verwerkt, een BME280-sensorbord met temperatuur, vochtigheid en luchtdruk in één eenheid en een 1 inch OLED-display. Alle drie werken prima op 3,3 volt. Het display is uiteraard optioneel - het doel is om het weerstation op uw telefoon weer te geven. Maar het maakt het veel gemakkelijker om eerst alles op het OLED-scherm aan de gang te krijgen, voordat je met Blynk en je smartphone omgaat.

Het onderstaande schema laat zien hoe de hardware met elkaar verbonden is. Zowel de sensor als de display interface met I2C. In theorie kan één I2C meerdere apparaten ondersteunen, maar de bibliotheken van de sensor en het display hadden wat conflicten, dus ik eindigde met twee verschillende I2C-poorten. De sensor gebruikt de normale standaard I2C-poort op analoog pins 4 en 5. Het display gebruikt een secundaire I2C-poort die is ingesteld op digitale pinnen 4 en 5. (En ja, ze zijn omgekeerd - SDA is digitale pin 5))

De hardware is ingesloten in een kleine plastic behuizing met een doorzichtige voorkant, zodat het display kan worden bekeken. Het is van plastic, omdat het transparant moet zijn voor RF voor WiFi. Het moet relatief weerbestendig zijn, maar de sensor wordt blootgesteld aan het weer van buiten door een 1/2" gat aan de onderkant. De sensor is zo bevestigd dat hij net in dat gat zit. Ik heb alles in de behuizing met heet lijm, maar misschien wilt u in plaats daarvan epoxy gebruiken als u van plan bent het in de zomerhitte buiten te zetten.

Stroom wordt geleverd via de USB-kabel. Op die manier kan het worden geprogrammeerd of gevoed door een enkele kabel die uit de doos komt. Die kabel kan bij het programmeren naar je computer of naar een plug-in USB-voeding bij gebruik als weerstation.

Software

De software die op de Arduino draait, is net iets meer dan een mash-up van de bibliotheekvoorbeelden voor de sensor, het display en Blynk. De betrokken bibliotheken zijn de Adafruit_BME280_Library voor de sensor, de ss_oled-bibliotheek voor het display en de Blynk-bibliotheek voor Blynk. Alle drie kunnen rechtstreeks worden gedownload van Arduino's bibliotheekmanager. Misschien wilt u met elk van deze bibliotheken afzonderlijk experimenteren om een ​​beter begrip van elk van deze bibliotheken te krijgen.

Blynk heeft een aantal voorbeelden van hoe hardware te configureren om ermee te communiceren:https://examples.blynk.cc/ Helaas vermeldt het de Nano 33 IoT niet als een van de ondersteunde Arduino's. Maar Blynk ondersteunt wel WiFiNINA, dat wordt gebruikt door de Nano 33 IoT en verschillende andere Arduino-processors. Dus het toevoegen van deze twee omvat dat probleem opgelost:#include en #include

Een andere toevoeging die je in mijn code zult zien is:#include Dit was nodig om de cijfers die uit de sensor komen om te zetten in strings die geschikt zijn voor weergave op het OLED-scherm. Een kleine draai hieraan die me wat verdriet deed, was dat Blynk graag de gegevens weergeeft, of ze nu als een tekenreeks of als een nummer zijn verzonden. In eerste instantie stuurde ik Blynk dezelfde string die ik naar de OLED stuurde. Dat werkte prima om de getallen weer te geven, maar mislukte totaal toen ik grafieken toevoegde. Om de grafieken te laten werken, had Blynk natuurlijk echte cijfers nodig.

Opmerking - barometrische druk wordt normaal gesproken gecorrigeerd naar zeeniveau gerapporteerd. Op grotere hoogten daalt de barometrische druk duidelijk, dus om de waarden van de sensor te corrigeren naar hun equivalente waarde op zeeniveau, moet u een waarde toevoegen aan de gemeten waarde van ongeveer 1 inch Hg voor elke 1000 voet hoogte. In mijn eigen bijgevoegde code zul je zien dat ik 1,3 heb toegevoegd om te compenseren voor mijn eigen hoogte van 1300 ft. boven zeeniveau. U wilt deze waarde aanpassen aan uw eigen hoogte. De 1" Hg per 1000 voet is slechts een ruwe schatting. Als u een nauwkeurige correctie wilt, zijn er tabellen online die u de exacte correctie voor uw hoogte geven.

Weerstation zonder Blynk

Op dit punt kunt u de hardware instellen en mijn bijgevoegde software gebruiken om weergegevens op het OLED-scherm weer te geven. Geef gewoon commentaar op de regel Blynk.begin() in Setup om het weerstation zelfstandig te laten werken. (Als je geen commentaar geeft op Blink.begin(), zonder een geldige verbinding met Blynk, zal de schets op dat punt stoppen of blijven hangen.) In de volgende sectie zullen we praten over Blynk, hoe je het beide kunt instellen op de Arduino-schets en op de smartphone om het weerstation op de telefoon weer te geven.

Blynk

Blynk is eenvoudig te installeren op je iPhone of Android en wordt geleverd met gedetailleerde documentatie:http://docs.blynk.cc/ Maar er is zoveel informatie en zoveel opties dat ik de dingen in het begin een beetje verwarrend vond, dus ik zal geef hier mijn eigen versie van hoe je met Blynk aan de slag kunt gaan.

Ik heb Blynk met een iPhone gebruikt, maar ik denk dat de ervaring met Android vergelijkbaar genoeg is, zodat je mijn instructies met beide kunt volgen. Zodra je de app hebt, moet je een account aanmaken. Van daaruit maak je binnen de app een nieuw project aan. Uw project is voorzien van een authenticatiecode die wordt gebruikt om uw hardware aan uw project te koppelen. Je eerste taak is om je hardware via wifi met je Blynk-project te verbinden. U kunt dit bereiken en testen met behulp van Blynk's standaardschets/programma genaamd Blynk Blink op voorbeelden.blynk.cc, waarmee u de ingebouwde LED op uw Nano 33 IoT kunt in- en uitschakelen. Mijn suggestie is dat je dit probeert en het werkend krijgt voordat je het weerstation probeert te laten werken met Blynk.

We hebben het al een beetje gehad over het configureren van onze software om onze Nano 33 IoT met Blynk te laten werken. Als u voorbeelden.blynk.cc opent, wordt standaard een ESP8266-bord gebruikt. Zoek #include en #include en vervang ze door #include en #include

Naast het toevoegen van WiFiNINA-ondersteuning voor de Nano 33 IoT, zoals we al hebben besproken, moet u uw WiFi-inloggegevens en de authenticatiecode van uw Blynk-project toevoegen. We zullen het in- en uitschakelen van de LED in een minuut uitleggen, maar laten we eerst de verbinding controleren. Met de Blynk Blink-schets correct geconfigureerd en actief, open Arduino's Serial Monitor en je zou in staat moeten zijn om de verbinding met de Blynk-cloudserver te zien. Op dit punt kunnen we onze hardware opzij zetten en met de Blynk-app op de telefoon werken.

Ik geef toe dat ik de Blynk-app enigszins verwarrend vond. Met het pictogram linksboven kunt u kiezen tussen projecten en ook uitloggen van uw account. Met de optie rechtsboven kun je de modus Project bewerken in en uit gaan. Wat de middelste doet, hangt af van waar je bent.

Om controle te krijgen over onze ingebouwde LED, moeten we de bewerkingsmodus in de app openen. U ziet dan een leeg scherm. Als je naar links veegt, schuift het opzij om een ​​gereedschapskist met widgets te onthullen. Selecteer een knop door erop te klikken en deze staat nu op het hoofdscherm. Klik erop en het wordt geopend voor configuratie. Verplaats het van de push-modus naar de switch-modus. Gebruik pin select om de ingebouwde LED - digitale pin 13 op onze Nano 33 IoT te selecteren. Klik nu op OK en klik op het pictogram rechtsboven om de bewerkingsmodus te verlaten. Uw knop zou nu de LED moeten bedienen.

Weerstation met Blynk

We zijn nu klaar om ons weerstation te koppelen aan ons Blynk-project. Open mijn bijgevoegde software, verwijder commentaar op de regel Blynk.begin() in Setup, voeg uw projectverificatiecode en WiFi-inloggegevens toe en upload naar Arduino.

Open Blynk op je telefoon. Als je deze tutorial hebt gevolgd, is je knop er nog steeds en zou je de ingebouwde LED nog steeds moeten kunnen in- en uitschakelen. Ga naar de bewerkingsmodus, klik op de knop om het te configureren en verwijder het met Verwijderen helemaal onderaan. Ga nu naar de toolbox en selecteer een gelabelde waarde. Het is onderaan de lijst een manier onder Displays. Terug op de weergavepagina klikt u op het scherm Gelabelde waarde om het te configureren. Klik op pin en selecteer vervolgens Virtual pin V3. We zullen virtuele pinnen in de volgende paragraaf uitleggen. Nu voor het label, waar het zegt "e.g. Temp" typ "Temp /pin.#/deg.F". De.# vertelt de app om één plaats achter de komma weer te geven. Selecteer de grote tekstgrootte en laat Vernieuwingsinterval op Push en Tekstkleur op Groen. Klik nu op OK. Uw gelabelde waarde is nu bijna klaar om de temperatuur weer te geven, maar is te smal. Selecteer het langzaam - langzaam genoeg zodat het niet opnieuw naar de configuratiemodus gaat. De omtrek van het label licht op. Het kan nu worden uitgerekt om de hele regel weer te geven. Het kan ook worden verplaatst, hoewel we dat hier niet doen. Rek het ongeveer 3/4 van de weg over het scherm uit. Sluit vervolgens de bewerkingsmodus af en u zou de temperatuur op uw telefoon moeten zien.

Voordat we klaar zijn met het configureren van Blynk, is het de moeite waard om een ​​paar dingen uit te leggen die we zojuist hebben gezien bij het instellen van de temperatuurweergave. Blynk gebruikt een enigszins uniek idee dat virtuele pinnen wordt genoemd. De weergavewaarde-widget kan worden ingesteld om een ​​analoge pin op onze processor te lezen, of om te lezen of een digitale pin hoog of laag is. Maar vaker wel dan niet, willen we de inhoud van een variabele weergeven. We doen dat door die variabele een virtuele pincode toe te wijzen, en vanaf dat moment zal de Blynk-app naar die variabele verwijzen met zijn virtuele pincode. Dus in mijn software zie je een plek waar ik temperatuur in Fahrenheit heb toegewezen aan virtuele pin V3.

Een ander Blynk-idee dat het vermelden waard is, is het verversingsinterval dat we in de push-modus hebben gelaten. Dat betekent dat de Arduino-schets de gegevens naar buiten duwt, in ons geval de temperatuur, vochtigheid en luchtdruk eenmaal per minuut bijwerken. Maar Blynk ondersteunt ook een Pull-methode, waarbij de Blynk-app het interval instelt en de hardware opvraagt ​​naar nieuwe data.

Laten we het nu afmaken met het weergeven van ons weerstation op Blynk. U hebt nog twee gelabelde waarden nodig, één voor vochtigheid in % (virtuele pin V4) en één voor druk in "in. HG" of inches kwik (virtuele pin V5). Om het op de mijne te laten lijken, wil je vochtigheid in goud en druk in rood. Voor vochtigheid liet ik één plaats achter de komma zien; voor druk liet ik twee plaatsen achter de komma zien.

Als u nu de drie gelabelde waarde-displays hebt die temperatuur, vochtigheid en barometrische druk weergeven, kunt u de grafiek van alle drie toevoegen. Dit wordt bereikt door de toevoeging van een SuperChart-widget. Trek het eerst naar beneden zodat het de rest van het scherm vult. Klik er vervolgens op om te configureren. Ik zette Toon x-aswaarden aan en ik koos resoluties van live, 1 uur, 6 uur, 1 dag, 1 week, 1 maand. en 3 mnd. We hebben drie data-stooms nodig - één voor elk van onze drie variabelen. Om elke gegevensstroom te configureren, klikt u op het pictogram rechts ervan. We moeten voor elk opnieuw de virtuele pin selecteren. Kies hoogte voor het schalen van de y-as. Stel vervolgens voor temperatuur de hoogte in op 67 - 100. Voor vochtigheid, stel de hoogte in op 34 - 66. Voor druk, stel de hoogte in op 0 - 33. Stel de kleuren in zodat ze overeenkomen met de gelabelde waarden. Schakel Y-as weergeven in. Dat is het zo'n beetje. Ga uit de bewerkingsmodus en je telefoonscherm zou op het mijne moeten lijken. Het duurt even voordat de grafiek op gang komt. Voor snelle resultaten, bekijk live of 1 uur resolutie.

Nog een functie van Blynk waarover u misschien meer wilt weten, is het delen van uw voltooide Blynk-project met andere smartphones, zodat meer dan één telefoon het weerstation kan zien. Om het delen te starten, zet u uw project in de bewerkingsmodus en klikt u op het middelste pictogram bovenaan voor Projectinstellingen. Schakel Delen in en genereer vervolgens een koppeling. Het geeft je een QR-code die je kunt e-mailen of op een andere manier kunt delen. De nieuwe gebruiker heeft de Blynk-app nodig, maar geen account op Blynk. De app van een niet-geregistreerde gebruiker heeft een link om de QR-code van het Blynk-project van iemand anders te laden. Dat is het.

Dit was een vrij beperkte introductie tot Blynk, maar zou je een goede plek moeten geven om te beginnen. Ik zei eerder dat Blynk gratis is - nou ja, dat is het bijna. Zowel widgets als delen verbruiken punten die Blynk energie noemt. Ik denk dat je om te beginnen 2500 punten gratis krijgt. Dat is meer dan genoeg om dit project gratis te doen. Maar als je het deelt of eraan toevoegt, kan het zijn dat je Blynk-energie opraakt. Ik heb $ 6 uitgegeven om nog eens 5000 punten te krijgen. Het kan zijn dat je een paar dollar moet uitgeven aan Blynk-brandstof als je andere projecten met Blynk wilt doen.

Code

  • Klein internetweerstation
Klein internetweerstationArduino
Met wifi en Blynk naar smartphone
/*Deze schets is voor de Arduino Nano 33 IoTHet maakt gebruik van een BME280-sensorbordHet gebruikt een 0,96 inch 128 x 64 OLED-displayHet maakt via wifi verbinding met de Blynk-cloudserver voor weergave van weergegevens op een smartphone */#include #include #include  // BME280 library#include  // gebruikt om weernummers om te zetten in strings voor weergave op OLED# include  // OLED-bibliotheek// De volgende twee bevatten vereist om Nano 33 IoT te laten werken met Blynk#include #include char auth[] ="YourBlynkProjectCode";char ssid[ ] ="YourWifiID";char pass[] ="YourWiFiPassword";Adafruit_BME280 bme; // gebruik I2C-interfaceAdafruit_Sensor *bme_temp =bme.getTemperatureSensor();Adafruit_Sensor *bme_pressure =bme.getPressureSensor();Adafruit_Sensor *bme_humidity =bme.getHumiditySensor();#define SDA_PIN 5#define_define SCL-1#PSETIN 4P#define SCL-1 -1#define FLIP180 0#define INVERT 0#define USE_HW_I2C 0#define MY_OLED OLED_128x64#define OLED_WIDTH 128#define OLED_HEIGHT 64SSOLED soled; // instantie van OLEDBlynkTimer-timer; // instantie van Blynk timervoid setup() {if (!bme.begin(0x76)) { // wacht tot de sensor wordt gedetecteerd terwijl (1) vertraging (10); } bme_temp->printSensorDetails(); bme_pressure->printSensorDetails(); bme_humidity->printSensorDetails(); oledInit (&ssoled, MY_OLED, OLED_ADDR, FLIP180, INVERT, USE_HW_I2C, SDA_PIN, SCL_PIN, RESET_PIN, 400000L); oledFill(&ssoled, 0x0, 1); Blynk.begin(auth, ssid, pass); // becommentarieer deze regel om het weerstation te bedienen zonder Blynk timer.setInterval (60000L, myupdate); // voert myupdate eenmaal per minuut myupdate(); // voer een eerste update van weergave en gegevens uit naar Blynk omdat de hoofdlus één minuut wacht}void loop() { Blynk.run(); // Blynk geeft er de voorkeur aan om alleen in de hoofdlus te draaien. timer.run(); // Al het andere wordt afgehandeld via Blynk-timer}// deze routine wordt aangeroepen door de Blynk-timer om zowel het OLED-scherm bij te werken als gegevens naar Blynkvoid te pushen myupdate(){ sensors_event_t temp_event, pressure_event, vochtigheid_event; bme_temp->getEvent(&temp_event); bme_pressure->getEvent(&pressure_event); bme_humidity->getEvent(&humidity_event); float ctemp =temp_event.temperatuur; // get temp in celsius float ftemp =32 + (9*ctemp)/5; // converteer temp naar fahrenheit float hum =vochtigheid_event.relative_humidity; // krijg relatieve vochtigheid float ppress =pressure_event.pressure; // haal de druk op in mm float mpress =1,3 + ppress/33.8939; // converteer naar inch Hg en voeg 1,3 toe om overeen te komen met de werkelijke lokaal gerapporteerde barometrische // druk. Misschien wilt u de 1.3 verwijderen en/of uw eigen aanpassing toevoegen. char mytemp[8]; dtostrf(ftemp, 6, 2, mytemp); // converteer temp naar een string char myhum [8]; dtostrf(hum, 6, 2, myhum); // converteer vochtigheid naar een string char mypress [8]; dtostrf(mpress, 6, 2, mypress); // converteer druk naar een string // update OLED-display oledWriteString(&ssoled, 0,2,1,(char *)"Weerstation", FONT_NORMAL, 0, 1); oledWriteString(&ssoled, 0,2,3,(char *)"Temp =", FONT_NORMAL, 0, 1); oledWriteString(&ssoled, 0,50,3,(char *)mytemp, FONT_NORMAL, 0, 1); oledWriteString(&ssoled, 0,105,3,(char *)"F", FONT_NORMAL, 0, 1); oledWriteString(&ssoled, 0,2,5,(char *)"Humid=", FONT_NORMAL, 0, 1); oledWriteString(&ssoled, 0,50,5,(char *)myhum, FONT_NORMAL, 0, 1); oledWriteString(&ssoled, 0,105,5,(char *)"%", FONT_NORMAL, 0, 1); oledWriteString(&ssoled, 0,2,7,(char *)"Press=", FONT_NORMAL, 0, 1); oledWriteString(&ssoled, 0,50,7,(char *)mypress, FONT_NORMAL, 0, 1); oledWriteString(&ssoled, 0,105,7,(char *)"in", FONT_NORMAL, 0, 1); // push nieuwe weergegevens naar Blynk Blynk.virtualWrite (V3, ftemp); Blynk.virtualWrite(V4, brom); Blynk.virtualWrite(V5, mpress); } 

Schema's


Productieproces

  1. Geïntegreerd circuit
  2. Weerstation gebaseerd op Raspberry Pi
  3. Raspberry Pi 2 weerstation
  4. Raspberry Pi-weerstation
  5. Doe mee met het IOT met je weerstation – CWOP
  6. Weerstation V 2.0
  7. Model Rail Digital DCC Command Station Arduino en gratis app
  8. 6-Shooter:Arduino-drankmengstation
  9. MotionSense
  10. Arduino aangedreven weerballon datalogger
  11. ArduFarmBot - Part 2:Remote Station an IoT Implementation