Температура передачи с малиной pi

Температура передачи с малиной pi
Температура передачи с малиной pi
Anonim

Температура передачи с использованием малины Pi

Этот проект демонстрирует сопряжение малины Pi с датчиком температуры I2C (TMP102), а затем публикацию данных на листе и графике Google.

Рекомендуемый уровень

промежуточный

Требования

  • Raspberry Pi

    Используется в статье: Model B Revision 1.0 с Raspbian (Debian GNU / Linux 7.6 (wheezy))

  • Датчик температуры I2C

    Используется в статье: TMP102

  • Способ подключения малины к интернету

    Использовать в статье: Малина Pi подключена непосредственно к маршрутизатору

  • Учетная запись Google для создания и доступа к листам

Настройка I2C

Установка драйверов

  1. Откройте терминал на Pi или используйте SSH
  2. Введите следующие данные на терминале, чтобы установить средства поддержки:

    sudo apt-get install python-smbus

    sudo apt-get install i2c-tools

    Image
    Image
  3. Используйте raspi-config для включения драйверов i2c:

    sudo raspi-config

    1. Выберите «Дополнительные параметры»
    2. Выберите "I2C"
    3. Выберите «Да»
    4. Выберите «Да»
  4. Перезагрузите Pi

Подключение проводов

Raspberry Pi Совет TMP102
Мощность 3v3 VCC
земля GND
SDA SDA
SCL SCL
земля ADD0
Image
Image

Тестирование соединения

  1. Откройте терминал на Pi или используйте SSH
  2. Введите следующее:

    sudo i2cdetect -y 0

    1. Обратите внимание: если вы получите сообщение об ошибке «Ошибка: не удалось открыть файл« / dev / i2c-0 »или« / dev / i2c / 0 »: нет такого файла или каталога», выполните следующие действия:

      1. Добавьте следующие строки в / etc / modules:

        i2c_bcm2708

        i2c_dev

      2. Перезагрузите pi
      3. Альтернативно загружайте модули во время выполнения, введя следующее:

        sudo modprobe i2c_bcm2708

        sudo modprobe i2c_dev

  3. Вы должны увидеть датчик температуры по адресу 0x48.

    Image
    Image
  4. Запустите следующий сценарий python и убедитесь, что указанная температура такая же, как и в комнате, используя команду:

    sudo python TMP102_read_temp.py

    Подсказка: используйте SFTP или USB-накопитель для копирования сценария в папку на пи

    Image
    Image

#!/usr/bin/python import smbus #0 = /dev/i2c-0 #1 = /dev/i2c-1 I2C_BUS = 0 bus = smbus. SMBus(I2C_BUS) #7 bit address (will be left shifted to add the read write bit) DEVICE_ADDRESS = 0x48 #Read the temp register temp_reg_12bit = bus.read_word_data(DEVICE_ADDRESS, 0) temp_low = (temp_reg_12bit & 0xff00) >> 8 temp_high = (temp_reg_12bit & 0x00ff) #convert to temp from page 6 of datasheet temp = (((temp_high * 256) + temp_low) >> 4) #handle negative temps if temp > 0x7FF: temp = temp-4096; temp_C = float(temp) * 0.0625 temp_F = temp_C * 9/5+32 print "Temp = %3.1f C -- %3.1f F" % (temp_C, temp_F)

Скачать код

Сохранение данных в Google

Создать лист

  1. Если у вас нет учетной записи Google, создайте ее.
  2. Создайте новый лист и создайте заголовок в столбце A для даты и столбца B для temp.
  3. Удалите все лишние строки, кроме заголовка. Pi будет добавлять новые строки к листу, поэтому вы не хотите, чтобы данные находились далеко по листу.

    Пример, используемый в этой демонстрации: //docs.google.com/spreadsheets/d/1DRIfCrX7HUyIeMmd2c0A6k1pNcZ7zQXFaNhOE0Rc3PM/edit?usp=sharing

    Image
    Image

