ESP8266 and USBasp V2.0 - esp8266

Can I program the ESP8266 module via USBasp V2.0 and Arduino IDE, or do I need to get a different kind of programming stick?
Here're the pins of the USBasp:
The ESP8266 has the rolling pin setup:
My current setup: USBasp (left) --- ESP8266 (right)
Pin2 - VCC --- (3.3V) VCC
Pin4 - TXD --- Pin TX
Pin6 - RXD --- Pin RX
All remaining ESP8266 pins go to ground on the USBasp.
When connecting to my Mac and starting Arduino IDE, the USBasp board and the ESP8266 LEDs light up.
Problem:
The USBasp does not show up in the Port section. Whenever I'm trying to upload a sketch these errors show up:
error: espcomm_open failed
error: espcomm_upload_mem failed
Questions:
Can I flash an ESP8266 with a USBasp V2.0
Is the setup correct?

You need to switch rx an tx pins on one side. Then you need to pull CH_PD pin on the ESP to VCC and when you upload to the ESP you need to pull GPIO0 to GND before you apply power.
Pin2 - VCC --- (3.3V) VCC
Pin2 - VCC --- CH_PD
Pin4 - TXD --- Pin RX
Pin6 - RXD --- Pin TX
Pin8 - GND --- GPIO 0 (only when programming)
Leave ESP RESET pin floating
Then the last thing. It looks like the USBasp are 5v so you would need another power supply for the ESP witch is 3.3v.

Related

Songhe ATMega2560 + Wifi R3 ESP8266 is killing me! [WiFiEsp] >>> Cannot initialize ESP module

