Another 8x8 matrix based display...
This is not a real project, just a try to hide the LEDs for better WAF.
Print still needs some impovements, but from a little distance you can't see the details.
Another 8x8 matrix based display...
This is not a real project, just a try to hide the LEDs for better WAF.
Print still needs some impovements, but from a little distance you can't see the details.
With radios from ITEAD this issue is obsolete. They seem to populate original nordic chips, or even good fakes.
[Solved]
Initial Problem were incoming messages at sensor node during reading an image from SD card (170ms). Increase of serial RX buffer size solved the problem.
Good to know:
The serial buffer size is not defined in:
c:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\HardwareSerial.h
You can change the numbers with no effect to your sketch.
You have to change:
c:\Users...\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.14\cores\arduino\HardwareSerial.h
Then it will work
It's not working. FHEM sends messages instantly and does not wait until a node wakes up.
New features unfortunately not supported by FHEM.
The splash screen at startup is not redirected to a new serial port, if MY_DEBUGDEVICE is used. It still comes out of hardware serial(1). Tested on NANO/ProMini with latest mysensor lib. All other debug information comes out of the new defined MY_DEBUGDEVICE.
I count in every node, if send() returns false and send the number to controller to get an idea about rf quality.
I do not retry, because Mysensors already retries, right?
I use NFR24 and RFM69. Behavior is sometimes strange. No NACKs for weeks and then a really high number of NACKs for a few days. Setup not changed. I have no idea why... Same for indoor and outdoor sensors.
I ordered modules from ITEAD. They seem to have real nordic chips populated. Each module comes in paper box and ESD bag. The modules look like the cheap ebay stuff, but with 0402 components.
With these modules I got rid of my issue with repeated messages.
(https://forum.mysensors.org/topic/5588/multiple-messages-with-same-content-received)
Most of these cheap boards do not have any hysteresis and tend to oscillate during output switching.
Populate a resistor (100k...330k) for hysteresis and remove a capacitor. I my case this did help.
Unfortunately in German, see the picture:
https://forum.fhem.de/index.php/topic,54408.msg459962.html#msg459962
I've opened an issue for that.
https://github.com/mysensors/MySensors/issues/1452
According to API payload is same on ECHO message.
I feel this should be handled/fixed in lib, but I have no idea how to do...
If it is not possible to fix in lib, it shall not be allowed to send message with no payload anymore, which controller has to make sure then.
@rejoe2
Regarding FHEM, at the moment we should keep it as it is. No payload is not the normal use case.
I flashed gateway with 2.2.0 and this fixed the problem for me.
DualOptiboot: if you do your own board layout, always keep the CS signal of the external flash at pin D8. You can change the pin number in your sketch, but not for the bootloader It is hard coded in the bootloader!
In this case the uploaded firmware is written to external flash by the sketch, but the bootloader can not read it and not write it to internal flash. Firmware will never get updated. Took me some time to find out...
I have only an counter running on my water node increasing with each pulse. When counter changed, sending value to controller. Controller evaluates delta between current and last receive and adds delta to "water meter". No problem if either controller or sensor looses power.
No. For RFM69 you need Sensbender bootloader and external flash. Then it works.
After a bit more searching in the forum a came across this topic:
https://forum.mysensors.org/post/106056
Which mentioned
https://github.com/mysensors/MySensors/pull/1422
and finally found this
https://github.com/WhiskyDelta/MySensors/tree/stm32_cores,
which compiles fine for me.
Hello,
I tried to do some modifications on a project from 2 years ago, which is using STM32F411. During that time everything was fine. No issue to compile for STM32F1/F4 controllers.
Now computer has changed and software was updated and I'm not able to compile STM32F4xx controller any more, STM32F1 is still ok.
I always get:
#error Hardware abstraction not defined (unsupported platform)
^
Is there anything I forgot tho change or update for using F4 controllers?
@virtualmkr thanks for pointing to _serialProcess(). This help to understand a little more how it works.
I finally found the issue: bias resistors (10k) at A and B lost connection, so during bus idle RX was low and not high. For AVR this was not a problem, but STM32 did not synchronize right to the frame.
I try to get a node based on STM32 to work with RS485. No success. Mysensors does send on RS485, but does not receive anything. I checked the signals with scope. Physically TX signals go out and reply from gateway goes into RX pin, but is not read by mysensors lib. I tried all UARTs. Apart from mysensors lib, I'm able to do serial communication with other UARTs than the one used for RS485.
I used F103 and F401/411 with both STM libs (maple, ST) when possible.
If I just change the ST chip to AVR it works instantly. So network and GW are not the issue.
Any suggestions what to measure/change?
Node:
898097 TSM:FAIL:RE-INIT
898097 TSM:INIT
900098 THA:INIT
900098 TSM:INIT:TSP OK
900098 TSM:INIT:STATID=100
900100 THA:SAD:ADDR=100
900101 TSF:SID:OK,ID=100
900102 TSM:FPAR
900102 THA:SND:MSG=6464FF020307FF
900133 THA:SND:MSG LEN=7,RES=1
900133 ?TSF:MSG:SEND,100-100-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
904134 !TSM:FPAR:NO REPLY
904134 TSM:FPAR
904134 THA:SND:MSG=6464FF020307FF
904153 THA:SND:MSG LEN=7,RES=1
904153 ?TSF:MSG:SEND,100-100-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
908153 !TSM:FPAR:NO REPLY
908153 TSM:FPAR
908153 THA:SND:MSG=6464FF020307FF
908172 THA:SND:MSG LEN=7,RES=1
908172 ?TSF:MSG:SEND,100-100-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
912173 !TSM:FPAR:NO REPLY
912173 TSM:FPAR
912173 THA:SND:MSG=6464FF020307FF
912191 THA:SND:MSG LEN=7,RES=1
912192 ?TSF:MSG:SEND,100-100-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
916192 !TSM:FPAR:FAIL
916192 TSM:FAIL:CNT=7
916192 TSM:FAIL:DIS
916193 TSF:TDI:TSL
gateway
0;255;3;0;9;26409142 TSF:MSG:READ,100-100-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
0;255;3;0;9;26409149 TSF:MSG:BC
0;255;3;0;9;26409152 TSF:MSG:FPAR REQ,ID=100
0;255;3;0;9;26409155 TSF:PNG:SEND,TO=0
0;255;3;0;9;26409159 TSF:CKU:OK
0;255;3;0;9;26409162 TSF:MSG:GWL OK
0;255;3;0;9;26409388 TSF:MSG:SEND,0-0-100-100,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=OK:0
0;255;3;0;9;26413162 TSF:MSG:READ,100-100-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
0;255;3;0;9;26413168 TSF:MSG:BC
0;255;3;0;9;26413171 TSF:MSG:FPAR REQ,ID=100
0;255;3;0;9;26413175 TSF:CKU:OK,FCTRL
0;255;3;0;9;26413178 TSF:MSG:GWL OK
0;255;3;0;9;26413325 TSF:MSG:SEND,0-0-100-100,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=OK:0
0;255;3;0;9;26417182 TSF:MSG:READ,100-100-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
0;255;3;0;9;26417188 TSF:MSG:BC
0;255;3;0;9;26417191 TSF:MSG:FPAR REQ,ID=100
0;255;3;0;9;26417196 TSF:CKU:OK,FCTRL
0;255;3;0;9;26417199 TSF:MSG:GWL OK
0;255;3;0;9;26417269 TSF:MSG:SEND,0-0-100-100,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=OK:0
0;255;3;0;9;26421201 TSF:MSG:READ,100-100-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
0;255;3;0;9;26421209 TSF:MSG:BC
0;255;3;0;9;26421211 TSF:MSG:FPAR REQ,ID=100
0;255;3;0;9;26421215 TSF:CKU:OK,FCTRL
0;255;3;0;9;26421219 TSF:MSG:GWL OK
0;255;3;0;9;26422238 TSF:MSG:SEND,0-0-100-100,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=OK:0
RS485 data is different to serial api. Serial api is only from gateway to controller.
Please check links in 1st post.
https://forum.mysensors.org/topic/1947/rs485-rs232-serial-transport-class-for-mysensors-org
Yes, no real EERPOM, but emulation in flash. EEPROM failure was the first finding when checking for this error message. Maybe somthing else...
Now complete sketch is ported from AVR ProMini to STM32 and is runnig fine
This helped a lot! Got the serial to work. But...
13:29:37.828 -> __ __ ____
13:29:37.828 -> | \/ |_ _/ ___| ___ _ __ ___ ___ _ __ ___
13:29:37.862 -> | |\/| | | | \___ \ / _ \ `_ \/ __|/ _ \| `__/ __|
13:29:37.862 -> | | | | |_| |___| | __/ | | \__ \ _ | | \__ \
13:29:37.862 -> |_| |_|\__, |____/ \___|_| |_|___/\___/|_| |___/
13:29:37.862 -> |___/ 2.4.0-alpha
13:29:37.862 ->
13:29:37.862 -> 18 MCO:BGN:INIT NODE,CP=RNNNM---,FQ=72,REL=0,VER=2.4.0-alpha
13:29:37.862 -> 29 !MCO:BGN:HW ERR
Looks like these cheap blue pills have some issue with EEPROM?
I later connected a Maple Mini board, which goes straight to "loop" as expected.
I struggle since 2 days to get a node based on STM32 to run. It is my first test with STM32. I installed the arduino libs. I can upload "blink" and this works, serial output also.
But when I include <MySensors.h> the STM seems not to start/run. LED doesn't blink, no output on serial. I would expect some some lib prints on serial, but nothing.
Compile and upload is with no error.
It doesn't matter if radio is connected or not.
Any special things need to be considered for STM32?
#define MY_DEBUG //MYSENSOR Lib
#define MY_TRANSPORT_WAIT_READY_MS 100
#define MY_NODE_ID 49 // id of the node
//#define MY_PARENT_NODE_ID 55
//#define MY_PARENT_NODE_IS_STATIC
// ++++++++++++++ NRF24 +++++++++++++++++
#define MY_RADIO_NRF24
// This is needed if you use an STM32 board:
#define MY_RF24_CE_PIN PB0
#define MY_DEBUGDEVICE Serial1
#include "MySensors.h"
#include <SPI.h>
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////// BEFORE ////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
void before()
{
Serial1.begin(115200);
Serial1.print("before");
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////// SETUP ///////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
void setup()
{
Serial1.begin(115200);
Serial1.print("setup");
pinMode(PC13, OUTPUT);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////// LOOP ////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
void loop()
{
digitalWrite(PC13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(PC13, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}