Introduction: Acrylic Sheet RGB Glowing Weather Station With Indoor/outdoor/forecast Using ESP8266

The Weather station I made is based on the software of Daniel Eichhorn from Switserland . This firmware includes measurement of the inside temperature + humidity, outside temperature + air pressure (fetching data from a 2nd weatherstation connected to thingspeak) and local forecast data from Wunderground (Weather underground) See his blog at http://blog.squix.ch/

I want to make sure for my project that this time I added really everything required to complete my Instructable. If anything is missing let me know!

I thought it would be cool to design my own Weather Station with a larger OLED display (not the original 0.96", I found 2.4") and pay a lot of attention to the looks of the station. So as "enclosure" I used Acrylic sheet which I laser-cutted in the shape of a sun/cloud. My goal was to let the acrylic "glow" depending on the forecast or other criterium: red means its getting warmer, blue means its getting colder, white flashing: thunderstorm expected. Etc. Or perhaps just a pretty color you like?

To do this I used approx. 20cm Adafruit RGB LED Neopixel strip around the OLED display (a total of 12 Neopixels are on the strip). They are very easy to use with their 1-wire connection and built-in LED controller PER LED! Cheaper Chinese clones might work but I wanted to be sure and wanted to use the Adafruit lib.

So I expanded the firmware with Neopixel control (RGB led's on a strip, from Adafruit) and a smooth fading pattern. Depending on forecast data and current readings the Neopixels now fade in a certain color.

I used almost any technique I had at my disposal. Laser cutting, 3d printing thanks to my local FabLab, CAD schematic design + PCB, Arduino programming.

Step 1: Shopping for the Parts

Picture of Shopping for the Parts

Update!

This has been added AFTER I published the instructable and the text following in this step.

I noticed that the USB cable was clearly visible in the images I uploaded. I did not pay attention to it at the time of posting but now it started to annoy me. So I have a solution. Instead of using the USB connector mentioned below in my Electronics Bill Of Materials use this one. Now the USB cable will be pointed backward when plugging it in. This connector however does not fit on the PCB design that I made. To overcome this a slight mechanical finetune was needed. The 2 large metal pins that are on this connector I bent to the sides and solder them to the PCB large ground pads. The 5 USB data pins I had to slightly push towards the PCB so that they touched the PCB and could be soldered. I also added a picture showing how to do that with this Step. It's up to you which connector to use, in the BOM is the one fitting directly on the PCB but the one mentioned in this update makes the station look better!

Files to download

Download the ZIP file I attached to this project, it contains everything: the CAD files for the lasercutter (body + stand) and 3d printer (display bezel), the schematic and Gerber files for the PCB, a Bill of Materials for the electronics and the Firmware

Mechanical

For the mechanical part I used Acrylic sheet. Here in the Netherlands I found a very cheap supplier of real Plexiglas where you can order the smallest sizes you like (just the size you need) in all thicknesses. For Dutch readers click here. For the others you will have to find this locally.

You could use for the base and body any acrylic you like, I show here what I did. But for example the cloud/sun body could also be out of 1 clear sheet instead of the cloud being clear and the sun yellow-clear.

  • 1 sheet of 220 x 220mm and 10mm thickness for the "cloud"
  • 1 sheet of 120 x 120mm for the "sun"
  • some plastics adhesive preferably Acrifix 1R0192 to glue the parts together
  • 1 sheet of 50x200mm for the base/stand (I used blue)
  • (optional 1 sheet of plastic in color of choice, approx. 1mm thick to make the OLED bezel/front plate, I supplied both the 3d print files for the bezel as well as the CAD file to laser-cut a bezel, the choice is up to you which one you prefer)

Electronics

Here is a complete overview of what I used for my project. In the Electronics step further on I'll explain what the parts are used for. You could decide to not use them all depending on what you want the station to show. At minimum you need an ESP8266 and the OLED display!

  • Order my PCB using my Gerber files. I used this very affordable Chinese service and the 5cm x 10cm option over there will fit. You will get 10 boards but for a price where I cannot get even 1 PCB for over here in Europe...)
  • For user using OSHpark service I added a seperate gerber/drill zipfile to this Step called OSHpark_gerber_drill
  • The parts to solder on the PCB I put in a separate pdf BOM list which I attached to the ZIP file to download from this project
  • A micro USB cable for the power and the programming of the firmware
  • A standard 5V USB power adapter like from your smartphone or find one on Ebay.
  • The OLED panel I got from ebay, click here I2C 2.42 128x64 Graphic OLED White Module ( Arduino / PIC / Multi-wii). The cutout in the Acrylic design matches the size of this OLED module.
  • A DHT22 / AM2302 Humidity + Temperature sensor (Ebay is your friend...)
  • Approx. 20cm of Adafruit Neopixel RGBW strip (so it includes W - White, my code is based on that fact). Click here. Others (clones from china) might work as well but I can give no guarantee...
  • An ESP8266 module variant 07 (! important when you use my PCB design). Search at Ebay for ESP-07 like this one.

