2019,守护最好的阿中
本帖最后由 rzyzzxw 于 2019-8-21 11:29 编辑2019,注定是不平静的一年。
免责声明:
本文图片来自网络
版权归原作者所有
这个夏天
爱国青年热血沸腾
默默取出我心爱的
怎么忍心让你受折磨
是我给你自由过了火
以下正文
故事虚构
情节简单
能量很正
人物:
Hongkong小朋友小爱
内地小朋友小德
故事:
在香港的小爱同学要播放国歌支持特区政府,设备密码遗失。小爱向内地的小德同学求助,小德发去密码。
小爱顺利完成设备启动,嘹亮的国歌响彻港岛。
序曲
步骤1认认真真做好准备工作
组装设备2xmicro:bit2xmicro:bit扩展板2x锂电池2xBOSONLED灯1x乐高颗粒若干1x导电胶带
步骤2编程MicroPython
编程平台:MIND+1.5.6
编程模式:上传模式
编程语言:MicroPython
1、主控选择
2、编程语言选择
3、手动编辑改写代码
4、代码功能
用B键或者用pin2做触摸键,发送信号。
pin0控制蜂鸣器,pin1控制马达或者LED灯。
A键显示或清除显示。
两个设备代码一样,可以互相发送电码。
本项目中,运用micro:bitP2的触摸功能来实现发报。而bit的触摸功能是需要GND来配合的。所以设备中用导电胶带同时引出了p2和GND,做成了发报机的样子。
参考代码:
https://github.com/jg00dman/m0rvj_microbit_cw_transceiver
稍有修改。代码
from microbit import *
import radio
import music
radio.on()
radio.reset()
#Customise these settings for tx, pwr, channel and speed.
radio.config(power=7)
WPM = 15
txenabled = True #in case you want to practice without sending
sidetone = 550
dotlength = int( 60000 / ( WPM * 50 ) )
dashlength = dotlength * 3
interelement = dotlength
interletter = dotlength * 2
interword = dotlength * 7
DOT_THRESHOLD = dotlength * 2
DASH_THRESHOLD = dotlength * 5
WORD_THRESHOLD = dotlength * 7
DOT = Image("00000:00000:00900:00000:00000")
DASH = Image("00000:00000:09990:00000:00000")
ANT = Image("90909:09990:00900:00900:00900")
morse = {
"A":".-",
"B":"-...",
"C":"-.-.",
"D":"-..",
"E":".",
"F":"..-.",
"G":"--.",
"H":"....",
"I":"..",
"J":".---",
"K":"-.-",
"L":".-..",
"M":"--",
"N":"-.",
"O":"---",
"P":".--.",
"Q":"--.-",
"R":".-.",
"S":"...",
"T":"-",
"U":"..-",
"V":"...-",
"W":".--",
"X":"-..-",
"Y":"-.--",
"Z":"--..",
"0":"-----",
"1":".----",
"2":"..---",
"3":"...--",
"4":"....-",
"5":".....",
"6":"-....",
"7":"--...",
"8":"---..",
"9":"----.",
".":".-.-.",
",":"--..--",
"/":"-..-.",
"?":"..--.."
}
# reverse dict.
decodemorse = {v: k for k, v in morse.items()}
# convert string to cw
def EncodeMorse(message):
m = message.upper()
enc = ""
for c in m:
enc = enc + morse.get(c," ")
if morse.get(c," ") != " ":
enc = enc + " "
return enc
# function to flash and play cw
def FlashMorse(pattern):
for c in pattern:
if c == ".":
display.show(DOT)
pin1.write_digital(1)
music.pitch(sidetone, dotlength)
display.clear()
pin1.write_digital(0)
sleep(interelement)
elif c == "-":
display.show(DASH)
pin1.write_digital(1)
music.pitch(sidetone, dashlength)
display.clear()
pin1.write_digital(0)
sleep(interelement)
elif c == " ":
sleep(interletter)
return
def ReceiveCW():
display.show(ANT)
message = ''
started = running_time()
while True:
waiting = running_time() - started
received = radio.receive()
if received:
FlashMorse(EncodeMorse(received))
message += received
if button_b.is_pressed():
return # breakin to immediate keying
if pin2.is_touched():
return # breakin to immediate keying
if button_a.was_pressed():
display.scroll(message) # nb blocks receive while showing...
message = ''
if waiting > WORD_THRESHOLD * 2:
display.show(ANT)
if len(message) > 15: #keep message buffer short...
message = message
if accelerometer.was_gesture("shake"):
display.scroll("CW TRX by M0RVJ")
def Keyer():
buffer = ''
message = ''
started = running_time()
while True:
waited = running_time() - started
key_down_time = None
while button_b.is_pressed(): ## button B keying
if not key_down_time:
key_down_time = running_time()
music.pitch(sidetone, -1, pin0, False)
pin1.write_digital(1)
while True:
if not button_b.is_pressed():
music.stop()
pin1.write_digital(0)
break
while pin2.is_touched(): ## touch keying
if not key_down_time:
key_down_time = running_time()
music.pitch(sidetone, -1, pin0, False)
pin1.write_digital(1)
while True:
if not pin2.is_touched():
music.stop()
pin1.write_digital(0)
break
key_up_time = running_time()
if key_down_time:
duration = key_up_time - key_down_time
if duration < DOT_THRESHOLD:
buffer += '.'
display.show(DOT)
elif duration:
buffer += '-'
display.show(DASH)
started = running_time()
elif len(buffer) > 0 and waited > DASH_THRESHOLD:
display.clear()
character = decodemorse.get(buffer, '?')
buffer = ''
display.show(character)
if txenabled:
radio.send(character)
message += character
if waited > WORD_THRESHOLD * 2:
return
while True:
Keyer()
ReceiveCW()
5、BXY--另一种代码编程方式
BXY是一款运行于Windows平台的MicroPython编程IDE,界面简介,操作便利。为众多micro:bit和掌控板爱好者提供了一个简洁实用的平台。
QQ群:336213887 绿色版下载地址 安装版下载地址
区别:
绿色版体积小巧无需安装即可运行,但是需要在电脑网络畅通的情况下使用以便下载编译器及示例程序,否则会出现程序无法上传和没有示例程序等问题,推荐个人用户使用。
安装版安装即可运行,即使无网络也可以运行,适合电脑教室和大规模培训等网络不通畅的情况。
6、莫尔斯电码认识
7、莫尔斯电码练习
https://makelogimg.dfrobot.com.cn/FjJXtGh7iNfGsNsGFUZ8Lgtp2rMt?imageView2/2/w/1600
https://player.youku.com/embed/XNDMyMTI0MzA0OA==https://player.youku.com/embed/XNDMyMTI0MzczNg==
第一幕
步骤3Hongkong小朋友小爱要播放国歌支持政府
他向小德发送求助信号SOS,寻求小德给予密码提示。
https://player.youku.com/embed/XNDMyMTI0MDE3Ng==步骤4小德收到来自HongKong的电报
sos
https://player.youku.com/embed/XNDMyMTI0MTAzNg==步骤5小德发送密码给小爱
https://player.youku.com/embed/XNDMyMTI0MTc0OA==步骤6小爱接收到密码
23
https://player.youku.com/embed/XNDMyMTI0MjM3Mg==
第二幕
步骤7国歌播放装置配置
材料清单
1xmicro:bit主控板2xBOSON按钮模块1xBOSON分支模块1xmicro:bit扩展板1xBOSON神经元模块1x好搭徽章板1x录音模块及小喇叭(已录国歌10秒)
1、国歌播放设备组装
2、MIND+实时模式编程
3、训练神经元
3、和徽章板互动
徽章板编程:
http://haohaodada.com/hz/index.php?id=9787
步骤8小爱输入密码,成功启动装置播放国歌
https://player.youku.com/embed/XNDMyMTIyNjkwOA==
https://player.youku.com/embed/XNDMyMTIyNTk4NA==
尾声
https://makelogimg.dfrobot.com.cn/FpSIMC81jpIlnW0x8z5i396ezRFj?imageView2/2/w/1600
设备资料:
神经元
https://wiki.dfrobot.com.cn/index.php?title=%E5%8D%95%E7%A5%9E%E7%BB%8F%E5%85%83%E6%A8%A1%E5%9D%97
在人工神经网络中,复杂的算法将会对每个神经元记录的数据进⾏自动反馈和校准,才形成了“学习”的过程,也就是 “机器学习”,这个过程过于抽象和复杂。NeurOne单神经元模块是一款专为中小学人⼯智能课程设计的教学⼯具,具有基础模式识别功能。 NeurOne单神经元模块,兼容各类传感器,可读取和运用各类数据;模块板载的按钮和旋钮,分别用于记录数据和反馈校准,板载指示灯会提示学⽣是否识别成功。 学生在不断校准过程中,可以体验人工智能“学习”的过程。通过运用该模块,学生可以学习和了解人工智能的基础功能,并理解机器学习的原理。 NeurOne单神经元模块给学⽣极大想象空间,更是让他们真正体验到人⼯智能带来的神奇之处。
徽章板
https://mc.dfrobot.com.cn/thread-296812-1-1.html
micro:bit掌控I/O扩展板
本扩展板能完全兼容micro:bit和掌控板和两种主板。正面插入掌控,反面插入micro:bit。引出10路数字/模拟3Pin口,两路IIC口以及一路UART口;板载两路电机驱动,且不占用额外引脚;板载PH2.0及microUSB两种供电口,既可以通过usb线也可以通过电池盒或者锂电池供电,供电电压3.5-5V,板载开关,可以开关外接供电电源;板载一个高品质蜂鸣器,且带有开关控制,可以随时关闭蜂鸣器;引出了9个鳄鱼夹接口;分别兼容掌控的触控金手指和micro:bit金手指。扩展板兼容乐高尺寸孔位,可以与乐高进行拼插结合。
https://makelogimg.dfrobot.com.cn/FrFWrk5F--3hmVLXSr_p6OJ5Ljvr?imageView2/2/w/1600
录音模块
DFRobot最新推出ISD1820录放音模块,集成录放音功能为一体。板载按键和麦克风,可直接通过按键录音和放音,一按录音,一按放音。可实现10秒音频录放功能。输出接口最大支持外接3W小喇叭,也可以外接有源音响,共同分享欢乐时光。此外,模块还外扩了Arduino接口,支持通过Arduino管脚控制模块。
好棒{:5_145:} RRoy 发表于 2019-8-21 16:28
好棒
thanks{:5_162:} 赞 木子姐姐 发表于 2019-8-22 18:49
赞
谢 寓教于乐 特别提醒:徽章板用户,充电模式看说明书,USB线接充电器或电脑,拨动开关到ON(开机状态)开始充电。电充满,充电指示灯变蓝。
页:
[1]