Large Pi-based Thermometer and Clock

Similar documents
Adafruit AMG8833 8x8 Thermal Camera Sensor

Adafruit CCS811 Air Quality Sensor

Adafruit DRV2605 Haptic Controller Breakout

Naughty or Nice Machine

Adafruit Color Sensors

Adafruit GPIO Expander Bonnet for Raspberry Pi Created by Kattni Rembor. Last updated on :12:47 PM UTC

Adafruit APDS9960 breakout

Adafruit VL53L0X Time of Flight Micro-LIDAR Distance Sensor Breakout

Adafruit MCP9808 Precision I2C Temperature Sensor Guide

Adafruit 7-Segment LED FeatherWings

Adafruit 8x16 LED Matrix FeatherWing

i2c/spi LCD Backpack Created by lady ada Last updated on :11:04 PM UTC

Adafruit MMA8451 Accelerometer Breakout

Adafruit Pi Cobbler Kit

Adafruit 8x16 LED Matrix FeatherWing

Adafruit MPRLS Ported Pressure Sensor Breakout

Adafruit PCF8523 Real Time Clock

14-Segment Alpha-numeric LED FeatherWing

Monochrome OLED Breakouts

Adafruit Si7021 Temperature + Humidity Sensor

Adafruit Capacitive Touch Sensor Breakouts

Adafruit Si5351 Clock Generator Breakout

IS31FL x9 Charlieplexed PWM LED Driver

Adafruit DS3231 Precision RTC Breakout

Joy Featherwing. Created by Dean Miller. Last updated on :03:07 PM UTC

Adafruit MMA8451 Accelerometer Breakout

Adafruit TPL5110 Power Timer Breakout

MLX90393 Wide-Range 3-Axis Magnetometer

Adafruit AM2320 Sensor

Adafruit Prototyping Pi Plate. Created by Ladyada

Adafruit IO Basics: Servo

NeoMatrix 8x8 Word Clock

TSL2561 Luminosity Sensor

Adafruit LED Backpacks

Grove - LED Bar. Introduction. Features

Adafruit I2C FRAM Breakout

Adafruit AS channel Visible Light Sensor

MCP Bit DAC Tutorial

Adafruit TPL5111 Reset Enable Timer Breakout

LED Eyes. Created by Ruiz Brothers. Last updated on :50:55 AM UTC

Arduino Lesson 6. Digital Inputs

Adafruit MMA8451 Accelerometer Breakout

Adafruit LED Backpacks

Android GBoard Morse Code Control with Circuit Playground Express

Adafruit SGP30 TVOC/eCO2 Gas Sensor

MCP Bit DAC Tutorial

Adafruit 1.27" and 1.5" Color OLED Breakout Board

Adafruit HUZZAH32 - ESP32 Feather

Adafruit DRV2605 Haptic Controller Breakout

3D Printed Google AIY Voice Kit

Crickit Dancing Marionette Kit Created by Dano Wall. Last updated on :03:11 PM UTC

Adafruit s PCF8523 RTC Library Documentation

Adafruit Mini TFT " 160x80

Trinket-Powered Conference Room Occupancy Display

Adafruit s DS3231 RTC Library Documentation

DIY Circuit Playground Shields

Adafruit Mini TFT with Joystick Featherwing

Adafruit LED Sequins. Created by Becky Stern. Last updated on :02:00 AM UTC

Flora Wearable GPS. Created by Becky Stern. Last updated on :32:36 PM UTC

Adafruit GPS Hat in Windows IoT Core

0.96" mini Color OLED

Introducing Adafruit Trellis

Adafruit MAX31865 RTD PT100 or PT1000 Amplifier

Clockwork Goggles. Created by John Park. Last updated on :03:10 PM UTC

Adafruit PowerBoost 500 Shield

Interior Purse Light. Created by Becky Stern. Last updated on :41:08 PM UTC

Data Logging with Feather and CircuitPython

RGB LCD Shield. Created by lady ada. Last updated on :48:40 PM UTC

Neon LED Signs. Created by John Park. Last updated on :11:09 PM UTC

Adafruit ATWINC1500 WiFi Breakout

FeatherWing Proto and Doubler

Toy Car Speed Timer. Created by Kirby Griese. Last updated on :13:49 PM UTC

PyPortal View Master Created by Ruiz Brothers. Last updated on :51:28 AM UTC

3D Printed Camera LED Ring

