What are the interface boundaries: how fast can the imp sample, what’s the maximum size/rate for sample transmission, etc.
Eg. could the Imp handle sampling voice/sound from a microphone?
If so, for how long of a sample period, before buffers overflow or some other limit is reached?
Can this data be transferred over the network to an independent server, via the ei servers?
My impression is that the imp is not suited for this kind of thing. Prove me wrong!
The feeling I get from the scraps of info available, is that this is intended for very small
sample sizes, very infrequent sampling and reporting. Eg. a thermostat.
But what are the limits, rough, imagined and/or real?
Thanks
One of the features on the roadmap is for the squirrel code to be able to set up pipes that are automatically serviced by the imp OS layer - this will be how audio sampling will work, and also how you can use the imp as a fairly transparent UART bridge.
Yes, the current API is designed for low data-rate, sensors/sampling types of application. But as always, the future API will depend a lot on what demand there is for using imps in various types of applications.
Answering the question more generally, the limits on a lot of the available interfaces (GPIO sink and source currents, SPI speeds, etc.) are those of the CPU we use: the STMicro STM32, specifically the STM32F205. The datasheet (PDF) is very comprehensive. The STM32 itself is certainly capable of real-time audio, though the ADC is max 12-bit, so you’re not going to get CD quality.
Peter
I’ve been reading over the documentation, and one thing that I was really hoping to see was the capability of connecting to other devices on the local network. Example: you have a DirecTV satellite receiver and you want to tune the receiver to a specific channel; this can be done by opening a connection on port 80 and sending an HTTP GET command.
No, this is not something that will be implemented. The imp talks only to the imp service for many reasons, including security, resource use, and ease of configuration.
That’s a major disappointment.
The critical difference is that the imp is a service that has a hardware aspect - we believe it really improves the process of making connected devices. You get lots of great things including lack of firewall configuration, plug and play operation, seamless software updates for devices, web programmability, easy smartphone control, etc.
Hugo - while I’m disappointed, I completely understand.
Absolutely no problem with anything talking, bidirectionally, to the service. They just need the API key.
Another interface limit question (probably fit’s in here):
The GPIO peripheral can fire a callback on both rising and falling edges, yes. The latency has been measured at about 600us, so your 1ms should be do-able.
At one point we were talking about a “pin-triggered pulse generator”, which would be set up by Squirrel code, but the actual implementation would be in the C++ firmware, or even the STM32 hardware. That would demolish the latency (maybe to ~100ns), but as with all of these things, it takes up its place in the “to-be-implemented” queue depending on how many people are actually going to need it.
Peter
@jwjames83 - This, or something similar, would work for your DirecTV application, although it’s a whole extra level of fun you might not be up for.
@robv - I did think of something like that, though not with a Raspberry Pi as I cancelled my order - I didn’t want to wait 2-3 months to get it. While it would work, it seems a bit much and would rather just make the Pi responsible for what I needed, open up a few ports on a router and . . . oh, wait - that’s what I want to avoid.
Hugo said: Absolutely no problem with anything talking, bidirectionally, to the service. They just need the API key.
Okay, one thing I might implement just to get familiar with things, is a wifi (imp) remote control device for my PVR. The imp would manage a keypad (and perhaps an LCD), passing input to the EI servers.
In order for that input to get relayed back to my PVR, I suppose the PVR itself will also have to establish a connection of some kind to the EI servers and either listen or poll for input from the imp. Right? How does one actually go about doing that?
Thanks (and Hi! to Hugo, Peter, Rob, and all of the others here who I have yet to meet in person)
Polling is less useful than some kind of push notification.
The “have the EI servers connect to you” has the teensy potential issue of firewalls to get through. I wonder how best so solve that one? It’s probably impractical to have millions of established connections all waiting for data – the servers would run out of TCP ports.
I’ve come up with an even better need for an imp here now, with the same issue: The UPS man was due to deliver a Nexus-7 “some time” today. This means either being tied to remaining indoors for the whole day, or having some way to know about the doorbell while out in the garden.
I figure I’ll wire the imp to the doorbell, and have it notify me by smartphone (exact method TBD) somehow when the bell rings. Ideally this would be over local wifi, but that’s not permitted with imp. So it has to relay to California and then somehow back again. SMS is probably too slow, so some kind of more live internet connection is likely needed. Mmm…
Solve this class of problems and the potential user base explodes in size!
Cheers
We’re architected to keep millions of connections open to every imp; this is not as hard as it used to be.
This means either being tied to remaining indoors for the whole day, or having some way to know about the doorbell while out in the garden.
At the pub last night Peter’s brother wondered what practical uses there were for the imp. One I suggested was having the doorbell send you an sms so you didn’t miss an important delivery. He thought that was pretty silly, preferring to stick a post-it on the door. I’m glad I’m not totally out of touch with reality
Rob
Fen Consultants. UK
Of course it’s probably simpler to just hard wire a doorbell extension out in the garden.
But then SWMBO wouldn’t hear it because of the earphones on her mp3 player.
Substitute smartphone for mp3 player… problem solved!