Настройка аутентификации

  1. Получите учетные данные OAuth2, выполнив действия, описанные ниже. Выполните шаги 1-4, вам нужен только файл json.
  2. Найдите json-файл для «client_id». Сохраните текст, следующий за «client_id», он будет использоваться в скрипте python.

    «client_email»: «284377770079-», * note: текст в загружаемом файле будет отличаться

  3. Скопируйте json-файл в папку на Малиновой Пи.
  4. В листе, созданном в предыдущем разделе, нажмите «Файл»> «Поделиться». Выберите «Can Edit» и вставьте «client-email» выше в строку электронной почты.
  5. На Pi установите необходимое программное обеспечение, введя в командной строке следующее:

    sudo apt-get install python-pip

    sudo pip install gspread oauth2client

    sudo apt-get install python-openssl

Тестирование соединения

  1. Запустите следующий сценарий на Pi из того же каталога, что и json-файл с более раннего шага. Сценарий использует время от Pi для первого столбца, поэтому убедитесь, что время настроено правильно, используя raspi-config.

    sudo python TMP102_google_sheet.py

    Image
    Image

import sys import time import datetime import gspread import oauth2client.client import json import smbus #Change the following settings based on your setup #0 = /dev/i2c-0 #1 = /dev/i2c-1 I2C_BUS = 0 DEVICE_ADDRESS = 0x48 #json filename for credentials JSON_FILENAME = 'Temp Logger-68e32d47588c.json' # Google sheet to save to GSHEET_NAME = 'temp_logging_demo' """ Write TMP102 data to google sheets """ #load credentials from json and open the spreadsheet for writing json_key = json.load(open(JSON_FILENAME)) creds = oauth2client.client. SignedJwtAssertionCredentials(json_key('client_email'), json_key('private_key'), ('//spreadsheets.google.com/feeds')) client_inst = gspread.authorize(creds) gsheet = client_inst.open(GSHEET_NAME).sheet1 #initialize the i2c bus bus = smbus. SMBus(I2C_BUS) #Read the temp register temp_reg_12bit = bus.read_word_data(DEVICE_ADDRESS, 0) temp_low = (temp_reg_12bit & 0xff00) >> 8 temp_high = (temp_reg_12bit & 0x00ff) #convert to temp from page 6 of datasheet temp = (((temp_high * 256) + temp_low) >> 4) #handle negative temps if temp > 0x7FF: temp = temp-4096; temp_C = float(temp) * 0.0625 temp_F = temp_C * 9/5+32 curr_time = datetime.datetime.now() print "Writing new row to %s: %s - %3.1f" % (GSHEET_NAME, curr_time, temp_F) #write a new row to the spreadsheet with the current time and temperature gsheet.append_row((curr_time, temp_F))

Скачать код

Автоматический запуск

  1. Вы можете изменить сценарий на цикл, или вы можете использовать задание cron, чтобы шина I2C была освобождена, когда она не используется. Вот как настроить работу cron.
  2. Добавьте, как часто вы хотите, чтобы сценарий запускался с помощью crontab:

    crontab -e

  3. Добавьте следующую строку для запуска каждые 10mn:

    * / 10 * * * * cd / path / to / script & python / path / to / script >> / path / to / log 2> & 1

Графическое отображение на веб-странице

  1. Получите ссылку общего доступа из листов Google, нажав «Файл»> «Поделиться»> «Получить совместную ссылку».
  2. Загрузите файл.zip ниже
  3. Вставьте ссылку в код ниже, где «//docs.google.com/spreadsheets/d/1DRIfCrX7HUyIeMmd2c0A6k1pNcZ7zQXFaNhOE0Rc3PM».
  4. Откройте веб-страницу, и она должна выглядеть следующим образом. Вы также можете вставить javascript в существующую веб-страницу.

Скачать код

Попробуйте этот проект сами! Получить спецификацию.