{
"$type": "site.standard.document",
"canonicalUrl": "https://bisse.nl/blog/posts/2021/11-20-project08",
"path": "/posts/2021/11-20-project08",
"publishedAt": "2021-11-20T11:00:00.000Z",
"site": "at://did:plc:t4bzqfd4wo3ukq62opjuvy2u/site.standard.publication/3mpeliratc624",
"tags": [
"arduino"
],
"textContent": "Repost van Tumblr. Sources op github.\n\nM'n eerste project met een microcontroller met toegang tot het\ninternet. Nog geen echte IoT-toepassing. Er wordt geen data opgeslagen\nvia het internet. De verbinding is er alleen om gegevens op te vragen.\n(Update: Inmiddels wel. Zie project 10.)\n\n\n\nIk had een ESP32 kunnen gebruiken, maar ik koos voor de drie keer zo\ndure Arduino Nano 33 IoT. Ik dacht, met een echte Arduino loop ik\nminder risico op problemen met library's.\n\nHet idee was dat ik een klokje had waarop ik 's nachts zou kunnen zien\nhoe lang het nog zou duren voor de zon op kwam. Tegenwoordig kan ik\ndat direct op m'n tablet zien, maar die wil ik 's nachts niet\ngebruiken.\n\nIk heb het idee wat uitgebreid. Tussen zonsondergang en zonsopkomst\nlaat het niet alleen zien hoe lang het nog duurt tot de zon opkomt,\nmaar ook hoe lang het geleden is dat de zon onderging. En tussen\nzonsopkomst en zonsondergang het omgekeerde. Daarnaast laat het ook de\nhuidige tijd zien. En ik dacht, laat ik er nog een sensor bijzetten\nvoor temperatuur en luchtvochtigheid.\n\nHet display is slechts 1,3 inch groot. Daar past alle info op als je\nhet klein weergeeft, maar ik wilde de waardes van een afstandje kunnen\nlezen, zonder bril. Daarom laat het afwisselend steeds een van de\nwaardes zien.\n\nDe hoeveelheid licht dat de letters op het display standaard geven is\naardig sterk, te veel voor nachtelijk gebruik. De maximale waarde voor\nhelderheid is 255. Ik gebruik nu 's nachts de waarde 20, en overdag 100.\n\nDe tijd wordt gesynchroniseerd via NTP. De tijd wordt opgevraagd van\nm'n modem die tevens router en NTP-server is.\n\nDe tijden waarop op mijn lokatie de zon opkomt en ondergaat worden\nopgevraagd van een server. De code om die tijden te berekenen zijn te\ngroot om door de microcontroller zelf te laten berekenen.\n\nOp de foto's is de eerste opzet te zien. Er is een LED die brandt als\ner verbinding met het internet wordt gemaakt om gegevens op te vragen.\nDe tijden van zonsopkomst en ondergang worden twee keer per dag\nopgevraagd. En ik dacht dat een of twee keer per dag de tijd opvragen\nvoldoende zou zijn om de interne klok van de Arduino mee te\nsynchroniseren. Dat laatste viel tegen. Afgaand op de waardes geleverd\ndoor de functie millis() loopt de boel na een aantal uur een\nkwartier achter. Nu is er een continue verbinding met het internet, en\nwordt elke minuut de tijd opgevraagd. De LED heb ik een andere functie\ngegeven, die gaat nu even branden op het hele en het halve uur, als een\nvisuele bel.\n\nVoor temperatuur en luchtvochtigheid gebruikte ik aanvankelijk een\ngoedkope DHT11-sensor, nog te zien op de foto. Voor temperatuur is die\ngoed genoeg. Maar de waardes voor luchtvochtigheid begonnen al snel af\nte wijken van de waardes van twee weerstations waarmee ik hem\nvergeleek. De waardes waren zo'n 20% hoger.\n\nIk heb de sensor vervangen door een BME280. Duurder, nauwkeuriger, en\nhij geeft ook de luchtdruk aan, dus die waarde wordt nu ook\nweergegeven.\n\nLibraries\n\n WiFiNINA → WiFiSSLClient, WiFiUDP\n NTPClient → NTPClient\n BME280 → sensor\n u8g2 → display\n PubSubClient → dataopslag via MQTT\n\nDocs\n\n Arduino Language Reference\n Arduino Nano 33 IoT\n\nDisplay\n\nVMA437 met chip SH1106\n\n| display | Nano |\n| ------- | ---- |\n| GND | GND |\n| VCC | +3V3 |\n| CLK (sck) | D4 |\n| MOSI | D5 |\n| RES | RESET |\n| DC (a0) | D7 |\n| CS | D6 |\n\n u8g2\n * SH1106 128X64_NONAME\n\nSensor\n\nVMA335 met chip BME280\n\n| sensor | Nano |\n| ------ | ---- |\n| Vin | +3V3 |\n| Gnd | GND |\n| SDA | A4 |\n| SCL | A5 |",
"title": "Project 08 — Arduino Nano 33 IoT"
}