AgonLight Open Source Hardware Retro Computer Running BBC Basic was captured in KiCad and updated by Olimex

AgonLight is a well-documented small computer based on the Z80 family and running BBC BASIC.

With a VGA output and a PS2 Keyboard this is a stand alone retro style computer.

The project is open source hardware and software.

AgonLight may be also seen as an embedded BASIC computer as it has plenty of GPIOs available to interact with other components and modules.

The AgonLight was designed by Bernardo Kastrup and the Quark firmware is developed by Dean Belfield.

The project has an active Facebook group https://www.facebook.com/groups/agoncomputer/

We got a few inquiries from customers asking if Olimex is interested in making this project and we hesitated at first due to having the bad experience in the past with Maximite pseudo open source project.

After exchanging a few words with Bernardo via Twitter, we became confident that this is a true open source hardware project.

We checked the schematic and decided to do some small changes.

  • We decided to re-capture the design in KiCad instead of EasyEDA
  • The power of the original AgonLight is delivered by a USB-A connector which is quite odd and USB-A to USB-A cables are less popular. We decided to replace it with USB-C connector which is used in all new phones, tablets and devices due to the new EU directive. Usually everyone has such a cable at home to charge and transfer files to their cell phone.
  • We replaced the Linear voltage regulator with DCDC which delivers up to 2A current.
  • We added a battery LiPo charger and step-up converter which allows operations even if external power supply is interrupted.
  • The original design had a PS2 connector for a keyboard and required a USB to PS2 adapter to operate with the more available USB keyboards. We replaced the PS2 connector with a USB-A connector so a normal USB keyboard (which supports PS2) can be directly plugged-in to AgonLight
  • We routed the AS7C34096A-10TCTR SRAM with 40 ohm impedance lines as per the datasheet
  • Fixed a wrong signal naming in the ESP32-PICO-D4, which now is updated in the original AgonLight documentation.
  • Replaced the bare header 32-pin connector with a plastic boxed 34-pin connector following the same layout and adding two additional signals Vbat and Vin which allow AgonLight to be powered by this connector too.
  • Added a UEXT connector (https://www.olimex.com/Products/Modules/) which allows AgonLight to be connected to: temperature sensors, environmental air quality sensors, pressure, humidity, gyroscope, light, RS485, LCDs, LED matrix, relays, Bluettooth, Zigbee, Lora, GSM, RFID reader, GPS, Pulse, EKG, RTC etc.

We changed most of the components to our component base, which we source and stock in large quantities and allow us to bring the cost down.

The design was completed 1 week ago:

Today the first blank PCBs arrived:

Next week we will assemble 5 pcs to test by ourselves and then send to the original AgonLight developers.


AgonLight will be put on our web and available for pre-order next week with a special Christmas price of EUR 50 for a completely assembled, programmed and tested computer.


If the prottotypes are good mass production will follow and all pre-orders taken to 23.12.2022 will be shipped by the end of January.

We plan to make metal case and other accessories in the near future.

ESP32-C3-DevKit-Lipo RISC-V development board with build in USB JTAG, WiFi, Bluetooth5, Lipo charger and 15 GPIOs

ESP32-C3-DevKit-Lipo is EUR 6.00 Open Source Hardware compact development board with:

  • RISC-V running on 160Mhz
  • 400KB RAM, 8K data RAM
  • 4MB Flash
  • Two headers (soldered) with power supply and GPIO signals
  • ESP-PROG-C compatible rescue connector (if you mess with bootloader)
  • USB-C for programming and JTAG debugging
  • LiPo battery charger allowing handheld applications with single LiPo battery
  • 4 mount holes

This is all you need to get started with RISC-V programming in C and Assembly.

Shteryana Shopova recently did RISC-V workshop with this board and explained how to setup your tools for programming and debugging. Here you can find her work.

Avoid WiFi channel 12-13-14 when working with ESP devices

Recently we are experimenting with Home Assistant installed on A20-OLinuXino-LIME2 Home server and attaching different nodes made with our ESP8266/ESP32 boards and noticed odd behaviour os ESP when WIFI router is set on the higher frequencies channels.

Most of WiFi router default settings are with channel Auto selection, this means the router will try first Channel 1 if too much noise and drop packets due to overwhelmed with WiFi devices area will change it up and so on, so our developers decided that it’s smart idea to use the WiFi router on the highest possible channel. This will guarantee that this channel will be most noise and interference free from other WiFi devices. So our router was set to WiFi channel 13:

We use the ESP standard firmware and ESPhome code. This is what happens: When the code is flashed for first time, it experience some errors while connecting but manage to connect to the router.

Access Point: TP Link
Hardware Version: Archer C1200 v2.0
Firmware Version: 2.0.0 Build 20170206 rel.46023 (EU)

SUCCESS CH13 (first attempt after flashing the code)
============================

[D][wifi:370]: Starting scan...
[D][wifi:385]: Found networks:
[I][wifi:429]: - 'OlimexTenda' (B0:4E:26:6E:B2:73) 
[D][wifi:430]:     Channel: 13
[D][wifi:431]:     RSSI: -40 dB
[D][wifi:434]: - 'OlimexGuests' (C8:3A:35:4B:10:78) 
[D][wifi:434]: - 'OlimexAP' (00:1F:1F:11:7B:B3) 
[D][wifi:434]: - 'OlimexTest' (78:32:1B:90:D7:38) 
[D][wifi:434]: - 'ubnt' (00:27:22:7C:3C:70) 
[I][wifi:245]: WiFi Connecting to 'OlimexTenda'...
[W][wifi_esp8266:483]: Event: Disconnected ssid='OlimexTenda' bssid=B0:4E:26:6E:B2:73 reason='Association Expired'
[W][wifi:533]: Error while connecting to network.
[I][wifi:245]: WiFi Connecting to 'OlimexTenda'...
[W][wifi_esp8266:479]: Event: Disconnected ssid='OlimexTenda' reason='Probe Request Unsuccessful'
[W][wifi:533]: Error while connecting to network.
[D][wifi:370]: Starting scan...
[D][wifi:385]: Found networks:
[I][wifi:429]: - 'OlimexTenda' (B0:4E:26:6E:B2:73) 
[D][wifi:430]:     Channel: 13
[D][wifi:431]:     RSSI: -52 dB
[D][wifi:434]: - 'Haxor' (B0:48:7A:CE:8D:BC) 
[D][wifi:434]: - 'OlimexGuests' (C8:3A:35:4B:10:78) 
[D][wifi:434]: - 'OlimexAP' (00:1F:1F:11:7B:B3) 
[D][wifi:434]: - 'OlimexTest' (78:32:1B:90:D7:38) 
[D][wifi:434]: - 'ubnt' (00:27:22:7C:3C:70) 
[I][wifi:245]: WiFi Connecting to 'OlimexTenda'...
[W][wifi_esp8266:213]: wifi_apply_hostname_(esp8266-evb-pir-9c61de): lwIP error -16 on interface st (index 0)
[W][wifi_esp8266:483]: Event: Disconnected ssid='OlimexTenda' bssid=B0:4E:26:6E:B2:73 reason='Association Leave'
[W][wifi:533]: Error while connecting to network.
[I][wifi:245]: WiFi Connecting to 'OlimexTenda'...
[W][wifi_esp8266:213]: wifi_apply_hostname_(esp8266-evb-pir-9c61de): lwIP error -16 on interface st (index 0)
[I][wifi:502]: WiFi Connected!
[C][wifi:350]:   Local MAC: 18:FE:34:9C:61:DE
[C][wifi:351]:   SSID: 'OlimexTenda'
[C][wifi:352]:   IP Address: 192.168.0.203
[C][wifi:354]:   BSSID: B0:4E:26:6E:B2:73
[C][wifi:355]:   Hostname: 'esp8266-evb-pir-9c61de'
[C][wifi:357]:   Signal strength: -56 dB 
[C][wifi:361]:   Channel: 13
[C][wifi:362]:   Subnet: 255.255.255.0
[C][wifi:363]:   Gateway: 192.168.0.1
[C][wifi:364]:   DNS1: 192.168.0.1
[C][wifi:365]:   DNS2: 0.0.0.0
[D][wifi:511]: Disabling AP...

As you can see from the above the ESP try to connect twice but gets error: ‘Association Expired’ and ‘Probe Request Unsuccessful’ but on the third attempt it connects.

The problem comes later if for some reason ESP lose power and start again. This could easily happen if the ESP is powered by the mains and there is power blackout and power restore.

FAILURE CH13 (after cold restart)
=================================
[C][wifi:037]: Setting up WiFi...
[D][wifi:046]: Loaded saved wifi settings: OlimexTenda
[D][wifi:370]: Starting scan...
[D][binary_sensor:036]: 'PIR Sensor': Sending state OFF
[D][wifi:385]: Found networks:
[I][wifi:429]: - 'OlimexTenda' (B0:4E:26:6E:B2:73) 
[D][wifi:430]:     Channel: 13
[D][wifi:431]:     RSSI: -55 dB
[D][wifi:434]: - 'Haxor' (B0:48:7A:CE:8D:BC) 
[D][wifi:434]: - 'OlimexAP' (00:1F:1F:11:7B:B3) 
[D][wifi:434]: - 'OlimexTest' (78:32:1B:90:D7:38) 
[D][wifi:434]: - 'OlimexGuests' (C8:3A:35:4B:10:78) 
[D][wifi:434]: - 'ubnt' (00:27:22:7C:3C:70) 
[I][wifi:245]: WiFi Connecting to 'OlimexTenda'...
[W][wifi_esp8266:483]: Event: Disconnected ssid='OlimexTenda' bssid=B0:4E:26:6E:B2:73 reason='Auth Expired'
[W][wifi:533]: Error while connecting to network.
[W][wifi:568]: Restarting WiFi adapter...
[I][wifi:245]: WiFi Connecting to 'OlimexTenda'...
[W][wifi_esp8266:483]: Event: Disconnected ssid='OlimexTenda' bssid=B0:4E:26:6E:B2:73 reason='Auth Expired'
[W][wifi:533]: Error while connecting to network.
[W][wifi:568]: Restarting WiFi adapter...
[D][wifi:370]: Starting scan...
[D][wifi:385]: Found networks:
[I][wifi:429]: - 'OlimexTenda' (B0:4E:26:6E:B2:73) 
[D][wifi:430]:     Channel: 13
[D][wifi:431]:     RSSI: -54 dB
[D][wifi:434]: - 'Haxor' (B0:48:7A:CE:8D:BC) 
[D][wifi:434]: - 'OlimexAP' (00:1F:1F:11:7B:B3) 
[D][wifi:434]: - 'OlimexGuests' (C8:3A:35:4B:10:78) 
[D][wifi:434]: - 'ubnt' (00:27:22:7C:3C:70) 
[D][wifi:434]: - 'OlimexTest' (78:32:1B:90:D7:38) 
[I][wifi:245]: WiFi Connecting to 'OlimexTenda'...
[W][wifi_esp8266:483]: Event: Disconnected ssid='OlimexTenda' bssid=B0:4E:26:6E:B2:73 reason='Auth Expired'
[W][wifi:533]: Error while connecting to network.
[W][wifi:568]: Restarting WiFi adapter...
[I][wifi:245]: WiFi Connecting to 'OlimexTenda'...
[W][wifi_esp8266:483]: Event: Disconnected ssid='OlimexTenda' bssid=B0:4E:26:6E:B2:73 reason='Auth Expired'
[W][wifi:533]: Error while connecting to network.
[W][wifi:568]: Restarting WiFi adapter...
[D][wifi:370]: Starting scan...
[D][wifi:385]: Found networks:
[I][wifi:429]: - 'OlimexTenda' (B0:4E:26:6E:B2:73) 
[D][wifi:430]:     Channel: 13
[D][wifi:431]:     RSSI: -52 dB
[D][wifi:434]: - 'OlimexAP' (00:1F:1F:11:7B:B3) 
[D][wifi:434]: - 'OlimexGuests' (C8:3A:35:4B:10:78) 
[D][wifi:434]: - 'ubnt' (00:27:22:7C:3C:70) 
[D][wifi:434]: - 'OlimexTest' (78:32:1B:90:D7:38) 
[I][wifi:245]: WiFi Connecting to 'OlimexTenda'...
[W][wifi_esp8266:483]: Event: Disconnected ssid='OlimexTenda' bssid=B0:4E:26:6E:B2:73 reason='Auth Expired'
[W][wifi:533]: Error while connecting to network.
[W][wifi:568]: Restarting WiFi adapter...
[I][wifi:245]: WiFi Connecting to 'OlimexTenda'...
[I][wifi:135]: Starting fallback AP!
[C][wifi:198]: Setting up AP...
[C][wifi:200]:   AP SSID: 'esp8266-evb-pir-9c61de'
[C][wifi:201]:   AP Password: ''
[C][wifi:210]:   IP Address: 192.168.4.1
[W][wifi:527]: Timeout while connecting to WiFi.
[D][wifi:370]: Starting scan...
[D][wifi:385]: Found networks:
[I][wifi:429]: - 'OlimexTenda' (B0:4E:26:6E:B2:73) 
[D][wifi:430]:     Channel: 13
[D][wifi:431]:     RSSI: -57 dB
[D][wifi:434]: - 'Haxor' (B0:48:7A:CE:8D:BC) 
[D][wifi:434]: - 'OlimexGuests' (C8:3A:35:4B:10:78) 
[D][wifi:434]: - 'OlimexAP' (00:1F:1F:11:7B:B3) 
[D][wifi:434]: - 'ubnt' (00:27:22:7C:3C:70) 
[D][wifi:434]: - 'OlimexTest' (78:32:1B:90:D7:38) 
[I][wifi:245]: WiFi Connecting to 'OlimexTenda'...
[W][wifi_esp8266:213]: wifi_apply_hostname_(esp8266-evb-pir-9c61de): lwIP error -16 on interface st (index 0)
[W][wifi_esp8266:483]: Event: Disconnected ssid='OlimexTenda' bssid=B0:4E:26:6E:B2:73 reason='Association Leave'
[W][wifi:533]: Error while connecting to network.
[I][wifi:245]: WiFi Connecting to 'OlimexTenda'...
[W][wifi_esp8266:213]: wifi_apply_hostname_(esp8266-evb-pir-9c61de): lwIP error -16 on interface st (index 0)
[W][wifi:527]: Timeout while connecting to WiFi.
[D][wifi:370]: Starting scan...
[D][wifi:385]: Found networks:
[I][wifi:429]: - 'OlimexTenda' (B0:4E:26:6E:B2:73) 
[D][wifi:430]:     Channel: 13
[D][wifi:431]:     RSSI: -56 dB
[D][wifi:434]: - 'OlimexGuests' (C8:3A:35:4B:10:78) 
[D][wifi:434]: - 'OlimexAP' (00:1F:1F:11:7B:B3) 
[D][wifi:434]: - 'OlimexTest' (78:32:1B:90:D7:38) 
[D][wifi:434]: - 'ubnt' (00:27:22:7C:3C:70) 
[I][wifi:245]: WiFi Connecting to 'OlimexTenda'...
[W][wifi_esp8266:213]: wifi_apply_hostname_(esp8266-evb-pir-9c61de): lwIP error -16 on interface st (index 0)
[W][wifi_esp8266:483]: Event: Disconnected ssid='OlimexTenda' bssid=B0:4E:26:6E:B2:73 reason='Association Leave'
[W][wifi:533]: Error while connecting to network.
[I][wifi:245]: WiFi Connecting to 'OlimexTenda'...
[W][wifi_esp8266:213]: wifi_apply_hostname_(esp8266-evb-pir-9c61de): lwIP error -16 on interface st (index 0)
[W][wifi_esp8266:479]: Event: Disconnected ssid='OlimexTenda' reason='Probe Request Unsuccessful'
[W][wifi:533]: Error while connecting to network.
[D][wifi:370]: Starting scan...
[D][wifi:385]: Found networks:
[I][wifi:429]: - 'OlimexTenda' (B0:4E:26:6E:B2:73) 
[D][wifi:430]:     Channel: 13
[D][wifi:431]:     RSSI: -51 dB
[D][wifi:434]: - 'Haxor' (B0:48:7A:CE:8D:BC) 
[D][wifi:434]: - 'OlimexAP' (00:1F:1F:11:7B:B3) 
[D][wifi:434]: - 'OlimexGuests' (C8:3A:35:4B:10:78) 
[D][wifi:434]: - 'OlimexTest' (78:32:1B:90:D7:38) 
[D][wifi:434]: - 'ubnt' (00:27:22:7C:3C:70) 
[I][wifi:245]: WiFi Connecting to 'OlimexTenda'...
[W][wifi_esp8266:213]: wifi_apply_hostname_(esp8266-evb-pir-9c61de): lwIP error -16 on interface st (index 0)
[W][wifi_esp8266:483]: Event: Disconnected ssid='OlimexTenda' bssid=B0:4E:26:6E:B2:73 reason='Auth Expired'
[W][wifi:533]: Error while connecting to network.
[I][wifi:245]: WiFi Connecting to 'OlimexTenda'...
[W][wifi_esp8266:213]: wifi_apply_hostname_(esp8266-evb-pir-9c61de): lwIP error -16 on interface st (index 0)
[W][wifi_esp8266:483]: Event: Disconnected ssid='OlimexTenda' bssid=B0:4E:26:6E:B2:73 reason='Auth Expired'
[W][wifi:533]: Error while connecting to network.
[D][wifi:370]: Starting scan...
[D][wifi:385]: Found networks:
[D][wifi:434]: - 'Haxor' (B0:48:7A:CE:8D:BC) 
[D][wifi:434]: - 'OlimexAP' (00:1F:1F:11:7B:B3) 
[D][wifi:434]: - 'OlimexGuests' (C8:3A:35:4B:10:78) 
[D][wifi:434]: - 'ubnt' (00:27:22:7C:3C:70) 
[D][wifi:434]: - 'OlimexTest' (78:32:1B:90:D7:38) 
[W][wifi:439]: No matching network found!
[D][wifi:370]: Starting scan...
[D][wifi:385]: Found networks:
[I][wifi:429]: - 'OlimexTenda' (B0:4E:26:6E:B2:73) 
[D][wifi:430]:     Channel: 13
[D][wifi:431]:     RSSI: -54 dB
[D][wifi:434]: - 'Haxor' (B0:48:7A:CE:8D:BC) 
[D][wifi:434]: - 'OlimexAP' (00:1F:1F:11:7B:B3) 
[D][wifi:434]: - 'OlimexGuests' (C8:3A:35:4B:10:78) 
[D][wifi:434]: - 'OlimexTest' (78:32:1B:90:D7:38) 
[D][wifi:434]: - 'ubnt' (00:27:22:7C:3C:70) 
[I][wifi:245]: WiFi Connecting to 'OlimexTenda'...
[W][wifi_esp8266:213]: wifi_apply_hostname_(esp8266-evb-pir-9c61de): lwIP error -16 on interface st (index 0)
[W][wifi_esp8266:483]: Event: Disconnected ssid='OlimexTenda' bssid=B0:4E:26:6E:B2:73 reason='Auth Expired'
[W][wifi:533]: Error while connecting to network.
[I][wifi:245]: WiFi Connecting to 'OlimexTenda'...
[W][wifi_esp8266:213]: wifi_apply_hostname_(esp8266-evb-pir-9c61de): lwIP error -16 on interface st (index 0)
[W][wifi_esp8266:483]: Event: Disconnected ssid='OlimexTenda' bssid=B0:4E:26:6E:B2:73 reason='Auth Expired'
[W][wifi:533]: Error while connecting to network.
[D][wifi:370]: Starting scan...
[D][wifi:385]: Found networks:
[I][wifi:429]: - 'OlimexTenda' (B0:4E:26:6E:B2:73) 
[D][wifi:430]:     Channel: 13
[D][wifi:431]:     RSSI: -53 dB
[D][wifi:434]: - 'OlimexAP' (00:1F:1F:11:7B:B3) 
[D][wifi:434]: - 'OlimexGuests' (C8:3A:35:4B:10:78) 
[D][wifi:434]: - 'ESP_CA17E1' (8C:4B:14:CA:17:E1) 
[D][wifi:434]: - 'ubnt' (00:27:22:7C:3C:70) 
[D][wifi:434]: - 'OlimexTest' (78:32:1B:90:D7:38) 
[I][wifi:245]: WiFi Connecting to 'OlimexTenda'...
[W][wifi_esp8266:213]: wifi_apply_hostname_(esp8266-evb-pir-9c61de): lwIP error -16 on interface st (index 0)
[W][wifi_esp8266:483]: Event: Disconnected ssid='OlimexTenda' bssid=B0:4E:26:6E:B2:73 reason='Auth Expired'
[W][wifi:533]: Error while connecting to network.
[I][wifi:245]: WiFi Connecting to 'OlimexTenda'...
[W][wifi_esp8266:213]: wifi_apply_hostname_(esp8266-evb-pir-9c61de): lwIP error -16 on interface st (index 0)
[W][wifi_esp8266:483]: Event: Disconnected ssid='OlimexTenda' bssid=B0:4E:26:6E:B2:73 reason='Auth Expired'
[W][wifi:533]: Error while connecting to network.
[D][wifi:370]: Starting scan...
[D][wifi:385]: Found networks:
[I][wifi:429]: - 'OlimexTenda' (B0:4E:26:6E:B2:73) 
[D][wifi:430]:     Channel: 13
[D][wifi:431]:     RSSI: -54 dB
[D][wifi:434]: - 'Haxor' (B0:48:7A:CE:8D:BC) 
[D][wifi:434]: - 'OlimexGuests' (C8:3A:35:4B:10:78) 
[D][wifi:434]: - 'OlimexAP' (00:1F:1F:11:7B:B3) 
[D][wifi:434]: - 'OlimexTest' (78:32:1B:90:D7:38) 
[D][wifi:434]: - 'ubnt' (00:27:22:7C:3C:70) 
[I][wifi:245]: WiFi Connecting to 'OlimexTenda'...
[W][wifi_esp8266:213]: wifi_apply_hostname_(esp8266-evb-pir-9c61de): lwIP error -16 on interface st (index 0)
[W][wifi_esp8266:483]: Event: Disconnected ssid='OlimexTenda' bssid=B0:4E:26:6E:B2:73 reason='Auth Expired'
[W][wifi:533]: Error while connecting to network.
[I][wifi:245]: WiFi Connecting to 'OlimexTenda'...
[W][wifi_esp8266:213]: wifi_apply_hostname_(esp8266-evb-pir-9c61de): lwIP error -16 on interface st (index 0)
[W][wifi_esp8266:483]: Event: Disconnected ssid='OlimexTenda' bssid=B0:4E:26:6E:B2:73 reason='Auth Expired'
[W][wifi:533]: Error while connecting to network.
[D][wifi:370]: Starting scan...
[D][wifi:385]: Found networks:
[I][wifi:429]: - 'OlimexTenda' (B0:4E:26:6E:B2:73) 
[D][wifi:430]:     Channel: 13
[D][wifi:431]:     RSSI: -53 dB
[D][wifi:434]: - 'Haxor' (B0:48:7A:CE:8D:BC) 
[D][wifi:434]: - 'OlimexAP' (00:1F:1F:11:7B:B3) 
[D][wifi:434]: - 'OlimexGuests' (C8:3A:35:4B:10:78) 
[D][wifi:434]: - 'OlimexTest' (78:32:1B:90:D7:38) 
[D][wifi:434]: - 'ubnt' (00:27:22:7C:3C:70) 
[I][wifi:245]: WiFi Connecting to 'OlimexTenda'...
[W][wifi_esp8266:213]: wifi_apply_hostname_(esp8266-evb-pir-9c61de): lwIP error -16 on interface st (index 0)
[W][wifi_esp8266:483]: Event: Disconnected ssid='OlimexTenda' bssid=B0:4E:26:6E:B2:73 reason='Auth Expired'
[W][wifi:533]: Error while connecting to network.
[I][wifi:245]: WiFi Connecting to 'OlimexTenda'...
[W][wifi_esp8266:213]: wifi_apply_hostname_(esp8266-evb-pir-9c61de): lwIP error -16 on interface st (index 0)
[W][wifi_esp8266:483]: Event: Disconnected ssid='OlimexTenda' bssid=B0:4E:26:6E:B2:73 reason='Auth Expired'
[W][wifi:533]: Error while connecting to network.
[D][wifi:370]: Starting scan...
[D][wifi:385]: Found networks:
[I][wifi:429]: - 'OlimexTenda' (B0:4E:26:6E:B2:73) 
[D][wifi:430]:     Channel: 13
[D][wifi:431]:     RSSI: -53 dB
[D][wifi:434]: - 'Haxor' (B0:48:7A:CE:8D:BC) 
[D][wifi:434]: - 'OlimexGuests' (C8:3A:35:4B:10:78) 
[D][wifi:434]: - 'OlimexAP' (00:1F:1F:11:7B:B3) 
[D][wifi:434]: - 'OlimexTest' (78:32:1B:90:D7:38) 
[D][wifi:434]: - 'ubnt' (00:27:22:7C:3C:70) 

As seen from the log above, after power cycling ESP can’t connect to WiFi router anymore, most of the errors shown are ‘Auth Expired’

If we change the WiFi router settings to Channel 1-11:

All problems now are gone and ESP connects every time no matter how many time power is cycled.

SUCCESS CH11 (after cold restart)
=================================
[D][wifi:046]: Loaded saved wifi settings: OlimexTenda
[D][wifi:370]: Starting scan...
[D][binary_sensor:036]: 'PIR Sensor': Sending state OFF
[D][wifi:385]: Found networks:
[I][wifi:429]: - 'OlimexTenda' (B0:4E:26:6E:B2:73) 
[D][wifi:430]:     Channel: 11
[D][wifi:431]:     RSSI: -54 dB
[D][wifi:434]: - 'Haxor' (B0:48:7A:CE:8D:BC) 
[D][wifi:434]: - 'OlimexGuests' (C8:3A:35:4B:10:78) 
[D][wifi:434]: - 'OlimexAP' (00:1F:1F:11:7B:B3) 
[D][wifi:434]: - 'OlimexTest' (78:32:1B:90:D7:38) 
[D][wifi:434]: - 'ubnt' (00:27:22:7C:3C:70) 
[I][wifi:245]: WiFi Connecting to 'OlimexTenda'...
[I][wifi:502]: WiFi Connected!
[C][wifi:350]:   Local MAC: 18:FE:34:9C:61:DE
[C][wifi:351]:   SSID: 'OlimexTenda'
[C][wifi:352]:   IP Address: 192.168.0.203
[C][wifi:354]:   BSSID: B0:4E:26:6E:B2:73
[C][wifi:355]:   Hostname: 'esp8266-evb-pir-9c61de'
[C][wifi:357]:   Signal strength: -55 dB 
[C][wifi:361]:   Channel: 11
[C][wifi:362]:   Subnet: 255.255.255.0
[C][wifi:363]:   Gateway: 192.168.0.1
[C][wifi:364]:   DNS1: 192.168.0.1
[C][wifi:365]:   DNS2: 0.0.0.0
[D][wifi:511]: Disabling AP...
[C][ota:082]: Over-The-Air Updates:
[C][ota:083]:   Address: esp8266-evb-pir.local:8266
[C][api:025]: Setting up Home Assistant API server...
[I][app:060]: setup() finished successfully!
[I][app:099]: ESPHome version 2021.11.4 compiled on Dec  9 2021, 11:08:14
[I][app:101]: Project olimex.esphome-esp8266-evb-pir version 1.0
[C][wifi:488]: WiFi:
[C][wifi:350]:   Local MAC: 18:FE:34:9C:61:DE
[C][wifi:351]:   SSID: 'OlimexTenda'
[C][wifi:352]:   IP Address: 192.168.0.203
[C][wifi:354]:   BSSID: B0:4E:26:6E:B2:73
[C][wifi:355]:   Hostname: 'esp8266-evb-pir-9c61de'
[C][wifi:357]:   Signal strength: -55 dB 
[C][wifi:361]:   Channel: 11
[C][wifi:362]:   Subnet: 255.255.255.0
[C][wifi:363]:   Gateway: 192.168.0.1
[C][wifi:364]:   DNS1: 192.168.0.1
[C][wifi:365]:   DNS2: 0.0.0.0
[C][logger:233]: Logger:
[C][logger:234]:   Level: DEBUG
[C][logger:235]:   Log Baud Rate: 115200
[C][logger:236]:   Hardware UART: UART0
[C][gpio.binary_sensor:015]: GPIO Binary Sensor 'PIR Sensor'
[C][gpio.binary_sensor:015]:   Device Class: 'motion'
[C][gpio.binary_sensor:016]:   Pin: GPIO16
[C][captive_portal:151]: Captive Portal:
[C][ota:082]: Over-The-Air Updates:
[C][ota:083]:   Address: esp8266-evb-pir.local:8266
[C][api:134]: API Server:
[C][api:135]:   Address: esp8266-evb-pir.local:6053
[C][api:139]:   Using noise encryption: NO
[C][mdns:084]: mDNS:
[C][mdns:085]:   Hostname: esp8266-evb-pir-9c61de

Our blind guess is that ESP can’t connect reliable on the higher frequency channels. As far as you choose channels 1-11 everything is fine. We think that most people even do not notice this kind of erros if they routers are set to Auto channels as the chances to go up to 12-13-14 are very slim.

New Open Source Hardware OSHW board with ESP32-S2 have native USB-OTG allowing USB host and device functionality with ESP32-S2 low power modes down to 20uA are possible

ESP32-S2 is new SOC from Espressif, compared to ESP32 it has no Bluetooth and Ethernet connectivity, but offers plenty of GPIOs and has native USB-OTG interface.

Our first version uses USB to Serial converter as Espressif IDE at that time didn’t support programming via the native USB interface, but now their SDK supports USB programming, so we released new version without the not necessary USB-Serial converter.

To the best of our knowledge this is the first board to the market where USB-OTG is implemented and the board can work both in device and host mode ( at least as hardware 🙂 )

The hardware now is ahead of software as USB host functionality in SDK is missing yet, but at least we provide hardware platform for the future.

ESP32-S2-DevKit-Lipo-USB is OSHW so the CAD files are available on GitHub if someone want to see how we implement the USB-OTG. It’s really complicated as we wanted to keep the handheld battery operation and keep the LiPo charger and battery circuit. This leads to quite some over engineering around the power supply as the battery should charge when USB-OTG works in Device mode, and source 5V to the USB-OTG when it’s in Host mode!

It took us 2 revisions until we made it right, so thanks for your patience, now the board is in stock and orderable.

ESP32-S2-WROVER-DevKit-Lipo-USB with WROVER module with 2MB RAM is also available for these who want to write big applications.

New Board with ESP32-S2 with LiPo charger unleash the native USB-OTG functionality

We recently released our ESP32-S2-DevKit-Lipo development board with ESP32-S2 SOC. It has the same functionality and pinout as Espressif ESP32-S2-Saola-1, but in addition it has a LiPo charger and battery management and is designed for Ultra low power – only 30uA consumption when on battery and deep sleep. This allows handheld battery operated applications. The LiPo part can power external sensors/circuits. This board has a built-in programmer with a CH340T USB-Serial convertor.

Many have noticed that ESP32-S2 has a native USB-OTG. Then why did we put the CH340T on it? The reason is that the Espressif SDK didn’t support USB back when we designed this board.

Now Espressif SDK adds support for a USB bootloader and the programming of the ESP32-S2 can be done by the native USB interface, we decided to make a new revision where the native USB-OTG interface is used.

We wanted to keep the LiPo battery functionality and this created an interesting technical challenge: the USB-OTG port can be used both as device and host. When used as a device, the board is powered by the USB and LiPo battery is charging. When used as a USB host (i.e. you can attach USB devices to the port) the USB port must supply 5V to the USB devices connected. Our first prototype had a power supply problem: when the ESP32-S2 works as a host the battery is powering the USB-OTG port with 5V, but there is attached also the LiPo charger circuit, so infinite loop is made: battery -> step up to 5V -> USB -> LiPo chgarger -> battery 🙂

This issue was preventing us from releasing this board earlier, but now on Rev.B all of these issues are fixed so we are about to run production.

Needless to say we kept the ultra low power design and the new board also consumes as low as 30uA in deep sleep.

Searching on the net it seems that no one else has implemented a USB-OTG functionality to the ESP32-S2 yet so this one will be the first. Also to the best of our knowledge there is still no software support for a USB host on the ESP32-S2 but we hope after our hardware is released this will push and accelerate the software development further.

ESP32-S2-DevKit-LiPo-USB is going to be released as Open Source Hardware like other IoT solutions we have.

Implementation of OPC UA on ESP32-EVB

OPC Unified Architecture (OPC UA) is an open, implemented under GPL 2.0 license, machine to machine communication protocol for industrial automation developed by the OPC Foundation.

The OPC UA protocol specification consists of 14 documents for a total of 1250 pages. Due to this complexity, existing implementations are usually incomplete.

This is why we were puzzled to see on Twitter post by Selftronics that they made OPC UA server running on ESP32-EVB!

Here are the details of the implementation, the sources are at GitHub.

New Open Source Hardware IoT ESP32-S2 development boards with LiPo Battery Charger and consumption of only 30uA in deep sleep target handheld WiFi apps

ESP32-S2 is new SOC from Espressif which fills the gap between ESP32 and ESP8266.

It has the same memory model as ESP32 but has cut the Ethernet and Bluetooth parts, so only WiFi connection is possible – same as ESP8266, but offers more power, secure boot and encrypted firmware. Also support of decent SSL connection, something which lacks in ESP8266.

Pricewise now S2 is a bit lower cost than ESP32 and more expensive than ESP8266, but there is very strong competition in this niche coming from the new Bouffalo BL6XX chips, so my prediction is that to stay ahead Espressif will further lower the prices of ESP32-S2 to match ESP8266 very soon.

For comparison with ESP32 and ESP8266 the new ESP32-S2 has plenty of GPIOs up to 43!

Initially Espressif has announced that their ESP32-S2-WROVER modules will have as low as 2-4uA consumption, but later they increased this value to 20uA. Not quite well as their target but still very good achievement.

Our ESP32-S2-DevKit-Lipo is pin to pin compatible with ESP32-S2-Saola-1:

To keep compatibility with SAOLA-1 we add RGB LED, but also add LiPo battery charger and ESP32-S2-DevKit-Lipo can operate even without external power supply only on LiPo battery, there is battery level monitoring and external power supply sense. ESP32-S2-DevKit-Lipo can power external circuits with 3.3V up to 200mA when operate on battery.

ESP32-S2-DevKit-Lipo has build in programmer with CH340T. There is possibility the programmer part to be excluded and to use ESP32-S2 directy USB connection.

When operating on battery if the RGB LED is enabled the power consumption is ridiculous 700uA as the RGB LED appear to use lot of current even when not in operation, but there is RGB disable solder jumper which if opened you will not be able to operate the RGB LED on battery but will decrease the power consumption to total less 30uA in deep sleep.

For these who need more memory there is variant ESP32-S2-WROVER-DevKit-Lipo with 2MB of PSRAM.

The prices start from EUR 5.56 for ESP32-S2-DevKit-Lipo and EUR 6.36 for ESP32-S2-WROVER-DevKit-Lipo .

PWR-SWITCH is optically isolated EU style power load switch for up to 3500W, 230VAC/16A and can be driven with any microcontroller, Arduino, EPS32, or Linux computers directly with 3-24V

PWR-SWITCH hides the high voltage problems from the Arduino, ESP32, Raspberry Pi, Beaglebone, OLinuXino developers. It has 1500VAC optically isolation and can drive high voltage up to 230VAC / 16A loads safely.

To switch On or Off the loads from 3 to 24VDC can be used, so you can drive the loads with any microcontroller only 1mA is necessary to trigger the switch.

PWR-SWITCH is with EU stype plug and receptacle, so to use it in US or in UK you will need some of these:US to EU adapter, EU to US adapter or UK to EU adapter.

 PWR-SWITCH has CE-EMC and LVD certification.

Green LED show the switch status.

Open Source Software OpenMQTTGateway got initial support for Open Source Hardware ESP32-GATEWAY

OpenMQTTGateway project aims to concentrate in one Gateway different technologies like Bluetooth, LoRa, IR, lagacy RF 433/315, GSM/GPRS based devices and connect them with OpenHAB, Home Assistant, Jeedom, FHEM, Domotic etc platforms via MQTT protocol.

The list of the supported devices is long.

With recent PR initial support for ESP32-GATEWAY is add.

How to configure and use ESP32-CAM with Arduino IDE and Linux

ESP32-CAM is small low cost WiFi camera with OV2460 2Mpix sensor. It allows you to stream video and even to perform some small image filterings and face detection / recognition.

Unfortunately the AI Thinker vendor trying to keep cost as low as possible didn’t include USB programmer in it so the setup is a bit odd.

What do you need to play with ESP32-CAM ?

You need the camera of course and some cables and USB to serial converter which also provide enough 3.3V source to power the camera.

In this example we will use ESP-PROG-C which comes with set of cables and USB-CABLE-micro-1.8M

Step.1

Install Arduino IDE

Please go to arduino.cc and download and install latest Arduino IDE.

Step.2

Linux and CH340

CH340 Linux drivers has bad PLL settings for all Linux kernels before 5.5.

If your system happen to be with Linux Kernel before 5.5. here is the GitHub repository with the patch to install.

If you do not have this patch CH340 will work, but will not be able to communicate at speed over 115200 bps, with the patch up to 2Mbps communication is possible.

Step.3

Wire cables:

You need to connect ESP32-CAM and ESP-PROG this way:

ESP32-CAM GND —-> ESP-PROG GND

ESP32-CAM 3.3V —-> ESP-PROG 3.3V

ESP32-CAM U0T —-> ESP-PROG RXD

ESP32-CAM U0R —-> ESP-PROG TXD

For firmware uploading you need one more connection, which is necessary ESP32 to go in Bootloader mode:

ESP32-CAM IO0 —-> ESP32-CAM GND

Step.4

Configure Arduino for ESP32-CAM

Run Arduino. In the Files-Preferences add:

https://dl.espressif.com/dl/package_esp32_index.json

In Tools-Board-Board Manager search for ESP32 and install it:

Exit Arduino and Run it again so it loads new board data. From File-Examples select ESP32-Camera-CameraWebServer

In select camera model uncomment CAMERA_MODEL_AI_THINKER and comment all other:

Then enter SSID and PASSWORD for your WiFi router.

In Tools-Board select : ESP32Wrover Module

Speed 921600

Flash Frequency 80Mhz

Flash Mode QIO

Partition Scheme: Huge app

Port: the port where your ESP-PROG USB Serial is connected it may be „ttyUSB0“ if you are running Linux or COMxx if you run Windows

Compile and see if there are no errors:

Then Press RESET button on ESP32-CAM, release it and hit Upload button on Arduino IDE.

If you get this error under Linux:

This means that the access to ttyUSB0 is not enabled for your user and you have to run in terminal

$ sudo chown youruser /dev/ttyUSB0 

Where „youruser“ can be seen and try again.

If everything is OK you will see this picture:

Now you have to disconnect ESP32-CAM IO0 and GND and press reset. In serial monitor you will see this message:

when you open http://192.168.100.109/ you will see

Now you can play with the different settings!

Previous Older Entries