Software

  • The code is attached in the ZIP file, there are also some librarier zipped inside the zipfile, you need to install these in the Arduino IDE. How this works can be found on www.arduino.cc
  • You need the Arduino IDE 1.6.5 with the ESP8266 board package installed. (1.6.6 and 1.6.7 had a problem with ESP8266 at the moment I wrote this, I do not know what or why...)

Step 2: Mechanical Assembly (Laser-cutting the Acrylic Sheets and 3d-printing the Display Bezel)

Picture of Mechanical Assembly (Laser-cutting the Acrylic Sheets and 3d-printing the Display Bezel)

I supplied all CAD files and the cutting itself depends on your local available machine regarding speed and power. I have included the base stand file, a file containing the complete sun/cloud but also 2 separate files for sun and cloud. In the pictures you can see I made 2 bodies, one is completely transparent the other has a yellow sun out of yellow acrylic sheet. With the supplied files you can choose which one to make.

In the end I chose to do the sun in yellow, the cloud in transparent colorless and the base stand in blue.

I supplied a laser-cut version and 3d file version of the bezel. If you choose the laser version then you need plastic sheet material of approx. 1mm to 1.5mm thick.

I used the laser-cut version because it looks more tidy then 3d printing and there is less light shining through due to the RGB leds. Aligning this laser-cut version to the acrylic body is more difficult since this has no notches like the 3d printed version but it looks much more tight and it lets no light slip through from the RGB (Neopixel) leds behind it shining through the acrylic body.

The 4 corner holes in the acrylic body needed treatment with a countersink. There is a picture added with this step which shows how the countersunken holes look. That way when mounting the PCB to the acrylic body you can lodge the screws in the body and the bezel will fit nicely over it, hiding the screws.

Lastly I used double-sided tape to attach the bezel to the plexiglas body.

Step 3: The Electronics

Picture of The Electronics

After I tested my electronics as a prototype on a breadboard (experimental board) I decided to design a printed circuit board, this looks very nice and makes fabrication easier. So there are 2 ways to build your own weather station variant. On a simple breadboard or you can use my PCB design!

The easy way: use the PCB design + parts list

With this instructable I supplied the schematic, Bill of Materials and Gerber files of the PCB. The easy way would be to buy the parts on my Bill of Materials (Farnell/Newark ordercodes included), order my PCB design from your PCB supplier of choice and solder it all on the PCB. No further instructions needed and you can go to the next step after soldering. NOTE: R7 + R8 are DO NOT MOUNT because the OLED display that I used has on-board pull-up resistors on it's I2C SCLK and SDA lines.

To mount the PCB to the back of the acrylic body I used 4 standoff's of 12mm high and 4x M3 screws with countersunken heads.

Building the electronic circuit on an experimental board

As an alternative you can build the circuit on an experimental board and use only the parts you can get your hands on and/or want to use. The schematic + PCB layout are the fancy version but when I pre-tested this all together I connected it using some wires "in the air" and OLED display + DHT22 were directly connected to the ESP8266 with wires, everything running on 3.3V. The Neopixels however DO NEED 5V and the 470 ohm resistor + large Electrolytic capacitor are for protection so do use them.

The extra parts in the end schematic are to make sure every part that was intended to run on 5V gets 5V and can safely communicate with the 3.3V ESP8266 without damaging it. Also a fuse is added just for protection.

Ordering the PCB and the parts from the BOM would be the easiest way to go but here's some information if you want to keep the cost to a minimum. So this information is only for those who want to build the circuitry by hand and using the bare minimum components. You need at least the OLED panel and the ESP8266. The DHT22 is used to measure your inside temperature and humidity. You can leave this if you like.