PyPortal NeoPixel Color Picker Created by Kattni Rembor. Last updated on :42:41 PM UTC

NeoPixel Ring Bangle Bracelet

Milk Jug Glow Skull. Created by John Park. Last updated on :28:36 PM UTC

Stumble-Bot. Created by Dano Wall. Last updated on :04:06 AM UTC

FeatherWing Proto, Doubler and Tripler

Grove - 4-Digit Display

Interactive Gift Box. Created by codingpro. Last updated on :47:40 AM UTC

Circuit Playground Express Head-Tilt Ears

Audio Prank Gift Box. Created by Becky Stern. Last updated on :46:15 PM UTC

7 Portable Multitouch Raspberry Pi Tablet

Raspberry Pi Selfie Bot

1.8" TFT Display Breakout and Shield

Guardian Shield+ Zelda Breath of the Wild

Adafruit eink Display Breakouts

Bunny Ears with MakeCode

Solar Boost Bag. Created by Becky Stern. Last updated on :44:55 PM UTC

Adafruit WINC1500 WiFi Shield for Arduino

Adafruit SI7021 Library Documentation

FLORA and GEMMA ICSP. Created by Becky Stern. Last updated on :42:16 PM UTC

Bike Wheel POV Display

3D Printed LED Knuckle Jewelry

Adafruit LIS3DH Triple-Axis Accelerometer Breakout

Prophet 600 GliGli mod

Slider Crank Mechanism -- from Cardboard and Craft Sticks

Trellis 3D Printed Enclosure

Bluetooth Controlled NeoPixel Headphones

Transcription:

Large Pi-based Thermometer and Clock Created by Simon Monk Last updated on 2017-09-12 03:11:01 PM UTC

Guide Contents Guide Contents Overview Parts Raspberry Pi 3 - Model B - ARMv8 with 1G RAM Adafruit 1.2" 4-Digit 7-Segment Display w/i2c Backpack - Red Adafruit DS1307 Real Time Clock Assembled Breakout Board DS18B20 Digital temperature sensor + extras Adafruit Pi Cobbler + Kit- Breakout Cable for Pi B+/A+/Pi 2/Pi 3 Premium Male/Male Jumper Wires - 20 x 3" (75mm) Half-size breadboard Hardware Software Add 1-Wire to your Pi Install LED Backpack software Configure and Test 2 3 4 4 4 5 5 6 6 7 8 13 13 13 16 Adafruit Industries https://learn.adafruit.com/large-pi-based-thermometer-and-clock Page 2 of 16

Overview This project combines a whole heap of modules to enable a Raspberry Pi to power a large 1.2 inch 4 digit 7 segment display. A small switch switches the display between showing the temperature and the current time. The project uses a real-time clock (RTC) to ensure that the Pi always has the correct time, even if it is not connected to the Internet. Adafruit Industries https://learn.adafruit.com/large-pi-based-thermometer-and-clock Page 3 of 16

Parts Raspberry Pi 3 - Model B - ARMv8 with 1G RAM PRODUCT ID: 3055 Did you really think the Raspberry Pi would stop getting better? At this point, we sound like a broken record, extolling on the new Pi s myriad improvements like we re... http://adafru.it/scy $35.00 IN STOCK Adafruit 1.2" 4-Digit 7-Segment Display w/i2c Backpack - Red PRODUCT ID: 1270 What's better than a single LED? Lots of LEDs! A fun way to make a numeric display is to use a 4-digit 7-segment display. LED matrices like these are 'multiplexed' - so to... Adafruit Industries https://learn.adafruit.com/large-pi-based-thermometer-and-clock Page 4 of 16

http://adafru.it/scz $17.50 OUT OF STOCK Adafruit DS1307 Real Time Clock Assembled Breakout Board PRODUCT ID: 3296 This is a great battery-backed real time clock (RTC) that allows your microcontroller project to keep track of time even if it is reprogrammed, or if the power is lost. Perfect for... http://adafru.it/sd0 $7.50 IN STOCK DS18B20 Digital temperature sensor + extras PRODUCT ID: 374 These 1-wire digital temperature sensors are fairly precise (±0.5 C over much of the range) and can give up to 12 bits of precision from the onboard digital-to-analog... http://adafru.it/sd1 $3.95 Adafruit Industries https://learn.adafruit.com/large-pi-based-thermometer-and-clock Page 5 of 16