I am working with the Songhe Mega2560 + WiFi R3 Mega2560 + ESP8266 4MB Memory integrated circuit for a project involving connecting to a WiFi signal and reading the RSSI value.
Below is a basic sketch that I uploaded to the Mega2560 to communicate to the ESP8266 through Serial3 to test the firmware:
#include "WiFiEsp.h"
// Emulate Serial3 on pins 6/7 if not present
#ifndef HAVE_HWSERIAL3
#include "SoftwareSerial.h"
SoftwareSerial Serial3(6, 7); // RX, TX
#endif
void setup() {
// initialize serial for debugging
Serial.begin(115200);
// initialize serial for ESP module
Serial3.begin(115200);
// initialize ESP module
WiFi.init(&Serial3);
// check for the presence of the shield
if (WiFi.status() == WL_NO_SHIELD) {
Serial.println("WiFi shield not present");
// don't continue
while (true);
}
// Print WiFi MAC address
printMacAddress();
}
void loop() {
// do nothing
}
I flashed different versions of espressif's AT firmware but the serial monitor keeps showing this:
22:28:07.009 -> [WiFiEsp] Initializing ESP module
22:28:08.023 -> [WiFiEsp] >>> TIMEOUT >>>
22:28:10.026 -> [WiFiEsp] >>> TIMEOUT >>>
22:28:12.022 -> [WiFiEsp] >>> TIMEOUT >>>
22:28:14.023 -> [WiFiEsp] >>> TIMEOUT >>>
22:28:16.020 -> [WiFiEsp] >>> TIMEOUT >>>
22:28:17.006 -> [WiFiEsp] Cannot initialize ESP module
22:28:23.017 -> [WiFiEsp] >>> TIMEOUT >>>
22:28:23.017 -> [WiFiEsp] No tag found
22:28:23.017 -> WiFi shield not present
I am not sure if it is a firmware issue so I have tried multiple versions of AT firmware. The baud rate I have set is 115200. I have been looking at many other sources online, but I cannot seem to initialize WiFiEsp's WiFi module and I would really appreciate some help on this matter.
I have been following these steps for flashing and testing.
Toggle DIP switches 5,6,7 to ON and all else OFF and RXD/TXD to RXD0
Connect USB cable from port COM3 (on my computer) to integrated PCB with Mega2560 + ESP8266 WiFi
Use esptool.py to flash firmware to the ESP8266
The latest, released firmware for ESP8266 is the "ESP8266-IDF-AT_V2.2.1.0.zip" downloadable at espressif.com
I download the factory_xxx.bin to address 0 since I read that it indicates all hardware configurations for the ESP module. Below is the command I ran:
esptool.py --chip auto --port COM3 --baud 115200 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_size 4MB 0x0 factory_WROOM-02.bin
Disconnect USB cable
Toggle DIP switches 1,2,3,4 to ON and all else OFF and RXD/TXD to RXD3
Connect USB cable and upload sketch with Arduino IDE and read serial monitor
This is the procedure I have been trying to debug. If anymore information is required for better help, please let me know and I will try my best to provide.
The screenshot below is the command I run which successfully flashes (I think):
C:\Users\[MY NAME]\Downloads\ESP8266_NONOS_SDK-3.0.5\ESP8266_NONOS_SDK-3.0.5\bin>esptool.py write_flash --flash_mode dout --flash_size 4MB-c1 0x0 boot_v1.7.bin 0x01000 at/1024+1024/user1.2048.new.5.bin 0x1fb000 blank.bin 0x1fc000 esp_init_data_default_v08.bin 0xfe000 blank.bin 0x1fe000 blank.bin
esptool.py v4.4
Found 1 serial ports
Serial port COM3
Connecting....
Detecting chip type... Unsupported detection protocol, switching and trying again...
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: a4:e5:7c:b6:77:c0
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Flash will be erased from 0x00000000 to 0x00000fff...
Flash will be erased from 0x00001000 to 0x00065fff...
Flash will be erased from 0x001fb000 to 0x001fbfff...
Flash will be erased from 0x001fc000 to 0x001fcfff...
Flash will be erased from 0x000fe000 to 0x000fefff...
Flash will be erased from 0x001fe000 to 0x001fefff...
Flash params set to 0x0360
Compressed 4080 bytes to 2936...
Wrote 4080 bytes (2936 compressed) at 0x00000000 in 0.4 seconds (effective 92.5 kbit/s)...
Hash of data verified.
Compressed 413556 bytes to 296987...
Wrote 413556 bytes (296987 compressed) at 0x00001000 in 26.2 seconds (effective 126.1 kbit/s)...
Hash of data verified.
Compressed 4096 bytes to 26...
Wrote 4096 bytes (26 compressed) at 0x001fb000 in 0.1 seconds (effective 373.3 kbit/s)...
Hash of data verified.
Compressed 128 bytes to 75...
Wrote 128 bytes (75 compressed) at 0x001fc000 in 0.1 seconds (effective 11.8 kbit/s)...
Hash of data verified.
Compressed 4096 bytes to 26...
Wrote 4096 bytes (26 compressed) at 0x000fe000 in 0.1 seconds (effective 365.1 kbit/s)...
Hash of data verified.
Compressed 4096 bytes to 26...
Wrote 4096 bytes (26 compressed) at 0x001fe000 in 0.1 seconds (effective 357.1 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...
After this, I test it with Arduino's SerialPassThrough sketch replacing Serial1 with Serial3 and I get no response from running the command: AT.
I would appreciate any help on how to resolve this and where I could possibly be going wrong. Thanks!

concurrent AP-STA mode in Ubuntu 20.04

I'm using a Jetson Xavier NX hardware with dual band network controller(Intel 8265). So as far as I know, concurrent AP-STA mode can be done.
I've seen some related tutorials(#1, #2) on concurrent AP-STA mode, but just adding interface seems not enough.
I tried step-by-step as below:
nmcli radio wifi off
sudo iw phy phy0 interface add wlan1 type managed
At this moment, I can see that both Wi-Fi wlan0 and wlan1 are Off from GUI. from nmcli device show, both devices wlan0 and wlan1 are in 20 state (unavailable).
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
GENERAL.HWADDR: AA:AA:AA:AA:AA:AA
GENERAL.MTU: 1500
GENERAL.STATE: 20 (unavailable)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
GENERAL.DEVICE: wlan1
GENERAL.TYPE: wifi
GENERAL.HWADDR: AA:AA:AA:AA:AA:AA
GENERAL.MTU: 1500
GENERAL.STATE: 20 (unavailable)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
When I turn the Wi-Fi radio on, wlan0 becomes 30 state (disconnected) and I can set wlan0 as AP or STA as I want. However, wlan1 remain 20 state and it shows no text at all on GUI as captured below.
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
GENERAL.HWADDR: AA:AA:AA:AA:AA:AA
GENERAL.MTU: 1500
GENERAL.STATE: 30 (disconnected)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
GENERAL.DEVICE: wlan1
GENERAL.TYPE: wifi
GENERAL.HWADDR: AA:AA:AA:AA:AA:AA
GENERAL.MTU: 1500
GENERAL.STATE: 20 (unavailable)
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
Any way to solve the problem like changing the state of wlan1, or any other methods are appreciated.
Not a perfect solution, but found that the following order works
Setup and finish the connection for wlan0
Add wlan1 interface (in my case, sudo iw phy phy0 interface add wlan1 type managed)
Setup and finish the connection for wlan1
But there is still a (crucial) problem that after adding wlan1, nearly 10 seconds needed to recognize for wlan1 to connect to WiFi.

Property power-supply for an external pwm-backlight IC

I have this LCD panel:
LED panel's backlight is driven by the MIC2297 chip which takes two signals:
BRT - PWM signal for setting brightness of the LCD's background LEDs.
BL_EN that - gpio signal that enables or disables the LCD's background LEDs.
MIC2297 is powered from the +12V.
Now I connected this display to the Beaglebone Black's (BBB's) expansion connector and I am already running Linux on the BBB's microcontroller AM335x.
In order to enable the backlight I have to properly define it in the device tree i.e. .dts file. Currently I managed to set this up:
backlightt: backlight {
compatible = "pwm-backlight";
pwms = <&ehrpwm1 0 500000000>;
power-supply <>; // ???
enable-gpios = <&gpio2 3 0>;
brightness-levels = <0 4 8 16 32 64 128 255>;
default-brightness-level = <7>;
};
What I don't understand is the property power-supply. How can I know which regulator to use? My devicce uses external 12V! This is really confusing! Why do we even have to specify the regulator?
I found solution...
PWM backlight requires a property "power-supply" that points to some regulator inside the AM335x. This regulator is used to set the output voltage of the PWM - so we don't need to put any kind of voltage regulator between an AM335x and the backlight IC (which might only support 1.5V PWM input on some mobile devices). This is actually really useful.

