skip to main | skip to sidebar
Showing posts with label ESP8266. Show all posts
Showing posts with label ESP8266. Show all posts

Tuesday, September 24, 2019

Alexa Local FM Radio


Alexa Echo Dot playing local FM radio radio stations using ESP8266 WiFi module, RDA5807 FM receiver module and audio Bluetooth transmitter.


source code (Arduino):
https://github.com/julznc/alexa_esp_fmradio


suggestion for improvement:
use ESP32, instead of ESP8266, since it already has built-in bluetooth functionality.

references:
https://bitbucket.org/xoseperez/fauxmoesp
https://github.com/me-no-dev/ESPAsyncWebServer
https://github.com/mathertel/Radio
Posted by 'yus at 3:24 PM 6 comments
Labels:

Friday, May 5, 2017

ESP8266 IR Remote

Control your appliances (e.g. TV and AV systems) via WiFi+IR.




Arduino code:


References:
markszabo/IRremoteESP8266
Sony IR codes
Sony SIRC protocol





Posted by 'yus at 12:00 PM 2 comments
Labels: ,

Sunday, January 29, 2017

WiFi RGB Matrix

Here's a DIY flexible 36x8 RGB-LED-matrix controlled via WiFi connection using an ESP8266 module.

[フレーム]

Arduino Code: julznc/wifi_rgb_matrix


Assembly:

References:
NeoPixelBus - for interfacing WS2812 LEDs to ESP8266 controller
Adafruit-GFX-Library - with font library for displaying texts
LED Matrix Studio - for creating bitmap images

Posted by 'yus at 4:19 PM 3 comments
Labels: , ,

Saturday, June 11, 2016

ESP8266 PWM Android Controller

Control ESP8266 PWM outputs* with Android.

Android app: play.google/wifipwm
Android src: github/esp_wifi_pwm

demo:
[フレーム]

ESP8266 init.lua :
wifi.setmode(wifi.STATION)
wifi.sta.config("WIFI_SSID","WIFI_PASSWORD")
local GP0 = 3
local GP2 = 4
local port = 3456
print(wifi.sta.getip())
srv=net.createServer(net.UDP)
srv:on("receive", function(cli, rcv)
 --print(rcv)
 rx={}
 for i, s in string.gmatch(rcv, "(%w+)=(%w+)") do
 rx[i]=s
 --print(i, rx[i])
 end
 if rx.d0 then
 pwm.setduty(GP0,rx.d0)
 --print("GP0 duty",rx.d0)
 elseif rx.d2 then
 pwm.setduty(GP2,rx.d2)
 --print("GP2 duty",rx.d2)
 elseif rx.f0 and rx.c0 then
 pwm.setup(GP0,rx.f0,rx.c0)
 pwm.start(GP0)
 print("GP0 freq",rx.f0,"cycles", rx.c0)
 elseif rx.f2 and rx.c2 then
 pwm.setup(GP2,rx.f2,rx.c2)
 pwm.start(GP2)
 print("GP2 freq",rx.f2,"cycles", rx.c2)
 end
 cli:send(rcv)
 end)
srv:listen(port)


*PWM outputs nodemcu pwm
  • pins GP0 and GP2
  • up to 1kHz only
  • 0-100%duty (note: 1023 cycles = 100% duty)

Posted by 'yus at 1:47 PM 5 comments
Labels:

Saturday, May 14, 2016

ESP8266 and SHT1x Web Interface


Here's a *duino-less (*pi-less) simple project using ESP11 (ESP8266) Wifi Module and SHT10 humidity-temperature sensor.



init.lua:
wifi.setmode(wifi.STATION)
wifi.sta.config("WIFI_SSID","WIFI_PASSWORD")
local DAT = 4
local CLK = 3
function DL()
 gpio.write(DAT, gpio.LOW)
 gpio.mode(DAT, gpio.OUTPUT)
end
function DH()
 gpio.mode(DAT, gpio.INPUT)
 gpio.write(DAT, gpio.HIGH)
end
function CL()
 gpio.write(CLK, gpio.LOW)
end
function CH()
 gpio.write(CLK, gpio.HIGH)
end
function DR()
 gpio.mode(DAT, gpio.INPUT)
 return gpio.read(DAT)
end
function W8()
 for i = 1, 100 do
 tmr.delay(10000)
 if DR() == gpio.LOW then
 return true
 end
 end
 return false
end
function RB()
 local val = 0
 for i = 0, 7 do
 CH()
 val = val*2 + DR()
 CL()
 end
 return val
end
function shtread(cmd)
 DH() CH() DL() CL() CH() DH() CL()
 for i = 0, 7 do
 if bit.band(cmd, 2^(7-i))==0 then
 DL()
 else
 DH()
 end
 CH() CL()
 end
 CH() CL()
 if not W8() then
 return nil
 end
 DH()
 local val = RB()
 DH() DL() CH() CL() DH()
 val = val*256 + RB()
 DH() CH() CL()
 return val
end
page=[[<head><meta charset="utf-8"/>
<link href="http://projectproto.blogspot.com/favicon.ico" rel="icon"/>
<title>ESP+SHT</title></head>
<body><h1>ESP8266 and SHT1x</h1><h2 id="T">T??</h2><h2 id="H">H??</h2>
<script>
 function update(){
 var xrq = new XMLHttpRequest();
 xrq.onreadystatechange=function(){
 if (xrq.readyState==4 && xrq.status==200){
 var th=JSON.parse(xrq.responseText);
 var t0=th["t"], h0=th["h"];
 var t=(t0*0.01)-39.7;
 var hl=(0.0367*h0)+(-0.0000015955*h0*h0)-2.0468;
 var h=(t-25.0)*(0.01+(0.00008*h0))+hl;
 document.getElementById("T").innerHTML="Temperature: "+t.toFixed(2)+"&deg;C";
 document.getElementById("H").innerHTML="Humidity: "+h.toFixed(2)+"%";}
 }
 xrq.open("GET","/get/sht",true);
 xrq.overrideMimeType("application/json");
 xrq.send(null);
 }setInterval(update, 1000);
</script></body>]]
srv=net.createServer(net.TCP)
srv:listen(80,function(conn)
 conn:on("receive", function(client,request)
 local buf = "";
 local _, _, mtd, path, _ = string.find(request, "([A-Z]+) (.+)?(.+) HTTP");
 if(mtd == nil)then
 _, _, mtd, path = string.find(request, "([A-Z]+) (.+) HTTP");
 end
 if path == "/" then
 buf = buf..page
 elseif path == "/get/sht" then
 t = shtread(3)
 h = shtread(5)
 if (t ~= nil and h ~= nil) then
 buf = buf.."{\"t\":"..t..", \"h\":"..h.."}"
 end
 end
 client:send(buf)
 client:close()
 collectgarbage()
 end)
end)





References:
ESP8266 Web Server Tutorial
Github esp8266 sht10
e-Gizmo ESP11 kit
ESP8266 wiki
NodeMCU firmware
NodeMCU http server

Subscribe to: Comments (Atom)
 

AltStyle によって変換されたページ (->オリジナル) /