IN STOCK Adafruit Pi Cobbler + Kit- Breakout Cable for Pi B+/A+/Pi 2/Pi 3 PRODUCT ID: 1990 The Raspberry Pi B+ has landed on the Maker World like a 40-GPIO pinned, quad-usb ported, credit card sized bomb of DIY joy. And while you can use most of our great Model B accessories by... http://adafru.it/sd2 $6.50 OUT OF STOCK Premium Male/Male Jumper Wires - 20 x 3" (75mm) PRODUCT ID: 1956 Handy for making wire harnesses or jumpering between headers on PCB's. These premium jumper wires are 3" (75mm) long and come in a 'strip' of 20 (2 pieces of each of ten rainbow... http://adafru.it/sd3 $1.95 Adafruit Industries https://learn.adafruit.com/large-pi-based-thermometer-and-clock Page 6 of 16

IN STOCK Half-size breadboard PRODUCT ID: 64 This is a cute half size breadboard, good for small projects. It's 2.2" x 3.4" (5.5 cm x 8.5 cm) with a standard double-strip in the middle and two power rails on both... http://adafru.it/kep $5.00 IN STOCK Adafruit Industries https://learn.adafruit.com/large-pi-based-thermometer-and-clock Page 7 of 16

Hardware This project uses a lot of modules and there are a lot of connections to be made. The Pi Cobbler, LED Display and RTC are all supplied as kits that must be assembled. You can follow the instructions on the product pages for the components, with one exception, when you come to assemble the real-time clock module, do not solder the two resistors R1 and R2. (Or if using the assembled version, cut the two jumper traces on the bottom) They are not needed when the module is used with a Raspberry Pi, as it has its own pull-up resistors. The RTC will allow a Raspberry Pi to know the time, even when not connected to the Internet. As such it is not essential to this project if your Raspberry Pi is going to have an Internet connection. Having assembled the modules, you can then fit them onto the breadboard and wire them Adafruit Industries https://learn.adafruit.com/large-pi-based-thermometer-and-clock Page 8 of 16

up. You can just about cram all the components onto a single half-sized breadboard, but it is easier if you use two clipped together side to side. The first step is to place all the components as shown below. Make sure everything is the right way around, especially the temperature sensor. The diagram above shows the layout for a smaller 0.56 inch display which will work just as well, however, in the final design, you will notice that just underneath the + connection on the display, there is an orange jumper wire connected to +3V. The larger display needs this extra connection to set the logic level to use, whereas the smaller 0.56 inch module does not. Otherwise, the connections are identical and either module can be used. The next step is to make all the power connections. The diagram show GND connections in blue, +5V in red and +3.3V in purple. Adafruit Industries https://learn.adafruit.com/large-pi-based-thermometer-and-clock Page 9 of 16

Now lets add the leads for the I2C bus connections. I have used orange wires for SDA and yellow for SCA. Adafruit Industries https://learn.adafruit.com/large-pi-based-thermometer-and-clock Page 10 of 16

Finally we need the connections to the switch and the temperature sensor output, which are made using green wires. Adafruit Industries https://learn.adafruit.com/large-pi-based-thermometer-and-clock Page 11 of 16

You may also like to look at separate tutorials for the RTC http://learn.adafruit.com/addinga-real-time-clock-to-raspberry-pi (http://adafru.it/apm) and temperature sensor http://learn.adafruit.com/adafruits-raspberry-pi-lesson-11-ds18b20-temperaturesensing (http://adafru.it/awy) When everything is assembled, you can connect the ribbon cable to the GPIO connector. Remember to have the red band of the ribbon cable towards the SD card on the Raspberry Pi. Adafruit Industries https://learn.adafruit.com/large-pi-based-thermometer-and-clock Page 12 of 16