Also the connection to thingspeak is optional. I just use this to show what I measure right outside my doorstep. If you want to include this on your station it will require you having your own data on thingspeak using your own weather station. There are many options to find on Instructables.com. My own is only using an ESP8266 with a BMP180 pressure + temperature sensor. When I finish this instructable and have time I'll post my Thingspeak station as well and update this instructable :)

About the parts

First of all: all capacitors and resistors are none-critical which means you need them but any will do. So a 5% resistor is fine, a 20% tolerance capacitor too. All footprints (sizes) are the same: 0805 casing.

IC6 is only used to easily program the ESP8266 from the Arduino IDE using a USB cable like with Arduino's. If you already own an UART to USB converter like FT232 or similar you could also skip IC6 and pre-program the ESP8266 with the software. If you do this then S1 and S2 could be skipped as well.

F1 and D1 are for protection. If you do not want this simply do not mount D1 and short-circuit the F1 footprint simply with a wire, drop of tin or fancy "1206" shaped 0 ohms resistor.

IC2,3,4,5 are level translators. I added them to make sure that the 5V components can communicate with the 3.3V components. I've seen at least some designs where people feed the DHT22 with 3.3V although this is too low according specification. You could try this as well and do not mount IC3. In that case directly connect GPIO12 of the ESP8266 to the DHT22 data pin.

The Neopixels are not spec'd for operation on 3.3V logic signals and it needs 5V power for sure: 3.3V is too low. As a compromise some people run their circuit on 3.7V using a LiPo battery. You could do this but keep in mind thats the MAX for ESP8266 and just the MINIMUM for the Neopixels.

In my schematic + PCB design the OLED panel is powered by 5V. I know it works on 3.3V as well (tested it) only the luminous intensity is slightly lower. If you want to build the circuit on an experimental board just feed it with 3.3V and you will be fine.

Step 4: The Software

The last step! Very important, the software.

If you've used my PCB design then programming can be done inside the Arduino IDE. Set the board in the IDE to Generic ESP8266 module. Connect the Weather station to your PC using a micro USB cable. The COM port you need depends on the COM number that your PC gave to the weather station. You can find this in the device manager under Ports. The speed/baudrate that my ESP8266 came with is 115200 so thats what I've set in the IDE.

Press the switches on the board: first S2 then S1, then release S2 followed by S1. The blue light on the ESP-07 blinks shortly and the ESP8266 is in bootloader mode, ready to upload the sketch.

The code is pretty self-explaining and has been commented to explain what each part does.

Inside the code there is a part which begins with:

/*******begin settings*********/

and ends with:

/********end settings**********/

In this section you need to fill in some details for your local wifi, Wunderground and Thingspeak accounts.

  • Your WiFi credentials need to be filled in in the Sketch
  • You need to create a (free !) account on wunderground.com and get an API key with it, fill this in the Sketch
  • You need to find on wunderground.com the name of your local weather station, usually its the name of your city in capitals but look it up on their site and fill this in in your sketch
  • If you have your own Thingspeak weather station as well then you need to fill in the sketch your Thingspeak channel ID and API key
  • If you did not use my PCB design or schematic then maybe you need to change some things regarding the pin used for DHT22 and/or OLED SCL + SDA lines

You can specify how many pages you want to show on your OLED panel with this variable in the code : int numberOfFrames = 6;

So for example if you want to skip the Thingspeak function you need to change this to int numberOfFrames = 5;

Also you need to disable the code for that frame. For each frame there is a function which defines what to show in that frame. For the Thingspeak example it's drawFrame5 so locate that and delete it or comment it out. I think it's required as well that you re-name drawFrame6 to drawFrame5 now.

If you want to add a frame then just re-specify int numberOfFrames = newnrofframes ; then copy one of those functions drawFrameX and change it to what I want to show copy/pasting code from the other frames. I did not try it yet.

To control the RGB led fading I added the Adafruit Neopatterns class in the code. I also added 2 functions:

1. void update_fading_of_my_neopixels(void) //this function is called every 1mS using the Ticker option from the ESP8266 packages. This updates the neopixel fading pattern every 1mS without interfering with the frames sliding on the OLED panel.


2. change_neopixel_color(void) //in this function I change the color of the RGB leds depending on the weather forecast. It's not perfect yet but the idea is clear and you can easily adapt it to your own liking.

