|
家电中央无线遥控器系统[完成了,感谢所有帮过我的人]
[复制链接]
|
|
发表于 19-2-2010 04:31 PM
|
显示全部楼层
怎么没update啦?
+_+"楼主, 做事有始有终嘛。。。。。。 |
|
|
|
|
|
|
|
楼主 |
发表于 22-2-2010 10:09 PM
|
显示全部楼层
不好意思
我回来了
嘿嘿
续上次update 的
弄好了visual basic gui,transmitter main board,triac
接下来就剩下
microcontroller 的programming 而已
也就是c18 的programming
我的code 基本上是用miwi(microchip wireless) p2p 提供的code
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en536181
然后modify
我用的是miwi p2p c18 simple example 的code
miwi 的code 是 support picdemz,explorer 18 等等的
所以第一个步骤就是要define 我的board的parameter
关于define parameter 的detail 可以参考 #140 楼 fritlizt 版主的回复
第二个步骤就是写transmitter 的code
- while(1)
- {
- if (ConsoleIsGetReady())
- {
- BYTE i;
- i=ConsoleGet();
- MiApp_FlushTx();
- MiApp_WriteData(i);
- MiApp_BroadcastPacket(FALSE);
-
- }
-
- else if ( MiApp_MessageAvailable() )
- MiApp_DiscardMessage();
-
- }
-
复制代码
这个是我的transmiter 的code
是加在node 1 main program
- #ifdef ENABLE_DUMP
- DumpConnection(i);
- #endif
- // Turn on LED 1 to indicate P2P connection established
- LED_1 = 1;
复制代码
这个code 之后
这个code 之后没用到的code我都删除了
第三个步骤就是写receiver 的code
- while(1)
- {
- if( MiApp_MessageAvailable() )
- {
- if(rxMessage.Payload[0]=='0')
- Out_1=0;
- else if(rxMessage.Payload[0]=='1')
- Out_1=1;
- else if(rxMessage.Payload[0]=='2')
- Out_2=0;
- else if(rxMessage.Payload[0]=='3')
- Out_2=1;
-
- MiApp_DiscardMessage();
复制代码
这个是我的receiver 的code
是加在node 2 的 main program
我的receiver side 有两个output
out_1 和 out_2
(rxMessage.Payload[0]=='0')
这个是我的receiver 接收到 0 的时候
要怎样respond
大致上这个project 就是这样
有什么不明白的请发问
谢谢
有什么要补充的请提醒我
|
|
|
|
|
|
|
|
发表于 23-2-2010 11:55 PM
|
显示全部楼层
不好意思
我回来了
嘿嘿
续上次update 的
弄好了visual basic gui,transmitter main board,triac
接下 ...
^Hins86^ 发表于 22-2-2010 10:09 PM
谢谢分享
可以看一下你的pic18f怎样接受那个pc的series com 的data 的code吗?
谢谢了 |
|
|
|
|
|
|
|
楼主 |
发表于 24-2-2010 02:12 AM
|
显示全部楼层
回复 183# akito
就transmitter 的code 啊
i=ConsoleGet();
这个code 是get data from uart
也就是接收serial port send 来的data |
|
|
|
|
|
|
|
发表于 2-3-2010 06:33 PM
|
显示全部楼层
哦谢谢回答,很乱下,因为看有些doc files是用WriteUART什么的。。。
问你一下,如果是#if defined(__18CXX) ,我要用pic18f4685的话,要改去
#if defined(pic18f4685)
还是
#if defined(__18f4685)?
还不清楚 =.=" |
|
|
|
|
|
|
|
发表于 5-3-2010 04:34 PM
|
显示全部楼层
回复 185# akito
不能。#define只是c programming preprocessor.
这个问题hin86有问过。你爬楼看看。不多,八面罢了。 |
|
|
|
|
|
|
|
发表于 8-3-2010 05:16 PM
|
显示全部楼层
第二个步骤就是写transmitter 的code
这个是写在什么文件里的 |
|
|
|
|
|
|
|
发表于 8-3-2010 05:55 PM
|
显示全部楼层
这个 config bit setting 是写在什么文件里
回复 140# fritlizt |
|
|
|
|
|
|
|
发表于 23-3-2010 10:23 AM
|
显示全部楼层
想问一下 MRF24J40MAT-I/RM 和 MRF24J40MA-I/RM 是不是一样的? |
|
|
|
|
|
|
|
发表于 23-3-2010 11:28 AM
|
显示全部楼层
回复 189# Yapl
一样的
packing不一样 |
|
|
|
|
|
|
|
发表于 23-3-2010 07:59 PM
|
显示全部楼层
回复 Yapl
一样的
packing不一样
fritlizt 发表于 23-3-2010 11:28 AM
哦,好的谢谢 |
|
|
|
|
|
|
|
楼主 |
发表于 25-3-2010 11:41 PM
|
显示全部楼层
哦,好的谢谢
Yapl 发表于 23-3-2010 07:59 PM
如果没几错
我买的是
MRF24J40MA-I/RM
|
|
|
|
|
|
|
|
发表于 27-4-2010 01:20 PM
|
显示全部楼层
compile 了
但又error
build failed....
^Hins86^ 发表于 6-12-2009 01:16 PM
我现在也面对一样的error ;(
你怎样solve的? >.< |
|
|
|
|
|
|
|
发表于 27-4-2010 06:53 PM
|
显示全部楼层
solve 了,把console.c 里的#define USART_USE_BRGH_HIGH 改成
#define USART_USE_BRGH_LOW 就可以了,但是现在我compile还是有Error,
Warning [2058] call of function without prototype
这个问题出在那个printf function,但是在Compiler.h里已经 #include<stdio.h> 了,为什么还会有这样的error =.= |
|
|
|
|
|
|
|
发表于 25-5-2010 12:53 PM
|
显示全部楼层
本帖最后由 Yapl 于 25-5-2010 01:11 PM 编辑
solve 了,把console.c 里的#define USART_USE_BRGH_HIGH 改成
#define USART_USE_BRGH_LOW 就可以了,但 ...
Yapl 发表于 27-4-2010 06:53 PM
自己问自己答:
因为我先install "MiWi(TM) P2P for PIC18, PIC24, dsPIC, PIC32" ,然后我又 install "MiWi(TM) Protocol Stack for PIC18, PIC24, dsPIC, PIC32"在同一个folder,因为 "MiWi(TM) Protocol Stack for PIC18, PIC24, dsPIC, PIC32"里面的common files是久的,所以我用 "MiWi(TM) P2P for PIC18, PIC24, dsPIC, PIC32" compile的时候就有error.
现在那些hardware configure都已经弄好了,但问题来了,我的node1已经Start connection 了,但是node 2一直detect不到node 1,一直在active scanning... 是不是在breadboard上会有问题?不过我看到一些人用breadboard也可以的detect...还是同一个power supply有影响?现在我只有一个power supply.
Node 1
Node2:
- #if defined(__18F4685)
- #pragma config OSC = IRCIO67 // Internal oscillator block, port function on RA6 and RA7
- #pragma config FCMEN = OFF // Fail-Safe Clock Monitor disabled
- #pragma config IESO = OFF // Oscillator Switchover mode disabled
- #pragma config BOREN = OFF //Brown-out Reset disabled in hardware and software
- #pragma config WDT = OFF // WDT disabled (control is placed on the SWDTEN bit)
- #pragma config MCLRE = OFF // RE3 input pin enabled; MCLR disabled
- #pragma config PBADEN = OFF // PORTB<4:0> pins are configured as digital I/O on Reset
- #pragma config STVREN = ON, LVP = OFF, XINST = ON
- #pragma config DEBUG = ON // Background debugger enabled, RB6 and RB7 are dedicated to In-Circuit Debug
-
- #endif
复制代码- void BoardInit(void)
- {
- #if defined(ClientBoard)
-
- WDTCONbits.SWDTEN = 0; //disable WDT
- OSCCON = 0x72; //16mhz internal clock
- while (!(OSCCON & 0x40)); //wait till clock stable
- // Switches S2 and S3 are on RB5 and RB4 respectively. We want interrupt-on-change
- INTCON = 0x00;
-
- // There is no external pull-up resistors on S2 and S3. We will use internal pull-ups.
- // The MRF24J40 is using INT0 for interrupts
- // Enable PORTB internal pullups
- INTCON2 = 0x00;
- INTCON3 = 0x00;
-
- // Make PORTB as input - this is the RESET default
- TRISB = 0xff;
-
- // Set PORTC control signal direction and initial states
- // disable chip select
- LATC = 0xfd;
-
- // Set the SPI module for use by Stack
- TRISC = 0xD0;
-
- // Set the SPI module
- #if defined(HARDWARE_SPI)
- SSPSTAT = 0xC0;
- SSPCON1 = 0x20;
- #endif
-
- // D1 and D2 are on RA0 and RA1 respectively, and CS of TC77 is on RA2.
- // Make PORTA as digital I/O.
- // The TC77 temp sensor CS is on RA2.
- ADCON1 = 0x0F;
-
- // Deselect TC77 (RA2)
- // LATA = 0x04;
-
- // Make RA0~RA2 as outputs. RA3~RA7 as input
- TRISA = 0xF8;
-
- PHY_CS = 1; //deselect the MRF24J40
- PHY_CS_TRIS = 0; //make chip select an output
-
- RFIF = 0; //clear the interrupt flag
-
- RCONbits.IPEN = 1;
-
- INTCON2bits.INTEDG0 = 0;
- LCDInit();
-
- #else
- #error "Unknown demo board. Please properly initialize the part for the board."
- #endif
- }
复制代码
- #if defined(ClientBoard)
- #define CLOCK_FREQ 16000000
-
- // Transceiver Configuration
- #define RFIF INTCONbits.INT0IF
- #define RFIE INTCONbits.INT0IE
- #define PHY_CS LATCbits.LATC0
- #define PHY_CS_TRIS TRISCbits.TRISC0
- #define PHY_RESETn LATCbits.LATC2
- #define PHY_RESETn_TRIS TRISCbits.TRISC2
- #define PHY_WAKE LATCbits.LATC1
- #define PHY_WAKE_TRIS TRISCbits.TRISC1
-
- #define PUSH_BUTTON_1 PORTBbits.RB5
- #define PUSH_BUTTON_2 PORTBbits.RB4
- #define PUSH_BUTTON_3 PORTBbits.RB3
- #define PUSH_BUTTON_4 PORTBbits.RB2
- #define PUSH_BUTTON_5 PORTBbits.RB1
- #define PUSH_BUTTON_6 PORTAbits.RA3
- #define LED_1 LATAbits.LATA0
- #define LED_2 LATAbits.LATA1
- #define BELL LATAbits.LATA2
-
- #define BUTTON_1_TRIS TRISBbits.TRISB5
- #define BUTTON_2_TRIS TRISBbits.TRISB4
- #define BUTTON_3_TRIS TRISBbits.TRISB3
- #define BUTTON_4_TRIS TRISBbits.TRISB2
- #define BUTTON_5_TRIS TRISBbits.TRISB1
- #define BUTTON_6_TRIS TRISAbits.TRISA3
- #define LED_1_TRIS TRISAbits.TRISA0
- #define LED_2_TRIS TRISAbits.TRISA1
- #define BELL_TRIS TRISAbits.TRISA2
-
- #define RF_INT_PIN PORTBbits.RB0
- #define RF_INT_TRIS TRISBbits.TRISB0
-
- #define SPI_SDI PORTCbits.RC4
- #define SDI_TRIS TRISCbits.TRISC4
- #define SPI_SDO LATCbits.LATC5
- #define SDO_TRIS TRISCbits.TRISC5
- #define SPI_SCK LATCbits.LATC3
- #define SCK_TRIS TRISCbits.TRISC3
-
- #define TMRL TMR0L
- #endif
复制代码
我node1和node2的hardware configuration都一样,PAN ID也是0x1234
不过EUI_0 就不一样,一个是0x01另一个是0x02 |
评分
-
查看全部评分
|
|
|
|
|
|
|
发表于 25-5-2010 11:21 PM
|
显示全部楼层
本帖最后由 fritlizt 于 25-5-2010 11:24 PM 编辑
回复 195# Yapl
不错不错, 你做到什么程度了啊?
可以communicate了吗?
p2p还是miwi network?
你是一开始就打算用miwi了吗?还是看到论坛有讨论,可以一起讨论?
其实miwi很不错。。。protocol全都免费使用, 又有library,c18也是免费。虽然zigbee protocol比较强悍,不过一般上这类型的network node不会超过100个node. miwi有lebih 了。。。。 |
|
|
|
|
|
|
|
发表于 25-5-2010 11:31 PM
|
显示全部楼层
回复 195# Yapl
你先不要用active scan,直接指定要用哪一个channel,比如说channel 16.
这样的话一个会host,另一个会connect去host.试试看。
你是什么学校的?很多人用miwi吗? |
|
|
|
|
|
|
|
发表于 10-6-2010 06:02 PM
|
显示全部楼层
我想问一个问题。用AM transmitter and receiver 不是更便宜吗?
(虽然说AM signal vulnerable to noise ...) |
|
|
|
|
|
|
|
发表于 10-6-2010 08:19 PM
|
显示全部楼层
回复 198# zkchong
如果是 1对1的communication,还好 。不过 如果是一对多呢?
如果 再引入network的概念呢?
这类型的implementation有好处就是可以很flexible.可以create wlan类似的low power bandwidth wireless network.
把network引入embedded system有很多好处。现在其中一个相当热门的implementation就是 wireless sensor network.你可以去 google下。
还有的是 wireless sensor network in health monitoring.这些都需要运用到low power的network system. |
|
|
|
|
|
|
|
发表于 12-6-2010 08:37 AM
|
显示全部楼层
Hi fritlizt。谢谢你的回答。
在下对ZigBee不感冒的地方是因为ZigBee protocol stack不是免费的。 所以我在想是不是有一些人已经在发展open source 的 protocol stack 呢。 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|