Software Add 1-Wire to your Pi You'll need to start by installing support for the DS18B20 1-Wire subsystem. Visit this page to do so, you'll have to add an overlay to config.txt!(http://adafru.it/sd4) Install LED Backpack software The software for this project uses the Adafruit code for driving the 7 segment display. So, you should start by downloading this onto your Raspberry Pi. sudo apt-get update sudo apt-get install -y git build-essential python-dev python-smbus python-imaging python-pip python-pil git clone https://github.com/adafruit/adafruit_python_led_backpack.git We are going to place the program for this into a file inside the Adafruit code, so issue the following commands to get to the right directory. cd Adafruit_Python_LED_Backpack sudo python setup.py install Now create a new file to edit, by typing the command: nano thermo_clock.py Then paste the program below into the editor. import os import glob import time import datetime from Adafruit_LED_Backpack import SevenSegment import RPi.GPIO as io import subprocess io.setmode(io.bcm) switch_pin = 18 io.setup(switch_pin, io.in) segment = SevenSegment.SevenSegment(address=0x70) Adafruit Industries https://learn.adafruit.com/large-pi-based-thermometer-and-clock Page 13 of 16

# Initialize the display. Must be called once before using the display. segment.begin() os.system('modprobe w1-gpio') os.system('modprobe w1-therm') base_dir = '/sys/bus/w1/devices/' device_folder = glob.glob(base_dir + '28*')[0] device_file = device_folder + '/w1_slave' def read_temp_raw(): catdata = subprocess.popen(['cat',device_file], stdout=subprocess.pipe, stderr=subprocess.pipe) out,err = catdata.communicate() out_decode = out.decode('utf-8') lines = out_decode.split('\n') return lines def read_temp(): lines = read_temp_raw() while lines[0].strip()[-3:]!= 'YES': time.sleep(0.2) lines = read_temp_raw() equals_pos = lines[1].find('t=') if equals_pos!= -1: temp_string = lines[1][equals_pos+2:] temp_c = float(temp_string) / 1000.0 temp_f = temp_c * 9.0 / 5.0 + 32.0 return temp_c, temp_f def display_temp(): segment.set_colon(false) temp = int(read_temp()[1]) # F # temp = int(read_temp()[0]) # C sign = (temp < 0) temp = abs(temp) digit_1 = temp % 10 temp = temp / 10 digit_2 = temp % 10 temp = temp / 10 digit_3 = temp % 10 if sign : segment.set_digit_raw(0, 0x40) # - sign if digit_3 > 0 : segment.set_digit(0, digit_3) # Hundreds else: segment.set_digit_raw(0, 0) if digit_2 > 0 : segment.set_digit(1, digit_2) # Tens else: segment.set_digit_raw(1, 0) segment.set_digit(2, digit_1) # Ones Adafruit Industries https://learn.adafruit.com/large-pi-based-thermometer-and-clock Page 14 of 16

segment.set_digit_raw(3, 0x71) #F # Temp units letter #segment.set_digit_raw(3, 0x39) #C def display_time(): now = datetime.datetime.now() hour = now.hour minute = now.minute second = now.second # Set hours segment.set_digit(0, int(hour / 10)) # Tens segment.set_digit(1, hour % 10) # Ones # Set minutes segment.set_digit(2, int(minute / 10)) # Tens segment.set_digit(3, minute % 10) # Ones # Toggle colon segment.set_colon(second % 2) # Toggle colon at 1Hz while True: segment.clear() if io.input(switch_pin): display_temp() else : display_time() segment.write_display() time.sleep(0.5) Python is indent/whitespace sensitive! So make sure you get all the tabs/indents as shown above. Press CTRL-X and then Y to save the file. The code is really a merger of code from a number of other projects. The code for displaying the time comes from the file ex_7segment_clock.py in the same directory as this program. The code for reading the temperature is taken from this tutorial http://learn.adafruit.com/adafruits-raspberry-pi-lesson-11-ds18b20-temperaturesensing (http://adafru.it/awy) The main loop simply checks the position of the switch and then either displays the temperature or the time. You can also find information on using switches with the GPIO library here: http://learn.adafruit.com/adafruits-raspberry-pi-lesson-12-sensingmovement (http://adafru.it/c67) Adafruit Industries https://learn.adafruit.com/large-pi-based-thermometer-and-clock Page 15 of 16

Configure and Test We are now ready to run the program, but first if you are using the RTC, you need to set it. You can find instructions to do this here: http://learn.adafruit.com/adding-a-real-time-clockto-raspberry-pi (http://adafru.it/apm) To run the program type the following command: sudo python thermo_clock.py The temperature display can easily be changed from displaying degrees F to degrees C by swapping over a few lines in the code. segment.set_digit_raw(3, 0x71) #F #segment.set_digit_raw(3, 0x39) #C # Temp units letter and temp = int(read_temp()[1]) # F # temp = int(read_temp()[0]) # C To swap, just move the # in front of the line that does not apply. Adafruit Industries Last Updated: 2017-09-12 03:10:59 PM UTC Page 16 of 16