That was it people! I hope you enjoyed my (first) instructable and that many Acrylic glowing weather stations in the world will see the light!

UPDATE FEBRUARY 2017

There was a little bug in the original software since the beginning, the code does not pickup daylight saving time. So I kept changing every 6 months the code: the UTC_OFFSET variable needed to be 2 in wintertime for me and 1 in summer. I fixed it now very simply. I do not use the timeclient anymore but instead get the time from the Wunderground local station (the code to do this was already made by Daniel Eichhorn)

In the main sketch just locate the function bool drawFrame1() and change here 1 line, the one where string time gets the time assigned:
bool drawFrame1(SSD1306 display, SSD1306UiState state, int x, int y) {

...............................

//String time = timeClient.getFormattedTime();

String time = wunderground.getHours() + ":" + wunderground.getMinutes() + ":" + wunderground.getSeconds();

...............................}`

Comments

Dennisv15 (author)2016-04-16

Hi all,

I just updated step1 with an update section. First update us the USB receptacle. I advised a new model with a 90degree angle. That way the usb cable will point to the back of the station making it look better. It involves slight modifications but they are described and a picture is added. Its worth it! Pcb stays the same for now. Cheers.

Sayandeep Nayak (author)2017-09-04

I'd like to use a li ion battery with a 5v stepup instead of the usb cable

Hi

Thats possible but keep in mind that the current consumption is rather high, about 100mA, so you end up recharging every day!

Cheers
Dennis

But anyway this is cool. I'll build it.

Oh! I didn't knew that. Thanks for the heads up.

ArsS1 (author)2017-09-02

How to add BLYNK commands to the program? To receive information from dht sensor

i added this codes from this sites.But after uploading the LCD, it turns off 10 seconds later.

https://community.blynk.cc/t/temperature-monitorin...

https://community.blynk.cc/t/simple-blynk-controll...

https://www.instructables.com/id/ESP8266-12-blynk-...

Dennisv15 (author)ArsS12017-09-02

Hi

How to do this I would not know, I use blynk myself but this project is entirely loose from Blynk

Good luck, I hope you can make it work

ArsS1 (author)2017-08-27

Time received from api for my city is half an hour Less than real time.

how to solve this problem?

Dennisv15 (author)ArsS12017-08-27

dont know... just add 30min in the code?

ArsS1 (author)2017-08-25

yes is right

i want 1 pin to go high when wifi==connected, low when wifi == disconnected?

Dennisv15 (author)ArsS12017-08-25

Hi

Ok thats easy.

Add to the setup() function this: pinMode(yourdesiredpinnr, OUTPUT); where "yourdesiredpinnr" is for example 2 (means digital output pin 2)

Connect the LED to this pin, the Anode/+ to the pin and use a series resistor of about 300 ohm, connect the Kathode/- to GROUND/GND

In void loop() you add somewhere:

if(WiFi.status() == WL_CONNECTED)

digitalWrite(yourdesiredpinnr,HIGH ); else digitalWrite(yourdesiredpinnr,LOW );

ArsS1 (author)Dennisv152017-08-25

tnx soooooooooooooooooo much :)))))

esp is able to Multi-threaded programming?

Dennisv15 (author)ArsS12017-08-25

Hi! That I dont know. I do make use in this project of a Ticker. This makes it possible to do stuff on an interuppt precision timing!

ArsS1 (author)2017-08-23

its great and i have a question

i wanted a code to cheak connection , if connection with wifi is true set any port to high and In reverse set low this port

plz help me to creat this code :))))

tanx so much

Dennisv15 (author)ArsS12017-08-24

Hi ArsS1

I have no idea what you mean? Cheak?
You want 1 pin to go high when wifi==connected, low when !wifi == connected?

Cheers

HuzaifaT1 (author)2017-03-02

I uploaded the files from your iTead projects output folder onto an online Gerber viewer (http://mayhewlabs.com/3dpcb), I found that the drill holes were bundled up in one corner. I think that the measurement units are incorrect. it would be very much appreciated that you check this again and update the files. Here is a screenshot of the issue.

It would be great for you to amend this error. I really want to make this project for a gift... :)

Dennisv15 (author)HuzaifaT12017-03-02

Hi

I myself and others made this design using those gerbsrfiles. They are working... Just order at itead and it should be fine they made 10 pcbs for me as well from the same files

Dennisv15 (author)2017-02-25

I used itead 10x10cm prototype service you get 10 pcbs. The files required (gerber and drill files) are inside the instructable as a zip file. You upload that at itead and order

HuzaifaT1 (author)2017-02-24

Did you add everything from the PDF BoM onto this circuit board:

Dennisv15 (author)HuzaifaT12017-02-24

Yes only not r7 and r8 because my oled panel has pullups onboard. It is all in the instructable

HuzaifaT1 (author)Dennisv152017-02-25

where can i get that identical circuit board

HuzaifaT1 (author)2017-02-24

which PCB did you use?

Dennisv15 (author)HuzaifaT12017-02-24

I always use https://www.itead.cc/open-pcb/pcb-prototyping.html

HuzaifaT1 (author)Dennisv152017-02-25

which one did you order?

mikecq (author)2017-02-07

Good, stuff!! I just tried and it works like a charm! BTW: have you seen new weather station updated by Squix78?


  • Wifi Signal Quality icon in overlay
  • Weather Icon, temperature and time in overlay

Any new updates lately? we expect more from you.

Dennisv15 (author)mikecq2017-02-07

Hahaha I wish I had so much time for updates!
I did not see the updates to the weather station but now I know it I will ceck it!

I did make something else, maybe interesting? A remix of a nice robot

http://www.thingiverse.com/thing:2086532

gada888 (author)2016-08-12

Sad,i cannot get OLED light-up with a NodeMCU.I thought the esp8266-07 and 8266-12 are the same.but not anyway.

Dennisv15 (author)gada8882016-08-12

Check the pinout of the 8266's maybe SCL and SDA lines are switched on them? So try to reverse your SCL and SDA lines

Best regards
Dennis

gapdev (author)2016-05-08

Dennis,

Help!

I got mine working. Looks great.

Couple of problems.

Arduino 1.6.5 has to be used since 1.6.8 has an error with the Adafruit Neopixel class. I suppose that is something Adafruit needs to fix.

I have my Wundergound API key, but not sure what to enter for the City. They have different stations for my city (Dana Point). If I enter the station code, such as KCADANAP6, or the city, such as DANA POINT, no data is displayed.

Also, I have no idea how to set up the Thingspeak. I have the API key, but what do I enter for a Channel ID (or how does one setup a Weather Channel)?

I have my settings for IS_Metric = false. But, it appears as though you have the display hard coded to "°C". I'm pretty sure it is getting the correct temperature from the DHT22 since it is currently showing 77.72 °C, and that would be pretty hot if it were truly celsius.

I also need to change the time to 12 hour mode.

I've had Neopixels for a long time now, but this is the first time I've used them. Dang, those things are bright!

I'll post images as soon as I get everthing working and the parts all glued together.

Kenny

gapdev (author)gapdev2016-05-08

OK,

Got Wunderground to work. Took a look at the original Library and Documentaion. For others in the US that might be confused about this, you enter your State and Location like this:

const String WUNDERGROUND_COUNTRY = "US";
String WUNDERGROUND_CITY = "CA/Dana_Point";

Now I have to figure out how to get Thingspeak to work. What is the purpose of Thingspeak anyway? The display says "Outdoor" for Thingspeak, but isn't that what Wunderground is for?

Kenny

Dennisv15 (author)gapdev2016-05-08

good!

Thingspeak is sort of double. Of course local wunderground is good enough but I have a thingspeak weather station of my own lying at my doorstep so I included it.

You can remove it (and its page on the station)? Dont exactly know how but can be done!

Dennisv15 (author)gapdev2016-05-08

Great! Want to see!
I'd use indeed 1.6.5, also because of esp issues in the later ones
I cannot help with Wunderground, that is a matter of google until you drop, I had the same :(
Thingspeak you need the api READ key (watch out that one you need to generate seperate, WRITE is always included from start). Your channel ID is something like this (mine)
https://thingspeak.com/channels/50958
So a 5digit nr

The celcius is indeed hardcoded, not sure where the is_metric is for thats from the code of the swiss developer (see my intro to find his blog)

12hour mode i also do not know, I had a bug with summer/daylight saving time. That one is now patched with UTC_OFFSET=2. Works for now but means in winter I need to redo the firmware. I hope Dani Eichhorn comes up with a patch/fix

Nice huh those neopixels!! Thats also why I added a fuse, if it goes wrong it takes a lot of current. 12 leds times 4 (RGWB) times 60mA max...problems!

Cheers, looking forward to your pics or better a video!

gapdev (author)2016-05-05

Dennis,

How is the OLED attached?

Is it supposed to be centered in the cutout and glued or taped to the back of the bezel?

Also, where do the Neopixels go?

Thanks,

Kenny

Dennisv15 (author)gapdev2016-05-05

Hi Kenny

The OLED I glued to the bezel and the bezel I glued with double sided tape to the Acrylic. The Neopixels I mounted around the edge of the OLED using double sided tape. While I type this I am behind me workbench making a 2nd station, I will update the instructable with some pictures!

Cheers

Dennis

gapdev (author)Dennisv152016-05-05

Hi Dennis,

What kind of glue did you use? Acrylic Glue?

For kicks, I thought I'd print the Bezel since I have some Orange Filament in and wanted to see what it looks like.

The Printed Bezel doesn't look half as good as the laser cut version, but it's fun trying out different configurations. I did notice, however, that the 3D version needs some modifications (the cutout is too large) and the Pegs that hold it in place actually turn out to be holes (at least that is the way Slic3r renders them). I fixed the pegs and am about to make the cutout smaller.

Also, I did make a modification to the Printed Circuit board (no FTDI and the ESP8266 mounts in a socket instead of directly soldered to the board). Will let you know how it all works out.

Kenny

Dennisv15 (author)gapdev2016-05-05

Hi Kenny

At first, for the sun-cloud I was looking into serious adhesive from Acrifix. In the end I did not use it but took simple Henkel plastic glue! For stand-cloud I used 2component acrylic glue because I wanted it to be strong. Bezel to cloud I used double sided tape but with the 2nd one I am building now I did it different: using my milling machine I machined a 2mm deep chamber in which the lasercut bezel fits in nicely. This I glue in probably with transperent flex kit (I did not yet do it) or acrylic 2comp. The OLED itself I sticked in V1 to the bezel with doublesided tape: does not work great. V2 I glued it with 2comp acrylic.

Indeed the 3dprinted bezel is not so nice as the lasercut version. I quit that path very soon. So it is correct the bezel in 3d might not be perfect because I stopped working on it! My printed version had pegs not holes so thats probably a slicer error!

Good to hear about the modifications on the PCB, I want to see it when its done! Very dumb of me...I had mounted an extra 6pin header footprint on which I put 5V gnd and 3.3V just for debugging or simple additions without changing the PCB design. I could simply have routed TX and RX of the ESP to that header as well then there would be a direct connection for an FTDI cable so no need to solder those on the board... Too late :( I did wire this by hand on my second station!

Cheers

Dennis

gapdev (author)Dennisv152016-05-05

Hi Dennis,

What kind of glue did you use? Acrylic Glue?

For kicks, I thought I'd print the Bezel since I have some Orange Filament in and wanted to see what it looks like.

The Printed Bezel doesn't look half as good as the laser cut version, but it's fun trying out different configurations. I did notice, however, that the 3D version needs some modifications (the cutout is too large) and the Pegs that hold it in place actually turn out to be holes (at least that is the way Slic3r renders them). I fixed the pegs and am about to make the cutout smaller.

Also, I did make a modification to the Printed Circuit board (no FTDI and the ESP8266 mounts in a socket instead of directly soldered to the board). Will let you know how it all works out.

Kenny

ChipStewart (author)2016-05-03

Dennisv15

Thanks for such a great project! I've just downloaded everything and have everything I need to build it, except for one thing - instead of an OLED, I have a nice little TFT display I would like to use with UART, I2C, and SPI. I'm fairy new at Arduino programming and ESP's. What would be required to convert the sketch? Would this be do-able, or require a major reworking?

I was also thinking of hiding the circuit board in the base and just running very thin wires directly to the display. Any reason this wouldn't work?

Also, I'd love to buy a board or two from you. Do you have any left? I'll PayPal you the the money right away.

Dennisv15 (author)ChipStewart2016-05-03

Hi chipSteward!

Thanx!

First the TFT. I would not recommend it. I am moderate experienced with Arduino but the code for this weather station is made by pro's who do programming for a living. Its quite complicated and you would have to go line by line through the code to see how to port it to the TFT method. For example there is a nice slide effect of the several windows. If you have little experience with Arduino dont start this! Just spend 20 dollar for the Oled. Or you figure out what driver IC is in your TFT and see if there is an Adafruit arduino library for it (or from another developer). That might make it more feasible to do.

Second, I can send you 1 or 2 pcb's I have 7 spares left. They cost $3 per pcb excluding the shipping cost to you. Where do you live? I can do this very cheap via mail letter since the pcbs are flat and lightweight

You could build the board in the base. But you require a higher base then 8mm. For example there is a large electrolyte capacitor required for the Neopixels, its 8mm diameter. You could size it down: take 100uF and 10V working voltage that sizes it down. But hey why bother, you still have a hole in the plexiglass for the OLED (or tft) and you still need to locate the neopixels/rgb leds at the display location then why not just mount the pcb there as well? Besides, you need wires then from neopixels to the pcb in the base: that would be visible no matter how thin you choose.

But surprise me and come up with Revision 2.0!!

Cheers,
Dennis

Dennisv15 (author)Dennisv152016-05-03

one more thing about the TFT plan: it might have I2C but controlling it will work entirely different so thats what makes it complicated

ChipStewart (author)Dennisv152016-05-04

Okay, I'll shelve the TFT plans . . . for
now. I do have the libraries for the display, though. Still, the TFT's
are SO much less expensive, and it would be nice to have color - I
wonder if any of the color OLED displays would work?

I may still
pursue the 'lectronics in the base idea, though. I could always use
multiple caps in parallel. And since the neopixels touch the base, it
seems like you could start / end them there.

I wonder if I would be able to add a weather alert feature, in which it would flash and/or activate a small piezo beeper when a local weather alert is issued. Could be a valuable feature.

Dennisv15 (author)ChipStewart2016-05-04

what you want to do: use a tft or choose a color OLED its all possible but then you have yourself a project because the current code is not at all in the shape to just transfer to a TFT. For example all those weather icons are hardcoded in the software in headerfiles, I mean byte arrays with just 0's and 1's. You cannot recognize a cloud or sun in it its just a bunc of numbers!

If you like to tinker and like to learn arduino/programming its the task for you!

The neopixels do NOT touch the base, they are glued around the OLED display with double sided tape and the 3wires of them go directly to the PCB.

The alert you asked about is possible, in fact I already do it: when it gets below 2 degree celsius I make it turn white to warn me. A buzzer would be easy to add!

ThomasVDD (author)2016-04-24

Very nice design! Looks neat

Dennisv15 (author)ThomasVDD2016-04-24

Tnx!!

jramkisoen (author)2016-04-12

Nice project! Maybe for version 2.0, if you can hide the usb cable that would be nice!

Dennisv15 (author)jramkisoen2016-04-12

Hi jramkisoen

I'm already working on that! Actually I am building a 2nd one and its just a matter of using an "angled" usb connector. So a slight partlist / Bill of Materials change. I found a connector that almost fits, just a little bending of the pins. The alternative is a PCB redesign. For now I'm not going for that.

For the station in the instructables I ordered a USB cable with an angled plug. Thats still slightly visible but much better then whats in the pictures. I glued the usb connector to the PCB using 2component heavy glue so there is no way I can exchange the usb socket :(

Cheers

A Potts (author)Dennisv152016-04-13

Another idea would be to engrave some "puffy cloud lines" on your cloud and hide thin wires behind them that go to a USB jack in the base.

Dennisv15 (author)A Potts2016-04-13

No mygoalwas 5V usb all along, also because the coolest look is in the dark with no sun. Feel free to design V2.0!

A Potts (author)Dennisv152016-04-13

Have you thought about using solar panels and rechargeable batteries? You could add a TP4056 on your board, hide a LiPo battery of considerable size behind the display, and put some solar panels on the back. It would add minimal cost and allow the unit to free stand anywhere. You could also include a USB jack in parallel with the solar panels to facilitate charging via USB if necessary too.

osky42002 (author)2016-04-12

You should make this a kit people you can buy! It's amazing.

About This Instructable

25,547views

422favorites

License:

More by Dennisv15:FPGA Robotics Vision for anyoneAcrylic sheet RGB glowing Weather station with indoor/outdoor/forecast using ESP8266
Add instructable to: