所有分类
主题 主题
平台 平台
我的工作台
userHead
注册时间 [[userInfo.create_time]]
创造力 [[userInfo.creativity]]
[[userInfo.remark]]
[[d.project_title]]
articleThumb
[[d.material_name]]
timelineThumb
进入工作台
折叠
所有分类 我的工作台
展开
守护最好的阿中
rzyzzxw 2019-08-21 08:38:58
8
6
简单

2019,注定是不平静的一年。

projectImage

免责声明:
本文图片来自网络
版权归原作者所有

这个夏天

projectImage

爱国青年热血沸腾

projectImage

默默取出我心爱的

projectImage

怎么忍心让你受折磨 
是我给你自由过了火

projectImage
projectImage
projectImage

以下正文

故事虚构

情节简单

能量很正

人物:
Hongkong小朋友小爱
内地小朋友小德
故事:
在香港的小爱同学要播放国歌支持特区政府,设备密码遗失。

小爱向内地的小德同学求助,小德发去密码。

小爱顺利完成设备启动,嘹亮的国歌响彻港岛。

序曲

步骤1 步骤1
认认真真做好准备工作

组装设备

材料清单 材料清单
2x
micro:bit
2x
micro:bit扩展板
2x
锂电池
2x
BOSONLED灯
1x
乐高颗粒若干
1x
导电胶带
projectImage
projectImage
projectImage
步骤2 步骤2
编程用MicroPython

编程平台:
MIND+1.5.6
编程模式:
上传模式
编程语言:
MicroPython

1、主控选择

projectImage

2、编程语言选择

projectImage

3、手动编辑

改写代码

projectImage

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[1:16]
        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--另一种MicroPython代码编程方式


BXY是一款运行于Windows平台的MicroPython编程IDE,界面简介,操作便利。为众多micro:bit和掌控板爱好者提供了一个简洁实用的平台。 
 QQ群:336213887 绿色版下载地址 安装版下载地址 
区别:
绿色版体积小巧无需安装即可运行,但是需要在电脑网络畅通的情况下使用以便下载编译器及示例程序,否则会出现程序无法上传和没有示例程序等问题,推荐个人用户使用。 
安装版安装即可运行,即使无网络也可以运行,适合电脑教室和大规模培训等网络不通畅的情况。

projectImage

6、莫尔斯电码认识

projectImage

7、莫尔斯电码练习

projectImage
projectImage

第一幕

步骤3 步骤3
Hongkong小朋友小爱要播放国歌支持政府

他向小德发送求助信号SOS,寻求小德给予密码提示。

步骤4 步骤4
小德收到来自HongKong的电报

sos

步骤5 步骤5
小德发送密码给小爱
步骤6 步骤6
小爱接收到密码

23

第二幕

步骤7 步骤7
国歌播放装置配置
材料清单 材料清单
1x
micro:bit主控板
2x
BOSON按钮模块
1x
BOSON分支模块
1x
micro:bit扩展板
1x
BOSON神经元模块
1x
好搭徽章板
1x
录音模块及小喇叭(已录国歌30秒)

1、国歌播放设备组装

projectImage
projectImage

2、MIND+实时模式编程

projectImage

3、训练神经元

projectImage

3、和徽章板互动

projectImage
projectImage
projectImage
projectImage
projectImage
步骤8 步骤8
小爱输入密码,成功启动装置播放国歌

尾声

projectImage

设备资料:

1、神经元

http://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单神经元模块给学⽣极大想象空间,更是让他们真正体验到人⼯智能带来的神奇之处。


projectImage
projectImage

3、micro:bit掌控I/O扩展板

本扩展板能完全兼容micro:bit和掌控板和两种主板。正面插入掌控,反面插入micro:bit。引出10路数字/模拟3Pin口,两路IIC口以及一路UART口;板载两路电机驱动,且不占用额外引脚;板载PH2.0及microUSB两种供电口,既可以通过usb线也可以通过电池盒或者锂电池供电,供电电压3.5-5V,板载开关,可以开关外接供电电源;板载一个高品质蜂鸣器,且带有开关控制,可以随时关闭蜂鸣器;引出了9个鳄鱼夹接口;分别兼容掌控的触控金手指和micro:bit金手指。扩展板兼容乐高尺寸孔位,可以与乐高进行拼插结合。

projectImage

4、录音模块

DFRobot最新推出ISD1820录放音模块,集成录放音功能为一体。板载按键和麦克风,可直接通过按键录音和放音,一按录音,一按放音。可实现10秒音频录放功能。输出接口最大支持外接3W小喇叭,也可以外接有源音响,共同分享欢乐时光。此外,模块还外扩了Arduino接口,支持通过Arduino管脚控制模块。 

projectImage
Makelog作者原创文章,未经授权禁止转载。
8
6
评论
[[c.user_name]] [[c.create_time]]
[[c.parent_comment.count]]
[[c.comment_content]]