Радиосигнал
Радиоканал является открытым каналом передачи сигнала и его прослушать может любое аналогичное учтройство. Если у Вас несколько устройств Microbit паралелльно передают сигналы, то они будут мешать друг другу.
Можно настроить радио на разные каналы (пронумерованные 0-83). Это работает точно так же, как детские рации: все настраиваются на один канал и слышат всех остальных. Как и в случае раций, при использовании соседних каналов возможны небольшие помехи.
Радиомодуль позволяет указать две части информации: адрес и группу. Адрес похож на почтовый адрес, тогда как группа похожа на конкретного получателя по адресу. Важно то, что радио отфильтровывает получаемые сообщения, которые не соответствуют вашему адресу и группе. Поэтому важно заранее определить адрес и группу, которые будет использовать ваше приложение.
Конечно, Microbit передает открытый сигнал. Главное, Вам не нужно беспокоиться об их фильтрации. Тем не менее, если кто-то захочет принять сигнал или подменить, они смогут это просто сделать. В этом случае важно использовать зашифрованные средства связи. Криптография — увлекательная тема, но к сожалению, выходит за рамки этого руководства.
Программа «Светлячки»
Это «Светлячок»:
Использовать Microbit, чтобы создать что-то вроде роя светлячки сигнализирующих друг другу
Сначало подключим библиотеку import radio
для работы с радиомодулем.
Используем метод radio.on()
чтобы включить радиомодуль. Радиомодуль тратит много энергии,
поэтому Вы можете управлять его включением и выключением radio.off()
.
Библиотека radio
имеет много функций настройки сигнала, которая позволяет экономить энергию.
Документация по API содержит всю информацию, необходимую для настройки радиостанции в соответствии с вашими потребностями.
Самый простой способ отправить сообщение:
radio.send("message")
Получить сообщение можно:
new_message = radio.receive()
По мере получения сообщений они помещаются в очеред. receive
функция возвращает
последнее сообщение из очереди в виде строки, освобождая место для нового входящего сообщения.
Если очередь сообщений заполняется, то новые входящие сообщения игнорируются
Радиомодуль также может отправлять данные произвольного типа: числа, параметры со значениями
Программа светлячков:
# A micro:bit Firefly.
# By Nicholas H.Tollervey. Released to the public domain.
import radio
import random
from microbit import display, Image, button_a, sleep
# Анимация вспышка
flash = [Image().invert()*(i/9) for i in range(9, -1, -1)]
# Включить радиомодуль.
radio.on()
# Вечный цикл.
while True:
# Если кнопка A нажата отправить сообщение.
if button_a.was_pressed():
radio.send('flash')
# Читать входящие сообщения
incoming = radio.receive()
if incoming == 'flash':
# Если пришло сообщение"flash" проиграть анимацию после случайно задержки
sleep(random.randint(50, 350))
display.show(flash, delay=100, wait=False)
# Передать ответное сообщение.
if random.randint(0, 9) == 0:
sleep(500)
radio.send('flash')
Результат выглядит так: