实验硬件

发射端

Arduino + 433超外差发射机     高,低电平和悬空三种模式切换  由简单的官方库修改

/*
This is a minimal sketch without using the library at all but only works for
the 10 pole dip switch sockets. It saves a lot of memory and thus might be
very useful to use with ATTinys :) https://github.com/sui77/rc-switch/
*/ int RCLpin = 10; void setup() {
pinMode(RCLpin, OUTPUT);
} void loop() {
// RCLswitch(0b010001000001); // DIPs an Steckdose: 0100010000 An:01
// delay(2000); // RCLswitch(0b010001000010); // DIPs an Steckdose: 0100010000 Aus:10
// RCLswitch(0);
// delay(2000); // digitalWrite(RCLpin, LOW);// 不停触发
   digitalWrite(RCLpin, HIGH);// 不处发
} void RCLswitch(uint16_t code) {
for (int nRepeat=0; nRepeat<6; nRepeat++) {
for (int i=4; i<16; i++) {
RCLtransmit(1,3);
if (((code << (i-4)) & 2048) > 0) {
RCLtransmit(1,3);
} else {
RCLtransmit(3,1);
}
}
RCLtransmit(1,31);
}
} void RCLtransmit(int nHighPulses, int nLowPulses) {
digitalWrite(RCLpin, HIGH);
delayMicroseconds( 350 * nHighPulses);
digitalWrite(RCLpin, LOW);
delayMicroseconds( 350 * nLowPulses);
}

  

STM8+ 433超外差发射机        命令 =  引导码+一系列高低电平

--------------------

接收端

Arduino + 433超外差接收机 四种中断模式切换

int pin =13;
volatile int state = LOW;
int i=0;
void setup()
{Serial.begin(9600);
pinMode(pin, OUTPUT);
//attachInterrupt(0, blink, CHANGE);// 低 一直触发 高 一直不触发
attachInterrupt(0, blink,LOW); // 低 一直触发 高 一直触发
//attachInterrupt(0, blink,RISING); //低 一直触发 高 不触发
// attachInterrupt(0, blink,FALLING); //低 一直触发 高 不触发 很稳 digitalWrite(pin,!state);
delay(10000);
digitalWrite(pin, state);
delay(10000);
} void loop()
{
// digitalWrite(pin, state);
} void blink()
{ Serial.println(i+1);
state = !state;
}

  Arduino + 433超外差接收机 官方库正常解码模式

/*
Simple example for receiving https://github.com/sui77/rc-switch/
*/ #include <RCSwitch.h>
#define led1 10
#define led2 11
RCSwitch mySwitch = RCSwitch(); void setup() {
Serial.begin(9600);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
mySwitch.enableReceive(0); // Receiver on interrupt 0 => that is pin #2
} void loop() {
if (mySwitch.available()) { int value = mySwitch.getReceivedValue(); if (value == 0) {
Serial.print("Unknown encoding");
} else {
if (value ==17) {
if( digitalRead(led1)==0){
digitalWrite(led1, HIGH);
}
else{
digitalWrite(led1, LOW);
}
}
if (value ==18) { if( digitalRead(led2)==0){
digitalWrite(led2, HIGH);
}
else{
digitalWrite(led2, LOW);
} }
Serial.print("Received ");
Serial.print( mySwitch.getReceivedValue() );
Serial.print(" / ");
Serial.print( mySwitch.getReceivedBitlength() );
Serial.print("bit ");
Serial.print("Protocol: ");
Serial.println( mySwitch.getReceivedProtocol() );
} mySwitch.resetAvailable();
}
}

  

发射信号引脚状态\接收信号引脚中断触发方式 上升沿 下降沿 改变(上升+下降) 低电平
高电平 不触发 不触发 不触发 一直触发
低电平 一直触发 一直触发 一直触发 一直触发
悬空 一直触发 一直触发 一直触发 一直触发

 测试结果

可怕结论: 433和330MH信号很容易被针对干扰(又何止是这个频段),具体怎么实现懂的人看表格就能分析出来吧。(让所有这个频段的设备在干扰范围不起作用,怪不国家要严格控制频带的划分和使用还有监测,这么大的弊端)。

可使用到产品的基础:只要没人特意干扰你,大多数的干扰都是随机的,可以通过接收端编码过滤掉。

可用结论:接收端使用上升沿或下降沿或改变三种方式来解码命令

---恢复内容结束---

