задний план
Несколько дней назад компания получила небольшой подарок от Alibaba Feitian Park, отдела IOT. Поскольку босс занят, у него нет времени позаботиться об этом.
В то время он не был открыт, поэтому мне было любопытно, что это такое, поэтому я поспешно открыл его и обнаружил, что это Raspberry Pi 3 (Raspberry Pi 3). Я подумал, что это забавно, поэтому взялся за дело, поэтому мой начальник встал и попросил меня использовать этот гаджет для проверки соответствующих компонентов на платформе Ali IoT. Итак, есть инженер-программист Raspberry Pi, который реализует трудное путешествие температуры и влажности в помещении!
Вот что из коробки:
- Raspberry Pi 3 (модель Raspberry Pi 3 B+)
- Плата Raspberry Pi 3-го поколения B+
- USB-адаптер питания Raspberry Pi 5 В @ 2,5 А
- Контроллер сообщества Maker (DFROBOT)
- Несколько кабелей Raspberry Pi
- Модуль DHT11 (датчик температуры и влажности)
- светодиодный модуль
Установлены
Скачать официальное зеркало сайта
Официальный сайт малины Pi, нажмите «Загрузки» в верхней части списка зеркал,
Raspbian — официальная операционная система для всех моделей Raspberry Pi.
Ниже представлены два типа зеркал:
- NOOBS: простой установщик ОС для начинающих
- RASPBIAN: официально поддерживает операционную систему Raspberry Pi на базе Debian.
Я выбираю нажать, чтобы загрузить вторую систему. После нажатия вы обнаружите, что есть 2 типа RASPBIAN, которые вы можете выбрать.
- Благодаря интерфейсу оператора Raspbian поставляется с предустановленным большим количеством программного обеспечения для обучения, программирования и общего использования. В нем есть Python, Scratch, Sonic Pi, Java и т. д.
- LITE версия без интерфейса оператора
Для таких, как я, новичок в Raspberry Pi, я выбираю загрузку системы RASPBIAN с операционным интерфейсом.
Формат SD-карты
Цель: вставьте SD-карту в устройство чтения карт TF, вставьте ее в компьютер и отформатируйте SD-карту какFAT32Формат.
:checkered_flag: мышьщелкните правой кнопкой мышиБуква диска SD-карты, нажмитеформат. В окне форматирования файловой системы выберите "[FAT32]", затем выберите "[Быстрое форматирование]», нажмите «Пуск» и дождитесь завершения.
:пингвин: установитьGParted, Щелкните правой кнопкой мыши букву диска SD-карты, щелкните правой кнопкой мыши, чтобы отформатировать, и выберитеFAT32и выберите Формат.
Зеркальное программирование
:checkered_flag: Вам необходимо скачать программу Win32diskimager, затем вставить SD-карту в картридер, скопировать скачанный выше образ на SD-карту, после завершения вынуть SD-карту из картридера и вставить в Raspberry Pi .
:penguin:
- После загрузки откройте папку, в которой находится zip-файл, и введите следующую команду, чтобы разархивировать его.
unzip 2018-10-09-raspbian-stretch.zip
Замените имя загруженного вами zip-файла, чтобы получить файл 2018-10-09-raspbian-stretch.img, который является изображением, которое нам нужно.
- После получения файла изображения нам нужно записать файл изображения на заранее подготовленную TF-карту. Вставьте TF-карту в картридер и подключите ее к компьютеру. использовать
sudo fdisk -l
команда, чтобы увидеть имя этого устройства, которое на моем компьютере /dev/sdb.
- Зная путь к устройству чтения карт, мы используем команду dd для записи файла изображения на карту TF. Команда выглядит следующим образом:
sudo dd if=2018-10-09-raspbian-stretch.img of=/dev/sdc bs=2M
Где за if= следует имя файла изображения, а за of= следует путь к устройству чтения карт. Введите, выполните команду и дождитесь ее завершения.
Процесс записи занимает некоторое время, и терминал отобразит его после завершения записи.
После того, как зеркальное изображение сожжено, вставьте TF-карту в слот для карт.После вставки шнура питания вы увидите, что маленький зеленый индикатор рядом с маленьким красным индикатором будет мигать. Зеленый индикатор мигает, указывая на то, что программирование изображения выполнено правильно и Raspberry Pi успешно включен. Теперь можно подключить дисплей и клавиатуру.
Как вы можете видеть на картинке ниже
Raspberry Pi подключен к модулю измерения температуры и влажности.
Схема контактов Raspberry Pi 3b
Сначала опубликуйте схему выводов Raspberry Pi 3b:
При подключении обратите внимание на метод кодирования и обратите внимание на направление схемы контактов Raspberry Pi, как показано на рисунке выше.
DHT11
DHT11 — это датчик температуры и влажности с калиброванным цифровым выходным сигналом. Его точность влажности составляет +-5% относительной влажности, температура составляет +-2 ℃, диапазон влажности составляет 20-90% относительной влажности, температура составляет 0 ~ 50 ℃. Разделен на 3 интерфейса, а именно:VCC
, DATA
, GND
.
пин код | имя | Типы | иллюстрировать |
---|---|---|---|
1 | VCC | источник питания | + каскад, вход 3В-5,5В |
2 | DATA | вывод данных | выходной контакт |
3 | GND | земля | заземляющий контакт |
закрепить ссылку
Я использую датчик dht11 с тремя головками, поэтому проводка следующая:
VCC (или положительный) --- источник питания 3 В для Raspberry Pi
GND (земля или минус) --- интерфейс заземления Raspberry Pi
ДАННЫЕ (D или out) --- контакт GPIO Raspberry Pi
1.VCC
соединять3V
,можешь выбрать1
рот или17
рот
2.DATA
соединятьGPIO
рот, я выбралGPIO4
, первый7
рот
3.GND
соединять接地口
, я выбрал первое14
рот
Питон получает температуру и влажность в помещении
Установить Python3
Сначала протестируйте версию Python, установленную на Raspberry Pi 3.
sudo apt-get install python3
Поскольку многие нижние уровни Ubuntu используют Python2.*, Python3 и Python2 несовместимы друг с другом, поэтому в настоящее время вы не можете удалить Python2, и вам нужно указать Python по умолчанию на Python3.
Сначала удалите файл ссылки python по умолчанию в каталоге usr/bin/.
sudo rm -rf /usr/bin/python
Затем откройте терминал и введите следующую командную строку, чтобы установить новые отношения соединения.
sudo ln -s /usr/bin/python3.5 /usr/bim/python
Затем проверьте правильность версии Python, просто введите python в командной строке.
Написать код Python
#!/usr/bin/python
import RPi.GPIO as GPIO
import time
channel =4
data = []
j = 0
GPIO.setmode(GPIO.BCM)
time.sleep(1)
GPIO.setup(channel, GPIO.OUT)
GPIO.output(channel, GPIO.LOW)
time.sleep(0.02)
GPIO.output(channel, GPIO.HIGH)
GPIO.setup(channel, GPIO.IN)
while GPIO.input(channel) == GPIO.LOW:
continue
while GPIO.input(channel) == GPIO.HIGH:
continue
while j < 40:
k = 0
while GPIO.input(channel) == GPIO.LOW:
continue
while GPIO.input(channel) == GPIO.HIGH:
k += 1
if k > 100:
break
if k < 8:
data.append(0)
else:
data.append(1)
j += 1
print("sensor is working.")
print(data)
humidity_bit = data[0:8]
humidity_point_bit = data[8:16]
temperature_bit = data[16:24]
temperature_point_bit = data[24:32]
check_bit = data[32:40]
humidity = 0
humidity_point = 0
temperature = 0
temperature_point = 0
check = 0
for i in range(8):
humidity += humidity_bit[i] * 2 ** (7-i)
humidity_point += humidity_point_bit[i] * 2 ** (7-i)
temperature += temperature_bit[i] * 2 ** (7-i)
temperature_point += temperature_point_bit[i] * 2 ** (7-i)
check += check_bit[i] * 2 ** (7-i)
tmp = humidity + humidity_point + temperature + temperature_point
if check == tmp:
print("temperature :", temperature, "*C, humidity :", humidity, "%")
else:
print("wrong")
print("temperature :", temperature, "*C, humidity :", humidity, "% check :", check, ", tmp :", tmp)
GPIO.cleanup()
Показать результаты
Чтобы проверить, является ли результат точным, я приложил палец к датчику, и данные теста:
Тест правильный~~~.
MQTT публикует сообщения на прокси-сервер
Установить paho-mqtt
Чтобы установить paho-mqtt с помощью инструмента pip, введите следующую команду:
sudo pip install paho-mqtt
Сообщение о выпуске Python Демонстрация
import paho.mqtt.client as mqtt
import time
import json
#当代理响应连接请求时调用。
#rc的值决定了连接成功或者不成功
def on_connect(client, userdata, flags, rc):
print("Connected with result code " + str(rc))
#当收到关于客户订阅的主题的消息时调用
def on_message(client, userdata, msg):
print(msg.topic + " " + str(msg.payload))
client = mqtt.Client()
#客户端初始化,设置客户端id等信息
client.reinitialise(client_id="test01",clean_session=True,userdata=None)
#客户端设置用户名,密码信息
client.username_pw_set(username="123456",password="2236FDE7A9744017E25C95B333E5D546AF354F74463EF6FDABA09AC20C19306979DA982C9659877D4896336A7E3484F12B1BAFF773B8343A2AA75CC9EC8B51B2")
client.on_connect = on_connect
client.on_message = on_message
#组装json数据
s = {'name':'mushuwei','age':24}
jo = json.dumps(s)
try:
#connect()函数将客户端连接到代理。 这是一个阻塞函数。
client.connect("127.0.0.1", 1883, 600)
while True:
#从客户端发送消息给代理。 publish(topic, payload=None, qos=0, retain=False)
client.publish('test', payload=jo, qos=0)
time.sleep(1)
client.loop_forever(timeout=1.0,max_packets=1,retry_first_connection=False)
except KeyboardInterrupt:
client.disconnect()
Поместите полученные выше данные о температуре и влажности в функцию, соберите их в данные json, поместите в нагрузку и опубликуйте сообщение агенту. Вот и все!
Данные клиента, подписавшегося на тестовую тему, показаны следующим образом:
Что касается написания кода прокси-сервера MQTT, вы можете обратиться к статьям, которые я писал ранее:
-
Путь к реализации высокопроизводительного сервера Интернета вещей
-
Netty реализует высокопроизводительный сервер IOT (Groza) с ручным разрывом протокола MQTT.
-
Netty реализует высокопроизводительный сервер IOT (Groza) в исчерпывающей главе кода
разное
Это конец подробного объяснения рынка IoT и моделирования технологий.
Оригинал не просто, если вы чувствуете себя хорошо, я надеюсь дать рекомендацию! Ваша поддержка - самая большая мотивация для моего письма!
Ниже вы постепенно будете использовать Netty для реализации IOT-сервера протокола MQTT.
Уведомление об авторских правах:
Автор: Му Шувэй
Источник блога сада:блог woo woo woo.cn на.com/Sanshenghu…
источник на гитхабе:GitHub.com/Саншэншу…
Источник личного блога:sanshengshui.github.io/