NodeMCU SPI bus doesn't respond to commands

I was trying to connect peripherals over the SPI bus and it didn't work. So checked the outputs with the oscilloscope and discovered the chip doesn't respond to spi library commands.
The only thing I get is the noise on the TX and RX, other pins voltages do not change at all. I tested it on two NodeMCUs (unofficial LoLin and Amica) with both master and dev firmwares. Here are the commands for the spi:
spi.setup(1, spi.MASTER, spi.CPOL_LOW, spi.CPHA_LOW, 20, 8)
spi.send(1, 170, 170, 170, 170) -- 170 == 0b10101010
What could be the problem?
Edit
TX/RX noise turned out to be a UART signal from the serial communication with the computer.
SPI bus works. It's just too fast for my crappy oscilloscope.
Also I discovered that argument databits can be in range [1,32] , clock_div - [0,~1200].

ESP8266 12E NodeMCU 1.0 pin mapping for micro sd card?

I tried several pin conifguration to connect nodemcu and micro sd card. However, I had not any luck to successfully connect to sd card. I followed esp8266 forum and some other solution! I need your suggestions :)
The pin mapping that SD card attached to SPI bus as follows:
MicroSD => ESP8266
MOSI(DI) -> D7 (GPIO13) HMOSI
MISO(DO) -> D6 (GPIO12) HMISO
CLK -> D5 (GPIO14) HSCLK
CS -> D2 (GPIO4)
VDD -> Vin/3V3
GND -> GND
All other pin that available in microsd will not need to use!
After connecting all pin, you can test one of the example that given in by default. For example, In Arduino IDE you can use this example, File -> Examples -> 8266(SD) -> CardInfo
CONNECT SDCARD NODEMCU - TESTED
CS - D8
MISO - D7
MOSI - D6
SCK - D5
In Arduino IDE open FILE > EXAMPLES > SD > CARDINFO
Change
const int chipSelect = 15; // original code is 4
That's it, your SD Card will be working.
This works, just tested on my breadboard.

Resources