433 模块 ARDUINO测试的更多相关文章

  1. 电信NBIOT 4 - NB73模块上行测试(NB73-电信平台-自己平台)

    电信NBIOT 1 - 数据上行(中国电信开发者平台对接流程) 电信NBIOT 2 - 数据上行(中间件获取电信消息通知) 电信NBIOT 3 - 数据下行 电信NBIOT 4 - NB73模块上行测 ...

  2. 电信NBIOT 5 - NB73模块下行测试(自己平台-电线平台-NB73)

    电信NBIOT 1 - 数据上行(中国电信开发者平台对接流程) 电信NBIOT 2 - 数据上行(中间件获取电信消息通知) 电信NBIOT 3 - 数据下行 电信NBIOT 4 - NB73模块上行测 ...

  3. web自动化测试-模块驱动测试实例和数据驱动测试实例

    一.模块驱动测试实例 把登录和退出统一封装在login类中,若把login类单独放在一个文件中,就可以给任一测试脚本调用,这里就跟测试脚本放一起 from selenium import webdri ...

  4. 自动化测试架构设计 &&自动化持续集成测试任务实战[线性测试、模块驱动测试、数据驱动测试、关键字驱动测试]

    1 为什么设计自动化测试架构 1.1 企业现状分析 压力大:产品需求不明确,上线时间确定,压力山大. 混乱:未立项,开发时间已过半,前期无控制,后期无保障. 疲于应付:开发人员交付的文件质量差,测试跟 ...

  5. Arduino 测试空气质量等级模块 ZP07-MP503 测试

    最近入手空气质量模块 ZP07-MP503,用Arduino采样数据进行测试 先上图看看 ZP07-MP503 产品 ZP07-MP503 一共4个管脚,功能如下 5V 电源输入5V GND  电源输 ...

  6. 基于STM32的三轴数字罗盘HMC5883L模块的测试

    最近买了个数字罗盘模块,调通后发现很不错,非常灵敏,测试的时候精度在1°以内.连续测量模式下,最快测量.输出速率可达75hz,模块每次测量完毕并将数据更新至寄存器后,其DRDY引脚便产生一个低电平脉冲 ...

  7. SEER流量众筹模块开发测试网络及使用文档发布

    SEER利用区块链奖励机制,可解决传统体育赛事痛点,提高行业运转效率.比如提高赛事方收入,让观众自由选择想看的比赛,给予赛事众筹的参与者贡献影响力,使其获得由智能合约量化的激励等.此功能可广泛应用于包 ...

  8. python-利用random模块生成测试数据封装方法总结

    1.前言: 在测试中经常有需要用到参数化,我们可以用random模块,faker模块生成测试数据,也可以用到pymysql,此文主要针对random模块生成任意个数的随机整数,随机字符串,随机手机号, ...

  9. [wifi]wifi模块的测试

    罗德斯瓦茨 非信令CMW100,信令CMW270,CMW500 支持多通道 具体如何多通道接相同的SSID,要看被测设备的变成 ublox是否支持非信令,需要check,信令和芯片没有关系,只和协议有 ...

随机推荐

  1. 【转载】To the Virgins, to Make Much of Time

    Gather ye rosebuds while ye may Old Time is still a-flying And this same flower that smiles today To ...

  2. MongoDB设计系列

    原创文章,如果转载请标明出处.作者. https://www.cnblogs.com/alunchen/p/9762233.html 1 前言 MongoDB作为现今流行的非关系型文档数据库,已经有很 ...

  3. 将MySQL数据库转移到SqlServer2008数据库

    由于工作需要用到了将MySQL数据库转成SqlServer数据库,查了一些资料发现将SqlServer数据库转成MySQL数据库的文章很多,但是反过来的就很少了.下面就将自己的方法分享给大家. 这里用 ...

  4. 百度api查询多个地址的经纬度的问题

    在使用百度api查询多个地址的经纬度的时候,由于百度api提供的经纬度查询方法是回调函数,并且后续操作必须等经纬度获取完成才能进行,问题就存在于怎么判断所有地点是否都回调完成了,问了之前的一个前端大佬 ...

  5. 搜藏一个php文件上传类

    <?php /** * 上传文件类 * @param _path : 服务器文件存放路径 * @param _allowType : 允许上传的文件类型和所对应的MIME * @param _f ...

  6. Redis实现分布式锁的正确使用方式(java版本)

    Redis实现分布式锁的正确使用方式(java版本) 本文使用第三方开源组件Jedis实现Redis客户端,且只考虑Redis服务端单机部署的场景. 分布式锁一般有三种实现方式: 1. 数据库乐观锁: ...

  7. Clock Pictures(kmp + Contest2075 - 湖南多校对抗赛(2015.04.26))

    Problem H: Clock Pictures Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 73  Solved: 18[Submit][Stat ...

  8. Java集合的选择

    我们在使用集合时应该使用哪个集合呢? 具体还是要看需求, 当然, Java中不只是有这几个, 还有一些没有给出, 具体情况具体分析吧, 仅给出一个小思路. 进行集合的选择:  是否是键值对象形式: 一 ...

  9. Ajax实现的城市二级联动三

    把之前2篇整合在一起 1.html <select id="province"> <option>请选择</option> </selec ...

  10. blfs(systemv版本)学习笔记-为桌面环境构建xorg服务

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs准备使用桌面环境,首先需要构建xorg服务 xorg服务项目地址:http://www.linuxfromscratch. ...