ATtiny Wireless Weather Station Remote Serial LCD Display

The Experiment: ATtiny Based Wireless Weather Station Remote LCD Display. Build a 433Mhz wireless weather station remote serial LCD display around an Atmel ATtiny85 micro-controller, with a serial 2×16 LCD display and 9v trickle battery back-up charger. The LCD will display ATtiny Anemometer (wind speed), Wind vane (wind direction) and Outside Temperature. Receive weather data from the ATtiny Wireless Weather Station.

The challenge, the ATtiny85 only has 8-pins, 8KB ISP flash memory and pin1-4-8 are dedicated to Reset-GND-VCC. So the first thing to do, assign the available pins for RX input, TX serial output (to LCD display), Receive packet LED.

ATtiny85-Wireless-Weather-Station-LCD-pinout

433Mhz Wireless Receiver Module:

433-mhz-rf-wireless-receiver-module

Schematic:

ATtiny85-Wireless-Weather-Station-LCD-Schematic

Prototype:

ATtiny85 RX module piggybacked on the Parallax Serial LCD Display.
ATtiny85 Wireless Weather Station LCD Display

Notes:

Mar 3, 2014: Originally wrote the sketch for this experiment, for the Arduino Micro Based Wireless Weather Station LCD Display experiment, but felt that it was wasting  an Arduino Micro just to drive an LCD display. So  though why not use an ATtiny85 to drive an LCD display.  The Arduino Micro sketch used the following libraries:

  • SoftwareSerial
  • VirtualWire (v1.6)
  • ParallaxLCD

The sketch size: 12,804 bytes way to big for the ATtiny85.
So re-wrote it with the following libraries:

  • SoftwareSerial
  • VirtualWire (v1.6)

The sketch size: 7,186 byte OK for the ATtiny85.
So re-wrote it with the following libraries:

  • TinyDebugSerial
  • VirtualWire (v1.6)

The sketch size: 5,786 bytes perfect for the ATtiny85.

So up-loaded sketch to ATtiny85, built a prototype and it did not work. So up-loaded the Wireless Weather Station sketch to a second ATtiny85, tied the two together to see if VirtualWire would work on an ATtiny85, found that it does work, but it still would not work with the 433Mhz receiver. So thought, probably won’t work with the internal clock will have to use external crystal. But before the fuses were burnt for external crystal, wanted to see if it would work with the internal 16Mhz clock, so burnt 16Mhz boot-loader,  re-loaded sketch and it would not even booth. So reset all the fuse to 1Mhz default, re-loaded 8Mhz boot-loader, re-loaded sketch, and it work intermittently with the 433Mhz receiver. So that confirmed that the internal clock was not stable enough for VirtualWire and might have to use an external crystal.

Was just about to burn an ATtiny85 to use external 8Mhz crystal, then discovered that the RX ATtiny85 would only receive data packets when the TX ATtiny85 was on the bread board. So thought, let lower the current going to the RX ATtiny85 with a 150Ohm resistor between +5v to pin8. Well for some reason that worked, the RX ATtiny85 was receiving clean data packets, so thought lets up the resistor to 220Ohm and that worked even better. So that’s why there is a resistor between +5v and pin8. Still feel that it would work even better with an external 8Mhz crystal, but for now,  at least VirtualWire (v1.6) work’s on an ATtiny85.

Mar 05, 2014: Built the prototype ATtiny85 Wireless Weather Station Remote Serial LCD Display, made board small enough to piggy-backed on the back of the Parallax Serial LCD display. Board size 2×3/4 inch the component count is so low that there is plenty of space.

Required Libraries:

  1. #include <TinyDebugSerial>
  2. #include <VirtualWire.h>

Required Functions:

  1. None

Part List:

  1. One(1) ATtiny85
  2. One(1) 433Mhz Receiver Module
  3. One(1) LM7805 Voltage Regulator
  4. One(1) 2×16 Parallax Serial LCD Display
  5. One(1) 100uf 16v Electrolytic Capacitor
  6. One(1) LED
  7. One(1) 100 ohm Resistor
  8. One(1) 9v Re-chargeable Battery
  9. One(1) AC-DC Wall-wart
  10. One(1) General Purpose PC Board
  11. Two(2) 220 ohm Resistor
  12. Two(2) 1N8517 Schlocky Diode
Advertisements