Температура передачи с использованием малины Pi
Этот проект демонстрирует сопряжение малины Pi с датчиком температуры I2C (TMP102), а затем публикацию данных на листе и графике Google.
Рекомендуемый уровень
промежуточный
Требования
- Raspberry Pi
Используется в статье: Model B Revision 1.0 с Raspbian (Debian GNU / Linux 7.6 (wheezy))
- Датчик температуры I2C
Используется в статье: TMP102
- Способ подключения малины к интернету
Использовать в статье: Малина Pi подключена непосредственно к маршрутизатору
- Учетная запись Google для создания и доступа к листам
Настройка I2C
Установка драйверов
- Откройте терминал на Pi или используйте SSH
-
Введите следующие данные на терминале, чтобы установить средства поддержки:
sudo apt-get install python-smbus
sudo apt-get install i2c-tools
Image -
Используйте raspi-config для включения драйверов i2c:
sudo raspi-config
- Выберите «Дополнительные параметры»
- Выберите "I2C"
- Выберите «Да»
- Выберите «Да»
- Перезагрузите Pi
Подключение проводов
Raspberry Pi | Совет TMP102 |
---|---|
Мощность 3v3 | VCC |
земля | GND |
SDA | SDA |
SCL | SCL |
земля | ADD0 |

Тестирование соединения
- Откройте терминал на Pi или используйте SSH
-
Введите следующее:
sudo i2cdetect -y 0
- Обратите внимание: если вы получите сообщение об ошибке «Ошибка: не удалось открыть файл« / dev / i2c-0 »или« / dev / i2c / 0 »: нет такого файла или каталога», выполните следующие действия:
-
Добавьте следующие строки в / etc / modules:
i2c_bcm2708
i2c_dev
- Перезагрузите pi
-
Альтернативно загружайте модули во время выполнения, введя следующее:
sudo modprobe i2c_bcm2708
sudo modprobe i2c_dev
-
- Обратите внимание: если вы получите сообщение об ошибке «Ошибка: не удалось открыть файл« / dev / i2c-0 »или« / dev / i2c / 0 »: нет такого файла или каталога», выполните следующие действия:
-
Вы должны увидеть датчик температуры по адресу 0x48.
Image -
Запустите следующий сценарий python и убедитесь, что указанная температура такая же, как и в комнате, используя команду:
sudo python TMP102_read_temp.py
Подсказка: используйте SFTP или USB-накопитель для копирования сценария в папку на пи
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
Создать лист
- Если у вас нет учетной записи Google, создайте ее.
- Создайте новый лист и создайте заголовок в столбце A для даты и столбца B для temp.
-
Удалите все лишние строки, кроме заголовка. Pi будет добавлять новые строки к листу, поэтому вы не хотите, чтобы данные находились далеко по листу.
Пример, используемый в этой демонстрации: //docs.google.com/spreadsheets/d/1DRIfCrX7HUyIeMmd2c0A6k1pNcZ7zQXFaNhOE0Rc3PM/edit?usp=sharing
Image
Настройка аутентификации
- Получите учетные данные OAuth2, выполнив действия, описанные ниже. Выполните шаги 1-4, вам нужен только файл json.
-
Найдите json-файл для «client_id». Сохраните текст, следующий за «client_id», он будет использоваться в скрипте python.
«client_email»: «284377770079-», * note: текст в загружаемом файле будет отличаться
- Скопируйте json-файл в папку на Малиновой Пи.
- В листе, созданном в предыдущем разделе, нажмите «Файл»> «Поделиться». Выберите «Can Edit» и вставьте «client-email» выше в строку электронной почты.
-
На Pi установите необходимое программное обеспечение, введя в командной строке следующее:
sudo apt-get install python-pip
sudo pip install gspread oauth2client
sudo apt-get install python-openssl
Тестирование соединения
-
Запустите следующий сценарий на Pi из того же каталога, что и json-файл с более раннего шага. Сценарий использует время от Pi для первого столбца, поэтому убедитесь, что время настроено правильно, используя raspi-config.
sudo python TMP102_google_sheet.py
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))
Скачать код
Автоматический запуск
- Вы можете изменить сценарий на цикл, или вы можете использовать задание cron, чтобы шина I2C была освобождена, когда она не используется. Вот как настроить работу cron.
-
Добавьте, как часто вы хотите, чтобы сценарий запускался с помощью crontab:
crontab -e
-
Добавьте следующую строку для запуска каждые 10mn:
* / 10 * * * * cd / path / to / script & python / path / to / script >> / path / to / log 2> & 1
Графическое отображение на веб-странице
- Получите ссылку общего доступа из листов Google, нажав «Файл»> «Поделиться»> «Получить совместную ссылку».
- Загрузите файл.zip ниже
- Вставьте ссылку в код ниже, где «//docs.google.com/spreadsheets/d/1DRIfCrX7HUyIeMmd2c0A6k1pNcZ7zQXFaNhOE0Rc3PM».
- Откройте веб-страницу, и она должна выглядеть следующим образом. Вы также можете вставить javascript в существующую веб-страницу.
Скачать код
Попробуйте этот проект сами! Получить спецификацию.