The Rites of passage into hacking into surface mount.
After a lot of thinking, I sat down today and attempted to get a GPIO pin for the Reset. I removed a 10K pull-down (R17 on the MR3020) after checking that it actually was a pull-down and which end was going to the micro-controller.
It all went well until I was double checking continuity and the surface mount pad lifted off the board. Seems I will have to it all over and maybe use a different GPIO.
I had been dreading this possiblity as these tiny pads just don't have much surface area holding them down.
Where now?
Well there is a bit of shinny copper that I might be able to attach the 30 gage wire to if I super glue it to the board surface first and then solder.
If that doesn't work, I will have to use an alternative GPIO.
I suspect that if I could use the pull-down rather than eliminate it, the whole job would be easier. If I also ruin another GPIO, I may attach to an LED like you did. It is just easier to have a resistor or LED keep the pads safely attached to the board.
And I certainly am going to position and set the wire in a drop of superglue before soldering. Any slight wiggle can break loose a solder pad unless that wire has a mechanical attachment to something else.
++++++++++
I hadn't planned to power the Propeller. I just am trying to get the 10k pull-up and the capacitor to ground wired into the MR3020 case. That's why I had to remove the 10k pull-down.
Well, God dammit, after all that debate about my spurious resets and when everything looks solid with that 10nF on the reset, I go away for a day and when I come back I decide to measure my battery voltage.
BOOM, as soon as I touch the ground on the board with my multimeter probe the thing resets.
Looks like I'm going back to that 100nF on the reset.
Well, God dammit, after all that debate about my spurious resets and when everything looks solid with that 10nF on the reset, I go away for a day and when I
come back I decide to measure my battery voltage.
BOOM, as soon as I touch the ground on the board with my multimeter probe the thing resets.
Looks like I'm going back to that 100nF on the reset.
I guess my approach of having the Reset circuit easy to plug in and replace makes sense.. until the spurious Reset issue is resolved. I generally like to have an easy way to achieve rework.
I have added a 3 pin header that provides 3.3VDC, Ground, and one GPIO. Only the wire to the GPIO is unresolved.
From there I can plug the GPIO directly to the outside world without anything between, or I can wire up some sort of filter or driver scheme and plug into that.
And so....
I decided I need to tie down the 30 gage wire to the board before actually soldering the end to a pad. In that way, the pad won't experience force that might pull it off the board.
Three choices presented themselves.
A. Hot Glue
B. Epoxy
C. Super Glue.
Epoxy is awkward as there is no chance of removal once used.
Hot Glue is easy for rework, but may be too easy as soldering might just loosen it and make a mess.
So, I guess I am going to try Super Glue. I can disolve it for removal with acetone (or finger nail polish remover) and it comes in a liquid or a gel. Plus it sets very quickly. Application will be minimal with the end of a toothpick or a wire.
The trick here is to practice and explore what it does before using it on the real project. So I will do some test runs on material that doesn't matter for both attachment and removal.. just to get an idea of how it behaves.
I am really hoping to have something working tonight. I can then attach an LED for testing the GPIO activity.
Also I'll spend a bit more time today reviewing what Openwrt says about the available GPIO on the MR3020 board. As I recall, they only mention two sure locations. But there are 4 LEDs driven by the GPIO as well and two GPIO tied to the slide switch that seems ignored in Openwrt. That is 6 more possible locations..... all I need is one (out of 8 total).
Perhaps, maybe. I will be checking and rechecking again.
But here is a strange new observation. Just now I could not get it to reset by probing ground on the board or the router with my meter. Then I started poking at it with my "antenna" wire. I thought it had reset when I touched the reset pin with that wire. But no it was still running, only the LED blink rate had changed from once per second to what looked like once per four seconds!
Perhaps, maybe. I will be checking and rechecking again.
But here is a strange new observation. Just now I could not get it to reset by probing ground on the board or the router with my meter. Then I started poking at it with my "antenna" wire. I thought it had reset when I touched the reset pin with that wire. But no it was still running, only the LED blink rate had changed from once per second to what looked like once per four seconds!
Okay, just checking in. I went shopping for Superglue to make sure the wire doesn't break loose from the board again.
The ides of gluing it down and then soldering didn't work for me. It seems the superglue is too fluid and too slow to dry. So I cleaned the board and wire with mineral spirits, used cello tape to hold the wire while soldering, gently poked the side of the wire to confirm attachment, and after all that.. I used the super glue to stick the wire more permanently to the board.
Frankly, I dislike using glue at this small scale and it is just too easy for it to go everywhere.
=++++++++
What now?
It seems I salvaged my solder point at R17 (actually for GPIO #29). I had to build a little LED device to test if this will work. And I had to test that worked on plain old 3.3v. I used a 330ohm resistor, so it is a 10ma log.
Next is to figure out how to just reach the GPIO and Toggle. I believe that maybe this can even be done in LuCi if you know the GPIO number. I'll get back to you in a few minutes if I get it to light successfully.
The other alternative is to do it all at the command line with something like this to light the LED in a steady on.
Well, LuCi does indeed have a page for LED configuration, but it seems not to apply.
So I went to the Command Line and set up a GPIO29 as Output and High.
The LED did light for a while. It seemed like a loose or poor connection. The voltage on GPIO29 read 2.7VDC, while the system was reading a healthy 3.32VDC. And then it all seems to have stopped.
+++++++++++++++++++++++++
Conclusions
A. GPIO29 is indeed available for a Reset signal
B. The soldering may have not been good enough to sustain the connection. If I must, I have R15 right next to it that can be removed to open up another GPIO. I am a little worried that 10ma was too much load for the i/o, but that seems silly.
C. Nothing is easy when you are soldering the tiniest connections one ever has.
+++++++++++++++
Sooner or later we will get a good Reset via GPIO established.
My next router arrived. It is like a dongle with full USB one end and RJ11 the other, and a microUSB for power on the side.
This one is RT5350 based with 16MB SDRAM and 4MB FLASH.
There are 4 test pads with one of them gnd and the other appears to be power. Likely the others are TX & RX
Also 1 pb switch and 2 leds. Aerial looks to be a tiny chip antenna.
I went back into the board and resoldered GPIO29, and then went into command line and set it to output and high.
I am still getting 2.71VDC, though the system is a 3.32VDC.
I intend to use the pin with a 10K pull-up to the 3.32VDC, so it is really its pull-down ability that is important, not the ability to drive an LED from a full 3.3 v source.
2.71volts/330ohms = 8.21 ma
My gut feeling for now is to move on to adding the Reset circuitry. If the GPIO ends up appearing flakey, I can switch to another.
++++++++++++
So, a 10K pullup and 100nf to ground with 160ohms limiting current is what I am about to build. With that, we will see if I can get the Propeller to download via pi-propeller-load.
Should I be more concerned with 2.71v as the High? I wonder if the connection to the board is adding resistance or that is just what the microcontroller is able to deliver.
Hi, the 2.71 volts is High with nothing attached. I have resoldered and now rebooted and checked several times. The Low is somewhere between 0.00 and 0.02 V.
I certainly would prefer a full 3.32V as a sign of good health, but the glint of copper from the trace I am connecting to is tiny. GPIO 29 toggles nicely regardless of the lower voltage.
I may explore some of the other GPIO to try to figure out what they provide for High before I do anything drastic.
So at this juncture I am just going to plod ahead and see if it will Reset the Propeller regardless.
Why?
A. It may work fine.
B. I hate to abandon the GPIO as damaged
C. I am curious if it will work.
D. Keeping my spares until I have done as many blunders as I can.
E. I might discover a way to get full voltage out of it.
The main point is the /sys/class/gpio/... directories do perform according to expectations.
Secondly, it would be nice to confirm that pi-propeller-load and GPIO wired to Reset does work with the WR703N and MR3020 devices... though I expect it does.
++++++++++++++
BTW, I have been getting a lot of Resets which probing voltages. But they all seem due to me just shorting the 3.3V to Gnd.
Yes, that is the tiny Esruino JavaScript engine compiled to run on my D-LINK router. We can now add applications to our routers using JavaScript. It's not tested yet though.
Yes, that is the tiny Esruino JavaScript engine compiled to run on my D-LINK router. We can now add applications to our routers using JavaScript. It's not test yet though.
Note: This is not for Loopy, he has to use Forth
Wow! That sounds great! I need to buy one of these and get it setup.
Have you looked at the code for Espruino? Does it compile to byte codes or does it interpreter directly from Javascript source? If it has a byte code VM, I'm wondering if it might be possible to recode it in PASM to make it run a lot faster on a Propeller.
Yes, that is the tiny Esruino JavaScript engine compiled to run on my D-LINK router. We can now add applications to our routers using JavaScript. It's not test yet though.
Note: This is not for Loopy, he has to use Forth
OK, this is really cool! I was expecting Node from you first but this is even better! I guess I need to pile my WR703N on top of everything else I'm playing with and start playing with it.
This might interest you, and others. I was hacking away on the Espruino Makefile trying to get it to compile for the MIPS processor in my D-LINK router. Eventually I noticed it had this target called "CARAMBOLA", never heard of such a thing, then I noticed that is actually a MIPS architecture build using OpenWRT. Job done!
Now I find that a "Carambola" is a really tiny WIFI module with a MIPS processor, 8M of RAM and 32M of FLASH for 19 euros that you can get here: http://shop.8devices.com/wifi4things/carambola2 wow!
They also have a little dev board to stick it on and other bits and bobs to support it.
This is going to make a great WIFI adapter for Propeller projects. Propeller, Linux, OpenWRT, and JS. We could get the whole thing set up to serve it's own WEB IDE's for openspin-js on the Prop and JS on the OpenWRT side. All in the space of a big match box.
I have not looked at the Espruino code. But it does not use bytecodes. The is not enough RAM on many Espruino targets to hold the source (so that you can work with it interactively on the device) and compiled byte codes. See Gordon Williams explanation of this here: http://www.espruino.com/Performance
Yeah. problem is Node is far to big to run on any of these little machines we are looking at. Espruino is a perfect fit.
I have a stack based work top as well. Problem is the stack keeps overflowing causing a core dump and everything gets returned to the free store. I have no way to get back to whatever it was I was working on a year ago.
Yes, that is the tiny Esruino JavaScript engine compiled to run on my D-LINK router. We can now add applications to our routers using JavaScript. It's not test yet though.
Note: This is not for Loopy, he has to use Forth
JavaScript?
I am still suffering post-traumatic stress syndrome from attempting to learn Java. I enjoy drinking Lattes, but tremble when one offers Java
++++++++++++++++++++
On other fronts,
I am suffering a bit of disappointment with the GPIO availability on the MR3020.
Everything is pointing toward having a Propeller working its magic as an i/o interface as the GPIO are limited in number and very demanding of careful soldering.
===
Out of a theoretical 30 GPIO pins available, it really seems that only two are wide open to hacking on the MR3020. And I did pull of the solder pad of one of those. 2 GPIO are definitely occupied, likely 4 more with the serial interface for Flash. And 4 are attached to LEDs, 3 are attached to switching devices (one Push button, and a 3 position slider)
After quite a bit of looking around, I found it is not uncommon for these Antheros devices to actually not connect quite a few GPIO pins to the outside world. The only way to be sure of what is available is to desolder the CPU from the board and then verify all the traces.
This has been done with the WR703N and offered up a wealth of GPIOs to hack. But inspite of being the same CPU chip, it appears that the MR3020 uses an entirely different board and may not be as delightful for the hacker.
And so...
I am pretty much accepting that the MR3020 has only 2 wide-open GPIO.
The WR703N and others may have more.
++++++
About that 2.71V High.
There is one commment about one GPIO pin in OpenWrt for MR3020 that mentions a 2.8V High reading. I am still a bit unclear about this, but the AR9331 might never deliver a true 3.3V High. Documents fro the actual chip are NOT available.. just observations in the wild.
~~~~~~~~~~~~~~~
What's next...
Actually test pi-propeller-load with my GPIO reset on the MR3020 (at the 2.71V high) and see if it works.
Tx and Rx are fine at 115200 baud and working nicely with Forth.
But pi-propeller-load would allow me to switch between Tachyon, Pfth, and PropForth binaries.
I am still suffering post-traumatic stress syndrome from attempting to learn Java.
I can quite understand that. It's normal. Java is awful. Worse still once you have invested enough time into it you find out it has no reason to exist.
But repeat after me: "JavaScript is not Java".
JavaScript is a totally different language. It has features far more sophisticated than Java can imagine.
Re: GPIO. I thought it was understood from the beginning that these little boxes would have precious few GPIO pins to play with.
Anyway, you are free to skip the JavaScript idea. But what do you think about about the Carambola module?
That Carambola is in effect a really, really small router like the ones we have been using. It can be used as just a tiny WIFI module. It has a pile of GPIO available and also things like SPI.
The Carambola2 seems to be a bare board, without antenna or power supply. I suppose I could live without a box or a power supply in some cases --- but NO antenna?
Even with a claim of 27 available GPIO pins, I have to wonder how much effort I might have to put into getting the RF side of things in order.
Buying bare boards can be deceptive when you have whole mini-routers to compare to. And at $19 Euros, it is more than my MR3020 before shipping or VAT.
The WR703N and the MR3020 seem to be the best deal around. The craftsmanship is neat and clean.
Alternatively, I am tempted to take a WR702 and upgrade the Flash from 2Mb to something huge... like 16Mb. I am not sure an SRAM expansion is so necessary. But you can't do OpenWrt with less than 4Mb.
+++++++++++++++++++++++++++++++++++++
My 'main point' about the limited GPIO is that one cannot just jump into soldering wires to these tiny ports or you will soon run out of sites that will work and may have a very beat up board.
Two wide open GPIOs is plenty if you are already an SMD soldering expert.
That is certainly not the case with me. I shake and shimmy all over the place before I get the tip in the right place. I have to solder with two hands propped against something solid.
This time around I needed to develop a technique that really works for me. So I try something and then think about it for a day... the thinking is as important as the doing as I have to ask myself what I don't like about the results and what am I doing wrong.
~~~~~~~~~~~~~
I am back to 4 days off... so I really really hope to resolve my MR3020 exactly the way I want it.
It's a lot more powerful than such dumb WIFI modules. I runs OpenWRT, it has 16 MB Flash and 64 MB RAM, that's double what's on my d-link and makes it possible to install the propeller loader, open spin and whatever else. on it. It has a ton of GPIO and SPI and a UART or two.
It may be small but I think it looks quite usable in terms of soldering down to some Propeller proto board or some such.
Well, you may not want a case or powersupply... but for 33 Euros, you do get the carrier board with the antenna, the various interface plugs and headers to the GPIO.
Of course, the 16Mb Flash is a big boost over the 4Mb on the WR703 or MR3020. But I have yet to run out of memory......so I am not in a rush.
+++++++++++
You do have me wondering about how easy it might be for me to install a 16Mbyte Flash.
+++++++++++
On the other hand, why bother with soldering more Flash when you can use the USB port for an ex-root file system of up to 32Gbyte of storage?
That still makes the WR703N and MR3020 a bettery value in many instances.
Sparkfun has never quite gotten my attention.. a lot of interesting items, but many are near misses in terms of best value.
If you only have 4MB of flash you are going to be stuck to install the propeller loader or OpenSpin on there. Just like I am on my D-LINK.
You do have me wondering about how easy it might be for me to install a 16Mbyte Flash.
Given your stated aversion to working with a tiny WIFI module, and given that a FLASH upgrade will require changing a surface mount chip with dozens of even smaller pins, I would say it is impossible for you. It would be far easier and probably cheaper to just use the Carambola module directly.
So why oh why do they borrow the Java name in JavaScript? They must logically be defying logic. Right?
A very good question.
The answer to that question lies in the twisted and tormented minds of the marketing guys of Sun Micro Systems and Netscape back in 1995 when JS was invented.
When the languages was devised, in 10 days no less, by Brendan Eich of Netscape it was called "Mocha". Very soon it's name was changed to "Live Script". Somehow in the mess of deals between Sun and Netscape it got renamed to "JavaScript". Remember Sun was trying to push Java applets as a web technology back then and Netscape were "the" browser guys.
ECMA-262 sounds like a classification of a skin disease. I do seem to recall Mocha.
And yes, considering the challenges of changing both a FLASH and an SRAM chip, I'd prefer to buy a completed solution. The 33 Euro Carambola2 Bundle is at least an easier board to build off of... all the ports and the antenna are attached.
Nonetheless, my focus was primarily toward interpreted wireless programming of the Propeller. The MR3020 is just fine as a wifi Propeller programmer. And it can use its USB port to directly program any of the Propellers with a built-in USB interface... no need to open it up and try to construct an RS232 with Reset.
++++++++++++
You seem to have wandered back into Linux Land. OpenWrt certainly offers enough depth of packages to make it all good fun.
And with enough GPIO pins available, the Propeller may be a bit redundant. After all, most home automation is not a timing critical mission.
And with enough GPIO pins available, the Propeller may be a bit redundant. After all, most home automation is not a timing critical mission.
What, you mean we have been wasting our time on OpenWRT Propeller tools for a month?!
We have to get more sophisticated about our home automation ideas. Those serial controlled RGB LEDs need some real-time love. As do servos if you want to move something. What about battery powered monitoring systems that have a Propeller wake up the WIFI module only occasionally?
If you have a good USB port, you don't need the Carambola2 for more program storage space.
Just use the ex-root file system and you can add on 32Gbyte of storage. The WR703N or MR3020 will suffice.
~~~~~~~~~~~~~~~~~~~~~~~
My concept of home automation is very architectural. I'd like windows and curtains controlled as well as mood lighting. A layer of security would be nice as well. I am still a bit wary of wireless in a home automation context. But these gadgets have a lot of other uses.
The little wifi devices tend to appeal to me for a dedicated system at a given location that is not easy to reach by wire. I suppose garden lighting and irrigation might be a handy application. Or a temporary setup for a garden party.
A wireless link to a weather station that measures wind speed, wind direction, humidity, and temperature would be another. Of course, if I were to build one for Taiwan, it would have to tolerate typhoons and lightning. But these little wifi routers could easily run 24/7 on solar recharged batteries atop a pole. They may actually not attract lightning as much as other devices... just put your station atop a 6 meter bamboo pole.
Another use, might be an enhanced wireless lock for my motor-scooter. In the past, I have used devices that locked via a wireless fob on a key chain. This could work from an iPad or iPod. One could even have it monitor a GPS attached to the motor-scooter and monitor the engine status or blink lights and horn. It would certainly be nice to have a different, more secure lock-down for overnight than the lock-down mode used when running errands. One might even have a wireless link to an ECU to enhance engine performance.
Cluso has a boat and monitoring a boat from afar is very handy. One can worry quite a bit about the state of the bilge pumps and backup batteries. It is so much nicer to not have to run down to the boat to check things, and then to run back up the dock to get whatever you need to be sure to ride out an incoming storm. Docks are no place for trying to run long wires as water and electricity don't mix well.
That is true. However that makes a much bigger hardware set up and is a bit more complex. It might also be more expensive.
I was just sizing up my new home made Propeller board. It has lot's of empty space on it. Seems I can turn this all inside out, instead of putting the Propeller board in to my router box I can put a router on the Propeller board!
Comments
After a lot of thinking, I sat down today and attempted to get a GPIO pin for the Reset. I removed a 10K pull-down (R17 on the MR3020) after checking that it actually was a pull-down and which end was going to the micro-controller.
It all went well until I was double checking continuity and the surface mount pad lifted off the board. Seems I will have to it all over and maybe use a different GPIO.
I had been dreading this possiblity as these tiny pads just don't have much surface area holding them down.
Where now?
Well there is a bit of shinny copper that I might be able to attach the 30 gage wire to if I super glue it to the board surface first and then solder.
If that doesn't work, I will have to use an alternative GPIO.
I suspect that if I could use the pull-down rather than eliminate it, the whole job would be easier. If I also ruin another GPIO, I may attach to an LED like you did. It is just easier to have a resistor or LED keep the pads safely attached to the board.
And I certainly am going to position and set the wire in a drop of superglue before soldering. Any slight wiggle can break loose a solder pad unless that wire has a mechanical attachment to something else.
++++++++++
I hadn't planned to power the Propeller. I just am trying to get the 10k pull-up and the capacitor to ground wired into the MR3020 case. That's why I had to remove the 10k pull-down.
BOOM, as soon as I touch the ground on the board with my multimeter probe the thing resets.
Looks like I'm going back to that 100nF on the reset.
Battery is still 6.4 volts by the way.
I have added a 3 pin header that provides 3.3VDC, Ground, and one GPIO. Only the wire to the GPIO is unresolved.
From there I can plug the GPIO directly to the outside world without anything between, or I can wire up some sort of filter or driver scheme and plug into that.
And so....
I decided I need to tie down the 30 gage wire to the board before actually soldering the end to a pad. In that way, the pad won't experience force that might pull it off the board.
Three choices presented themselves.
A. Hot Glue
B. Epoxy
C. Super Glue.
Epoxy is awkward as there is no chance of removal once used.
Hot Glue is easy for rework, but may be too easy as soldering might just loosen it and make a mess.
So, I guess I am going to try Super Glue. I can disolve it for removal with acetone (or finger nail polish remover) and it comes in a liquid or a gel. Plus it sets very quickly. Application will be minimal with the end of a toothpick or a wire.
The trick here is to practice and explore what it does before using it on the real project. So I will do some test runs on material that doesn't matter for both attachment and removal.. just to get an idea of how it behaves.
I am really hoping to have something working tonight. I can then attach an LED for testing the GPIO activity.
Also I'll spend a bit more time today reviewing what Openwrt says about the available GPIO on the MR3020 board. As I recall, they only mention two sure locations. But there are 4 LEDs driven by the GPIO as well and two GPIO tied to the slide switch that seems ignored in Openwrt. That is 6 more possible locations..... all I need is one (out of 8 total).
Perhaps, maybe. I will be checking and rechecking again.
But here is a strange new observation. Just now I could not get it to reset by probing ground on the board or the router with my meter. Then I started poking at it with my "antenna" wire. I thought it had reset when I touched the reset pin with that wire. But no it was still running, only the LED blink rate had changed from once per second to what looked like once per four seconds!
Never seen a Prop change gear like that...
The ides of gluing it down and then soldering didn't work for me. It seems the superglue is too fluid and too slow to dry. So I cleaned the board and wire with mineral spirits, used cello tape to hold the wire while soldering, gently poked the side of the wire to confirm attachment, and after all that.. I used the super glue to stick the wire more permanently to the board.
Frankly, I dislike using glue at this small scale and it is just too easy for it to go everywhere.
=++++++++
What now?
It seems I salvaged my solder point at R17 (actually for GPIO #29). I had to build a little LED device to test if this will work. And I had to test that worked on plain old 3.3v. I used a 330ohm resistor, so it is a 10ma log.
Next is to figure out how to just reach the GPIO and Toggle. I believe that maybe this can even be done in LuCi if you know the GPIO number. I'll get back to you in a few minutes if I get it to light successfully.
The other alternative is to do it all at the command line with something like this to light the LED in a steady on.
echo 29 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio29/direction
echo 1 > /sys/class/gpio/gpio29/value
So I went to the Command Line and set up a GPIO29 as Output and High.
The LED did light for a while. It seemed like a loose or poor connection. The voltage on GPIO29 read 2.7VDC, while the system was reading a healthy 3.32VDC. And then it all seems to have stopped.
+++++++++++++++++++++++++
Conclusions
A. GPIO29 is indeed available for a Reset signal
B. The soldering may have not been good enough to sustain the connection. If I must, I have R15 right next to it that can be removed to open up another GPIO. I am a little worried that 10ma was too much load for the i/o, but that seems silly.
C. Nothing is easy when you are soldering the tiniest connections one ever has.
+++++++++++++++
Sooner or later we will get a good Reset via GPIO established.
This one is RT5350 based with 16MB SDRAM and 4MB FLASH.
There are 4 test pads with one of them gnd and the other appears to be power. Likely the others are TX & RX
Also 1 pb switch and 2 leds. Aerial looks to be a tiny chip antenna.
Another toy to play with
I am still getting 2.71VDC, though the system is a 3.32VDC.
I intend to use the pin with a 10K pull-up to the 3.32VDC, so it is really its pull-down ability that is important, not the ability to drive an LED from a full 3.3 v source.
2.71volts/330ohms = 8.21 ma
My gut feeling for now is to move on to adding the Reset circuitry. If the GPIO ends up appearing flakey, I can switch to another.
++++++++++++
So, a 10K pullup and 100nf to ground with 160ohms limiting current is what I am about to build. With that, we will see if I can get the Propeller to download via pi-propeller-load.
Should I be more concerned with 2.71v as the High? I wonder if the connection to the board is adding resistance or that is just what the microcontroller is able to deliver.
2.7v seems a bit off.
On my GPIO I'm measuring 3.39v and 0.21v for high and low. So at my reset output I get 0.66v and 3.39v from the LEDs pin.
Wait a minute my LED drop is 3.39 - 0.66 = 2.73 which is remarkably similar to your measured 2.71v.
Does that GPIO of yours drive a blue LED? Are you measuring on the LED pin or the actual GPIO output?
I certainly would prefer a full 3.32V as a sign of good health, but the glint of copper from the trace I am connecting to is tiny. GPIO 29 toggles nicely regardless of the lower voltage.
I may explore some of the other GPIO to try to figure out what they provide for High before I do anything drastic.
So at this juncture I am just going to plod ahead and see if it will Reset the Propeller regardless.
Why?
A. It may work fine.
B. I hate to abandon the GPIO as damaged
C. I am curious if it will work.
D. Keeping my spares until I have done as many blunders as I can.
E. I might discover a way to get full voltage out of it.
The main point is the /sys/class/gpio/... directories do perform according to expectations.
Secondly, it would be nice to confirm that pi-propeller-load and GPIO wired to Reset does work with the WR703N and MR3020 devices... though I expect it does.
++++++++++++++
BTW, I have been getting a lot of Resets which probing voltages. But they all seem due to me just shorting the 3.3V to Gnd.
Note: This is not for Loopy, he has to use Forth
Have you looked at the code for Espruino? Does it compile to byte codes or does it interpreter directly from Javascript source? If it has a byte code VM, I'm wondering if it might be possible to recode it in PASM to make it run a lot faster on a Propeller.
OK, this is really cool! I was expecting Node from you first but this is even better! I guess I need to pile my WR703N on top of everything else I'm playing with and start playing with it.
I'm sure glad I have a stack oriented workbench!!
This might interest you, and others. I was hacking away on the Espruino Makefile trying to get it to compile for the MIPS processor in my D-LINK router. Eventually I noticed it had this target called "CARAMBOLA", never heard of such a thing, then I noticed that is actually a MIPS architecture build using OpenWRT. Job done!
Now I find that a "Carambola" is a really tiny WIFI module with a MIPS processor, 8M of RAM and 32M of FLASH for 19 euros that you can get here: http://shop.8devices.com/wifi4things/carambola2 wow!
They also have a little dev board to stick it on and other bits and bobs to support it.
This is going to make a great WIFI adapter for Propeller projects. Propeller, Linux, OpenWRT, and JS. We could get the whole thing set up to serve it's own WEB IDE's for openspin-js on the Prop and JS on the OpenWRT side. All in the space of a big match box.
I have not looked at the Espruino code. But it does not use bytecodes. The is not enough RAM on many Espruino targets to hold the source (so that you can work with it interactively on the device) and compiled byte codes. See Gordon Williams explanation of this here: http://www.espruino.com/Performance
Yeah. problem is Node is far to big to run on any of these little machines we are looking at. Espruino is a perfect fit.
I have a stack based work top as well. Problem is the stack keeps overflowing causing a core dump and everything gets returned to the free store. I have no way to get back to whatever it was I was working on a year ago.
JavaScript?
I am still suffering post-traumatic stress syndrome from attempting to learn Java. I enjoy drinking Lattes, but tremble when one offers Java
++++++++++++++++++++
On other fronts,
I am suffering a bit of disappointment with the GPIO availability on the MR3020.
Everything is pointing toward having a Propeller working its magic as an i/o interface as the GPIO are limited in number and very demanding of careful soldering.
===
Out of a theoretical 30 GPIO pins available, it really seems that only two are wide open to hacking on the MR3020. And I did pull of the solder pad of one of those. 2 GPIO are definitely occupied, likely 4 more with the serial interface for Flash. And 4 are attached to LEDs, 3 are attached to switching devices (one Push button, and a 3 position slider)
After quite a bit of looking around, I found it is not uncommon for these Antheros devices to actually not connect quite a few GPIO pins to the outside world. The only way to be sure of what is available is to desolder the CPU from the board and then verify all the traces.
This has been done with the WR703N and offered up a wealth of GPIOs to hack. But inspite of being the same CPU chip, it appears that the MR3020 uses an entirely different board and may not be as delightful for the hacker.
And so...
I am pretty much accepting that the MR3020 has only 2 wide-open GPIO.
The WR703N and others may have more.
++++++
About that 2.71V High.
There is one commment about one GPIO pin in OpenWrt for MR3020 that mentions a 2.8V High reading. I am still a bit unclear about this, but the AR9331 might never deliver a true 3.3V High. Documents fro the actual chip are NOT available.. just observations in the wild.
~~~~~~~~~~~~~~~
What's next...
Actually test pi-propeller-load with my GPIO reset on the MR3020 (at the 2.71V high) and see if it works.
Tx and Rx are fine at 115200 baud and working nicely with Forth.
But pi-propeller-load would allow me to switch between Tachyon, Pfth, and PropForth binaries.
But repeat after me: "JavaScript is not Java".
JavaScript is a totally different language. It has features far more sophisticated than Java can imagine.
Re: GPIO. I thought it was understood from the beginning that these little boxes would have precious few GPIO pins to play with.
Anyway, you are free to skip the JavaScript idea. But what do you think about about the Carambola module?
That Carambola is in effect a really, really small router like the ones we have been using. It can be used as just a tiny WIFI module. It has a pile of GPIO available and also things like SPI.
A lot of hidden cost here --- take a look that the Carambola2 Bundle
http://shop.8devices.com/carambola2-bundle
http://shop.8devices.com/carambola2-bundle-3in1
The Carambola2 seems to be a bare board, without antenna or power supply. I suppose I could live without a box or a power supply in some cases --- but NO antenna?
Even with a claim of 27 available GPIO pins, I have to wonder how much effort I might have to put into getting the RF side of things in order.
Buying bare boards can be deceptive when you have whole mini-routers to compare to. And at $19 Euros, it is more than my MR3020 before shipping or VAT.
The WR703N and the MR3020 seem to be the best deal around. The craftsmanship is neat and clean.
Alternatively, I am tempted to take a WR702 and upgrade the Flash from 2Mb to something huge... like 16Mb. I am not sure an SRAM expansion is so necessary. But you can't do OpenWrt with less than 4Mb.
+++++++++++++++++++++++++++++++++++++
My 'main point' about the limited GPIO is that one cannot just jump into soldering wires to these tiny ports or you will soon run out of sites that will work and may have a very beat up board.
Two wide open GPIOs is plenty if you are already an SMD soldering expert.
That is certainly not the case with me. I shake and shimmy all over the place before I get the tip in the right place. I have to solder with two hands propped against something solid.
This time around I needed to develop a technique that really works for me. So I try something and then think about it for a day... the thinking is as important as the doing as I have to ask myself what I don't like about the results and what am I doing wrong.
~~~~~~~~~~~~~
I am back to 4 days off... so I really really hope to resolve my MR3020 exactly the way I want it.
At 19 euro it is cheap compared to other WIFI modules like the CC3000 https://www.sparkfun.com/products/12820
It's a lot more powerful than such dumb WIFI modules. I runs OpenWRT, it has 16 MB Flash and 64 MB RAM, that's double what's on my d-link and makes it possible to install the propeller loader, open spin and whatever else. on it. It has a ton of GPIO and SPI and a UART or two.
It may be small but I think it looks quite usable in terms of soldering down to some Propeller proto board or some such.
Of course, the 16Mb Flash is a big boost over the 4Mb on the WR703 or MR3020. But I have yet to run out of memory......so I am not in a rush.
+++++++++++
You do have me wondering about how easy it might be for me to install a 16Mbyte Flash.
+++++++++++
On the other hand, why bother with soldering more Flash when you can use the USB port for an ex-root file system of up to 32Gbyte of storage?
That still makes the WR703N and MR3020 a bettery value in many instances.
Sparkfun has never quite gotten my attention.. a lot of interesting items, but many are near misses in terms of best value.
So why oh why do they borrow the Java name in JavaScript? They must logically be defying logic. Right?
If you only have 4MB of flash you are going to be stuck to install the propeller loader or OpenSpin on there. Just like I am on my D-LINK. Given your stated aversion to working with a tiny WIFI module, and given that a FLASH upgrade will require changing a surface mount chip with dozens of even smaller pins, I would say it is impossible for you. It would be far easier and probably cheaper to just use the Carambola module directly. A very good question.
The answer to that question lies in the twisted and tormented minds of the marketing guys of Sun Micro Systems and Netscape back in 1995 when JS was invented.
When the languages was devised, in 10 days no less, by Brendan Eich of Netscape it was called "Mocha". Very soon it's name was changed to "Live Script". Somehow in the mess of deals between Sun and Netscape it got renamed to "JavaScript". Remember Sun was trying to push Java applets as a web technology back then and Netscape were "the" browser guys.
It's all as sick as hell. The language might be better called "ECMA-262" after the standard that defines it. But that is not just clumsy, it sounds like some horrible skin disease.
https://www.w3.org/community/webed/wiki/A_Short_History_of_JavaScript
And yes, considering the challenges of changing both a FLASH and an SRAM chip, I'd prefer to buy a completed solution. The 33 Euro Carambola2 Bundle is at least an easier board to build off of... all the ports and the antenna are attached.
Nonetheless, my focus was primarily toward interpreted wireless programming of the Propeller. The MR3020 is just fine as a wifi Propeller programmer. And it can use its USB port to directly program any of the Propellers with a built-in USB interface... no need to open it up and try to construct an RS232 with Reset.
++++++++++++
You seem to have wandered back into Linux Land. OpenWrt certainly offers enough depth of packages to make it all good fun.
And with enough GPIO pins available, the Propeller may be a bit redundant. After all, most home automation is not a timing critical mission.
We have to get more sophisticated about our home automation ideas. Those serial controlled RGB LEDs need some real-time love. As do servos if you want to move something. What about battery powered monitoring systems that have a Propeller wake up the WIFI module only occasionally?
I don't know.
Just use the ex-root file system and you can add on 32Gbyte of storage. The WR703N or MR3020 will suffice.
~~~~~~~~~~~~~~~~~~~~~~~
My concept of home automation is very architectural. I'd like windows and curtains controlled as well as mood lighting. A layer of security would be nice as well. I am still a bit wary of wireless in a home automation context. But these gadgets have a lot of other uses.
The little wifi devices tend to appeal to me for a dedicated system at a given location that is not easy to reach by wire. I suppose garden lighting and irrigation might be a handy application. Or a temporary setup for a garden party.
A wireless link to a weather station that measures wind speed, wind direction, humidity, and temperature would be another. Of course, if I were to build one for Taiwan, it would have to tolerate typhoons and lightning. But these little wifi routers could easily run 24/7 on solar recharged batteries atop a pole. They may actually not attract lightning as much as other devices... just put your station atop a 6 meter bamboo pole.
Another use, might be an enhanced wireless lock for my motor-scooter. In the past, I have used devices that locked via a wireless fob on a key chain. This could work from an iPad or iPod. One could even have it monitor a GPS attached to the motor-scooter and monitor the engine status or blink lights and horn. It would certainly be nice to have a different, more secure lock-down for overnight than the lock-down mode used when running errands. One might even have a wireless link to an ECU to enhance engine performance.
Cluso has a boat and monitoring a boat from afar is very handy. One can worry quite a bit about the state of the bilge pumps and backup batteries. It is so much nicer to not have to run down to the boat to check things, and then to run back up the dock to get whatever you need to be sure to ride out an incoming storm. Docks are no place for trying to run long wires as water and electricity don't mix well.
I was just sizing up my new home made Propeller board. It has lot's of empty space on it. Seems I can turn this all inside out, instead of putting the Propeller board in to my router box I can put a router on the Propeller board!