Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Reputation Activity

  1. Like
    CorB reacted to RobG in 2.4" 320 x 240 Color LCD Booster Pack (with and without touch panel)   
    New LCD BoosterPacks are here. Both are 2.4" 320x240, one with touch panel, one without.
    Both feature the same pinout as their "little" 2.2" brother, same configuration options and SD socket.
    Can be used with my graphics library without any changes! 
    Available on Tindie

    2.4 LCD BP v3.pdf
    2.4 LCD BP v2.pdf
  2. Like
    CorB reacted to Lgbeno in imp.guru Droplet and 915MHz Long Range Radio to WiFi   
    Sorry for the mega post but as you may have already noticed, lately I

  3. Like
    CorB reacted to Lgbeno in ESI Project: Water Usage Monitoring   
    Interesting project, I'm actually doing something similar with cc110l and msp430G2553. I call it "droplet". It runs off of a cr2450 battery, sleeps most of the time then wakes up sends measurements to a Hub that is wall powered and the hub ships the data to data.sparkfun.com. Here's the droplet:

    And here is a hub prototype (just ordered a real pcb for it)

    You can see the electric imp that receives data via uart the pushes it to sparkfun.
    My web app project imp.guru fetches the data from sparkfun to view, here's the data imp.guru/f1
    I'm willing to share any/all of this work for your project if interested. My recommendation would be to skip the whole energy harvesting thing and use batteries. With the right design you should last years on a pair of AA's.
    I've seen projects on hack a day where people use Hall effect sensors to pick up the spinning magnet in their utility water meter. I think this is it:
  4. Like
    CorB reacted to SteveR in New Launchpad just dropped   
    Just noticed a new launchpad MSP-EXP430FR4133 appeared on the website this morning:
    Microcontroller Features16MHz 16 KB FRAM 2 KB RAM 256-segment LCD controller 10-channel 10-bit ADC 3 16-bit timers 60 GPIO SPI, I2C and UART Support BoosterPack connector20 pin BoosterPack connector
    Why this LaunchPad?Lowest power MCU in the industry with an integrated LCD controller Integrated 16kB FRAM for experiencing fast non-volatile memory writes Analog and digital integration including a 10-bit ADC and IR Modulation Logic Price$13.99
  5. Like
    CorB reacted to reaper7 in Energia-013 ethernet example doesn't compile   
    look at this:
    simply remove
    const IPAddress INADDR_NONE(0,0,0,0); from hardware/lm4f/libraries/Ethernet/Ethernet.h
  6. Like
    CorB reacted to tml in MSP430-based solar-powered weather station   
    Hi Folks,
    Some time ago in a thread http://forum.43oh.com/topic/5550-simple-msp430f5529-bootloader/
    I shared my bootloader that I wrote for my weather station project.
    I'd like to share some info on the project that I have completed and that its now operating in the field.
    Link to the description: http://eltomek.blogspot.com/2014/10/diy-weather-station.html
    All comments are welcome. Thanks all from this forum who helped me in numerous posts where I had no idea how to get out of technical issues!
    Best Regards,

  7. Like
    CorB reacted to nathancrum in New Dev Platform for MSP430FR5969   
    Hi Guys,
    My name is Nathan.  I've lurked around here on 43oh a bit, but this is my first official post.  I've been working with the MSP430FR5969 for several months now and I've quickly grown to really like it.  It seems to me TI's FRAM processors should really be getting more exposure for battery powered development in both professional and maker communities.
    To that end - I was hoping to get some feedback on a product idea.  We've packaged the FR5969 into a tiny coin-cell powered module.  The module can operate as a stand-alone processor or it can plug into an UNO-form-factor breakout board with an eZ-FET lite programmer, allowing you to program it with CCS or Energia.
    We're waiting on the first PCB's to debug the base product right now, but the goal would eventually be to offer with with a handful of matching small daughter-boards to add WiFi, BTLE and either the Sharp LS013B4DN04 hybrid screen or an e-ink display - all except the WiFi would be powered directly by the coin cell (WiFi would require a couple AAA's).  It might make sense to have a few sensor boards too depending on interest level (humidity/temp, compass, GPS, accel, gyro, prox, etc.)
    Does that make sense?  Any thoughts?  Is this a product you think people would be interested in?  It doesn't seem like anyone is offering really well-packaged small, ULP, battery powered MCU modules, especially with Arduino code compatibility and this would fill a good niche (certainly one I have some uses for anyway).
    Anyway - I'd appreciate any feedback or suggestions.  Thanks.
  8. Like
    CorB reacted to cubeberg in Wireless security system + IoT   
    So I've been meaning to work on something for this for quite some time, but I finally bit the bullet and started.  
    I'm designing a wireless security system - with the intention that it'll upload data to a personal API I'm developing.  It started out as purely a security system (door open/closed, motion detection) - but I threw in some sensors while I was developing the boards.  This isn't intended to replace a real security system - but it's a fun practice on many levels.  I'm working on learning the CC3200, setting up a node network, etc.  
    Wireless devices consist of MSP430's and a NRF24L01+ (cheap - had a few on hand).  
    Door sensors will probably be 2452's - they're very basic.  Run by a coin cell.  I purchased some cheap magnetic door/window sensors on ebay.

    Motion sensors will run a 2553 and contain several other sensors.  These will be run on 2xAA's.  
    I've added a temperature sensor (TMP102), light sensor (same as the one I used on the badge), and volume circuit (not to capture audio - just room volume levels - based on a sparkfun breakout).  
    It's designed to support a 20 pin DIP 2553 or a 28 pin TSSOP if extra IO are needed.
    Motion sensor is the cheap PIR sensor board from eBay - I'll be taking off the voltage converter because it runs at 3v levels

    I've got a ton of work ahead of me - here are just a few things off the top of my head
    Sensor unique identification (ideally I'd like the sensors to auto-id themselves) Set up the CC3200 as a hub Easily accessible web services (I'll be writing this in .NET most likely - although I may consider a local phant.io install) + a decent database Visualization of sensor output Alerts Security - not a huge concern (not sure who would hack it) but I want to consider it - likely a later phase One thing I'd like to add - RFID for arm/disarm of the system.  I've got some RFID boards on hand - should be able to whip up something.  
    Cases for the sensors will be 3D printed.  Should be pretty simple to do but it'll be a good exercise in designing nice & accessible cases.  I'll probably add an easily-accessible programming header for easy updates.
    I'll post the eagle files + gerbers later.  If you're really itching to see them - let me know.
  9. Like
    CorB reacted to spirilis in New Energia release 0101E0013 - 09/05/2014   
    NEW FEATURE folks will want to be aware of!
    For msp430 and lm4f (Tiva/Stellaris), there are three new ways to pause or halt the CPU-
    void sleep(uint32_t milliseconds);
    void sleepSeconds(uint32_t seconds);
    void suspend();
    and a complementary function: wakeup()
    For the lm4f/tm4c platform, these are mostly just placeholders that do not consume any less power than usual; in the future I'd like to explore the ARM's low-power features to make them workable.
    For msp430 though, the first two use LPM3 modes, and the third enters LPM4.
    Energia tests XT1 osc. fault on reset to see if a 32.768KHz XTAL is present; if so, ACLK is set to that and it's noted that ACLK is being driven at 32.768KHz.  If not, VLOCLK is used and its nominal frequency is assumed to be its speed.
    When sleep() is called, the WDT is reworked to fire every ~1.9ms (varies XT1 vs VLO) using WDT_ADLY_1_9 while incrementing millis() and micros() as accurately as it can (which isn't always accurate... particularly with VLOCLK).  Alas, it does give you true LPM3 mode!
    sleepSeconds() uses WDT_ADLY_250, which is a much more coarse sleep interval but allows the chip to spend a whole lot more time asleep.
    suspend() just runs LPM4.
    The catch here is that normally IRQs firing won't wake up the chip permanently, and since Energia occupies the ISRs with its own routines, it's not possible for a user's ISR (registered via attachInterrupt() or similar) to run __bic_SR_register_on_exit to cancel the LPM mode.
    Enter wakeup().  The wakeup() function sets a volatile global flag which signals to the sleep(), sleepSeconds() or suspend() function that sleep mode should be aborted.  Moreover, many of the ISRs have been reworked to check for a change in this flag after it executes the user's ISR in order to determine if it should run __bic_SR_register_on_exit(LPM4_bits) itself.  This allows the user's ISR to cancel LPM mode.
    These functions (sleep(), sleepSeconds(), suspend() and wakeup()) also exist on the lm4f/tm4c platform, they just don't use any particularly low-power modes yet.  But still, the code should port over, and it does give you as a programmer a simple way to "halt" the CPU or pause with the option of aborting it early.
    Also note, LPM3/LPM4 will cause any Serial input to be corrupt, since the SMCLK isn't running for the UART module to correctly detect the bits.  This isn't the case for the Tiva/Stellaris yet, but will be once we implement true low power modes over there.
    The wakeup() handler has been added to the I2C ISR handler too, so it is (in theory) possible to configure the chip as an I2C slave with the Wire library and then suspend() to enter LPM4, then wakeup() upon receiving a request, since I2C is clocked externally.  (I haven't actually tested this yet...)
    I never got around to adding these functions to the cc3200 port, but will do so by the next release (or maybe offer a patch for it in between).
    (I just added the suspend() and wakeup() stuff, all props go to @@energia for the sleep/sleepSeconds/ACLK implementation )
  10. Like
    CorB reacted to L.R.A in [TM4C1294NCPDT] 8 pins Blinky with DMA   
    Hello everyone,
    Today i have a code to show a simple fuction of the DMA for the TM4C1294
    This just blinks 8 outputs every second using a Timer in periodic mode and a trigger with the timeout.
    I hope it helps anyone trying to get basic understanding of the DMA
    void TimerInt(void); void InituDMA(void); void InitGPIO(void); void InitTimer(void); void setup(); void loop(void); #include <stdint.h> #include <stdbool.h> #include "stdlib.h" #include "inc/hw_ints.h" #include "inc/hw_memmap.h" #include "inc/hw_uart.h" #include "inc/hw_gpio.h" #include "inc/hw_types.h" #include "driverlib/interrupt.c" #include "driverlib/sysctl.c" #include "driverlib/timer.c" #include "driverlib/udma.c" #include "driverlib/gpio.c" #include "driverlib/interrupt.h" #include "driverlib/pin_map.h" #include "driverlib/rom.h" #include "driverlib/rom_map.h" #include "driverlib/sysctl.h" #include "driverlib/uart.h" #include "driverlib/udma.h" #include <string.h> /* Here you can define what GPIO output you want to use */ #define GPIO_BASE_OUTPUT1 GPIO_PORTN_BASE #define GPIO_PERIPH_OUTPUT1 SYSCTL_PERIPH_GPION //Saves the system clk volatile uint32_t g_ui32SysClock; //Array to save the GPIO states static uint8_t OutputState[2]; //***************************************************************************** // // The control table used by the uDMA controller. This table must be aligned // to a 1024 byte boundary. // //***************************************************************************** #if defined(ewarm) #pragma data_alignment=1024 uint8_t DMAcontroltable[1024]; #elif defined(ccs) #pragma DATA_ALIGN(DMAcontroltable, 1024) uint8_t DMAcontroltable[1024]; #else uint8_t DMAcontroltable[1024] __attribute__ ((aligned(1024))); #endif /* After 2 transfers the DMA is done and calls this interrupt This is to reset the DMA and re-enable it */ void TimerInt(void) { TimerIntClear(TIMER3_BASE,TIMER_TIMA_DMA); //Set again the same source address and destination uDMAChannelTransferSet(UDMA_CH2_TIMER3A | UDMA_PRI_SELECT, UDMA_MODE_BASIC, OutputState, (void *)(GPIO_BASE_OUTPUT1 + 0x3FC), 2); //Always needed since after it's done the DMA is disabled when in basic mode uDMAChannelEnable(UDMA_CH2_TIMER3A); } /* Function to setup the DMA */ void InituDMA() { //Just disable to be able to reset the peripheral state SysCtlPeripheralDisable(SYSCTL_PERIPH_UDMA); SysCtlPeripheralReset(SYSCTL_PERIPH_UDMA); SysCtlPeripheralEnable(SYSCTL_PERIPH_UDMA); SysCtlDelay(10); uDMAEnable(); uDMAControlBaseSet(DMAcontroltable); /* * This is for seting up the GPIO_BASE_OUTPUT1 with CH2 TimerA */ //Set the channel trigger to be Timer3A uDMAChannelAssign(UDMA_CH2_TIMER3A); //Disable all the atributes in case any was set uDMAChannelAttributeDisable(UDMA_CH2_TIMER3A, UDMA_ATTR_ALTSELECT | UDMA_ATTR_USEBURST | UDMA_ATTR_HIGH_PRIORITY | UDMA_ATTR_REQMASK); /* This sets up the item size to 8bits, source increment to 8bits and destination increment to none and arbitration size to 1 */ uDMAChannelControlSet(UDMA_CH2_TIMER3A | UDMA_PRI_SELECT, UDMA_SIZE_8 | UDMA_SRC_INC_8 | UDMA_DST_INC_NONE | UDMA_ARB_1); /* This will setup the transfer mode to basic, source address to the array we want and destination address to the GPIO state we chosed. It also sets the total transfer size to 2. */ uDMAChannelTransferSet(UDMA_CH2_TIMER3A | UDMA_PRI_SELECT, UDMA_MODE_BASIC, OutputState, (void *)(GPIO_BASE_OUTPUT1 + 0x3FC), 2); //Enable the DMA chanel uDMAChannelEnable(UDMA_CH2_TIMER3A); } /* This is to set all the pins of the GPIO chosen to output */ void InitGPIO() { SysCtlPeripheralDisable(GPIO_PERIPH_OUTPUT1); SysCtlPeripheralReset(GPIO_PERIPH_OUTPUT1); SysCtlPeripheralEnable(GPIO_PERIPH_OUTPUT1); SysCtlDelay(10); GPIOPinTypeGPIOOutput(GPIO_BASE_OUTPUT1, 0xFF); GPIOPinWrite(GPIO_BASE_OUTPUT1,0xFF,0x0); } /* Function to setup the timer to count down periodic with 1 second period. It also enables the DMA trigger and the event to timeout (counter reach 0) */ void InitTimer() { SysCtlPeripheralDisable(SYSCTL_PERIPH_TIMER3); SysCtlPeripheralReset(SYSCTL_PERIPH_TIMER3); SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER3); SysCtlDelay(10); TimerConfigure(TIMER3_BASE, TIMER_CFG_PERIODIC); TimerLoadSet(TIMER3_BASE, TIMER_A, 120000000-1); TimerIntClear(TIMER3_BASE,TIMER_TIMA_DMA); TimerIntRegister(TIMER3_BASE,TIMER_A,TimerInt); TimerIntEnable(TIMER3_BASE,TIMER_TIMA_DMA); TimerDMAEventSet(TIMER3_BASE,TIMER_DMA_TIMEOUT_A); } void main() { //Set CLK to 120Mhz g_ui32SysClock = MAP_SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480), 120000000); InitTimer(); InitGPIO(); InituDMA(); /* Sets the pins state all to 0 first and all to 1 in second. You can control individual pins in each bit of each array member. You can make the array bigger if you want but remember to set the DMA total transfer size too */ OutputState[0]=0x00; OutputState[1]=0xFF; //Enable the timer to start counting TimerEnable(TIMER3_BASE,TIMER_A); //Infinite loop and just watch the pins toggle while(1){ } }  
  11. Like
    CorB reacted to Rei Vilo in How do I debug Energia sketch on MSP430 launch pad   
    Actually, Energia is two things in one:
    a quick and dirty and pretty limited IDE a framework based on the de facto Wiring-Arduino standard The nice thing is you can use the framework without the IDE.
    As major benefit, the Wiring-Arduino framework acts as a hardware abstraction layer and brings portability accross platforms. The very same code runs on many different boards and platforms: Arduino for AVR and SAM, Digispark, MPIDE for chipKIT PIC32, Energia for MSP430 and Stellaris/Tiva, Maple for ARM, Teensy for AVR and ARM, Wiring for AVR, ... provided the code relies on the standard libraries

  12. Like
    CorB reacted to RobG in EduKit BoosterPack   
    After couple of years and many ideas, I have finally settled on a design for my experimenter's board. 
    Say hello to EduKit BoosterPack. 

    The EduKit BP comes with 1.8" color LCD and 8 accessory connectors. Each connector provides access to power and 2 or 4 MCU pins and are used to connect accessory boards. Those boards will allow user to perform tests and experiments, and could be used to teach about MCU's. There are also 4 jumpers on the board, which are used to change LCD's connections. LCD can use SPI1 (UCA0) or SPI2 (UCB0,) CS and D/C have also 2 possible connection options.

    Accessory boards can be simple, for example switch, LED, or potentiometer, or can be more complex, like shift register, mic with amp, sensors, MIDI, GPS.

    The EduKit is meant to be used with MSP430G2 LaunchPad (though it could be used with any other LP,) and will come with a library that will allow easy setup and use of LCD. User can write his code and then display results using one of the included functions (text, bar graph, etc.)
  13. Like
    CorB reacted to sq7bti in Newtonian/Dobsonian telescope controller   

    A summary of changes:
    instead of unipolar motor drivers, now I used a bipolar drivers very popular in RepRap projects, here A4988 (or DRV8825) 28byj-48 modified for bipolar cheap HC-05 for bluetooth SPP GPS module U-blox NEO-6m added RTC DS1307 to provide date/time reference even in the first seconds after power-on and 56 of NVRAM bytes added (optional) humidity and temperature sensor DSTH01 added a I2C socket to connect external temperature sensors to provide information about motors temperatures added PCF8574 for microstepping configuration of A4988 drivers added buzzer for audible indication added output for 12Vdc fan of main mirror - PWM controlled Nokia 5110 display replaced with a red back-light
    As the software is concerned, there were several improvements as well. The most important is that the motors are now driven by an interrupt driven AccelStepper

    With kind regards,
  14. Like
    CorB reacted to sq7bti in Newtonian/Dobsonian telescope controller   
    Hello everyone,
    There is a couple of similar projects available on the internet. Some of them base on Arduino and PIC performs very basic mount control without math intensive computation implemented in embedded controller. I decided to build my own with the following goals:
    ease of use by an inexperienced amateur astronomer (full automatic operation) precision and resolution of position  last but not least: the price Final, or better say at the moment, design comprises of the following components:
    Stellaris LM4F launchpad central control unit, two ULN2003 unipolar stepper motor driver chips, two 28byj-48 stepper motors one moving in azimuth, and in elevation via gear train, communication module: Bluetooth serial module. It allows sending a coordinate set-point and provides position feedback to Stellarium, GPS module providing position and precise time reference - PPS gives 1us accuracy, Nokia 5110 display unit and joystick for standalone operation, now obsolete mouse (PS/2) modified to provide independent (incremental) position information Resolution that was reached is a single step of approx. 5". Given the size of Jupiter to range from 30" to 50", this positioning resolution makes the view comfortably stable in standard 60° FOV eyepiece at reasonably high magnification, without the need to adjust AZ/ALT continuously.
    During the development I made use of several opensource and projects available online, namely:
    AccelStepper for stepper control, TinyGPS++ for NMEA decoding, Arduino telescope controller was my inspiration and reference for Taki's matrix method for coordinates transformation, of course Energia as my IDE Upon power-up the mount is performing:
    homing acquisition of current location (longitude/latitude) and time via NMEA stream moves to 3 brightest (most convenient) stars in succession to perform 3 star alignment procedure - they are selected from the list of over 500 stars in built-in catalog (the  brightest are used for the alignment, tough), once aligned the mount is in tracking mode: it tracks the view to counter the apparent movement of objects in the sky, waiting, either for the user to move to particular object - selected from the library of stars and Messier objects, or awaits connection via Bluetooth from a PC running Stellarium with a plugin and slews to selected object. search for the object that should be visible in the eyepiece and display important information on LCD - I compiled in 500 brightest stars from HYGXYZ and full Messier catalog.  I have very little experience as amateur astronomer so far, so some of the objectives might have been not very obvious for me in the beginning. This project was also a good way to make use of my free time and gain experience in embedded system design.
    With kind regards,
  15. Like
    CorB reacted to RobG in LCD   
    LCD - Linguistics and Communication Disorder
  16. Like
    CorB reacted to icserny in TM4C129 Internal Tempsensor   
    The latest official version of Energia (energia-0101E0012) does not define TEMPSENSOR for the TM4C1294 MCU. The suggested solution discussed at https://github.com/energia/Energia/pull/364# does not work for me. The function call to analogRead(TEMPSENSOR) is hanging the program. I have found a quick and simply solution for the problem, so anyone can use it until a better solution will be found.
    1. Add this line to file pins_energia.h in folder Energia/hardware/lm4f/variants/launchpad_129
       #define TEMPSENSOR PB_1 //Will be translated to ADC_CTL_TS 2. In the same file modify the following line (in the definition of array digital_pin_to_analog_in[], near to end of file):
    NOT_ON_ADC, // 95 - PB_1 unrouted simply replace it by
    ADC_CTL_TS, // 95 - PB_1 unrouted These modifications define the TEMPSENSOR symbol and will select the internal temperature sensor when readAnalog(TEMPSENSOR) is called.
    Here is a simple example sketch:
    uint32_t val; float temp;  void setup() {   Serial.begin(9600); } void loop() {   delay(1000);   val = analogRead(TEMPSENSOR);   Serial.print("adc:");         //raw ADC data   Serial.print(val);   temp = 147.5 - 75*3.3*val/4096;    //temperature in Celsius   Serial.print("  temp:");         Serial.println(temp,1); } Good luck!
    Istvan Cserny
  17. Like
    CorB reacted to L.R.A in ADC peripheral has alot of fuctions   
    Second code,
    There's probably alot of times you had a analog sensor and you wanted to check when it's values were below or higher than a certain value. In robotics i had this problem so i didn't need to check the ADC and find useless values.
    So Tiva has a comparator in the ADC wich is configurable to generate a interrupt. 
    I have this code made but i still would like to run some more tests 
    #include <stdbool.h> #include <stdint.h> #include "inc/hw_memmap.h" #include "driverlib/adc.h" #include "driverlib/pin_map.h" #include "driverlib/sysctl.h" #include "driverlib/gpio.h" uint32_t valor[1]={ 0}; float temperatura; void ADCinterrupt(){ ADCComparatorIntClear(ADC0_BASE,0); ADCSequenceConfigure(ADC0_BASE, 3, ADC_TRIGGER_PROCESSOR, 0); ADCSequenceStepConfigure(ADC0_BASE, 3, 0, ADC_CTL_TS | ADC_CTL_IE |ADC_CTL_END); ADCHardwareOversampleConfigure(ADC0_BASE,64); ADCSequenceEnable(ADC0_BASE, 3); ADCIntClear(ADC0_BASE, 3); ADCProcessorTrigger(ADC0_BASE, 3); while(!ADCIntStatus(ADC0_BASE, 3, false)) { } ADCIntClear(ADC0_BASE, 3); ADCSequenceDataGet(ADC0_BASE, 3, valor); ADCSequenceDisable(ADC0_BASE, 3); temperatura = (1475.0 - ((2475.0 * valor[0])) / 4096.0)/10.0; Serial.println(temperatura); } void setup() { Serial.begin(9600); // put your setup code here, to run once: SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0); ADCIntEnable(ADC0_BASE,0); ADCComparatorRegionSet(ADC0_BASE,0 , 500, 3500); ADCComparatorConfigure(ADC0_BASE,0,ADC_COMP_INT_LOW_HALWAYS); ADCComparatorIntEnable(ADC0_BASE,0); ADCIntRegister(ADC0_BASE,0,ADCinterrupt); } void loop() { // put your main code here, to run repeatedly: }
  18. Like
    CorB reacted to greeeg in Oversampling, averaging and getting confused.   
    I just whipped up this quick example in excel.

    In this case +-10% was added to a constant value 100.
    we have a 5x oversampled.
    50% weighted, A = (A+B)/2;
    10% weighted, A = (A*9 + B)/10;
    I would recommend doing something like this to evaluate which method would work best. preferably on real data.
    For example if your input signal changed values suddenly.

    The same filter might not be appropriate.
  19. Like
    CorB reacted to cubeberg in Windows IoT program   
    Looks like Microsoft is getting started on IoT - so for the .NET programmers - this might be an interesting thing.  I signed up - apparently they're sending out free dev boards - https://www.windowsondevices.com/
    Could be a cool sensor hub for instance.
  20. Like
    CorB reacted to zeke in IoT Router idea   
    Howdy Everybody!
    I have this big project idea and I don't know exactly where to put it so I'll try here in the off-topic forum first.
    I was just thinking about a neato device that might be of benefit to us as a community and I would like to get some feedback to see if this idea has any merit.
    I discovered the BeagleBoneBlack last month and Holy Mackerel is that cool! I was thinking of a product based on that work. Namely, an IoT router/aggregator/access point. 
    It would be a Linux box that acted as a WiFi access point, an Ethernet router and, an RF access point. It would speak to all the wireless or ethernet enabled data loggers that we are making.
    Combine this with thingspeak and this could be a game changing device. I think the IoT ecosystem would finally start to coalesce and become a firm, open source foundation to build on. It also wouldn't be in the hands of just a few companies who are trying to control it all i.e.:cisco, contiki, etc...
    For fun, we could call it "Houston" ;-)
    Does this IoT ecosystem idea hold water?
    What do you think?
  21. Like
    CorB reacted to spirilis in Preorder EK-TM4C1294XL Tiva C Series TM4C1294 Connected LaunchPad   
    Just noticed this, a series on "IoT solutions with the Tiva-C Connected LaunchPad" - http://focus.ti.com/general/docs/video/Portal.tsp?lang=en&entryid=0_1qe8j32e&DCMP=engineerit&HQS=engineerit-aware-em-t8aok01&sp_rid_pod4=OTI4MTY2MTI2NwS2&sp_mid_pod4=45271486
    Sent from my Galaxy Note II with Tapatalk 4
  22. Like
    CorB reacted to jpnorair in How to monitor heating system status: looking for ideas   
    Someone told me this last time, so I cut a slot in the insulation (it was a flat cable).  I didn't think to test if it would work with the ground line as well, but for single phase AC I bet there's a workaround regardless of the cable type.  I'll look into it.
  23. Like
    CorB reacted to jpnorair in 300m Range RF PCB discussion   
    A member recently asked me a bunch of questions through private messaging.  I'm posting the dialog here in case anyone else is interested.
    there's nothing at 2.4 GHz that is going to give you more than 100m range.  The NRF24L01 is good for about 20m.  What are your requirements for power & long range?
    To communicate further than 300m, you need to worry about multipath.  Multipath is interference coming from the signal bouncing-off things.  The receiver sees copies of the same signal, and it can be difficult to decode.
    There are some ways to reduce multipath interference.
    1. Use lower frequency.
    2. Use a modulation that has redundancy, like wideband FSK.  Alternatively, use DSSS.
    3. Use lower data rate.
    I've never heard of anyone using MRF49XA.  You may want to try Semtech SX127x, which is indeed the device used by SigFox.  There are many, new, low power RF IC's coming out.  The ones most interesting are: Semtech SX127x, SiLabs Si4463, TI CC1200, and ST SPIRIT1.  All have slightly different advantages, although I use SPIRIT1 primarily. 
    You can probably forget about communicating faster than 50kbps, maybe 100 at most.  Higher data rate reduces range.  You can do some tests to figure out what works best for you -- multipath is your biggest problem, and it is nonlinear, so you might find that there is 10% packet loss at (for example) 50kbps and 90% packet loss at 60kbps.  You should just test and find out -- make sure to adjust digital RX filter bandwidth together with datarate!
    Yes, use an external dipole.  Monopole is OK too, but only if you know how to tune the design on your board.  So just use the dipole.
    Of those chips, use whichever chip is easiest for you.  Make sure to use wideband FSK (set Fdev larger than baud rate) with FEC enabled on CC1200 or SPIRIT1.  On SX127x, make sure to use a combination of spreading (DSSS) and FEC.  Without going into great detail, I will say that SPIRIT1 is the best chip to use if you are an expert.  It is like a race car that is extremely fast, but difficult to drive.  SX127x is like a fast car that is easy to drive, so I recommend it for you.  If you cannot achieve 300m with SX127x, then you are doing something very wrong .
    I think the only difference is that 1272 is for 862, 866 MHz bands only, and 1276 can use 169, 433, 862, 866.  1272 is probably cheaper.  For small volumes, 1276 is probably better, because you might want to try different bands.
    RX filter is a setting on the transceiver.  If your RX filter is narrower than the emission spectrum (known as power spectral density, PSD), you will not receive all the power of the signal.
    In systems with monopole antennas, it is important to have an uninterrupted ground layer.  It dipole systems, this is less important.  However, you also want a ground layer underneath the transceiver and front-end analog circuits.  For 866 MHz you will want the spacing to be no more than 0.8mm.  For 433 you can get away with 1.6mm.  You also want to sink a lot of vias between ground layers.  This prevents ground loops.
    Therefore, 2-layer is OK, but it is difficult to design a PCB that is good for RF with only 2-layers.
    Yes, 0.8mm PCB if you use only 2 layers, and you use 866 MHz.
    You should probably use 433 MHz, anyway, since range is important.  169 MHz would also be an option, although it is a new band so it can be difficult to find ready-made parts for it.  169 MHz on a dipole will go 300m easily!
  24. Like
    CorB reacted to energia in New Energia release 0101E0011 - 12/17/2013   
    I am happy to announce that release 0101E0011 just went up on energia.nu.    I want to thank everybody for their support and contributions. Energia would not have been possible without such an awesome community!   The highlights are: Lots of bug fixes Major update to the CC3000 WiFi BoosterPackLibrary for the MSP430F5529 and TivaC/Stellaris LaunchPad Updated ARM tools to gcc-arm-embedded Initial C2000 support (thanks to Trey German for all his hard work on getting Energia ported to the C2000) CCSv6 Energia Sketch import Support for MSP-EXP430G2 LaunchPad Support for MSP-EXP430F5529LP LaunchPad Support for EK-TM4C123GXL (TivaC) LaunchPad Support for EK-LM4F120XL (Stellaris) LaunchPad Runs on Windows (XP/7/8), Mac OS X and Linux (32/64 bit) Happy Making!
  25. Like
    CorB got a reaction from bluehash in New Energia release 0101E0011 - 12/17/2013   
    For those interested in the C2000 support:
    Thanks to all that make this possible !
  • Create New...