#circuitpython-dev
1 messages · Page 217 of 1
lol
Here is a feather m4 express using an ESP32 for internet access. The esp8266 in the picture too, but disconnected.
@solar whale I had no idea you could daisy chain boards like that. And the m4 express is running CP?
Yes it is. The ESP32 or ESP8266 is just connected via a UART and has the AT firmware installed.
@obtuse ibex can you provide more specifics on what is happening. do you not see the CIRCUITPY folder?
That's so cool.
Would love to see CP on the Huzzah32, though.
Saw the announcement of the Alpha Alpha version of CP for Particle Mesh devices. Would CP be compatible with them once it is with the Bluefruit feather (nRF52)?
CP runs fine on the particle boards but does not support the “mesh” . The argon board has an ESP32 connected via UART so I hope it can work like the above demo eventually. Still a lot of work to do .
This is all based on work by Ladyada https://github.com/adafruit/Adafruit_CircuitPython_espatcommands
Seriously!?... nice... I got my Argon yesterday.
@idle owl @slender iron didn't get a chance to peek at Travis the past couple days. Bundle update is happy! 🎉
@solar whale Good to know, but I was actually planning to stay away from Arduino/C and work on CP/MP projects in the future.
Talking about compatibility, I'm assuming the OLED featherwing and the mini tft featherwing are CP compatible, right?
CP/M?!!?? oh...there's an extra P...micropython...got it....nvm
@gusty topaz yes, but... all display support on CP is in a major state of flux. framebuf is being deprecated and displayio will replace it. Both the OLED and the miniTFT can work, but it is not trivial. The miniTFT is not well supported yet.
So, displayio is currently available and working with the OLED featherwing?.
No. So far it only supports the hallowing. For the OLED you can use bitmapfont for text since the python framebuf does not do text. The built in framebuf has been removed from the SAMD builds and I assume it will be taken out of the nrf builds soon.
displayio will be my focus in january
@slender iron I hope I characterized it correctly.
yup! think so
the biggest blocker is supporting external displays besides hallowing
hmm interesting.
what libraries are available right now if I wanted to use a a regular 128x128 I2c OLED breakout board with CP and the M0 express?.
Hmm. I’m only familiar with the 128x32 ssd1306 . It works fine under the stable 3. X CP or with bitmapfont and python framebuf for 4.x . I’ve never used a 128x128
to be honest, those displays are pretty easy to handle even without a library
@stuck elbow do you have some example or a link to show how?
@solar whale not really, it's pretty much all in the datasheet
Ok, thanks. Adding to my reading list 😉
but good idea for an article, I will add it to my list
@slender iron the update to adabot raising urllib3 to 1.23 is causing me (and Travis in last night's cron?) issues. Seems the http calls are stalling, causing adabot to just hang. I went through this before with updating requests when that CVE came out, but thought I had narrowed it down to Linux+IPv6 issues. will keep you posted as I wade into this once more.
oops sorry its not working
all good. its a good thing to respond to CVEs. 😄
Thanks @solar whale and @stuck elbow !
@slender iron false alarm on urllib3. it was actually a self-induced loop. 🤦
i would like to separate out the microphone "magnitude" retrieval into a separate class using https://learn.adafruit.com/sensor-plotting-with-mu-and-circuitpython/sound as a base. Is there someplace that would be a natural place to put this?
@candid stump not sure what you mean by a "natural place". Do you mean in that sample code in the guide?
No, I'm wondering if this could be added to an existing library instead of creating something separate. I need to get the microphone "magnitude" from the example for another project and would like to create a microphone class that just returns that magnitude. But, before creating another dinky library, thought I would ask if there were an existing library this could be added to.
we don't have an existing audio input helper library, though that's an idea. It could conceivably go in https://github.com/adafruit/Adafruit_CircuitPython_CircuitPlayground/. You could open an issue there to suggest adding it, or even file a PR. We're careful not to add too much to that library so it won't get too big.
@tulip sleet I would gladly file a PR. What are your thoughts of adding a Microphone class that has a magnitude() method and maybe a decibel() method if I can actually map the magnitude to a decibel level?
I wrote this for my pyboard and was thinking it should work on circuitpython boards: https://github.com/KipCrossing/Micropython-AD9833 . It might be useful for anyone wanting to generate waves better that what DAC's can.
@fmorton for the CPX library, we would probably just add a "sound_level" method or property. The microphone and the I2S sampling code is probably not good enough to get a real decibel level due to variations based on frequency. There's a very simple realtime filter which is fairly noisy.
go ahead and open an issue so we can discuss it; I think that's a good next step. Thanks.
I would like to extract the sound_level from the microphone (referred to as magnitude) using this source code: https://learn.adafruit.com/sensor-plotting-with-mu-and-circuitpython/sound for another...
great tnx
hm, micropython on fpgas
I'm using circuitpython on the Gemma M0 and trying to figure out what pin to use for the dotstar. Trying to turn it off completely so it's not glowing green while running my code.
Any ideas?
@velvet badger Here's the dotstar example code from the library bundle. Does this help? ```import time
import random
import board
import adafruit_dotstar as dotstar
On-board DotStar for boards including Gemma, Trinket, and ItsyBitsy
dots = dotstar.DotStar(board.APA102_SCK, board.APA102_MOSI, 1, brightness=0.2)
Using a DotStar Digital LED Strip with 30 LEDs connected to hardware SPI
dots = dotstar.DotStar(board.SCK, board.MOSI, 30, brightness=0.2)
Using a DotStar Digital LED Strip with 30 LEDs connected to digital pins
dots = dotstar.DotStar(board.D6, board.D5, 30, brightness=0.2)
HELPERS
a random color 0 -> 224
def random_color():
return random.randrange(0, 7) * 32
MAIN LOOP
n_dots = len(dots)
while True:
# Fill each dot with a random color
for dot in range(n_dots):
dots[dot] = (random_color(), random_color(), random_color())
time.sleep(.25)
I figured it out:
import adafruit_dotstar as dotstar
import board
dot = dotstar.DotStar(board.APA102_SCK, board.APA102_MOSI, 1, brightness=0.0, auto_write=False)
while True:
dot.fill(0)
dot.show()
Thanks, though!
So, I just put 4.0.0 alpha 5 on my Trinket M0 expecting to be able to use time.monotonic_ns() This is what I get in REPL:
Adafruit CircuitPython 4.0.0-alpha.5 on 2018-12-10; Adafruit Trinket M0 with samd21e18
>>> import time
>>> help(time)
object <module 'time'> is of type module
__name__ -- time
monotonic -- <function>
sleep -- <function>
struct_time -- <class 'struct_time'>
>>> time.monotonic_ns()
Traceback (most recent call last):
File "<stdin>", line 1, in <mod...
@velvet badger if you set auto_write=True then you can just issues the dot.fill(0) once outside any loop and the Dotstart will be off.
import board
dot = dotstar.DotStar(board.APA102_SCK, board.APA102_MOSI, 1, brightness=0.0, auto_write=True)
dot.fill(0)
or use dot[0]=0 instead of dot.fill(0)
BTW -- the setting for brightness will not matter in this usage.
We're only enabling time.monotonic_ns() on the Express builds. We need Python long integers for monotonic_ns() or else the values will wrap around after a few seconds. Unfortunately there's not enough room in the Trinket or Gemma builds for long integers (longints).
Ah, that's unfortunate to hear. Thank you for explaining.
I'm trying to recreate the pitch pipe example given on the adafruit site: https://learn.adafruit.com/perfect-pitch-machine/overview
Alright
There was a good handful of formatting issues etc but I got over that.
I found this thread on github regarding a similar issue- https://github.com/adafruit/Adafruit_CircuitPython_RTTTL/issues/8
this line causes an error under CP3.0 because of an API change. https://github.com/adafruit/Adafruit_CircuitPython_RTTTL/blob/master/adafruit_rtttl.py#L170 Adafruit CircuitPython 3.0.0-alpha.6-143-...
The part i'm having issues with is here:
length = SAMPLERATE // FREQUENCY # create length of sample
sine_wave = array.array("H", [0] * length)
for i in range(length):
sine_wave[i] = int(math.sin(math.pi * 2 * i / 18) *
(2 ** 15) + 2 ** 15)
sample = audioio.AudioOut(board.SPEAKER, sine_wave)
sample.frequency = SAMPLERATE
sample.play(loop=True) # Play the sample
time.sleep(pitchLength) # Play for length of pitchLength
sample.stop() # we tell the board to stop```
Particularly, sample = audioio.AudioOut(board.SPEAKER, sine_wave)
If you surround your code with three backticks ` on either side, it will format it as a codeblock
You can edit previous messages as well 😃
So what's the issue you're having with that bit of code?
Ok
We updated the API, so that's probably the issue.
Yeah that is the issue
Ok I was wondering about that. I'm running the most current API and libraries
Give me a minute, I'm sorting what it should look like.
We changed the audioio API.
@golden goblet Try this: ```python
if magnitude > blowThresshold: # any time we get a sound with a magnitude greater than the value of blowThresshold, trigger the current pitch (can be changed at top where it is defined)
length = SAMPLERATE // FREQUENCY # create length of sample
sine_wave = array.array("H", [0] * length) # create an array for a sine wave
for i in range(length):
sine_wave[i] = int(math.sin(math.pi * 2 * i / 18) * (2 ** 15) + 2 ** 15) # fill the array with values
sample = audioio.AudioOut(board.SPEAKER)
sine_wave = audioio.RawSample(sine_wave)
sample.sample_rate = SAMPLERATE
sample.play(loop=True) # Play the sample
time.sleep(pitchLength) # Play for length of pitchLength
sample.stop() # we tell the board to stop
pixels.show() # show the desired neopixel light up on board
You're welcome! Good luck! Here is where I got the updated code: https://circuitpython.readthedocs.io/en/latest/shared-bindings/audioio/RawSample.html#audioio.RawSample
change to use ringbuffer in py/ringbuf.h for uart io. keep DMA incoming byte and put it into fifo.
I made the following additional change : sine_wave = audioio.RawSample(sine_wave, sample_rate = SAMPLERATE) # sample.sample_rate = SAMPLERATE sample.play(sine_wave, loop=True) # Play the sample
Excellent!
Getting an additional error now when trying to play a second tone, DAC already in use
Working on that now.
You may need to deinit somewhere. Not sure. The code obviously worked at one point without the deinit, and I'm not sure how what we changed would affect needing to deinit the pin, but that's usually what fixes that.
Thank you 😃 added sample.deinit() and seems to be working perfectly!
Great job!
So... pca.deinit() doesn't work for PCA9685. Setting throttle = 0 on a continuous servo does not stop it. It goes forever, and the pins are never deinitialised. Presumably they will deinitialise if I hard reset the board, I will have to do that in a minute here, I've tested on all the pins, so they're all now continually moving the cont. rot. servo.
Tried pca.reset() as well since that's what deinit() calls and it didn't seem to change anything.
sounds like two things maybe. for throttle = 0 not stopping a continuous, what servo module are you using?
FS5103R
sry. meant library
I can unplug it and plug it back in and it keeps going, so it's definitely not deinitialising the pin.
Oh.. whatever was current as of ... looking
20191126
you've been refactoring that stuff? into servokit / motorkit?
Not exactly how ServoKit works, but yes, I'm using ServoKit. The behavior is the same using PCA9685 directly with the example in the repo.
Yes
doesn't throttle=0 just set the pwm to 1500us? the continuous rotation servo has a small trimer on the back to adjust it so that it stops at that signal
Throttle uses this: ```python
@property
def throttle(self):
"""How much power is being delivered to the motor. Values range from -1.0 (full
throttle reverse) to 1.0 (full throttle forwards.) 0 will stop the motor from
spinning."""
return self.fraction * 2 - 1
@throttle.setter
def throttle(self, value):
if value > 1.0 or value < -1.0:
raise ValueError("Throttle must be between -1.0 and 1.0")
if value is None:
raise ValueError("Continuous servos cannot spin freely")
self.fraction = (value + 1) / 2```
So I don't know if that's what it's doing.
looks like it sets it to 0.5 which by default should be 1500us
Ok... I don't really know servos so I don't know what that implies.
Does that imply it's doing what the code is telling it to?
ok, so a quick explanation on how a servo works
it gets a pwm signal at 50Hz and with changing duty cycle
usually the duty cycle can be from around 500µs to around 2500µs (the exact min and max vary between models and individual servos)
that's what I thought might be interfering was the min/max defaults.
at 1500µs (in the middle of the range) a regular servo will move to the center, and a continuous rotation servo will stop
ok
and even 1500 may not be a perfect stop - thus the trim pot
if you move it either way, a regular servo will move to that position, and a continuous rotation servo will move in that direction, the larger the deviation, the faster
ok
the continuous rotation servos have a screw at the back which you can use to set the "middle" point exactly
ok I see that
so just set it to 0 and then turn the screw so that it stops
were you expecting pca.deinit() to stop the servo?
I was trying whatever after it didn't work initially. Using deinit from the ContinuousServo class sets throttle = 0 so I tried that too.
ok - so this was all the same thing? you're just wondering why it didn't actually stop?
just needed to trim the servo
@yeyeto2788 Please file separate issues for strings that cannot be translated. That is the best way for us to keep track of them.
The translation files are updated by running make translate at the top level of circuitpython. It uses gettext to find strings wrapped in a translate() function. If I remember right, the version string doesn't work because it uses C preprocessing to create the string rather than printf.
Next year we can take a look at libraries. The bundle can preproces...
I think for built in servo I have throttle = None let it spin freely
ah ok
So None throws an error in that case.
kk
there are a couple of issues in the repo related to the spin freely thing
Wow. I thought maybe I hadn't saved some code I worked on ages ago, there's no file locally of it. Turns out I actually committed all my changes to a branch in git like I should always be doing. 😄
And GitHub doesn't support uploading .py files. Unexpected.
any reason why a custom samd51 CP build would work fine on windows but cause USB issues on OSX?
usb issues = CIRCUITPY presents but isn't accessible then OSX removes the drive
did you try storage.erase_filesystem() to reformat it?
yes on the pc, unable to reach the REPL on the mac
the mac is able to see the bootloader mode and handle uf2 files
is there a USB port on the Mac or are you using a USB-C -> regular USB adapter?
usb type A port no adapters
I'm thinking maybe clock issues but not sure why it would work on Windows. Would want to look at your board definition. Does a regular CPy board work fine on the Mac?
what version MacOS?
The mac has no trouble talking to feather m0 and itsybitsy boards. MacOS is Mojave I think?
Are there OS-specific calls I would need to make when building CP?
no, not at all, just narrowing the field of what to test (unfortunately my test Mac machine is now too old for Mojave)
#define MICROPY_HW_BOARD_NAME "SAM32v1e"
#define MICROPY_HW_MCU_NAME "samd51j20"
#define CIRCUITPY_MCU_FAMILY samd51
#define MICROPY_PORT_A (PORT_PA24 | PORT_PA25)
#define MICROPY_PORT_B (0)
#define MICROPY_PORT_C (0)
#define MICROPY_PORT_D (0)
#define AUTORESET_DELAY_MS 500
#define CIRCUITPY_INTERNAL_NVM_SIZE 0
#define BOARD_FLASH_SIZE (FLASH_SIZE - 0x4000 - CIRCUITPY_INTERNAL_NVM_SIZE)
#include "internal_flash.h"
#define BOARD_HAS_CRYSTAL 1
#define DEFAULT_I2C_BUS_SCL (&pin_PA04)
#define DEFAULT_I2C_BUS_SDA (&pin_PA07)
// #define DEFAULT_SPI_BUS_SCK (&pin_PB14)
// #define DEFAULT_SPI_BUS_MOSI (&pin_PB12)
// #define DEFAULT_SPI_BUS_MISO (&pin_PB13)
// #define DEFAULT_UART_BUS_RX (&pin_PB16)
// #define DEFAULT_UART_BUS_TX (&pin_PB17)
#define IGNORE_PIN_PA24 1
#define IGNORE_PIN_PA25 1
mpconfigboard.h for the board. Still hacked together but seemed to be working fine. no spi flash
is this off of 3.x or master?
we have had a number of USB fixes quite recently, so try to merge from master and make sure to git submodule sync and git submodule update.
will do. thank you so much @tulip sleet !
PS taught a holiday soldering workshop using samd21 ❄ boards running CP. it was a HIT
Thank you all so much for your hard work standing up this unique approach to microcontrollers!
@lime trellis Those are really neat!
also we haven't tested internal_flash in a while because we don't have any m4 boards that use it now.
@lime trellis woot!
@lime trellis Do you have a post about it anywhere?
your BOARD_FLASH_SIZE does not include a decrement for the size of the filesystem. See how it's defined for gemma and trinket, for example
both mpconfigboard.h and .mk
@idle owl some photos from the event: https://sites.google.com/stanford.edu/lab64-makerspace/holliday-party?authuser=0
@tulip sleet I will take a look. I think I modeled it after the feather m4 board definition
@lime trellis Would you be ok with us maybe doing a post about this using some of these images or adding it to our Python on Micrcontrollers newsletter?
yeah, that still has an SPI flash chip. I looked at the m4 definitions pre-SPI-flash (when we were using internal flash), but I think they may be wrong because they don't subtract 0x10000
or whatever the internal size is
@tulip sleet how do I gauge what to take off for the internal size?
you can make the size larger for the m4 because it has a lot more flash. The build will complain if you overflow, if that constant is right
@idle owl of course! it was for the Stanford EE dept's makerspace, Lab64. let me digup my github link for the snowflakes as well
excellent, I'll play with it and see what I come up with.
@lime trellis Thank you!
make sure mpconfigboard.mk points to the right .ld file (not the "external-flash" one)as well. Is this all checked in somewhere?
no I'm only working with it locally. The .mk does point to just the plain .ld file for the J20 variant of the M4
ok, that's good, this may not have anything to do with the usb problems, just checking for internal flash port issues
@idle owl https://github.com/maholli/snowflake for the snowflake and https://github.com/maholli/tutorials/tree/master/soldering 101 for the soldering the students worked through
see https://github.com/adafruit/circuitpython/blob/master/ports/atmel-samd/supervisor/internal_flash.h#L36 for m4 internal flash size, but it has to be consistent with the mpconfigboard.h and .ld files as well
@lime trellis double wow on that second link - awesome soldering images!
@tidal kiln thanks! I hope to have my rework & repair write-up out shortly that has even more soldering epiphanies 😃
they did SMT and reflow oven work also? nice!
yep! we managed to churn out 40+ boards
@lime trellis please make a PR with the board definition too!
@solar whale you just responded almost verbatim to what i was typing to that blinka thread. i thought i had double posted or something! 😅
Great minds think alike 😉 I hope you did not mind my jumping in.
nah. all good.
@solar whale i think it's dashes, not underscores -> adafruit_circuitpython_si7021
actually -- both seem to work
huh....
pip3 is mysterious
indeed
not sure if you can mix/match, bit it seems to forgive using underscores instead of dashes.
but you are correct -- dashes are probably better since that is how it gets installed and you can mix them !!
I edited the post -- no need to add more confusion for this user...
cool. thanks.
@slender iron do you mean a PR for ports/atmel-samd/boards? It's not polished, I wouldn't want folks to accidentally use it as a reference
I'd be honored! haha it's just a samd51 with an esp32 & sd card:
"just"
Is a 5V 2A power supply enough to run a micro servo and a continuous rotation micro servo? By "run" I mean test them for a second to make sure the code works.
@idle owl that should be absolutely fine\
@tidal kiln @solar whale I can add anecdotal evidence: using underscores with pypi.org, the server automatically changes them to hyphens and updates the uri.
@idle owl yep. plenty.
@solar whale PR 1402 above fixes from @gentle bronze fixes .in_waiting. Note that you should still use a slower baud rate, because when BLE is in use it will lock out UART reception often for short periods (it runs at a higher prio)
@tulip sleet just updated -- will try it soon
@tulip sleet @gentle bronze great improvement with the UART in terms of the loss of data but I'm not convinced .in_waiting is working properly -- still need to do more testing. @gentle bronze did you specifically test the ,.in_waiting call?
i specifically tested it, using an FTDI cable and typing at it, checking .in_waiting. typed nothing, .in_waiting was 0. typed 7 chars, went up to 7, etc.
set the baud rate way down and see what happens
OK thanks @tulip sleet must be something I am doing wrong -- great
the hardware fifo is only a few chars, so things could get lost if interrupts are blocked fora while
OK -- lots of places for me to check -- this is a big improvement!!
great! thanks @gentle bronze !
@tidal kiln @tulip sleet thanks
@tulip sleet must have been something in the way I am testing .in_waiting -- I just went ahead and ran a test program to use the UART on the particle board and it is working (even at 1152K -- I'm not usinb BLE right now) still lots to do, but this is great -- much appreciated @gentle bronze
I just earned my first Sparky! 😄
what died?
PWM/Servo FeatherWing. Not sure what popped, but it's definitely something on the Wing. Pro tip: unplug the power before removing the barrel jack.
hmm, there isn't much there, just the pca9685 and a couple of passives
yah. weird. what else was happening? were you just removing power?
I was unscrewing the barrel jack wiring from the screw terminal. But I failed to remove power before doing it.
Loud pop, smell of smoke. Feather seems fine.
According to my order history, I do have another one somewhere. Whether I can find it is another thing altogether.
I may have gifted it.
i see...the feather has screw terminals for power input...you were using one of those barrel adapters...
Yes
sounds like you shorted power with the screwdriver or something
is the 9685 no longer functional? Or maybe it's the power supply that got shorted
I think the wires got loose and shorted.
I could smell something on the Wing
I'll reattach it and try it though
and you were using a 2A supply...ouch
ok then...OUCH
Bonjour parler vous français ?
un petit
there's reverse polarity protection on the board, maybe you sparked that?
il y a longtemps
Ok
@jerryneedell wanna try this?
Je suis bloquer je reussi pas à configurer mon the launc deck si quelle qu’un peux m’aider
quelle guide?
@tidal kiln No idea! That was rather anticlimactic then. I immediately removed the board thinking I had smoked it.
je l'ai trouve
Je l’es u dans la Adabox
oui continuez ; est-ce qu'il marche un peu?
@lime trellis that'll work nicely with our ESP wifi co-processor work, how do you ahve the ESP wired?
Oui tous marche mes je c’est pas configuré les touche
Vous inquiéter pas je vais chercher es trouver
@meager fog the ESP speaks to the M4 via uart. The M4 acts as a uart bridge and enables the user to interact with both via USB
@idle owl did the smoke come from there?
I have no idea,. I could only smell it.
The M4 also has control of the ESP JTAG and DTR/RST pins
on doit changer le keymap dictionnaire: les valeurs pour chaque clef
@lime trellis yah thats good, check out https://github.com/adafruit/Adafruit_CircuitPython_espatcommands
its only been tested w/ESP8266 but ESP32 is similar - @median aurora is also working on similar stuff, but with nrf5840+ESP32
Ahhh!!! that's what I've been looking for!!! thank you @meager fog that saves me time
currently can still program ESP by just pointing esptool.py to the port and putting the M4 into "bridge mode"
if you can try it with ESP32, and any PR's would be super appreciated
yah this is easier, drag n drop the .bin file to the file sys
then run the command - its not fast but its ok
yes absolutely
awesome - again - hvaen't tried it with ESP32
will let you know how it goes!
i ran esptool --no-stub --trace to get the data trace and then implemented
see the readme for links
awesome - the current demo is a simple webpage grabber, but i'd like to properly mimic 'socket' so its portable
may not get to that soon
I'll see what I can do 😃
awesome
Works great on my particle argon!
I can communicate well to an external ESP32 at 115200 baud. And I can talk to the onboard ERC32 even at 921600!! Still working on using the AT commands. Works to external ESP32. Not yet to internal but it’s early!!!
(╯°□°)╯︵ ┻━┻
There's something up with that servo.
I thought the shield was wonky but I tried a different continuous rotation servo and it's fine.
¯_(ツ)_/¯
wonky even before the spark event?
Wasn't connected when the spark event happened
I had already moved it to the other board. And was confused why nothing happened. And then remembered I needed to transfer the power jack.
etc.
what's the wonkyness?
Now if I connect it to the shield, and run the same code (forward, backward, 0), it goes one direction and doesn't stop or change direction or change speed. I tried rotating the pot a bunch both directions and nothing changed.
does seem odd
could be the signal, but if it's working with another servo, then probably not
using same channel on the bonnet?
I tried multiple channels, and it was FeatherWing vs Shield.
and this one works on one of the channels that had the weird behavior on the other servo.
@meager fog very encouraging -- talking to the onboard ERC32 on a particle Argon ```Press any key to enter the REPL. Use CTRL-D to reload.
Adafruit CircuitPython 4.0.0-alpha.5-26-g5e4b3a8fb on 2018-12-13; Particle Argon with nRF52840
import uart_comm
b'ets Jun 8 2016 00:22:57\r\n'
b'\r\n'
b'rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)\r\n'
b'configsip: 0, SPIWP:0xee\r\n'
b'clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00\r\n'
b'mode:DIO, clock div:2\r\n'
b'load:0x3fff0018,len:4\r\n'
b'load:0x3fff001c,len:756\r\n'
b'load:0x40078000,len:4892\r\n'
b'load:0x40080000,len:6476\r\n'
b'entry 0x400802ec\r\n'
b''
AT
b'AT\r\n'
b'\r\n'
b'OK\r\n'
b''
AT+GMR
b'AT+GMR\r\n'
b'AT version:1.3.0.0-dev(89b98b0 - Sep 29 2018 05:17:42)\r\n'
b'SDK version:v3.2-dev-1176-g6818c21b0\r\n'
b'0.0.5\r\n'
b'OK\r\n'
woo
that is very good!
nice work
what do you think about doing a socket() interface?
im torn, keep it simple as is, or implement a known interface
pros: umqtt may just work
cons: may not, extra work
I'm open to all approaches -- simple first! That would be very nice.
Omg, it's ladyada
and try more stuff like SSL, POST
yes -- small steps -- gotta run -- I'll update you tomorrow.
@meager fog I hope the tacos were tasty 😋
@tulip sleet @solar whale np, I am glad that help 😄
@slender iron I pinged you on the 34x PR in case you didn't see it. No rush.
I want to code in C++, not Python. While this indicates that the modules are there it doesn't help me use them. I am happy that they are there.
I need access registers and functionality. I didn't buy this to use it as an interpreted toy.
Thank you in advance for your understanding and attention to this mater.
docs/drivers.rst has a great list of drivers, but to update this requires changes to https://github.com/adafruit/circuitpython. Perhaps this content could be generated by https://github.com/adafruit/Adafruit_CircuitPython_Bundle, and there could just be a link from the CircuitPython documentation files.
@meager fog brief update on espatcommands testing -- using and external ESP8266 or ESP32 the current code "bitcoinprice test" is working well on the M4 and nrf (pca10056, particle argon and xenon) For some reason the basic espatcommad_simpletest.py is not working properly on the nrf boards (something in the reset sequence) but since the bitcoin test works fine, I expect it is a something simple -- just haven't found it yet. The onboard ESP32 on the argon is proving to be more challenging. I can talk to it with a simple uart comm program but it turns out the firmware installed does not support all the AT commands expected 😦 . I think it will be worthwhile to explore uploading a new standard AT firmware it and I'll look into that this weekend. Overall - the espatcommand are working great on the SAMD51 and the NRF52840 woohoo!!
@tulip sleet FYI -- I tried enabling a BLE advertisement while using the NRF UART at 115200 baud.. It ran OK for awhile then I received a really garbled tranmission on the UART -- as you predicted. Will have to think about how to handle it - hopefully just with try/except ...
Travis is failing to build due to an issue with one of the build's download links. Dan will put a fix in eventually. Until then, this PR is approved but waiting on the Travis fix.
@tulip sleet after our discussion about the in_waiting yesterday, I went back to an older version on the nrf and I found that I actually could see in_waiting = 1 sometimes, but never > 1. Now it works as expected.
@slender iron Do you have time to do a voice chat about the BoardTest repo/PR?
Can we do interrupts in CP?
if only
@idle owl in a bit. eating breakfast now
Ok thank you
@craggy harbor no, circuitpython isn't realtime
you can use interrupts if you add a c module to circuitpython
@solar whale yes, in the previous implementation, .in_waiting was always 0 (no unread chars) or 1 (at least 1 unread char). The way it was implemented, it only did one char of buffering in software. The new implementation reads all the waiting characters from the hardware FIFO buffer and stores them in a software buffer
@solar whale sounds good, yeah i would just update it with esp's firmware, then you can adjust baudrate if ya like
@idle owl ready when you are
@slender iron Ok let's do it
adafruit_boardtest
F: 1, 0: No module named adafruit_boardtest.py (fatal)
The command "pylint adafruit_boardtest.py" exited with 1.```
- pylint adafruit_boardtest/*.py```
autodoc_mock_imports = ["supervisor", "storage", "analogio", "boardtest_gpio"]
.. image:: https://github.com/adafruit/Adafruit_CircuitPython_HCSR04/blob/master/docs/hcsr04.jpg
.. image:: https://github.com/adafruit/Adafruit_CircuitPython_BoardTest/blob/master/docs/test_jig.png
:alt: Test jig Fritzing diagram```
Line 20 in README.rst: Alternatively, tests can be imported as modules. Copy the desired test file to CIRCUITPYTHON device drive and import the test in your own code. Each test can be run with the ``run_test(pins)`` function.
Line 62 in README.rst:```To use each test, import the library, find the pins available on your board, and call boardtest_<test name>.run_test(pins). To run the GPIO test, for example:
.. automodule:: adafruit_boardtest.boardtest_gpio
:members:
.. automodule:: adafruit_boardtest.boardtest_i2c
:members:
.. automodule:: adafruit_boardtest.boardtest_led
:members:
.. automodule:: adafruit_boardtest.boardtest_sd
:members:
.. automodule:: adafruit_boardtest.boardtest_sd_cd
:members:
.. automodule:: adafruit_boardtest.boardtest_spi
:members:
.. automodule:: adafruit_boardtest.boardtest_uart
:members:
.. automodule:: adafruit_boardtest.boardtest_voltage_monitor
:members:
adafruit_boardtest.boardtest_i2c
"boardtest_led", "boardtest_sd", "boardtest_sd_cd", "boardtest_spi",
"boardtest_uart", "boardtest_voltage_monitor"]```
import adafruit_boardtest.boardtest_led
from adafruit_featherwing import joy_featherwing
from adafruit_motor import motor
result = boardtest_i2c.run_test(pins, sda_pin=I2C_SDA_PIN_NAME, scl_pin=I2C_SCL_PIN_NAME)
.idea
__pycache__
_build
*.pyc
.env
build*
bundles
*.DS_Store
.eggs
dist
**/*.egg-info```
@tulip sleet is there some difference in the uart implementation on the nrf52840 vs the samdd51 taht would impace cahnging the baudrate "on the fly"? on the nrf I can simply set uart.baudrate =newbaudrate and it seems to work fine. I'm not having the same success with the SAMD51 -- just curious if there is a know ndifference in how the baudrate has to be changed. If it is not obvious to you, I'm happy to dig into it. Don't spent any time on it.
it's basically completely different at the chip-specific level, so I can easily believe there might be an issue on the atmel chips. Feel free to file an issue. If you can test on SAMD21 as well I'd be grateful.
ok - the samd51 appears to silently ignore the uart.baudrate command . I'll do some more checking then file an issue. Thanks -- not a big problem. I was just trying to be clever 😉
@tulip sleet ignore what I said for now --- likely user error
@tulip sleet I was not giving the uart enough time to send is previous command through the uart before changing the baudrate underneath it! May be a subtle timing difference between SAMD51 and NRF when doing this.. all good now
sounds good
@hchhaya Is this still a problem? We've swapped USB stacks in 4.x.
@umbral dagger the "memory game" is very nice -- Thanks!
@idle owl Weird pylint question for you! I have a for loop (for i in range(NUM_TESTS):) where I perform some action NUM_TESTS number of times, but I don't actually use the i variable. Pylint is giving me: Unused variable 'i' (unused-variable). Any idea how to get rid of the i?
Yep! That's exactly the one I was waiting for you to get to.
for _ in range(NUM_TESTS): when i isn't used again later.
lol 😛
I saw that as a possibility on the Googles, but doesn't _ refer to something in the interactive session, which could be a conflict in REPL?
(well, it won't be code-breaking in this case_)
Not that I'm aware of? But that's stretching my knowledge. I believe it also refers to a recent item in the REPL, but maybe in the for loop it interprets it correctly? Sounds like something that needs to be tested.
Here's what I was reading: https://stackoverflow.com/questions/818828/is-it-possible-to-implement-a-python-for-range-loop-without-an-iterator-variable
but pylint seems to accept it, and even if it refers to something from REPL, it's unused, so I don't think it'll break anythin
*g
I've used it a bunch and I've never run into issues
But I can see where the issue may arise
from what i remember, _ is just treated as a "throw-away" variable in the scope.
That's what it seems like, but it seems odd to use a throwaway variable that has another meaning somewhere else. I dont' think there's any conflict here, though.
I don't think so either.
wrt to the REPL craziness, in the for _ in...:pass example from that SO page, i imagine that the explicit assignment in a REPL session causes it remain until the REPL session dies. /speculation
looks like it has local scope, so probably ok:
>>> 2 + 2
4
>>> print(_)
4
>>> for _ in range(10):
... pass
...
>>> _
9
>>> def foo():
... for _ in range(42):
... pass
...
>>> foo()
>>> _
9
>>>
Aaaah....good test, @tidal kiln that helps 😃
So as long as we use it within a function, we should be clear of not overwriting it?
I can support this, since it moves driver/helper aggregation closer to the "source". My overall thoughts are best laid out in pro/con fashion:
Positives
- Updates to the RTD driver page can be more seamless. When new libraries are added to the bundle, updating
drivers.rstis [hopefully] included with the PR. - For those only working with libraries, it doesn't require downloading the large[r]
circuitpythonrepo locally.
Negatives
- Additional RTD instance to maintain (ki...
@fathom lava i'll be interested to see if pylint complains afterwards about the use of range vs enumerate. 😆
for _ in range(42):
pass
class Foo:
def __init__(self):
for _ in range(23):
pass
then in REPL....
>>> 2 + 2
4
>>> _
4
>>> import foo
>>> _
4
>>> f = foo.Foo()
>>> _
4
>>>
seems like
@fathom lava There is a point at which you make your case for something Pylint complains about and we disable it in-line. So if you reach that point, let me know and we can discuss it.
i personally have just reached that point and unilaterally told pylint to go pound sand about 15 times today.
it's a useful tool, but if you're making your code observably more complex / harder to understand in order to make it happy, it's probably ok to go the other direction.
Hahahaha...sounds good 😄
@idle owl Next one for you! boardtest_suite.py:67:0: E0401: Unable to import 'board' (import-error) for the test suite in the examples folder
@fathom lava I'll be back in a few minutes to help!
cool, thanks ^_^
Hi
I have a neotrellis M4 and 2 neotrellis Seesaw and I want to make one big keypad
So I looked at the code of the library for both type of card
It look's quite different...
ie : on the seesaw board, pressed/released key are managed thru interrupt and on M4 board the user only have a list of pressed keys
any plan about a common approach ?
@fathom lava Where are you getting that one? I don't see it on Travis and I'm not getting it locally.
Ok, then I'm guessing it's a local issue. The way CircuitPython works, it has issues importing because you're not running CircuitPython from your machine.
That's what I figured...so just try to push it?
Locally I have ```pylint --disable=invalid-name examples/boardtest_suite.py
Your code has been rated at 10.00/10 (previous run: 9.14/10, +0.86)```
Yep!
That's kinda odd, because I definitely had some non-capitalized global variables that mine didn't like
well, lemme test it on my board (since variables got renamed) and see if things still run OK, then I'll commit
See the pylint command I ran? with --disable=invalid-name ... that's not everything that it ignores with examples, but it's usually the one that is most prevalent for me. So if I want to see what it'll look like on Travis, I'll run it with that. But only for examples 😃
Otherwise I got this: ```7558 kattni@robocrepe:Adafruit_CircuitPython_BoardTest (venvpypi) [60m master %= 7dfc911]$ pylint examples/boardtest_suite.py
************* Module boardtest_suite
examples/boardtest_suite.py:87:0: C0103: Constant name "test_results" doesn't conform to '(([A-Z_][A-Z0-9_])|(.*))$' pattern (invalid-name)
examples/boardtest_suite.py:90:0: C0103: Constant name "pins_tested" doesn't conform to '(([A-Z_][A-Z0-9_])|(__.))$' pattern (invalid-name)
examples/boardtest_suite.py:138:0: C0103: Constant name "pins" doesn't conform to '(([A-Z_][A-Z0-9_]*)|(.__))$' pattern (invalid-name)
examples/boardtest_suite.py:149:0: C0103: Constant name "result" doesn't conform to '(([A-Z_][A-Z0-9_])|(.*))$' pattern (invalid-name)
examples/boardtest_suite.py:159:0: C0103: Constant name "result" doesn't conform to '(([A-Z_][A-Z0-9_])|(__.))$' pattern (invalid-name)
examples/boardtest_suite.py:169:0: C0103: Constant name "result" doesn't conform to '(([A-Z_][A-Z0-9_]*)|(.__))$' pattern (invalid-name)
examples/boardtest_suite.py:179:0: C0103: Constant name "result" doesn't conform to '(([A-Z_][A-Z0-9_])|(.*))$' pattern (invalid-name)
examples/boardtest_suite.py:189:0: C0103: Constant name "result" doesn't conform to '(([A-Z_][A-Z0-9_])|(__.))$' pattern (invalid-name)
examples/boardtest_suite.py:203:0: C0103: Constant name "result" doesn't conform to '(([A-Z_][A-Z0-9_]*)|(.__))$' pattern (invalid-name)
examples/boardtest_suite.py:215:0: C0103: Constant name "num_spaces" doesn't conform to '(([A-Z_][A-Z0-9_])|(.*))$' pattern (invalid-name)
examples/boardtest_suite.py:229:0: C0103: Constant name "tested" doesn't conform to '(([A-Z_][A-Z0-9_])|(__.))$' pattern (invalid-name)
examples/boardtest_suite.py:233:0: C0103: Constant name "not_tested" doesn't conform to '(([A-Z_][A-Z0-9_]*)|(.*__))$' pattern (invalid-name)
Your code has been rated at 9.14/10```
Which is probably what you're seeing.
ooh, got it. So that will ignore some of the naming things because we're using boardtest_suite as a script
Example, but yes
@fathom lava Ok, down to 1 issue!
I think that one is going to be a disable situation.
As long as UART does have that in it, it's simply that Pylint can't connect the two.
We've had to deal with this one before.
Cool...what do I need to do?
Here's where I got that method: https://circuitpython.readthedocs.io/en/3.x/shared-bindings/busio/UART.html?highlight=uart
Alright, on that line, I think on the same line, but sometimes it's finicky put # pylint: disable=no-member so it should read uart.reset_input_buffer() # pylint: disable=no-member
If that doesn't work, we put it above the line. But I ideally it will be happy on the same line.
Worked on the same line for me.
@fathom lava Hooray!
I'll merge it here in a bit. Then we can get it released and added to the Bundle. 😃
woot woot...thank you!
I'll get it merged tonight but the rest might have to wait, I'm heading to Chicago tomorrow and I'm trying to get everything set for that.
No worries. Thank you for all your help!
And it looks like there may be an issue with authenticating to PyPI from repos that began their builds on travis-ci.com vs those that started on .org and went to .com. That's the only common thread between these two libraries that are failing with the same error. Bleh.
@fathom lava Ah bugger. Can you submit one more PR? It's a super simple one. Change the travis-ci.org build badge in the README to travis-ci.com. @raven canopy We need to update cookiecutter.
Alright the docs are setup, I did an initial release.
Yah sometimes it seems silly but inevitably the one time we don't do a PR, and we commit directly, something breaks and the whole repo fails Travis. It's better to catch it and be sure even with simple stuff.
Alright, PR opened
@slender iron ServoKit failed to deploy to PyPI. So I now suspect some issue with travis-ci.com though I don't know how it would be related. I looked into it when MotorKit failed to deploy and couldn't find anything that made sense. Either way, we have to figure it out eventually. Brennen and I will be looking into it presumably, but I wanted you to know so when you get back if we haven't fixed it, you can help.
@fathom lava Thank you!
So im playing with my adabox 10. Is there a keycode in the HID library for left and right clicks? Im trying to set up a button as a right click for use in Fusion when on my surface pro and using my pen
@idle owl do these repos use the secure password in the travis yaml?
is the deploy error authentication related?
Yes
I bet we need to redo the encrypt part of it
I tried redoing the auth about 10 different ways on ServoKit to no avail.
Including with a different endpoint set locally in travis
did you give travis a flag for the com version?
Yeah. It failed with setting the flag, but I changed the default to .com and reencrypted it
It didn't run with the flag
travis --com encrypt SOMEVAR="secretvalue" is what I'm thinking of
Ok
the --com bit
Sommersoft is the one who suggested the flag.
thats my only guess we should email if that isn't working
Ok, thank you 😃
@charred blaze https://learn.adafruit.com/circuitpython-essentials/circuitpython-hid-keyboard-and-mouse#circuitpython-mouse-emulator-15-6
mouse.click(mouse.RIGHT_BUTTON)
Ohhhhhhhhh!! Thank you @tidal kiln !!!!!
I think i was trying to google the wrong things
keep in mind there are two messages - a press and release. click does both. but depending on what you are trying to do, you may want to use press and release separately
Hmmmmm ok. I was trying to use @split ocean 's launch deck code and assign right click to one of the buttons on the trellis
you probably want click
Wow the docs failed pretty spectacularly on BoardTest. Issues with the .png file. I'll deal with that later.
The docs work if you click the link, but the build is failing.
So it's ok for now because there are docs.
So like, "FIERY EXPLOSION" kinda of spectacular fail? or melty goopy puddle kind of spectacular fail?
It seemed more like fiery explosion because it was big. But really it was small, failed on one little thing. Failed big on something little.
@idle owl pypi still not happy? 😦 ⚔
Hey @split ocean So i added a line like this to the launch deck program you made for the trellis:
(1,1): (0x110000, KEY, (mouse.RIGHT_BUTTON)),
The program actually runs just fine until I press that specific button. Would you have any advice for making that work?
Ok ive made a couple of adjustments to the keymap i was trying to make. this is now the command I have: (1,1): (0x110000, MOUSE, mouse.click(Mouse.RIGHT_BUTTON)),
I did add MOUSE as a third command type. When i save code.py the code runs just fine until I press the specific button on the trellis to run the command then it crashes upon press
@raven canopy Correct.
Why I oughta! 😄
yummy steak time! @idle owl i plan on starting the travis-ci.com for cookiecutter and patching steps later tonight.
Woooooo hoooo!!! I got the mouse clicks workings
@raven canopy Thank you.
While I'm super happy to see another CP Helper, I have to say I'm a little disappointed that @charred blaze's name isn't, well, azure anymore.
Lol you mean cuz my name isn't blue??
Oh geez. I just realized I got changed to a CP helper. I don't know what I'm doing lol
Don't worry, I have that tag too, and I'm just as clueless
I just sit here and make jokes and ask random questions. I mean, all I did was add mouse clicks to John's launch deck code for the trellis m4. Oh, and I sit in boxes all cute and stuff
@charred blaze We added you so you'll get tagged reminders when we do the weekly meetings which you are absolutely welcome to join. That's mostly what the tag is for. It doesn't obligate you to know anything in particular or do anything specific. Sometimes you'll get CircuitPython related info as well.
Ahhh ok!!!
I have a question related to the SPI Flash chip drivers on Circuit Python. I came across this Circuit Python board and I am trying to build my own: https://blog.adafruit.com/2018/12/06/mini-sam-development-board-by-bwshockley-oshpark-microchipmakes-runs-circuitpython/
Ok adafruit needs to carry those please!!! I don't have the hands to make one myself!
@charred blaze But do you have the paws?
I couldn't find an SPI flash chip mentioned in the BoM (W25Q16JVUXIM). So, I found a flash chip that could be considered a drop-in replacement.
My question: Can I expect the CIrcuit Python drivers for the SPI flash chip to work with the drop in replacement?
"my paws" oh hecc somebody else says that? xD
Well Andon asked if I had the paws for it lol
very good point.
@tidal verge Depends on the chip.
Some of them will work just fine using the same programming, others not so much
sings "Blue" by Eiffel 65
I can't really poke further than that, I'm not super familiar with it
Well, I'm off to bed. Gotta be up at 4 am for work. Night everyone.
Nini!
@tidal verge we have a general scheme for supporting various flash chips, so take a look at the settings file for them. There are provisions for slightly different commands, timings, etc.
we look at the flash id and then look it up in a table of settings
Flash ID refers to the vendor id?
yes
Got it. Thanks.
circuitpython/supervisor/shared/external_flash/devices.h
thanks.. it answered my question!
I now have to verify whether my choice of flash chip is supported or just use one of those chips
worth comparing the datasheets in detail
yup
I spent some time on this because I wanted to shrink the nrf52832 build.
The key fix is to change https://github.com/adafruit/circuitpython/blob/master/ports/nrf/device/nrf52/startup_nrf52840.c#L119
const func __Vectors[] __attribute__ ((section(".isr_vector"))) = {
to
const func __Vectors[] __attribute__ ((used, section(".isr_vector"))) = {
This forces the SD-compatible isr_vector section to be marked as used, and then that pulls in everything else. There may be...
@dhalbert Have you seen this discussion https://bugs.launchpad.net/gcc-arm-embedded/+bug/1747966 -- not sure if it is completely relevant -- at the end there are some suggestions about re-ordering object file link order.
@jerryneedell I did see that discussion, and duplicated the ordering technique. It did not fix the "empty firmware" issue, but once I discovered adding used to the .isr_vector, emphasized here: https://community.nxp.com/thread/425419#comment-785386, that fixed the "empty" problem and then brought up the "bad code" problem.
This forces the SD-compatible
.isr_vectorsection to be marked as used, and then that pulls in everything else. There may be a few other things that then crop up that need to get changed to get it to compile, I think. I was also revising the Makefile a bit to add some compiler warnings that weren't there before, so I'm not sure what was provoked by my changes.
Ah, that makes sense, good find.
I'll try it, see if I get the same problem of suspiciously large code with gcc 8.2.0.
Looks like i do:
/usr/lib/gcc/arm-none-eabi/8.2.0/../../../../arm-none-eabi/bin/ld: build-pca10059/firmware.elf section `.text' will not fit in region `FLASH_TEXT'
/usr/lib/gcc/arm-none-eabi/8.2.0/../../../../arm-none-eabi/bin/ld: region `FLASH_TEXT' overflowed by 3009072 bytes
@solar whale absolutely no pressure on my part but im around today
i was planning on doing graphics rather than wifi stuff, but can noodle at wifi as well 😃
for example, we could get esp32 uploading working if ya like
I'v been trying to get get started -- 2 issues -- I can't get a particle board ( likely nrf issue) to even upload to an esp8266.. I suppose we can get it working on an M4 first then worry about nrf
also , the conbined .bin for esp32 is 4Mbytes (as built by them -- factory.bin)
I think so -- may need to do it in pieces. still ugly
I have a few questions about miniesptool
ok lets do it piece by piece
wanna start with ESP32 upload via M4?
OR i could try to find a particle and then make a board definition for it in arduino
then you could turn the particle into a usb-serial converter
lemme see if i have a particle board
ok i dont actually
so... i cant help ya ther :/
np -- lets start wil m4
okok
Good day Lady Ada!
I'm hooking up ERC32 to M4 now
k me too
o k connected -- I can run the bitcoin test through it
wait i think i found here
Downloads: SDK & Demos, APKs, Tools and Documents for Espressif Systems products and solutions
you're using ESP32-WROOM-32 AT Bin V1.1.2?
yes, but I rebuilt it
no changes -- it was just easier to manage
ok can you tos sme your combined file?
easier to just type make flash
we can strip 0xff's
I loaded it in pieces -- but I build the combined -- I should test it amd make sure it works
i could also just upload the release
yup
ok - FYI here is the way they load the pieces ```--flash_mode dio --flash_freq 40m --flash_size detect 0x10000 ota_data_initial.bin 0x1000 bootloader/bootloader.bin 0x20000 at_customize.bin 0xf000 phy_init_data.bin 0x100000 esp-at.bin 0x8000 partitions_at.bin
yah
you can read it back with
/esptool.exe --chip esp32 --port COM98 --baud 921600 --before default_reset --after hard_reset read_flash 0x0 0x3FFFF esp32out.bin
(i think)
hold on thats not complete
ooh -- good idea
esptool.exe --chip esp32 --port COM98 --baud 921600 --before default_reset --after hard_reset read_flash 0x0 0x3FFFFF Desktop/esp32out.bin
needed more F's - now its 4MB
what board are you using to wire the esp32?
i mean, the esp 😃
feather huzzah
ok cool me too
try this
it worries me that just blink is 1.3mb
hopefully AT wont add too much more
i guess the particle has 4mb flash
o k -- waht command do you use to upload this?
Giant blink.
esptool.exe --chip esp32 --port COM98 --baud 921600 --before default_reset --after hard_reset write_flash 0x0 Desktop/pin13blink.bin
next ill try with esptool.py (TOTALLY DIFFERENT THAN esptool.exe OF COURSE)
I am using esptool.py
yeah welcome to esplife
ok good now we will do that within python
the only thing is i dont think i brought out hte programming pins on the esp32 feather
i have a different breakout with gpio 0
what is this 12 - This is GPIO #12 and also an analog input A11 on ADC #2. This pin has a pull-down resistor built into it, we recommend using it as an output only, or making sure that the pull-down is not affected during boot.
different boot thing
gpio 0 is what is toggled to start the bootloader
ok this worked, just took like a minute esptool.py --no-stub -t --chip auto --port /dev/ttyS6 write_flash 0 ../pin13blink.bin
i will test w/my breakout. if you have some other esp32 dev board it may have gpio0
the only ones if have are 2 huzzahs and a few particle argons
:/ how is your solderin?
ok -- I have a huzzah w/o headers on it yet -- should be able to tack a wire on it -- hard with the headers on
id go for the spot on the transistor
i think theres more suface area
but yah not easy - wasnt designed for this
ill do it too so i can mimic what you're doing
not sure I follow where you are going to solder
oh wait yknow this is totally not going to work at all
the RX/TX pins are also not exposed
so theres a lot of soldering to do
?? not just Tx/RX on the headers?
nope thats the hardware serial, not the rom seiral
you could do it but you'd have to solder to those pads too!
are they available on the breakouts?
this has em https://www.adafruit.com/product/3269
(i think)
did you get nrf52->esp8266 uploading going?
k im not sure what a good next step is for ya
if you want you can try soldering lil wires
it might work
i can get esp32 working on m4 and then get a feather nrf52 and see whats up there
I can try putting wires on those pads -- just need 3 -- gpio0 , tx, rx.. I think I'll just try going to the pads on the module
hmm -- not sure what I said --- setting up my soldering station -- need to switch to a smaller tip
ok im gonig to try and get my breakout to sync..ping if u need somethin
thanks -- good luck!
GPIO0, I'd be tempted to solder some wire-wrap wire into the via.
slow goin' 😃
this is M4 to esp32? so I'll use these 3 wires and I can try it as well. are you jsut rying the miniesptoo to sync?
yah i have m4 to esp32 - im using an espressif devboard with all the pins broken out
im just working on syncing now
ESP mini prog
Resetting
['0xc0', '0x0', '0x8', '0x24', '0x0', '0x0', '0x0', '0x0', '0x0', '0x7', '0x7', '0x12', '0x20', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0xc0']
Writing: bytearray(b'\xc0\x00\x08$\x00\x00\x00\x00\x00\x07\x07\x12 UUUUUUUUUUUUU UUUUUUUUUUUUUUUUUUU\xc0')
['0xc0', '0x0', '0x8', '0x24', '0x0', '0x0', '0x0', '0x0', '0x0', '0x7', '0x7', '0x12', '0x20', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0xc0']
Writing: bytearray(b'\xc0\x00\x08$\x00\x00\x00\x00\x00\x07\x07\x12 UUUUUUUUUUUUU UUUUUUUUUUUUUUUUUUU\xc0')
Packet: ['0xc0', '0x1', '0x8', '0x4', '0x0', '0x7', '0x12', '0x20', '0x55', '0x0 ', '0x0', '0xc0', '0x12', '0xc0']
Reading: bytearray(b'\xc0\x01\x08\x04\x00\x07\x12 U\x00\x00\xc0\x12\xc0')
Response: ['0x0', '0x0', '0xc0', '0x12'] Register: ['0x7', '0x12', '0x20', '0x55 ']
getting a response but my code is probably confused 😃
I think I'm wired up. let me know if you want me to try your code
getting close, im getting packets
header reset is right
good -- don't want to push my luck adding wires!
yeah
sorry back, ok i got it to detect its an ESP32 too
yeah RX/TX, GPIO0 to D2, RESET to D3
ok -- i have D5/D6 but should eb OK -- want me to try your code?
np
I was able to see som stuff after a reset using my comm program - so it does communicat -- at least RX
ok i pushed out miniesptool
ok
make sure debug is on, use 115200 baud
😦 ```>>> import esp32
ESP mini prog
Resetting
['0xc0', '0x0', '0x8', '0x24', '0x0', '0x0', '0x0', '0x0', '0x0', '0x7', '0x7', '0x12', '0x20', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0xc0']
Writing: bytearray(b'\xc0\x00\x08$\x00\x00\x00\x00\x00\x07\x07\x12 UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU\xc0')
['0xc0', '0x0', '0x8', '0x24', '0x0', '0x0', '0x0', '0x0', '0x0', '0x7', '0x7', '0x12', '0x20', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0xc0']
Writing: bytearray(b'\xc0\x00\x08$\x00\x00\x00\x00\x00\x07\x07\x12 UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU\xc0')
['0xc0', '0x0', '0x8', '0x24', '0x0', '0x0', '0x0', '0x0', '0x0', '0x7', '0x7', '0x12', '0x20', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0x55', '0xc0']
Writing: bytearray(b'\xc0\x00\x08$\x00\x00\x00\x00\x00\x07\x07\x12 UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU\xc0')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "esp32.py", line 18, in <module>
File "adafruit_miniesptool.py", line 257, in sync
RuntimeError: Couldn't sync to ESP
just ran the simpletest
what M4 are you using?
OK -- BTW -- I am confused by how GPIO0 is set -- should it be high or low -- I jsut see it getting toggled in the code.
trying in the REPL now -- still no sync -- no responses getting reported
reset works -- esp.reset() -- I see my blinky
oof
sorry im neck deep in some refactoring
not sure - could be the trasistor is interfering
wanna try it on nrf52?
with the built in chip?
np -- I went right to GPIO0 -- sure I'll try that on particle argon
WOW!! it workd!!!!! ```ESP32
Reading register 0x3ff00050
['0xc0', '0x0', '0xa', '0x4', '0x0', '0x0', '0x0', '0x0', '0x0', '0x50', '0x0', '0xf0', '0x3f', '0xc0']
Writing: bytearray(b'\xc0\x00\n\x04\x00\x00\x00\x00\x00P\x00\xf0?\xc0')
Packet: ['0xc0', '0x1', '0xa', '0x4', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0xc0']
Reading: bytearray(b'\xc0\x01\n\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0')
Response: ['0x0', '0x0', '0x0', '0x0'] Register: ['0x0', '0x0', '0x0', '0x0']
Reading register 0x3ff00054
['0xc0', '0x0', '0xa', '0x4', '0x0', '0x0', '0x0', '0x0', '0x0', '0x54', '0x0', '0xf0', '0x3f', '0xc0']
Writing: bytearray(b'\xc0\x00\n\x04\x00\x00\x00\x00\x00T\x00\xf0?\xc0')
Packet: ['0xc0', '0x1', '0xa', '0x4', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0xc0']
Reading: bytearray(b'\xc0\x01\n\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0')
Response: ['0x0', '0x0', '0x0', '0x0'] Register: ['0x0', '0x0', '0x0', '0x0']
Reading register 0x3ff00058
['0xc0', '0x0', '0xa', '0x4', '0x0', '0x0', '0x0', '0x0', '0x0', '0x58', '0x0', '0xf0', '0x3f', '0xc0']
Writing: bytearray(b'\xc0\x00\n\x04\x00\x00\x00\x00\x00X\x00\xf0?\xc0')
Packet: ['0xc0', '0x1', '0xa', '0x4', '0x0', '0x30', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0xc0']
Reading: bytearray(b'\xc0\x01\n\x04\x000\x00\x00\x00\x00\x00\x00\x00\xc0')
Response: ['0x0', '0x0', '0x0', '0x0'] Register: ['0x30', '0x0', '0x0', '0x0']
Reading register 0x3ff0005c
['0xc0', '0x0', '0xa', '0x4', '0x0', '0x0', '0x0', '0x0', '0x0', '0x5c', '0x0', '0xf0', '0x3f', '0xc0']
Writing: bytearray(b'\xc0\x00\n\x04\x00\x00\x00\x00\x00\\x00\xf0?\xc0')
Packet: ['0xc0', '0x1', '0xa', '0x4', '0x0', '0xff', '0x8', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0xc0']
Reading: bytearray(b'\xc0\x01\n\x04\x00\xff\x08\x00\x00\x00\x00\x00\x00\xc0')
Response: ['0x0', '0x0', '0x0', '0x0'] Register: ['0xff', '0x8', '0x0', '0x0']
MAC ADDR: ['0x0', '0x8', '0xff', '0x0', '0x0', '0x0']
Resetting
not sure I believe the MAC address
ok
im h0ngry tho. gotta takea break
writing doesnt work quite yet
thers a few steps missing i think i have to 'setup the SPI flash'
not hard stuff, just isnt used in esp8266
At least it talks to it!! Thanks for getting it going -- I'll try the other test
I don;t see alt test -- where is it?
ohh -- pulled latest -- ```Reading register 0x6001a000
['0xc0', '0x0', '0xa', '0x4', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0xa0', '0x1', '0x60', '0xc0']
Writing: bytearray(b'\xc0\x00\n\x04\x00\x00\x00\x00\x00\x00\xa0\x01\xc0') Packet: ['0xc0', '0x1', '0xa', '0x4', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0xc0'] Reading: bytearray(b'\xc0\x01\n\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0') Response: ['0x0', '0x0', '0x0', '0x0'] Register: ['0x0', '0x0', '0x0', '0x0'] Reading register 0x6001a004 ['0xc0', '0x0', '0xa', '0x4', '0x0', '0x0', '0x0', '0x0', '0x0', '0x4', '0xa0', '0x1', '0x60', '0xc0'] Writing: bytearray(b'\xc0\x00\n\x04\x00\x00\x00\x00\x00\x04\xa0\x01\xc0')
Packet: ['0xc0', '0x1', '0xa', '0x4', '0x0', '0x6c', '0x69', '0xd1', '0xa4', '0x0', '0x0', '0x0', '0x0', '0xc0']
Reading: bytearray(b'\xc0\x01\n\x04\x00li\xd1\xa4\x00\x00\x00\x00\xc0')
Response: ['0x0', '0x0', '0x0', '0x0'] Register: ['0x6c', '0x69', '0xd1', '0xa4']
Reading register 0x6001a008
['0xc0', '0x0', '0xa', '0x4', '0x0', '0x0', '0x0', '0x0', '0x0', '0x8', '0xa0', '0x1', '0x60', '0xc0']
Writing: bytearray(b'\xc0\x00\n\x04\x00\x00\x00\x00\x00\x08\xa0\x01\xc0') Packet: ['0xc0', '0x1', '0xa', '0x4', '0x0', '0xae', '0x30', '0x47', '0x0', '0x0', '0x0', '0x0', '0x0', '0xc0'] Reading: bytearray(b'\xc0\x01\n\x04\x00\xae0G\x00\x00\x00\x00\x00\xc0') Response: ['0x0', '0x0', '0x0', '0x0'] Register: ['0xae', '0x30', '0x47', '0x0'] Reading register 0x6001a00c ['0xc0', '0x0', '0xa', '0x4', '0x0', '0x0', '0x0', '0x0', '0x0', '0xc', '0xa0', '0x1', '0x60', '0xc0'] Writing: bytearray(b'\xc0\x00\n\x04\x00\x00\x00\x00\x00\x0c\xa0\x01\xc0')
Packet: ['0xc0', '0x1', '0xa', '0x4', '0x0', '0x0', '0xa2', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0xc0']
Reading: bytearray(b'\xc0\x01\n\x04\x00\x00\xa2\x00\x00\x00\x00\x00\x00\xc0')
Response: ['0x0', '0x0', '0x0', '0x0'] Register: ['0x0', '0xa2', '0x0', '0x0']
0x4730ae
MAC ADDR: ['0x30', '0xae', '0xa4', '0xd1', '0x69', '0x6c']
Resetting
not sure how to use ESPTOOL with the argon esp32 chip?
oh right yeah
maybe argon software has soe way to know the mac
or look on the labelling
Oh yes -- there is an AT command -- Just asec
b'AT+GETMAC=0\r\n'
b'+GETMAC: "30:ae:a4:d1:69:6c"\r\n'
b'OK\r\n'
b''
looks good!
kool
very encouraging -- great work!
enjoy!!!
code.py output:
ESP mini prog
Resetting
Synced
ESP32
MAC ADDR: ['0x24', '0xa', '0xc4', '0x0', '0x3d', '0xd0']
Writing pin13blink.bin w/filesize: 1351440
Took 0.82s to erase 1320 flash blocks
Writing at 0x00005000... (1 %)
it is ridiculously slow
but it is going at 912600
It's ok to be slow...
great -- I have to go for awhile anyway -- I'll pull your updates and try it later -- I'll try loading the AT firmware in pieces . Not sure blinky will do much on the argon esp32 chip 😉
Great -- good luck -- wish I could have been more help... I'm happy to try it when you are ready.
yes -- not sure why my tacked wires are not workin on the Huzzah, but the argon is the goal anyway
I can flash the huzzah the "old" wasy
it was a good soldering challenge
woohoo!
may take awhile 😉
I'll check back later this evening. Good luck and thanks!
I was wondering if you could use circuitpython on a metro 328.
@stark hare no - sorry -- It needs the metro M0 or M4
Aww. Thanks.
@solar whale will get back to it tonite...
np, I’ll be back at it later as well.
one thing we gotta do is build an AT firmware that has the RX/TX pins on the same as the bootload pins
cause the default AT firmwar released by esp has the AT commands on different pins than the bootload pins
just to check. you got M4 + ESP8266 AT working, did you get nrf52 +ESP8266 AT working?
Yes
like with an external ESP8266 module
ok and you could sorta chat with the ESP32 but the baudrate was too high?
Yes. New nrf uart is much better but can’t handle 921600 and can’t change baudrate in the particle ESP32
kk
if you can build an at firmware for esp32 that then ovre the USB-uart it can comm
right now i get debug details over USB
so that has to be tweeked
External are both good. And you can lower the baudrate
On the external ESP32 if I flash via USB I can do AT via RX/TX on the m4
Just have to get proper EOL. Screen does not work
espatcommands works
It’ll be late tonight before I can do anything else.
@meager fog looking at AT firmware but I want to make sure I understand what you need - Is the change for the external ESP32 or the one on hte argon. for the external, it works now if loaded through USB, the AT communication is via teh RX/TX pins and it works with the M4 and nrf boards. I can see that a change may be needed for the argon since we want the AT to be on the proframming UART. Is that what you meant?
hihi
i got md5 verification gonig
right!
the AT firmware i downloaded from espressif site has 2 UARTs - one for uploading/debug and one for at commanding
the argon has 1 UART for both
so if you can build it, then when you upload it w/esptool to yuour ESP32 you should be able to send AT command over the USB port
USB port = one UART for both
OK -- but now you can program AT firmware to ERC32 via M4? and it works via stnadard UART? are there new changes to miniesptool for that?
yeah
yes lots
well im still chasing a bug
but i wanted to add verification in the meantime so i did that
so you can md5 sum
but im gettin' there
OK good -- I'll look at AT build -- no rush -- just wanted to clarify that the new AT build was need for argoon and not external ERC32 -- so does teh USB to ESP32 talk to the programming UART
sorry keep typing ERC32 -- that is a processor I have used for the past 15 years --
yah im able to write eveything but erasing is failing in some sections
not sure whatsup yet
looks like the UART is set here https://github.com/espressif/esp32-at/blob/master/main/interface/uart/Kconfig#L12 -- I think I may as well turn off flow control as the default since we don't support it in busio.
me too!
nice thing about esp32 is its got md5s
i probably broke esp8266 in the meantime but i can go back n fix
not sure who to ask about this, but... any chance of N-Key rollover for CircuitPython??
can't thats built into HID spec
you can only send 6 codes in a report :/
@solar whale ok ready for some code?
@meager fog sure -- I'll be playing catch-up , pu I'll try to keep up
oh 🤔 how do n-key rollover keyboards work, then? do they just send multiple reports?
yahh
i think so?
not sure what that is to be honest 😦
but you can press a key then press another one
like nearly instany
you just cant send it in the same report
@solar whale pull n check latest multifile
alright 👍 thanks
thats the 'esp32' folder bundle
as generated by esp idf
its ... slow but seems to work
then its just a matter of generating the right firmware
great -- looks good -- I'm getting close to firmware for argon
yah its some setting in the AT firmware makefiles or whatnot
if you load it into the huzzah and can AT thru the USB port, its correct 😃
and thaose are md5 checksums for each file
yeah
use md5sum in the command line on each file
if you pass in None it will skip test
ok -- back to firrmare -- too bad my huzzah erc32 won't let me run a simple test.
oh -- I see your comment -- nice way to test it via the huzzah USB -- great
why not?
kk
alright you should get this output when you've run it
on the argon
Writing esp32/esp-at.bin w/filesize: 1119072
***erase size 1119072, num_blocks 1093, size 1024, offset 0x100000
Took 1.34s to erase 1093 flash blocks
Writing at 0x00211000... (100 %)Took 250.01s to write 1119072 bytes
Verifying MD5sum 02e9c4af9480387644c7e45f7f8b9c0a
Writing esp32/partitions_at.bin w/filesize: 3072
***erase size 3072, num_blocks 3, size 1024, offset 0x8000
Took 0.05s to erase 3 flash blocks
Writing at 0x00008800... (100 %)Took 0.68s to write 3072 bytes
Verifying MD5sum 76bc3722dae4b1f2e66c9f5649b31e02
Resetting
well, thers a bunch of those chunks, but basically that
ok -- thanks -- will keep you posted on progress
all but one are a few seconds, the chonker is 4 minutes
this way you dont have to do the file merge thing
luckily the argon has a4Mbyte flash
yah you only need 1mb for this, because its sparse
thats why i did multifile
ok im going to move to gfx stuff now
@solar whale are you all good?
@meager fog yup -- thanks!
epic, ping if u are stuck - im gonna logoff - l8r!
@meager fog still fighting with firmware build -- getting close -- I get command echo on USB but cant actually execute commands. Getting late -- I'll try a few more things then keep at it tomorrow.
woohoo!! -- now I can get AT commands via USB -- just had to use miniterm,py to talk to it -- Issue was with EOL characters.
@meager fog OK -- I do have a build that works on the Huzzah ESP32 via USB ```jerryneedell@Ubuntu-Macmini:~/projects/esp32-at$ miniterm.py /dev/ttyUSB0 115200
--- Miniterm on /dev/ttyUSB0 115200,8,N,1 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
AT
OK
AT+GMR
AT version:1.3.0.0-dev(6aafec8 - Dec 7 2018 02:23:19)
SDK version:v3.3-dev-343-g7fa98593b
compile time:Dec 15 2018 23:55:32
OK
Hi folks - doing some fun stuff w/ the Christmas SoundBoard... why do I get occasional "busy signals"?
And an occasional "shooting star" sound?
PFFT - Nevermind! It was the soundbar's battery dying 😃
Ok, I'm still getting the shooting star sound through the headphones...
Working with circuit python and CPX I am trying to find a project that will be fun and engaging for about 3-4 boards/students. One board has a cricket, one is attached to a 24 nonpixel ring. What are some interesting projects I can do with this setup (I also have the eeducator pack that comes in adabot lunch pale.)
recommendations would be great. 😃
@karmic notch zombie game is fun )
Ooh, that does sound fun.
ornaments are popular: https://learn.adafruit.com/remote-control-tree-ornament-with-circuit-playground-express
oh yeah,, that' looks great.
here's another multiplayer project
https://learn.adafruit.com/circuit-playground-treasure-hunt
lots more here https://learn.adafruit.com/search?q=playground
Are you related to Ada Lovelace? I took a comp science test that mentioned her, I thought of you immediately. 😃
Thanks for the heads up on the caps, @meager fog
tru, nope
nice
Finally found a use for the clear TPU
OK, thanks to Mouser for fast shipping :-)
The same code works on the NRF 52840 DK (PCA10056) with only minor modifications to pin numbers and thresholds. The tracks on this board from NRF to pins are really long, but it still picks up a good touch signal.
import board
import touchio
t0 = touchio.TouchIn(board.P0_04)
t1 = touchio.TouchIn(board.P0_29)
t0.threshold = 61700
t1.threshold = 61400
while True:
print("%4d %d %4d %d" % (t0.raw_value, t0.value, t1.raw_value, ...
The big ones kinda hard to press in the center. But I think it’s solvable
Awesome.
@ladyada following up, even tho' there is no ETA, do you know is it a couple of days or a few months job? Thanks!
@meager fog It works!! I flashed the modified AT Firmeare to the Argon Esp32 and I can execute AT Commands on it !! ```
AT
b'\r\n'
b'OK\r\n'
b''
AT+GMR
b'AT version:1.3.0.0-dev(6aafec8 - Dec 7 2018 02:23:19)\r\n'
b'SDK version:v3.3-dev-343-g7fa98593b\r\n'
b'compile time:Dec 16 2018 05:38:30\r\n'
b'\r\n'
b'OK\r\n'
b''
I'm still experimenting with the AT build but let me know if you want a set of the .bin's to try.
does the sram lib for the epd work for all microchip sram chips? https://github.com/adafruit/Adafruit_CircuitPython_EPD/blob/master/adafruit_epd/mcp_sram.py
i'm thinking about this:
SRAM Memory IC 1Mb (128K x 8) SPI - Quad I/O 20MHz 8-SOIC
@solar whale woohoo! excellent work! are you using espressif's AT firmware, or particle's argon-ncp?
@raven canopy it's a custom compile of Espressif AT firmware -- have to move the AT UART. On big annoynace in the particle_ncp code was that they disabled the UART_CUR command so it was not possible to change the baudrate. Something I htink we will need some flexibility with.
Now taht we can flash the argon ESP32 at will (thanks to Ladyada!) there are many options
agree that changing baudrate is a crucial ability. there is another option, but i'm not sure of the work involved/possibility: add flow control to
. 😄
yup -- something to look into -- the lists keep growing.
the real upside to that is that users won't have to flash new firmware. assuming that we can get circuitpython to talk at the baudrate.
maybe, but there were other issue with the NCP sw taht are not compatible with the AT Firware in the exterenal boards.
@raven canopy it is far from perfect, but I can now use eitehr the external ESP8266 or ESP32 with an M4 or particle xenon and the particle argon -- al with the same code to run Ladyadas espatcommnad example to check bitcoin prices ! Still a lot of cleanup to do.
This is worse than Dunkin Donuts -- too many options 😉
😆
Particle.argon checking bitcoin price via internet with CircuitPython
I'm finding the Huzzah a little slow to develop on with CP. It there another Feather that provides drive emulation that I can add wifi to?
@timber mango any of the M0/M4 (SAMD) boards will have the USB drive. and, as ladyada and jerryn have been working on, you can UART with an ESP using AT Commands. (requires AT command firmware on the ESP)
https://github.com/adafruit/Adafruit_CircuitPython_espatcommands
Thank you- I was hoping to hear about Wifi support for the SAMD boards, but I don't see any Feather Wings that support that
I'm ok with that if you are -- as lonk as you don't mind some commented out code in the espatcommands lib.
@solar whale yah since you're doing ESP32 why dont ya commit whatever you can
and then ill check against my bitcoinner
and we'll go back n forth if we have to till we have stabilized for both
want me to merge the PR?
Yes -- go ahead and merge it - thanks
is this still true https://github.com/adafruit/Adafruit_CircuitPython_espatcommands/issues/5
I need to do some checking on that -- I'll check it and eitehr update or close it. It does not seem to bother the argon but need to check other boards again.
do you want a copy of my .bin for the argon and the load script? I'll probably have a new version later today or tomorrow,
sure toss it here in a zip when ready
ok git updated and its still working on my esp8266
its slow at times. i sorta wish i knew why sometimes w dont get a response
i think i could cookie it now?
@solar whale i could rename it at the same time, is 'espATcontrol' better?
it can be slow and ofter erros but it recovers -- seems mor stable with erc32
sounds good to me.
particle argon AT files
ugh travis changed how to activate
note -- i did not enable the AT BLE -- had issues building it and don't need it. I wonder if we should take oth OTA stuff as well?
the miniesptool worked great -- for the ARGON I had to pull CTS low in order to sync.
the md5 checksums are really nice!
with the name change -- do I have to refork or does git keep it straight?
ok -- got github and fork straightened out -- all good.
@solar whale hiya back, im docs'ing
almost done
may want to wait a few mins since im about to push a lot of changes
np -- all synched -- ready for changes
@meager fog just confimed the AT+RST issue still occurs with an nrf52840 and an external ESP9266 but it does not occure on the particle argon using the onboard ERC32 .... still investigating.
😬
well i cant seem to turn on travis for some reason
but its here now https://github.com/adafruit/Adafruit_CircuitPython_ESP_ATcontrol
OK -- I'll pull and test.
looks like i can use travis.org
unclear - will activate it now
travis'n
jerry - ok linted and ready to go, please fork/use the new lib
ok - got it -- updating my test cases and will run them
k next ill do miniesptool
@meager fog Travis seems to take a little time but activates eventually on .com. I'll look into to when I librarify it.
np
Have to try one more thing with PyPI before emailing them anyway so I'll ask so we know for sure.
@meager fog forgot to mention -- default nrf53840 builds fo not have "ure" I added it in order to run miniesptool -- I'll put in a PR to CP to add it to the builds
It was imported -- I did not check if it was used
OK -- if you can take it out -- that is simpler
cool! new ESP_ATcontrol code runs on the particle xenon w/ESP8266 and particle.argon with onboard ESP32
just have to avoid the AT+RST on the xenon
yay! ESP_ATcontrol also runs on featherm4 with external ESP32
I've run simpletest and bitcoinprice on all of them
man linting...
I have to go do some errands -- back later.
k
@solar whale ok 'final' code uploaded
i could do a writeup
if you can give me screenshots of the argon programming that would be 👍
I haven't followed this too closely. But what exactly are you guys working on?
adding wifi to circuitpython by wiring up an ESP module
@solar whale writing guide - bbl, try the new esp32 demo, it should match up with your code now
Oooh that's cool!!!
One day ill look into fully porting my lightsaber code into Circuitpython
@meager fog OK -- I'll pull the latest and give it a run -- I'll capture a log and make some screen shots .. thanks
ok i put what you sent me here
but feel free to send whatever, or i can also add u as an author there
Wow -- looks official!
Either way is fine -- your are welcome to make me an author if that is easier.
I'll try to get thsi done this evening, but may not be until tomorrow afternoon before I get a block of time.
np
found one error in esp32multifile -- I'll fix and do a PR -- have to define TX/RX - cant use board.tx/RX
neverminnd -- I misunderstood the Comments -- trying again
it works fine -- loading big chunk now.
@meager fog @solar whale Nice work with ESP_ATcontrol 👏 ....Will it also be possible to use ESP-01 with 1MB flash and ItsyBitsy M0?
yes
you need 1MB flash tho
the very old 512kb ones wont work - AT firmware wont fit
@solar whale if you can give me a screenshot
ok juat a sec
Thanks... I have mostly new ones with 1MB 🙂
@buoyant wigeon try it out! let us know if it does/doesn't work
perfect
❤ ❤